From db0be3fa141bbd63b1f62043ad74558997439a88 Mon Sep 17 00:00:00 2001 From: Kanishka Date: Tue, 16 May 2023 23:33:27 -0600 Subject: [PATCH] refactor(cli): replace `urfave/cli` with `cobra` (#3173) --- chain/kusama/config.toml | 47 - chain/kusama/defaults.go | 113 +- chain/polkadot/config.toml | 44 - chain/polkadot/defaults.go | 113 +- chain/resources.go | 10 - chain/westend-dev/config.toml | 58 - chain/westend-dev/defaults.go | 30 + chain/westend-local/config-alice.toml | 57 - chain/westend-local/config-bob.toml | 57 - chain/westend-local/config-charlie.toml | 57 - chain/westend-local/default.go | 73 + chain/westend/config.toml | 59 - chain/westend/defaults.go | 113 +- cmd/gossamer/README.md | 178 ++- cmd/gossamer/account.go | 139 -- cmd/gossamer/account_test.go | 176 --- cmd/gossamer/commands/account.go | 194 +++ cmd/gossamer/commands/account_test.go | 134 ++ cmd/gossamer/commands/build_spec.go | 103 ++ cmd/gossamer/commands/build_spec_test.go | 53 + cmd/gossamer/commands/import_runtime.go | 79 ++ .../{ => commands}/import_runtime_test.go | 23 +- cmd/gossamer/commands/import_state.go | 68 + cmd/gossamer/commands/init.go | 79 ++ cmd/gossamer/commands/init_test.go | 25 + cmd/gossamer/commands/prune_state.go | 71 + .../prune_state_test.go} | 16 +- cmd/gossamer/commands/root.go | 640 +++++++++ .../test_inputs/test-chain-spec-raw.json | 162 +++ .../{ => commands}/test_inputs/test-key.key | 0 cmd/gossamer/commands/utils.go | 483 +++++++ cmd/gossamer/commands/utils_test.go | 268 ++++ cmd/gossamer/commands/version.go | 23 + cmd/gossamer/config.go | 985 ------------- cmd/gossamer/config_test.go | 1225 ----------------- cmd/gossamer/export.go | 137 -- cmd/gossamer/export_test.go | 173 --- cmd/gossamer/flags.go | 554 -------- cmd/gossamer/flags_test.go | 66 - cmd/gossamer/import_runtime.go | 33 - cmd/gossamer/interfaces.go | 16 - cmd/gossamer/main.go | 488 +------ cmd/gossamer/main_test.go | 281 ---- cmd/gossamer/toml_config.go | 83 -- cmd/gossamer/toml_config_test.go | 65 - cmd/gossamer/utils.go | 122 -- cmd/gossamer/utils_test.go | 142 -- config/config.go | 631 +++++++++ config/toml.go | 314 +++++ devnet/alice.Dockerfile | 4 +- devnet/bob.Dockerfile | 12 +- docs/docs/usage/command-line.md | 227 ++- docs/docs/usage/configuration.md | 275 +++- docs/docs/usage/import-runtime.md | 30 +- docs/docs/usage/import-state.md | 4 +- docs/docs/usage/running-nodes.md | 16 +- dot/build_spec_integration_test.go | 22 +- dot/build_spec_test.go | 11 +- dot/config.go | 270 +--- dot/config/toml/config.go | 109 -- dot/config_test.go | 165 +-- dot/import_integration_test.go | 26 +- dot/mock_node_builder_test.go | 53 +- dot/network/block_announce.go | 4 +- dot/network/config.go | 2 +- dot/network/host.go | 10 +- dot/network/service.go | 6 +- dot/node.go | 149 +- dot/node_integration_test.go | 214 +-- dot/node_test.go | 31 +- dot/rpc/http.go | 11 +- dot/rpc/http_test.go | 16 +- dot/rpc/interfaces.go | 2 +- dot/rpc/modules/api.go | 2 +- dot/rpc/modules/mocks/mocks.go | 4 +- dot/rpc/modules/system_test.go | 4 +- dot/rpc/websocket_integration_test.go | 3 +- dot/services.go | 177 ++- dot/services_integration_test.go | 249 ++-- dot/services_test.go | 20 +- dot/test_utils.go | 12 +- dot/utils_integration_test.go | 7 +- dot/utils_test.go | 131 +- go.mod | 24 +- go.sum | 416 +++++- internal/pprof/service.go | 10 +- internal/pprof/service_test.go | 7 +- internal/pprof/settings.go | 6 - internal/pprof/settings_test.go | 20 + lib/common/network.go | 14 +- lib/genesis/genesis.go | 4 +- lib/grandpa/network.go | 14 +- lib/grandpa/network_integration_test.go | 2 +- lib/os/os.go | 77 ++ lib/runtime/wasmer/config.go | 2 +- lib/runtime/wasmer/test_helpers.go | 2 +- .../polkadotjs_test/start_polkadotjs_test.go | 13 +- tests/rpc/rpc_01-system_test.go | 8 +- tests/rpc/rpc_02-author_test.go | 6 +- tests/rpc/rpc_03-chain_test.go | 6 +- tests/rpc/rpc_04-offchain_test.go | 2 +- tests/rpc/rpc_05-state_test.go | 6 +- tests/rpc/rpc_06-engine_test.go | 2 +- tests/rpc/rpc_07-payment_test.go | 2 +- tests/rpc/rpc_08-contracts_test.go | 2 +- tests/rpc/rpc_09-babe_test.go | 2 +- tests/rpc/system_integration_test.go | 108 +- tests/stress/grandpa_test.go | 13 +- tests/stress/network_test.go | 2 +- tests/stress/stress_test.go | 42 +- tests/utils/config/config.go | 63 +- tests/utils/config/default.go | 72 +- tests/utils/config/utils.go | 25 + tests/utils/config/write.go | 27 - tests/utils/framework.go | 9 +- tests/utils/node/node.go | 81 +- tests/utils/node/nodes.go | 10 +- 117 files changed, 5525 insertions(+), 6912 deletions(-) delete mode 100644 chain/kusama/config.toml delete mode 100644 chain/polkadot/config.toml delete mode 100644 chain/resources.go delete mode 100644 chain/westend-dev/config.toml create mode 100644 chain/westend-dev/defaults.go delete mode 100644 chain/westend-local/config-alice.toml delete mode 100644 chain/westend-local/config-bob.toml delete mode 100644 chain/westend-local/config-charlie.toml create mode 100644 chain/westend-local/default.go delete mode 100644 chain/westend/config.toml delete mode 100644 cmd/gossamer/account.go delete mode 100644 cmd/gossamer/account_test.go create mode 100644 cmd/gossamer/commands/account.go create mode 100644 cmd/gossamer/commands/account_test.go create mode 100644 cmd/gossamer/commands/build_spec.go create mode 100644 cmd/gossamer/commands/build_spec_test.go create mode 100644 cmd/gossamer/commands/import_runtime.go rename cmd/gossamer/{ => commands}/import_runtime_test.go (56%) create mode 100644 cmd/gossamer/commands/import_state.go create mode 100644 cmd/gossamer/commands/init.go create mode 100644 cmd/gossamer/commands/init_test.go create mode 100644 cmd/gossamer/commands/prune_state.go rename cmd/gossamer/{prune_test.go => commands/prune_state_test.go} (88%) create mode 100644 cmd/gossamer/commands/root.go create mode 100644 cmd/gossamer/commands/test_inputs/test-chain-spec-raw.json rename cmd/gossamer/{ => commands}/test_inputs/test-key.key (100%) create mode 100644 cmd/gossamer/commands/utils.go create mode 100644 cmd/gossamer/commands/utils_test.go create mode 100644 cmd/gossamer/commands/version.go delete mode 100644 cmd/gossamer/config.go delete mode 100644 cmd/gossamer/config_test.go delete mode 100644 cmd/gossamer/export.go delete mode 100644 cmd/gossamer/export_test.go delete mode 100644 cmd/gossamer/flags.go delete mode 100644 cmd/gossamer/flags_test.go delete mode 100644 cmd/gossamer/import_runtime.go delete mode 100644 cmd/gossamer/interfaces.go delete mode 100644 cmd/gossamer/main_test.go delete mode 100644 cmd/gossamer/toml_config.go delete mode 100644 cmd/gossamer/toml_config_test.go delete mode 100644 cmd/gossamer/utils.go delete mode 100644 cmd/gossamer/utils_test.go create mode 100644 config/config.go create mode 100644 config/toml.go delete mode 100644 dot/config/toml/config.go create mode 100644 internal/pprof/settings_test.go create mode 100644 lib/os/os.go create mode 100644 tests/utils/config/utils.go delete mode 100644 tests/utils/config/write.go diff --git a/chain/kusama/config.toml b/chain/kusama/config.toml deleted file mode 100644 index 865fd01f12..0000000000 --- a/chain/kusama/config.toml +++ /dev/null @@ -1,47 +0,0 @@ -[global] -basepath = "~/.gossamer/kusama" -log = "info" -metrics-address = "localhost:9876" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/kusama/genesis.json" - -[account] -key = "" -unlock = "" - -[core] -roles = 1 -babe-authority = false -grandpa-authority = false - -[network] -port = 7001 -nobootstrap = false -nomdns = false - -[rpc] -enabled = false -external = false -port = 8545 -host = "localhost" -modules = ["system", "author", "chain", "state", "rpc", "grandpa", "offchain", "childstate", "syncstate", "payment"] -ws-port = 8546 -ws = false -ws-external = false - -[pprof] -listening-address = "localhost:6060" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/kusama/defaults.go b/chain/kusama/defaults.go index 57183b1859..d766dbd66e 100644 --- a/chain/kusama/defaults.go +++ b/chain/kusama/defaults.go @@ -4,98 +4,31 @@ package kusama import ( - "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/common" - "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" + cfg "github.com/ChainSafe/gossamer/config" ) var ( - // GlobalConfig - - // DefaultName Default node name - DefaultName = string("Kusama") - // DefaultID Default chain ID - DefaultID = string("ksmcc3") - // DefaultConfig Default toml configuration path - DefaultConfig = string("./chain/kusama/config.toml") - // DefaultBasePath Default node base directory path - DefaultBasePath = string("~/.gossamer/kusama") - - // DefaultMetricsAddress is the default metrics server listening address. - DefaultMetricsAddress = "localhost:9876" - - // DefaultLvl is the default log level - DefaultLvl = log.Info - - // DefaultPruningMode is the default pruning mode - DefaultPruningMode = "archive" - // DefaultRetainBlocks is the default retained blocks - DefaultRetainBlocks = uint32(512) - - // DefaultTelemetryURLs is the default URL of the telemetry server to connect to. - DefaultTelemetryURLs []genesis.TelemetryEndpoint - - // InitConfig - - // DefaultGenesis is the default genesis configuration path - DefaultGenesis = string("./chain/kusama/genesis.json") - - // AccountConfig - - // DefaultKey Default account key - DefaultKey = string("") - // DefaultUnlock Default account unlock - DefaultUnlock = string("") - - // CoreConfig - - // DefaultAuthority true if BABE block producer - DefaultAuthority = false - // DefaultRoles Default node roles - DefaultRoles = common.FullNodeRole // full node (see Table D.2) - // DefaultWasmInterpreter is the name of the wasm interpreter to use by default - DefaultWasmInterpreter = wasmer.Name - - // NetworkConfig - - // DefaultNetworkPort network port - DefaultNetworkPort = uint16(7001) - // DefaultNetworkBootnodes network bootnodes - DefaultNetworkBootnodes = []string(nil) - // DefaultNoBootstrap disables bootstrap - DefaultNoBootstrap = false - // DefaultNoMDNS disables mDNS discovery - DefaultNoMDNS = false - - // RPCConfig - - // DefaultRPCHTTPHost rpc host - DefaultRPCHTTPHost = string("localhost") - // DefaultRPCHTTPPort rpc port - DefaultRPCHTTPPort = uint32(8545) - // DefaultRPCModules rpc modules - DefaultRPCModules = []string{ - "system", "author", "chain", - "state", "rpc", "grandpa", - "offchain", "childstate", "syncstate", - "payment", - } - // DefaultRPCWSPort rpc websocket port - DefaultRPCWSPort = uint32(8546) + // defaultName Default node name + defaultName = "Kusama" + // defaultID Default chain ID + defaultID = "ksmcc3" + // defaultBasePath Default node base directory path + defaultBasePath = "~/.gossamer/kusama" + // defaultChainSpec is the default chain-spec json path + defaultChainSpec = "./chain/kusama/genesis.json" ) -const ( - // PprofConfig - - // DefaultPprofListeningAddress default pprof HTTP server listening address. - DefaultPprofListeningAddress = "localhost:6060" - - // DefaultPprofBlockRate default block profile rate. - // Set to 0 to disable profiling. - DefaultPprofBlockRate = 0 - - // DefaultPprofMutexRate default mutex profile rate. - // Set to 0 to disable profiling. - DefaultPprofMutexRate = 0 -) +// DefaultConfig returns a kusama node configuration +func DefaultConfig() *cfg.Config { + config := cfg.DefaultConfig() + config.BasePath = defaultBasePath + config.ID = defaultID + config.Name = defaultName + config.ChainSpec = defaultChainSpec + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.Core.Role = 1 + config.Network.NoMDNS = false + + return config +} diff --git a/chain/polkadot/config.toml b/chain/polkadot/config.toml deleted file mode 100644 index 26ae4ba747..0000000000 --- a/chain/polkadot/config.toml +++ /dev/null @@ -1,44 +0,0 @@ -[global] -basepath = "~/.gossamer/polkadot" -log = "info" -metrics-address = "localhost:9876" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/polkadot/genesis.json" - -[account] -key = "" -unlock = "" - -[core] -roles = 1 -babe-authority = false -grandpa-authority = false - -[network] -port = 7001 -nobootstrap = false -nomdns = false - -[rpc] -enabled = false -port = 8545 -host = "localhost" -modules = ["system", "author", "chain", "state", "rpc", "grandpa", "offchain", "childstate", "syncstate", "payment"] -ws-port = 8546 - -[pprof] -listening-address = "localhost:6060" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/polkadot/defaults.go b/chain/polkadot/defaults.go index 3639fb75f2..456d41f4ae 100644 --- a/chain/polkadot/defaults.go +++ b/chain/polkadot/defaults.go @@ -4,98 +4,31 @@ package polkadot import ( - "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/common" - "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" + cfg "github.com/ChainSafe/gossamer/config" ) var ( - // GlobalConfig - - // DefaultName Default node name - DefaultName = string("Polkadot") - // DefaultID Default chain ID - DefaultID = string("polkadot") - // DefaultConfig Default toml configuration path - DefaultConfig = string("./chain/polkadot/config.toml") - // DefaultBasePath Default node base directory path - DefaultBasePath = string("~/.gossamer/polkadot") - // DefaultMetricsAddress is the default metrics server listening address. - DefaultMetricsAddress = "localhost:9876" - - // DefaultLvl is the default log level - DefaultLvl = log.Info - - // DefaultPruningMode is the default pruning mode - DefaultPruningMode = "archive" - // DefaultRetainBlocks is the default pruning mode - DefaultRetainBlocks = uint32(512) - - // DefaultTelemetryURLs is the default URL of the telemetry server to connect to. - DefaultTelemetryURLs []genesis.TelemetryEndpoint - - // InitConfig - - // DefaultGenesis is the default genesis configuration path - DefaultGenesis = string("./chain/polkadot/genesis.json") - - // AccountConfig - - // DefaultKey Default account key - DefaultKey = string("") - // DefaultUnlock Default account unlock - DefaultUnlock = string("") - - // CoreConfig - - // DefaultAuthority is true if the node is a block producer and a grandpa authority - DefaultAuthority = true - // DefaultRoles Default node roles - DefaultRoles = common.FullNodeRole // authority node (see Table D.2) - // DefaultBabeAuthority is true if the node is a block producer (overwrites previous settings) - DefaultBabeAuthority = true - // DefaultGrandpaAuthority is true if the node is a grandpa authority (overwrites previous settings) - DefaultGrandpaAuthority = true - // DefaultWasmInterpreter is the name of the wasm interpreter to use by default - DefaultWasmInterpreter = wasmer.Name - - // NetworkConfig - - // DefaultNetworkPort network port - DefaultNetworkPort = uint16(7001) - // DefaultNetworkBootnodes network bootnodes - DefaultNetworkBootnodes = []string(nil) - // DefaultNoBootstrap disables bootstrap - DefaultNoBootstrap = false - // DefaultNoMDNS disables mDNS discovery - DefaultNoMDNS = false - - // RPCConfig - - // DefaultRPCHTTPHost rpc host - DefaultRPCHTTPHost = string("localhost") - // DefaultRPCHTTPPort rpc port - DefaultRPCHTTPPort = uint32(8545) - // DefaultRPCModules rpc modules - DefaultRPCModules = []string{ - "system", "author", "chain", "state", "rpc", - "grandpa", "offchain", "childstate", "syncstate", "payment"} - // DefaultRPCWSPort rpc websocket port - DefaultRPCWSPort = uint32(8546) + // defaultName Default node name + defaultName = "Polkadot" + // defaultID Default chain ID + defaultID = "polkadot" + // defaultBasePath Default node base directory path + defaultBasePath = "~/.gossamer/polkadot" + // defaultChainSpec is the default chain spec configuration path + defaultChainSpec = "./chain/polkadot/genesis.json" ) -const ( - // PprofConfig - - // DefaultPprofListeningAddress default pprof HTTP server listening address. - DefaultPprofListeningAddress = "localhost:6060" - - // DefaultPprofBlockRate default block profile rate. - // Set to 0 to disable profiling. - DefaultPprofBlockRate = 0 - - // DefaultPprofMutexRate default mutex profile rate. - // Set to 0 to disable profiling. - DefaultPprofMutexRate = 0 -) +// DefaultConfig returns a polkadot node configuration +func DefaultConfig() *cfg.Config { + config := cfg.DefaultConfig() + config.BasePath = defaultBasePath + config.ID = defaultID + config.Name = defaultName + config.ChainSpec = defaultChainSpec + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.Core.Role = 1 + config.Network.NoMDNS = false + + return config +} diff --git a/chain/resources.go b/chain/resources.go deleted file mode 100644 index 94bc434580..0000000000 --- a/chain/resources.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only -package chain - -import "embed" - -// DefaultConfigTomlFiles is the embedded file system containing the default toml configurations. -// -//go:embed */*.toml -var DefaultConfigTomlFiles embed.FS diff --git a/chain/westend-dev/config.toml b/chain/westend-dev/config.toml deleted file mode 100644 index db6416e5c9..0000000000 --- a/chain/westend-dev/config.toml +++ /dev/null @@ -1,58 +0,0 @@ -[global] -basepath = "~/.gossamer/westend-dev" -log = "info" -metrics-address = ":9876" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/westend-dev/westend-dev-spec-raw.json" - -[account] -key = "alice" -unlock = "" - -[core] -roles = 4 -babe-authority = true -grandpa-authority = true -grandpa-interval = 1 - -[network] -port = 7001 -nobootstrap = false -nomdns = false -discovery-interval = 10 - -[rpc] -enabled = true -ws = true -port = 8545 -host = "localhost" -modules = [ - "system", - "author", - "chain", - "state", - "rpc", - "grandpa", - "offchain", - "childstate", - "syncstate", - "payment", -] -ws-port = 8546 - -[pprof] -listening-address = "localhost:6060" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/westend-dev/defaults.go b/chain/westend-dev/defaults.go new file mode 100644 index 0000000000..8bb8512082 --- /dev/null +++ b/chain/westend-dev/defaults.go @@ -0,0 +1,30 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package westenddev + +import ( + cfg "github.com/ChainSafe/gossamer/config" +) + +const ( + // defaultName is the default node name + defaultName = "Westend" + // defaultID is the default node ID + defaultID = "westend_dev" + // defaultBasePath is the default basepath for the westend dev node + defaultBasePath = "~/.gossamer/westend-dev" + // defaultChainSpec is the default chain spec for the westend dev node + defaultChainSpec = "./chain/westend-dev/westend-dev-spec-raw.json" +) + +// DefaultConfig returns a westend dev node configuration +func DefaultConfig() *cfg.Config { + config := cfg.DefaultConfig() + config.BasePath = defaultBasePath + config.ID = defaultID + config.Name = defaultName + config.ChainSpec = defaultChainSpec + + return config +} diff --git a/chain/westend-local/config-alice.toml b/chain/westend-local/config-alice.toml deleted file mode 100644 index 592980d240..0000000000 --- a/chain/westend-local/config-alice.toml +++ /dev/null @@ -1,57 +0,0 @@ -[global] -basepath = "~/.gossamer/westend-local-alice" -log = "info" -metrics-address = ":9876" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/westend-local/westend-local-spec-raw.json" - -[account] -key = "alice" -unlock = "" - -[core] -roles = 4 -babe-authority = true -grandpa-authority = true - -[network] -port = 7001 -nobootstrap = false -nomdns = false - -[rpc] -enabled = true -ws = true -port = 8545 -host = "localhost" -modules = [ - "system", - "author", - "chain", - "state", - "rpc", - "grandpa", - "offchain", - "childstate", - "syncstate", - "payment", -] -ws-port = 8546 - -[pprof] -enabled = false -listening-address = "localhost:6060" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/westend-local/config-bob.toml b/chain/westend-local/config-bob.toml deleted file mode 100644 index cf8d83894c..0000000000 --- a/chain/westend-local/config-bob.toml +++ /dev/null @@ -1,57 +0,0 @@ -[global] -basepath = "~/.gossamer/westend-local-bob" -log = "info" -metrics-address = ":9877" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/westend-local/westend-local-spec-raw.json" - -[account] -key = "bob" -unlock = "" - -[core] -roles = 4 -babe-authority = true -grandpa-authority = true - -[network] -port = 7002 -nobootstrap = false -nomdns = false - -[rpc] -enabled = true -ws = true -port = 8555 -host = "localhost" -modules = [ - "system", - "author", - "chain", - "state", - "rpc", - "grandpa", - "offchain", - "childstate", - "syncstate", - "payment", -] -ws-port = 8556 - -[pprof] -enabled = false -listening-address = "localhost:6061" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/westend-local/config-charlie.toml b/chain/westend-local/config-charlie.toml deleted file mode 100644 index a64f621e7c..0000000000 --- a/chain/westend-local/config-charlie.toml +++ /dev/null @@ -1,57 +0,0 @@ -[global] -basepath = "~/.gossamer/westend-local-charlie" -log = "info" -metrics-address = ":9878" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/westend-local/westend-local-spec-raw.json" - -[account] -key = "charlie" -unlock = "" - -[core] -roles = 4 -babe-authority = true -grandpa-authority = true - -[network] -port = 7003 -nobootstrap = false -nomdns = false - -[rpc] -enabled = true -ws = true -port = 8565 -host = "localhost" -modules = [ - "system", - "author", - "chain", - "state", - "rpc", - "grandpa", - "offchain", - "childstate", - "syncstate", - "payment", -] -ws-port = 8566 - -[pprof] -enabled = false -listening-address = "localhost:6062" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/westend-local/default.go b/chain/westend-local/default.go new file mode 100644 index 0000000000..eb576c582b --- /dev/null +++ b/chain/westend-local/default.go @@ -0,0 +1,73 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package westendlocal + +import ( + cfg "github.com/ChainSafe/gossamer/config" +) + +const ( + // defaultName is the default node name + defaultName = "Westend" + // defaultID is the default node ID + defaultID = "westend_local" + // defaultChainSpec is the default chain spec for the westend local node + defaultChainSpec = "./chain/westend-local/westend-local-spec-raw.json" + + // DefaultBasePathAlice is the default basepath for the westend local alice node + DefaultBasePathAlice = "~/.gossamer/westend-local-alice" + // DefaultBasePathBob is the default basepath for the westend local bob node + DefaultBasePathBob = "~/.gossamer/westend-local-bob" + // DefaultBasePathCharlie is the default basepath for the westend local charlie node + DefaultBasePathCharlie = "~/.gossamer/westend-local-charlie" +) + +// DefaultConfig returns a westend local node configuration +func DefaultConfig() *cfg.Config { + config := cfg.DefaultConfig() + config.Name = defaultName + config.ID = defaultID + config.ChainSpec = defaultChainSpec + + return config +} + +// DefaultAliceConfig returns a westend local node configuration +func DefaultAliceConfig() *cfg.Config { + config := DefaultConfig() + config.BasePath = DefaultBasePathAlice + config.PrometheusPort = uint32(9856) + config.Network.Port = 7001 + config.RPC.Port = 8545 + config.RPC.WSPort = 8546 + config.Pprof.ListeningAddress = "localhost:6060" + + return config +} + +// DefaultBobConfig returns a westend local node configuration with bob as the authority +func DefaultBobConfig() *cfg.Config { + config := DefaultConfig() + config.BasePath = DefaultBasePathBob + config.PrometheusPort = uint32(9866) + config.Network.Port = 7011 + config.RPC.Port = 8555 + config.RPC.WSPort = 8556 + config.Pprof.ListeningAddress = "localhost:6070" + + return config +} + +// DefaultCharlieConfig returns a westend local node configuration with charlie as the authority +func DefaultCharlieConfig() *cfg.Config { + config := DefaultConfig() + config.BasePath = DefaultBasePathCharlie + config.PrometheusPort = uint32(9876) + config.Network.Port = 7021 + config.RPC.Port = 8565 + config.RPC.WSPort = 8566 + config.Pprof.ListeningAddress = "localhost:6080" + + return config +} diff --git a/chain/westend/config.toml b/chain/westend/config.toml deleted file mode 100644 index f9403abcf2..0000000000 --- a/chain/westend/config.toml +++ /dev/null @@ -1,59 +0,0 @@ -[global] -basepath = "~/.gossamer/westend" -log = "info" -metrics-address = "localhost:9876" - -[log] -core = "" -network = "" -rpc = "" -state = "" -runtime = "" -babe = "" -grandpa = "" -sync = "" -digest = "" - -[init] -genesis = "./chain/westend/genesis.json" - -[account] -key = "" -unlock = "" - -[core] -roles = 1 -babe-authority = false -grandpa-authority = false - -[network] -port = 7001 -nobootstrap = false -nomdns = false - -[rpc] -enabled = false -external = false -port = 8545 -host = "localhost" -modules = [ - "system", - "author", - "chain", - "state", - "rpc", - "grandpa", - "offchain", - "childstate", - "syncstate", - "payment", -] -ws-port = 8546 -ws = false -ws-external = false - - -[pprof] -listening-address = "localhost:6060" -block-rate = 0 -mutex-rate = 0 diff --git a/chain/westend/defaults.go b/chain/westend/defaults.go index d11169f67f..f6dcb2bfe5 100644 --- a/chain/westend/defaults.go +++ b/chain/westend/defaults.go @@ -4,98 +4,31 @@ package westend import ( - "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/common" - "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" + cfg "github.com/ChainSafe/gossamer/config" ) var ( - // GlobalConfig - - // DefaultName Default node name - DefaultName = string("Westend") - // DefaultID Default chain ID - DefaultID = string("westend2") - // DefaultConfig Default toml configuration path - DefaultConfig = string("./chain/westend/config.toml") - // DefaultBasePath Default node base directory path - DefaultBasePath = string("~/.gossamer/westend") - // DefaultMetricsAddress is the default metrics server listening address. - DefaultMetricsAddress = "localhost:9876" - - // DefaultLvl is the default log level - DefaultLvl = log.Info - - // DefaultPruningMode is the default pruning mode - DefaultPruningMode = "archive" - // DefaultRetainBlocks is the default pruning mode - DefaultRetainBlocks = uint32(512) - - // DefaultTelemetryURLs is the default URL of the telemetry server to connect to. - DefaultTelemetryURLs []genesis.TelemetryEndpoint - - // InitConfig - - // DefaultGenesis is the default genesis configuration path - DefaultGenesis = string("./chain/westend/genesis.json") - - // AccountConfig - - // DefaultKey Default account key - DefaultKey = string("") - // DefaultUnlock Default account unlock - DefaultUnlock = string("") - - // CoreConfig - - // DefaultAuthority is true if the node is a block producer and a grandpa authority - DefaultAuthority = true - // DefaultRoles Default node roles - DefaultRoles = common.FullNodeRole // authority node (see Table D.2) - // DefaultBabeAuthority is true if the node is a block producer (overwrites previous settings) - DefaultBabeAuthority = true - // DefaultGrandpaAuthority is true if the node is a grandpa authority (overwrites previous settings) - DefaultGrandpaAuthority = true - // DefaultWasmInterpreter is the name of the wasm interpreter to use by default - DefaultWasmInterpreter = wasmer.Name - - // NetworkConfig - - // DefaultNetworkPort network port - DefaultNetworkPort = uint16(7001) - // DefaultNetworkBootnodes network bootnodes - DefaultNetworkBootnodes = []string(nil) - // DefaultNoBootstrap disables bootstrap - DefaultNoBootstrap = false - // DefaultNoMDNS disables mDNS discovery - DefaultNoMDNS = false - - // RPCConfig - - // DefaultRPCHTTPHost rpc host - DefaultRPCHTTPHost = string("localhost") - // DefaultRPCHTTPPort rpc port - DefaultRPCHTTPPort = uint32(8545) - // DefaultRPCModules rpc modules - DefaultRPCModules = []string{ - "system", "author", "chain", "state", "rpc", - "grandpa", "offchain", "childstate", "syncstate", "payment"} - // DefaultRPCWSPort rpc websocket port - DefaultRPCWSPort = uint32(8546) + // defaultName Default node name + defaultName = "Westend" + // defaultID Default chain ID + defaultID = "westend2" + // defaultBasePath Default node base directory path + defaultBasePath = "~/.gossamer/westend" + // defaultChainSpec is the default chain specification path + defaultChainSpec = "./chain/westend/genesis.json" ) -const ( - // PprofConfig - - // DefaultPprofListeningAddress default pprof HTTP server listening address. - DefaultPprofListeningAddress = "localhost:6060" - - // DefaultPprofBlockRate default block profile rate. - // Set to 0 to disable profiling. - DefaultPprofBlockRate = 0 - - // DefaultPprofMutexRate default mutex profile rate. - // Set to 0 to disable profiling. - DefaultPprofMutexRate = 0 -) +// DefaultConfig returns a westend node configuration +func DefaultConfig() *cfg.Config { + config := cfg.DefaultConfig() + config.BasePath = defaultBasePath + config.ID = defaultID + config.Name = defaultName + config.ChainSpec = defaultChainSpec + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.Core.Role = 1 + config.Network.NoMDNS = false + + return config +} diff --git a/cmd/gossamer/README.md b/cmd/gossamer/README.md index f436063a55..d0574fb187 100644 --- a/cmd/gossamer/README.md +++ b/cmd/gossamer/README.md @@ -1,77 +1,154 @@ -# Gossamer `cmd` Package +# Quick start -This package encapsulates the entry point to Gossamer - it uses the popular -[`cli` package from `urfave`](https://github.com/urfave/cli/blob/master/docs/v2/manual.md) to expose a command-line -interface (CLI). The Gossamer CLI accepts several subcommands, each of which is associated with an "action"; these -subcommands and their corresponding actions are defined in [`main.go`](main.go). When the Gossamer CLI is executed -without a subcommand, the `gossamerAction` is invoked. +## Install Gossamer from source -## Actions & Subcommands +You'll need to have [Go](https://golang.org/doc/install) installed on your machine and the `GOPATH` environment variable set. -What follows is a list of the Gossamer subcommands, as well as an overview of some of the flags/parameters they accept. -The flags/parameters that the Gossamer CLI supports are defined in [`flags.go`](flags.go). For an exhaustive reference -of the Gossamer CLI capabilities, follow [the installation instructions](../../README.md#installation) and execute -`./bin/gossamer --help`. +### Clone the repository -### Default Command +```bash +git clone https://github.com/ChainSafe/gossamer.git +cd gossamer +``` -This is the default Gossamer execution method, which invokes the `gossamerAction` function defined in -[`main.go`](main.go) - it will launch a Gossamer blockchain client. The details of how Gossamer orchestrates a -blockchain client are [described below in the Client Components section](#client-components). +### Compile -- `--basepath` - the path to the directory where Gossamer will store its data -- `--chain` - specifies the [chain configuration](../../chain) that the - [Gossamer host node](https://chainsafe.github.io/gossamer/getting-started/overview/host-architecture/) should load -- `--key` - specifies a test keyring account to use (e.g. `--key=alice`) -- `--log` - supports levels `crit` (silent), `error`, `warn`, `info`, `debug`, and `trce` (detailed), default is `info` -- `--name` - node name, as it will appear in, e.g., [telemetry](https://telemetry.polkadot.io/) +To put the binary in ./bin, run: +```bash +make build +``` -### Init Subcommand +or to put the binary in the `$GOPATH/bin` directory, run: -This subcommand accepts a genesis configuration file and uses it to initialise the Gossamer node and its state. The -`init` subcommand invokes the `initAction` function defined in [`main.go`](main.go). +```bash +make install +``` -- `--genesis` - path to the "compiled" genesis configuration file that should be used to initialise the Gossamer node - and its state +Verify the installation by running: -### Account Subcommand +```bash +gossamer version +``` -The `account` subcommand provides the user with capabilities related to generating and using `ed25519`, `secp256k1`, and +## Run Gossamer + +### Initialize the node + +```bash +gossamer init --chain westend --key alice --basepath /tmp/gossamer +``` + +This initialises the node with the default configuration for the `westend` chain with the `alice` keypair at the base-path `/tmp/gossamer`. + +``` +Supported flags: +--chain: The chain spec to initialise the node with. Supported chains are `polkadot`, `kusama`, `westend`, `westend-dev` and `westend_local`. It also accepts the chain-spec json path. +--key: The keypair to use for the node. +--basepath: The working directory for the node. +``` + +The init command will create the following files in the base-path: + +``` +├── config +│ ├── config.toml +├── chain-spec-raw.json +├── node-key.json +├── db +``` + +The node configuration can be modified in the `config.toml` file. + +### Start the node + +```bash +gossamer --basepath /tmp/gossamer --key alice +``` + +**Note: The `init` command is optional. If the node is not initialised, it will be initialised with the default configuration.** + +Here are the list of basic flags for the `gossamer` command: + +``` +--basepath: The working directory for the node. +--chain: The chain spec to initialise the node with. Supported chains are `polkadot`, `kusama`, `westend`, `westend-dev` and `westend_local`. It also accepts the chain-spec json path. +--key: The keypair to use for the node. +--name: The name of the node. +--id: The id of the node. +--log-level: The global log level. Supported levels are `crit`, `error`, `warn`, `info`, `debug` and `trace`. +--prometheus-port: The port to expose prometheus metrics. +--retain-blocks: retain number of block from latest block while pruning +--pruning: The pruning strategy to use. Supported strategiey: `archive` +--no-telemetry: Disable telemetry. +--telemetry-urls: The telemetry endpoints to connect to. +--prometheus-external: Expose prometheus metrics externally. +``` + +To see all the available flags, run: + +```bash +gossamer --help +``` + +## Other commands supported by Gossamer CLI + +### Account Command + +The `account` command provides the user with capabilities related to generating and using `ed25519`, `secp256k1`, and `sr25519` [account keys](https://wiki.polkadot.network/docs/learn-keys), and managing the keys present in the -[Gossamer keystore](#keystore). The `accountAction` function is defined in [account.go](account.go); it is an interface +[Gossamer keystore](#keystore). The account command is defined in [account.go](./commands/account.go); it is an interface to the capabilities defined in the [`lib/crypto`](../../lib/crypto) and [`lib/keystore`](../../lib/keystore) packages. This subcommand provides capabilities that are similar to [Parity's Subkey utility](https://docs.substrate.io/v3/tools/subkey). -- `--generate` - creates a new key pair; specify `--ed25519`, `--secp256k1`, or `--sr25519` (default) -- `--list` - lists the keys in the Gossamer keystore +The account command supports following arguments: +- `generate` - generates a new key pair; specify `--scheme ed25519`, `--scheme secp256k1`, or `--scheme sr25519` (default) +- `list` - lists the keys in the Gossamer keystore +- `import` - imports a key from a keystore file +- `import-raw` - imports a raw key from a keystore file + +Supported flags: +- `keystore-path` - path to the Gossamer keystore +- `keystore-file` - path to the keystore file +- `chain` - path to the human-readable chain-spec file +- `--scheme` - `ed25519`, `secp256k1`, or `sr25519` (default) - `--password` - allows the user to provide a password to either encrypt a generated key or unlock the Gossamer keystore -### Import Runtime Subcommand +Examples: +- `gossamer account generate --scheme ed25519` - generates an `ed25519` key pair +- `gossamer account list` - lists the keys in the Gossamer keystore +- `gossamer account import --keystore-file keystore.json` - imports a key from a keystore file +- `gossamer account import-raw --keystore-file keystore.json` - imports a raw key from a keystore file + +### Import Runtime Command This subcommand takes a [Wasm runtime binary](https://wiki.polkadot.network/docs/learn-wasm) and appends it to a [genesis](https://wiki.polkadot.network/docs/glossary#genesis) configuration file; it does not require any flags, but expects both the path to a Wasm file and a genesis configuration file to be provided as a command-line parameter (example: -`./bin/gossamer import-runtime runtime.wasm genesis.json > updated_genesis.json`). The `import-runtime` subcommand invokes the -`importRuntimeAction` function defined in [`main.go`](main.go). +`./bin/gossamer import-runtime --wasm-file runtime.wasm --chain chain-spec.json > updated_chain-spec.json`). -### Build Spec Subcommand +### Build Spec Command This subcommand allows the user to "compile" a human-readable Gossamer genesis configuration file into a format that the -Gossamer node can consume. If the `--genesis` parameter is not provided, the generated genesis configuration will -represent the Gossamer default configuration. The `build-spec` subcommand invokes the `buildSpecAction` function defined -in [`main.go`](main.go). +Gossamer node can consume. If the `--chain` parameter is not provided, the generated genesis configuration will +represent the Gossamer default configuration. -- `--genesis` - path to the human-readable configuration file that should be compiled into a format that Gossamer can +- `--chain` - path to the human-readable chain-spec file that should be compiled into a format that Gossamer can consume - `--raw` - when this flag is present, the output will be a raw genesis spec described as a JSON document +- `--output-path` - path to the file where the compiled chain-spec should be written + +Examples: +- `gossamer build-spec --chain chain-spec.json --output-path compiled-chain-spec.json` - compiles a human-readable + chain-spec into a format that Gossamer can consume +- `gossamer build-spec --chain chain-spec.json --raw --output-path compiled-chain-spec.json` - compiles a human-readable + chain-spec into a format that Gossamer can consume, and outputs the raw genesis spec as a JSON document -### Import State Subcommand +### Import State Command The `import-state` subcommand allows a user to seed [Gossamer storage](../../dot/state) with key-value pairs in the form of a JSON file. The input for this subcommand can be retrieved from [the `state_getPairs` RPC endpoint](https://github.com/w3f/PSPs/blob/master/PSPs/drafts/psp-6.md#1114-state_getpairs). -The `importStateAction` function is defined in [`main.go`](main.go). - `--first-slot` - the first [BABE](https://wiki.polkadot.network/docs/learn-consensus#block-production-babe) slot, which can be found by checking the @@ -80,14 +157,11 @@ The `importStateAction` function is defined in [`main.go`](main.go). [Polkadot on Polkascan](https://polkascan.io/polkadot/log/1-0)) - `--header` - path to a JSON file that describes the block header corresponding to the given state - `--state` - path to a JSON file that contains the key-value pairs with which to seed Gossamer storage +- `--chain` - path to the human-readable chain-spec file -### Export Subcommand - -The `export` subcommand transforms a genesis configuration and Gossamer state into a TOML configuration file. This -subcommand invokes the `exportAction` function defined in [`export.go`](export.go). - -- `--config` - path to a TOML configuration file (e.g. those defined in [the `chain` directory](../../chain)) -- `--basepath` - path to the Gossamer data directory that defines the state to export +Examples: +- `gossamer import-state --first-slot 1 --header header.json --state state.json --chain chain-spec.json` - seeds Gossamer + storage with key-value pairs from a JSON file ## Client Components @@ -137,7 +211,7 @@ This service is concerned with keeping Gossamer in sync with a blockchain - it i download and verify blocks that are part of an existing chain's history, and a "tip-syncing" mode that manages the multiple candidate forks that may exist at the head of a live chain. The sync service makes use of [a block verification utility](../../lib/babe/verify.go) that implements BABE logic and is used by Gossamer to verify -blocks that were produced by other other nodes in the network. The sync service is defined in +blocks that were produced by other nodes in the network. The sync service is defined in [dot/sync/syncer.go](../../dot/sync/syncer.go). #### RPC @@ -177,7 +251,7 @@ subcommand. The Gossamer keystore manages a number of key types, some of which a In addition to the above-described services, Gossamer hosts a Wasm execution environment that is used to manage an upgradeable blockchain runtime. The runtime must be implemented in Wasm, and must expose an interface that is specified -in [lib/runtime/interface.go](../../lib/runtime/interface.go). The runtime defines the blockchain's state transition +in [lib/runtime/interface.go](../../lib/runtime/interfaces.go). The runtime defines the blockchain's state transition function, and the various Gossamer services consume this capability in order to author blocks, as well as to verify blocks that were authored by network peers. The runtime is dependent on a [Wasm host interface](https://docs.wasmer.io/integrations/examples/host-functions), which Gossamer implements and is @@ -186,9 +260,9 @@ defined in [lib/runtime/wasmer/exports.go](../../lib/runtime/wasmer/exports.go). ### Monitoring Gossamer publishes telemetry data and also includes an embedded Prometheus server that reports metrics. The metrics -capabilities are defined in the [dot/metrics](../../dot/metrics) package and build on +capabilities are defined in the [dot/telemetry](../../dot/telemetry) package and build on [the metrics library that is included with Go Ethereum](https://github.com/ethereum/go-ethereum/blob/master/metrics/README.md). The default listening address for Prometheus metrics is `localhost:9876`, and Gossamer allows the user to configure this parameter with the `--metrics-address` command-line parameter. The Gossamer telemetry server publishes telemetry data that is compatible with [Polkadot Telemetry](https://github.com/paritytech/substrate-telemetry) and -[its helpful UI](https://telemetry.polkadot.io/). +[its helpful UI](https://telemetry.polkadot.io/). \ No newline at end of file diff --git a/cmd/gossamer/account.go b/cmd/gossamer/account.go deleted file mode 100644 index 7de614714e..0000000000 --- a/cmd/gossamer/account.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "fmt" - "strings" - - "github.com/ChainSafe/gossamer/lib/crypto" - "github.com/ChainSafe/gossamer/lib/keystore" - "github.com/ChainSafe/gossamer/lib/utils" - - "github.com/urfave/cli/v2" -) - -// accountAction executes the action for the "account" subcommand -// first, if the generate flag is set, if so, it generates a new keypair -// then, if the import flag is set, if so, it imports a keypair -// finally, if the list flag is set, it lists all the keys in the keystore -func accountAction(ctx *cli.Context) error { - // create dot configuration - cfg, err := createDotConfig(ctx) - if err != nil { - logger.Errorf("failed to create dot configuration: %s", err) - return err - } - - basepath := cfg.Global.BasePath - var file string - - // check if --ed25519, --sr25519, --secp256k1 is set - keytype := crypto.Sr25519Type - if flagtype := ctx.Bool(Sr25519Flag.Name); flagtype { - keytype = crypto.Sr25519Type - } else if flagtype := ctx.Bool(Ed25519Flag.Name); flagtype { - keytype = crypto.Ed25519Type - } else if flagtype := ctx.Bool(Secp256k1Flag.Name); flagtype { - keytype = crypto.Secp256k1Type - } - - // check --generate flag and generate new keypair - if keygen := ctx.Bool(GenerateFlag.Name); keygen { - logger.Info("generating keypair...") - - file, err = keystore.GenerateKeypair(keytype, nil, basepath, getKeystorePassword(ctx)) - if err != nil { - logger.Errorf("failed to generate keypair: %s", err) - return err - } - - logger.Info("keypair generated and saved to " + file) - } - - // check if --import is set - if keyimport := ctx.String(ImportFlag.Name); keyimport != "" { - logger.Info("importing keypair...") - - // import keypair - _, err = keystore.ImportKeypair(keyimport, basepath) - if err != nil { - logger.Errorf("failed to import keypair: %s", err) - return err - } - } - - // check if --list is set - if keylist := ctx.Bool(ListFlag.Name); keylist { - _, err = utils.KeystoreFilepaths(basepath) - if err != nil { - logger.Errorf("failed to list keys: %s", err) - return err - } - } - - // check if --import-raw is set - if importraw := ctx.String(ImportRawFlag.Name); importraw != "" { - file, err = keystore.ImportRawPrivateKey(importraw, keytype, basepath, getKeystorePassword(ctx)) - if err != nil { - logger.Errorf("failed to import private key: %s", err) - return err - } - - logger.Info("imported private key and saved it to " + file) - } - - return nil -} - -// getKeystorePassword checks if the --password flag is set, if not, -func getKeystorePassword(ctx *cli.Context) []byte { - // check if --password is set - var password []byte - if pwdflag := ctx.String(PasswordFlag.Name); pwdflag != "" { - password = []byte(pwdflag) - } - - if password == nil { - password = getPassword("Enter password to encrypt keystore file:") - } - - return password -} - -// KeypairInserter inserts a keypair. -type KeypairInserter interface { - Insert(kp keystore.KeyPair) error -} - -// unlockKeystore compares the length of passwords to the length of accounts, -// prompts the user for a password if no password is provided, and then unlocks -// the accounts within the provided keystore -func unlockKeystore(ks KeypairInserter, basepath, unlock, password string) error { - var passwords []string - - if password != "" { - passwords = strings.Split(password, ",") - - // compare length of passwords to length of accounts to unlock (if password provided) - if len(passwords) != len(unlock) { - return fmt.Errorf("passwords length does not match unlock length") - } - - } else { - - // compare length of passwords to length of accounts to unlock (if password not provided) - if len(passwords) != len(unlock) { - bytes := getPassword("Enter password to unlock keystore:") - password = string(bytes) - } - - err := keystore.UnlockKeys(ks, basepath, unlock, password) - if err != nil { - return fmt.Errorf("failed to unlock keys: %s", err) - } - } - - return nil -} diff --git a/cmd/gossamer/account_test.go b/cmd/gossamer/account_test.go deleted file mode 100644 index 916689e49b..0000000000 --- a/cmd/gossamer/account_test.go +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" -) - -// TestAccountGenerate test "gossamer account --generate" -func TestAccountGenerate(t *testing.T) { - testDir := t.TempDir() - - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--generate=true", "--password=false"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --generate", - []string{"basepath", "generate"}, - []interface{}{testDir, "true"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountGeneratePassword test "gossamer account --generate --password" -func TestAccountGeneratePassword(t *testing.T) { - testDir := t.TempDir() - - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--generate=true", "--password=true"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --generate --password", - []string{"basepath", "generate", "password"}, - []interface{}{testDir, "true", "1234"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountGenerateEd25519 test "gossamer account --generate --ed25519" -func TestAccountGenerateEd25519(t *testing.T) { - testDir := t.TempDir() - - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--generate=true", "--password=false", "--ed25519"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --generate --ed25519", - []string{"basepath", "generate", "ed25519"}, - []interface{}{testDir, "true", "ed25519"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountGenerateSr25519 test "gossamer account --generate --ed25519" -func TestAccountGenerateSr25519(t *testing.T) { - testDir := t.TempDir() - - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--generate=true", "--password=false", "--sr25519"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --generate --sr25519", - []string{"basepath", "generate", "sr25519"}, - []interface{}{testDir, "true", "sr25519"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountGenerateSecp256k1 test "gossamer account --generate --ed25519" -func TestAccountGenerateSecp256k1(t *testing.T) { - testDir := t.TempDir() - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--generate=true", "--password=false", "--secp256k1"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --generate --secp256k1", - []string{"basepath", "generate", "secp256k1"}, - []interface{}{testDir, "true", "secp256k1"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountImport test "gossamer account --import" -func TestAccountImport(t *testing.T) { - testDir := t.TempDir() - directory := fmt.Sprintf("--basepath=%s", testDir) - - err := app.Run([]string{"irrelevant", "account", directory, "--import=./test_inputs/test-key.key"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --import=./test_inputs/test-key.key", - []string{"basepath", "import"}, - []interface{}{"./test_inputs/", "test-key.key"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountImport test "gossamer account --import-raw" -func TestAccountImportRaw(t *testing.T) { - testDir := t.TempDir() - directory := fmt.Sprintf("--basepath=%s", testDir) - - err := app.Run([]string{ - "irrelevant", "account", directory, - `--import-raw=0x33a6f3093f158a7109f679410bef1a0c54168145e0cecb4df006c1c2fffb1f09`, - "--password=1234"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account "+ - "--import-raw=0x33a6f3093f158a7109f679410bef1a0c54168145e0cecb4df006c1c2fffb1f09 "+ - "--password=1234", - []string{"import-raw", "password"}, - []interface{}{ - "0x33a6f3093f158a7109f679410bef1a0c54168145e0cecb4df006c1c2fffb1f09", - "1234"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} - -// TestAccountList test "gossamer account --list" -func TestAccountList(t *testing.T) { - testDir := t.TempDir() - directory := fmt.Sprintf("--basepath=%s", testDir) - err := app.Run([]string{"irrelevant", "account", directory, "--list"}) - require.NoError(t, err) - - ctx, err := newTestContext( - "Test gossamer account --list", - []string{"basepath", "list"}, - []interface{}{testDir, "true"}, - ) - require.NoError(t, err) - - command := accountCommand - err = command.Run(ctx) - require.NoError(t, err) -} diff --git a/cmd/gossamer/commands/account.go b/cmd/gossamer/commands/account.go new file mode 100644 index 0000000000..92d06302d8 --- /dev/null +++ b/cmd/gossamer/commands/account.go @@ -0,0 +1,194 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + + "github.com/ChainSafe/gossamer/lib/crypto" + "github.com/ChainSafe/gossamer/lib/keystore" + "github.com/ChainSafe/gossamer/lib/utils" + "github.com/spf13/cobra" +) + +func init() { + AccountCmd.Flags().String("keystore-path", "", "path to keystore") + AccountCmd.Flags().String("keystore-file", "", "name of keystore file to import") + AccountCmd.Flags().String("password", "", "password used to encrypt the keystore. Used with --generate or --unlock") + AccountCmd.Flags().String("scheme", crypto.Sr25519Type, "keyring scheme (sr25519, ed25519, secp256k1)") +} + +// AccountCmd is the command to manage the gossamer keystore +var AccountCmd = &cobra.Command{ + Use: "account", + Short: "Create and manage node keystore accounts", + Long: `The account command is used to manage the gossamer keystore. +Examples: + +To generate a new sr25519 account: + gossamer account generate --keystore-path=path/to/location --scheme=sr25519 +To generate a new ed25519 account: + gossamer account generate --ed25519 +To generate a new secp256k1 account: + gossamer account generate --keystore-path=path/to/location --scheme secp256k1 +To import a keystore file: + gossamer account import --keystore-path=path/to/location --keystore-file=keystore.json +To import a raw key: + gossamer account import-raw --keystore-path=path/to/location --keystore-file=keystore.json +To list keys: gossamer account list --keystore-path=path/to/location`, + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + logger.Errorf("account command cannot be empty") + return cmd.Help() + } + + switch args[0] { + case "generate": + if err := generateKeyPair(cmd); err != nil { + return err + } + case "import": + if err := importKey(cmd); err != nil { + return err + } + case "import-raw": + if err := importRawKey(cmd); err != nil { + return err + } + case "list": + if err := listKeys(cmd); err != nil { + return err + } + default: + logger.Errorf("invalid account command: %s", args[0]) + return fmt.Errorf("invalid account command: %s", args[0]) + } + + return nil + }, +} + +// generateKeyPair generates a new keypair and saves it to the keystore +func generateKeyPair(cmd *cobra.Command) error { + keystorePath, err := cmd.Flags().GetString("keystore-path") + if err != nil { + return fmt.Errorf("failed to get keystore-path: %s", err) + } + if keystorePath == "" { + return fmt.Errorf("keystore-path cannot be empty") + } + + scheme, err := cmd.Flags().GetString("scheme") + if err != nil { + return fmt.Errorf("failed to get scheme: %s", err) + } + if !(scheme == crypto.Ed25519Type || scheme == crypto.Sr25519Type || scheme == crypto.Secp256k1Type) { + return fmt.Errorf("invalid scheme: %s", scheme) + } + + password, err := cmd.Flags().GetString("password") + if err != nil { + return fmt.Errorf("failed to get password: %s", err) + } + + logger.Info("Generating keypair") + + file, err := keystore.GenerateKeypair(scheme, nil, keystorePath, []byte(password)) + if err != nil { + logger.Errorf("failed to generate keypair: %s", err) + return err + } + + logger.Infof("keypair generated and saved to %s", file) + + return nil +} + +// importKey imports a keypair from a keystore file into the keystore +func importKey(cmd *cobra.Command) error { + keystorePath, err := cmd.Flags().GetString("keystore-path") + if err != nil { + return fmt.Errorf("failed to get keystore-path: %s", err) + } + if keystorePath == "" { + return fmt.Errorf("keystore-path cannot be empty") + } + + keystoreFile, err := cmd.Flags().GetString("keystore-file") + if err != nil { + return fmt.Errorf("failed to get keystore-file: %s", err) + } + if keystoreFile == "" { + return fmt.Errorf("keystore-file cannot be empty") + } + + _, err = keystore.ImportKeypair(keystoreFile, keystorePath) + if err != nil { + logger.Errorf("failed to import keypair: %s", err) + return err + } + + return nil +} + +// importRawKey imports a raw keypair into the keystore +func importRawKey(cmd *cobra.Command) error { + keystorePath, err := cmd.Flags().GetString("keystore-path") + if err != nil { + return fmt.Errorf("failed to get keystore-path: %s", err) + } + if keystorePath == "" { + return fmt.Errorf("keystore-path cannot be empty") + } + + keystoreFile, err := cmd.Flags().GetString("keystore-file") + if err != nil { + return fmt.Errorf("failed to get keystore-file: %s", err) + } + if keystoreFile == "" { + return fmt.Errorf("keystore-file cannot be empty") + } + + scheme, err := cmd.Flags().GetString("scheme") + if err != nil { + return fmt.Errorf("failed to get scheme: %s", err) + } + if !(scheme == crypto.Ed25519Type || scheme == crypto.Sr25519Type || scheme == crypto.Secp256k1Type) { + return fmt.Errorf("invalid scheme: %s", scheme) + } + + password, err := cmd.Flags().GetString("password") + if err != nil { + return fmt.Errorf("failed to get password: %s", err) + } + + file, err := keystore.ImportRawPrivateKey(keystoreFile, scheme, keystorePath, []byte(password)) + if err != nil { + logger.Errorf("failed to import private key: %s", err) + return err + } + + logger.Info("imported private key and saved it to " + file) + + return nil +} + +// listKeys lists the keys in the keystore +func listKeys(cmd *cobra.Command) error { + keystorePath, err := cmd.Flags().GetString("keystore-path") + if err != nil { + return fmt.Errorf("failed to get keystore-path: %s", err) + } + if keystorePath == "" { + return fmt.Errorf("keystore-path cannot be empty") + } + + _, err = utils.KeystoreFilepaths(keystorePath) + if err != nil { + logger.Errorf("failed to list keys: %s", err) + return err + } + + return nil +} diff --git a/cmd/gossamer/commands/account_test.go b/cmd/gossamer/commands/account_test.go new file mode 100644 index 0000000000..74a2532108 --- /dev/null +++ b/cmd/gossamer/commands/account_test.go @@ -0,0 +1,134 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +// TestAccountGenerate test "gossamer account generate" +func TestAccountGenerate(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "generate", directory}) + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountGeneratePassword test "gossamer account generate --password=VerySecurePassword" +func TestAccountGeneratePassword(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "generate", directory, "--password=VerySecurePassword"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountGenerateEd25519 test "gossamer account generate --scheme=ed25519" +func TestAccountGenerateEd25519(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "generate", directory, "--scheme=ed25519"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountGenerateSr25519 test "gossamer account generate --scheme=sr25519" +func TestAccountGenerateSr25519(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "generate", directory, "--scheme=sr25519"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountGenerateSecp256k1 test "gossamer account generate --scheme=secp256k1" +func TestAccountGenerateSecp256k1(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "generate", directory, "--scheme=secp256k1"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountImport test "gossamer account import" +func TestAccountImport(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "import", directory, "--keystore-file=./test_inputs/test-key.key"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountImport test "gossamer account import-raw --password --key" +func TestAccountImportRaw(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", + "import-raw", + directory, + "--keystore-file=0x33a6f3093f158a7109f679410bef1a0c54168145e0cecb4df006c1c2fffb1f09", + "--password=VerySecurePassword"}) + + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestAccountList test "gossamer account --list" +func TestAccountList(t *testing.T) { + testDir := t.TempDir() + directory := fmt.Sprintf("--keystore-path=%s", testDir) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(AccountCmd) + + rootCmd.SetArgs([]string{"account", "list", directory}) + + err = rootCmd.Execute() + require.NoError(t, err) +} diff --git a/cmd/gossamer/commands/build_spec.go b/cmd/gossamer/commands/build_spec.go new file mode 100644 index 0000000000..8336cbbba2 --- /dev/null +++ b/cmd/gossamer/commands/build_spec.go @@ -0,0 +1,103 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + + "github.com/ChainSafe/gossamer/dot" + "github.com/spf13/cobra" +) + +func init() { + BuildSpecCmd.Flags().Bool("raw", false, "print raw genesis json") + BuildSpecCmd.Flags(). + String("output-path", "", "path to output the recently created chain-spec JSON file") +} + +// BuildSpecCmd is the command to generate genesis JSON +var BuildSpecCmd = &cobra.Command{ + Use: "build-spec", + Short: "Generates chain-spec JSON data, and can convert to raw chain-spec data", + Long: `The build-spec command outputs current chain-spec JSON data. +Usage: gossamer build-spec +To generate raw chain-spec file from default: + gossamer build-spec --raw --output chain-spec.json +To generate raw chain-spec file from specific chain-spec file: + gossamer build-spec --raw --chain chain-spec.json --output-path chain-spec-raw.json`, + RunE: func(cmd *cobra.Command, args []string) error { + return execBuildSpec(cmd) + }, +} + +// execBuildSpec executes the build-spec command +func execBuildSpec(cmd *cobra.Command) error { + var err error + raw, err := cmd.Flags().GetBool("raw") + if err != nil { + return fmt.Errorf("failed to get raw value: %s", err) + } + + chainSpec, err := cmd.Flags().GetString("chain") + if err != nil { + return fmt.Errorf("failed to get genesis-spec value: %s", err) + } + + basePath, err = cmd.Flags().GetString("base-path") + if err != nil { + return fmt.Errorf("failed to get base-path value: %s", err) + } + + if chainSpec == "" && basePath == "" { + return fmt.Errorf("one of chain or base-path must be specified") + } + + outputPath, err := cmd.Flags().GetString("output-path") + if err != nil { + return fmt.Errorf("failed to get output-path value: %s", err) + } + + var bs *dot.BuildSpec + + if chainSpec != "" { + bs, err = dot.BuildFromGenesis(chainSpec, 0) + if err != nil { + return err + } + } else { + bs, err = dot.BuildFromDB(basePath) + if err != nil { + return fmt.Errorf("error building spec from database, "+ + "init must be run before build-spec or run build-spec "+ + "with --genesis flag Error %s", err) + } + } + + if bs == nil { + return fmt.Errorf("error building genesis") + } + + var res []byte + + if raw { + res, err = bs.ToJSONRaw() + } else { + res, err = bs.ToJSON() + } + + if err != nil { + return err + } + + if outputPath != "" { + err = dot.WriteGenesisSpecFile(res, outputPath) + if err != nil { + return fmt.Errorf("cannot write genesis spec file: %w", err) + } + } else { + fmt.Printf("%s\n", res) + } + + return nil +} diff --git a/cmd/gossamer/commands/build_spec_test.go b/cmd/gossamer/commands/build_spec_test.go new file mode 100644 index 0000000000..e3c80b9b85 --- /dev/null +++ b/cmd/gossamer/commands/build_spec_test.go @@ -0,0 +1,53 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// TestBuildSpec test "gossamer build-spec --chain=chain-spec-raw.json" +func TestBuildSpec(t *testing.T) { + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(BuildSpecCmd) + + rootCmd.SetArgs([]string{BuildSpecCmd.Name(), "--chain", testChainSpec}) + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestBuildSpecRaw test "gossamer build-spec --chain=chain-spec-raw.json --raw" +func TestBuildSpecRaw(t *testing.T) { + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(BuildSpecCmd) + + rootCmd.SetArgs([]string{BuildSpecCmd.Name(), "--chain", testChainSpec, "--raw"}) + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestBuildSpecFromDB test init and build-spec +// +// "gossamer init --chain chain-spec-raw.json --base-path=basepath && \ +// gossamer build-spec --base-path=basepath" +func TestBuildSpecFromDB(t *testing.T) { + basepath := t.TempDir() + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(BuildSpecCmd, InitCmd) + + // Init the node + rootCmd.SetArgs([]string{InitCmd.Name(), "--base-path", basepath, "--chain", testChainSpec}) + err = rootCmd.Execute() + require.NoError(t, err) + + rootCmd.SetArgs([]string{BuildSpecCmd.Name(), "--base-path", basePath}) + err = rootCmd.Execute() + require.NoError(t, err) +} diff --git a/cmd/gossamer/commands/import_runtime.go b/cmd/gossamer/commands/import_runtime.go new file mode 100644 index 0000000000..d7d905bda3 --- /dev/null +++ b/cmd/gossamer/commands/import_runtime.go @@ -0,0 +1,79 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "encoding/json" + "fmt" + "path/filepath" + + "github.com/ChainSafe/gossamer/lib/genesis" + + "github.com/ChainSafe/gossamer/lib/os" + "github.com/spf13/cobra" +) + +func init() { + ImportRuntimeCmd.Flags().String("wasm-file", "", "path to wasm runtime binary file") +} + +// ImportRuntimeCmd is the command to import a runtime binary into a genesis file +var ImportRuntimeCmd = &cobra.Command{ + Use: "import-runtime", + Short: "Appends the given .wasm runtime binary to a genesis file", + Long: `The import-runtime command appends the given .wasm runtime binary to a genesis file. +Example: + gossamer import-runtime --wasm-file runtime.wasm --genesis-file genesis.json > updated_genesis.json`, + RunE: func(cmd *cobra.Command, args []string) error { + return execImportRuntime(cmd) + }, +} + +// execImportRuntime executes the import-runtime command +func execImportRuntime(cmd *cobra.Command) error { + wasmFile, err := cmd.Flags().GetString("wasm-file") + if err != nil { + return fmt.Errorf("failed to get wasm-file: %s", err) + } + if wasmFile == "" { + return fmt.Errorf("wasm-file must be specified") + } + + chainSpec, err := cmd.Flags().GetString("chain") + if err != nil { + return fmt.Errorf("failed to get chain-spec: %s", err) + } + if chainSpec == "" { + return fmt.Errorf("chain must be specified") + } + + out, err := createGenesisWithRuntime(wasmFile, chainSpec) + if err != nil { + return err + } + + fmt.Println(out) + return nil +} + +// createGenesisWithRuntime creates a genesis file with the given runtime +func createGenesisWithRuntime(fp string, genesisSpecFilePath string) (string, error) { + runtime, err := os.ReadFile(filepath.Clean(fp)) + if err != nil { + return "", err + } + + chainSpec, err := genesis.NewGenesisSpecFromJSON(genesisSpecFilePath) + if err != nil { + return "", err + } + + chainSpec.Genesis.Runtime["system"]["code"] = fmt.Sprintf("0x%x", runtime) + jsonSpec, err := json.MarshalIndent(chainSpec, "", "\t") + if err != nil { + return "", err + } + + return string(jsonSpec), nil +} diff --git a/cmd/gossamer/import_runtime_test.go b/cmd/gossamer/commands/import_runtime_test.go similarity index 56% rename from cmd/gossamer/import_runtime_test.go rename to cmd/gossamer/commands/import_runtime_test.go index fb01d402de..ee529188bd 100644 --- a/cmd/gossamer/import_runtime_test.go +++ b/cmd/gossamer/commands/import_runtime_test.go @@ -1,7 +1,7 @@ // Copyright 2021 ChainSafe Systems (ON) // SPDX-License-Identifier: LGPL-3.0-only -package main +package commands import ( "encoding/json" @@ -12,10 +12,29 @@ import ( "github.com/ChainSafe/gossamer/lib/common" "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/utils" - "github.com/stretchr/testify/require" ) +// TestImportRuntime test "gossamer import-runtime --wasm-file test.wasm --chain westend-dev.json" +func TestImportRuntime(t *testing.T) { + testCode := []byte("somecode") + + filename := filepath.Join(t.TempDir(), "test.wasm") + err := os.WriteFile(filename, testCode, os.ModePerm) + require.NoError(t, err) + + westendChainSpec := utils.GetWestendDevHumanReadableGenesisPath(t) + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(ImportRuntimeCmd) + + rootCmd.SetArgs([]string{ImportRuntimeCmd.Name(), "--wasm-file", filename, "--chain", westendChainSpec}) + err = rootCmd.Execute() + require.NoError(t, err) +} + +// TestCreateGenesisWithRuntime test createGenesisWithRuntime func TestCreateGenesisWithRuntime(t *testing.T) { testCode := []byte("somecode") testHex := common.BytesToHex(testCode) diff --git a/cmd/gossamer/commands/import_state.go b/cmd/gossamer/commands/import_state.go new file mode 100644 index 0000000000..a12f137ba9 --- /dev/null +++ b/cmd/gossamer/commands/import_state.go @@ -0,0 +1,68 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + + "github.com/ChainSafe/gossamer/dot" + "github.com/ChainSafe/gossamer/lib/utils" + "github.com/spf13/cobra" +) + +func init() { + ImportStateCmd.Flags().String("chain", "", "Chain id used to load default configuration for specified chain") + ImportStateCmd.Flags().String("state-file", "", "Path to JSON file consisting of key-value pairs") + ImportStateCmd.Flags().String("header-file", "", "Path to JSON file of block header corresponding to the given state") + ImportStateCmd.Flags().Uint64("first-slot", 0, "The first BABE slot of the network") +} + +// ImportStateCmd is the command to import a state from a JSON file +var ImportStateCmd = &cobra.Command{ + Use: "import-state", + Short: "Import state from a JSON file and set it as the chain head state", + Long: `The import-state command allows a JSON file containing a given state +in the form of key-value pairs to be imported. +Input can be generated by using the RPC function state_getPairs. +Example: + gossamer import-state --state-file state.json --header-file header.json --first-slot `, + RunE: func(cmd *cobra.Command, args []string) error { + return execImportState(cmd) + }, +} + +func execImportState(cmd *cobra.Command) error { + if basePath == "" { + basePath = config.BasePath + } + + if basePath == "" { + return fmt.Errorf("basepath must be specified") + } + + firstSlot, err := cmd.Flags().GetUint64("first-slot") + if err != nil { + return fmt.Errorf("failed to get first-slot: %s", err) + } + + stateFile, err := cmd.Flags().GetString("state-file") + if err != nil { + return fmt.Errorf("failed to get state-file: %s", err) + } + if stateFile == "" { + return fmt.Errorf("state-file must be specified") + } + + headerFile, err := cmd.Flags().GetString("header-file") + if err != nil { + return fmt.Errorf("failed to get header-file: %s", err) + } + if headerFile == "" { + return fmt.Errorf("header-file must be specified") + } + + basePath = utils.ExpandDir(basePath) + + return dot.ImportState(basePath, stateFile, headerFile, firstSlot) +} diff --git a/cmd/gossamer/commands/init.go b/cmd/gossamer/commands/init.go new file mode 100644 index 0000000000..fc3a21efef --- /dev/null +++ b/cmd/gossamer/commands/init.go @@ -0,0 +1,79 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "bufio" + "fmt" + "os" + "strings" + + cfg "github.com/ChainSafe/gossamer/config" + + "github.com/ChainSafe/gossamer/dot" + "github.com/spf13/cobra" +) + +const confirmCharacter = "Y" + +func init() { + InitCmd.Flags().Bool("force", + false, + "force reinitialization of node") +} + +// InitCmd is the command to initialise the node +var InitCmd = &cobra.Command{ + Use: "init", + Short: "Initialise node databases and load genesis data to state", + Long: `The init command initialises the node databases and loads the genesis data from the genesis file to state. +Examples: + gossamer init --genesis genesis.json + gossamer init --chain westend`, + RunE: func(cmd *cobra.Command, args []string) error { + return execInit(cmd) + }, +} + +// execInit executes the init command +func execInit(cmd *cobra.Command) error { + force, err := cmd.Flags().GetBool("force") + if err != nil { + return fmt.Errorf("failed to get --force: %s", err) + } + + if dot.IsNodeInitialised(config.BasePath) { + // prompt user to confirm reinitialization + if force || confirmMessage("Are you sure you want to reinitialise the node? [Y/n]") { + logger.Info("reinitialising node at base path " + config.BasePath + "...") + } else { + logger.Warn("exiting without reinitialising the node at base path " + config.BasePath + "...") + return nil // exit if reinitialization is not confirmed + } + } + + // Write the config to the base path + if err := cfg.WriteConfigFile(config.BasePath, config); err != nil { + return fmt.Errorf("failed to ensure root: %s", err) + } + + if err := dot.InitNode(config); err != nil { + return fmt.Errorf("failed to initialise node: %s", err) + } + + logger.Info("node initialised at: " + config.BasePath) + return nil +} + +// confirmMessage prompts user to confirm message and returns true if "Y" +func confirmMessage(msg string) bool { + reader := bufio.NewReader(os.Stdin) + fmt.Println(msg) + fmt.Print("> ") + for { + text, _ := reader.ReadString('\n') + text = strings.ReplaceAll(text, "\n", "") + return strings.Compare(confirmCharacter, strings.ToUpper(text)) == 0 + } +} diff --git a/cmd/gossamer/commands/init_test.go b/cmd/gossamer/commands/init_test.go new file mode 100644 index 0000000000..cce36b9a53 --- /dev/null +++ b/cmd/gossamer/commands/init_test.go @@ -0,0 +1,25 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +const testChainSpec = "./test_inputs/test-chain-spec-raw.json" + +// TestInitFromChainSpec test "gossamer init --chain=./test_inputs/test-chain-spec-raw.json" +func TestInitFromChainSpec(t *testing.T) { + basepath := t.TempDir() + + rootCmd, err := NewRootCommand() + require.NoError(t, err) + rootCmd.AddCommand(InitCmd) + + rootCmd.SetArgs([]string{InitCmd.Name(), "--base-path", basepath, "--chain", testChainSpec}) + err = rootCmd.Execute() + require.NoError(t, err) +} diff --git a/cmd/gossamer/commands/prune_state.go b/cmd/gossamer/commands/prune_state.go new file mode 100644 index 0000000000..f7112a0f34 --- /dev/null +++ b/cmd/gossamer/commands/prune_state.go @@ -0,0 +1,71 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + "path/filepath" + + "github.com/ChainSafe/gossamer/dot/state" + "github.com/spf13/cobra" +) + +func init() { + PruneStateCmd.Flags().String("chain", "", "chain id") + PruneStateCmd.Flags().Uint32("retain-blocks", 512, "number of blocks to retain") +} + +// PruneStateCmd is the command to prune the state trie +var PruneStateCmd = &cobra.Command{ + Use: "prune-state", + Short: "Prune state will prune the state trie", + Long: `prune-state will prune historical state data. +All trie nodes that do not belong to the specified version state will be deleted from the database. +The default pruning target is the HEAD-256 state`, + RunE: func(cmd *cobra.Command, args []string) error { + return execPruneState(cmd) + }, +} + +// execPruneState executes the prune-state command +func execPruneState(cmd *cobra.Command) error { + retainBlocks, err := cmd.Flags().GetUint32("retain-blocks") + if err != nil { + return fmt.Errorf("failed to get retain-blocks: %s", err) + } + + if basePath == "" { + basePath = config.BasePath + } + + if basePath == "" { + return fmt.Errorf("basepath must be specified") + } + + dbPath := filepath.Join(basePath, "db") + + const uint32Max = ^uint32(0) + if uint32Max < retainBlocks { + return fmt.Errorf("retain blocks value overflows uint32 boundaries, must be less than or equal to: %d", uint32Max) + } + + pruner, err := state.NewOfflinePruner(dbPath, retainBlocks) + if err != nil { + return err + } + + logger.Info("Offline pruner initialised") + + err = pruner.SetBloomFilter() + if err != nil { + return fmt.Errorf("failed to set keys into bloom filter: %w", err) + } + + err = pruner.Prune() + if err != nil { + return fmt.Errorf("failed to prune: %w", err) + } + + return nil +} diff --git a/cmd/gossamer/prune_test.go b/cmd/gossamer/commands/prune_state_test.go similarity index 88% rename from cmd/gossamer/prune_test.go rename to cmd/gossamer/commands/prune_state_test.go index 2f3205c33d..d19cf72400 100644 --- a/cmd/gossamer/prune_test.go +++ b/cmd/gossamer/commands/prune_state_test.go @@ -1,7 +1,7 @@ -// Copyright 2021 ChainSafe Systems (ON) +// Copyright 2023 ChainSafe Systems (ON) // SPDX-License-Identifier: LGPL-3.0-only -package main +package commands import ( "fmt" @@ -12,6 +12,7 @@ import ( "github.com/stretchr/testify/require" ) +// TestPruneState test "gossamer prune-state" func TestPruneState(t *testing.T) { t.Skip() // this fails due to being unable to call blockState.GetHighestFinalisedHash() @@ -57,15 +58,8 @@ func TestPruneState(t *testing.T) { t.Log("pruned DB path", prunedDBPath) // Run Prune command - ctx, err := newTestContext( - "Test state trie offline pruning --prune-state", - []string{"config", "retain-blocks"}, - []interface{}{configFile, int64(5)}, - ) - require.NoError(t, err) - - command := pruningCommand - err = command.Run(ctx) + PruneStateCmd.SetArgs([]string{"--config", configFile, "--retain-blocks", "5"}) + err = PruneStateCmd.Execute() require.NoError(t, err) prunedDB, err := badger.Open(badger.DefaultOptions(prunedDBPath)) diff --git a/cmd/gossamer/commands/root.go b/cmd/gossamer/commands/root.go new file mode 100644 index 0000000000..ed53134e72 --- /dev/null +++ b/cmd/gossamer/commands/root.go @@ -0,0 +1,640 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + "os" + + "github.com/ChainSafe/gossamer/dot" + + "github.com/ChainSafe/gossamer/lib/keystore" + + cfg "github.com/ChainSafe/gossamer/config" + + "github.com/ChainSafe/gossamer/internal/log" + + "github.com/spf13/cobra" +) + +// Package level variables +var ( + config = cfg.DefaultConfig() + logger = log.NewFromGlobal(log.AddContext("pkg", "cmd")) +) + +// Flag values for the root command which needs type conversion +var ( + // Base Config + logLevelGlobal string + pruning string + telemetryURLs string + + // Log Config + logLevelCore string + logLevelDigest string + logLevelSync string + logLevelNetwork string + logLevelRPC string + logLevelState string + logLevelRuntime string + logLevelBABE string + logLevelGRANDPA string + + // Core Config + // role of the node. one of: full, light or authority + role string + // validator when set, the node will be an authority + validator bool + + // Account Config + // key to use for the node + key string + + // RPC Config + // RPC modules to enable + rpcModules string +) + +// Flag values for persistent flags +var ( + // Default accounts + alice bool + bob bool + charlie bool + + // Initialization flags for node + chain string + basePath string +) + +// Default values +const ( + // DefaultHomeEnv is the default environment variable for the base path + DefaultHomeEnv = "GSSMRHOME" +) + +// NewRootCommand creates the root command +func NewRootCommand() (*cobra.Command, error) { + cmd := &cobra.Command{ + Use: "gossamer", + Short: "Official gossamer command-line interface", + Long: `Gossamer is a Golang implementation of the Polkadot Host. +Usage: + gossamer --chain westend-local --alice + gossamer --chain westend-dev --key alice --port 7002 + gossamer --chain westend --key bob --port 7003 + gossamer --chain kusama --key charlie --port 7004 + gossamer --chain polkadot --key dave --port 7005`, + RunE: func(cmd *cobra.Command, args []string) error { + return execRoot(cmd) + }, + PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) { + if !(cmd.Name() == "gossamer" || cmd.Name() == "init") { + return nil + } + + if err := parseChainSpec(chain); err != nil { + return fmt.Errorf("failed to parse chain-spec: %s", err) + } + + if err := parseBasePath(); err != nil { + return fmt.Errorf("failed to parse base path: %s", err) + } + + parseAccount() + + if err := parseRole(); err != nil { + return fmt.Errorf("failed to parse role: %s", err) + } + + if err := parseTelemetryURL(); err != nil { + return fmt.Errorf("failed to parse telemetry-url: %s", err.Error()) + } + + parseRPC() + + // If no chain-spec is provided, it should already exist in the base-path + // If a chain-spec is provided, it should be copied to the base-path + if config.ChainSpec == "" { + if _, err := os.Stat(cfg.GetChainSpec(config.BasePath)); os.IsNotExist(err) { + return fmt.Errorf("chain-spec not found in base-path and no chain-spec provided") + } + } else { + // Copy chain-spec to base-path + if err := copyChainSpec(config.ChainSpec, cfg.GetChainSpec(config.BasePath)); err != nil { + return fmt.Errorf("failed to copy chain-spec: %s", err) + } + } + + if cmd.Name() == "gossamer" { + if err := configureViper(config.BasePath); err != nil { + return fmt.Errorf("failed to configure viper: %s", err) + } + + if err := ParseConfig(); err != nil { + return fmt.Errorf("failed to parse config: %s", err) + } + + if err := config.ValidateBasic(); err != nil { + return fmt.Errorf("error in config file: %v", err) + } + } + + return nil + }, + SilenceErrors: true, + SilenceUsage: true, + } + + if err := addRootFlags(cmd); err != nil { + return nil, err + } + + return cmd, nil +} + +// addRootFlags adds the root flags to the command +func addRootFlags(cmd *cobra.Command) error { + // global flags + cmd.PersistentFlags().StringVar(&basePath, + "base-path", + "", + "The base path for the node. Defaults to $GSSMRHOME if set") + cmd.PersistentFlags().StringVar(&chain, + "chain", + "", + "The default chain configuration to load. Example: --chain kusama") + + // Base Config + if err := addBaseConfigFlags(cmd); err != nil { + return fmt.Errorf("failed to add base config flags: %s", err) + } + + // Log Config + addLogFlags(cmd) + + // Account Config + if err := addAccountFlags(cmd); err != nil { + return fmt.Errorf("failed to add account flags: %s", err) + } + + // Network Config + if err := addNetworkFlags(cmd); err != nil { + return fmt.Errorf("failed to add network flags: %s", err) + } + + // Core Config + if err := addCoreFlags(cmd); err != nil { + return fmt.Errorf("failed to add core flags: %s", err) + } + + // State Config + if err := addStateFlags(cmd); err != nil { + return fmt.Errorf("failed to add state flags: %s", err) + } + + // RPC Config + if err := addRPCFlags(cmd); err != nil { + return fmt.Errorf("failed to add rpc flags: %s", err) + } + + // pprof Config + addPprofFlags(cmd) + + return nil +} + +// addBaseConfigFlags adds the base config flags to the command +func addBaseConfigFlags(cmd *cobra.Command) error { + if err := addStringFlagBindViper(cmd, + "name", + config.BaseConfig.Name, + "Name of the node", + "Name of the node"); err != nil { + return fmt.Errorf("failed to add --name flag: %s", err) + } + if err := addStringFlagBindViper(cmd, + "id", config.BaseConfig.ID, + "Identifier for the node", + "id"); err != nil { + return fmt.Errorf("failed to add --id flag: %s", err) + } + if err := addBoolFlagBindViper(cmd, + "no-telemetry", + config.BaseConfig.NoTelemetry, + "Disable connecting to the Substrate telemetry server", + "no-telemetry"); err != nil { + return fmt.Errorf("failed to add --no-telemetry flag: %s", err) + } + if err := addUint32FlagBindViper(cmd, + "prometheus-port", + config.BaseConfig.PrometheusPort, + "Listen address of the prometheus server", + "prometheus-port"); err != nil { + return fmt.Errorf("failed to add --metrics-address flag: %s", err) + } + if err := addUint32FlagBindViper(cmd, + "retain-blocks", + config.BaseConfig.RetainBlocks, + "Retain number of block from latest block while pruning", + "retain-blocks"); err != nil { + return fmt.Errorf("failed to add --retain-blocks flag: %s", err) + } + cmd.Flags().StringVar(&logLevelGlobal, + "log", + config.BaseConfig.LogLevel, + "Global log level. Supports levels critical (silent), error, warn, info, debug and trace") + cmd.Flags().StringVar(&pruning, + "state-pruning", + string(config.BaseConfig.Pruning), + "State trie online pruning") + if err := addBoolFlagBindViper(cmd, + "prometheus-external", + config.BaseConfig.PrometheusExternal, + "Publish metrics to prometheus", + "prometheus-external"); err != nil { + return fmt.Errorf("failed to add --prometheus-external flag: %s", err) + } + cmd.Flags().StringVar(&telemetryURLs, + "telemetry-url", + "", + `The URL of the telemetry server to connect to. +This flag can be passed multiple times as a means to specify multiple telemetry endpoints. +Verbosity levels range from 0-9, with 0 denoting the least verbosity. +Expected format is 'URL VERBOSITY', e.g. ''--telemetry-url wss://foo/bar:0, wss://baz/quz:1 +`) + + return nil +} + +// addLogFlags adds the log flags to the command +func addLogFlags(cmd *cobra.Command) { + cmd.Flags().StringVar(&logLevelCore, "lcore", config.Log.Core, "Core module log level") + cmd.Flags().StringVar(&logLevelDigest, "ldigest", config.Log.Digest, "Digest module log level") + cmd.Flags().StringVar(&logLevelSync, "lsync", config.Log.Sync, "Sync module log level") + cmd.Flags().StringVar(&logLevelNetwork, "lnetwork", config.Log.Network, "Network module log level") + cmd.Flags().StringVar(&logLevelRPC, "lrpc", config.Log.RPC, "RPC module log level") + cmd.Flags().StringVar(&logLevelState, "lstate", config.Log.State, "State module log level") + cmd.Flags().StringVar(&logLevelRuntime, "lruntime", config.Log.Runtime, "Runtime module log level") + cmd.Flags().StringVar(&logLevelBABE, "lbabe", config.Log.Babe, "BABE module log level") + cmd.Flags().StringVar(&logLevelGRANDPA, "lgrandpa", config.Log.Grandpa, "GRANDPA module log level") +} + +// addAccountFlags adds account flags and binds to viper +func addAccountFlags(cmd *cobra.Command) error { + cmd.PersistentFlags().StringVar(&key, + "key", + "", + "Keyring to use for the node") + + if err := addStringFlagBindViper(cmd, + "unlock", + config.Account.Unlock, + "Unlock an account. eg. --unlock=0 to unlock account 0.", + "account.unlock"); err != nil { + return fmt.Errorf("failed to add --unlock flag: %s", err) + } + + // Default Account flags + cmd.PersistentFlags().BoolVar(&alice, + "alice", + false, + "use Alice's key") + cmd.PersistentFlags().BoolVar(&bob, + "bob", + false, + "use Bob's key") + cmd.PersistentFlags().BoolVar(&charlie, + "charlie", + false, + "use Charlie's key") + + cmd.Flags().String( + "password", + "", + "Password used to encrypt the keystore") + + return nil +} + +// addNetworkFlags adds network flags and binds to viper +func addNetworkFlags(cmd *cobra.Command) error { + if err := addUint16FlagBindViper(cmd, + "port", + config.Network.Port, + "Network port to use", + "network.port"); err != nil { + return fmt.Errorf("failed to add --port flag: %s", err) + } + + if err := addStringSliceFlagBindViper(cmd, + "bootnodes", + config.Network.Bootnodes, + "Comma separated node URLs for network discovery bootstrap", + "network.bootnodes"); err != nil { + return fmt.Errorf("failed to add --bootnodes flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "protocol-id", + config.Network.ProtocolID, + "Protocol ID to use", + "network.protocol-id"); err != nil { + return fmt.Errorf("failed to add --protocol-id flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "no-bootstrap", + config.Network.NoBootstrap, + "Disables network bootstrapping (mDNS still enabled)", + "network.no-bootstrap"); err != nil { + return fmt.Errorf("failed to add --no-bootstrap flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "no-mdns", config.Network.NoMDNS, + "Disables network mDNS discovery", + "network.no-mdns"); err != nil { + return fmt.Errorf("failed to add --no-mdns flag: %s", err) + } + + if err := addIntFlagBindViper(cmd, + "min-peers", + config.Network.MinPeers, + "Minimum number of peers to connect to", + "network.min-peers"); err != nil { + return fmt.Errorf("failed to add --min-peers flag: %s", err) + } + + if err := addIntFlagBindViper(cmd, + "max-peers", + config.Network.MaxPeers, + "Maximum number of peers to connect to", + "network.max-peers"); err != nil { + return fmt.Errorf("failed to add --max-peers flag: %s", err) + } + + if err := addStringSliceFlagBindViper(cmd, + "persistent-peers", + config.Network.PersistentPeers, + "Comma separated list of peers to always keep connected to", + "network.persistent-peers"); err != nil { + return fmt.Errorf("failed to add --persistent-peers flag: %s", err) + } + + if err := addDurationFlagBindViper(cmd, + "discovery-interval", + config.Network.DiscoveryInterval, + "Interval to perform peer discovery", + "network.discovery-interval"); err != nil { + return fmt.Errorf("failed to add --discovery-interval flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "public-ip", + config.Network.PublicIP, + "Overrides the public IP address used for peer to peer networking", + "network.public-ip"); err != nil { + return fmt.Errorf("failed to add --public-ip flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "public-dns", + config.Network.PublicDNS, + "Overrides public DNS used for peer to peer networking", + "network.public-dns"); err != nil { + return fmt.Errorf("failed to add --public-dns flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "node-key", + config.Network.NodeKey, + "Overrides the secret Ed25519 key to use for libp2p networking", + "network.node-key"); err != nil { + return fmt.Errorf("failed to add --node-key flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "listen-addr", + config.Network.ListenAddress, + "Overrides the listen address used for peer to peer networking", + "network.listen-addr"); err != nil { + return fmt.Errorf("failed to add --listen-addr flag: %s", err) + } + + return nil +} + +// addRPCFlags adds rpc flags and binds to viper +func addRPCFlags(cmd *cobra.Command) error { + if err := addBoolFlagBindViper(cmd, + "unsafe-rpc", + config.RPC.UnsafeRPC, + "Enable unsafe RPC methods", + "rpc.unsafe-rpc"); err != nil { + return fmt.Errorf("failed to add --unsafe-rpc flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "unsafe-rpc-external", + config.RPC.UnsafeRPCExternal, + "Enable external HTTP-RPC connections to unsafe procedures", + "rpc.unsafe-rpc-external"); err != nil { + return fmt.Errorf("failed to add --unsafe-rpc-external flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "rpc-external", + config.RPC.RPCExternal, + "Enable external HTTP-RPC connections", + "rpc.rpc-external"); err != nil { + return fmt.Errorf("failed to add --rpc-external flag: %s", err) + } + + if err := addUint32FlagBindViper(cmd, + "rpc-port", + config.RPC.Port, + "HTTP-RPC server listening port", + "rpc.port"); err != nil { + return fmt.Errorf("failed to add --rpc-port flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "rpc-host", + config.RPC.Host, + "HTTP-RPC server listening hostname", + "rpc.host"); err != nil { + return fmt.Errorf("failed to add --rpc-host flag: %s", err) + } + + cmd.PersistentFlags().StringVar(&rpcModules, + "rpc-methods", + "", + "API modules to enable via HTTP-RPC, comma separated list") + + if err := addUint32FlagBindViper(cmd, + "ws-port", + config.RPC.WSPort, + "Websockets server listening port", + "rpc.ws-port"); err != nil { + return fmt.Errorf("failed to add --ws-port flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "ws-external", + config.RPC.WSExternal, + "Enable external websocket connections", + "rpc.ws-external"); err != nil { + return fmt.Errorf("failed to add --ws-external flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "unsafe-ws-external", + config.RPC.UnsafeWSExternal, + "Enable external access to websocket unsafe calls", + "rpc.unsafe-ws-external"); err != nil { + return fmt.Errorf("failed to add --ws-unsafe-external flag: %s", err) + } + + // dummy flag to conform with the substrate cli + cmd.Flags().String("rpc-cors", + "", + "dummy flag to conform with the substrate cli") + + return nil +} + +// addCoreFlags adds core flags and binds to viper +func addCoreFlags(cmd *cobra.Command) error { + cmd.Flags().StringVar(&role, + "role", + cfg.FullNode.String(), + "Role of the node. One of 'full', 'light', or 'authority'.") + + cmd.Flags().BoolVar(&validator, + "validator", + false, + "Run as a validator node") + + if err := addBoolFlagBindViper(cmd, + "babe-authority", + config.Core.BabeAuthority, + "Run as a BABE authority", + "core.babe-authority"); err != nil { + return fmt.Errorf("failed to add --babe-authority flag: %s", err) + } + + if err := addBoolFlagBindViper(cmd, + "grandpa-authority", + config.Core.GrandpaAuthority, + "Run as a GRANDPA authority", + "core.grandpa-authority"); err != nil { + return fmt.Errorf("failed to add --grandpa-authority flag: %s", err) + } + + if err := addStringFlagBindViper(cmd, + "wasm-interpreter", + config.Core.WasmInterpreter, + "WASM interpreter", + "core.wasm-interpreter"); err != nil { + return fmt.Errorf("failed to add --wasm-interpreter flag: %s", err) + } + + if err := addDurationFlagBindViper(cmd, + "grandpa-interval", + config.Core.GrandpaInterval, + "GRANDPA voting period in seconds", + "core.grandpa-interval"); err != nil { + return fmt.Errorf("failed to add --grandpa-interval flag: %s", err) + } + + return nil +} + +// addStateFlags adds state flags and binds to viper +func addStateFlags(cmd *cobra.Command) error { + if err := addUintFlagBindViper(cmd, + "rewind", config.State.Rewind, + "Rewind head of chain to the given block number", + "state.rewind"); err != nil { + return fmt.Errorf("failed to add --rewind flag: %s", err) + } + + return nil +} + +// addPprofFlags adds pprof flags and binds to viper +func addPprofFlags(cmd *cobra.Command) { + cmd.Flags().Bool("pprof.enabled", + config.Pprof.Enabled, + "enabled") + cmd.Flags().String("pprof.listening-address", + config.Pprof.ListeningAddress, + "Address to listen on for pprof") + cmd.Flags().Int("pprof.block-profile-rate", + config.Pprof.BlockProfileRate, + "The frequency at which the Go runtime samples the state of goroutines to generate block profile information.") + cmd.Flags().Int("pprof.mutex-profile-rate", + config.Pprof.MutexProfileRate, + "The frequency at which the Go runtime samples the state of mutexes to generate mutex profile information.") +} + +// execRoot executes the root command +func execRoot(cmd *cobra.Command) error { + password, err := cmd.Flags().GetString("password") + if err != nil { + return fmt.Errorf("failed to get password: %s", err) + } + + ks := keystore.NewGlobalKeystore() + if config.Account.Key != "" { + if err := loadBuiltInTestKeys(config.Account.Key, *ks); err != nil { + return fmt.Errorf("error loading built-in test keys: %s", err) + } + } + + // load user keys if specified + if err := unlockKeystore(ks.Acco, config.BasePath, config.Account.Unlock, password); err != nil { + return fmt.Errorf("failed to unlock keystore: %s", err) + } + + if err := unlockKeystore(ks.Babe, config.BasePath, config.Account.Unlock, password); err != nil { + return fmt.Errorf("failed to unlock keystore: %s", err) + } + + if err := unlockKeystore(ks.Gran, config.BasePath, config.Account.Unlock, password); err != nil { + return fmt.Errorf("failed to unlock keystore: %s", err) + } + + if err := config.ValidateBasic(); err != nil { + return fmt.Errorf("failed to validate config: %s", err) + } + + // Write the config to the base path + if err := cfg.WriteConfigFile(config.BasePath, config); err != nil { + return fmt.Errorf("failed to ensure root: %s", err) + } + + // if the node is not initialised, initialise it + if !dot.IsNodeInitialised(config.BasePath) { + if err := dot.InitNode(config); err != nil { + return fmt.Errorf("failed to initialise node: %s", err) + } + } + + node, err := dot.NewNode(config, ks) + if err != nil { + return fmt.Errorf("failed to create node services: %s", err) + } + + logger.Info("starting node " + node.Name + "...") + + // start node + if err := node.Start(); err != nil { + return fmt.Errorf("failed to start node: %s", err) + } + + return nil +} diff --git a/cmd/gossamer/commands/test_inputs/test-chain-spec-raw.json b/cmd/gossamer/commands/test_inputs/test-chain-spec-raw.json new file mode 100644 index 0000000000..87db1c2837 --- /dev/null +++ b/cmd/gossamer/commands/test_inputs/test-chain-spec-raw.json @@ -0,0 +1,162 @@ +{ + "name": "Development", + "id": "westend_dev", + "chainType": "Development", + "bootNodes": [], + "telemetryEndpoints": null, + "protocolId": "dot", + "properties": null, + "forkBlocks": null, + "badBlocks": null, + "lightSyncState": null, + "codeSubstitutes": {}, + "genesis": { + "raw": { + "top": { + "0x0595267586b57744927884f519eb81014e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0300", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x0000300000800000080000000000100000c800000500000005000000020000000200000000005000000010000700e876481702004001040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c800000002000000190000000000000002000000020000000700c817a80402004001000200000005000000", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1405f2411d0af5a7ff397e7c9dc68d196323ae84c43568be0d1394d5d0d522c4": "0x02000000", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0100000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", + "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0100000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x26aa394eea5630e07c48ae0c9558cef734abf5cb34d6244378cddbf18e849d96": "0x00000000073de5c5480e00", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9007cbc1270b5b091758f9c42f5915b3e8ac59e11963af19174d0b94d5d78041c233f55d2e19324665bafdfb62925af2d": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da923a05cabf6d3bde7ca3ef0d11596b5611cbd2d43530a44705ad088af313e18f80b53ef16b36177cd4b77b846f2a5f07c": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da932a5935f6edc617ae178fef9eb1e211fbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x00000000030000000100000000000000000064a7b3b6e00d00000000000000000000000000000000000000000000000000407a10f35a0000000000000000000000407a10f35a00000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94f9aea1afa791265fae359272badc1cf8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da96f2e33376834a63c86a195bcf685aebbfe65717dad0447d715f660a0a58411de509b42e6efb8375f562f58a554d5860e": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98578796c363c105114787203e4d93ca6101191192fc877c24d725b337120fa3edc63d227bbc92705db1e2cb65f56981a": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b0edae20838083f2cde1c4080db8cf8090b5ab205c6974c9ea841be688864633dc9ca8a357843eeacf2314649965fe22": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b321d16960ce1d9190b61e2421cc60131e07379407fecc4b89eb7dbd287c2c781cfb1907a96947a3eb18e4f8e7198625": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9de1e86a9a8c739864cf3cc5ec2bea59fd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e5e802737cce3a54b0bc9e3d3e6be26e306721211d5404bd9da88e0204360a1a9ab8b87c66c1bc2fcdd37f3c2222cc20": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9edeaa42c2163f68084a988529a0e2ec5e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f3f619a1c2956443880db9cc9a13d058e860f1b1c7227f7c22602f53f15af80747814dffd839719731ee3bba6edc126c": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0xa1911c77657374656e64", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2aeddc77fe58c98d50bd37f1b90840f94e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x2f85f1e1378cb2d7b83adbaf0b5869c298ef7dc060436e4ed803af07632b89b65153cb1f00942ff401000000": "0x74d75eed52d1e4deb962b526776d1f09b31bfe1ee49049344554c9f22c83373201000000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c298ef7dc060436e4ed803af07632b89b6b4def25cfda6ef3a00000000": "0x74d75eed52d1e4deb962b526776d1f09b31bfe1ee49049344554c9f22c83373201000000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c2ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00584c4a040e9cc51e125310300d391d7d24caccdb81b1c1255e0fb5d0e14857f25facb756af241a1d02fc3fdc3a64407800f0ff594bdf3d4d6726de50191edde0a86bec1c50b09505c1a3ba773a869b221ae9a54676b7bdf79632a594022913a210fb10cd4af89b2cfbd7c7c9285f5748ad99db805bbd0e2a7fc4ec10fbf94b0488fd0e427f1427bd9eed93435d636600b81988f34b59a50fd441a557a4834a71d6412550a54f7f830ef24ad320d143a5dfd3424d3b52e96f07752d8754fa6207f5d3dfa14f3fec207efaeb43c9287bab2ba4c6bc04f2fb833c720539e4712bc8b3673c1b84f9430d82cb4ac291e557eebd662dbf66cfc832c9ebea651d04be7f4f077560f77d64f9fdeabf2eec99d841ddfbef74d0f7fe60377205b767e1332b09d7902cc35f7d376e0dc724afdf83dccbdeeac6ade0b875f58ddbb35256f93d17d2f2b4ed9f7256fe5d22654f65b2e49ebe3fe8ccdcb8b5037e6f4ca295c9ed1908769842e57ec7d273d6f2cb1f9cacdd57d8339f9ef977bf3ddbff9e75b3aeefb83deb9f63c9759f1b93bceef328f6ac9f594896ec5f1625bd9ef58b1db4d55fd6415bbf83f6fd3d179a36ffd91af1ea3ed57f7d7cc5940bd011716f2cd8eadeaeb8a9e5acf66b50f776a587ca2c241c8837db542dc3da2ff27bdebad0f64f2956fe52aca558fbc30edaefdf0ea2bf3f3bc8bfee833e6e5d0d4466517245ff6631a056fd416629a1ef64499f3ee8211db9821e320b04b1d267d6ecd97cb0433a6e6516121fb78233f4913eb3b667e54ee507c165716459abdcfb587ad4c77256ff6521e17ea8411f4b05547f70591d59a650bbf7b1dc5bf5a763493f08a1024c4ca852a650fdb767fe434ec7addd68e4555555722a7d1fcb23753ec8a18ff3e9b875592074d5b9d1a8ab942cb93a69c455555555b5ac55ff396ecff89785c4c9d9337ea0ba426a1cbb1ce07610f3d6fded20fed2abfbb383faf79785a47fa8c11e57e4075ddb415cf7c1eda0ada557f76707f1ef831eb2e8ff23668738dfbfdf59489a5c91dfc7ed997fb3904c72f6cc1fec703b686be9d57d7086ccf27ae6bfac0fb6f20ff5502f0b49ff500ff5500f758d99cd80eb537eed071703115c0dc46521d967960729d86cb62b75c9ed59e9d57eb0c3ed20fe72d6fdeda0d9b3fefd656dcffa87da006229d6fef9fcfda0ac83b6f6831c8a1db43ddbefdfe920ff7e590771ed5f1612ffa11eea395a0952916a95499e255ee5f72a933c4bf8e7f34f3289ab93dbb372d6fd652161b2e4ca3fd443bd3e4d46f9ba426ace0c05b8cb12996694cd66b3d1c2eccd8e389569a96c369b8d1666d39061aa5bd7075c217129b841e252700b202e0577037129b814104baff67b1db45262ced4feb083f696e556fbc50edaefdfe920fe7ed91ae1dabf3e4d46f9ba426acc08003703716f576aa8a557f7bd0e5a3546bca9fb610b316d5fd6412b25e64cdddf0eda5af6d4fdf55932cad7155263ee00e4df0e2af799dc9eedefd79863e0de6c5175bbd81ba61ac289552c8e181c31366261c4d688a911831333234646ac8c1818312f625dc4a488b5894d115b1363137b22a6269626d6462cce7463b631d97075e1e2c26585ab0a17153b5974a6d091da29b3a3c4ce981d312d1b5a2068d5d0a2813a41a3a06ce82df6863641d1d036a12dbca243834e0d2d22281354cd8ed30e1a2002ec3cb9968822c5656687c9d5828b8ceb089711ae225c30b85ed8a1da89b3b346ab4b0b879d332d2fad2c3b4cb4b8ec2cb163a6e5426b8d961aad345a70625038151ee576f81c87c34fe06fb8195e86cbe1701c0d3f4302224420e6c6ab702f4e432c8a9d26ae82a9e02958891d2c2cc30a1cb082421292910540704003180a020f086189120f863a384005625431346267c4b6886911cb82bfd8b162e78a9d35ad4433c124d861814bb0d3c28e169d2a1d3b580c1d2c6a3a57e858a1538547a14305bba07386b5e83ca1c346c70d1d3674d6d05143070d9d3374ccd01143270c0643e70dfbc06574bed0f142870b9d2c18069d1974a07464d0c1a2d3a4c304bb0366076c0eac0e9f0246076c0e981cb0376054dea68ff016606cc0e2c0d6809901230336064c0c5818b0373030606e605e7419302e605bc0b48065e129887d016b039b02a606c606e6042c0dec068322c605ec095814b0266068604bc0ccc09080ad819d8149012b0323223615132396468c043113c08680090103020606f6038c4ccc0dd817980fb0236046c08a8031014b0246054c099f0356056c0c4c4cc301b30276459300360298544fc1ba807dd153c048002b01ac0cd819b029181a3013c0d280c181a9013b01cc0d581bb0386070f81a580a602880c9d16141e78a8e0d160656c55dc07a8061a1e3a49305c683cb81ede064c044000b016c0bec06980db0289817580eb02edd060c0a0603cc05580b4d47cfd16bc0b0c0b8bce878cdf192f392a367602e5e6fbca85e6abce0cc335e65bcc268175e2578bd7975f1e2e2b545cbf0d20286c34bea55c58b8ad7142f295e6d5e685e4b70122f24fc8e1799d7183e020602580d301a6033c03e0093011603ec059816d8132c4b57c19c604d9e05c60463017605667b55bdee682d5e76bce6bcea78a5e08582571cfd81171caf13bcdc9851af365e6c7018af38af355e69bcd07899e075c6cb8c1719af315e532f315e60bc48f0fa82d378b97979f1cae2358217167ee675c5cb0a07a27b7845f182e2f544e3f062f35ad33cbcd4bcd27497d7adbdbc9c7835f13af362e265e655e6a5c42b093fe275c4cb8857112f312f225e615e43bc847805f102e205e6f5e5f5c3cb87570f2f1e5e3bbc747845bdbcbc727875797179e1f012c12b04af2daf1b5e36bc40f0aae145c36b86d7075e502f195e31bc6078bdf072e1d5c24bcbebc99f5e595e4eafa61793b3f0c2f262e175e56513abc43b443bc439621d221de21ca21c510e3105220ac4384438c413886f8854a21b621b221b621c710d510d310d118e88866802f10cd10cb10c910c710c714a14430c432c81f84604432481f885e846f442eca27f10b910b710b510b31047c064885222162d02f18aa641b442ac42a4429c4294426c23462142213e21b211d7886ac434e24d74426c4244239ee9224426c42544336219510931091109918c78846844a3402c421c238a69334422c4306d873844abe93a4421c4204420fc4a83d16f4430e217f107b7893d883c883b883a8851ce247a117310bb885c441c4411885bd88c788368830802b10691067106f103fe46841265e02931061106f105b105518bf82466119dc4269149c4d240882c8857449babca7587cb0ed71c571d2e3a5c73b8e4b852e042810b8ed9c57502d71b2e2a971bae365c71da0707c35eb8d670a9e14ac305c7cbb8d07099c07586cb0c27e32a635e9959f80cafe127180ad7944b0c77c3550267c2f5c635840b08afa1df6895d10a03ee007659d5b19263b5c60a4e0b4d0b0e66c29760a5603502fa044d43a158c1b07ac161f8bef09b4f060e81978063f0d278b7ae8d67d1545d18ae8ab7e07ca070f4083a8b966a2ce809e81a7a8646791093cd54339f9850cc28669b29c59c625231ab9856cc2b2616536a8e60ae9969e66d3a319b9868e699c9c45c629a9965a612338989c424338f9846cc22e69829661231c3cc21a610338809c40433bfcc1fa60fb387c9c3dc61ead030b812936962992c7895a371275c0ca7aae25db81a87c29f70367ef3263c0947c28df0229c0817e35c3c06980eaea5bd70a7eec2b1785337d168fa8e9ed3725a8e8ea353d06cb4137d45abd154741a0da7d16813f4196d4557d12568327a8c2ed3627418fd45bb69299a8bdea2d3f80b6d061644936923bc8bd7e128f0389c8e06d35f7a87d6a1a33a87e6d235f89886ea18fa85d6d24f9da59dbaa9991a4bb3d057dac6557c07dbc173b80ea683e760392c07a78051c071301c7c027e83a9d80d6e83d9e038bc06abe169d8047c069bc165f00bdc86a36027980ddfb80946d32df012b389c5b0118c0407c13f4029390b3b91e05ad08a9e4ca02b02e4badc62f3b51721351981a84a932213888840f627538a888856cb45524668923405051288929c141d417932050a11918fd899457a72d48403454750aa54242954a8843005ca09541c40c698008a2d21454a132752a43449c04faccc224981d224a9e8095151110917c490582a244c8142a4c251110a464450aad4a4294527a8d024848f91d9222753a84c216ae2640a1507244d41818a13271548ec8827549c143d091233629154288a82a442d192088cb12290a02840853ac6c6142026c62746c4a6503405161b628558139c50a952c4130b628f5028010a0953a838218252a5168dd084168b0151058a09484745533840854885a22817c4c0ec93a2292540419a8282132a56a0a0605444947444a54ad15191d8977d028528a908e90805273e623f2c521194242847544c4842a10951094450aad426559e4c697294a482980f42623bf888e920a589132847549290a098008098179e580e7b74c209ae589745422a92022486834e4c044b02152a47554e68402c16824d2a42223aa202a54a558184a2221a8fd896452a4a42a10a1294273c6237ac09484d4c2063366cd15115a2a223282818151d11219160a58a90180836694ad1092458a9328bd5b048454954ac10114da1d213a361551881680624294553a63431c1095195138e4c207a3205052a234c81f281a429549c10199df0046aa990f02326c322254d29b25214c3963005ca93294555888a929a3c81f2644a132743622f6cd1132a4e80c45cd8232a24201521b5b0484928544942810a00625a4e400109a98905b1a76d92d4e409d1142a509e14252141413a2aaa7241cc69918a8ea838215221098a142823349102a58995261f6b5aa42a2850392a81a88218d3221d514942a2f24193a32621c86258960350aad4a3a22847542800c21863618b8a502842e101223c292aa18426220820766591a2382932c1c91d8b9434a5e8a8c88429507ec78e295048e0d9a9639d40419a02e5282985222215a454a9d284e8a8e889142828d0a238a12285d6b343c79e40d424a9c9932649450d78edc8e90014294da02441990225b683828de2848a9411888a925070529442116c278e3da29280f088c8d44549bda9a16e0ddc9bcd56b9e63eb8ce88ce08aec2dddc0bf6830f2eb8e082edd93ddb9d298b9472cb64324ec6352793c978642d6b59b74cc63d378977d3b94dd927b73b6df60532674f20ecdc4e277bfbf41ed2f990aee91c323bdadd5120dd75d7b3ebeef6a0ebae3ba631a6cc3158ac3b6ef63ee68ebbafa3ce48a8777bac2de0e9ec94b9999db915d0fd3177339ddc3dbbee8ecebaa753daed40e89cb3fbeb9e75773727008803696fca5dcff63c9fdc3e79e7a43420d5299db3a3d3bd698b7addec4d676e016d6db753a6ededee7553ea9ee7b5d7cc9445a70df2d7d3fdeb6e6ecaaceeb00bd0ce3dc4dc3ee9ec98b2783665756790813b0f75ddedb30fd0ddbde2e7eddd75bbb7e7b5cf288d75cf98539f94763de9a4dc74b277a228768b0e00f60ebaa9d73dda4340b3fb74da4d05708023cdeaa6ed737b520ebabd2975da9e41cfce087b0f696f033477eeeecd2ad29e0bfc84dcddbb830ae0ed9ed7ed9f0040da1b78039993bd9b7a1a34f56ecf6bee2e83766fcfbb31d8769f13a87b363705634ddbbd69d74d0096730f71eaed3d3bdadcf5d7dd9eb75316f5ba0740c487cc398774dd755e8bee3ddbdb7d7a37dbbdbd7dd2ee76a6de5e536f01f8f7b900faf36ea7de6c4abd76ef0e40777bd7797bfb4f33479d9d76bb47299deeeededd4dbd29b5a0bbb9d9bd97e9472933bbfb36d31f4d9ba917c4a7f36ce6aebb59ccb42933ab6794d20b0030a97b8cb929756fdaddcdcc4e9dd9a3dc5dd77594b67777d365a794d7bbbdbbbb29d318a594bbeb7cb6d3664a29654a99296d4abba3dd9c31f6568bd9a9cf6effbc9bb9ddbdbde6c9cdecd3759e6701fbb01072dc655ee65f6e76676620ebeefe412a708e529ed37dce1890d9dedcccbeddf6ec582c168b75ccf3626f6261384f95139a2421159d0025e939158aa210398122650414aacc8a90884ea0f2644a9323b2f5048a9426568890a0082932a1a76502129429504898c54c7092d464840b44a4594f095090469e2424a228475438905434c5e7c70c4ca1e8c91428efe349d151d193232a45508e9242129250204a9a02e5a80a100c84c836832224a4a2a32a27507142745464858a93a223a226484f9c1411611025a8001954715224d4e302f0e775c1eb8914282638214a92824213128a9e0c298a42949442d1940a786c062a9000e5a8c88a901552121294148a7a62275071328be2a4c90852a450390a40eca84912d205494e9a204d697294449404e584115040fad97932a50951d151932a2750d9e004284953503822728204e5049d2645473f6025f8786d06294021a1e8a80a093e995254a54a931eb1042a527c3c29b2c095d4e4a8684a51094406c0a00005c8e00889884a5215158e9c58d0925264a5480a510a4d4e202a610a94124aa0222548500132789694264ea848219a02a589094e4820814a002a088f9a144971c2032e0645483eb8cd20890a9523a2a2129a1c514942fa5124030c8832288ad244ca08bfda208828052a1c48222a610a1413909a98008416151d91d063654a917b8b01d1142a50908e8aac109d40744425a989132a52a434214a4aa1a8022b538a3cb6adc21195138a4ee0ac4c2972205713bdb55a0832d9dac7714c96a6c764bd25ca646b4bbdb454ab754b4b4bb5dac7649796bca5da5caad5b6b6b4b4b4346b94c92ed5ba5ac7a4c6351793add56abce44cb6c6d59cc9122f93255eaa753359e2dad29233a9716d97498d9796966a93c912d796969cc9122f3193255e5a6a6752e3a565b24bb566b2cda4c64bcc6497966ab5c9a4c635ca6489b93699ec36931ad76a3567a26426c1bbcb272035d95fcea9317c6329d1c66f7b12c37008ae9ec94946fb9e897b2791bdac11268db6aa522f4ba4bf3f1c690e8b413f38d22e8b41ff6aa45c1683fe6fa4382c06fddd4845b018d02f770acaab6c94647aeab96131e8b70104585cf49d9e466bf0a1712416afaaa2715f7294f7654741794c4f331a9353111a956131e88f6146a330c868f4cb1ed35555ddf1851753e0103549a6a70d684cde3b15a1d12c8b41bf53487b617ee954dc46172428c34b1b12d0764ced2e8b1bba3093c50a36684beb482c5d55559547323901d1a8d38c469b16837e26a7a751a6c5a01f8babaaaaaa8ad67d39a96a3fb5b95047eefef07332192577a96d92bbd4563bc80ee11f6a4ad6ba7ba27a180248c63feb2027a6dadf33a4837a67c79d0e32617f559bfc6a19320db4aed4172130c0b3e4026a757f8521f69716a6825d2d7ea53a59b26d4eff1dcb5add5f23aefefbfdd54786f29ffd65951bd4dd7daf855abffb3b1de4fdbeac67dfa783c2df9f75d0f7fb4045beb156bdb1fb70ac553a965c7996d0ef9e7e572759cef7d6b8b428dd7705b784f9b48ada75c6f0a676a50f82349c636b646abdd32e06f39936e473f4e746faad7169200d97455be3d296457fa8439e25e0af1efcd577fd407090052e0159207defc16f2cb9e7097febf773e409490fbcfffe23eb9cda358c214ef530caeac10767b81ab9f746aeb3e4cabdb33c08fffb65290949ff8f34e2aaef1d84ae2119a55cfd7caecb5ac2f523cbae51e623d52ab7842b4896f339f25b719d5c9bc5a349ecbea4efef757e1deab223799670f329c9339f67924be873a4124aee12f19f242f115fe2daaab92b1603ee186af8ee5f4abfc79279b991873ed7ee2fa8feddf7489f9b6baeb98ec7fde6bc6d5e5a413af683cc2c88fd4c3da433a43cf6d37eef0729cb837dc3cd5a0d54f982ea64ad631f01e86329f2979303b1f4a85314d3fa7be864fd50fbc8b5ca07aaa8e1d3ef11896b7fb33ed8fa9151e85876a5cfe3112f11fa495e35daaa0a7eb33c087ff5ab5fd6075b411205594d92552657fd31991f9ea9e17f0f82145c5692d57f3d96b5dadffb376bc954f27df8439da47bf07904ff1bc377d612efbd67729708ff508763d9242f11feefc1b16c2b5e35f23bca24aefdfc358e5b0d06885262aaa8f3b9dfca25887bfb0053e5be0ba1023290719a3b0ff7ef33636202d48dd2bc2e4ea5433aa8e4bee3ba595decba2c2574bdf70fc20a30e920ba6d18d041736f32c4a9f43768a149a313a8d249db54ba6654ea55a9ddf77e1257fbb9fa74103d6a662d21aadd7bddf776e4ee9025c18fc5809a13dc8ae3c692bbefd1eb466e2c6b958b52724abaee3bb25ca1f66fe5ba47efeeeef76fd612e6c825fc2deba0eee9f780ddb837195ea8dc48f94aedc69512734604773a887bfa9395c4fb7285aacadf2c25fc1c59f695ea3db86dabdd73a3d78d25f7fb43ce5da9dc3ed943035c6612e7af087293d862eade6aa0a2b697bab71986a8b3bab70fbc51928485aa96b5335c2d51f8001475dfc54da2aba97b0b810d95d9d4bddd90451d52f766031dcc4ab2b262aa1a31a9fb4956543954a3a5562d93c80843e6a5964960bc8064d432c90532682d91be4042004b48d512a98c54f56cb6adaafb75bf41001a71ed2eb63ad6b18e15ecb047da64c9752f20ee8d8739957a51f9411a32ab01fe932c6f39f450fbe7f3f3c8b3847a51fb7d8ce2484a2b31fef9a08f465b555505c258e953b2ac8d56623d78f0b5a91795c7a45ef2b57fa87d8cd23f1fecb1e4245c558db88a923c4af8fd93f03b9904d6ed59b9b72e5135a92b25cb7e2b5cfd6bd5c7eae3587bdcca631258f76b94bd694e651759fb993e7f497fbb7716036a4e4c3a72d73116716f2ec4a9de779f845bbd3796ab8ff2bdf7f3bbef07e9183ed81a795abfb5acd5d67763492969e4aa5642d7c8d37aaee28333e4017f56afe0d3b12bf8434d59495aef1ac5efc6d6d3d143d7382b38c36e5c1454d7e815a461376e1dd535760567f3d26e722d23aeaae287df8d6b47752de59e2dd67b6585ffa686237d7174fd90bb46ba51baf7be195073c2fb6525e1f7bc7d0ff83b6629e9dee351e2357caf2159d6ced86c958ee083cc621644f05b23f8572ad8616b041ff4362a384fb071549086ad11a9ab56ba9670c415fcc942c25744f0c1c9f260df54f0c1a5d313d2029f8ecbc6c6426d8d40155c8de5ac1f48b27e97c88af5217dafdf875fb8fa1e1c8f4216fda166d10f3f90feeaa3e4ee90ef29b3965f93147be64fb2b803031c419c756f2e4c557ed0358248ebde5c30a3f22f6b5748f7e08e6a9e18036456a7a0ca7ad6fdcb42b244baeeeebc25d23d8f29a420cef7ef6af7df1ad9da7df7de1ae97e7dba33c0524cb2d5f5e08e4b55653ddb71dfa8bb44967f47aecc5a22ae1fea1dc325e2fa1e8fc4d6b33e7cf08fc4ee8f44ee69e95597ebc335d2ef7ad61ad9eafa768551737dcfe7e65caace95512769e45555de373f728a4796de4bf122a82a477a5f3ac9efbd8ff397b564af90a17ae4170a2e556e2cb9290760ba552e85ea53f60aa8ca7dd9813a39520a4c1304f042cd74e185da53f7d6421b15ec901b5d5555555c68dd171b8f308ac092866d3e7fb10181c1871aa28e2c8812d3c6965465cda85f6c04f0428dcdca01986e2974a072ff85853583d691b63583b6a4d2fed2941c74f8e2ca1c9b8d46491b93cdc6ef6459a5faf78333a4e3366b5913788d11c60f7760a9aaa2ed4ef712d778896b4db935604355ff1e332046e1fe825a7224bfd0b3da0ff20b456be408a87ed9afad099e7f979c24931311dafc271d1abf3fbfd0413bd5ff070f2c6229a5f20b3df3073a2304a6e901b1e417aa7fb967547fa57dd17f50c045092f4a8c99b2d968f39dc6a36d0a11030f2cec8086c6e44484c6ffa44363726a1afd2704d0f8e7f884009a521811f89542f01f7f96aafef395c288407f924a43fee34f49a53022cc6752e9fdc77f9240eb3fa557cbbdddf8cb95da146491e20b1b2408628c2c7830894bab81a00a3439e490c68d1170d096b65f0289f0361b8d5fe8a00b186aa96bec33cae71c975fcc5a7e751ea5efefd1ef28e5e6c848ba67f49d459febde9ee4a8b29ed19f2357d0c3f91c9d5c67f717f3f7bd35427f1fa45ecaaa3fbbf7febd73efdcfb7fdc7b9cbf73ef2f7307b9073b9ce3568a048ea1eee79eb9e799cfb52bcf4401f7b4e3e638792e916d369cd8011a89cd7281cb3301d9681f5c23ccead0c5b0833605bb46b8dfa76b841b37e8197d5aa302f58cfeb27c5946debbd0eae9cf5c087cfa3d1d347be63dfd226be49788f7f4c151ec1fef57a3d73f5e0fcf8564fde33d7d59077d4f7faba8e506957e8f35c2953ee7bdd7bd3dc1e1c6f7debf6e1a23e0d49e9e79ccf29ea77baf5d793ad288ab6af77b7b62a32e1639d450653df39e1bf923b7675e37d225b244f6879a1bb92e758db61701720f72235710641692d5873fbf1b59bf6b047cfa2038d66a19761fa5fbfd702cbbbab72733eafc6521d92542bf77ec678ddd7f23d77ecf7bd6e8b19634128f2cc3f7962cb9ee830f76188efb2bd0f7c11fea1786a86003c0df06b07ec9d2abfbcc324a8189852bb66a5472a00e3baa2ad24a81a9a1851a3e52ad86fb2b70c7adacb14ca1820f72d8ac252cb24ca172a13726019f825de88ded85cdf220244baee1ef732c0f567597c890874896e45102fe3ef84b4659fd7eb33c58fd2af12a4846f1be5763e93d2fe9f798b5d51bb7765be938c71d27c8730d32066e06227fbfd841a5aca783bcf66f3753f142d10270a7b48e00ebde9cc054590fdb6aef06c4bd69a9a1b2adee832de4e18e1910a3f86f2dd9d6756f717aa85cf99905025fa94b966c9bbfa39559f7e7b8c455f77d2cd748399f47c9aa4ed2c855f7d78b0a54cbadaaa57fff908f33dc9159466f245627d9d66dc43214001b1376e440f4e7ddf57ce411c42982cbafb067bf13420795ff0257cbdda2ce9fef795b8a15dc0c44fae5baa9dc17e1824aef830e2a45133a88fb231de495fb0a74d0de9e86a8dc67a08526cdd7cdb2a9dc4e2d8b546efe50cba42af73d1cc771bf3e1c1965a93a0ee80ffae852d27de7dff9b8b5591ff7edbd7fef3de7ee711fd879efa315ae9ef71d6f7bcbfd7dabf791dc7b63f9fd376e5dd6f77da39152f537eaf107410fbb6bb5fb410fbdfe3ed2eb72f6ec7b6679c0357c1ffd237ddcba2c24e15b11ab9469bb52cbef8dba3957aaaa158ff5f3e91865f5f4bb77b214cbb22cbf69e431b170a51e59e12af756ba8a54ab1c39ff2b93bab67e7e8b34e23975c51a93baae3e1c8dbcae481e257cabf4270b09fd39fa0fb93796deaf9e8e56bad207bbbf5ffd6afcc8d248a9d29f3fd43e96ddf34796b5faf1b2907c4adee8cd3bc4dffb213752aa1dbfe7b544aa55fe6f34f2dabd6f5d8d5be768e4957eb394cc4ac928ddf7376bc9acdd374b494746e177d248a9962ed6feb19f5f3679fcf9fd7be4017de40799f5c150dd1d5276df21b33ce8efde95f47748ba37e2aaea1d258555aaf7cb52c2a47aef6d926e2cbd8fe2df3de88de491d152d96c35095657ef9e14d6d57bbf2c10aa78e3915107b597887f1257bdaefedf78e47d125757bfac2544f5fba15e8d4641eaf7de68d441e525e26fc455f5f38fdc1de2cdf280be3fb39078dec8dc5872dda763d9cfce4ac21e709da4e7a3d8b3fd5ac82d2f3040357981aa89c47e10e49feff441da4f03f941d7d610a87efb6b84c3f1970850dd55c23d3fc823f7dc50b3e7c1f72eaee0b2902cbfc49eadfe7bef998584c9d287fa1be76a04b9d10ad792ebf73c5ae1fa7dcf8d5b67b37b8b4923af3c1e78e567f297c83e576efcc828de833f59465e03bc0743d0b57afaf3bf679606ba5ff5d4fd8fdc670ff4c6d2fb6f4596b5ba7a1ebfb15c40cd89ba3b84fffb21e7b1ff0b97b5228dbcfa7fe3821cb6d1ec4622951bc7922b7d90436f2ce9f377230f93465c3972d9d86c5500b5634a069c73cc801865fe05b5ac2b25e6ccae9112a872354ec9aa722047bf9c64b954e7975f03b68cca915fe80ff5ef489f1b2740002fd254d1f6e7582ad559762fa5c6a57a5f2e55ee7739d82540b9372d3fd424ae1e3965cda8465e55553bf28bd2fe92174145a3a4ad54aa1c59ce2fbfea3fe473bca0821cd2717f5917d82ba0683bc70baa2f71adbdb7708aa36b4d8039428c32ea40411266d0d64720ca7ac62ff68cbfab9b860c53e5ea5cf81662f9959fc3cacf452a3fff910ea295ff3b68b1d8c2a5f2fbb410d3f8cb0d2af3af0f3313086e58f31fdbb3f63a6827d82c24935cd1e7c87559fe2180764cd5fd1de5800c87590bd8022e2001447278fe504fd223fd09b880fd7581db41ed0cee07e2b21650ab739235660594b29ed9424c732931676ab95393c881e3e23e8bdbdf218b5bf64759d268a9eeb3c83c30c9a97b6372534bafce17405d2c9880724d9063919f8ee36490457e16298b01b53a9370e56a95bfc7981df4c1c942e22cee87daeb201e8ef4802bf71ce9557e3a725d9fe9cc71800be028fca57ff3c8a3056672d703701920eead294ea5756f4d35d47dad0622e86291a3ce2c06d46a7f935ecffcfd27e592f4fb0ff576108f07fdfece3dffeca0927e14fff9dc6f07f973ef7550578e5c31ac43cd4380fb8108bab6837afede9a9e1850abfc43cda4d7b3f9f3415712d1bfdf68a9ce9fcf488cb84e1e81690cd396cd406c7f777738d5dddda560618365080c88fc5cb70bb0bf2c703310f7c602d577507f4f5907f5fb74d0ac7d63e18c90d3662d87d4eea9fd0b44e56b3f8f1c88a5376bbfe7cd0eea77026e5d1f90f9cbb03633c8a3d7708d1cf154b512b6660da9aa5157adc05861cbb52c25d366abbc6bc4eba092ab7f1131c9243db0431ebb86b76a8563ad9123b655a30e2a7f3fb340106d953fb455de516c32dcdbddfd4159076d287690bb73f77bb5499e25fdf3034c1330228b1fc0d862030c5034daaa7407192aa59552186894763f1fec46eef93bee4809845147549833ba0c1187c6aadcad4ce57ea783b8ca497d1953b9ef69a1bd71efd3424be3c8520a50a564c4ad4ce39d61dd356ae61085e826a54288a0522d344abbd2ee272976a36ca7fb65d185281542864a5da0514a39723ec88d1ec7514a85d052a9138d52ca51d69c99859b7568293e35a9ab929e326f9821c56756fee9487e0b37a8eadedc60aa19d4bdb581456529dea283fc694755ea4d92d388db33affbe6f739e991e21cb971e703e27c70431fdb7ca954bf8f2cfd3956128edc79d185f8e63ff4f906254ecaa667b46794fa18569662362d24da6c36261afdd9415f877a8e61cfa85319c472a92a95aae5574a9f097dd241f3e99bc01c70a5cf2d887b6bc38a3abfa3787601ae4f48bfbf1c521ea9bb6cea76421e6d1fdc13c495da22555f75a56e8053b9b0409bbfd3429336e977e4d2d1a3cf3f853e145a5a29abf3f625873a6d369b0d0b6dd6499245885b5d68d2f89714c79dfee1e731628fba6c42c0a6cebab720e4d452ac4f1d0a14fd9dfe59ecdff5f6a7c94e9c8057e7fcfd2f1efd28efcc1f6c5603dc6bbcdd5afd507f53ec209eef8f78fe4e075192e7f3f95fbafef9fccd399f8eb2ee8e74894c6138ff2eec9f49abd8415ce7f306d52ac755eee79cdf8d94e4f1e74aeb5cea9abb4f118a3b42dc2f89619a8584922bf677cfe730a2afcf5ce25a37f7003a3f8f931e74f5af16d4fd220a68216f6a874aaa04aacb8606307569e58c75a3c18a5a1e596fae5e077122c8dbdd6292c1882bd548a099b345dddb1c367500756f736aa82bb57aefc1df0fd75f5e38e3c6245bb94a11a7963dd5dfaba8fece80affa4d8aa7eaefd3424df36fc8381bbf67ee45f13eecd97c6dcfb85f7df7e5d7d94ecffc66c714cb0399d500eebd1559f67b3d738e8cd2cf4afa990c7be6a4cc1bad74cf0ef2462bdd00aeaa4d166102f83bab9310bb16610edec78235c261c76a805755f5cebafa772c25b3964b957ec70261567eaf7aa49157267989f437e5b8bbf5f12e111eef8f783cd288996e756f4c55709df47d6b29567f4f6869fe3b1c9da428555748ad5be21a7b67f397d7b3213ddbd96ba7673cddefad8833953e4f477ad0b57bee8b1ce9a06553439cba6f42520bf9cd66b35da1ed2ba083968d0d50757ff7cbdda24890c8b472dd304ddb965aee94105348c5c68632b5dc3821bc79ead9566e0ce18dad675be918c21b26a00efa0d3a280ce10d54cfb6f2b83b9b75923e3ddb2ffdef424d8a3d40883ab514eb0661d3a9fbebb3d41d0aa422d3de987a4c98bd0561ab61934bf88eca248311877a7dd601ee12e25d105c733d0b70fe9453975cd65c22fde30f1544b0e71a59236b58c822f213e03a11f70604552dbd727e79a17abfb7371470b907b19455af3298382a7f4f0b31ed870089cda3499cdfb32ffefce1b3f3cf497e797a9a9353e43ad4ebc3ce664aaf4ed24b707d457e9152a7200dfb9dc5cfac494ee7efdfd6c14946a3e608364c9c5163c49b065ddffd9c73ce39e7dc92eb8c32dffd916a1ef84f90234baf72cf63b7463a6e8d70748d505f23de6ba4798df012e15e4957bf5f92e38cbaba22a3704fe923d53ca0cfb1377a1b25ae1e84d5afbc0fa42c241fb922ff64d0594abc67b2f43eca7cf7bc310ac7acf9cbe2265704b83eec452cc55a8a3d1d54368bf33d17dafd99648b4c61f89d9e164603e0ba50fbc82342933ef288e0942479e6f3438069eb3fe4039af643bd0110f47e47af234baf76ef7defaff6793f0acfa0e5c67df0992cc119347d9b83e6ef5d667e8edcedbab2db25bf1b3d312cf93beebffb28dd77d7751d8fccbf23029aebf063cf06703768bfecf7f9b3c9b27f72d09cde1c34f773f7ae91fd12ec1101e2dc6e676f010499bbdde7a434dc910b77ec584858c60de919c765a0faef2b6d524f95e2c3893de3b807c1b2c86c7f975cb2f4a723c7f58cdbe7c81e66f0f7e94869914ab947f23bb3f411bd9e85fb933a5932f9ba5feed41d93685d5a7ea50fce9e9397b676896ccf569c3da33ddba72473e00695b9b03afdbea494d2f9719379ee1229812aff8b3fdf1bbfa125e2fd1ccb6553bd234540b2f4a99dafbcbf2513773a087c101cad04a948b5ea24cf92f0fdc37732892bf8cb52e21f92e57cf70749771004417707e75c75d3e774109c0e82733a08ce39bfba5cfeb95cd3eb996bcee90241100441d7e7f277b9bc9ff980ec75d0babefbd5d8cd300cc310fcef2708ce39c13927084e779f200802d5d5aa485d8120e8ee5357bf9adf9c737eee3b3d5bcd39e79c73ce5529ab2b8f9584a3737605b990861ccb0307c7adbb44e63be8eeeeeeee9fbbbbfbe7eeeefe7deeeeeedff791abffc632acab497a3d5bfdfcd6064b64e51f08822008ae7ef543ee5ac956a3f75e0779dfcf3b3fd2eb99d7fa3cef875c1c4b29cba6fa7b3dde98c4fbd677636b8321b5fbd65816a9dd83cdeeeed33d04e79c20382708ce39e704bfb1a7b7268b861cd8adbceff3561dc88594355bee6a915fe1b65821b8fabcced502b244baa71c0d7d66574b77f7efc2652561bdeb7d74916108fe50230193ba67d0f4aecc5ae2de4193e4c02fe79c13dc5bf51e7fd758fa546f91bf44fce77ff3fbe67ff3a37cdff7cd2fbfeffbbeeffbbeeffb565f7edff7ade6fcbed597dff77dab39bf6ff5e5f77ddf6a4e678da5149f3adf9f6321993f673e721732177167b5fbef59d73e29d7f17aadee877aba7bcfc077ffbe7477ffbecffdfbd2ddfdfbbeefbf0f24cbb0cee7654dffeffbbeeffbbeeffbbeeffbbeeffbbeeffbbeeffbbeeffbbeeffbbe3967f59fb2da7d7f0fcee71e74cfeb0c9ade5e55d51c845fce19e588eb5655855fce39c9ed59522fe9a0fa90afc632c9abffd77dff3776df492952fdbbae554baf32ab4307e78a7e5ce87550e93fe99773fa4fff28937110f74bd1c97ef66af55f8e4e6fdeae55a65067cfd89b7506f997b36eddf7718598e6e213a8e0dd657e134a9573f99985c488abaa0f5692b1593bfe4ecf9648bf8f29887bfb614eddf1b146b6f2f7cbd608abeeed8738f5fd0b9eaafdecbf72ca95aaedcbe48e467be32f396a76abfd2547fdfc72e5942b35c972e66439ab3cf5c298da5120105b2fe7bf2f57eafbd697b35a761b1759ae9c5a3a9c0935a75c4889778590ec28ff693b46b0e5152596134ceddff03ba002e798da60e088647719391524fb466d154c2d59ce4a55b685cf605e5f3eec4b99ce97e2ceafffd0a7daddcf7244db0a6c7b7a7a828282f29f9ffefedeb2c57f7e7a05a63fd86ad96dbc6e233a950b29614113bfdfe5c4623c6c3c787cff7c72a11eaf24fbfe59fff7cbc87ed1859abcaaaa8a8605fca67ecf85e2d04412889fc1c478fc920e4d7cf163248379914db11eafd7bfbeff6064534cd6835c01067bd8c7c8f51fd7bb7e5d48876ceaf158c26f6ac2027e93d29306b4d8cbc81574745ee77b90bb4336ed3c9690f54b6b6ac202fed29a78902b88e40a61f8e1ef90f45923cf207624eb75469e1a19ce6b64aa706437234b8d48b54a83c8dfcf605cc8bba764e95106d322cb592d1dcef7b34687b344fad906b1645b499fd8a685191d4470c61b3cb4718a23470b6c54d1dcaf2863822eb63998e09ef61c71fc60cb620382b6fee37db76a346171c34509d0d0d67f56ff3d7d72a110846a63c7992d52516edc70a19e02c9151ace1a3768dd43995a769bda6efa1d8e0b29310dc87ffa5764e97d64e97964297664297264299391e53b597e2d1d4e05aacdfd63ea0a59fa6abed4b56fbee674546229fb5ace8cf00ce211fdeff7bdd67bd73db902eb9556e8c29fbf2e14922b78aee75f176a0a7906d1886bd786d614bed293063417b9c20a8baf10829c1c4e8e0bb1c826168be4e4f88f7f48368521b9fe033eb7297f4536ad5624df982c651ed9e43d16ee9b3c72fd673e97e1e4746453f7583872052c5c450b337f694d1d375976b619c4a3effb1904e2de7c786a306dc0eccd87a7fa71520c06cc920e8df3fe3d4e26f344b1960cc60e29da0aeb3f1d50d1c0cc20ceef391acdfeb26bc334884c835876519c9cb28b72c360ba965d9bae8d0b3118fff1f73c5194c96ad9b5f9fad5d645756dbaa835a3969c14278793caa0969c8d03c3d9e818ea868ed9a9e59ca24f736a55cb0935cb4c285a4bbf391cdfe2b7a6f22d6da83acad6064c47c90153b21c20b67db96e804aaf3a8340e41a44aefd2583a9de4d5ef29a732e2a707d4a87aa4a587c5d68aee6fbcd466dfb3f43076fef914a6ebbb5cd452a79dd2bf9cf57f23e24959aaac75401c2e2e2f74a2d07c595b35ec943b1a5941a4a89a59496a1a2c05773a41213a6fa75fd2d74dbcd26de42a08faa1b33452ad698efbb9e3b25fed2c02f3b8af54bf37e5b5faee822bf457a52ac909481a4d8501f297aa44c6a4987d6911e8d239736c9f59f76a8ba42965c35ee9515e0fa944c25e4fdbee742ddef8b2ec4fdbecc85e8efbf0b4d56732316a7e3cf118b77a312167f6f54eaf14b3ab4ee67f74adc3b318d7b25a8497fbe92f74e4cf3e8b7f49d9846fd57b1a9d53b316df54a315289c98945ebe1cff4d4012df64e4c8bbd520f7f1ea413d3623b24dbfcc75fc71f463a316d452a01f98fff8bace23ffe1fa9c4c47ffc45d28969d4df452af1cd7ffc5ba413d33c5249f41f7f16c951fee3dff987a413d338122419ca7fa8d484e23891467d5ff26d4a71ff3bf5dd2fcdf3d5973cb522977468f43f72498736df56ddfba579ddc88da2fff0d351e63ffc737cff61aaba4296766adc9d14e88300342c3e358360f1393ffac853d8b3479e7680ec91a79e0af6c8934fa793010d4bdbfa9d78678f3c75b13df2e4e2b1479e7af4d8234f41647be4e9029a934adc3f6910ee11a62722342c2ec7e6c4b1f6c853b7f6c8d3cab5479e60e21e79faf1da234f246c8f3c0580d6a412fd270db83dc284a5a33d01d1fa9dbcdb234f94e6479e58df1e798aadf6c813109a1f79b280e6a492ff9306bc479ebcde234fa2ef9127d9dc234f4ffbf7778f34a9347f4987d675cd711d29a394234527959e34a0f96371cf7ff89f34a029e9b893eb3ffc4b3ab4270d684dbefff0ef2f713c6fa06b89f0bbd6c83ec7c0f529e9ad6e5d23fe5b9f3ea8da5fbe84d67f4abaa5f6973eea3eaf105d9e41e41f6affea248f46fc3c83e84154eddf2552fa73a54c9c41d384134b74739c86d0c2f0d3efa7479041220925ca9859fdd30644881953841161f648379f87bf9ffeb04798b0b8684f40b4ee9dbeec91a709668f3c8540ec91a79d20f6c8538f107be4c98736bf9f0eb1479e86d026a9f4b401ad7b1efe7eaac31e79f276d8234f220f7be449d6c31e797a1ff6c8d38cd67d3f8dda231da9c4c36404a68d56f0ad571a53fb9f7668dc3f6d40a39fa503da8a54cad201cd23956a43a8c94253fa2c1dd026a9a442d3124f454c41a68aa694a5035a472a2da1c185045bc0b8a181463d1ae4e6c97ec65ef64a31ef79b0d4bf4e8b53c877df2b8511817c21af243eb9543d2fce9ff2f13caf34be8f57b23554f7f9bc053d80ec7c0fb6b17ee7c67aa5a71d5af7af9deaa81fbfb2d57ea8da16904adffb9021082195864852a98a287e0fa9c43ca4d2fb20957c245b462a01c562cf835462299bfff43f29c27cbc8b545affe90f42f28d2b209d86d05a0fc47db9372aae0584e77b74fe93bd546dd7c3fce67aa5a8dadfea313c9e838a62a81e52e97b1e92a17a904a6cdb21959a452a390da1b1fe452a3115938e9ab61fa443ad14dba88f4fd6e365e1d39d570a2302f8e12b49d55e3d78abfdfdaaa95eff458d6919a944bf07d93aa4524bc14825bfb948258e6a914a3d86239526140fd2a318ca8bd11d52298c08b0d77925ee959e36a0b9bca752b55f298c08adf7dc754825ee61a487a49283a4d2bcf94fff8a546aaa8f549a512fd2c7b4d46a81668edb14395289c929a4b948a53022703f5f694ed5fea70d689354e2c839e53fad34a5fca7df2395e618ffe96f91ee531c1d4fc8710512545c91e22d65f88086175f3a16b9d4519029628611ccc18136c949e53f1d22d7dde9cfdfe4c8f5189e10b8dfbafa4826a72234ee9f3cdaea9b5b91df73a3e755a9f43bfa1a54ca5ab268544a7ee199afb4379a0adcabe0fd0c9ade3f7dbf7477e7faf379281982f79384c0d23c72fd877a1d34ce25b2ee74376877568a7577dd7da7ba4e8d425b8c58ca6a779a2b9e6af78ad0369af7e0b228f9e4d1bcefe765e62f1ec979fe9342a5dfbd7b142b5efd756ac75a724175f28b0adccfa0e9ed5555cd81ff1e71dda4ae5fb85fd6043aa071a4e73f4b9999bb705788c5eace0beed75d12a446692228fd1d2965c641e4f7f7f6d747a0397dc8e0deee528093729df7799fc7507ca3eaa8969a94ebbcceeba0f846d55194eb38a0ba53507ca39a94a3403bc55037fa13a8ee14434d9f3d963bd5df255087e1afc5a3a444aa2dd5b37d6e66eed16d4b64bfe6b1078538bff41e228ab710623fb390d437535366bc894305e7cdd494196f98bbdbdde79c94bacf3929a51cc7759d373dcf9b3d6f8694721cd7759de779dfc7855de779de0766b55a8120977086a13787a1177edf6ab502c1300c59ac2a5ab3d5f2e6566b15826018862c16abd56ab95c61c862b55a2d5712ae6544507cbd601306f366186c8e9c2aa4a4b6a8e2cd949b2aa4a4b6a8a20d15a5ccddedee734e4ab9d69428be11e3d4fe1755ed7fc179bda9fd30186caaf6eb9851fb75deeccc9d1d6fde69373deb67ee6e779f73522a86af170c06d3d1d1d9d9d989c1421d9d9d9d9d582cc683078f1e3d645326f366d94e188bf1e0c1a3478f1e3299cc870f1e618f1e3299cc870f1f3f7efce0e1e9993d3ddedc230b7df8f8f1e3070f0f4f4f4f0f102015cc0a2af0e60a7ef0803c3d3d3d676a3f905bed075206480f51fb2ba8a08231b53f0899da1fa487f8f9efcddf606aff9c7ea1a1fa694edbdad64c73e4486d51c59b29375548496d51451b1e620c83612e1cc551dc0373e12d54dd736abfbb9c385471d47e1a67e1701fa9a2f6bb6f9b236c8e14a9cddcddee3ee7a4949b1ce7cddc8f234992428408f1f1f1b1c002004c0000c09b01f082c174747476767662b1180f1e3d668f1ededcc36bf128f9aa3f0bf1e76e779f73524a39ae9b5de7cd5d3729e538aeeb3acff3be6f35572b6f5ead3acffbbe6fb55a812018862c9637b3582b100cc390c562b55a2d974b9ca2e8cda2c86ab55c2e97288aafd70b06d3993a3adeaca323be5e30184c47476767672716e33179f0f0661e3c623c78f4e8d1432693f9f0e1e3c70f9ec9c3e3cd3c3c3b3130c683078fd0c71e3dc01ea18f3219280b7d2c45243ec21ff3c70f6ffef1e36bf12859c9bc168f92f208024b5b21c49ddb4fb57fc9b2ddd476280fc010060ba9302360e116c59859fd223db321473e3a57de14b5f3da751fe98d6238935032fc864ce171b26dd35d37a467dc4d5a07349b955f3d8a5aceaa1b51d1210211d40065460e9acb80d40891a65b8834956fdc0d288d0be1cf7cbc54d102e8a50b2dabcff322066b7e9fc7c520c68621b8a8e34c1c59b0f02266066eee9995b7b35b30a408e28b22b06491c40e57544abb94a994d2c9717143b98e762f6cd1c2140d339439630c2bba1051299d1c172a28ae236d2ed077e103f3398e9622e52a159f52ce674e28a0c8a4f1051b60a668b48a4ab984a0523abb97fa41072dcf914f29a594721dc7edbc10cfd17f9f55dd345d4e5059b57ca0971d405eb802d5a85d583bea7de8795e1451a04757544801c30978e022470c5450b1868e25b82b60c4e07dfbad995a4d5126eec8a2b071df0883163038146398d8d2e2cbc41dd994e842bf268cc73f7b9fd913603cefd774113f36536ce0ac0bed157180d0824c9c1e9eb0638a345c7aa06bd6d00003c78db3f7f9f7e9208ff3e9baaec332fb9f89b2f791c2f240ab2a2922c8b0b0a6062d3fea56e14208d6c090055ce394655595e59bc383a353c38613a7060d27aa660ca7a9060c27e7c2090b2735308457a851c20535446851f3c3931a2e2d74756f6a4080c5f351f716c754edeaae59228df944392072830d3ccc30e564831cda86e0073aeeb0810d279a40d326862e8d09906012dd98a28104656e3cc411851aa6d59a25d2c8d2aa0bc5531b3a545001ede4ac7142028d972e28f881c64151b9299ec6542ecd1c2e74b4db69aa1cf7d4aacb868c34d2c4e90774bd93f323403cf170c49b30c89ca1d127d0a0535cd902062e604f3b69a8588df1b49326cd2d4d192d5044cda9acba5298d183a80477fb61f5a501f3a51923d69d29a088f2e2052c5e7037ebc51b1aa0f8098726b69061c51c63c2d8e0d0a4c882051cdad2ca89295a18203070f501d96c362c4d98e938d08938fa679d98d33fdc8da97fb69662e5b87521241ecee0c1cc1526c4d8681d9b1b94b72586efa9d833efbf1f6ab183e8333f01be609ab717983ed8024c1a2dd6f8ba702102aa8919a6b0818c179ac022822075d52cd1436dd59d028da8395a4073822c68da609a4286a9fad59de2033c5031c31a3a344921c30f3dacb9c9b1a38530dae44046d59a1c88d0428d0e337c75d97429a283329ec4274ee044172648620d130e36d0b834250040dd1b9a362d3cc7696c68ce34dd8888e1816812d1f8c0e4713b60991d9a2e4dcda1b1210be528ab96e27b677015a0d1d271d4abf9f006172aae70838a0539b439d15ce9365cd3910f5201901e9e1f3e643d78c47674602fd1d56285e0eaeb383abd2db02be5de37db1b15d03ffc4351c060439d75a380c14cc79d4901482da84d7ee48f331ff6f13939cac6377d80666870423aa0334d972840f24517f24832e6283a951bd098a2044e307183990e66c79d2901a5ff0e347b9f6e54c058f290372500e38a1c62b6a801014edd0401fa22401b9030c6191baeace1a66a8703685141103a9470c30b324eec60c5912b80d4ba487191c10d14972dcce0408a1e1c9c68610bd41024f0c109236c7880be08d0063ff8d064839c26d028c30b0338f1e3005a98a0cc1b5347c0a1a6c8123eb478230b2cd4f0e0421a480821217ba0d9fb38ddba8899b2757923684c0fa02f02b4810567e664991a230933471440081e3d5f3031460b4d738ca963831f6248de88c116841c29139cd140879d0e6650038e1a5b984983870cb8e8ac1a4cf0a0c61d6c98801203831b60b71b9737ce7c60082a258066788930451636cc9c0184181b08700606b18236d2748983091ba4d418c0992717d01701da60061cbc68a2a10c364d5d103983a5b570a0e66ce1821a29b823cd903b584d983063861547a031840d029883860f347b1f236ed8610c239882b8424e00e2a0e004c24891449497399ae0f243b57aa0d9fb8c600e333c90312546185bcce27c2f385e01e678c2e18732b27871e20233ba8da269882f6144712686310030c54d21e306128031630734c2b0e00d0541172d621822ca8720caf8b899ad34669488fa32822fca08d9c281be08d0060b50230616284062872f88205faa1f68f63e42609220420c1a6310e1667c1702e2be14f7c64415b57f7603f58c2cd2b3fe12a86e406ecfa6027ac6eb42352742b0a54c0f2850134314ed6bbf28fbfed9074e0e7d00440e7577f7eff40f2d39d4e44a75be002b28a594524a29e528a51f1985fe9c8f549bffa0c74b1af9e7b190d09ff4a73726d9cad1ca91de12d9f92d111a0547ecdf07a7e0360dc595dae5e83107cbe64a6d3a796011fdfde9733c4abefa7f759285c44ee40a2ed7ea24c2a6231a4893a68a294d1c18dc089226872b6490d5bdcd4146e5eadee6785341dd0fe2862a046abe4823061820b437397c11d5254c1c1c68fc4caef8f5851a1362c858a22a4c1943c8e981c0b7ec05cdefcc94a95df7ed7ddf477a5394766c7690a376dd1263cc04b14366e0f8cfd6eff3c69d3bb8c079620a3352e086d6f1d4ce0c55ed6e66ec8061d2a06cfeb375ce34574c555a578d0c505d1554407113e9766ccc48a3c32293a28d1c8ece9d6214c8ccccee1c7675d99891463d12f756064cede7ea4ad146cef2a87b851a4754d9b21c4fcc325b9ebc882bc8a079622302169c6e65a2b2f8d4bd824c0dd555f78a24b8a8a5f87580579079e256668b57f70a3268d88880853251b4078e794cb2ee258d972ad278e9c2dd7d522f71d2781183e3b8ce6bb33ab30a3fe6ef6325e115cb88ab96b569b84c7171b35c41310d17aa579a2e36d8cb053174b95c2e514ce3650e57374d172e3b218f523fe8104bd3658758b8b3b3b3138b557149a3831021b8fa3c560bf402e437e14e19af62ba3183cb50514a39ae4c1d3a756f66b2981181d7e251e255ffae4e962a542c207fcfd18311f1c96eabb1ee0d093720127384218f3d756f496ca9b29e514a29c7b111c97ca1e779def72511a747dd5b125b8421088260182a1125a4ee2d8939a0f863780c52f7a684d42b14594844517cbdca3cf9a87b53c20d90470958bd3a5922d50f0bd01399261659e2d4adbb735383851312609cbcbab728c048f1500616247a604242072caeba5080e142edea4201061cae235345bd528eebb88e43c28517440eec3a246e68610d9b2628e5288fba6dc48853bfba6de66ca9a5f8778064aa421756756f48dce0faeaae61d34495ad37ef6c2d378163988003081b6d69e5c5165a189e25b4fd9df911368ee37197489b0e08707dc0654dd2ddaf10bb2ec841d5b22bbb4a9f92254f51f7e9fb74d08f4adfbb557a8454a5bf537fd47248e536cc01d77d10b80d4bb14698fbbb494e02ab3c05acd207398ee3768930f71c59721cb7405d0f3e82aeee8d8c9c1ab34364a90a34000c52f06da411e70449ce00a718314bc4df08128f808825e2dff49792526b644aad157592e59c244b2d912b445895620eb258235bbd4d2dd98d1462182c3464849afdd9eabf1c3464c4143bdb5ab2092a2751b796b05ab29beacf6e3a68c888333bdbeacf6f988321236e4b80ad51a112e03a11fd4bef56849b3ae79c9304d09fbf4c49556e53fdc1652cc4bd918153d5c06953cbae3699291fd9566b9bca5ac251383959488c7c2a3353fd61a8d988abda30075b97a510f7f9cb1a4162a6ca5f96c8be11a41f8ca0aadca61a7115ab011c459d3fac11a4f91b054bb146b8cdcf91a598628df8af11278dbcca9305b0e7f334e7ddfb0f29a2800e62afa77affec973e2590d0f7e511d9b6a9dddf8ddb3ffd1c9d4b5e9bcd5c80db7527f82e04e4f73fa8e2425b5ca8e7f7f9e642bc12fa7edf04170ac0ef33940bfdef73191712e2fafd22cec4852af87d7e72a1f0f7798c0b59b0f3fb402ea4f3fb157021d8efb3cd852ef815dfc7cb7e3f04170af2fb29b8108fdfe7281722ff07597af5c7f7d8f3f3b307c0d31108d9c4f3409e1b85f8bc901fbf1b9f6ce200f03fef8d01209b9a7e001e1c2d209b2c18dfe7596305fdf4bd7f8d1790173cf7b38f8d24d924847c0bbec718846c0a40ecbdf731363505f99ebd1531a6fef89d21b40a823c90778d4d41482d02a035b13ec8f3fc8a87d4d2a2fdf7904d3edef540482d315a53f73c2febf99d5fbdced8d4b3f340be05e45bbf436a715a538f77fd37360121b510a135bd1e48eb573fc7a616a9e500b426f083ac482d3db4a6d5f37c0fa96587d6d4f3f3616353cc23b5f8a03579cff34d6af1684d3ddfef0120b530ad69e7817c8cd4c2d19a5a1fe429a905466b8abdeb798c4d3fa4161e5a53cfd319a9c587d6247bd75ff0e1d87401a965456b8271a41617ad29fc200f00524b115a13f73c2f8e4d589a6a340b482d17d09a7ade7f24b5fcd09a78bcebfbf1c9e7b1c987d4d2b426f1813c96a61a4d08a90501b426d707219bbe9dd779d8bf5e7c2d4c0bf224a94588d6f43d0fd9c4f35a9836d29fff63530fd9a485693d1fa482b149e781904d3d3e5ef63d9ec7c75e0bd378c8a6a6a626d70ff98f71e9567d8cb271e63ffb3dc610fc679fc79882ffecc7468ef29ffd9dd1f39f7d9d11c87ff6616305fc67ff35b2cd7ff6c591c1f8cfbe6b14fd67bf3516f19f7dd6c8c47ff6c3919ffc671f1c798cffecaf4699ffec7fe390ffec7ba309fe03e53ffbdcc865fc679f8eef3ffb73fcc07ff67dace23ffb3df216ffb9f9cffe9258e3251fee0131f7bd9d07d08eca6d8e107484e00460a87ce850c7e745083ada6d1b3cb8f9e24a1939aeb091a5d94188500c1b1a78d4bd8921c2bdd0afebc444d5aeebbaf97d5d27a686dabd40ebbaee9b0f7ea3ecfb52ac5fd789b5ebc438d5ae55bbefbaaedbf182068b4c948575d7dc4046a575d76c5133efe8d1a38795267410a24a063b6680d343ec762e1d2d94004d1469b080460e8f3767e840b570926225041acb81f48df839232223ae0a6192745c1693433e9d50f2a3ac79f160c5a8fc48b572fe4e52013d6bb0acd5a19ef5fb0c627fb937aadb026a25ef10fa3e96f357c97cff056192a552e57792c7839d75a8e7ee6c9f2ee19f64947d5f5e294f826a4c2d65959f7ff28d2aaaf290cacf6ac45e0da9fb738d3a7faebed9d3b3397ffeac239f23652f438349464999acbabb3bb390701a91abdbe48a5e9daa0c43c741018610deed8b214a8e343ebc81228d2c5e6244f8c022c288186e44dcd07272d5bd11f1245233ccc1aae988e88965916db3b40b9a4293b6637c1ca746e5c0ca5df1a8473df2bbae631302306ad7bdaceb3a8e2e69d1469a2cde98e14517b4b953e71613549958974d08c87070a2a228d3068c1563b028a153b917a92a770b03070876eadec2bca960dd35437471d59572420a20af99316287315fc881038e2168b0ba33179ab4fdb580b853ca1a4a8831a70a062f52d0b857e58088210b55f5ea4ea1c310e2ec27de15624a0a10f4700226006bb045144e669e8400834948dd9b10652aabee4d0821c49ddd132b8ed2ae7b7edad12eac638d1724a0c28d1c3a88697840e3e9b006969db1ba69780053b9ba525fc6889e0390e755492c082e840012bb9d351c8a58e3c615305fbe60e3e2c193139f80a81409d9e95349cc41c810a21192d134a001b31640303020160dc681a0c8357e14800e80aa504e481acde2308541100531c6186210218418028c31c6cc0c990d801871e94039695ba223e7b9283d61c98bd5f6a21cf48c2cb572053cb2d9c0311327d94e2aa93f2d7fae5d3bd6af27f2d713e4abb66e59dbeb58914e06b5a01c290fc954675274d0dd51db4d4038e21e99d383d15187266ebda87007ad7338ad56cde11119d9cefbf8fe58e927a9cdbc4d4312267059e576821add7ad8b48f52975593d5bbf5bfe653ad82f029c891fd51478f14335d6a3f49929a2c56b7659ece9ae229f51b2d683c4ed1c4494293920e9a7ca5d72aa71ee5ec5ac5062dba39597f2e9d167122b3a2edd005cbf1f4f69e917a17ecdfd87ca6385417c376a883eb40d1210b2e37f6c275fcae992a7bb2e251b8a9d24921499da12146f128b09b534f634d2057de11fff74ffa15afad940bbb8a8743df3f5a7a063b132f1bfbbba3be48b08d82cd2c57fec5773ec5e8f4b8a8f313b80bc3dca1231c328c9ab376d0adefb5ab9e9c74ca417c318616449a90575024d141478c46813d608849baf136e9aaf4a41357a574703f74235676b52ee0fc2f4d1491b151c4d6b893beb907180854a6a9ca714a498fd0657594135e9dafdcc8c2e4847112f8fa2e6b568bd079db91655d51ee62a20ac4a0d8053299b470540761707a84679f6e48d2019028ad53dd6b141e59886898904c039a8cbb3ed9f1249b94e81c4d2bcd23af486b13d0cb23a726b2d841db2ebacdc295f0888b4b2fb852b5498195f065e9dc64de2175ff2a15a7fdbf58ec85562762a3f6818c06f73e209457e16e9d496a3757057b238aa285a0236e23eb1aa2cba1a34b470f74775f38eee2e51bd31d9d2062ca82d74c3a766b09a23bf26b477d0937b45caa9ce23050e2be50201d7c34d1bda2c4f7ab869a8cc044973f1cb8df9debdc15e6d311591c44475a137454947156c9f54e1ef314ac2400550208a0bcd4b23cd13f4dcd0a84816d3dce7e21befaaa70503286d6e4da49bcfb07660cbe59fe75734ff0884e7ca7585890b7d35db40cd7bc37e6c6acf867647c3a4dd17445b3d60934ab8309114928052f556c461c853304120cabdfe587f9933b6d634f483ed88e220ac531c19a95b6eb8c0094ccf61de58f000d7a12cd8af405eda0767309371af649429f03796e27adfe4b3c57a2a326f975f8135d5e0c979b797019e5620ae1926052c7acf16ae9decf0c21f93d06c175f2ed27405d54139acc82db281b0bb275ca832abd497b5aa76ebe351dd34f07f954a5efc3a83168df094c0b17968c80b7fd3f62c441edc1f1ce233cc4da6550854a2e1b06ae2569c1c9cfdbb5458317e9a020e0bbef77cc04d47aeefd15867d466082aaa6cea4ea7eb85ba0a9ffedced5b6ff44e7d5d4b5062b755917eb7bc10cf722fce830ea5e9d45cebb308dfb5344b066db2f0099ffdcaa95a58bbee49675ed2e6ccb5e2241617f7b53cb9a74640e881025aab0337375d6a232f7e1f2f595b563693770b0c86d59c983c211048e0175cf05a8fbf581f0a304fa4472438efbf2dced9a876bdfef2c3d0a4e257a4493af132a1cce59f4276ac8af0f437c9059a35bc0235a6246bfb09ec3a407d4d323516a0e16144845737e63070c81fcd05ae3055c06441cc0a4912e947eb772b66ebf748684b25efe4174ea7800830d952aceb42bcae9cc12e8c36cf132873743240eccd0a9378a3ee1f2cae2bff709093d99f1c1188b031a69c499a417b43c90fc376849aabeeeefcd93ca80802ba41a22301e799ee2f2d2e56043f0a994ad13bffe311963bbf6abac98adc736e428f317e2a6c2e4ee7adaca06636aa0670a6340756a985cae3590ce0d60ebe15baddeb52fbe8b86d8525a7900ff7ed3930b47ef5953de4abd6b686b5d96ff18d75ccb834355b9eafbc42915106b12fb6cfd3fda0f43e25c36942765227fcdc35a8c514fa54f583ea852f77b57d6b7e9d1cc360fa42ac5c964a4ffd16cad33ddfecf2249d589f4d0c6ee20f941b55462218261b51008680ee9dbd0e95a588dd16fa39a6334da507b6c5536ae4156850d6a91d10b30ae64e50966b36f36a6288dc19c78b4968c8680c08888d61d5408245b2e9aed342b333d0eb1f059e885910c4dd7ae87778617a59b1c076163453e5368195fc7214b6df61c0046b5b95ca96df20ea719d9f854b64cf50303ba5c9e686478c6a384d218390816a9d93292d9e899cc7954d3e2305ca464e7c90ce3df30a5694d8e03f098229715b20cefd190a19b3d7314770ac1dc37470bbc8febeebaa211d2bab550b3eeee83cde8ba32aebdac9c0b4122b700fd1cceb0c6ae69171537cd5ef07ee17f7dbfae9ea7b19b7914d1855d0b5acbf614022bf9d93f0ba45c68937fe8cde59ba3a2ae6a8a9590cde76cbf4185e23ec638e7ef28eedbf469e6b2458da689b92411c4f6e40ca84f017d5f6e0f80d24bd263bf227e51ee65b7bc94ac46d2e1891205882417bebda2cf17b661bcc8511a09e62ab797898924a4812fca029c40ba8e0eb71d8cd3c7797e04d69caa04bde030d2d62940b05001063d200994b259714de6d93b58102f94cae4a2e84ce4610a3e199345ee5beb359d9569a14d881bbd7af967738d788c91fd2c06252cc725f72021db1758b1fd34a36bba92c87f44e1ce1d726b00adefd14dd9f27ca474d0ae0d0f0d37f1c0805d1c53f0a6af84d31658308c695a24cd16ecff9d9f8c9dfb1b44177f7c447cec4a46220088ee1b3474089c8b98018240d63263a228c07966e001f7a7048e851e810ebfeab2a0c0787f0a7f07c5bc4f51a2bded217b29a83e83d4375c8ba2adaf17fbd460ce737dbb5ca50af0fecf0fe51f9f70d6194a1acb176f43591a1ecc752dfd3876fb0157004d775a32a0d7f5623a43a5562893ad8f58c0f2aecd828f97a02510f0cf3cbe90bc55e0fd23a3ad65fe2d7f61dd7405e1275909f50dc3f5cb024d16ef58b53e4ac9aca9b89988b9f7552a941c81c9a9893dd011f9aa97ce0eba9dfa3f243b6284ebaad63285d5b0a8f32216a5ef8cc3f3e440a5fa7ceba2a50380843aa37b9b55b7a4704a1a1e761cd6a34c5db1f4809cbbb90b3119da240d45d91f5a6252cccdd74ec803315cf399a0538dc2a8d3c2ed30f34bc4021fe7ef50718ab9a291a1dce5e456d13cc97a348ee9fb3bcd245a212128ec4c3423c1738e454820e2aa9d4319e3f4a554de18171568bd6685db6f168ac392489391b938bb2eaf883ab1c12d39ebf2951f17cc9031669dd278d46658a415fd0813c07c5d75fa80857f1269f223bfcd6526f1db566f2e8dee4d51aa7371215dae2baad117e22c7e8aca80ec8d787d02987656d6e7cf41baff98638b59395727110530bf35e98bf5d88db7666c7d3a92e1e58f02c2367d18c723de2b7577fdfa85da114e05f39b0fd679e8c07912f75c2c3c1c7dcfc7eb4c04f64b43362c9e8f4d9b23b373178ea4643feff572eccbb54fe0116fb614ea9643f5b61ef45ce36bab6af1c286cea2d393a9e7b1943f2a28c080fa80d0ce6e19630ede3d2b35516c562e8300871506d34a242ebe1dd774b883b758756b328ba9c38f2193028c35b54e515535a8d8d58aa1ddbed0518d728392c7c01f3afca61a896393e4b09c8086366901ffb1b486a4f7c0f0c1f491788c4f71ebf85eeeb0f77142fbce99d305984b41f0542a6249eca9013beffc30b6eaf79dbbd8ebc7a04cdc30544266cb880158f0fecc91db0add8f22cc5ae9bf1168840d27c9806d5db0537c999c1f974b6a9958e08b08004ff82c1a482b091b776ab83030c15d4028edc9592a0c98dfa81a6832b1d82a8223420758d4a5e75a760f1a63159ebccf917c8fda9016bf901b0d2a1ac9389e1d20eab2474d002d9f6a4f749eb5f25e455d22fbf35a1d9e4c73e022608c5f90572fa04e4e60c3ce2a7d4ac4d4196600b0923d695681256c4966c65816a12849596e62867f71291e86332cda20d16370e1b95a5594b8df5cfebda7393a07a816be8aa3254543baa11e0cf942b17e9618758808a33851b13a21df6711c874d078a07c3febd0b00d64ea69f557b4dadb3424ea7bb6e97a068f4abb5bc8c1c86dae389782d84a8bd88e50127878e146013573d56d2b89de8362bf876edb5cf7e729b8ed2d5b9d21f9b458ef0253fa990a3b7d07650cb7f275e6434189e947ed17960167d7688555e8bed1bb957508f53bc802394dbf2eca027d7961bc2b22a91e9efddf5e596d5b47fa8e78db3ba433b200118f3689d070c099a4385525ac5f4b2c37a4e51705f343fffaecbb835bba3ae0dd04d0618fa4e51d73766b7f7e289636610d3461555d66f5d74b14582893fb5d6cce1e78fd3acbd5ed5b7178d769a32d1dec65d6aabcbba57a4268d64aa788cfdc5a91532919669a93a684f998e2a6b4f95831aba4f91af1b6c4fa18f1a6c47e2db1a6d47cad58abd47c1b715b6a7d1b315362bf2c315362ec43b7157c4696861cecb892d5c0e94c64c76137bf8009c04f3368d3d99a80f3eac567907116a380d6a654496c7fb7a3d00d6b8c75faa2ca67d03f33f3224686aaf137babd2361721fc9367b13b6a3f445a086a89b99e9435982ded16123f8e9c10ad0e1d85a547ffe51f4350f3f0b702cdf08c36aa5033a041c8caee049e547fda4ef6df2bfc22c02f71fd77ffc17ee9e7728ae104e5b26852de4f3996fdccef79f9ad74a45d0ea1629bdf1a9bbea13468aa3b0ef80f8353d0412b8ef6a254512517dd5ada5472eefb4ea5ba9ae45bf24ac1ca501ef61af6eb234c2ecaedd73c9cb761d765ee75b79dd5b1f31d6358a778c373edae65999fa7b3f51d038cac11fe357f486e003bdecbd5ea95022a0afbab5ac46b35bb9b534a2b75bb9b7e524e9bdddda8d59fa517f76de56ed3aa39010cb056fed9c38702f3e1445fd5126787ceca36f2f69d1edacdc2ebbe8baf3dab7f211dce2ca14ab8fa254ebc4565f57367738dd799d67b53a6d7dc368a928ddbb9fbd72c3967af397edae82c3f5ca0a28a0fdd50d5efa61ffdfaddc5f4ed1ed566e7ee90b7a6677ed7ec947d79db7be95afb3f511469da378fc11f1ab3dabafb3ee93858aa338fc613c9d58f5318d546acdeb1af0a2a15bc22bf944231389f116045c1b26aa8fbbeb69c03b7bb14fa907991ccb1339327d011c6e30d83c46a01885d78fe66335a656e41a49ff99c3bed212aea99e83426cb84ed53e1f87901a08b16a690a7fb1797eec5870ec736520b338b10949dee5aad366afcb7164044b0497fff83e6a717419365d9d2be9eb089f70ad6726cf9613d48a27923dcbd2051ed4ab009f7f7bd44208b66ab826585252d10ab1377ae42b9a6c3d5225b3cf03d2b043fa098f4d6659e76b8b190f27b36c9f5ac1b508377c0ce2f190938dd990477d223f4496c91f66e9e7aaf62f7826c33ffc426830e86f7e008f1b965de9a867eb8ffdb9cdb51c3466c5a90714a6bf6a3b42cfe2a7bd98650e766f073bc3408a63d3158d6e294586950145f34273bd44705779b28f28838c6667ea90c142ae8dce21894c11fe3a3fb3dcff7d55975f5c4a7fc3a09eb5aa88c398ea3b6193da07035775c6cb049943dc572aa59ace070d8f738e2965976224299c9074050d305391c36d55f5160e067e2ee4fdf2b5f6a6a67802cb7bae96e588669a5415ad513a15a8307ff49621640d3446534d014166d0c928eda21268839c9a9c17c9c7d3ac32457279d2ea61aff1670ccd5bdbb4413f877554688a9744a37d6ac75c607bc64cc43e630127e3b3a61e9f9745f58d98cb7b6eceb439e62918f179c000c7a3b47d5aeefd8955169a93b8a4e0e6ee4cde54565df8f194cca8d52ff03a3bda9ed321a4a4851a75fc96d963fac65d03009c8b23fb4ff6452904a6c845c516d8ad1e68a04fa5c82381ce47d970373f4da35e86c453b914791b1d7435a6d7ee418f8a103e5fc2e1b2c80e4df36d0253d5a92413ba48f0d673aaf8511e4464baf2fcdff3741058ba004a61f8dfc528293eb41f04c283e77ce8f5fceca5f3bdab9cbf702fb34b82f2a40b1e1f5c0d9577d9216f74dcafb33b385eaeaf66b7dd2444bb1f7d86e750ec19dec533d10689a032f838ea1b44b99e163ec7cf02a0173ad7bc4705a162306f1dbf608deadc7328557c8b5fd80ef06cd40625d39e4482e03ff736a49deec508ad967b9b11bf8bdf2a03295143db0b3bb5d26d1ad2e6421646076b04de43e284864af4051746ba8182cc00223052b218ec12bd648f9958fb959eac433436cd3d7fa8c730ee226a5ba2a6a82fba8e6cfb7e2226dde54c3affbd2ae483ce224d848012a3ea56b561284465af1205411539e2353808c46213a94f137898d52ff2640f183bf1ceb07f4121fe1b01b01060d72ef28c2e7e1611a2a64cb49aba9b47931aadb3d4d59946c171dbda69d95b5d332d6cd5950fea3da5f06091e312d9824974edfe6369e117b3be804be103704f457df8b3b9afa80ef5449425cd0eb0831ffc87af751ec4b5bd4ec73b59717af6c6c7e00809d4bbf39fab2eda356f2b6bbd9617f56b11b18e30e2cc2916fcbd7df6692bea3550aecfcfb95aec7223b6f9e506c43824d48f93b19210531630d04c4e67f64aa81dabb026b95993b697c454c2ec83ed8320d3cab7b52fe7b714917ba64c4dd5ecd874ae4692e7ae7377445e7bc51484afeb33a45c1fa3911eb3a6cb843428308aa20e8c607eafda09520cadaaff14188cb12e3d196050c14e14400d569d1425e227cb529d32afbaebc553841b240a258f39f19c191028906c69d2c7f5997607f15d6aefb08a6454c2660494b179a3f3bc4aba197a381e9399a52b56220c84b504faec7809622cba262a438daf73828bbc0c92b50558670e506fbf9ca1e39f5495eb14d03a6c2a2aae03161c9d7c1a94851a76ecc620eeef861c1e0608135b39c5ec27076527f86b100a30032f9074bcac809d6af029706d3347a99341a944690c5678bfe220001d5a270303c1ce2420954e4349d24674c785229c731334e31dbeb994daca39db9a388cf650d22be07f028c093d10bb8e7c1353264d35aad5103b8465f92af4d395991deeb660574ee0944e3060d90277dc2adfcdc5e24c6ff07898d7d01ab3015ff97a0dd4b0811f59bf4bf7c3607e754110d2ac6224d37a415a273a1411b7f1ba92d768503a225cd1b2b9c635a84d2f2286db2e90f3cc5fec82a4c4b164fbc37503021d4a29a5b7ccb06c4b6510b849b625aacf28f0784261bebdba9784c4edaaccc393f56ca563d1ab1780fe3136b1bea3af8f4a800d4a21b9a2517887258cbd7e7237befc846755c53e068b0965523c69396a6e27063fcace25390de27cc0d96869abce8732713e88ae6a04aed8d1de4009a800a7513f603b42eecc9cd4baed66152d226e9c7c54a8c2319b30715b449c740601f6b09aa0d4d639ceb711b95afcba380f5e1941c6d01af7ca28106638ecf48dffe3fd199d43c45c7eb90883a2ce4a24b2249e51721120e7c1dd90c683910e6118edb38c78db14b57a35974cff91ed7f1c96126e80409d5a9b2672d8150c4ffe9504771c7681b52057650a036ee83553580f3f55ae8df27578a545c1c22c5ce6594f189039d909e045867e3f85e37a559cf2716190281eeba36cd6045f35d64f1f843ef94aa9e3ff001a376ee6ff8ddd7a4042edb3142712a89523c535832ab058a3a9a2d7708d093d8954f407346bfe57a8bd3c649a82d8c402704e63808d5bc8769650c18f32110058477b4a948e0aaed4d2a5d5aba86e74505dc4015ffa574397efa83c0fd328402df493e23e18b4b8e54a2058fc5e656862bb63115e7a0c2415f82808fe6604570c28c95fdaf2ca646d77f2bd3c91205c6fffed6a7c24017856004d13b0341424d06fb376a385c8f020b9ad205c23701b87d1e84b9cb8e7672f268e5fe17f06d0d43060e89e1885cb9b284037d390cff5dd0f4132dd6b4bb67303c7653de968bb3bc0a75e285e2a080b43add046029def737244fe5c2f5c06bd7dfa278fcfa7d1c9b259cb309acc4526c25d845a47f9ac0429df14b8938b7a54847443c1645d54ad8db7de1c70cf9a231e970d90a68b06da8b252bd19e780822483d3aa74e56e687b12ed6b79a3bc596841a0b85ef535d4b4347d0b3d95ce0f184931408c9ad81fb3b842fceb67c7ef5896545dd9de9060ef30690d85a14b16563ac1da5d2c5a5ba598b6a593db4655730bc86b4bc239e34fcacd5aeca561a0321def07be6b405f0f0d9a021490445b1685de7a6c982ce2066344770aab32ee7c0cfffd7926383701d2c855bda7bab893129be57cb03900ff2f811c34aaff052b5441fa6b5d7f80641e5ef338c3b101cc099e950a4add71ab3230602dff4230c838573909742f65f75efbf7602f494e9984fc778cfc254ca3749f1181c9005d3af98dc5e076a0e5ccfd630754e87eacaf008c85a9a8d0f99c2ca25914cb2e18f369570bdefbed415a870420e24e681eb704c55cd541b286e116209ffd602dbd57ef763c0117d28779b9d835194f999d175e6e8d25dfca44218ce6d832bd0b1ed4be581498ce6d8ceb66440b48f2837e8bc8bfd1fd4619c55954a1f255924cbbd3221920c00964c025ade231dc052575f784cc3a24b57d9d475c4282441200aab335c06d638074d95bf1a9d25848d663fc518a3e4c7e13ec9513003a26302649c0347eec97b03c2de7005a90e6bc179c278d774978330b01eb3c70d58c5bb5bc9a78686b04087ddd311cb438e35e27059cfdd77d8ff9531c6b3a2b1bf3b4ae09337bb15c0a35ac807fe7c76fbe31212fb7b91eccf8f852a661c17f3044895d7da4ab03cd4ba95d7e88da21b1cc1c3462c21d80b0e7af6dca183226cd181f13cea07a5bded44752879e974c7f7498fb4ecd2639e860d3a09dee5885aaadacc6e8e9fdd20815f16e6045795663a05b90481fbd05ded68c960395b27839e2b2b5a78dc628cf7e1b5655bab4a1f278dd6c0fb5e52c1ef1ee5d0822dcf44c8d7feea44f1e249a8418932880732f79be203b5a913282091bc0f8c9f4abe2fae50a04f7cb6f4ee0987a2d0c810a504b1169464ddb4194c3b85888f13cc40b60289a4c9ab9326399cc834faf1a725d994f5b986d4454cb891eff832745e23c283011e7c6f545db8a96af004f63d6f186ea935c879cd35db44f5219e3e1e4c97dc71c22826430ea80f21e5f1edfecbc92586446ae69e85dd01a206a34a269c5e3f80eb02f763b1222df6a0a8083e4b2f332f5299c33b6fa2dbdc8d21152cd91485e91b0f24c1219e2509c8ff6ebb3cb4947c9464bf468808622740f1f64234f23c8540a2369da310dc113213a918e5e4a48f8fae665bd78962864cb360b88fa298b00acecc07343dc559fb5888a0e2bc750a3196699ebb160aca80e3364b852e70e2192688101eae48d8897f8d0213fcc553e23763ea2db498b0d1092201eff6e30e3874c7cb6fb53b4091ced515f857dea2c59ca74aadafb47ba3d3ef084824fa36b08a915f7bb57f3da1ada391e204618eacaaf3048f67deab6ed695b640de13758056a3ad01ab0705f0adc21a59def33eee83ec381b78632e20123ece7a3887a316bdf37c03d78d1bd472bddb4f412ebf14e74a3473f38387c8ade897fcd456f64134204219f60d73585f082b771ca2c9a2ed74400437b0b552b4ed9bd83aeff01a5ea10fefd35bc7f9ad1e6b710d5fcf8826714a22c8d11b5c1b7d85450ef2d091c47051f5f8c44988887414fa9aaf7c7c529544093f0515a83c0c3ea0766ca0e9afd3d113db1e6474064d95d53384504b395366015453009a880790eae93eb3492b2061cdd34f223d11235e8531761a649e726cd6046f7ead0b6fb2f2291fd24602238069bd798e03cc64276a6c6bb4f28a7e1ed474004e00be5902c7b284d7c52cc08a61dbc0a0635db429f1c76b3a07fbd68d4a507d983e422aa7569aba3c4dfaa06022876417ed8c3626412a19244f9af9abccaf696de11a340b0500f8449d5b22b5d7c21c66e0dfe56962715848dbcc7e37bdccaed55195ac591ed1b38f74ac507801b308eb0b6b43ab87e841eebc4f643b10d69550deb82376cc7ee02e6a03c62fd2562340c420cd1a62a16098d7b12e5b1ca34e0e399af313a25dbf7335157bd88af216543b76cd6e6d0c85598804d835d211da70a878502642063199402fe0aba419090c24f8a9227cd27ed55f7e5a79438f18c30d85b810816c58a651d0c67446e0d571f9c7431744a98bbabd2a340ae1a269e27432fb0dd60299e870999b9b7f1faa1b05b6cef88a8a93909d4b7c6d71d4414f943678a2ae2838fb9a49037424c511333777386335532091e633051298a27f912f35c11a4493cc19158c06a0d4e11f4318d54ba43e118c5cba05a53e66fb620d1b13099e25a4ee815b5316c7fcd5d3d490080cbc711554cf3eb3c882e6ce1129e51f6500868a89ab421d3e15e5335434f6ef7aa78d8a12fc6278c936f9e870ac8ec646c7a7f0bae4f77b236832854b4405d537bb83a63dc437a3afb122ab97b8a23c229f156c342e375a2b64e712a23ad9b7571d96430ce2aaaa286a93304a4000faf16bfae98a55dda0264ea74a46cc646d7e894b49e153d3c5f3dd5fe69804de245d4e548ec70024335f998cb144e1067dee7ab12ec7b87a0ca7ba79e16c74370379108d63b82bb6d9bca07e8d6adbf41bc7980cd8eb1e19a32f706380b0611f8ca80db607388126ef49417de603b135a84ac1c4d69bf25756acd2a5d40523cd260b86cc0a2225369ae28a37a92aa7f44914ec367c4b58eaa9b3e7692ef48f78c2b424bf16d1b44dae22590c93a972d126ff206be32d8a24164e9f09d73b38e1f7ebd3a9bed2c248d52642183c4522294f6caff22bbdea931a570498bd6b8ba13938153c479ba9d3043c05b7b7f025b30d124eb34a7fba96aab7711b4c988ca42248385f49ebe821a96c9c8db011d9ad938598eb90bb62559566f8370e827ccfe4ad513a6decfe3a83aba944a9ff7578ad5766b5677bc1598312d783b1d19a31853017597ad2250af3ccd8fd689a2c7f95c4fc52269017e717a1001b4daed4daa27511c90f07d39732b02d19fc6b24b478add99c3bff11aa8828d188fe5833d357398c956eb4bce9d17cd2e9cfe5806d94a40f788719862036207f710b2d61a4ffa3b9682efe8e8451f486977b172319ffe1cb9789cc4c2aabbcae3eea0eea7848a36c98818b4bc7f066d3123e40227f1ad78aaee55136411a30d67aea80978e1dc1f68a22433ead76c466ef83d9aa383f8d556aff67022c38d09e4f319ba15c7afad97301494fc7504d4b22c8bb5f14da49409bc426b4f2e3eecb326117c582113ff5f8d39c38bae9167ee2f7a053e089779463148b67937dfde7617923ecd5a39647b620412f691508859c2239cc193ec8b051c6c112995efa127940dbddca660dc9dfd6f36b406694bdafca4b9dc4d98015a84c9b39a10bb261c65a65ab9a05683ed969c638c481462809740c842790a0e76e243204040357e6583ab651a8f55fb9d883349e1232957097806eb63f74e3bd381eb8350f8d90fac5d10ab1a6bd1fb05edab1904f3bd68ebdb4c770a0ccf8532241359a190caa9022c1967c1a90e52d93690a683e706e847e8389c212cb86ce396074669282c6acbf6f8f8554426faca2fd0acc257ed8a44010905a9c8289abd4b3f25d96c30c4da972d6be4a6c19c8c6bf2eb4d377c578eb08d98251d60b76a8fbad8340e2ec18b62342090971d6e2eb7f0843dda800f8a63eca9b8cb55755bbeecf91e210c8c761751645b941e84e54a7c84a658922d1f5951a128c6ae4dfcf0ef132868789c6b7bc49857ef8305dd3c7cf220b956230150914274eff5de5ebf309c5674a11e71d8b1dcfc4b4aec0d8b56669e65d1e59b98a49ea35db0578294bb6a511543e3ea5494ce1113e45082836e6144ea7b8344bc44b8aaffc3155ce6feccb215a7aa998d8d32b1181c573860a80d3af141f817f53cfdc3fa848be9ed759753b17626178402db9dc3809589584a1c8c42acae5813b2524efc733214474439a9681e4d15c3b212286592842debef6687ccdd986b711fb95e63dd70df872af15ca6aa05158d119a41482a50a425186df6f1c728cb15384ceddb68a9620ff95d1236ca8f7f2152c7dc9971dc5fd09de94b00caf5e88b407ec3ad79404bce02652779fe06ff9ac041280cb8d24619ad76d9e721265b841034f775152c8fdbebab632fcf057a1dddce6cdb9fc70b580abf012d3c2ed809684d137f0f245dcb820dfa74ad036984d23ddc74d2e7c9371565e13b7b952dce3cfc8cc701093d42e71dae085761455db5a350d35af1c05e60236b201713cf5e422b5aef740f53daf5a9b1398b12ed57d0c96b2c6891c220a23886f2b3fd87e028004767bc68e1ba7932491473e9fa16fb29803c1170b10dcfa91763fe20def63db61b46c2b450775bec72d233457aad216cd43939627f82810fd7ce52cb38fe56635b587f9956cf4a77741713cdbca1ac0d026930460d022fe1b2723e3964c01dee12698ae4d324b5af3633043206d4725dc9a66532f54f252b1905680bf4642596f2741b22a833a6c464ee52eb785d85449568c1707cc619af8d80a06e52154fbe3f912faf5db6782f6c3a4fb18b4707177234ba86ec42a5f9b370ece82b3528834b6dd41212138d273001c0a8554c04f91ca9cdac507378f11d81e28ac518335ea5363ef65304e326bd084fc28e02a1802c200ced746e631a884ca9559e9a8bb5cd8c12639c1e4f189005ba13d9a362330c942da5e43914453024d3dbff7e388ce8e7c46f055735f78fdf25161ed70d2d5260250d30d18ea0fa5894756e142206dfb216de6f2b5ff33f7de7c54ad3caa628c2ae01e64da071978b77f40b4c116ef507324ac7fac53d57550d65ad981bd9e33b1e5d8d15ca1e882fda7b4f58843dabca85c91c64b92c663944372b4c9ee44171f9a6bdd7491ff5cbfaffce8342cc5df483a1224af55c59f630158ab0a0e292a4ce890d7e05f175c901a006cb3e8225383000a51513928a0279076ea2782c24a8fe6265d31011583bf4a9e819dcd6f8ba9c4e0c275ad349f98b40f83ea1819b3716cdc48dc0b6f9661cda36fc9f6b757efec5496656b5b4e575ba505eb605567755958cc30e727626e36dc9400390ace5f1b53fc62c9443e8486a532c9282a26fe8c6b3108e97d7edd2c60eaed8eaeb4332cf850f489136a2b2cb2247a6f3fac05ded4de5f3bf7a9eea209817503323ffbd2adfd6a87d418e64f32c1db19ab35656b46d200494ce60f0849c7d7c9207b833356c41109a4833c7ec5485833d0f9a7417118cd943ec558cd4a39758c664b9d3296e6a59f3a56b3a54f194bb3d2a71aab9b739eba231ee8581c7c4168838a1bf9d74649cbd0a5f0b53ac6e08d5b13d307e7412f05641d56dd6e218eb64c60a7e881b2ecf809e927cbae13e99a719736d0759ee3efac9801bf6a9c3cde0a73ed74aff4d444b987aa6fa4b23800f3b7b4f602b538b016fb61ed4a00374340a105d1d3026c65271360a241c50b44fe5b48a681f86b99f417aad1768305d890505718d2b7a46405f76fe48c7501383bbc7765c0795e657d9f072e0c5b7d136c5a97741e78b69caa46d83ba691e5779374c9840bf18c6fa8b4be32f6298ca54d942ae80101f730df9ece76de602a2d28e45b8d6c72200bc63e109db9f1371e4f8901c09ec0b5dcead0db3b6136b2a7703bf429771c7e228fa06d51b86b64ed3280512916b11b451df123385dc08eff27842231d14aa00ca8d1b61750f7c26fbc15a90b2a2150e76131e2e46b0b20040c591bdd5919404c0b67fc1078d8fe8bc135bbfd7f25dcb4d47741818716494dfc57ed660d2d92b9d40a929a3431bacb2a68ecb61f00daa377f3d5627aa80b08a30e0fdc6c48f25d4f05df2fccfb6da612ecd5199ddc61e238d68248efe69571a191245775e260d2a2b841fbbd035c3df528d07a342e183719c4e90dc0f2bb3860934396fbb0269dc69c6bba73c2a24611be00d434696029456fadd92506173e9e6bbed8f89dfe68933a1c46d9d3753ba05d895eb1f4cdc2dc3056e666acd99b63657a43a95136df729b7ff2f91dd6b6cc4fa843111bd698960d710d7666a4c6a94d711795c0b7d9f7202c2c85a914ea9b87076aa91db9b8691055bc5b6d6f2096948c9b37fc8c02174e1a4311d6a2ff6672d40bde3092b04dc5f1dbd6c24482e16b381a2ceca5eb8c8ff36d5b1311bfe6fb02295f11e635a0cabe25ff03fc3ccbc2ad1709e635e71b99bc180b3d607caf98a0bfe6f75e11755b26eff5f5385ca074128358f97ea52d8025c3064bdd09c1b22a06b5211f3d30ebd96d2e8271861dfd837fef1adf0d30b2bc686cf58aa59512f7619d15738508d065d7b24879208f3c75918dd266e333ba69ed9d0dd9069f029719b1543d5cc781aa1e34d64dd46d407ce531a6c6cdaf1126a38c7d63c66ab64941bcdd0a7262b1a126b848cd8801052e51dc45aac794b2b4190ca2bb1d240255c20a58a36afdec74350867caf3aa83fd81d2379e39a0f7230ba70b9ccee04277dced5823cb9d58bef009bc7c3dca85665290afacb3c924f0c348b38dc1e5cca036a5c6c2a6a19ceb1de9c1a273e0f9cd0ac99153522d21dd0370cd35d6279f81e25f069fdbf9b9b41838350db53d9383fa7c365bcc93ff3a3c34700ca2317a05d8e11b24002f39de67c655fb56716f6933abf09e10816fbfa71a72afbcb04f886a20bb369608bca13b1e3dc8463b9ce90b3fd77ea7df221c9c436bc65b5d71faf0965f043670c04bc0278d82c166cc2fa9b2fa097127d6f8900c9f9d430ccff4d0fb48514393f395312012fd6e4dcd2106db54d25de76906ba74eb9366dfd44388702f26ebfeaa020bfe2c2e106600cbf0efc04c1a56183880f7b146e2828317b312099670f201bf2cd5d9ed0f482d8f90911576d2b22a98e04ba07053fae832896036aa221043d6090429f6cf4f8c1ebe028a13d928bcb9a2200f80be00a29441e650fd8a7afde29966ae535d3ba82e483ced5f47c262b46964300fc1facf0f333deb943973dd6804c55ece0a4e50041ddb08d8941aafc4e63546e1c3782d1d469c802a7d9b4d15d608ce4f1941945111f1731cd01cc1f3d528ecdfce234ccffdbe618763d7dc77107daf5accec26d3f703cc7daa036acca95deddc86bd32db2a6d678ad7210fdbe8767653ef65f15672664429168e2af4198d8d13b14138fac7aedea79eb48621f5a8eb332b95ba4a26091731d5c7181057dd90a654e48e18348852abee4064453f357c21aba35dc381f690048b0d376d50aabc265370aa88c9c9aa11c49417719b9dc03397b2a595e665b60b77bb78570f5afe3e8ed6d7b6f76e45713b2ee56b4e9629d49a2586523b7cd92cc3ac70d0955b26970f8691ebcda35bd313c3c4f4b2a69333c11311457963069eabbb971149ed645fdb0da830724a5c7d035c51d322ef37412316921546c88dea99bddb92aa37b80826e2ba72caf69ab0042bc72d8314f17c3827be05b1d86d5c5a16ff9744ba53ee22035cd13c734a0aa7b55dd07300f7abf4e322908e0f7e936f0d93f0769f922df8da431a7c4ff86c41485ffb37f503532466b8019c3be1f38f124842becd47ee51c9b3405d9a50e90bc3ebfbdd03d750a9b1587d4c14a964a9b802190b571c0db8296aebe96488bdf1a80825f11fc17777c48bb1f5a144940c95a4013aa34ee0b45344e9c5ff0a2e4e63c553d3ff80f609bd69d65439dcbd6ce7849a3b5053c53943ca48d29688d79820198f8c048651e85f82d9f861df35e071e1ce40c533965fb8dca3f91f15950caf53845ff61e144859f85585ea42cbd5613e89ad84e53b4e03d49544ba5f3a60a50e778646d101df1423e2268d2132a5531fca9935de15f2e8aa7d0868004beb23dbb9ab2c66ed59fc6c2144c29712e111ffc72f37002a20cdf6249bb6ec0fd8c9c1aae46d51e5f4402dd88ccb4810487174a239150a63a0a01101e4248323977b2f227109422bbe417a62c4b5539033f84106bb1c1c8fc1b187563ac389e8004f3f606728be843aecc51c4e89f738614155db9e0f808ab218ff8145c20f2ae3b44b1a3cbe6026f32f3807ab686621259bd2ea555936224db6df4881fb0ecb385030f28add035a1e68b942d5d29d087fd2a233e77c7763900286802d4a917163ca7f1c8d31fc8d4ccf0e50c1c823dbb9e44e4637077f7971bca8ee7a5c59b95eaeb1faabf1ae512c318aa2c101fed78896fe42c8c235cfafecf52696df196a90307736fa0a8da8d3529914935343224500b4419d34ea0896c49b2e39fbc1c2b904423f96383ee61a3053610104d7b5fcfe010fb5db6d2a7ce4bfbe65ac046208bbab41ade9d019968d2eef676e868923b39de2b05dc8c29ce006f759730ab18e203b888ab1ad316c2ccb2d8529c821b5b40da1066e47ceaeb9d5bc2578314758f7b2292996fd2a12c887b2aed731a04c4a54b7cff799a7f956e35787f396c0c2250737df6f79acb82e56d7bda71ad5ef023ec90e4e845d4a707f7d077d59c78eb7f21993c693d99dfc5ba139d13a7f278f2a8124a683b080eaedd6be4ad2b1fa31aa0af2d33e0962cb931d48fa4364d728614a9e9241c5c6788dc168434597d9843e228b7a33e5741aa8eed25279a73bb30f2c3fc70504c6563c396e79772e8cca61882a3e6022e006716b9a9a895cee08c132dae21768061806b009e8ba2cf48384f9d035246a379805408fa99a0b63f565fae9cf2e3464d8a378b289e4afbe4ed255a4a635664ac0cb39134cab66a85c5c5d33a4483228f5205f30064a5190b82d40146ccf432a309140671c606e82f5bfa32851307e2c8609e36373070979e78ed408a0cdf8ed9b85530091991f8a0bf30ff4830b9b2508345158d2989bcffc88092f4acac163f05e084c82d077a35487085494705baf50108b6eba4129cc9da00d93a312e222f6ef6d72503a09824c1408e9ab9c5c936ecbae68f1cbbb8d09bc7ee5b83b6e3210c50a71600ab8768500d9392b7e3da3639bbb532d6ba42b922f8673644497e304878666d12b1a78be08b57da5c9d52b9828ea41094773452f80640d822331592965edd3991f354d37c6858bb36c6b7ba5a5ca5920fb4ba179e471fb2a4e7da958ba3685c9ef8170bf67a69c48eb32801fb8b8560b788a7a0f817f0b4049beb889fc4dc0878ab526477fb03c2b6b4943332ac98cbef8280b654a74e5bcb6eb9355ca3915f1c48d782b9eb2b094ef244c9b37b07c2138e9deb50aea685a229bb174ddceb98f0425a757746816cc6165a73c2dd23098bff07fedc1085804b40afc030a78db8650eb4a300dc9b5c909a35debaa9870e9beff26e57ab56a4a8751308fe31de02e0dc921b0f49096823ed1e2239a34f9ce61b8ac0f884744396e830a793192fd9cde80e4fbc28d22cb38c9531e4245d69b98753be7c6406c4f1d96e084dbb96feb140ab8a6c9dcc017eb5073d85bfaf4d1b5b6403d7cf5a13564fadd63994d9ff56227fe1acb7163fc66961154546f9d8972fad882ba5ccd73e35c6f05c7d18ccdccad17524b5c2d80372c40a93e89869b1effb9bb177f5710e770a50ed771a1b697d949a0b7a071801476504af464d06c8b9407678382dd7aac548768ed082a29d70db4009cb4b38dcb0780e49e3c7943ad3971325ddd503d4b0f98ebd4e1aef1d7573cc61689823d94580094e0fdba6980a32f01dba85b79d201dd4b5dc0df5ae204c22645deedbf3f3d75856a537678fd716716a89efb24b76ce48ab060af975b3f80d9bb6cd39dc42557ae7d8eb14a2f960131b53d5f7e71186dff3ba9199b752e41385e71897120deb6679211580552016c3275e5d4184c997155eb9a585fd4e5f87da03f9c88f7fcf713e80628775f7818654dacab3090da9cd587f3d0d9aa86a3c182601242fc41b87cf9b6bbadbda2d15b7b86956a8b2eb27b65fc7461762594daccf5f31bed0bdae297f9e127f5bbcc988833407d0322934eab0f7067337cdb39944adc8eff2554ec02d1a6f50a1e93bca80f0fc377d432459fb55c6c26f482652f66bbcb52b6155fb8309ec4a7ef4a3742a6a893616615e007f901178d147e8000b5b4aa84288bf91c0529e198ebf06f1f89f6e325bf02052c7145a06746ed144085a7b09e97de9ba9206c50318550e6b17b8363d8acd4c3748a5bfa605aed8bfe9aa2ac38c7a0cb375a127d0e8163478eca8f43f1d6fe7941b97f4ab76e5d2d00de9ce491bbf28a1f7692800e00104dc1a185c72f2bb1de2bb9aeb8b12e26460c6b3b37078bf16c2a7f29fb8284c06a117a5cf4c9697692f7788b94e3c0ed19bb4b6fd227993da4f12c0df5ec4dba3f019203d063b9a810fd9eeeea01b2f87240bf4d0463e4e49867f79210ba457c61b3fbb36dc1132c5665a148f91aa860289a49df6dfce9906202f325be1b5e6ea4eb15b6cb25d95ddea067763b2163bd17ebbc2be209d2849e8bebb21edb9e7fc1d969e45175b3c6624924955842f328270a704a35d4f09cc944bab0e4c7ef9689517b640a6f59b4af96668716275ff06884373ecfbc28ed2f2f669f616e3da6fcb090dcb9f638fc0da8b105e47fde89db32390f4062a85c81425ed71e98790473515c01f0b3b4a2e935e84a7e8a990c537b514229f2145ab37ed027248cdf6be4490c0fffbb10660fedca091f80547dc9d234403b9d2e61a084a4893b1fcdacdf74dffb83ae5f105f5bd65c3d9ab58dd3e90c7af3f686211d01dfb9b66fa98d99c8c4caff5c310f943389530c8dbd4d165287d1d5a61daf43bc517a9c313c1e45627a647f665997d916f8c6c0c4d0f1c9c47f32e6be4114dfccde3d81b18eb228b1a045070711e7f4a18d5d7578bd23b425c848880e95e063fdb646182976a4d809be5915198b9eae6c75dd8637a1edd5167dd40472fe7c45ae4117ca918af8206526c2f7024b9c23cf25c43503b070bb00ae45a2542f32a7a1c84ef5f1f0901ad6234a63c8718b60682712fd8b61a9355d919bafe394de780d2e1fad8c32df17db79dcab9a3bc9ce7b8d349d05afec40f905a75e2554f736da7572b30dbb3997d0cb644e5639ff40acd042ab9fca9998852e5d4de83890e216491fbdb1a8ac269fd5b489cb394ff038131d993e5f3661fd7abb2c33ecd9ea9797c554fb5639805c0a9e49735156bd2d23e196296395dbebb96d534cf094540e3f1b34086b6d9e1a547b8f9faa0a1239509308ca2461b99979b5e430c7ad50383cfdde0e9475d74ee5f6017fc56cc57a69c913b5a23cc25360af80afa1d461f162c628060f1c7c5b19e0de5956f04d5ad399b711031f0ae94e59c1f07aca95cb40da80705ee80aae6482503c7e741c0763354435cbc018ba77fa288faa3fd0fb6cf31140c9979f299400e6970a60a78977701f11947999a74ac7e437c8fc9320d7ca3a4d3bafbaca73e4c4fe05dfacabd6e39677e0ae81207bb878d20057027f2c406e9a90040580a54657914661ffa6ee37884d4bff1c453427fd1d03945b036e332260926de14178f8ed1a22e20570b640324746dfaba25b7aa2d809e855f8916f497924c317ce336410f483eea5a932840ff2a48aba5884e5d085ec91895954194899730c9db7a5d508fd2e4eeba2e499a4f26ca0713f10948e135e59b9fdff08610c73ca3beab6ad3168856d66f48bb0f2692ea767559cd66846b68139fa1fae6451415e215a166212178aae9c58c4000160701fd9d45bafd490c07f39dab4493d624bedb4a1bd2338e059391706526c2e88407dde58b8566e35906ac7ebc1329c8783d8547ec162d2917dc59c6ebd1515dd4da0674a1149fcbf81c2508784aa9b767252c587a0473eaacca8aaa3d82aa0704ddf2c3ecc0594a2e19621487bb315a1ff71c46f5c753f7faec9c874ea753fd65bbc9104b657639d9ee759d538aea74321eb36b08ddb87deaf83dd68488f263dc806a37f73e08df48f96299890197182a94e49b00c20897c6ee6805429f54b3ae507bc02ba989cc5990b39b569c653b8c9e848914484ed521290b07347375f343533fa34997adae31230eecd078c3f0f676022bb0afb92634502a42d06bae8637d40c66d78dbd98790984bfc95b1f3c2de0c5ccea58d4c34a266ad4b73c324be1a3a5903914cb0c8dd4b4e12b08b3e1b4696a5e9ada1d34450fa0be1cdc56334c4a389114ad32c6631c1f863d9774ae735672ffcfaad89e0a67628a7cbe9aae18165e3bd605f5e0b45496e63bc2144081a0e36ba4f12ef3b5385b4b0a5d06791e1bf53cec274cf3d9bd9d700f51e37617041924503c1b93ed18f9eec894b8ce3ed7f86f83210817738c8676edfeb2c018ea8054a99e13cbe2d0b534dd60cb721395e352b0478c13c2c311cd6e195a4279391ba434b9270191c061d3b4b41056d58fa25a2c748d1f98019994147f12568a481ea8f48c36611522a776783140a7be70edf7208add6694ce3f3b435f7bec091005fb037b9ab0581f935fe7a0f8380935fa02c6eb4bf00ba57105e829a9098ae6bf00a81e809ad56aab810c8d65a96d65119bfaa442487db80816b0c061f21c8191505f1ce8a532c825c25d8073205c3aaa8508e0803648af45740338a0be3c3446fe5faa76b10f36d9bff6dc82bd0281fa0bc1caa4e852efabe1f355f0e0de0611290e606a5e710ae4a602b275e2f2ccadf63acaa2bca72f5140af30e1b854590de6d105d88f187250c0ce4e6a9c1b5b056585d5cd43c366ffe9544770c6f43cfa8ab9653032117f8948169bfe43bb385f697b1ebbb3aa9ec7f0874cdd15d7a66057e5e2b01b47f3f0d7614328a4e6b42f34171bf5648c36165d77a809fb02790bdec19f3e6baf7a0500c60bea8969122e58ac5051877edc6caef29b48528439246a28b6ed0958b44da675e300918844e4c1a5e3e5b6f2917ef4429e44c143aea09c801675581921e82bc3e86446f87c08770f30522f4ce20193b2512a8679ab484ee37bec0c7dc8b6ae5ee86a5d9546397ddf040cbdbb9e9e9d535de99e4a86b11eaaebddfd0a9ae5de722709e571719425fe039ba743c446c80c042831a4db18dea3e45a790701c50bc554ffd0edeac3e7af1d63362028e4b5d476b4e353cba9508d0c28b7431cd249a90d6fee545276aad8c99bc007145aabb33988619d7fa1ae801ed4918499475acb103a20a61ac4b71e1d57799d012657a6e46e4fb2ae5d9a93730710fd9d10248f86c4b4dda4767d78a80896afbfc60dc4bd7808db090a12afc3c301c17b95c76d59e5daebdb81ff3017d95f9707d348d3dab8b8537ecf5a999421a4568480f043ce5f51576c97621670ef14f9708bb82596be8d7412f9e3952bc11a5c98478db1048e4f205c4c85ee8bc4827ce8c0963dc1d9ca9d5b173e455b58e828943acd6cbf0ddd6c5b796a1d9f651d4b820c0375786b1d4e67af9e7a7b9fcba07d474a6d19c75ae3a1df882ad942cd6adfffeb7450f51276eeb321e619419db7c929083c8cee85a23ee2cf6e0d6e4fb98a71eebd3351f7bc9c8e25b3e7628edb55c5c57dc13a2c8bd65213e7536d8e2a23b438617dfca7164ad4c851d26efa63b0e8388be26e2acf8ed41e3627a724bec77224230bb6aed438e69f4670f0d08851ab4c848330b0fa53ba2d16d583e16837d002074b7a9638371f2ff98bfba3574abe259e6ae7acb36eb151b053ee4078069ed4f6cf3f2f3900d880f78dbcca728707c16f94f3db0393f8b86cd75f233468043b3107e8f4493eaee8a7e8a17f99736d92d802ae0e3b70db55c436dc731c9ec88c738fc70260f406b638d15695416fc8f437ac2bbc349e95013fdb38344b15726793b371e27c1c2261cc4ff3cab5b919f1bb791ea9f8e2782cf536ac3d20534e064868f920a4316900d74f77a3660562273300af7624da4d1738179c012172f589e1b5e0699f72c934e68207c023118a7ff2eadda08b854c59e212de60e36aab6dce74aac45776b42081f6f1125cae942827b6c19400012974accfb87c3ae1077c64ca678d22671f8ba50f6eec4d211efe48bb802ba3e1eaa15e1990887a0be0303c4e0488120a04356195268e9f8a0bbb47fa1759749bd0bdfd051b18c711c1af10e53a3830277b108f687639d159472d8646388d1d45346cf8121fdc80c091fa0720d458d396529ba5342aebcba8cc921c21ec34079d6344ff968f74ec2c3acbb10e9c5e7b0c368a984181d83e18838f1584f83e5f9170ecdf690b68915f2e3b7a32e9b6785237e54cd74890531de7bfbc517c29e86d3a6417f9fa00e5fe5b088c7229771d0c5e7f829272dfe78a88213b86d1ede4c3fc5938becbdcaa6dc6ed12f215ae5a8ba9ba3a017718020d8082643c25c6c496c2c97a6e5228af4f529522f70086756df85ddce89fd5414ab1cdd9170b0ff6def1775029b794de104620b79e067b22e483b12bcc067f7f0de922f7b6a6ccceb9693072d3de3a56a955b0b0dde37592f3d72c10264d96986eb5a9bdc05735de1159aa746e3625710c27d2051f600338ba325e207e417a67b7c9c7c394f5d2ca2ab33b5229140eed108444555aa07076c3ee9e49cdfe0c14ff8030ab7f43899a04a35935ba95ad793fa35563555b6b02478445ca04c35631f4ab9918e4478d9535a4ce2527a9ff22ef808c7395dbf225371f78c60eb4b20dd23667c3d1a1b6f54daebaabf3a4f6399a982f21cbbb99b76642948ec1059c867e681254c089f4536cb4149cf2cd25ebe3581e8a62e5a2c39070b0f195fa9eaea21ebcb6a04734e979c2197a429a0d6cf42a6ff87bf1b09a115eb5957162eb0f8239ba853d6d29c5bc804c22dc8c8e0b4fcadb870d9ca29464966852b1ac375e1719233a2435922d68bdbea1098b9ed601c0b12b2b289498332f14ca08c9a9f36c894016e60a59b662f03d8085f6b5dbd9a0e2162f7e3ee8c219efe9731d9170d319aa7faded6478ac024506a2b82ea31873c42e0d4bac5965ea791b4bf62c9b0f93f1cd16661190327ba4de7430fbc9d71c81bcd1e34592c343b9ad19201606441c8d3d24ee70b77e406c94c267fb8faf32655889c62b468af24541af320583f55bc6c8b391d632da3b9e167920db090d314838d5a92b1d9cf86c0b711008897bcbe8d08a015072668daa812c4e31314c0cec0fd692c5cb0c00f31cbbf0e0a46d13d8131e8fce54cd0761850e3cb6f3b0f5d858535ff4e234bdc60620622ce19960bde9251d8045a1e640e036e420aa037842297aab67584d6335debcce55126de6c714b325af7715a2aa72ab5596457ab228399039793f16badd693dd582f0d836375b0b62be5b210140fc94c9852da73f1b3a2271dda6c66e692250f1c2536d1d5d928343e78aff970c9e8450dc5691efbf90aafb9a84d0762f4010cfd026af42e995a304e4a4a8b01aebaba529353e6effaf8a8b955355bda4f706bd51d86eed22363475458e22188743d619c9500b6150566760f8461100832f2b0e58f6ae11a4a9fc96bddb6121614a2b448afffe27ff13f698d104244686577f70e640aa608f20878c792fef24a857f78d9bec33f38a8379c43beb498b35c8049e354d57319c64b241e2ac4256fd62f924a29a594d1a38f70161191324acb08e768262ae46b041c1cdaf27e4bb08ee742a03890b49d1ec2accd4a352bddec49dc6bd277fb2d2b79394a6d5989deec49dee96bfdf6a49dd7735a7ace5dcb518dfd979574f29795eccd4a5956da4eb312140792e8b97b5949956394ea3b59c9462df53c5969272ba9b29277b3095956caaeba4e8e53bed3afb2926acb4a5e1e012a89cb5bd6f1a1f058149f26d1948a3db58ad468894cdf63549c22753f3559fea26cbedf302699341452616729ca4be4dadd9fb5da65596b6da51f6b030d87783ae27be674351daabcac4b8b504bb31fb69b6d99a61853104db4b1a10b5806860e4528a5941ab135766518f95054962974a6f78bee6d726b1b16ec58cd5e8e35853685f6467bb3441241bd65599665d9bd3d776dadb6de8a87e42b639259354c4c4c466c1b286dadb5d65a6bad145192089eb96a3e372d294924859c5ba4ab912a268b3655d3b45a6bad9aa6d5aac1e0433f562b8a3351a821a21151c28896699ad6c6496b9a7696a669574a8ef6fad087a451f66a354f6b9aa669599665cf90686cbc5049562b064e317852422a061b5ec0450b27275f58f97204091b37ad0c8a2d50c490b041e3b591d2dac8f9b22c060513922194e4e00222b366ba54c1440a182c64a878c1c6059a53121c98b4c0d204163ff800ab5de84ad9fcd082124f18e132c308625823450c15394e289923509078a92ab8ddb4ec52ba691aa5945a9b6536b3194d622bfd586c7ed0fb3b0c30892c48cc48b1028a1aa0b86043828f4856330d2471e605526a80e1cc1598dd82cd12364d5e6069185b23a766b135551041c364cd9635572cb7d1907519ca17872997e95d1365cd94ad09163ecb6a3de1e509314eb43056b7aa3973d5a8b9463227b6a6c1a283819a259aa6695a0cba492f0ca2b88095b15a6a8ca489ed401ee87562cab499ad6976d8f99a5093656156106344030d87682187a2edc74aad6970d0b536d9251e9a988272468813208901ac6a41458b55982a4d2dd8ccea28028c292fac78daa10cccc60943458a0e8c11249c561a86d162a504699ab860c178a1ba71819a793221922c4b626bad637c70a26badd5d68f95351cd3c312342bd0fbbb151e1468b6e87ad693b5d63ebd348ca16162e24d1249346142e74876e48b16a879e105208a5812cb8288cb0499255cb61eb4cf12b196081357b429549995a2b249745688189acffa887382235678d3421742c02a164b545ed8c870c432e1a4972c31a535610dc7ec808225a4f8b223d61c69424aefef4f4bbcc0c8122e2832a68a297aa5e19830924811e33f264b2ea4f9a10a1ba2507103942b20b59585c2152480d2a4822168a00166a5b4b5d6da4aa588b161c1fcebc5c1c71a92de05e20201c4f552331438c9128749052f1c090366add0f60c114f7c20224492139800cb1538430431842e0185436c891aceb05972668924fb7eac3344d48c056bad5dd28186648ad070e60a27f7d00edaac2e864f92cfbed6d72af36ee9f9ef979e49dae69da4ed2bde1ce89aa48170904589024ebec23ca1058c12b1326ca262513a88d429204077c0a70c114d655870048c1657344bc3302bb461fa0c355afe7e0946f1128cb32edbc587a64ccb8b90248f5c514c4c4c2bc0e4873cc8a1e5d4a2444fe9e20309f48662246cbf74943d80a1e5bb2a74482845d3d012c32635714a26d824615a8149c2a4056f89bd4caee0424587229c58a1a2cc93ac498a93322cd8261d0dc7a85992029786b138536d969ab0808408142079b2e28937f04b972a5398f030a4853753e80798c08b292ba080228a1e628041291e20d964960a96cf051e0c3e1b9a5a62aa58894124abb58c115d2b918c0b2f4d44c4992355040d6ea2923c7d70a26435b6b0c93204971f9488454166d54413303360d1e28937359881d51890b1a2227382183470c41921a640c57c08020a3067784073e5490c9519544b2a991974ad4e36b352aaf022658e0f2e24c9a1cd982b5a3132489e701ac6c6c4e0ab2b2c5766748c13b7ae0183048e930f8d09a3f78b6e5d02d9acd1fb55c4a589a9352da4400939b0f804049e98c0d044125b28b10258fce7910c342d7882c30a96307244510ef089242c7881c80b71a42401836a1e90590a1819d3450a9c15963001acc2608c912d36e629885ac1344de95a97d8cc6e60042b1873441324e06206669d38b365cc9c392c40caa3614c4c161fcde2e4d230260607316c9e6e26e6059da54d99fdb2a294d2214a297d107d898939fd407abfc8664dd6643776e881882d4ec220c9a1091c6458a2899a8298279abc7902872749a489895912c3a7612c0c184cb4381246aa482ccc9a68ed211a6d8778a03b1ac6c218711a6db5418cce6cfe5aac8fa209b3d18cc5e687336fc6a0898a41816568626b9c60f2b13a0d636154a0f7f725617e20720296235830878815d20c815926b405c28bb6b1305698ac71020353de3091a10913512658020c1130920c0963a54e1636274d433247a0c4a9e1c4e07071921dd97032c59720987020e20906cf64000628e8010c374accf002987d01982135b0342463c4cb954657c37f4b7a4acf182fc0c10f3ea0874152c8f4b45fd2d0db71f38f791aa7f4928c0ee032e03e79d404b5e58d1c46244ec1a05c3b6e9014324dbfa49720046c68180bc304e90a52499838d560a20613499aa0a1610ccc096a3dac357edb6ccde8a51aa59b566fcd6aadb652295d8c28a16badf0463cd5a28423f3c65d64c5200a89e423cc37d3f8e2f67af4dc19e8f9ca45792f8d14079a0214401142cf431a5a875c92914ae1a000be78ed317e14cebc63be55c3ef6bb562de5543288f6054def083793a648c132f9a1e6a5a879c98de28b3ec0f4e22683493f03082280dcfd148e7954632bee42b66f556add6acdd6ccaf8d1faddb2df5ff67d6396f3726a3aeae8780ba4e36bdeada308892212addf15d21bb32eb5d2d73c25a553ca6f0821841242f90d21845042781a65181c1cda5ffce69c306b5f1314851ecc2969917cc56797d96da673e63a4fb36f4ae594945228a5cc72ab76999432bb3b08ed3a3d6996af7c49209da69fd2cb274f63f642182d6a862cfdd0660a395ecc20c5490c30ab84b642c4405b21b25019528316dfbc8188d450882c5436d532c38fea0e9a763404d32425894ac330559a6c9526191ac6c0c060040924336454e1c26b3e481a452aa48c6207cde8f90e7a312aaee839e794c3492edf0f075b2d6d014e312ab468aaa1103a3c2d61b9a20449509912020a942484d8218a263149b2684fc33173e68059524f8d0043afe8398aa1e62ae551357ca47b52af87c743d64ca39e147e00f58cd2088764c385374346c0841526a46016891aae0e6490ec44e910658b21513a6c89aaa2846ad5688bbae274e1a5f4665156caccef421730e932278c336f46400496b9406751559464b67e6f5cd0fb45b736a19349d11720a4cccbd76be815d28f8aa6a7127ebfa81dba26c89172c1862252a25200a3471ca129a535fbb204865a29a5b122b4d0140618a5b4d21d0dbba8c088eed13056841aab242a2a8a4c17324f7adf4d8b8869f97b6f4c3f422829a574561c29a533cf2632595e1c7419a345efd6982b1cd038659441b682e26e69967c415b259d3746cf9c5a639d5fa4f2057fe101025b053befe9c51c479f65183ba89f9852a1a7f490269cd8c17c969589418e86d2e803954ac9d73c8d124e15bc348ae7a66a09c7c5ef255ff0524a29a594b2622aa594320eb5e00df84ebee057e36c12f31e217e50873c90a21ff4f3dcb6b4629dd7a39dbf1ee07bfd0e6ecd173ef9ed3af89b44aad577c9e2ae83e14bb58b3cfafd692edbcdca5a7390aa6d94ae57c3b981225df30f9a5592d670a78c69c959ad9b51be7d775c0de10debe3bda50a7a69ee77dbf2568af0833d9aeb60de2ccda9eebedacb9b03cde59d83cbfb469cea9bf33ccf9be179de37d5dbcb1b880779c7adcb148ee685c0ba8cb76464704a450687140e959246199cbbf490b8cbe50cdb47895bb6ef9feffbc91815b7cca328e5fa1625cb5d94a07b794bcfb9b865cbb22cd3e0cdb26d037a97ddfc63bb76299c0842d6d276ee4edeb2831b2e71770e9eee999675ffe1aaa560e86d7b68a63aa582c6d1dbfea09e0fd5bded3d0f2219b0bde73aa40a6fa97ba4b49da1e65be288a36b448c293787e69e6d4fc7fd6cef39772efe6cef994726c46fe7f2e86899c201ca41a4de9ee54d75975dda55b7516a1e49277c17cf3f9d57d78332d07bf2fe20a522e3826ebfa994569dc5bae785c0bdcb3fbaf7bce354312a1ee7fdb3739e7c9dfc1dc8d5dd7ad95d413988d4d979b84ce79b171577f2cd5f8e72e59aa378f2a6da7add756ce621a932fcea14cd6d556b1db65ac3506fdbd6e16da35aebb11ba522069ef11656fd07ff2c0c75c4fb47b3a009f3284649effb476fa8e65a77388ff6a7673c46cda31bf3be5ede3f264c2279ef70e62d3b75503a69e9e99ce3f22ed29e4efed1dd9ed381a3f3ec3082706307f21b82d1dc637c4323609b997f74d739f74d75de0159ef31efa89337d55e76e95cf5ec9a308f7e7eae9cf27d1e100fb4fd06e2818ec7df455af518361ee89b6ad567e016bc61ff23ceb8f57c74dafece232018a3cc3d8348735873f7d35cde403cd0de71de45fa18ca1790cd7b864ad561a83d5cb58e87add6c150775de7e1aebb8ece75482846731c4c2288836978b8b782ae7fbe3dd05c8e9def02688e3bf4a2b943f8818b3ba570220845d2a875ee3ce00731ce5d0111040ac40ee4b94b2a45a574f618638f79d5439857e525ede14d3dd09cf74cc752dde125cd01f140eb640a2776901d086faa3319b995c1b9d85120826063073283202c827c61acfa87812e3beec3f3856f7f1a7eaa570f09e89c86ed51d0dd39bca9f68cbcecaa2cfcdee120547fcf8248fd51ad7ddfc5528b7c499985bb3cdcaccb71b0bbde8eecdc3bcc755dd7ddcb7b8422cd9dbb0652a4b9430f89eb32bc810c65de8eeedcbdee5cde4157fd87eadcb90eef21cd6d60487743ba7bd0a13c5a1d805e3ba4dfd75187d1bbde59f75818ca174ff630942f9d7c31f78f622889b4bc8334f7158692c8e6cd42caaeea30d458f50eab1e84810ce9ef9cd669389e91af24e44bfee21805c3b7e51499451a6d2045fabb6a4a15690424b54823f8bae50b6fc4c01abc21afc21e6ec9973c10b642cfe1cdd2fb4ea20fdf735ede2ded7de3f0feba73dcb977d2283b774e85a3cef09c328fe8e5e51569a4babca7baf2e559cc922fefd143eaf2275ff11cdef986a1be51c3db7b3cf5907632fcb8c720b48708a6a6a6dc682f0369e91d4cf5868be44bfe07cbf7e00f475c80aa73e5ebe20be5e36eedb97ce5cb8bbe86515ae46813f8a08b348c324193d6a23bdd79513e3ce99786513db8d1513e4cd19ceecef174133f3bb7755ff7ef57bee0f7cde9c079b47abc5e8f4d7b991702cfef21f70a757d9246f5dc390f89e3386e53a954aa0dffd8819a4ad57ddb7e0e3d24554e61fad8ee5d878c492208aa77dc0fed3b3de7f2967ae73d794bad5d87e4ba9e9fbcbbabf08e7aa7dbe1541df44298d4c3fbd35eb6a4a482d76d219a7b97bdeb98dece1e44fed8ae82e6f09edabbe7f198ba76792f7178539d5de55d751d93c33bbae021753985a977d435fff03c1f5beaed1eeb3b3ea9beeb392eeff8a4b37f87d2a84795b9bcbfcc7dd71c446acf47db598fe6d343fb966df77c18b0d3ddcb3bee20d9b573d5332e6f1ede394ff5eed12982c0bdcb3d73bed633d579f08e9ae79c1742772effe0be7df37c74517baaddca3f2aaffbd1bc10bcffe854bf9ea7fa629ad3767630d49aa669dace96b9c70e7674d2d97df0ea3d58e72cfc5dc7e4e1c91290af4c758ed3ba6faed354efb673e7b82e268920643b888ce193e4e3beb92053abf20fefdab9ce7bf7e83140c57dcb9d772ebbb6ef3ce39e3d86945a9546efe49e395f90a9bbef2053ab9efdfb0ac349945d074bcda5d1d9ab1742f71f2a1f9deebabc3bb0a4b97fdf551ed2e761a8395cf586a1b67a0381f62e02ed79daa37ae3c169ed1de53e016934cf5d02d2086aee314904216aee9d87c465f8c527cd452f3bf7a47710a9bd674b2a557645807e7507d0af329c44aa2f690eefabb9777853ddddc32abcb967e764e761ed9b87977487e19920536b3926891d6439c3bbab7912b124a7425cb22a44998940054219a524c3c5e32a6688492111931242b7684c8a09dd922fc9044e16ba0a9246ae1ef315aae295947ed298429c9ad66acb01bbd1db9a21e4a0e62d5fb9b9821c473be8c92c0f334c1fbd10e4e92ff1fcf490e6c4f4dd391e2ce5c45a9034d2e8f3b6ef3945625d62a855f08696db27def21cfd96b7f49325f1f72069b4caa4bd43d208ea90d57bc52ed67964cf7db0abc77dcfef7bb28b95772ce99dbb7af0dc3bcfbd7bf2d9751ec2bcb5e7c13b3af8e21ff3f72bbcede7b797f43d8765deb700cf7011f57650ebed903da4ccb4287b10ded82a1dbf9a77882033c834437dce037e10f58e9ffb1c7a22f8e004c817e464172bfef1f37b1d3f580795af2069a43d9ee36ade3bb87a3a41d2e8560186d6eeea51af9de7da39b9efbb9f4378c3c707ffe05ddff3e8f9b83368ed3f709668db651e92ce2b563dc8fb7d84f0c6fe39fdb74bcf87f69fbcaf0ffb9a395537a4f2762ce9ef41f6f7f53edc7db04be73b879a5531cf7bf0bea76761570f7b9edbf36497ce5d3d76ce7de7dc084422cc09421cbb9e7e751d72077fd7098ff9478d0fe51f1b3c02697519484bd7c854be34f8b6c15b975e0f178f0d32942f0dee67c8d7eb4499cad72b7fc6a1e783c6f17548bc55d034ce45eee288298fa9699cab5d10a6f16b01dd4d1a3d06ecedf13753f9c2790be16c1784250d06c44ce5eb7eebf29ef12053d3b091f792a6f119979ac669e41d75d0bd419f712e08e798818b82be8b4208c280fdaf067a3eb65f08ef13b4d0a787f473701ee5436954e3f9771ead9ecf21edc8fbde3cf42c5fe81bc699c6d0fd7d8dec25d0c8b984a1eb9bcf80a8bbfce3f7783cef251d85a0d7c3c5004d773f8e879e09aedba820a286f25ed2431bde27e8ed34328dbcbfecd3370b09e57df515ba17baf919fce20de443d8035177971e8fd8c3b514f1edb77d0796744472751ffa760daf9ee1ef27e8fb219cb4baf60e93b0cad7bee1a42f6717daf9322eb47a9296e14cca329c44316f09e8dd7ace405adafee60da4a5f15b4838eaff3ae6b1eb3330d532f0d6a15bcf00ef1374eb45334710865af3908032fcae07a276fd7a3da0192c66b0e818a71e0f968e7117de51c700c25147bc3f1d2fde2d7dbb6f79d33bf5f60dbfe43853248b726c18fb6ee9d6ebfece23edf7701e69184e30f4d6fa86d43ad7c2f06be12053f3d0c00c1625ee0fbe0ffe7a300b5f4f04a86f06d2eaa181192c66b4bc0fd307613c194a7e270b814acaae5dc8f7d575b290ecdaf747682af265d7b6caae7beff445b2ec52ddb5e5a4242dbb549904eff4ae9b23e09d9efbbc2b02dce7b9dfbc3f0d7bcf3077e9b948d0ee3d49bb9795a0baeddabb9c949dcb4ad985308b83502d2b4b052d721eb03981061f98a0589304531b980d63882cca1089d3c5ce10228e708158d820a7a9c8871bcb228ed6348cc599a2c6d57d0936efeaf2084d45e2b517895908948b04f9f86e099693b6cffa4d1ebe67ea83304f0a4a891404f1c4c404bbb7af33c743257957dd27c5df6b3faf52a954f9336112d57bb9e2ed1acee8e593e8e53c7d9793b86f59499e7b9c4f8a9f525d4e9a97f5f359963d3e29ebb22e17d539b3527d8c5949c7ebb5ef350620ac8081044f4c4c30088b75070661453118b503833088c50e71525085861dba4401a35ceca486212c9b73be3edeac142f73bdcc74d667396a124d915ae2216c1e0e55bb14694626c67426b5ef579c1743ac0495b4699a76564eea3eb3773e4cd97ba63e799fff5c3ec6d327c553fa78564e6abd9547c84a50493e8fd97dfe937db2928e49943de6ec3c327b4fd6be83bb7378cb4a502e12eeb527dd6b59098a75259edfb372d2ced324cabef3f89895a0925098445a96d9b5fc2495a092e46356da2eb3099328bb1277388974be2ad259a63a84c52c7ec7a78b216c0743980ede37fb977d85bdac1461377bcfd46f761f262d0b5182720084d5db43d8cd42ea216c472d3a7b87218cc310b6c9470d698426fb221156617028cb3f624c2e4515b4a568ad151c173f2dda1e623145dbd7ea2129e9eac3bed6fb205253db751ade4b5adbce417900d57776ebf9b0877b1e7aabbc97f4ea2aec7498ea12e3ad7400555652525d052807e01dca01783eecebbcc4dc2bd60ef1761586308fca6f782be99d5d9bd043a21612f9eaa1cee0573359abb5d9d543d7bc69bedf2655c241017c58c474e4a4ec99f3c97919a327650e2275adf9c77ce4a1a4a5aef2554f71101963174d5074c60c69674ff3b49f36df19f5c94ffb3a3da458e9ae5a7eaaa156b2b75adce78ab93589e6a4f2d5dbef4b654c0107874648f3a4b988ab9e9a9b5dec228eba49c3d8174dda030d635e90d19ced22b4db2799d468a84748d3248d6017275eb46a84344ed2c8151f75cc23a471d270082a2125c75e71a5885de144975499a16a18ab028586272dab3889555902060787f665821f44b863140de18e4e1a4ea21a7043290d377453348960dca2210de88228a7e833f29f77ebc7797ff8f9e60be57d853e54a4875e83069631bd230e1ac286f26e09e59cad9b58b66512c95f9cf7fd9ef73723ef56f6348f6c6c12c95f4bebca37258a96f7db991a2dad1b1b53338f20cc8d5426c7cd63558ac94699474554e081f9dc670b10dda2850269b9f222a757ec947954a4e7445659888c4358119f6ca364213dcf768a0c1b258a96b76ee69152069f4f32de73199f4433befa8c0ffbdc27df9ecb68cd9852a5e45c99f245cbd729f3c8e2bcbf3b23efd62723efeb9a3d6959a7581b8b10f616ccb6681aa5a99c9e15138d8a399df9f2a4266a124937d4da6c4b4c33655be691cc428413504869010c4c3e8bcda3f982176058c1728310306944c9125372a69480c96751f308471131ac9932e205269f9d994711882e9e3869e184895e99474a11a6651e6d9947b179e47379fa651ead2e4f992a75aa5908cdf30c7da259c8cc534d9479948500e5e96612c9cbd329f348c9490030a02cc4274fa9559e7226919467b49431c35a375a5ec60c19323e03a73023caf89e5b66e0a865ccb945cbcf2916e893567bb3afb474da37aef3543df78932579fce0e8be757e6915384f5f8fcb4de64e483b9de64e4c2621ce8f2f3691e6590894c2345b0a06c218e58218e48218e780807102fefc23d10477c0ccc8238e281300fc411dfc23e1047fc0ffe8138e27d700be288efc14010473c0b5f88239e07671047fc0ed6208e781dbc411cf11fe6208ef815ee208e78158e0171c47bd80571c4773808e288e770061047fc8665401cf11a9e0171c45fac8238e233ec411cf116af208ef88a3f88239e621d88237ee21d88235e26d7529c3f63288f3ba79c73ce3981e4d0f173c69d2a463c019243093bf7d5f35b7db33e57b867ceb7c2fb3aaee66aa552adba19bd1df6b2527a09ab9e9a9ad272bad00545a5c00bedbaef83ec839daf54877f715034756eed472da5749e4e3bf3d579715c8633ab57b8ea1d207d559cb6924caa6df37a4c0c334c359d2a0ce54bea1577bb8a55cf74f25ed23aaf780f695650cf5954539a77f5f2c7fa7ae67cd959a79f2a0fe9cb68b6caec57d6f6b0a6946f07531dbd1df5df754c1dacfa70e721adcead30fca8ead0a39e2702d4340319d2aa7b5e8fa02d57b0d1aa73b15b61aaa1a71aca30d42b1566b5a47cf72d78e3fefbbc780f5f49441fbd1df399f6393da4782e62f84dad513c7310aab553af0702a6a6a6ee75c80ef7ccf9ecb5cff9c9514f04a86da6535355c75da46bde94d6aad55023a842830c333891410912294a9862e0220a1c18a08092e605245c00f3a48b932d4d4af044022634b4e0020b49942c493244491749a49044e1e4c4113346c41419a229054478187225ae50039429242c8481a469ce176060f185145ea8e9e20572c870d1822db868d1431c2c59d88045942b9c98483919b1620e9c3855bca162cd9b25a68892a208372b88e20431c8020515ad8d0c6c9eac39a2e4892344d47c01832c9c78d3049b3468d020c1449825863813c40b7a504207335492900189272e30a2e4082344a2be289305993763d8884113060930618c18e24b1045f440840e2da0e24586219e08a1a4cb97e3eb5284c8955f20208b03bc31009b02a00101890fc21060881c411cf560a4c300a8782083009e04a049098e2622455f74900500dedc60c3019a0d90d0200cd110af206cf45043071a548664107a928928c14488fc8b1959c87893019b20342e246284011aa215c44f0f3e3af45061c9c0f3646788129d2144be2f5659a8de786c3a341c127713a3b5e0ae2003c26aa939d01be62783fcdefa58395cc8febd3ee4c14e8ea21c7f51971596381515c9a22b671671ba3081a181348c8521a5b9959021f2f14a31bb221085c094e467fe4690f94ea2d5920ea9828c0ee06e8515d35be92aee1863b490d61af3bd4b35da2b45955a3be546db1860d6da9a659aadd05a7bb323591b5abfcb6a3579fdf5a1d1684b474b6353476cd6da23b4d25a87ba30ada0adb5957e68ea07bd69189bcaa2f78b32af094b0031888982a5f4e954d1348c85b1258c16e44753c86c151d26350c1998d8cc86d182678411353031e24b14dad390cc0f5128545cdd590fa3d622cc3218b315fa0863bc657d4d5013c253f982734a286e47d4f0f666d76ac73c5f1314ad77cdace56f12d9b726910d21ea9bf71db2534616b839e6dbf99aa0220f8d36bb51c22855f1598c36bb62cd6ccd3a1fd44d306ace18c7c54ff53541c92b0720df0405e3e7528c1edc286906b839e707df9c9346127034bbe4a1a6582ecd3801fc3ae2a4e539d09dde9f1eeae46b8903609c1b7a38b3c5099e347903835687e6977e8e97962309932f80348a5a89bef2958f4cd134b7e40be2a8618c0857814f6a1815c50acec31142088d688430c608a18c1f440863bc514fca6529cc29307848269dc29c9a82f0c6ede275cc1cb00f723507827c1ac21b1dc4cc83de5ce333af87082a8d3d9434d53c1ef2d36380dcb12435f442a09d3de775364e19a72acb720a53dbf9ef98f9cb54bee6151ac4218f9ab21b392ce3320c55ffdd5bafc7bcf6eaf1b0f3f4715e87b49647cd1dcd7796f9e2f7ad533e71f1f0d2a39d7c498aa11e9244f2f2253fc97c704a95fdb4565a79a57c0b5a713a4c5a89b10b2f54f8bc9841ef4e4b2f96e8f82f4b29e5a4312fb278c1454638a57cb385140d5a14f102206ea8928489135967951642d87d2e9aa97cf4d56651a44d147a05919661133bb2fa014908e2342901d3e60817b6c0903820d330d685992ea00c8192640c146f68802281d39730e2ec7471830bd6093738c8d1f20408a9235fa68ec8ba80b2a48b227a4743239882f8a60d72aae852c2120c509c400c112756cc94310205ce024c0c50d63451459a25b188939c325f857428872347e410210708cd691865c30ef0e8da5a29a497269163438c8b1fe41891810b2968e0a289253a1ac6b810c3051619d7e2852a23ad0a4db4f0b4c297242e98a289060fcb12fab15a2c1da50c1530aecc31034524c28593c8c593242c0d8588c3858e60d36e8c0b23dddca876eb520f4e9c7073430b7890e2852148bc50af1c95a434d3deb0e083172b94e122668815b6e00283ad5b5c918dc065872490d8c2c5135fc0229316533c7d680b377abfe86647b640a266d65a6bb39afd6818db824bac04196f8c38d3024d3534e24c1499ad3d68529cb6c8618b69710392264d56a68c40e28d0d58c0ea141b6ac499289a8c6082a26d6c0b175ed0c20b2da6801f401df2b5614c041a37f45005844030217620bfb1bedfd727c89764791a8549240f41884eb103799804def8a6f149bebadfbc290af3284689b2dde6bdd233c9bc8c3e441d9717c1840a54187b845fbe7c12c953ed2a1cb93c054915401f22081105b0037979c9e5cdd23b6e59e91da3783a087843fea0e596265f5453a39a6b79b7e66fde39b2bc8b6cdeafbf6699f71773863aa417b32e1dcc4145519b579a27d112e3a50037e81bf2e048c724929731c6e8f1a030af03da5e5e7a3c3a1d0f613ae6d10993485e228144f2bbd5e4c6f0d9d0cae13cbc50a06397e804f5c99f308f3c48542f6f8234da372c208df603b43d8d56061abae9715321517dc411beeaf5eec0d55b043ca88c70aaf69286f046b513062916244384d010bee8a1378f6b94b6d29921bc11a32ad5c640a0d6d5e8f87b8bcee480513ac6afd5bdf5450f5d8744e1d3f76e3808d5b7f57b37d0d2f702b9906c6c701a78830be1a87348a30d5eff5f83d735d8eeb92d027ddbfedab6b8ddfb7d3ca07c6d3266a1b8f9086ae918a350e61134b43d6ff1ae6ddb5cdbebdbf6c717d0b7d7370d34b89de621d9b8d0064298c67348231ab9da10121212b20164c3c6f4906cd0a041e31c0d1ef9f97ea8068d6f1b8d6f5b4bdf9c5bf265c3868d20201b368082828282828224508d6f190cfde26e08f3d88282728d1a366cd8c04019e0bdb445b72e8530d4d343729d73b9cc603193450349a04b1d34d0d083f03e41075d08efa885b2781fdd7d87770b69cb7be95e1dd3be48beba5f1cf40d0b0d1de83ae497c179746fde57773e6c6ec95737342484a10e02da4b1a48039d8b9e8f1934d07db076166665d96ae50008d31e81ef5916023582f64ffb2a2b2dc1b419962059978b04efda23c0fdbbabc77d7ccc7b49df77bfdfb6733e5848f67916162264f599957acefa875df1df214cc3ae98af652130e88510750456d7b2109aa1927e9e7d66213d5f4520fb9785fc3ccb77125d1f40ef6ebb430fe94ea2d63ddc2a01e84e1cc7ca4a4b3025a878d6b5fb60ed1127f95ccb4a4b301f0e6aa086865e6488a2bdc8008606fa7591b07af612b86bd155c277ed49de766fcb49dfb5ac1461dff501f43b42138bbb1805791709ab6b2f81fb771df27bccae6b3dd7fe65a59f6bf7ad4fcf07d075f5708db073a89378aef315ae2ed593e8bd27cd7307c2ae2d7fdb5a7adbf143d8fee8eeba425b160ada62abc3316e31d443780369e9186f3d7a48313ea073f19b71e82179d033e7bb8fdf6e3da4eddc86e11764d620d78b14270de5d1857179d2348ecffd39a451908dd3c0361e84a38ee193e4db28e82053ffc0a7f17db506d7a0c689bea97e1d4aa30dfebaf47cd038fe11df3dfede04d72317261dbfc1a38290d2347ecff5c8ef1e71bec5fb046d6f7605fd3eba823ef44ec80a59a1a1270d7d28ef1374f798f709fa6670ae72d0e321f41bf4bb3dba865e4276ed257c5f6ddbe60acaaea14c4276ed49d9b52ffe7ebb10def6ad536f01353e74ea8910758dc76f073a67a3d780ac8b381f7a0d88ba46f79c7be67c5d3ed0a1e7a346997fa8b48a59e90331cc184335034800483316000028140c898582b12c4c13591f14000c81a44c584496ca42811806411044310c80201c8900000000c6186310620a750058df6df69b6dd6bd46d67d3b6c37edb06fb559379b6c37cdec7b4dd6cd36db4d2bfb5e9b75bfc976d7cabed766dd6fb2dd34b2ef35c4ba6f87edae997dabc9badf66bb6964df6ab3ee37d9ee5ad9b79aacdb4db6bb46f68de459dcfa786454b250596343611b1b9d9585daca8666c9466767a1b4b2a1d8b2d1d95928ed6c68966c7476164a3b1b9a251b9d3d2c547bd850ec6c94ac2c546b36342b1b253b0bd5960dcdce46cfca42b76543b3bda21be6f0954dc31965a3a166d3528845af041b1d359b9e228b5ecd4643c9a6a5caa257b3d150b3e929b2e8d56c34d46c7a8a2c7a351b0d359b9e228b5e1d361a75d8b4d42c9a4a361a65363d258ba69a8d46954d4fcda2af64a35365d353b3e82bd96814d9f4942cbaa6beeed3df2dfba0782dd2e83d8b3ed5d5c184d15237da018dd26fd3523fd94c6c6673f6b2a1dfb2963eb265deb24b7eb2336db2953dd999dab2ca9fd932edd925bd599937d94a9eec4ced60957cc496d9965dea999579cb56e2cdce689755fe66cb6ccb2ef7cacabc672bf76467b4c92a7fb265b267977a6565dc81adec1d7666dbacd2275b667b76a94756c63d5bb9273bb35d56e9932da32dbbdc232be39eadc49b9dd93eabf4c996c11e7649afb1326fd94a3dd9996db2cadf6c196cafa5b6128fca36fca2b2adaab2bf93b3383dd9a0ecd9e53d599977d94af8b8eacd3404db3e0378a453c4a76b25954c3f5918927ef3d78bdbe835766787442554d241a841b45b72e86d221399fefd52af4eb04907f9ba18cc2215dbb8d7e92981d6984eba362b5383bbd8cc32b0fcd75a88afc8ae43a64eca1e2654be8bffb178ee6b0ae3df7fc08ff0906f56be5649925cf909c6b88bea664c281d04e3e3a53424691be2f9a1c049553dd919e3314cf48b9de94162e4978139e823eb9c84afe90814247957c70157225d4e738f3e83222970297b99dab179adae3e2880b24b1e1283c50221b083591410e2a08c278df4d5cbbb8d00d15a953d7f707e322edefc364876a3d4ed27cd9e71abcd727a2395b4aff9705506d603d26dfa0c31a74aaf6ea4ff989192800ed16689649c665be41005a90d26ef152696d5b5dd07ea50e6d56505f41a3b229923f64aadf0b8cae809434526f9c4baf2c0116d2468a969a7fcfbe61e7dcd9f812a81e10f7b1de398f9c92a96229622b6b197c12115ec8827047e228b23fe5429f158557bcc3876a582d5a741b9d16c76e5fa69bd8fa9010a5bbf98bdeda8cddb9f0b1cac891935b436713326e683dcd0b3eb7c1c0ce4461999a03f2512ee7fe68dfc4f6986d1c90e4166bb61bca8a3db4bcc6fa5659c582864f50c748312eb4290b56c0bf5657b5529c3abf351928269a70ce2edc5db5c099903b41c1256170d21890cf72b794a03f5b2eca21acdbee9071476d806ec4890d9c9511b3bb7d76e57317f37348adc36873d4b921cc47d49b716f6da1ec4c339df48a18d4685e48940734e175c4b2001bbc939ba2e6ec41d2a8ac8003616f4dbb9040366464ab073b44bab5424559c7257c4d43b50fc471e8c1f0a731da6abe5249e42fb10eb9cd87a03cbdb6a4c5653a670863595718f358c21cbcc5388bc206b4420a178560859f66eb1270059a39827597356dea7f2597e4ea660000462017794f979001a4074ccd5fa4e2acc28c9093c0989b352f41e9bc63b1ed24e14e210a36d8a70d3478bf9966e284d4b56b7fc8fa19627c86939f32158a38ceb578495df64be660e0f113d108465dcb0ad30e5f5b355dc8915f0f003b0ae9fbff93c2a31f3d5d444b93a6e4d242891d2aa7a5b7e2580d508b559cd06e94d7eaa1819946be637a4f8a41c0ab23c2256717b0a5b37c322c7830aae112375ddea19c383234773c7d6ba138926b62c88323078a3b45adc8185899ce9d6b03d704ae17bf0257885624313b3e991f8b9f74e6b9521e6bc8a10b7a0ebab9f822e514815f4ad0067da284c66486533031badc30d00b198df82c0930c77e144d68704f8654adcc02712080c2570f350a5d3459e2878cdc0aff1cad22ec5674c8d86e386bbec3d96f0355096316c1e1d86501068a2de5c9fa579b1f53046b1edc6e722f545c7a257c9b01d1a36cee58fc35df81d57bc75439af1e6ad033d4fe6da828ba783f0065cd1cdf0207a086522b34fdbbef0643256d73ca449985ee159866003c2ed9fdb5563579252802a33a1ec9726fce4e599534594c231a64b594f9425401524d616b71f37d7e1c6eabf82b1248b4c73bfd03636b83578150fd4f5219757034d5475fd8eac5c6368ccf21525603c52d58ca235e7f66be2a65152c43247ff989d350d4162883c19c093e8fb8d8665540405e8559bed0ab1257423954647b3734de09f5fecd0a66adf548775eb72e63702b6c3098591a4279a14bbf28a4ef03a6496c0d6666dcd641eb6e736f6a7779ee43781cd0da672c1eaf70e55e1baaf3ce61804298711a31f06e55eeb8f7806790d210f2fa550a1c51a1f1f9bfed56c432a9814026f1fa691444323fc30b0b11a08fa30b05a0be62d16e7348656f622cd9229bdf23ef997da0f7307294a97f7c9513993da471a891f3dde5c68af30236a420ebf24898de6c116831ba00c5d1cb22aac4032dd44686fa4a74e49ec9cec386fdc18d3c22d687e5e69c069831368730b190917c1e27562d6edc8b577b58f89f5873f4ac200ace9071ee2907ceaee8892e011de93658ff6116f8f3d3629477c17a47625ed3373cb96fd11e311143ac2ca378f8344508cb3a336e9f5798587a6927fe31312d1ba246235cda861c25ec76804cbc12a4a9eff3879d3e1f5236a768c760b1944e2940febc7290ff16a1a44781ee87a10c6a07d3689966979d669eb8d340a1562ca2403970cd17081bba03a58103a3bce94e3efc98cb06a296d7d6e77450ccbb7734bdb75269366741cd2558b409eb72398b894298a73dfc79930f4388d91dcfb67048d47e215bf2b98f86a58d5c2e89a37fb46d3a828462f1df6a0505c41bd53e57f400f6149d5da4fec5333a8d78ce4be6a8b64bee55ca2d5ba7a09876c6b00c2a62beea42c057a5a2b2a3d1dc53b65ea47cac914bab7b7bcf7707bf69859f44affbeba5b4ecbff58d0c4fa1c25965e6e9fa9f8c61289d35f181a13c40d46279be8d0b2d46fa86b12f88994a1d1e891740024f4fe7e2934c2bda1c141ddf1ab377e3fd88b3e811ddb1fdc74571abb73f349fcba2b114be2da4299a5a8852adf8dfe168311a3519f7ea31ead2596bccecb2cfe026d01c42fe6c2923d2627bd2c96d1f262d43610185d7c0fc234dee8f4044c729a286419612fb3d381cc85d177c2636657dd8ce3f2d18a268566c70106c01a376b6942f5a3407c93073590305098257421a9df91a9a8285373f95cf35b833919e6634f805d1248c8d7c73ef6e26e573189dff8f2a871e8c987f7d0113f5e97294aae7af3817a99efe4eb04b2ad8d3876bdf35607f6ba66b80d7d67c33871178255ac698496c030b0c5ae603c9b5980aa62b7d0ec9033407d6278f62c684b77aa8ec3c7fe2004afdceb5bd2de046654dfe9adb7160bf9b3fe43b723ba680232b5958d598a83bf3f21ee2b1c030c3cc6fe648167145b45604a4d805d9e140a05d9a2b1d25e5adc31a76a3a8de78e064edc8e4db01498a21f180b977f610e875913986398205c119e82d26f833c9a6cebad3754872951285fb465a4133d9c6227825b68d41e1d85d0ff74bde8a98a534af729f80dee07e9cfbd22558cfa64d35d78f7d7d41e90146d9b4f550ea3680d1fc3dec64aa24d92e4901415c45b8c795dec8b8f6b4148fe87afe1c77f57d4f37092417f35c48bead49da0bdfa91b29c3e14e37d127365940720b356da3d06222f03773777fc786c86c1fd504606d69a5bb76289ac350fd515f0a7d0ecb9bd3802c2d2eadb7d698434644eb8f6b78970139572bec6dc67730a7ae331ffd1dec40727f9d36ada4117e183de7b07b8e344a63f65124370858951875005e76d16475170c7660bab2225caae06c26b633a7749ad7ca16e691333f449ff5286064b1f480b0d98c4b222965244a48baaf30f630e053b5d4ecff3434ae375e28b693e8ef748989b1a367a9887034e4be30bc507a7ae2bdd2ada20bca1db41dada2b0e8aa48b79146c92ae379b8c27ae4c67082802b0e62c4854d1b736edfce2833b0f706fa98e3ffaaa2b6240eae9d38c5d1b57eed92db67d972cde422d912f9ba788aceb8ebc5123b5a7e7e0c723ebc8c50c00eab1a94aebd7e03b1c5a6770ead760d5b901a0bcc7a93c394409883101bbfc17c365b9e0e65629e5e1c16cd1feaec6b180ff26de33aa72c9eaa98ec7cee0b7b9fcb4c4e7e07625b167d0e777bb60b6d78fb4ab50eefdf006cc62cb00c667159ca6593ad180015368fa7f0682818c9f014e8a6b41329be1150f38ea8da265584e901012470b4ceb816300ffd604e171b173f83fcc62016210e1c89f4568f1a4b347d926dc504a716f1e354cf8d13e367be6aa59e2277bdc3217fed129d9c948cc6028f2c5311a1d40f674b70643c7736fed641d931caf0b5d33a11414a2f26bda3ec7d5d996498a4e9e6faba57dac32afd3952d9bec7482c08edbeca500f367d47073d0c8a7cb9a56de8b574b93f12b88e6f9102269fbe4d94d197a200096ce14735f4c0b1ebb92e68c8587baad8e6f5d9210cab5a2b7e6f33bc33bc13b84da2853668996c86c47486b42be7681a1d61e817519af12ca5f5df753d423ccec5619482a8acd08842e964b5f1b095df3f4d542fb15a991ebdb1c1089eb07ca7fbeef3aaa41298f91d3b05c359e7f427654cbecc4a6b0ae19b6fab7d1f02236865289f7e1ae6b0e96a6239bebebab9b1e82ab4da409fccf851fa9a78e03d334d0615984d1d60c3ec90fcbd7ee48ed3e0d0b24b0a2e8f390eb304b04541bd2d0870e89cdc4079861b89df5f1aeb05102174c0759c0d1ba811c03d7f70c6ea347acf0c63aaacac8fdb53b1c0b90d0037d6e1dd1d3b5c5ac79bb401ade4851375395503473e549f9e55740c3c8d8b5b344a4dac41280a3ceb672b5b1bb506360815f17d3553e86a76ca492937345499c98a903f74e52d4df89e01806aae09410fd47bc0e9c8d0c446d7d7af0d939cd8c14bc7482146f0ff936116d64381b0b41cfb5f4ee2b410868278d3aae7e3ff0fbdb2dbc4e236c2015cf94e109523ea4ff6576534a60a05878545e3d48b24e78cf5ede3cfa9870bc56ce35ac7d5304741189c986343f3bbb7a54a5bba136fa32bad9e69b6f9f875f885cd17b62fe79b8583e99f2d7b87bfa5ea06328a7d2c7ca5c5de1fc2267013e25120d0817b63dff4430ce116c6abaa0141b58c54c38c137514e921fa0c4bc55238b9bde67fd3840f03f924d99b0e6afb91df23b4321dc31f589b5a4162816f04b04ab436bb9b29b6abfd172765b8ee4c434570021bc6a29f03c2a2eb790267166e6327ef44a3d6c1a405b370e545488aa3c08b06ba6927be2122f15277f6892b791b3bef841eb1ce568434c6b12b04588781599282a89ab95ea04fa21a92bae11160879d303ef97cc8cf232a23c0ac8ca707ce7834052de991707b2e8534982fd3318d746957ac203087237855e43820c81038d3ae7b462a4ab34c9c39663bbf9d0259e75ce232bf2acd1559424d11ec6d6226b0f1610949300d6b3ed30018c492d072ee4a81e0e340ca0ea95d5c01812c0b839ae0cf4536d994a837f2c5922958a5ea94580fc42f61fdee8a0da5278f8954fc9fa88bec535780a30817e1299b486651c6b1dc8b67708ba8a4470de31589b0111760044c642222e7c8d253632a5caa7905586e18aeaa7cde53adae6646df301b5858c03befc8a0ff5cd740295e5a4a32962ac4fd11702b0c1bdb3ab7b458ed8d691077c49b9a71c959a8cc554a310510e5ceff576eec61a71a1ea5c9252ffd9004096ea34b5285ea3dc33f8bb13615bf119fc018bd4dc0d009f89eaa5321c8f9e55285a724ce8590a018b578276b85e4079aa25a9b9836c787ba71bc1d06bdfd5d1b411ef19a5568f641f01e990ffeb23b0c98d77937ca17539f0ab6e13188b9102315be79605dd625b9e7303d33a33b76e3a474468355275007bff4d4b44fda5d3d6cd964c6d69b5d5a91c2472cb5a7123ff43cac20729dcd26ea810e7f39c2020a8d7c134043d0076410a409108682cd6c52fd0e158d9776e348988bfdc6e77201e179e06dd4eed867191b9f2d503d2dcd8b5310bd7c35989ebf6b008d387a05a5466aa08b87554e9deeaaac079cab51f5e95610779d0eb101b336e6ab9b742bf3dfb6429d49ed4541435470b8955b47186216653ac39cf6b119262559818ccd0110e1147a0b31a9e25e8c7bd455ab66d1d87682c1a1139c2ef609d0c793378d02041e4c11d690896aa71f951aaae625f2fcce7335d309ecce3581582b762269d0b6a0a40160a329dbdc0200e207b40b6e0b745925f62843c72b902dd427ee910dfd207936a289ccb953fa4f85020b659fc4648141d1db8af638da0f94ab15b833321f60ae03183839c73e09bbc0bebfe2da8d84db6b8873b08c151b8047e0ea8dbd0e281d5c6b434db2b607941c06f3bfed84e8dfa7da4a1a411fbda7f934407b0dce5556ad3f1ea04bac3c980be450c0f3cd6b7417953e390475ee6a69f85a661d9dc1d4cfbd73ce7a9ea2ae2393cb5c79951c1347c7c23bcb68342537feaed8ae484b27f9a442350a76d116c65e2c680ff9a9de2f0dfb4b2d1891db508a6b0a6bc0a10cae2cc040abadd9080c12a8193a98b2efb36ebea64d677ca5c76caf1430179b78053f9ca886128004f25b082fbf4b31a0b11d90049194c719ffd73f4927cce11a5a1f8d2fa38bce63e5868212fa95d4b71871c8dafe08022eec230e93e966bc6c953603ac6af5b051b62a9e2f8b493bd6136dd7da018bd309e8849084594a814eb1282fd460eeb95fb432b60f0302e5e8d9128fac3540d8ab87627e838d2414da24b70c198e273269b5b1eeed254adb6ba41d08ac4b8689d0f9e125f907e3b79faf170364cd20871e3d9f3754337ab5b5f125c4db45024f1a1de5511f9a3579f8535bead28eef7a3ca397b020cda6305e95eb959f4a13ea7f8003562b3b3c6043448d5e5947e3ad08b5f4fd6c7506cb87f38227587d13413960c77b00e3edc6b0b8ada2a6b2842a0a2d30bb2b9156906cdfe094ed6e053f498a22d4e968dc6f02c8d6614d9ddacd115432a621e44ca3bec1279022a779de0f06484555d90b2fd856a224f885f2f1637f7783a890fd0f19efe22e6e5ab2316b35c61f23eccd5c3bf805420cfb5e461fe7685d72e9019611be0e9cf6295d8cd299387f80be412e432ec4051948e37fff2d92046cb98f800208c269a8a80e6d3e6c165ab30a4953f718026d60f59d90c1199847fd87448cc85f9613db84770ec99dd555ebc2853398b1b449a81e1655a0d5bcebaca3464e3140589109c271f9f05c75e235a0fae1cd5766db4b29aa89c7ef985f079b30066f7efb37ae146296554cb3af63580a3b8905a260c360bd6ed8f2467c069c7774da88adf04926308e4972558282537712325907e00311636c42c87045ee60e653f14d23b4d0712f4e76ff6b33179f1b2e5e65f7741063d0982be02eb5b7a5b9c687be5847ec364e4c36a5e00fd1282c32546dc0422915d69d62182c5034c5919ccdaf6e86f9ffd0d9a87a220ae1ecbd58fdd4c1402d35033458ae007d65b869e83a4864610c8023a79c2f637f7af857b1dcb13a6849c49a99181bdfb66b24a10a2beeb43857ffe00f9c3fa5415e3ffc303d6c148fc6d022479c0b5e068147f6ecbe746e59b9553caba53f8b9e5ae6cbe373c9d5bb4720d3896db5483ef0070e84522ece1593c2dc0d508f9e18c9ac7a5c863642f4cf7e3f9a345ccc0400df86f77e560b89b4385d9e404d393cb480d8ec3408d4bba032ee9c7ccd2d622087d0d4c190a706b0607c58afaca25ab534f9ee935130fade2ee0769f2b279db0480577293cf3178d33e4c748e0e1eefedf2177ac1120ff3e75662e71da72be6430265c523b688f2582afc57b7738d8fc044cbb9aeb288a11cfeb0552a3125edd1350386d32e7fce0b0d51eebbedf9f08876a16dc61e3fac7fa7194e42a824c76520c3502e5f74b96399db6d839957dae7637c68d8d8668ba20754aa8ca9fa5c7359a78464b7cd8fdcdd99e3680a03f2b8675d7f51b914c2eefef13e7da725f9eb520f4bfd7522f88d18e4e459969389a395341a454e4b357880a811c1bc1aa2666e6c448164ec22573802f0b171f3391072b619807f600278d299395ee064db0c9ff297508fefcd719cbdf39642dd6468cb6f1a65ed07c2fdd6183eaeca7d83561282c678335bd6aae2a0d9fab6097424898cb24b0aec3328e7abd270060d0575229a06b989150d6691dd9d1c31523a8bea6b29326d2501b0914d6c2942a54b184bab3814b314d17412c3b71cb24de976ed1a3d9f052295f4932acca22892a753d0fd3f9e1321f186296c1cb2749c315299625ca59d977e4b610d15ba69de76d59e65cb076e28ecc005d489d43aee2bc08e08afcc002d05b7fc850408c086a307d7536620a48e22c05c5e3953b074ae71124950413d168aa84e34cd8bb5505c3fdbe631e009d3774026460f79370885a7bb699f912d43a65b4b13f04addad8510dff01de1e4f71dc37e244f9fa27732a0bacf3b17baca4d71ff256fe9d70cc4a6b059301a90ad179bdb417e6c3d8594387f089df64430ac998df996c14c94a0983673e1eb3580a2333b4fa157d8456a909c4716f8a54459d43cc61f4c0ac080390c70a264eb63efdb49b59a4fb4b4df177e55325573ce54c1d3f2c0e263ee60c5ce8e8ffa49adf1b5f91bda004f909ff6b615805b4c8c7d95e68d2c8c7c466c1a1d33a647683b8317838519210866995a2579761724c0995a237c137b740c2ea684ef963fd71c6b98ac4508d72a626fc457207f04d5893254d059c83c40c8dff68e7fbe518681e15899d0e9153193798999be2f0c3cfa0d6761df7bba51cee176060fca58753f43c6a571e0717cf98079367a4eacab1e354a42886ef6f88f8b52f50687d34517dab2fd9f2765e1549b5c676c2833176f06deb775cd3937128ff75e4436dd7574a15f6b228f5afa0e1812d376b30a08dd9a0c1d8c7da5fb6e788a4ce99d6dbd5ab83df43181fbc7c00c7f1f4bc2197f8e31e130ca3139b87f02a679720e228c1b1ebd35388e9411a02f66ced1c7daa760c286c2d6c2fc761334cf8070debd76a51cf83d731cff2847cd32472ee909e6e7c7bf3689c7fded9a1bfd615d741bbcd037d852db097904edeef91330955a6601f003651c86cd16c960182d1a08b351c41b557afbde1a270960b5167b54f305ba596d66156600f2b580700fdee9d5c92718a44ebe346d54e437c385b11c54c3fde648151d41327537aa0f7f1eeb7ed9fd5dc380a3a4db108f79322574000926eefab048f7ab3720ca0f1fe4047366a4e466b290c85c289d68139dd4011bd764fda0a11d3a084a0dc8c3a81d9914eee0d447e0c2f92a219cd4083fa1e8027d6a0b7aeb0f4038c7025974f47ee7332e28d996124c8065e6225045b39587590b863019f9cca87e90f5210a34d9f75ff8cc33f020420b619568f83112a337e21c8388fbc7f39a20608754126a41cd826fb50688d9646ec39fad42f5bdd78623834d9b998b373b0ad6cf476762336ccf724fd3ea2c7d50d133ed670605a376669100a6554db59bb5acef4113ac3e07f5d6e8eb9ab1092351a0e2006d208c37397c63d1e9c1eaf87f01fd07a8fb173f68834ddcd9b5a00a1035d182b31ab4411fa52363143c53965053350df01f5b25cb20001d185d35a009ee071a26359b543c3860ea72d5d5a0388d5888c9179fc494fd3c40e1ca45cf176926c3084f69e062b7bca69b3cb0797f404796ca71693d857d734b12699c87a087f0894702da0fcc6257915d1a09cbc223b635bfe39ce82e96ff6e2db3411d58e606a767c903bc66d887671554ae74196dde6164c23e4d5d495e1cb5c0b21a0788b6c1dda9bdb8b7d0e014e3b89c8de7dfa5dee1c3cf102034d6a972a6217be46b7748bea4dd2f1ea6c39e5b43396a77fda183a9f19f1fc0f2a9c2ccaf8e5eed96ae4b2ac91920392d4065f931b554616c5ed6678b02d6236957eaf5c9f77e22252895b2b5c7bf5f49865823b0ade3a94425677b29206aca0856b5ee71a53c85eda758ccd93f8d389e6d466921f8c78adcf68b123269d5b4bcf526f89ad48efc26bc649b2fbac416427272149d043707cbf31b47c0cd863a9e49c9f604ef880e0f401425e0bf5f38504cc9d261ca1a2436696d4830d46f7305090a7fcc18c11cf276353a0261a00bdeab7218ab9c9746ae4626305530dad0959a9bda3d4066b3097a9cb620835a9f2878d2269484cba3d642dbbbee457913bf49082bf733749c68889002b99cb00b0b4a5444b2cc3d00fde8e62376995e2616aa9bc841f8b63ad652f86e0ee46d3f646c2527783e495bf2b6fc5b75fc3f00347cdf058851a4359d04994e647ad7b701e58f956e641306985ec1a651d4c61c7fd2251ea863c97cbb8dd119ce354e2e7b189618b9047c46dc70eba060bed1d77b29c556b4cb3fed5d5ff6c3a52f17ab004c4eb7bc9103bb0d9386a68d4d48830b0cd4166788e618934173fb995145723f63ad5bdece884a0cf100fb3831277fd3973249463eabe04bfe77f325bb0f59b066ce583869e731ae50b74876488bab0465515ff947eabdb49ae95fa1df57d9385dba28afe5f1f912b091b76249b0af01768e5a7957ff64da8c2c405bb9fb2d9ae067220af12fb5f80b84a03a59e71f398120cf5fcdc8299b405b43cb7ad3cddafec399c0d8a9de57bd4a238ec75aa17fc5a1ccae983a3dbaf1789d588db1aca1867f38aa47e5cb1e9555bed71e1696320a2fb5fab2c6e8aaf14ce9427d56c642329911d033983115dfb9b9d9cb584428762422205bed0e84b5f7a85a7a74875d454bbe583a2ef438f498aa656fbe5a825dc74c5c69bcdd9acc7c4ae20d932e6b928ebcbaa23428362f0b8b35a3f9c60c72de329e61ca488867ae8a4902b464336ffbb68942fac68e01dab2f74363398d2d0051806563bc90713f37ccfb6fbe21adbb637de9c098f47e90b798490d84aecab043769467d81db1a6db3031b154a23b3a5a4d219a39191372190b3f97c36453bbff9d527656ae19807d0e0e8fac75d128f3e4406ed46c5a8bd2e691a7738dc84eb4e2e5565fc0a1c0a8c01902c57d63319a03347ff88cd41e6391153fc92ead59b45a921a563f8d324dac811d7f57707bd43157b89dad4d796575275dff5bf0a8303f974386b75ac05e5e5db3a030f2833e3927363958133a23ddb049b17be4c0925232fe3c6434c23b23b7e3aa78979816534f508ed184fb9db6bc1fdda10b504a85e10ac4aff366236e7bb2fadb52ae1095efbebd94a09840f962501a259641ff93e44f3ac877abc7e468d9ebf45f1bdba91862446cbab964a3d0bd487c7b06fede2828b4f9e2bd2c16aa0719ff94f45f7720ee60e9247a2f7251e4fa13d587a1a7f0984a86050d4b9c0be22991d9d094da8bb2febf5b9edc1e75487d594bf19bfc047f33b4037807347158b02cf95a3d9f18be8ed3fd6b388a362e96c2c5596322a330f814aefee37c91f93310ab8fe34299a2e7a38b2afc2273d8a9f9484a57822381923ae8b9ebcaf58fd39039df5b3c1aadfb1ad1834585ce78572e26628d01309000211d7d27dafba7063a4310a3f446fa288045f3ebe485a59b07fa7aca0c929835343eefd0f8135d3b9657aa302d87e70603eccdf286c6e643a1f3629fedbb877d6039ce255031be55a43327a79dd0558f378ec260975bb5d008ad317de8828e662ccf9fdc7860a61c55d6a11932fe009b1a6e121d75fc3c2429dbd4f8d37e61433956029ae07c3153c2577c187907e0e17f045236ea12b96a9085a7cde16c62bc85640d2fa05dc13996944ebf126e1b88a2b6b66f46e70f27a40bdaeeb715ad815e366d2c4bf65b995fd172683de381065a39f2a55c14a6443b16e55ca840ca61f7493644deaf27bdc77c4fee3378e34d5cf3c6cea596896e154d2648c828539911ce13c6df27f191270466d1c20960999969ee468f902b24e3a392d2e4f1c7c70a188c3f098249a5cdd636d73a0f41ea94855e60467362e9288ec12d874b1a8a88dae6f822182567e9ad56488f5df6cdda6445153680867f528e82a2976664092e24c4dfc7e0d03ec47748f0a6798461dd68fe66f710d4c6ee679ad89c949686fd90d70e5a1f0c31f27da832ae5a4597d21fce9fa87df7aa9c9b0ee4e521629f45a367f07e81299c1ada599a1393d32751ad6d33f7bc8682a08c389d8cd2dcbab2246d5dd879dcd610ed83ad9e50ec402f2a16b66767fcce6b004024a02a84d0f0277e8b4c0402ff0718d812156d68d1a70683947f52963566d12356cd9ae007742901a68afa759ca432a19bebdd505f54f8bad6c26050dfa3cd94b8f2362ed29e6e2d70145883d363a25d86bad4f0bb2d71649932f3af472729808d66068ddb7515003c299fd8d8e7fed2199d1c058e987dddb6ce2fa6ac123a13968092e25bc71503b8beb49ece973a4bf14d5ebdac2b1eef0a13a67db352a01b8452ef8c9cb89b31196c113c07866f022ba5d2cae2799349b8ccef99a872a11fa80069049384310c44b3bc005e14de4186d9bf2727ffd0de3c4255e71d478ca8b4cbe1191f32e041148dcb94072188bb858133ec12ed658b9cc5dafa8083c0235240cb45487d5bf14718d2c6bf406a121f1648cea12e8cfcf1d5c8cdc94fe0630ff22e643f6ab99ca3c97fa8a9998432181f7ba5125cd4d31b3c282bbc2bac238a950d8496c262f81fc0566db29d7e33a6d750ad17026dacc362c804a56486ca8cfffa7b2df6b034e02b5f8271ddcbbe8cb757fce0992fbaaee53f2b9993c783c528983a342b2a92ce2527d169a3c7e057370c7b1587e6d9cf8fc7f4b35c9c15feded87b4090a324943017e8ed4ad55c605ffb4b6a3632e30cf80ad3afae847e5aecabf8f354727b3f6627cb245dd4ec86d5b3637beec18f097c22228823d4b6456cdb2932960e71e8d975650767b954cc9e8f44b30e21e800dd46e73737677f3b943ac968569aa352f7b85c32220f95ac1f21b71a39a07b385be3f2f91e7845d3dc867322796d89cfbd95ce84011224353c739df3dc83a978ed9c22762bddbe6a33bc935a6c4b729a5a27ef1c73ed566d308027334da1b0f9cbc280f981463cc6a9512f30307cfe13b6b82730af1d1982ed9e699198b49e58e3c39f93866cd85131a053a45afd50ad0751259890feb62670730666b4a80ec2e3d0c2333435ba508a0f3102f8117078304704700a4897d0233b4998e799e3081cb57334d2c32e60970413519396fc948e15f8cfbd350fc1bf9d2560438a6a1c8338238622479352c9df08e521a8492691afd22cd82224597593a752e1d6a8ad4e4071cea04cd2175bc24189115264cf7f3759b80c06bc22501a8a1b9ce2b83f8ad8bd1d9a061915ee7baed783436726f9c529ad36f788dc5f778c7445fe6e4b3d87665aa95ab72e6c8aecddeb8e59058c84b869f1a5ab7a0a67933d711b9f096d22075916e0f572b0c8dfd62ae8eecd3ec3dcf2fa9641b7feff83930af6239ad4084955684ea3579a54260cffa55ca5b3779087ef4ec665729678626085b56ef25a14da7dff02b3a96c48a54fadc0bace3a2a52b640958c8c0394d4c92a245fdaf6c5b95e365e6cd2f613cea3edcb0dc36767cf6f6afe2e6f1af5d18c330716693022f1caaba1b8d9e4a0871585b5953d6a410b5895f10722acb2984739c9193be413a9a2987452be292c7ddaa5c7cb2aa5eb0587ea81f2bc0d587c78e88f5bdfc7b450082d8fd74328dff388401411fd941dd0d64d32806a081f8d46f64d33eaed086979526f772906fbd855423c5e9f90b839730c73ad3db6adb09e715ec76a4b5b66db4970e512a9e15bc7bab804ad93ae23d7cb5d62063bea7cfb2fb443f2e17cbceb8075ec7f876647eb6b2cf6ee4e5dd782a1a0f4a749dfa0a8115e9493ca429b1ce2f28b883f65b142eca2bf80292460a8a548434c331d02027ccf710f2e90460479204c4d6482de33fc9271398508aaed104e942377f849fe4b494c5f77394c58f63404257210c0420c1e76dff00312fb7340941d16d48147a29177101c0475015902c811212ee8f740f88fca4a10ae2de129f5a19364515568fa2110215582706289251288c9ff24d02f4fc548e85d69789f541e0c927041ab2ab90b48945cfbd0df2a10e9a220aea512755c17f2a6209e593df41319882c72c474e1fe77f64c7fefbdd65271b9de0b4276f24a5dc2a41b22e83784bfe180d77521ae8673687e17625e08c1682c842deba5982100ce747d00271a5e0349ab866d65bc4fdbcf96d78d0cf2f9d26159bca91b46d642705d6813453fc3459c83b14479643b9fc29eb9cd9b26369344eb3e7e8258c04d573a2fd599a5f9f698247c63b76c177e69c5a9162045f15f16373972c14910efc641dbe0555e0ac778fd8e3ad7f13f46cb87c1242c44ccb1e9cb0ba732be6997c9120d633d98382410407f34e8a0469beeb5dda05a7c722dc5e4cf50f72880a327f55cad1df34a07568dcd5304c9343100b768d0577a3d3b1c0cb0a6b7c5766aaf87dd612bdf515e1627364f8c26ebda93a1dcfa993d179ba6c694128e9f5331b76deb2764185c934e505b5f4565c3e37e6b24292d4d6dfa7d031e922ae2e627965f87da439b4ceba3356483755dd3d13cb110891f57ec6252927f6392747745f4a7baf823b4b836096bad2552ba01229170e381b829f5951d78bbc047c6298ec3da91a657cdcf1667a6f99d92e32ed2bc39ea7be8647d00192cd5d703245f6469e1d671a8138e20a724dcbfc261095b578693810360c123e41603874666eed2ddff4efc62be464c780e35932eabcb9013116a966c2223d5a872f38a49c260098c707a569d09207e25b23de310847964012f1b9fe357a33b5ff48bfdef2f834720d75fb44c8b48bd1582874b4c1b2ba1c4cf65cd304dad973a4821b09edf2ff012e621144cfcc8ab0954ef4d3e711890a5075d4b2acdd7da11bcecc666c891a7444103d042adc333d5ccfd50a9748ba414512e5b6fc5e5bc99245e8f97d05af34e8a6e810edcb91a86ac5b4e33ca5d0fdffe761b2047d75a94d4d0b411c599d3789bf09e5dedf886eda28995939052d0a7ab0714f8a8f5f6424f1c08f7cb72de3d12a37a8235985d8d679a8988fcfa7f9aeb84b7fb8bb638550a709ee49e72640462120df682f4eb5e19458bb0f26ae2871896e676eaf93023d2a54eb4fc055526cf811e6c7d0a266539915e30dad15c15f547cb6b643cea6af558819426b95b64fdb065659344edabf652993e27136e7fc0bd27af8d1c87632752bf6c574ddeee4b5161febe76a55540141f3887662b8df7d22b9723351a716a8153dc8b22bcbe85ea8f22a3804871b3c39bea9ee3dd66e1313a71598960d4d15fbda1d1fcdc2ea16fd2a936a6a9bea6d9d2f0d8652b954bfa7d9b7b7e1e68670ccc5cb6d61ae2b103a4a328c88e8d20d09e74a5e1c6d235aa7dee94f59858585d13795c7068ee8efab9da3af4af50f18a3e72279d0e3b6ec36aaa6b0b10916857a249a3860c630b2171615bd125f7e67f0d9c66b8b49db530375f6079e39b591486d28b514aa6993d418a6f941d46bfc7ea98b142481d74ac3f54f86777b5f1a3af5cc900e7ec00b8dd040c23b8ab9ecedbb551d26e3cf7c4078d22c03e515f67b3a3beb3c3fd8770d0b446e524828e709c2bee6cfee4404d0bfd8e7eda7f5b9d9d22f1fcfa964de6fca4ac5ad9c9849c76b2defec19328a24e7240f6a35603078aae4e7d35b4fb58182e64253aa8c4dd07a7a5bdfb880314b9c55ddaf9021405a03549648e36503aa62399d65b0c566a7ccfa15220fe4e9615f4375f90f390b7a152957a97088efe2284689c1e578945e27ba204abf069cc2877d33032eecbf522700225b9fd0919071553a1846f831759d2680bc149e34a65273846750a4d19dc32b1a91e0a61542edfa300f70262c450ae27d6610b7a50b04cf0c8eef2443938906b2755bbd44b467c6a20ea9469823f85c902005f9db90007f1b61499057fd93f912491e9fa680f007a66c8148d184b942e2002a96610122543de1c1a3e35a0796dcd6d18c85d037684ce3fb00c434b6de2337c2820fcd5b532e15d0fbec123b140d62d957c23e222674b8978991a8b9b57bd2650f031b00a5f8ac022f3d6527b41a5cd02338f0ad234d3d0a9de60c0bbe9ea3e6e369e7d66ed5c9f0879dc82ade880a2725ad61ea11e1d0b7dd6330e063bbdb6b90434dc7eb584d64ef290217398960e52e5d61e4ec4195485fc6d67cfbde036973d13108c47ff853020463b24e63eee8d2a25f5633160b143c62b938aa15bc0f4e934f55ff6f2fb325361bfc0c8d4ea2431833b2d18b9c28ef03f82a9c48eb55315d5947562db30bb8b28c09c055fe6536cbffb42797259dac21995d70eb3641df6e8ac3866caf512eb58d6e85e4d9ed7be307653f439e544b2d8ba8b6ab9af09653a5b094ee23fdc8aca7a1b109324eae271c63466211d2d8c16249c9dfbbc07de03fe9d434b64e8e92241269f0b92ff472b1ae334080018bea641fa36f769693e5e292f5de8a5a27cc79f914a03ff426e8a2ede1202208565054743d308e0081a7913b88b3dc718ad6338f9952fba2acf73c7a4e2ea88c0d2bdc6f44ba1698ba5cf577edb2fb1ac55e0a52ba37fe458b9d2c373e85cb8e05c6229a8640762bd467e567984c0f680d86715bb03502bcec1172e8e78a4c1e0aef1f9ee1450e9f633d2ee9a352adeffe8489c49d6dc8f0d9762b76c0c30e3ac005d22ecbb37f096d6a600c1d22d98eb11c2477d07d19dd89c7c455aac7db58c8dffb5f740306c3ea29092b7c5e60a7956698a16913263c1cfa22a63eee098a7e6c634b6337d95dd090b33b673bc5db428ac3f7ac7af1d91712b8bdbdd6a6b5a7fd0ec3fe80557bbe9d78b179dd0105e6a010a10940438a70e859eb3397c3e079ea696a9e70dac6ba7500a363e467370aa5508fee2520ce84bf76fa11c1e3ab7d2fbc6333daef5b4fb82108c1d480986c6bc542cbc48c59e39e246c06a8df88e146188e06df826f5c3bfe18be89066fdea6d0049c2f9135b8a20b8b7aa19dea5f7b3d3ae6eb90e3f64ac511f70c03305e803800a6afd95e4a31640108746cd770825d288760d5ad881d9a345de725203263848416c92ab3932199f5c35c28c02619b7394889af143144ca62899275b71af94a05d72ca95fc6fd8ca40cc895eea519e6f8ab07efd8141fdb6eba25d98c8f784b3acc135e09a6f3697c32d91a6385113573e5ca232252d1f5b99e8886cf5f0e776146262d9790746584ecacced037bf2e86f1af144b701ba657c2683667697f61698b89816c6115ba0217677da232cb98e2e1cb0cb3479b2ef015d026841a1d09c68a2168fa86944b3fe726492eb80069fff14a7eea4eff42bc6735d2fdc05383508ebf2b07e1522cb7674b8e80e9ef5dccdc66dd6f364802b129204bcafa4d0080e313a298c75ffebde8e7d6aa7393bcd8363f62d700c6da006983315eef84877500089faf808922cc0d977ae1e3f625868a219f8c6879832924687b193212358404af41c2aa3d55dee85fee332eb65e8c46f7d054ead98a2bbd994f600c239136a0fb51e7029182d62a7622b933db127809bdb8b5d88711129cde7972be85f000821c451e6024664acf707086720215fd6298706c267612b102521fe77ec9257345f0767bdef4f8fa60e74d710d8500f976193a4e75d4eaffc399091ad11c949eea5498e08059a91f2cbac730bcfaeb20c759087b3e172e58825973e679ec38eec40841af3aabd77291b8e2497c699ff514a967916069660586c076851aa7b1fe96f46f391df3fdf86330769e91f76ac48bcc570541264a2a8f07ddd2ad857590557cac109c4a1b150733e5b149afa8d624f2a7b736d9e49826c59fadb803aa2b7b1061877e16cfcf8cf609a4d0a8ac7708188185322506d38d24450c52353ce8648244fdd7543bf96ccfb02b4cb8e05b6b90356e74de385b5ff7df9b9c5801d744892669465e0ef25216b8d81e20840318c7f92b83df5dfcffc05bc16b63ba5fad96971078e9629112f9d6142676f74161aee826f2f94112f9313153c3160e707bcc88a4781510a46304f1de7cf1d3cdf7fa6ae4f2023808839ef5b3ae767977c0c3130bdd18c817b38c7c36cc5ac584236a9aa47ce2fc230301ed606779d5bd643fd4dabacc20271c5e2e6afcb4cfd99280d8c413d96b4dd8c96f18335cf6e77f23e586aa81c2232d01454fb054b4930b8df1767a383b99182b180681d3d46ad78c8fc86eb42c1cf235413492f466c13a5df37ad47aaebea0555a409285fcbfba3b916e35020e4d7ea22b5fcf15d00fe494637d7deb4e0ad84be2a0b4278a408a598c01c23c40655d433c22eee8d3aa31684cc39bb7e8f587cef5e10360a58b2c9ab530f89877e00e2d4818c73a9f80610fbfe071e95d3dba9db8b6eb678e1211ba73ad57e6bdd1bf8916a2842ac12df7b935af102d6b953384bb73749625cb99a0a11c1b601035b9308ca5fed1297361ef065eeabbfcb93e9540c11bd688cf984303da1950827e6f6d3923a0969aa14469802a80d5be25b447ad814f4d3b1b4e6565c1680490d7c83d56293829c07c43c0a6314183a86e357ed9a7043f1d660c806f10cb8906a2c2c7d8da269ac4c84b6eb39e45ef5ed6bd9fd2ad02596709328c5da7414a7b7627304f4990d8d6ba487234430146d70c6b5156c1a7c9a08080835cb8b53b03205664801037730b888e44569d92120341138f98cc81d2a9f64bbd1ae43b2afeb66608dc0f21294161e3ec1d2e263870c85ae0620ac4237ad8a0a77925f6c89e9f33920c4c395a00197254fdab2390dc937f52ac79b8db900c234023f85437f393af1a2addc2fde32fb5fdf7ee82251dc90651af94e7b691fe46634f8c6ebb38238b3271eae741aab305f95812f5d5e36965e6625c464efc46752ad71cf00cb2d4cac8188d166d583f5fcac21f2d921d037285a14b30f905ff6eb431afe8277e830eb18ee53ebc327e37a83ccc6967023d8fbc10412defc0b7b22753a452aa90c2b4e9a2c73d974c12cb8ebb86f70da659f1c41cc6ae2f28d879d5ff8ff505dd27d405369c48d90ec7e2b9e1943c8f8b3781fa0fa136aacc5c5ce2062e1d1d32101510016116cc89a6c03675598dcf37209333709060015695fdf043260fb8386525752fdc0b8131ee25803922a80c001945b37dd40de81c84452745064caeb06932e46e727af3cc9a6ffdda68f6a4e03cde93720c0539887ead33f068f22aa1963dc1b896e48c81861d93235d4e005b31a34a1c6ec9e192f5b847a8d3bfb29b87c9d2651e86abf615d0890c9758a43600317c4ed8ca3270286a907b26d59ede077ac10a8fb879c86dbbe57b15f6b9589e688ab6c574b781b1cc6bba94426a76ea92369140513b712e40bc723b9ae63005f3f0ff0e0573d04ce6886d31aff4b02aa80eff099ee58f41856833d4f7b3a78fe061a84b852e8cdfc5aff639b6f323ff75c1aebb78297534b0b148851595eb381e42f0f10a192e0c589921a1a6e9098ae0114b487a662f5d38630635c2260b8ba5822a71365f0d96d0b96963dd100709e63d666cf61409c7a11d025e4f3a636533f9d400a685972833cffd74f2ebdb67276fd30235e0ec07e4aea73b4383adf0f4c4de22303124eeee8550818d60e925bb39286205eb0d427370a7528447fec46181feecebf3c1b14c165768c2e77ef0083c11f92fd135ac92e560d8409265e0218ee639853ffbddb493ffac9a6e7fb2f6aeba751e6f33f377a8ec6cf95e8d64198a63691d9a008bb3eedd990f1c90d476e513148c0112c7569fd529287feb3b3492f243ad25f15195a229e94aec01f8dd16292c3bb9ffcfe120dc23ae0189f3f513609a040f0b28624b79d0650f31ed9f08ebec0dba61d7feb4556c5a825e0e2b4cfde5e571eba290c83642a9caeaf8ed653f306a3d96efb5169de04960bec305432e920e3016b9facc0fcd0d2d170b8ea6e73dfdc6abd4d3b001c07f3c18de710ace0bd05c8a1869e6ffe5d1eeaf37c3c8b04926d42691fcad2fac3370ea6a20d8a16667d23730467f0dc77a7b489496077edb0709f6308cf305a4123316a76a2672af6283bfc894180a3769b163315a99e36f2dba5d54dd5b34b019f5e8808b5d4357bc4c6463360397e71fc4a8be2c12d8427c09800e9a3761084081f6da59d14c952ba43b498e10d68279d50960b6ea3e3519a9816e974ceade8cbc956ea6eb87e358c1c2f45af2d55b809eac3fd1c845596c7633da2b405c89a5322f271d9f691e9123912ccfe1f356b39bcb0cafface39d3835dc721e16ee2afa437f5eb391c4e1063b126be074c44014d214f4bc90afca1089f1a244b20177a168ae7c617ee7d518484dd60c74090a1507a341dfcadb68c5a0cd2045c13a4a1fe85ac0898575a6d9e4d2bc3f033a21cfa85a204a529b0ed6122024e6df9917edca086eb89732388abc7a33023cbb378e7b03debd49d14cd787273c50d4f432969113bc004040d15644ad1584355affbbf8775f786e89c4048aa4ee63804fc793496c6b7bcb6e7b6f29a54c323d0a9b0a660a59566aa71f1517d4358a0aa5f418369de39901f2c5f0e9068de1d40d0aa16e105805628159e0d41648c5a505566de7ba46b1173ffdbab63b2a9a9fd60d8a7deccc00d9646e016920be7e7d66607cf1f4af68457bbb001fd716b5a8ffc3ba46fafd4773fc251e6e73a587f67af50d3a9ee27f59d7487cff90ea06855537289cba415b5c5adb4d200df48faf7f3c9bb6bf680269309ee947653f2c13d4c2a12407a92a90eb1ad9aa2ef0eb1ac5c09cc9e1a987fa87bd6b54b37a3dd41f84ba461b804dd748c60e4f0831d543ddbb7a3dd4a1bc29ad5fb5eba61f9563edf4a34a3f2aad9d7ad606d7c8625dc7fe39ec4cbdc9b974dba176ea5c0eb51dcbdf3ee1a7afad2a2aff1b758d1cf58a4221c5148a33d69edafef7e936614d5d23a7b24dfef6c9b9aed12c6b09d516ea15bd50dee4bda013963ca1f84cebd73dd3da65cfb472552d9d73852513ccd6b2dcd2de2cce7535c8bdb4a7fec1afc3ea7c3e28812878c087fd4f2dfee78201082b3358d9b044179ada13f7e1c63bfdfdb92941083949f64adb94696309f0ae16b723efb00a79263180a11fc82aa9410cbde7920550fd8dd604e23b08909ac3fe480bc0edd887fcc136549aaef89355bd5eaf8786a405307c07f1b73d11aa368cb440c5f653064402d8c655c85f829d5df367c77004c1581a6493e3488e1f398e23398e2439ea3c92e2388e3062b17cade31a0363568ed6db31530d8db3ff969594ac5dada27859f713c8d24ef506ebd4a9e3b5ef5b07a3ab6f2c4d5f1b9b81816be3cf55aa7c6b6c566039500202ee300810708f5528931558fc9115648c4d7cdda6795f4bf2b03cf2dbd7b70af963bf38e86aa3bca5395af920e95ff567e6bf35d36671367c37f39bb75d490b5cd410347b5c231d5a5adbcdfb17165621fb184999d62a1dd73f3f36ddb66d5a72904b8bb3b75a775a5afb17541cf769f8ccf704e23bd7958390b9899fcafbd5fac86f42891fbf571cb0c7fa0322fb1ef66ea6e2093b6b58c1f7e0077eb9742774b551465579dafeb94a6f4ad466b1abd594deae997c0d23ddfdab10f9fa33f583e37e37f5839a34d3f0efebf195f0d69fe627496dd6cf843d996ffb33eb93a6f8d9044152027f2bc2ccb0561c1cdccfeedf63b282fc9e3f1ffef9bf33fdcc4cf270ff7c8a23269372fe92fc9d9420e7676ed7af4f2510d9f62ac4343a08266bfbb350b5eb66da40bc6bd72af47d6a2bb0d64cb3cb74ce7a4dca9fe36d6cbff7eac3be83afc3cfc7b86d3e7df8dbb7672ec9082b16a6368e5dada4bc762ec781bffdb212defe984cca39ff7dfcddc7b79db32e48a044a4b46f36f8e2a3d9f8611438960088143f1c3f08de40bc8b342f5981f8e098c97b4ae0ffbd8e6bc240533c4507fffbce9cc5791dfdba9112b2f15fa92375ac382a8efcdf6713886cbb997e67eadbb7b5f7abc55d6c06c9ee30e8fbba26c06b7f0fbed9f9a9a0d9970157db3e2ccbbe8fa948d9f661af65e10e18f8e20301f1ed0f44b66b7d0d9e417cc3ce4c5a90bf9e417cfb99e6e78047b92b601ff6202cf5d4da34df6be21388c77dd8dfd307f601e36d37538c4fcc039665bb02d8826b81fd8c838427100ff0ef83a70ffc4abebf13fbb0afe43b9fd8e280f8f66dcf50743c45d79b0e753aabd381154790f0432b4cb848b1f3bb95385c767e27b3fd61579c76fe946903fca0900dfef71be00fada81cd9e17ff8ad951535bbeeba7549faeb9dfc14f8764d56e03be56c2767f793c8e2f2634d26f9bbeff06ce2807df82359c1ec3e0f5901ecfd34893e20b21d04ef8a77ad42369f245901cf2c87c5dda79115f8e7e7212bb09f4f1d16774fa22498fedfd6041f9be167d3c5f6f7212db0cf01dea96edbfb4429cc6a8598fb69ddc0beb83782d5200860632dc27fbfc4964cfac20a86a405f8c307491edf8367cf680667a62b7435e87e0adb55c598536bcf20beb38d5a64ffbe512db2fea2fbe9e3fbf02d4901fef04392c7f7e15f128807f10d7e6610dff97de453c937ae5be396ccff86ff7dc6e4f79db8a9f4af0a819fcd70b4b87adba1593f5be0a2a679dc758b9abdb36b172c585bcb2a7ea61d7afeceffccfbf9deb6bea357dc54549940bf2ee86a8b8060124a1ff86d8aad56f00ae2fb9ee1041a88877daf6f71fabe992d6476b592d265ad192e4efb7735b325ced6e1b86b2ec1c769ae3c5c58129f5804f04192004cfb7b07c909eabef9f3fbebcf2bdeb78d6f1b9349403cecf60ff200a65d31c9237fce3c5c6cfcb77da7b088935970e12866a2f8b0c4c3f6e4e1f7c0fed2150d1c092d39f4500f7e8987bfd7cb270f9f57fc3db86a8e38d2e359b7c0c7621780b6a3003346baaa846193040e7e04832f441de0c1116794343dd144117e42edee6af564eb6e5d13c06fc6c603b00ccf07e015112f0fb03441c2c9cb042f384c08335419694a3ec8504a804121b2e24914302842883c51e2891b2374f59def6c1d726b81ddf667540c9e3cc9c460c1a14e61039421321cf124270a2f010ad1ea8910a7ef738aeadab25dada2d85831b1b2d3b18b102fbb56d571dacaaa0201968641b413264ea2203189e234dbd5cac90b65aee09c281587330f98a4906dd8831b364c9051728411234f7188580561042c6344ef6ad5c4cb4e5f1782228c902d3e409616acce6469e2e5033712c353930f40af5d9e805fb652410a103421b6ab950a6f46d0f75e5b31be3ea8706687c9a188a5a2444b04d94ecb0fc18904315bb8862489f282d39626ab282f219425cd852827315bb89244195fb08ada6215e5c587d05651595494584569ed08fc11350baa88156cb430670620e65849428422481431c4a98c0a572d404184c990cd640423dfae5d5e50e188aeb6c8d2b6d6c0d67744b279a0584159d9d52a8913fb9a40f61cda455b7fe335cb2e2ace6c1d7a0d6fcc6b4a8cd81a1c6fd6be6fbb7401017705f0f62ae4332d5bc3c66b8e61b616c76bcef60e5bc3c621b6488adb9a9a1c432dc262fee4b666b55a32673359b76feeb5f7de7befb8fdeff5b1070dfb0a7e05ca203ff9e4b9843f3f134a7eeceb6ddb6c7d5cc5a1cd1d75e3aa102e469ab71166bb8d677ab3b6ed1556b345e9b87f8c3bfc2ba7143ffceff4115a9067991cdf2fb6487f1ff8166f10fc0a3efeded6ed8f538c1f63cc81c5785f92825ba74e9dcf0ccd6aeeecf65a7128650a028093ec3dcfcf710cdabeb666920f08e57da0faf804b28f77847533599f404bcd160579a08cbe4454a0ebcd92a590d0de28ed0dfbd806f9a74cfb6757a6383a583bbd6d5bf334b46f0bcb2bda77c555b0106612e9ac4c70b2efae5e5030b353dd063f14729df0de0b7ef7661388d02971260899220a299688c20828b6e6f4f055e6892f4e70692206af169878b20494122518e92a6148125320e125e788386d8ef0014e961161b86e28420b11568688f246899ba712da3c35b1a9b3e5c41a3942bc09020835678010f343950f3368b9d0c3141e98a439018d91117630a281335f1b48228b0833419441a3c318325dc6d090c394182a584dc2200153c4e94b910faea0f0a244172eab35553ce0a0c30d57366ce182650b0b3544d190848a48911988802083145a98c80227063658b460303305e6051b5cc872a58a1528555268c1e98905a710a4e8506962853853dc48f921ca06a0603dc1214a06273b2bccb4625534fbbe0a33ad6a7accb4c6a95efb3e8f99d62f17e24efb7e69caeec7ccd4a5ecfba4399aa967d997cbbe5fab6aba0936e800a3182dc5337d1cec4c8faac233ad595ae09956aedad56b828ac2a753edfbf57651cf7dc9d754727c6d51febb1dac210c069a3a2eb8c1e7ed6cef97c5bb9496c7e743f731b63e641f7fb6f80daef75a197e6bdef7d29249d69a6f71240f70e3b7e65b9cd571818018d7ebf5c6aef5bfe6f916177a9641261befbd17bf92f5010bef1d477c43582a7e0ff31df83deccd54c965e363dfdd1fc5afbe233f0db79314885b8be40eff9cda6deb16ff6d119924eaaab5787e4c4bbc0eb0efd20c6cf1613ab75325fb993ec2e76d517fd522f69dfeefb6d30b033fdfc13e66459905e099da1dbeec4c6df51d08fb3e1429f01328fcf171053cf48b16e817ef63df892f8ee40ed98ba2ecfc7c684c65b21346eed0efe39ea9875a93994c1acf5ad6acadbf3034ebfebeeffb421e7ac34ef13fb3fa508c7c1dd7c7cf77184ced16cf54c9b58b67b53851fbf6a11ff6a992a74ae7e743e23d81609fefc4c74a4aee5b7cf04372c77d1fe1f93d485a30eefb9fefaef8dff89149a336eb1645adf56bfd3aac18bef82976f13fdff9ce5f7c5bfed64ee2d778fcf104a2e0fef83bee8f67f521a62d9aa9dda28bda0c452698a9e43b3c3f1fc28faf19739912badeb099daa27ba6f88fb6d1d10d22952ccefe519a12283fd386c08e1c1d589cd2c6a6dd13dc302c4bacb4ac58f98b7c974d25df3c70aae4fb828df77dbcef09749f69eb086071f6ad91f59300184d9996fb26d16af6713a5b0474cf1d5a9cb57f857728ad73a95556e9939aca6173309172648f9ea0882c9193ceeabebc97b3b9385e388bdbe2bad91f37346adee6d4b6f17f35da0e65883fe30c815a074a14a0e96a473f684a390a941d8c3525fc4a63bab4ef0e65f5a1f45e6c8d2aea2bb4ecc5f9034398a84732f6c500450f6eaea248b9c1f23033bcf8b242913168a24891452543c057e980e9a1b246cc9a258a9033c217194886d08035068524ca485d293146cd0a4e2fac119285052f501479e2092552382203102c740182021d3467c2d489c205292b0f76885a014b143e407181852a2cc3d51236535d4f92e08080354d6cf16007aa27b86e4803e6c9074dcc51424587051b76864839428527333c21448a4b6da2ce104d484af0d2e60b0b5b4858b2058911524c7a49b050c3cd4d0d23cc4006cb892f291a98967459618512b0c8892285052a5cd20766a220b1812a8826299fa17681225149c65829414391206a48620529266e3620840c0678820896151426988941052d35be5290b2e503141424596a1caf3623785dc12a3225060310a0893945568061ea063558b493234f101943e5842160c0a00531565b6d4e7821092c534b4aa8a8a173454e9b332f6050779041cc131cca3851418d0b4c4f53dad0f9404a852f45aef4c0650a152272a8c444b162002134d4a0439935628cb8528502215472ae86ac2952a4852268c81471430d5be078c082013a1881ca9c262868d032452ac903ae2b4f9048f2830d54949eb8e8e08609118ce8adc0a489116076f8c2f50525c214244a7a5c487c9942cb1a24a4143941052c595b907441624b941092b420444d95234490b98212a607321109010a27533c084921cd93396005575f5e4e5ce9410911b504383405082140b1c505335b4ee2804e442131c412206eb082d584080ad8c08605226a58c3a64b852d02702133f5010c258090c5e4070a6425e1a16b84284a7c5882e6025b54e8e1cc0e475499a2a4cc00a68069420e96a918cea480052a3941034c94b97a82eb073443eddc65e79cc1263e7c3d992003992424a05f12305cf687f6ec6a060c951209adf55984afb5bb9c3f9bb32dc237bbe7b3fa504d71aa64b1105d6994991c65b1afdce199f5d054f8aca801fd98b6dbf9a245100c19b8af64d20cdd57c9fc43af579b86d0a7f5ea0aac553b47c34c99b8ecfb4239cf79962ffb9e3fead5d6b98e4b8e1c319cd2b7efe3827cb5aa56190de5c83164561b04e670df9ef1a059f67abd3d033763eae888849163df8791630be53ecd9183e8e808c683172794c3c1c031999363cb8021430a11d1d8e25b1c1d1d19c520228a61561b044e00b6009f9438da412d82a0743a7d12edfb27d1c6c1f8948828a7d39d0f9ab705ce4c09b0efc36871b670214610ed17e70b77cae544db87e6db743a9d918b5cce85596d1078016803bfd8e8f6cd76f31e0e07fbc9edfb3fb9dde2fc3497bbe1703fd7d6c24c33d8f74fdb8f2d8e11fb9e3f72dbfc31bd6eb7b086dbf76bb86dfbf91487dba1039f62169f8e0f7c4afb4f6db75b2de801b3da201666b5410e98608f7dffa7b63507b7816a405cffa0cf87a68f046efba7f6e9ed66fbf7f9316b3e672d2f1a39fb9e3f6e7b85cf0a3536db4753cafb3e2d48de359f4fff6d365acdf4a19db554f1a0f9bd5e6faba0a9386bb53cb3edfb33dbf6a17d6ab3ed506b1d3ef8331f336dc0be4f9be55062dff3876df7dc1e1a0def7c787f8736fbb456a3d17668660a817d7fb6a3ab6d9e1d9ea3b2bc1f6ddfff687bb6a3f10ed37187e50ec333d5ffd53d33d31ffbfe8e99dea40fbcddf3076d975f991b472bfb5016046ff07f5f8df1a8bf0f6536287cd98fbe1b7d287cd9571248b9c133a5c0fe9c4c929db5fc4e25bc63b55a258bbdbef7de7befbdf7de0bfa9093b2be6f7d921fde275f9f696debbf665adbf7ea0fefd7d04cc10ff7477e0d9ffc307c5202e3fece546983ffd724cf5a82609d3a75e66cf0fc31ee911c4f7d4f6da6b8085fbbd35a6b0b6a7d561f0acd5434531c9a67fabf61359bad56d268e5b845f1de14fc9aeec0843df69dbe305890bbc333ed60830f9e4a77e7fff2aed6c851ccc34c40b01d4380b6e2efc249c3c385c3115f469099f99202976ac455ec0c55004e402205363f086124099a511802337365444b12495298b3c20d34a0010149171d62c06960704089192f4fb298f142c2d6bb9af1d2cb600fd87b9efed678c4a63fb98309158860c2861f8cb8e66f6ca61eb5e31b53021c36db5611a14b1b093e12c474e91ac0c704086f88d8d6abaab6fdd477ea4f1bdcaff0d3ca55d32ab3d28a15e24a5d7ab43deaa6b55c6e97725e9518259e296fabd7ab5b4c5158c7be153c90f1576139baded2706b3b863aaa3873c5dd816df1bfa61b7485ccae55567a5bbb565989b39dabe2c8185854ecdae91186b2504dd7c88da841feb0ef69072a75aef48bda9e3ad727b53d75aeef052ae257f2ebf9a558259330073dc85f611fc8ace7675f51dae79dd8efe4330994fdd7137b59b634f062d99bb5fd6919a4c954bcadbdedf959ec7766bf33db3981f0afe08a9997ea06f9f7546d6dffb2eb3353dc847bf76bfb5f0ebeaf806f20f981c4681ffb8aeef4fcec67670664dff315f5797cf2fcec41daf37c257bc87ef63c3c185474e731a8a8cff6f9dafe3bb7b7fd673ecf63d61bc4c17d0d96765efff81a2ccd5e7cf28170d063fcf2f373d0837c1eb207ed63ef640fd9f7901708897dcfc7bee704b25fbb4f32d36edd207f1a1790bd4ddb5fc585024d9f2b75a3b693a67f99f5067dafafc941057c0301c20106183c100e7a0069306660e7f173d0034803f2652f3b33307bf22bdaf3f84c72dacb5e3ba9c1ced3be923d662feb8982dafe31a9ed4f3381f033a1b1def6d796ecb1f3e33bd96336daf1c9b7a606ba87783ad709949f874a87f5ae1be43f336dd30df2df319fb6ff6802e5f3826a6fa4766afb976755ccd402c227d6f667b20122583d99b21064f8ca815f86fd7808719a78826ad7014a17aa6d56959610507d5900f306d598aa0a8ab2bed954596a6a8e140d64bca01aecb2c60a5aadb6dce006d530a8a82f6f7a7aa203ef3951d637fbab0704cc0d4e2614375162afb2be99e00226cafa667b9102c4b245696e02ab6c510a626d6b8baa950b68b6fdec94a14032b6e8dbf6c1295b54b362e86dfb60166be4a84dc1a96d5f56cb18500632547c71a7bea988e79205d0fa254d1145007d520809624c9137b66f0c16d6e840a8c49517d0b8d0028b113f3e9722b0c18c149a9f09cd50667eca4d5de5039e9d92c2d7b50a7d0f811d9ef7c1bf2608f5c313ba949fe739600d81567be37b265463339b954c82f1b60e28037c0265807136f309243a13aae35e3afb56345b50dbee5b02b58de2f0cc4f4d4b94e90fcfdaf7af0fb96dacd768c98540d97204bac4e369fa01adf606cfb1a080567ba33a70a4838ded884611335598c558af11d0134ac49085de2f4ed6643d3096612289d4b51aa109967d02c76a0afdc9f2e4c4d6a94a42091ad24851e464027e1a72e50b8ad32951d6aaad412a3449864079170c0839d4b6d3780395856a581b0d5871ba9125059acf6a6fa4b96c2ed1f87a5a01e555ad0d64938616105da81ec76cd26813c413aac9319b347e902385ead8984db701081aa2502d1bb359bd1cc1010bd5e598cd0bb5a6862c54ef8cd95cba62beb0cc419778ba89ae2a343fcf9fbc60cdc66cde2254e648a19a67cce6521e83c5490a94d74367cc2696a10514a050dd3366f3eeb065460ad561087e3e2bac9018b474e91fc35db5f9e5490c5425a3658a2d314310513582131ebad030534869a13a7f65b84a8842f539d631476468425d080854a050ac2c254da80ff152a40bd538c752a6304bb07942758b710c145753b731bc46b9f45dcde6ef50a635d3bcdac558c3b2e2d8a938743697b29cad2d94477641ad0de383d4511448a0f9bc02e4cfb4ef1a1a7ec664613757b0d025de500f5d7a687edeed4d18349f3943452d791a27b850de6582567b23a5653334f190b2dea00cf54a4a877985c552a61d221105182d149b15d5fec2c5adc569fe032c1cb055a09f15b5d654f8f4d078663ba52c468e4131300bf32c93c5281dd97db2456e71dea916c774de278baba1991ea4ec72bb0adab1a8419373ce20a83549eeec787d7d49e1d575858545e60a8d56d615161699ab2a9cb3bbb5f6de8b31cef9736befbd18e39cf3f7e19cbfef0341300c43184c04c310068389a2a8b51e4751eb711c49928cc56232194f6d36e3e1e1a1d1683d3d3d3e3e2a60b1b71cec50d05a86e1d092481edf2eab5008a73e58f76daa42f5319c320dc12fe330d4b1aa65a5bbc54776fd7bfdaf3f79b82f131998f117e2a85d1fa46d95613862295bed88d26f2cf5b14b3c96240de377f7d77131ae67ed439bec6d3272876d973b781662fcd7ddddddcf14bffd7135cf8c67a7e491f1f0f0f07c79458c1645bfa97fb72c1a2d2d356870ce39ebeac538e7ef03c1fc7d201886301858c310061345ad615514b51e4792d4751c49325665b2514a2c16cb92545f36b5ab5996d54cadd4ae567695b2ab8db2b8fa5e5f5f5e5688d7d797145e5d5864aed068655d616191b9aab2d6a5542826fee4d6d6bfb7ebbed9958b6bd7cff9cd064447d656ac1dbe898e8e768e1dbe751657dfdd5a7befc518e7ecd6de7b31c639e7efc3397fdf07826018863018188630184c1445adf5388a5a8fe34892642c1693c93c161b5d26938d5e96e5e83b3bb3d96cac3cd54cc3dad3e3e3e33356152a66331e9ed1cd9496442377f82e69493de48e9ed14d1f1f72879f3da13b8e25b4967919ee908c1db3bccc25e976d81d56a1f08e4c53dbb37ed4ac6d2fb9c36e5c85486c71f903b50cc3296d78836a5a86389dbb37cb469db5ede7fcd88832bf8e6bc96c1e91996bd7b7595cfd18be4edbdea79d81803b371551daafa4043d366bdb33f5f71f776adbbf317287ad88320dcb924cb240d6f6a96d1f7395f6c737858ba88f8b287776f0ddd9d9d9b15ecb189831782de8200882e0c78078fcb6ffdb9e13d87e8a5870425843429912ba6c09c10c0f5324643521f3016c572f5e7eb0d6adb5d65a7b9570adc2696ab51fb69b1813a6fcb02965a58c5b4186882cb89c0a285e2fe474443c5a65dc101dfdc8b1d37415e5470ea5afecf57a4a9fad57b210bcb4a9573ce82c54525698443df91117e24d1d48f1a36b833719684d4026878ee886abd9c6b2d636bade5a9c2905768b775323bd4632cfafb6e8f62e1efb0ee95d9ca952784b28ed5f1cde90ccea4348e67fb545f80b696f4afb664983f1c2ac162399418ff4f80bc5b1f6d84d69ff01db07e1aac5e11d914c07901e7fa138c64adab67fcb5d214afb2c7039193182aac5e188640a3dd2e32f14c75839a3e98eda94f66d444742391931aac5e15822993f5f6dd1d0233dfe42718c95339a4fed876ddbcf81c4a6b40fa403696886504e46b5381c4b1a9249e3911e7fa138c6ca19cda7f66353cadbfe0417e0add2fe0a025c404337344328572d0ec7925603472453c5575b64e3911e7fa138c6ca19cda7f66363f1192cc06128edd77a2cc0460d1abaa11942d5e2702c69351b9279e3911e7fa138c6ca19cda7f66363f1e70db7ed6f008135a57d9f0640e006918d1a34744333aac5e158d26ab6f7212493f6d516193dd2e32f14c75839a3f9d47e6c2cfebcbdc0e5b6fd1f4a4294f67b28a064547483c8460d1abaa16a713896b49aed6fe2886442f0488fbf501c63e58ce653fbb1b1f8f3f602172367bf835e10a5ddb1d483e0c8a8e806918d1a3474d5e2702c6935dbdf707a443277bedaa2dd233dfe42718c95339a4fedc7c6e2cfdb0b5c8cdc0c1d91102735a5fd5993d30e070447464537886cd4a0512d0ec79256b3fd0d971b472413008ff4f80bc53156ce683eb51f1b8b3f6f2f703172337435888e9ea08028ed9747a000906387038223a3a21b44366a548bc3b1a4d56c7fc3e574e4886406e0911e7fa138c6ca19cda7f66363f1e7ed052e466e86ae0651d1510e26527e28edcba2a404200200e4d8e180e0c8a8e806918d6a713896b49aed6fb89c8e28362299fb911e7fa138c6ca19cda7f66363f1e7ed052e466e86ae0651d1118e1c4a9fd4940fa57dd2cad4d611800800906387038223a3a21b44d5e2702c6935dbdf70391dd1916c443205f0488f7d47f448fff9cec6237de8bb1a8ff4a2efd047fad177341ee963bedb8ff4a5ef748ff433dfe978a4a7f96ee891dec7770178a4aff96ec623fd8fef2278a4b7f94ee8919e85ef00f048ffbecb3dd29fbecbf1487ff39d8c47fa17bedb3dd2e37c17e3913e86ef703cd2e77c17f4483fc377103cd2eb7c877ba4afe1bba3477a22dfc178a42ff29dd123fd91ef5e3cd2e3f05dd1237d0edfb978a48fc077371ee975f8eef648a77dcf624dac55da1fa92ceebe3d9d8bc5ddd76105807edbfe16b77d1db16d3f00b36d3f029f6d1f003fdb7e0e16dbfeeedcf671bcd8f62188b1ed1fcdd8f68d6a6cfb4545dbfe0d1cdb3e91597dc8be0dd3fa90fd1a26f621fb34ccd087ecebccd187ec0f99a50fd99f61d27cc8be9059f321fb39d3e643f66598ef43f66398371fb21f64e27cc83ececcf9907d18a6ce87ecbf30897cc8be0bf3c887ecdfcc1c3e644f4d1b710fe5ed7d600813f548c664e56c27d6e2344df3cd9496d6d25b9adbf76d269099e60869b9ebcfb9a245eda6c285cf8b1e18341c4fd02cc68e8c3227138acd182287b46e1c759a865803662324026f7c45d9081f5d082c8e5d0ea09f154231eccec862b464683d1454a1fa3262889a87d6e333c2bc862a7cb21934e3d757d399c92b70966ebcd61df02cd28159c5e13d5e6d2c65da2b78c62c442d881cb9cc1151aebef5d1e1ea58df6acf5aa5ff0a7cfd862acc5c085b11fee04035a53feef325baf03ef04094fea1f843e90f137deccf0894cba45056b7b1c0d7e6dcc3828503f7810758d8ff07cc7c625b9861e1d5472e72365bcf3e7cfe688f4ddbb5359e7674173c6608865f7611e2f0c2d0b23e0b6384b17ccece91bcdd46172ebc883225d22f4418d61a3d6affc5efdc43e95f6fd00d1666333430c6977dc9633d34e633bd6df0b59735d7d0e28a28c1d37edff769539c41267d6f330fa5bf6733346432347c313c972cb0d362cc6842724c735df8aebe4553bfbc8da9ceddbd6a7fef3ebe1d4a7f30f77d9f065d8cf6058c33a53f0e8b2f468731e54f5d354b57863070a38a6d5f078d315e462eff0672773e6155a87e8d96cb5187c555b730f3fac888d1238396e3119a29d95ddb194b1d4c5663dc60839f6bb5b2fc7e7f5ff55141930699f4c5c89148df108b465f32c28cc66c660c8f2018770bd89f191c64d29777e5129ce30220823167e9008c7903a57fce2a733a567c3a68647aaa5d194726810fbefdeffb33078d564b5986b5e6183667dd9c96192b9455fa673365fe421c03cbf09bb34239336e87ae8c319729fdbfff2f37661dac906732a57f5aee5abf76fe3ca6f4bf564bf9f9f421ebf5ba503803d740dd984f10833fc62132e9fb688cb5fc36ffdcff7c54f066fc7d7e1d99f4651ab8868dd16a29c36ded6ba2d16af1f725a5bfa569296bb50ae564c408c2c178e1e2d6a29ee6d7fa000b076c402a7cd2105bcbf45daff22409112a282f34124555932d57282f5c82a50a8a4b0f282f3c81ca9508534fa03c9189156c44063020a03c8b4393ad6def83a163cc84ea3b7a19be97e06bd86b17332ea2049f09ade48e1e1b6558865efbdafd3e9cae624d70b52ad60404b8c016e9a29a01545ab12a57ed82b245e9d56272b5acd34e2b966fff1f98e5e2cadfd4d6e4884d209209d5e1e865fe904cba712cce7edfeb71fceef7e34edd2ed9784da0ef2beacf840ab1388b4145f1bb7901fe6b02e5bfcf847e5f86f27def26d8b338fb9d6013368fec0dfbd9cce0d4f1a474100acc40398350b6286ffb2013aa6d1f8cb2451a44638d605ba0145b54bd1899da167cca4265a7bcec14acdaf6abf56284879d8264b605a5b6fdece0932d4a41a723b6c8c56c0bf69c6c510af63e13ec81422ce864db9faa3876b67ffa65d9fe71f1d929ec69fb7b3502a16a90f5ff81656d7f7049ad7a87e3d6aea40460d2976f187e9f48059f20d46dda9f13f0ebfbb46281a0c3c824d04d0cf57d20d4f7857949f97df8b0cf1c61647e0d2377f4ecf02f57f861a515eb8b6beba68ae54e9a94e9e5eaedfce9cd2a94f97cda9f89bfd7574b6b5b26a5561a92794999ff7b914cfab239ceae9dcd6633ec7526c6ae59d1addb1623439cf8005de2d5352f08e9a1363c92421ad49e372210d3650b5de239125a7268c16603980b0a32d42a224f4ca14b3cdb848853dd818613c0a929bca0f62cd217ff3d97709c259c3c5d1547b0f129508ce04fb84440ef79c59f69035d6ffa7efd05d820248bf31e0bb045f5ea489cedef4d7ea401d56bfb06feb5dd9db63ff8e50b6c5106b668dcee643e7b282927b0459800b6c89e398eaed13d7137c8df89debfecf2820abbb427580aa95b3da0d969e8511857b998881836a085ea3b2ecd7880a148177a977896c81258d02bf8f109c4a3e769dff34c9be799f6ec99f6ce33edf299b6ec99f633e967dae2336dd833edf09936f84cbc4f0938e87d7ca64c751b8ff686e3a79918ffccc4bf63e22f4dfcb298899f34f18f267e6de2174dfc3013ff67c6b1b8e60c329adfe6738987d61b64cb8cdb8c79c3e50594975db00a33640426282f0b49e2409129caa0bc2cc5cb813a459e36f05d7913c6abcac80c57447af06aeaa14b3ccde56b0e7ac5df85aeef384ca1444a3265891635718a38086bc4c0e048bc2cd1c34af32587872640bc0993c4123be400435557cde104a91ebc04314bac70558182d2be8c31d2648818782801fcc18334bd14924097780ff810c4edaa61cc16374d8c7ce13134685541f14297783c545ae11727de84e5ea09ff120fe6c60bbd727f8957a4840d8a4f14c0a039d2903005aad6895203111a26a2bcd8e7190581430c3d868e0e5ce8126f878829f48a7d5eceda825ef17fa1ab8dabb36afbcbf7c38abbea8fdac656029eb56f778dde227503127489e7468680e9a1f69778f6792392139e507b5ef1e7b9df00f3096536228419a27adfebb9b562a25499aa3bd8e002160f5d3234a1faa24983856a8c65650ad5f92bf74c28afd74ef11716224da8fe4098a749c249d415bb56e81246aa8aca073d545faff766b3d6b1818a0bd578acd708d4f2214d17bec261cb160874b8b450fd8d4b4556d23ca13c90884be1458585f2769240afdcd7d684ae224de84e072c55a808688448a1d60411568862f1a6cc1414aa43582c650a59c081d3850abda606ad14678ec04179a49a25ae110d22a0446118a0e640a1daadac422001e5e51c9058aeae12b8aed656196a61ac1b9465a41cb1ac13084f74a136052a555fa806c358ca64e320f1c1941846072654680eb57fd95caa555571a040b3a7380cc38bbfbfe60fdaf6dcc413afa057fccc4f45462f245966b22280a3456bcc982151286f6708f47a55b9b285f2c01250db9d93a6ca16cadbf9426d4b45bd23b6501ee864fb842842035f286f870d064370df0f79bb56a133488c1092a3fef199d0abf30994815ed2cfc4847eafdbe1eb25110d9c3065509e0a244c5040ef9366453590f04c2fd8dff943b7bf8a8e3cb1576649143aea4a86679a01a71d7aed8be26742452d9a4b5ace104c64a13c1f3a64a240abbd71bf929e440c92323d54c7fd61bdf63dd1d1bcb9767b7d907a614b7fe00d447aa80e6147dc7c551f928c9142b516350c167e5fc6f86aabad7bd55ad75a6bd55a0bf9c0044914aa65347c8002e5429329a2d094697b5581694275698fc0614c54982954e812512e48a1fa9210e5c11028afe704b456b598bcc142755e02e549113482245ad07c861ea82142b5140aa1f5260694374447b7e454baa4a041798e640a5aed0d50481b25b850db94040b3df4933265ce16aa472d8ee4272606384fa8de91c0ee35574bb2d08b054c14155a899469b879bab89ccacb45ab58dba7a44828a5aaa84628ef89a97cfcfce3e7fce2671df9f804d240e367224ddcbb5f22dc2ffc249ab8a9a90cff7e8a9b368ec2502194e19987943ef95cc2e752eda2c60d179477dba057fcefcd434a7fdc55fa59a3e553c44bfa694beb06358150a6566bf76c690929d3abe59385f541995e2c1555541e94e9a5aa4d4969a04cafd48a28a89ebd17d729d37b2da653a6d65a3c4599da7a460a570e3998b8d3014b95cf4e4b156feada38a64c1b88c74e7d5f0cf87c3599da42b5c34067a97e4571c216cadb7102adf686df8ae99839f3846a15162a0acab1b29ebaf494a0fa52554951a6d6daa928cad44ae5faf907609854a93918ad18366043706208294e4687219080116188157c84316f5240f50a2b3468ba7e9e6c530a656a9b806cef0baa4cfdcbd6c595a44c9d6b4b0b8532752d2e598e7583ec5b24a5feb15ea3a29c5ba864eadaa89a2265cca9191100002800931640202814100a4743519204412cfc14800f73c04a58461a89a3298cc2300a62200618402001c000800031c88021a2062664c660b813dc16332343da7f9918d8fdcfc440dd7f2706eefe331f0355c22c18ad32f9d04f1a4e1de85722746e9f8753e4e72a1b04ee05d31106f67f1a31a4fde38021ad3f860c68ff311b0c1998ad6168826cb961149792e402efd01c2a2b9dbd0144f9ebcc0155b2461ab5348eb440843885f4bf2deb3de70710bbb887f220d89d5ba2274194240d2e0685a891c2a178b4931e0f622c7c6d8fec3cb11e501a355141851fc2c49baa1873b577bf37752a7e3551225af0184b58c5a9a31268d43ee3dbd389f3bc26dbbe77c515726f830f310603a19937095a4e9868e537c69b31a5d66dd8a0ba3e8162d64d3cd13c65eb5048197eca15182fa3a7fa493e262979e740f4236e27e0e30e18f1c7c3dc9fb3b890f7c8d6e6273e266be1ab0e88aee004f3a81d30de0043678490324fbfa426fd0a5b1e79a5b49727e46394989945f6038aa789ed05f7d9014dc270d863d38256b61f8e5a9142e236af2a35943f6a45c0c09cfe44fc14bb4b2f82e8cbc8d9e24756f177821d8a1b81041ab45adc11fbe87a2685d29e9c455868cd649142b6a49f2c0ab430430ec0d9b16de391a4946bea30d4ae3601f3d610ee4ac7e19a696c00919e11341045396be355b59a4771f3339b7d549d5b8059baf16a0198ddc63fda87567354e55499a291b04d869105893c189d0cbf20c50f617713697e3e0ca547b7f6339cf472868e8fa231e768871d303894d5ba08f6b6f76abbab3756579e893db2f632a6a32e11ced1d10f5a6bcffcd710a0b2d5df934e5731f14c3b746a145f6e07b7e05a5f375edcb2fdd0a0c964c636e481e2e2078e445183588f503477ada61fd7b5b067f33151bcb658f85e7ccb3bc25616e7d5ba7d2fb4ce71cbaeb9066659c2250bb39e1e7a31c16b0561cc172e79ded8c0eb3675f9753920193e214dd64035bea2e13c6f2e835543da263e4d6a454b378b108a012fa405d15620f0e03b01a39c2916264982955a0820eeb33b7b4bbac34536ab85180ed0e798d323fc58e484fefc1afc969141bc837cc5725564163a63216d07aa8acb605580bec5257bca60ceea128dd5f76311e1184b65c25c1f99ce46abd86d606a9bc00a36dd90567449144ef3a44f23e977a6a9bc5bcdd85826d50e1f5309ffe01c5c17723e3fa67f533d13c9548a888084b9d3ef169eb27d9dcd65937674c104378ebe13c1321fdc0375f7d4b1967f7121564725fef984c7ab44d13e10af983f2a9d6291f99f910053f5afb165c187d42a6823d6ec1c3eeab974f892c15423655eb60e43ee84cbc2d853e1e99aa0b9769685a2a58079cc12ac9bf452692463212ff53473c2fb0dee448c8e02a7063c01e2d45803632afb25bddabe153c9829e004cf31af3292057f519e6259538b5e605197bfc37feb96dc9d3393ec684a75c25052fcb2a16f551fdd53b3147bf8e3a6d85f7ac0bed5b03e97b2f3c086c22597d896b3bf9de325c8e915951e0fd7a8110a496728a34ed6fc8b6b4665c712cb64f72fd74693b4b37f2c9bb4955058e696353314330c0dd30cc3969d44a90851e50f9664292db80e5d342c863e65408ec1db8dc3162442068caee2e9c839410088ac89190206a9046b1c474f73f08f5b6a28c2f5bd0d4864978eb77542b34c689ea6b2d16257d856d67d4ada195df97f0c5cee1133555e53e4e2fe939da6606af30c23cc6be826357ddd7801c920fdd7a639f9cfd6689168b7e039ec53c3a8c009cd9b43a487efc5d6e9d482580660557f932e0142e171578c5d12cca85e2ca4bfc1178c7e720ce872ce46db83781acd48a6a15d9359b448d504ca0d818a242372a0c1951d299929fc41134cbe6fbc56565b457ec5849a1c93ca189da60fd7de59f188dc16b48f9412f0d5c8349e3743ba4656946697d2df155747bef97f454e5e8e08d3eb7adfa06b162c498165e8e195b0fa46bf6f6ce50a76b33a3b7d5e580b25144974ee5fd27da11daaa26f7a37539066b702421ff303cc6ea80556a1ff9ac352ad973c561c16e25a0c65de8d0279d7cba083baf1ea62bb7ffb61532b843ee381d25b5ac92e0f0ba7e1239b55392adaa7fc6e4142300c9685c441b32845211d16834ca1fea4dbbe47fafdcd7472868bb24fcbf604f7cc813c69018ca18124a2a6a637c5a601176763b3d4631ad4224cd61ea6c321b50e8804de2ef6573c535c6045fadf675a84801f0ba052e9c383740c851ff3d80e9adda4ad007679e6fe7d989e7da7bb664ad23f34288ede2a26e8629c65f4d92a2e21848e903ca990cd5854b7a3f21090c99154a8ca5bfb5d1f4d4d48374d89332de7de9c77c138b80fc1208c6f8605159910d616d07fdca820aab4b0f8499ef92988a0c7a1d0a1b949fd301e8afeedaacee580892878f4c2104704870a7064bd42b103e4a99cd1425390b98e6c081345acc179304b87dc5b7d494692b40bb8a68cbe0ad604a9e54f6694fd60a424c97c99898752ca3bdbbee1acb8a4297d9f9b10c28e831d7823ae31a0603526c4a199d025d9b9867f2135a4bb9d09297590dd8f99de3fde97a8ba2ab4bb330604151b9a810538d2a35fac572f4c314af1f8fb033b84f932092b23794deab4f56b8b3f99496708a7a5499186b25d3b941e4c2129323e7d9dd3b50b114d9b43eef31cafc3d8b183356d199a3cef72b890759f048fb633b8dc72f7ce4193a941d797c25dabc35c4c41d71c54e0b11ac099eb7dc9c7d4db64a1628ae943b2c5e2f6391d1dcf09fdc13c9b6abb8691c64566b19b639043ba9958ac6de2035f88e8c5fafa2a805be0b1bb9efcd296a24ea459d4c59bac8434bcc83da4ca452f3efa40bdab3b6ef821383c580d4f575b2042b34830df2a27cc2cc38479c83f0c64abad82c0e6cee23e0fc5a3496b7d131033ad386450a16fe53b3ae84321f53d7a15031d62506d43ae403eed5969628d0987b2e2dc47792db8f75079a2e28617122961f8a36630d894ab2c79c4dc94187eba586f890b13bf748ae590e13c21ee54dda2875d9cb8e3928e99425274755f4fd92b9c27c8c9534bff53ccd455cbb551a1daa1da025176659de93acd800a58f8d807294f8ebab8750a09c07f35c40eeae940c615a9411ac87d3f5da32ed0617e92d8cbf9a1ae79495f0b4c663f6492ee33f61c0ec040c97b2f672408f7412947ec3fa16b3c3d2c6015efab1f21d64848fdc85c3adab289e73e17aabbb73c36b46a3c498044115aae49c045dc713a50b38ecfaaf712ac10b47fe3b31f3e2be3560f41c36253def28259f74728eabe4cf96b87eb8187534c22c650c42f1082dde5c86851e88ab813827630288f5eed6591ebc333ab07bca9ef3aea4cb74b221df18c74d28e01608b8dd1db56494b5fd43bbb96b645ef9d55859709ec8f8f84c085a6565a36afe5d5ac2371d59b6a94148d753c078f0ee62583def270e84c4e9785daa83ad585c3e8b826a22d2d5a63325f6e99e15717c176be093d31caf33a8239727407df10d71b1ebdc144d319cb8d8b12e44f4874d7ed2006c9852d30103d65ed92759a4a2598969b058caf59b5f81f5e4225b8ec84670e119952fdc93cb146c09d4e517849e2d6291c9659dea26aeb2d111a8a84925592cedf5dc732583e17c24e876455f28633dca7e62a78ba8ee1a60cd11c9b3875566bc2c8c1370350aa9a25e15cfb8d5321174bc50d1304d972602f152a55b93138ab46c206466f2f646f04186355b62105259261bec2a4eab831cf86a6ad4b860a67fb98e97a7a974fcf7ece4cc586a813e1b724e433763e056adf532586e3d5acb418b4a6f16313e2d5b87caf7a7835b1bfa56ae9903ccad27feaffef6a2e5578b0076eb2dabb1af749fecc5ef5070bd123baabc9011d23f9ca61c302e6f3d97c153f0dfad08369852f31d7c56cbec993241d863a591c129809281c7128ef9e6010bb9a5af0d593714802c41470f50a8c50a40570afaeffead0ac6c4530433742162958bf0caa04ab8900d0012ee1f55029433b26488f171c1d6acf266ae6a2b44806d55149a683550a6c97e57c3bbc6afa15b0268ceda4ea39bc07deed4aba7ff960b55bad31ac397b8ad5c238014b3c422bf0e591027d118fe162460fd034509ad86355298e4c1fa7aa9203ae29cc9114e53d052fc77d31693657235da60f73ad9f715a61481e91db4daded44d59d7bda038176ecd974576bfc781d6e8aaecef2bd5b41e889527b8e124de94428a284743c9fc0f23c484b9750dbaefc89e280d330e420c601628f653bfe9ea1e068be820f844f2b343f8cc4c86829c3e5f8e251486f0ab9702d85384238f57d42b770a639f878986a6f7fe5547ac680c14a35586debe867e8f73abb338a1a3c82a3c7ca1d66d96ef677d72c85f6047310cd636258fa4d6542758e2ee7d0b588ff89c27223890caf368642f9a3dc5e36002330f9aeaf1749f5e784198defb2f6185554318c126b52698e2934889281106baa052251d56e96a6c5c0b45c9e3231d3c0b84f9927c245d16c0e7351e31fc2a4867a6f9dad685607d3b456247a22e3632d03717ab49f3bf343fddf47e336f5a2a2aac9adc040291638ecb6a1e7b37089054dbf3d9dd6499fd9e57f1258007fdf1b7c461f90b096230e8fc0f24cfb9557af988ebb249d51047509fa8fb4f89052c1d08b07e4d6c5183b4b35873b0b5fab7366c2a8f640a2e4267bbae0efd0a8fe684a225449ea782504698d9bd3bce8a5dcefb45c434b30080e3c3542757d160d38b0965ba4d77e1075627d44f0e7b3405caff2874d47f6805dc3fe5c25d4021a0ab4085d95b55e28d274960c01cc8391fad026691c6d9743ebe31420574e942c3f07b3ac0b29658bbe939da4309b4dff0d89d3887b32669c0d72362428485ca1c28ac1a21719fb4be97c790d49d9484debb5d85571ddc6b6db7bdfb8b1f032484906568138765db04c29ed36571ac0e95c0d9bd7465de75cfa0d49d210d0d6b11a240f26f16ec468a273b1a76f2b170efa0c4593e8e9e42b6c32a3934010d851aadd380f1f2589ca4b1853a098f89b2932c87d80aca83832e4a63257dea6cac37018765514e380e6b4968ca80efc0b6484b4b5188d2c277b60954d7e3cf366088cfee8a954383ad381095da57298c4c8a3c672cedc564a3cc91dd692ec145ffdf6456f384cfa7a4dd2c456ee86ca824e1a547b7de7eda691997e2d6f82d111d32fcc5b8ddd2cf3ec4b4d6af883eb1b0f7cb849b06527320d5957276c2c675667b4ee3aeb67eaa0f8aedf4a7bc825376b6d3495f79a498867403ab7a9d46781d001c6094e02947cb41489c52ad6562082e9209fc357dea8d5ac150438d2aa9ea846071856879ff2111947badcc5edb6edd22a9d46cf31e742ecf8297c1471fc2c96093502301575da459228e7f0959cecdfd368b776eb5c603fc53dbed3f53d4f76c779526c82392a9c44e134825695cca7357f0086945417da0aa4aca01720ee3a2995c66f7b4bd629c779a41f710423de5a0acc1b19d8b07c432e8f0973f23c338c1409f941d9f33c0d303c17d31707648ed35fa67b5bdca5749bee329da0406ac62f3f1e01bc266c399bae9d99592e9d99dc6dce1d646fce8c994266f0c7b8bed91fdadc7a716fdf10dcf705348dc63a16d5257e83474746857a8f43c491bed8cd8f69005c93cb6d5778632397fcf0c86b9484bbcd959dff1ed23a8e2d9079d4e5b66fb5127178d9186ccef206f00e3a2f510bffb53a417cacedede1fe4ab03aa977ba46da62b905d5b02bef58fcfe2e2246aeac83ee35075ab2e95fb2fce5e271532f0349cb078d658a9877742aa296be10c516a6b7ad08f21ed34bb597488f0f3a166dc640fe368e880ed54be7004b3fc3f9a1bf8049ff8bcc776ff046a5f2b2220114223d80e072f17c92e398ed919f163af4ce3052f88821d0e30a9b6af2031f24acdfe0616fea086f92e81238fdd359a17f82ec299b1d30d3fe2fedf5d2bd5d59e4e0151b09a85cc7b03122df510f2fbd387a763cc48f381adc36d2058ba84ac5b584cd61b46360b557867362ded708077cbbe7d639ec5cf1f140c8a7934ce0a65d8759b6d08673acbf9e8877b51d095cd8aa27a6469ba5bd1c4194b922a9cad170c719ea527c701354a48b2838d528691a2dde4b6a707d2c1a0069f46820eeda0ab653bf6861cbc78450dfe48fb3d1bad8e174905ad975846f8a9d5e56a8aee264c117b4633cca71c9d94acc996cd001e3e51789151c9905c91d56acf0f25600f8fcaff82bd3f587a54640b82aaf8ae4e356eafacb5a630e9cb15195eb4ea3f1c805702e76d35e376d54f8088e9305974050232f534524e13f34df47d0e84f575d857a78cc2cc141b89614ca92b220dd278ff7c3d18c0256965b0a49a2334aac21143585d0f8124f389db96c38d92fa0f7aadcc6cc4d8feb477644dbb4aa771126036b9e6239487f779c3d12abac797cbdef93c1f6fed5576bbeebfce0de7ebd6dccf6810be80e66c10aba0b48ef6a6db16b2ac459a82596f7aac1fd163182cbfd429d1ec72a37f9d8a044df74041bffa5a86ef6e360a7e65f15a01ca1a96bb4c6e69c7f3c2db29b1539a45e57f9f88996464e8a45686cec8f21fc5adde507b046162d575b9ad2518b6e55db3eb38398fb20a81f030aecb9bfbcb94b413765e9b5cb3c423216165e39aa04aadb1802ab8d7be8b62fdc2a877a3d8b0f3a356a979e5524a30a574c1032eebae4fcbdb88d2ce6a1190570646e30949c084830bcdd89dcdde098a1de7e7d873125da023c013a288752b6cf4f21d28ee3d9f0d1ba626b593402914ad82280a94c026305e64458b1d5640e0811a1b346747fb2d6d9d625b1b4580e7a811791e8fa42a571af364fa78839bfe369cdc542864597240b89eea116c84feb0cfaa5009c9219833a7ffc95412f43c465dc73da3c7200364252569c8effbb941b2e85167a0cfaa13fcde6ddc7cfe214b9950edc6c6f314513b6324b7c2e18125186ada02c320c9a43c922ad25986c6219c7ba0ea61dd178a815167a940c2683c6c6942a613df56394d9e187ba1e1a509430a2dd830a36a3d98c9652f83e91b88d48464e57f244b45636c8abb75b469d680d77c74dba70487316a80c04270a0216bbaecbab73479a48b12f5536289ed26c87a04536133945cbdc404defc8115a225454f07bae73bc12fd60c88cc8d85267b277594791a882c5c3c471319f66968d04688943b0c55074b840a88092eb02a338868ce3e413d285516e8dc51ba053be826d19b287f59497ae76e250108a67311bb5bc91d5c159c0a3a8df6f4140ec58d9c1c80439ebbbba1d34220b6916e4499b8a80914bd0ff54ba1a9bc4c18a464a66c435c8d334cc353e1a56a19be0e022850aebca398a030a695c24a429bc67fabb5c4933a1be18702324bbf4df7b7a66695b7179cb18da9ff98f45f2d1ff7d5cb1af7289c994cb03f748d924efeed33055ebc29c18e6bb548e05ed6119a27a5fb00a91f379fa4742c463dcac65f9a4c0611121a78d37684359d903493b48faf5bd7c83c8611a0cec6b6fb0f9695a058b571b5e16626a1a15c5182f5c939694c402da2584016a978370aadb57f0d300b2f7b00e1b8117abaeb2f81700ac939e9715ed4d802adde8cf2177fb0088bcde220b72a6a03e5d353f580b3a06f5b0d84c78146a83e5828f4e6a10e07cffb8e440fe4e28ad73a33c2e453d094e0fa5f610da6c93c9eb2effbcc75842a213bf4cac89147f815399304a4e09ea791e28f210b050e69c4c157303592b71d053e1e0e2e015c9d06a32598f89b98552e8295efca2aa43063569f485c44932db946013bb6f71036baf7683de6b42c07e4279e51c49000415de173f9b6da8399865ae656d9320ffe4aeb3f2d3fd8368b20a32356bef707d7c06ea2f7e0b66a9f568e6f67d1243161b7683535eda3044a9a0044c20172220f33ff119b8dff2a70b11a5d9a210ccf0ff050bf4c44852291990edf5462120ad601f6ab332c3dd2fee38566229314b784d5f8710a6936287d968bde9b11d94d01700c65869fe46886765185023d0dcb80b1c38a11fa279adb95360dc0812bdf705b46105028fa146f035d21fc9c74fd7060e5a6d0c03df31f016e6ba57d455289b893bd13db3269671c1f0ad30c9a7ccf9384a3929cb84f650a15c2b928e5f7451efb592ec5c907c4a83f0c80967a75ceb98a1259ef5d72e9899270844b6854131364c5528bac727f4292735eef4989105f7d9acc8f3d84177fcb5a99125978ecfd3b98c87aa2b156d71b0ab54c41b77866d93da623a3274fb94bbacfdc4c1141aec073ceba50780df2e49e8bfd1a332f09f822dcc80f28283345c9a2e34f6cd7af8d341205b0a76f8deb5ca14be0a1868fcb2e08fbb39b1e3c4c3e32d8fab026c4d760a03f7b89574585c87abada42beb8201e4f69112e41e7cc29c19ca89bf98aa5f78e3bce2b2c0547babe44bf13fd04c237f70a1b7a4ae2e3b51ec41ffd79d2df940d2e91895f43e3bb1f06dbd33de429d9df8dd55826a7c665a55fb9f2a279ccccb7e770fac85b1deb671cce35c5bb6335efa8a9dae55cc6ad4977ff37f8dfe27bddc5f7d61b4d8f5d7fccca9310c91c6130b6510209c6bc2612c90cb8703ac9e9331b5558c05175d4f241402dfd481ef7a8fa18ba64175da0b16a0be56d2876e4ec3f21d939b455118d57018a04b37b6fb89c3c44af66f7e3db7d8edb8d466c701f99504b6524febe972f56dc5672d13ce06c54a70957c746f9757ec167666b6e142972d4186903e1ea6ca1e0e4f46b9e39500e61b3cb015c50fc52511d6f33a85a95171adc8e798b169210a417cdae683d27d61771786a2988d85c9126b4046e874dcf69635a4089adea87044df3bf91f49c0aada77d8647d1551b063148f80a3dc2e9d70972e3f3125f0a8a793d24f68aa28d1e13ea4c87365cfe3449d3519f2b35edaf1970c5f077b6c21b77c96a925fab8a556ea81db49ba1a3dee07f7424741c1242edd73eda2720028690498505d214149121f1b3d974760542b4930cd628fd7ea849128eaf2f9fb54558deab5460b813bea7e9deced6091dc034237847371265c8a2de09531e04bc83209640608212cd9f00321ded1c313b10f8c9edeedc8929d246d9d22a7ea06243373768cc56a58d92e7399bdc6441eee1f8c0b648e459f053c8ca5d2218ec5f1d6e91deb4728b379197561ef620f0419d949724716a7d83effa00b1199e1e4e1ffde74866e2ee2a0790e8d0463219420347312778f490f09464f56e180630ac7b104a183a9e682650729e761ad1247b4d1db49d0b6b338d4a0be04d88ff065efa824fe308ba56912e6b9c9f11e6efe405fc7996e25fa17522a1dd4d360a1d19ee639a3d9b664d9a8809900479909d61e947f2abe119973de87bf5f5c80d65119aefae79e4b3ed5465fd567c2cdfa6d7322822650907e2b0e68295dc843f26573abd5d02032bba257612bbcf2c93a9cca551f960f1c99b0ba11d95415b8b1f24dba10639355ef0053a7c597bf4a3c39915fe915c34c79b3fa72e576a358b94e22be6ee54a7e3ec3c49ed930d278889e7a5a620f85954fc19bfeaa0805211a3b94d64606f6d384835d3ed1a878b0add9016e29b484deb625f4d451d0a15a655bf834f73f45ec7020bd1d7b6ac3aa9c0f69d879288a423c0e1d38086dad579712796d49b9ec0dfacbbfd5cb76a59b212e8b0665af7e88f2f8886a37bf4ee40c4d031bdd454b1bb446cd0885a9da124990eb33040d6696d0cc417a1faa199de6e0fed92f786d16a2c66c036cb0d520ba00310b520eb4d2e6b792c3ccfdfbb1655dc000ee48e011ee5570a72552093f619c1f08069f9d8f41098130f2217695e37a18bacaf6c783f94735bcfe831abcfd8f1aeafe4e8c016b719d01fd4f7c3a3c78655f0d527c63eb0f432a7cb037559d43be30d383c8a2ed61c842d443cb62e841cba2e961d6de2b5c87884a8f5c87610c7e519a9f0b738546d6dee1e52b6c88f468978cf4109794f5982e117a74974cf5d02ee97a4c4d4c32c913e598cf627a988ba4925c42e6d472b9446d368c49272c7b3f32decb1aecaa4271d5555b72c5ab79e522a8a97219552372e9a899705155537319b31240d0cad6e2aa70144a6496099582674648875e45a05de4d3368a342bb6dd229dc8deb344e69e4ce2cb1eb744d1deb344c69e7ce2d33d66a2e8def344e69e2c22d2d0ed7dce30f2d1ee7f4358481f8ad89552edba89274f3009d991e3ece397ac72cd1957f5c349a9aacd69ac4ac6a9a86ace49aaaae0345295cca95435c349a9aacd69ccabe8c9e6db83fb72020a7eb1c829f799a5ff7390510586a08c095f02290d735573545efd8bed426ff0b24f2fe9b252afe1654aaf72d9ac5eeab24eaff93255afe6b2512fe9b25aaff16542afdedd977a6d4583867c25dcd84819a3e8864dd3adc1802f819668a512079de5a1a3c6e457af7387d47db849a86bb88da953b8d5d54d7213d595b84dab5373ebd5cdb849ab2bb98daa93b895d5cd72533d4ae1966ff908f2ed02484b0586a92a1f3eeca1af27b0723856a70cebfff6283662c25df4c8fbd50998f6032668efcb2640d8a79a40b8ef3941655f31c1df7d6a02997dbf09aafb9a09bef6492610ef7b4f50d8d775faa5046d85720f9c167c484c3752e49675de9f602dcb7abc4eaadc6889133f0cdcae39358c27b434cc50a0a1a18a429486168a311a1050d4340841d1ac611405b286020ab13574514c6b4042515e83208abe861114883594a210d6d07892590dbc94df81e20d73fc478485293345ddd06eb8659b37455aa5d52a771c5fb128c5da15c7d3c2f8e0211a50f812deabd70b25fd224c96902c217962225262890858a43b32bb27f1ef85babd87ea44ff305c73ed3584babc3945a4d02f2648f8dec2b045357303d38c6445937a8ce682d968cc5e38bc8a34436dc545961e4f6285e822a219bce47a695c4153a95cd6ba70d8b1e4c87ee1deae9138e5aea6f5fe709d056b29d4323d69dab053dbbf6dc120b0986d90d441196c0f0f4f82532f6ca601c814d6d78bfe1ef4ed3668edf26a7bdc015b930ea9d66b5edd8ef7530f390a646033f3de47c7f2051550ee9327543e633de8297df661278354ed0f344a7352014c24398496429780488ea8b5bbbf2ac1678b1105d57075517ff6016267e42071ca7aeb6026445e9a35f82c216061943f938132bba862ffa0b228c08f959f06a44b4240b787428a2ee5455a397367924c1c5ab1f01472443c2092a40075731b76208d48c62480eb943a5c8c31bd47ba5d1a55a70ea00d8ef52fd479b25ce51dd65907217802f82fcab114d914db32c05f87384cc3c4818c26046054243365a9c63aa1d150881aea0fdf76d0f02c45ed8a45d17e37233185bdd4208443162570d07ca6f3d1686cf083412ca7949b5b26559e754010f75c4a19b1118462f035980f335332a2ec86298f396862149e8f96d45cf4d11ac0137984c6da3323c790c06f594706609ed350e0ddd09294821c007eaa815cfd966f41042c8cd3376f61c00332c0236216b3c917d798f10a3d9597a782e6912cb7922d101bedadfa4624822178e7c7003a8607bd1a3afa9193b664280a08b2b6b4ba9325e1296aa762528d70133423f3dcecf7f7895a441c60270fd515a58636a8580840d9b220aa758c844a0db28af3b4dd370c973ef5916177f9580828af65cf2fa8a1c9386670bd0f7bc60e17dcfa43861c03dac945ddc555ffc86cc7ef395dbb1faee8d985ccc2c28db270e4256db782ec735a93be8ded0fa6a58595716f3f4275a6b2896416eb28372b40415c14f9504abf6efa2196e250565292f594f41a0b6346f4946db39ff72b5d63a0767a5d9088443580cfd329672eefbb7854b62f12c8b59632238539b8f7cf7df4612cf5f3502022f5191fea360fadd45b0dda9878ab7ed081b848522e0821d4636325cf6098dc15f578e428ccc1c6481a11c6185dbbc1067a49d1973f0bf59d2785cb70e2bd0c11c8759d85324b2a52abaac6071b8d7e5c4f11c8599155d3b9a7484b0025c1785badf28db3bfff1ea2fb00798fb68d995dc780df95f77c06edb45891a469607e0e27a30fdb12c018fb2502b7c3786f42569c5a96a7471b56e441a517be6b43c3819914d86ee1525718960498f02b2fe9235187e9977a2a4417c275f54950d68c7543f19fbf1f96ed26279a2c3f9d94c597b7f8a1574e59619302ae6e6135eeae0f64856d8ecc3054e60c0f9478b138930e56564e0cbdf4edce806bafc97f0d8491a6da25f5f373ac11374c0c7a3c0c63dde58abb1bce393684323baa931cb71f9de2383052b119c714573b9467a9148b1be679db8315557b57c6400a711d4bae9e94cee2927d0c3a38a14e0d84f18cefe3367157a4ff33f92dfaba519d5c75738420030cda6a9a5a93db9c67594dce062e88d0e11aa4238e6c7e99625643ea011de90d1e5bb15f8b741ea3dba62199374c121dbb8fe3b515d443a54e0c747dfd4d6888130f93eeb1f5018ace3a7682d26be56cd1f53040809a3687bd22e765697106c5adce02a95d56b2bcda782360caedd3db9b9462a1da0ee45a08f2007b49d6930135c28da133e7fb962cb4e1c81ec974cd1fbe36731e8b9b2c133776fe3592b14e9023139b035cd0589c458b0ad226c469903d5e087ef398eb3388c80478484589bc78e94e2cf1b217b0d3627a6c21c8dbe16c29b66c8229bd1df70311f511cdb6ee6a61e924aae4f0e95fa912633e4ff228be582c25f26f1e15190ef1ebe456c0362e0b80d7b1377e0585c1d911689884b26ce4c6205a53b564371a56745ff6130294ebc8cfe38530b4f9c04e308d065abbc140338d165ab3c140338d96a0763c9e3e1094896b2286a6b9250f2169b54d98c934289f074dac478f089ecadd33aff66100f782120e56e8c0ffae7d07c91c44edbec8bc169274b1eaafc4dec3f1adc483e6a5b9e0da10285a1a025735048a99867ceb41c7f158080800da5d90853ca5988fb4f13fb4483c010bb4bbd058c8b75472172a0bf1ae4aefea593ac012da5d7916f35b95de55620dde45c9b5abd6913a1087810dbfb4ed2c44d33c9e33092cc2aa2c64e637e2a693474d36216d9d9dbc8f47873a9bdf5dd541376b55f2b9a13f5c35fe94ee8f5555c9b7f8f48006c5f9e9b85ff453dd0776d5e01b96fed22326f13121cf7499d9ab1ee70cbd6a8fd07613853dd31d600faa16e9305752b5406a69fac09c099002091824361298096c243089c2468240935410e24cbf8752cb31d38e7bbc49023dce804f3271fc70f4ccd94f0380d35f0700a75f07404ebb0e409caed70108e4f5bb2ea886821624ad643db5779913b2b62e7a8332cdcb440e4a3739de6d48b14a7240917172fabeae219ec8e14c2909128a7d97f4290fec50d32494f2a076e9fabe91a77e7b4932a0ff07935ddd107a12128aff02edb6c3ee52449a257b05d7ed9302c4f60f194019bdc4ca16d07c07360cb0051c47e9025f7e73fa7270c9253739c869f5ba76727480169dc1da5bf1d265dc9d7b0026bd01835e81415be0a02f60521730511be00d7f23aa7ac28bec5bb4c0472b8a06f08f1f088e1fed40b933eb0a178cac88471dab9f3a871ed400b1c8532bf45be769f08a666b6961d17998365f4e57636a317776fc71ea68b2252a4f159ec88d8be537ab155a807c19a7a54e86105a7ebdca162798059abc3c7568166c04091145768bd4e089fb93745db6b8af84e7784f4441d18103ed081cb188e0e03f98bca3b2087da37391307ce3fb42a61f8b5a2412630ec076453b83f1664eb042b48d8fc17cbadc77a8d410c69daccc566a99f279f1fa47e6dec68a4e95ee518a1b2e9ba16716e58e3f537f211d105b124d760191f893ea0eb793b8c08e4bcd9640971a0914078c54e7b2da88640cd1649723c99df0171bae9d21acf2fdd22d8614fe961858fe030be95738072b8e15ca80e50945bea6eeaa3eba78ad89af59bc51ecb23bfa6da3fb5c049e31e92f0109134060fcfa080e534f53ef218b936b66d98382210b36998e22bb9a4817d815031e5ca01fd4df83cc2a30165bfef9dff02cffff302ffe36ec3f0381bf76fe9cadc84525bb8f20808223b7d12f2877c9139e7c88bfcf07a9aed3051ad93ce87ff07c3bc08a38290a5b59bc2c9efc2f2fdce41a2efa624fb339412b424fa7f487fe9a910633ec1666fe5f237b6de3cd4232763d20e15240cc45a618dbb83ec178dba53d05d4023b58c0ddd0103e11fe4c3d42d0ae8186f228b2fb483a731253e817e2500e614518089b078d76f5303db5d97f9ac0594402d3eacb3c8dee43d089de9ac27b42f4c83cfbca82639ad6c6c97ecbab1f90158aa0c08ac7e11f2bd400584575e27b8ac29277f6df1fb61ce9e417cb77835a03cf4088282e7f7e171e19bf40f4b7d49f89fbd07bb676700f192744b3c350e8010f0c694ad8bbcd1bea57af02baed174877b0974322db988063bba330a57a55fda55c7c4585fa6fbab4b7c7b5987a6e1d782029675236f560af53519f0e67ddb6405d5233fd7f0180f3d0b8353a80f0727395f3fe2924eed6344e76c5ba3c70e1ed67a9901c0e36630ee22f386b7f0b426b8bff072012800e1595f019bf087923dad2c63638c943717239b51967e01673ab8d462268a909e054bd9cecb835e1a827949b8002b8e02671f681a86330b57681b850cebe377b5f8f5ce38003ff2523a93308f191bf2d59fff0eae2768996560391cfee43741c1840c02a0883d8f366cb604d010fd5a628b19848c3bef107c6f18b54b376140ce5e23086123b2509b471867f9ea408c06f0de8dfe72ec5ac00b9074b227c853fb70ecfe7968d99fa46a053755a1025051355b86290b7a5ffb3b50bb96eb2dc4a855496a126e8bff104ca9d16098a0f2ba688ed6f8c1a358fd2e3263ef2fc209e6325b0db3e62a44f74fbe6c158dcf8c953536110fb9d0462ba4c83777f9131b5eccf403645206cb1744d7804a4b893d657f8140a5c34d79b0265bf5586d1e741e093428081d5ad315e7e148c824eb04db0ac8420387ec88d0800594565d8204b0245b6c56d942573fd348fa77a38fdf256ad3180dc11c4b791513b4ca5caccf6a98fc853ab4313e6b4db3f2ee752371676e0d489acb5074358d7a6f61089927015a7f89a1ba673848f6cc3ce56bc2177580e50556aae1ca2f91ca9d679f4c84eaa238f88d093e052932408a030394aadc14dd03a6aa68e08844ea04bb747055ca81b5fd260a985995c5cb63e23d7090b1412666873618536a92a5ef37f3643a2f344ba1166867c42b0a6b25617213d7241ea9a5c0ddae36f9848e83ecb5c3c337cf98490a625039694a8e9c844359d2a2fa7b3474a2be1ef8558880e460c8949fafbb4b5c471db30c989592ead4e86dce1b5699f663978d87c7a539e6abb1e78247f6d34074adac1515dba65e19e3efeb891cfc744276360fa77cfaf31423bf77f0072e0d02d7aeca653753d1a9d322666331193d72bb294a3a7f49c5077e2d5ed744ba414ffc64684a1ceb81bd27c9d5a04626921c1075f13c1e6e3743f04c8293e63c9475c3732d26515294127f27608a3c4f698c592521797031508c3029cc0299e80d157b7ff0b8786194f06bb3e89a8f54a785e27a349dc452235abfb132c88264a77616bd21d73fe162ca71e0095f6a0a8996e445a370f29d2099ebf491cba46986b4bca5c94846580bca2696483fd8c10225fe034a7979123a575cea4067a660648d141b102638e8f6117ba32d2f3c58c56ed4b1ac04679bac0a2769136a7e0a4056966759a65be749d0bb01447528166cacd5822bc4cac0a2252a9c213ff3b0c08170fc179f4b76ef98934dafa767b1350b2607bf956a1bcd2c252843ca3da94c8d895ab5fc275f444938426d3431140fe3f215d528d7a49f64a98e49fc9b6256879d6623d37407259839441f18909e620c23b140819aef126a4de71613bace24cebf7c28c4ff007094b0bb06f4a66b8ca9d87daabdbfd5b08f107058adbd1dc200a494d3759b280053bcde8e90d9d3af3ada4ced5adb7f4869774e936661cac2635c83d6e7634b66a7d4b1c76ce31e7a99570be60c4648f85ea2b741bb00b15a32f9a990f20b4c61ff95e906ef48e6b93bd50ce48990b667de5a12c633a9e02501ba7d9ea235b54a156d0d6ea325ee8e3121815e398da5a4b9e661a290f4fa16477e094d5a7adc8795bdc185b31a842d1793f4e12f6d9c8078c18c285df489b677430481737e3acb833fad8a100b6479793dea77badc262c651a7b61455c9af6dbc113de90098c3cddd7409daa67bebad1381813a52de3b0758d8b5d01eef12cfdd74653ef50ca3aa9042a24608447249dec772852002a950ebc413e1b3677d151a46eeecc4aaf1d31aed3ddd973bb1133305330a2efac448633427070462724aedea812b06eaffb379c04a863bb8584e3aa890e04eaac8e39fb589d54a17852eb5ae1b390de424403284cc5319231a9c96e592f1b2ffaa73e194b07c1117695576bcef0f95b91f122ae2140c216b2577abb21e97614e1fddb80f4bb92fa393e6e9b300a1d9885b9d8375f80e7ffaf0373202267aea61baf3529501e4bef8bff7b17935d9d607d23afe83b6f9474d2fccdbeea8630ef67e4d564a6eb006c029d132c461ec27d0fd0c2eaff2d4b0425f5a877e258d6fe8905f3afacca3268807ccfc96746c38ad82fabdbfebb7bbaff82944cfb2157552e4bba4b8f94c2f44aa851c9605dbc3b008e25f01c13b4baa00b6494366e152c63200ed83bdc492bc06d7792c9f73ed00c95728afe0ef24494aea8a04dd6bfc3e776e090543566e20a29883424728650fdda55e0ecd5212113e7c16e1b04b33d56c5b04c610850c1013b6951933413814c401728b8aadb70591a4dcae9af837b764558948e46c91029b3153b36cc4a3a431cf779949eb3cbc584e1f7a473c954dd53552364e58efcb6dd98056be5f761630dac9fd53873c3883f89d298b04d65c8763c03151a04d4e9e0e1238906440cf2903aace21398d121878ffe3553f4cabe5769a7f6777062dec85935221d72184c66f0ab3cd5b7abb3b1c5b0cc1795889b1b8f8189a77a4bdcdd0c9fe5d36cfd090f074faf45ca4779357b07c9af4ffb83ff51d69332fb1ff7351b5a066537c0c22236885cdc07b4099adaaeaad8f7d38f8962142f6a6f2c07684530686e0c49324266b0d0446541e149523a5df19b84684a7696246faabcb0a439fb3e38a82cffa5d1b66d44deb5baeb78ab94a5f9e58329d4cfc42a12f724806379ef65cf04ee1fea9d2fe7d24509b04c87a5522767bb68276b7361c3635b7d6a0ecca4df3d13eb15978347ff51991bb67bdcabc4b80bffb816b64a67cbea0fc607ea5501341ba08593ba700598ed25b4073cc203272626431fde922296be6211078a65aa751b526e778201a48f957340061005fa2d6b67293e73b0d293c3979e8c20b0e5d7967aa02cc594c9987230b2caf3de7b87a17b30907ef2a4aeaa94ca8569bb811c7414a4581eef588ac45ad7f2f8dd790d9ab36fb76aabcd10c43d38f1591a8811da4128c78ebe44ecbc9c3fb4a22eb0d3913fc3023c50c6d306cfc8ef85dd47772beecb949b81584867c449419b5b302bd05ded78b12cdb0a91219408ad8d0055b6cc83d4ffc803e87f557bbf5deb8386beccf0287a652e7f264633ef3867a77b3c32493656874d0063677f06f2fb952775046563644e6416b2bc3289e0a6d270418054248af717b5a86c48d949a32cbc865f653a1f707f4082af7eb2b83e714fbac6278bea3bbeeae4692fe400a04daeb269c5a2f2155cb7a457116a84cda7a0b4d6761b5a251d75f30b8c2b94e6d7fb1ae0541005c2b1fef6cb3975e057473cecee8c726930bf13b51c1b49dafbae1b9c191c2799cc7bb1fa64d860b8b00d2e49d118cec0e5c6c5d740fd84fa8affc3d7eebb4a64169d0d423a86511b26ad6707cc31aaef307ba744322283898762c21c44cbb6ec835c1af82c565f2874e79d0fcf539555169914f658192e6f2c7ae8fb3f58007238ddf96ea9caa061ac4c512750dcd8d0b52b0d3b7b7722a00259b1ff4fd2581e348a0ab19acef8a7cfdbb1f7a6822fefab811f5e470916919771fc16b4ba65089c8170df9c43e2ea8e8396554c6979f11f407a7192b18b801ead39a6c361c6a565bdd74980ddc3ea7c12d3c3ef0ea77f8039aeaff5aa736a3586a9e1a8e6543e3b36c20c1a560fb1c2405f5e22bf80e7bfdd9d34e12a3783a9ee670bed8aca904124fe81818254003179bc745da5bd8ea7667403ff0b90cbb103767680fca0da22adfd3152991ce49a64c2bfe4c54e21b07e9e8df6269f5ee8cbd4e0599deddcadbac5e4bdb31ce5f56f2f4054e52890dcf6a0eea43796ce9d5cc81f706fd1e3903b56cc41b2f78c6b0b33ade2c6506550aec47f157a5dbff22e04dae64ab9e4420ec9f3ab224bc2514542896bd4eda9a2e9dfefe161efed5e30c3de665257451ac20521d99c34b6b50410fb4b8032d20b82920e96115e1b2372853735573eed0b16ce6cd936dbf1652e42def9f9bd6c469f2fe7a08a518483a357368e573882541bc3f91102d899716bcac1ee2c218a0c69382e3c76737cec1a03ff508144d0ff17abe91a9971df55328697da60d8e7e400c44f4a702e2735a4eea8a0b0f54a4fb8433fe04012ad6706c34a22c3b6e5c0c6775edb8ccc53a07f349c37b702ae0c4b96220d284ebc1d19d5b82d0c95404ccad24f874a1dcc03eb9c69533463c328c7ecdd13fd9ba946b6d48b4cf75dadc012d612b4523307477e63ec1992c801dbb4e344815cc890dbcd9d0afa05fd26cbf2b8f3b38c0290a9c16eab40dbf30ed85165d0668bd6952a7e5ba0d3d45bea12ad07da40b268b2e5bc9db4d64c6b763ea422a077dd7a3e2041c0cb422106569b6cfef8868d38634845fd1ff5e6c773bf6636b80e43654069cc6cbfd32907b6b482d9fdc1cfb9980c897e1c1b88c2be1aa8390873b7a6270f11b89fc447dd323432468b0a70544e45ce4f1a097592217898efa9624e84cc0084d2a6e688ca6d8c4124824cfa0058cffe0b02174c77a356cd747c351c6e17d86d5deafc86371f1776691121f60317971291e875e0e17c2e61daa1e76394fef28405bb49ba95b28508414611ab455b556c3d3537d689f2289a88680ed779136b7af7bcb45539fb53ea91c558048d1c6986ca406ac2071b6da1b2743e78832ba1239a837cf526259dd851e7632b89d797ecc1c4556404b77bee26267ed0b11c84aefb03f9694ef18dfaee22b622fe3aafb3704151fba11c72c587f064b02cff0b943fbfc4129db60d651be5854fa275f71be142c4a0d4d907e56ba095a1c7a063db26a418dbfef3671aa4ed654845124bdf70e23f0973a2fa58e6b54dd634860020f8ba492eddd9307c9e6c02f78a0c8437378c29fc8cc2d7b5ae8f74d2bbee367c2847ed163137ad6ffaf41b58dd901e88129eeaf376bd6895d00f1cd9e3fdd14d782d8360a172ab0c813278b83330b7105f330650de424398c58dcf51903316201e80009faee7e526e5691f0d4c03b4468dcc4532e0ca23140eac611743bcb99f88a5e53bb02f9bb64e8840053386469f04a522aa1a660eb39061ac42473ea9a8b951a293aeda8e52ad09bff6d54f8c14a96c4310af00ca35aa7a0aeeba0651cd9740f2c1ab3d3d289edfc8ce0a2e71851364d5751306d9b64be803fee18be26e4373fc500408ae78c654bcddc917824bf6aa7792853fda4aacd9bbf2503b9e0ee66b6747289b31d13f3ee663e6b1c4b67da3cadf247770553797a03be6f9d88ccca49cb5b70c27db88d99b37ae6b0a77dd70cff86ac95504f6020f95b82bc4a059ffceeb5a1e14db24c23ce87c65227383f23154f5b0806389041a723ba800751ba0351d186124fc9b6fcacebf976aa962c31e8d4491e336b75063879c2830c3565218d6b7e4afc269822feb12718801290065b201bc10440b9c188f71f03add1f584efee92c701eaef33d0b5592c44c1d1786ed2c9f647def9f2f5c6abf6af4ae26516aa6c089cda6c566700ba69b9efdf0fbeb5c5e134ba2d4eb73a0b52780a2bba35ce5ce96c389928e752640ceeef4e24797ccf48877af0411fc6822546609260a66e851a7161ebf74d2ab421ff84350a9b03c70f4fba7aff7f5210a14abcc6b68d188817842b11cc77a1bf652bea91d283af92688a5cd4edb2e882d1dd9f2bc91a2d6b72ada4704d2af9ae6148f641289b6052925131d3010334293d513503db0044c38009149971c1774ea714de110dcb244dc854f76caa2ee9eb722a9db11e41d7c624000551c20ef5352a166c5dd8d775b7bfb3fa1ceecf62b8cb23283d238e2951ae90e146b93d14a511837e7e56383daf3e2d187ff0aa357619c9d50ced1f1ec17fbc833183ebcad577e16413ac86ac2f722bdcc41b707d6e3e6be583b840b0d8d51044c14b0d39ead985f47673e49187130f41090bf443c59f8a18768a228205fc5f897fbd82ea593cb4d98b477a6a08b0a5e3536e7b2085d3c0e2aedc4d5e4f8587dd96c00bc04cb9323f4466e090c4afc655c8292b284b8a77c01f1fae2733f462cadf1ed465839957984fb1005dd1040303b7d2c01d9bffaba9e2631f3f3a8b55e9f477f00e9b5d8767829b739ee14fb4a9d0c4e8e7a50ea4e755d5033dfdf99052c050d567adaba2de7744c6b3445d53d9f9ff941e3622f7c0c2512c5051ac4450ef7db689352d7fd9b8bcf1947c7c02ca5be7908e1c813cf30f4fefda9a706bf300850c3891556e9cfc8ebb6bba084182325c663dca93cd434ede211ef37b9809d1847b84752f6ea64db0df34ad19b72067d714d639a97b61ede04abac5f252cd20d638b8a35a45421abe99f4400092e4d6122b41ff8c2491beb6c84104160ec4edb5326cbce0bbcd0ab876b73be88b441184861004f0820058587b29dd1953f4f3f873dfc6129fb5021511922ac2bbc2bd181096b49a2036771b6c75961a5dfe414455a41c3f71c4d1cbec18b04f4eaadef03da9f9e0b04063798fc8309232ea7d33b8ee5b71868df193188d7336e0f5af0e03f91a5255e6251a15406a9bf1d6c15c4376ca4eb2152b768330b7ef241e61cc35c7116c105fb969bd297625ba16291ce5942b87af5000a4e284a11fe638c7b49813e3c80f37d4965d5dccac2e557000d8c99a484710c7d07aeaea432d525c969ed2ca0116594088ac1ea6b29fca1cc702340268ebb2a8849e733ad8c4327cea8934dcb9d62aa296df73405ed3ccd4d2dc0245a6d9b8cc7f57507a4d3b8dd1902987a89b67c6c67b4e2cfeb0bbd59400482ce193522e8213f27a45bb46bec10e5aa49d7c620ec8a647379a6a8c66789ff4047340333d06f97280473671546523364ded4c1439766b6155efb0bc6cf3e446b837b3607243067eca72bffb65634758c1f4d73029eaf6f322554c0264e0794c23006c425f8f447a26fb3ba6263ce043a12433bed7af160252d7f69bc2e02adf23820a174d4b8a5ea3a8d32802acc758e88e21343f3fd81112906b0c06073c03072e21b23b7b13583794ae4c446b28e793385f49e9e61635cde026709ae12a012ce64d3394707004e7a07f1248c7b092de0cd1a3240dd4c679c1dd0c68791622d0e2c0cd7433283f82168ed626574d1ee290796e86a6bc1d2eb5ce23eda473a34bb8d77d1674dabaef884252a4cc31af6ddf3e1b329c211c70f30bf8c00ca1f3f3517c6c3052a57900d745a1a0b18e8ec7fad69d5bccd2025b8834ffeab10a7be07c8cf376c9bfca022966f68ed1f1560e07f6a86fd2c8f66407740acc1bfd525212ba5f82f5138164e76e912dfe9f5546907db7cc12f7cf5622ccbe556617f965951666bd29b244fa67950ab26e2e8425f603765941d65d319bd83fbb4430fb5d9925fa9bb54c9875ab9825fecf2a2d987557668bfccd2a130edb5d696cb17ff612c2acfb22ab887f563941d6cd324bfc2fab8430fb6e9125e29fad4c907da3cc2ef6cb2a292cd69b5258e27e59650559b78b2c71bfecb2c2ac5b4536b17f761941f6bb324bfc3f6b8930ebb6324bf467acd20263dd95b3c5feb2ca84b3dd94d922bfd9cb0459f7e5ac62bfac72c259f74596f8ffac3241f6dd3258627e612b27ccbe2bb28bf867950bb2de28b3c4fdb24a0ab3ee175922fed965055937ca6c62bfec12c262bf298525fecb5a469075abc812ffcb2a2fccba55648bfd67951164bb2bb3c5fd8de7346ce602fa52aa7656301c1937070876803069929622bbb5c93b847051711c433455448a2534825a2dc752bd299dadf5a46e37716b51d75f3bc81f21b306cfa5d3971ea31f14d851e25901fc24b3bb899472beb78dacadeceeeede5226290337070f077f07e569668c2595435fa94072e8654f0ebdf4a17fe8fea1b5d65abb6ddbb6793c3010b886be54494436c9c6d2692571edf4d8562a954aa552754965529b38f1440988878787878727f401815c5802bf1cb5470412d592876cca0ab1299bb2299b6a112acfed0441e549024baee4388ee3b86ddbb66dd3344dd3b48d2cc7522c45e5bdf7de5b53535353e3ea09dd9ad3b3010153a41c5765735be5ce5eaf976dd956abe57ed62299fa598d64ea673d92a99f1549a65e8704b191e02886a5d0070472de103805009cd2c4974b1b599e1b3896274812cb93240acb307b65afec95bd9a655b16896dd9966dd9966d65599665a532b56ddbb66d64399662292a310cc330ecde7befb5d65a6b8ba02ffaa22ffa1a021381b39700aaaaba50a18b5c845127aeb9b61d9087e4c45f59839299a63b8914e58985224a102832151224d3214232f5097cab6d034112c9bd51a1b77f459ac63ef956dfea5b7dab6f15da54963d691afb24cbb22cb3af6ed5ad3e25a8044bae2c951cc7711c4796632996a2322cababbaaaabbaaaabba542a954a05009cd2848eaf3f20d141aee4f6659f78e589312ecfd1e82b4ffb3a95a632f429c1922b4b25598ea5588acab064b1582c16abf6d49eda537b0040fda3613c3abb156539bb16b92bd22ffde5b0ec56295b00bb15a7a9582c168bf53400b87952b695bdbe957d754cc05353719ca6e23415a7a9383fcd6eb56ddd6aeb565bb7dabad5d6adb60d044924f76f9565df2afb56d9b7cabe55f6ad727bf6c2b0ec85651896bdb0ecd5bab7755bb7755b3765ad4d599bb236656dcafa69e6e6b1db068224927be8a799cfe6c92d6e5acda292b61902817ba7515fa66e81501934534ee45b1695a78f2c86de6b00ab9f9a0a89fae17cdcb7a3f33982eddb61f34902ad04997b18cebe1d583e7f60ee655833c1dda1e5f3883ceed832e95b26cbd3471edfbab7892e9ebd22fd59a1a8f8b32649f167cd7132fa53269ff6753613d1eabc7fde23b9fdf3e775021b8229c1a26445b60a25d7acd5a84ffe00718445c2748445e21ea12161d2302a78c14b790278f64e4e397b358202254c9244547372f5b3e684a81327e02903cad4539e00d6de69d42753f7917ba7cdea9709943328699a204c64ed5f924659b798a655ea59d77ed827ae636e753206aa63347b987b4f8067e6e4b44798e4eabdd328cf6ba935c99d9ff648efe4b3bb39395264afc44eae006efe25f12d73d2a8ea381b39dfde68ad99e4b3cbc9ed5cf625c96dbdbef5ec6f0fab034589ccc968e4b46557d94fab0239c84b91db96a5c9766cd9ca9dba0fbaf5141f84091f5dc8b31d2f94659083ee69df0db8815f310b5a57adaefdcda1da5d9bef531a63bba7b933f894c6806aad39d45ded63ad6b5a4ef1d9961b069ba75129b9dd5ad7dcc3409e8134100f40cc45959163fddd88dc138946a21db91d8d44bfe15cffb43a3ad9aa461e1279bb1dd2281f9bcda132441b033a03dcf93af7462f72f1b3ac42e4a0ab7848e49e26f24da4222ab1918a906cc7d2ac32e6cdca7644ab0a8d72c4b73944698c0a159d434232e6a055c2b240fc9a553ccd22cc43a37289142a3e548a4f734eaacbd8b935764b138409152e52f161448d228b9ec28523d71672ec2a744688e49ecb3d15afe2a3cf724aca1c40150fb9e82215b1a4a08a8aa84262d6d532ae3cfa9b559eb6497a4a674e17a9208ddeaa784a6352c492b699d2e2531a137a1f1e00c38c39a52fce50c6dcc3f028abfc1229b749e1a4a7f645f4461c0124ab289748517a1f918bca1c6e9cc5244b436d87bc1d1c853e650e20e82117b9c781de81223074354c0760e75e86e14fc35ba36e06bd1d1c819f32071073d043ee7ddf4da8a4402091435f1b65b7467d6e58d05fafa755229fdb6955f8cf309fdbe9e776dad5631eb079471be1c80c6ed9e37e386d842332c877cbf4cb9c64ba32c24871a03b5f6759967d994c9b31baa651590602307f7eda6cdd7aa5333eb79d5b1aecb63c7b8c6a64c60066eddc53cbe26efb9224d26dfc38da070848f973238e00923bc7be1b6f047e58b625c89a57c7be1d977b9bf107f9a177684f0107b07b8fa3cd2e6f605700ad7035ca7d288db137d3add4ca6b6562d4dccc6d8f118e0e375892866c7dbc650b0d8cf26dd36cb3dd0aa0c684da9c16aad7cd5e0dcbb00ccb5e40680c565e0d7b02626c00ab636b1877d89c95670732a531766bee09b0fa08ac1df8022ba6067a86db84bd5896b5c0b46bd30056c7ca93a34bd0c0d5c4c0491a23e540eb4a6d0fd8e60458fd6a766b4a35ed6237c3ce761b598d51d382eb4a6d0d4de332ccbb18c4b63f353b9505831c0dfa9231cf584cec0c6075ac44ed80356fc3befbb1a0adc1aac38679c600e6b4c2b0999f1886d152a69580658fbd5dfb7cbe2f03651806de366f48e41d8eb40cbb189695f8c507635830c3938c1dbbe7d12632c6c3cccbab84b8ba6559968d3577be61bb263e1863c7ca00563fbb48c68e3901ab63fffeecd15132e618c358e9aac93c675b76b3acc3c80056dfc9996331a016200b18d14b688e56a4b8a46851c1425a5129c51f9d3cb5c9543a913e7e4ccc30f199efb9f7dd16bde7a4f771aff1f8f87b9a459f8d1fe995bc73a93c7fe48fd39c658b04e48400c249124b1304e8593c92ee5d3c9a9c9e96880be8e473a3a934bae86b067f097fd3cd17730ff2965f71d18b0e8a202ca299e3becb9c86b9d740d13d0e739f6d20d1ffa98d10ff837d093d88afb12fa103d1958e2a953ec852aa51234b27e599b88de4f693c61125483a25dd92dc2fb8baf96425e7c31638c6858b172f6464666684c0b83060d8ae3060a4aaab2209578d028b342ad42893b777461a75f2f64ea751df9146e14679e5598de4d04f16ae24961d3a79e84da650e83385c671cc9e90e50acbe7f3f97c3e64cdc1dfc914faa452a9542af5ad421f10c865af56abe502db10c3300cc3eebdf75e0cc330cc5a6bad5dad286db55aad568b48112347900c098bacbe96a561f95c1fcbd27cd8e2df1c8a4f86a47b180ebddc71580b458edcba4943e91e1b3ecddffed993eca501b13431de2d723228efbfc202b7888971e1a25f2f5ec8c87493993b3363bbcecc344fcde91642e4a6ddaa6ece4d3b26a4cd4eb5d922ce6b5d92dbbb5d2e9675965d5bb356ab5b6ccbc52d2d196ec936dcb2752d312d5824b13b484637a246915b96c73af9d16bd12eb02d814cd39d448a419374374d49f34e5d065770060a0c183a5c20b95d879e36dbc78d11e3d351c33f2d94dcbec30e9f8e9aed138aba2894ed8a427122aff43763b8f4a2bb7c8be85e862dbe18979eebb0cbbb975eeb70e9330ebbb671a599c67562f98096a73622912c5758bec58509c83d1284ed0802390922415824efbdf75ed0bbd5baaf4753dd7befbdf6eab0312f17f8018d12791886dd2b84fda4503285f27abd5eafd70444a72e82a609c284e749b80d8ba669d134314ebd88a609c2c4e933b917baa0876f72fbe5f83288af973d0c8bbe0b3dcd30973d0d874cbe654fc3a2d7b26872afcbb4ae1bbdf32866b92b2272cedbbbae656984f0f62e89a509c2db3b97a501c2db3b96a561f915f75e60cce4c5772372af8226f7ea77f3b9e94f27cf51b3c9bd8bede7b9e9b1dfd0c931f72ece3e1d359b40cf15a46d8a3ece6963d19f168a25cabc444bc9453fba27ba87e1fbdd707e3f1d3593ee51ac31ecda8a855e452ffd12eee3fbb85be92f57fad15d7ec5b98a612f7b1a76e9b2864bcf71d8e557bcf41a57fa2cffa7dc66c5bd0dbbb6bd4a332df4cea14c9be13fb511091104102c2b5ea2c8d2c7eba62c0dcbf81f275b76a834b8bd6abb9c61f1390c6b1c163fdb7097e12ea4b9e4e2f1509d290acb348a74ea31883800e85d65abe7dfe29e0caca9c6d1bdc6e4e3db652edbb2c661f2b316f7b89b4b222c7a67b13c7fe4b12bd2663bcb772bdf25b12fede577aeffaee5a97d01b946a4456fd7742c0d0b67f1156fd7dac593709b16cfe51ff466e0dba8d047a729004511451451d8b478126ee3c2b2e2d4cdcf7fc95d3e7c9a6dcbbb7b33706b06b6a91a38a5091f702603ca32dd36103433a591298de1e1c0e19772e02abec8c5372c3ec69c87c5d73ee730d1b55bd78c72259695f29ddee0f0416f796a835bbe96100762f13511163f4bc122a882f3ce5c48be97bdb3208bf237fb024a31fec7b7ec85587c91cbc885c4a9c0e26b2a58fc2cbb902466ba56eb9ab9b4e49487439fe95b7d5474887ff3098b201316bb5f01f958627104b9c7824517d03b83d65a0b32ade071e5c4723aad742ee669c5c9bd171626ef6c3a855cbcb081a366a67ee60a0c83f37223d302834711ccc7e2fb60ba98179f0b1918a0a6699aa685666cd4e0a051a3a7e7b7fc81308f193c743432bc1bd30b173032d55cd1a266d10c1eff661878f4ea0c1ebb18787c0e85c7dfb2e7e4d3eced80c7d748cf3d1a3c7eb6613c60ef8c4b4f33f93483c66ddbb66d0bc9d4904163e34375b9666a70f0e08109cf963dee631277e41e607eb8f1bdd4938d171dcecd0a17a60e5f0ecf061695be66f26b1e6d60f11bbf665106263f1f1e30d9d1c0a40d4c7e6a60b2074ce68f931f1b90770689640f18329d3e0f7fafeff5cab22ccb320cc3300caba9a9a9a9a13c9fafd9c2ed0616dfbb072c7e6783c5e77060f1b7fcf9f8347b3e60f13ff76eb0f8ee71988e8d3b79e713d9e2658ee3388eeb559ba1e37ce83c3ef41d1ffa0f1fba8e0f3dc7875e55489628c9a1df7c85d266e8383e741f3e749b0f3d7fe8373ef41e3ef4225a4813e92139f4ee6b923643b7f1a1d7089dc6873ee34397113a0f1f7a4d931cdaea440ebdf45bfefeb6197af924fb123acbbb7d097de54dfb127acdcbb4193af80f683374d0d79c3643f7dfec4be8341f3aea43df21f4184fdbf442d72174181f7a68e6699b321fbae945e82e9eb619f3b47738291439f4164f9bc5d3c61f3a4ce82f1f7afdd0cdd057bca723fc9a455fb30e1cbec85dde9dba9703878fbb1d387c0e0787bf658f070e5f0302879fe5964fb98dbb27042e79f8378f25f7b66c088d6edd67dcd165d23b93e5f9238bdce5a98df8348f4f73cb539bf0bddcac2ccbb22cdbb65079822089040a8e0197f91efef219709cd780cffc061ce639e0a537c2b3976d0781c0ec6578c77fc06dde03eec377c069de87cb781ecec3d3f0195fc36f7e85cbbce92fefc271fe05ccd778e97138f9a0fcad6c8320f7397df2cd7fa0bc32ef81d242d166fbcb77a0b438efa3b451da6c9f791ea585791aa57d52a3b42f1c7f6bfe12f9bb6ab3489bac368db469c45f1707fe2ed9c0df1d0dfc659281bf3dfe62e0eff9b7e7027fa128e2312016782c48051ea3c06313784c028fb1da6c8fc06346da6c87c0630f78ec489bed0e78ac018f2169b39d018f2569b37d018f29e0b1266db627e031276db623e03127da6c3fc0630678ac008f11e0b3549bed03f84c009f05e0b3216db603e033223e23d266fb109faddaec4fa65f8e9b49f7c8a76d96dc2bbd8a7b15979ee45ee3d2ab489132726fd3b0cfa91c776cf9e45b3e95a70f5399b5da6c2ffd1040ba8383561e3f4072bbe765dab6715cd7795e4d77f843cdcd6d25346ada6cf1690ec5fa6d3d8448949e9e9e9e9e1e10c885a112398aa2902a14524a91a93125a644a9f0dc409287258b87419a1d9ce6518e720f44f3c1709ad7c1c14f47cd31dc0be1fba13c74b1a8c6bf9b50e8676642a17f619a014360fd44f8c5f1c3c060fc66850161900d1b5fa3860d1edcc6cb9851a3b3d1e1b0711cef830f387a701c7f23fb7083e346749c1d8ef33c78e0e4709cd7f1038f0f0ec7791f2fb79f36480edd9e80a2366ab687de3be14e2b896b87c7496ee7523a3c36d5acdad34d9c781225533f1b0a262d72b95c2e974b24c756ca92b58795a9b60f0e8f1d3fe8c8418a22b288f27583c3079b7ca387169256ab45516783c60c193c788f200cf322923e8a2d58ccc8901f72ef824e7e680c816388fcd0181ac5903886c82cb791921040e8b0b89310d2bdcb9d6a2649ff16f25b44df6d322d31da0cbd81744e85a251a7dad3aa5e7dee811893b6366b48525489a36b2c955a95e6b1b6913ef2bdc2123986db06822e954aa552852598ee03e24adda4c452922c2364124b53aee8b052882349964a26d3e9e4ddd5486e9dca52d5552d4244250ac3afa99bea2595496d529da84f94541e1e1e1e1e9e0f08e44225721445a150486ac5d2c9499dfcbf14c1ca0a85d2a3cd568d2efa670243204b47e7881124495a2c1d9d234658226652c52897c562b158ac1239d6d4d48021d3e9f3304c57c3b004d37d4a21256f9695328713897d5b5cdc4b9c4b8b8b4b3721cb956fc144d6b6b136d6c6da581b0b4a941e28542a954aa52a827aa1d77d1fe8038a421efb0143220cc3300cdbb66ddbb67befbdd7e572b95c2a954aa5528558dc51966559966ddbb66d1b86611886dd7befbdae301c619aa6699af692a560f0b66ddbb6692a3049e5bbc92efe0ef7445cbf1dee8d24b6df0d17ff07277b70af84efb7c34b9ce9744f27dbf574fa6e46effb5ef8f7364e9f4876dde3e074a677ef62058ea93391a51a1a5ef33870d4ccf09ae781078e999a99928c0c97f91a35647c7099b7a1a921038265ed2995524d9bd53ce46ad42b2ec5e5702a6ec5b174789ad546fa482369255d04db36102491c25114b95cae904c0d1934363e78ab54aa991a1c3478f030c33b044ba4a9bb59e1c214925abd60e9e4541ba9ef13fde93b7ddf77fa4edfc94bdd0484626984008225885f7191674bb891805cf420ae19f44bb883f86610f89caf38a885031fe71610e86906bfcb202eb780afe51610f8596ee1fc468b30de49748cb05cbdc3f2485cc2a693fb7f59aeacb05c1616db9585c5bbd56ab55a2d22458c1c4132e40302b950d7d00704726518962b2c2c4b5a5a2a8f8bcb8a154bcc6b9ab6ab69bada6cff6e44174d21eca1f73e131802c751b4aeaac4f2f0f0f0f0f0a8c090e9f479782c4539b812cb4a595342c872e53d135fd1b559b6699ca7699aa66960c874fa3cfc71b93caffb3ed0071485612a954ab1582e97cbe5727db005310cc3304cd3344dd3eebdf75e1078b32ccbb20c8bc1344dd3342d954aa5523158d3344dd3b26e85dd12369dbe9b192e3e0fe7e1de97d87e325c7c1a2f79706f05df8f87afb0b4dc9616dbb5a5e574e3debfbcb870ef5f985edcab9f0846c6611e070706a6e26018ec375ae4f423676a7ce66dd898a9e1334f03878d19968ece11234892b4583a259d23464a65b3c891a634f1ac12572821141e272f283d1c90dcbeb152a9e6a950749016d2439a4894cb62b158ac6f358aaa283463a306078d1ade618914310c8e4c35578ca5a81c5db460f172237a5112994837b967f29290d48aa59393aab9d6b39fdc9363cdd350da4937e91e205e895798b4e076ef6d034112292c91a3282a9f842b4c202f2f303029162c5ab4a850c4dc9818db3526a6d65acbb2449663299661c9b252f6c5348ef32c9246f9189d2c579e05b617932010f9b86b217fcb634b0bc8b14da552a9148bc562b158dce6791ffe80a12ccbb22cb3d65a6bc3300cc3d0f3b0c5300cc3b02ccbb22c2c5bad56abd54abd90b9599665592683bf4ce94a0545f75abe9b172ebe0b77f1e530b1fd6a5c7c1c6e7e3a6ab6e1de0bbe9f0b7ff974d40c72ef6218cae2b26061bbb26001f296ef6674af829e7b3f33e3ad70efcd6fe6e3d56f74fa891cc7f1c3c06019c77ff30213c2b5dbda7bc7a72e7805a6a9542a95721b8ea2288461705e6e64c83108132b3c09b70912a65269892536d39d223b540a2a50818fda603a994c448078994a210819a41044759d9cb09f4edf0d4663ba4ca590c40d4c169226d2d084f701d22da884e413d32dc0c0daef4226392e954a25f7144a389d4ea7ff944cb71083d53ff765f9dddc720924f9c4b9b7e08220882a24152940174f329d7a85ba830490a5d6d6ee5e8d46a4ed8e466d6f7777b348d2daee2c6bbf7d79b023acdb26a674a4813e38428eaab6edb643ae4a67a7b533a44d22a93685d45a5315b4499438c19200d6554ed226b5ae27c0cfb843cbd5b5ec06cf24496d629003e07be0e6fefa06efabd7f7eebdb75adad5e913476a059bd0842690c1f3b022603b6d2630810949d881e72101ac7db14cc39c70376ddb36af09cfa3d5ef05755a0f92b61ff6897a0470eb3e1a10cf33b30c8924422677dff68e92ab634d97009e5d2477c6da6f9f3d68b9dd231ebe414f992f80a74cdeba5e7a6b3da2768d82f77ae2841257122a822603a89161a9670fea2aad125e05cfad00f5052b72844e91ba3384e755f0c788d66abb6db7edb6dddd638491b0b5a3f068e84812301fd8004302780470046dbd6dcd8d835aadf5ec5e4dbbf7dedb1976ebf7e3cf27c0dbc3eab42d7b07570de05d434991a81586d756d3a1e58dc66cdcd6d5aeeb28d6cd7532312ee96160d7ad1b6558fbfef3e708bc60d6be1da1037e1f508c1a1910c4a190e88a6c5711d53ee70feefb8040dd6f04106409b7504824325bdc84e6689492b2c9c468a1a262bb722291676c448dc27609c290c6906a483596d4a48aa5a48023518af046052675ddda4c9142850a12494565bb19474a3d702b95a849cbb04d850a12a9e64685525104b5d0d1998574438ec0d2080955f223b7092a0115013c7d3727d0adbb7b57fad1342688608408e0b9657a476d5257f1547ce38804929576fbf8dd8cdf0dc9521a994e275f004ba6cd2273f32db0b22c6f59dab22ccbb2cbb2966559d214a5ef66bb1b85d2e31ce5ee3e4590dbdb7e8f518f4b9a4ca5d3c984db5d86d2d3bf97e59fe0cd0ac64e27f74f47ff11ffe12791201d02882bed2f3d90ab37aea3150a8e585a5c567c37d4ace6060421b0960802788e30208027ce9405b732ae882b2aa4959595951515295656565656ba9a9f232a12599b45f0aa7bf56304b9028f8d076a551384e470e165e381a8149470c14e18b6a052c3cac60335195a3a361ea8e3c024c7c603f5134dd8b1f140550c47f801141bcff3babe41141dac6c3c0f8324cf491d831294d0e37d48febd1a07354092b2f13cd006aac83c5408c212968d07aa60f8421120361ec832e105c5c603f51888e4d87820246c3c5077853640b1f1bc940ec30a5cd04a5193a802cf4b851239a44087e4a960ab330ee08775fbe3753a852270706283840dcd914244a636f44f0b247f0fab436de8d734cbb06b55ba52f243690cf514276260d95cfcc26eb66d1bc68a80d5f197e325d3369dc8d4c16f94058fb2d0cdd3be2680f3adfcd139e7f76ffd06b06dee75bfd9971e80ed5e2b0d7d4e12d86c8ffd00bcce7d7d8a7d415ccf4a0c6025d8350ac86d5b2012a5a90c9b4996e5b440ba50471d5ad10d616006dae9ba0056efeb5bbee5d9010b0413e2797487881399ee1061c2864c7770f0caf423c225e42eafa9a0009edf6adb40904472c7501a35bae94e2289444e45f6357ed67a0238ba5770ac36f0f16b0ddcb3b8d6e069aedead34f82a0e7cfc7a03c754ee65f87eb5063e7ea581679f8eaad1e0933b1e7e6e34fc046bf849ca210e3f3d87357e9a3924773a1bdd0bcf528daa2ff0f64c48a32a0cbc3dcb6954cdf1f66c48a36a0cbc3d5335aacac0db33228daa3368541de2edd405c6d3a8ba026fc79a34aaa6bc1d73d2a8ca026fc79c68546d81b763af465525bc1d7bd2a82ac4db31288daa2e70bcc2cf2de31bc7588daa401a554fd0a88a8246d514783bd66a540dd2a8aa026fc79234aa26e1edb7a75123f0f60b45a348e0ed18904695c0dbb1208dfa6102471de1ed584ea39078f964becfaf934689c0db6f934685c0db2f4fa340e0ed9749a374f0f6bbd32818de7e97342a86b75f57a376701c3fc1fc9971da1f90d3de60fcaa1a95bdfd1269540f8dbae1edb748a37ef0f6cb6a14cadbaf9146e568948e193c344a86b7db288da2f176db63a168944da3767883e7964197df35809acaf2688d466b351a4759b363696a8f8d9d172f4bd32c17a55936cf8aeda6ac295f4adbc2a1af99b2ba60ca133c95a6f2044b5e71f0375e6ff0325e55ffe2d5068fe3b5063fe395060fe35e1df243789dc113e155060f00af31f80078cd79017885c10fc0eb0b9e005e4ac9b5c776e77da96c275b92b9322559920c499b5d5df005f02ae40de055893f80d7163c02bcb2e013e035f50af0ba825f800fe1324f84bf3c001ce703e0332f0087f90178e909e0e48f72b32c0d6daf493c03bcaae01be035c83bc06b0afe015e51f010f07a828f8057202f012f80cbbc01fce50fe0388f009ff90438cc2bc04bbf00273fcccd63db31123f013fe229e026f80af88fb78097e08b7012fc057c047f3a035ce61be02fef00c7f907f8cc43c0613e025e7a0938f9a26c535f7f9f081e031e82efe120f80cb80eaf0187f11bf018cf01dfe18df009b8cc53c05fbe028ef316f0992fc261fe025efad3c90f65dbb20df647c7aff01c6f3aea5df80fffc26fbc0defe16b3c3f8e9f16a8544ef883962a3333000000000000b317002020180cc6912c8f0335b5f60114800b51726656563c12ca05e25090833290624a01030c010230224032331a055a37a7929c5654808863080173485464cdbcf79095931d07b82b0a9aba743cd084f59f02b616b007a8c332d8bb8a6771d5c938b58ccd5f59df65e4c65dd1b0e19fe99198a3f53bed4dd244433b7020c2a2d1b15691bb7eaac74b221342312bcb82f67002ffb717c914187fb6999339fcbfab71ebfc022450ed1e9b61c56a3cec95e378929a115e631b9f4d42f783c99f3939785f477d486d1a2c9bf6a22f3a1aecadf8176a538711d22edb78fd18ae02bd1c6b81631bfb2ccf4d957929938de4135fa9988acb86bd70622b758070333ed8097cb050159af8650f30afe21452371f5f3a02c7b1af3ad20a13da50d5440568119321d59e3e8afbe6f1a209a4a707fb29f933f157f5158f7451e542392bf5b1737d327fb250d992c085e0fe421dc3f96adc7dbf3326bc26d32ac9ecaf0a81d62d6a5d41a3b45e56c465a3fa73e4e372f04e20d3291482b847f630cc2b8f5a877bd8c7c5767367dca67478dac60780d97deb581e81c0f7f62d7cf050cda25489cec308b72d2fdcb51e41c324d10bbe211a09d2c0540262c0aefab40bc504a3aa3e6a57b74f62fba958a8bf8c3bef94c3ff0d99e6aff3cb722931b188673c900d15913f7e1e7052f39524a60d00544a7db1c4e683a41e78029fe22501801da35fa2cc1c6a612973dfaa890c34cc7204053e90d1aee2dbf37378776cf47e776ed86824c6a706418d0ab0c205e273900a15e7e04d14991bc9b0a7b9b357762f07f6d8863da9b38f83b4627f854b8b7d8e618cab46edf77c247af9cd179b9d2a585600e0cefe412041b6b25363a3a5e013a932f54d3e3f4000bbae3fb4c69d299c71b063b134fc81708882f430645393f5e3ba63917b89900f6a40efbe50d457cd5e0f3fa5ca855f87ac17e534da09d5ea8499ce09a6c86e7581974b5ae740ddd6349fde0dbdd0aff666a923a75e4d84ac14917a7a34f4d6bcb9cd0d1229cb5b1075485ed57c600c47f41d3fb5e17461af6894f6f13ef91ffa996c503e521f42be6dd78fb7d180f430673976f1c6544336671f598e0d726bfb0b41d877e8a4ba5eb89e2933aaca625477082179582c8ce1a58d06d3527e51e88f6a9009134dcb366502bdc53dc29190034cd409108911ae9b6632ca3100323c3364fd624bc11a132eb28d55226b3cb31f6b851c34b45c15a64af80a07c5f5377313972959cbc0e88ce0c512f750061c30ed5a28eadae207bd798b6e8a3e59c9893c7451b0eabc50aef0e80db5462df72281cbeb7faead14a013928fda30554858581493706f9bbabcec9622852094273e1a01233809f40f9060bb39c264382509230a3063e3cf4a4d4f19cd609db1ef61fb95cabe85342457f2729f9dca5460929ed9bd493a2e311ae1c2d071e69dbe593361bb5e916ec8b387e1112e1a1feb7841cc82aab8cc7266b97a1e86f69672743dc6cd4f9eac3b103a79f59a558ca58f05c50abf8252c754c20873f00a10e449a04603feb9a13c69e4e402613e1c30a10865ea8a2579578550895fe27c31a8a90b385394241b68623f1b5853884557281990f5dea8b2f4d9924d770316b21ee93e450e7eb2fb386a6a64df916b846c6123872c10c48002151914643e5aafdecc1522bf8e34633c98c816bc18e200d70e33e073a1dc63695b84a7cfbd10eda0b76bae0df8a5b64a500206ddf755a8551c74d4fa1f76e61a3ddc6432b380a6de67809b94ef8ec4b941659a030cdfd6799e6db562be9083556a6da05a4e601daf5f3b73f021b4cde5f9436039f8bf73ea041b9df3a7aedf69cae256b9697c47aa4b1463aac92c22d8fc8ba531bc4fc997bcaf23bf31d788cd657d925ae0e370364ce845aa01a3b2915e8d4b2db9f50c19b805bdcb1a25269fccf393178db61577776af2ace4336059c2e9fce43cc8531683eefc471f7c3c03825020f6a0cc4d1d6078244f02d3f381ccd80302eebab7b146b72bf7d8e882186b1063045808894c8ee6e0ecd1ee940baa07acee82d2b313a6a302e87222c49d6b74bbae953364c8340db417fc7ce7f48292ccd6eb1831215c247aab39bc3d447aeb2934a173451f61e1c0bcd71332abc50834a2b7bbe8f16c11f8a56eb37e34e98abd47cb7d3e9c5f376c41daec8dfcfb05baec369095f1090e9468f7e7ccc5ba5d682c00b069615c0fe3524924918875bba002337ca48cf94d89999f0a1c839210c636ad1ae92cf8ff8e290fb6c39901ee87071514084c3cd4d718c352ad742a93a505a9d818e371890654e4a6cea13b4a6ffcb78b7e87eaee040826ac50285f4902208e1edf387b1c008e73afb008bbd993245d72e62407f95b4d2a4427e34218ba65c064f98173fe843c844c1c9aa093a85eccfe27f9fdf7f2459e8861cf9ad6c72376145fa45c95782c3f8380de0b9a3c133e96c528e6eaa0693dff720d4f9daab0ce75c5058387c482ab5136fa33618a035341505f0655db278d6118adcbd82c76c738fafa3ff088eccdd3d70e3dc8bfb14e71601ade8149736733658b413cf43279714bb457d8e93dc3b2917548184334ae9fd44c8b73c597c7e8919810c38bb02c1148e227d1ff83f1b68bd4903f637c4dbb6e237571007086d0e81b03fd009bf59736854d886abae7a2746c39ca3933cdb28346a9357eb8db0b3ea70484e553e7dfe50ccc7588c1fb900c333d67b2473dc778936409edcfbb8d2fc0912b3202d57cc9d072786aeaaa552b9b6bec2ad7b8adbfabb49f420fedeaeebd7587d4a5886e80ba4cbf3e40eee3f5d4fc05dbecc361cffd6c3ae9ca292e5c613da24a8b339af684b219c2f30d434f0ae0bb71a2666bde6d1c574bef9b38598d4ec2731e56082ffecb1e0951f143ddf4e0f9ab07556e0aa36be891e981abfcfb72b115d146b547b734fdc52d110b613a5b80c0cd63bbf724ba07ea39b47691bb87cb06c8cb9e87da07f4f4d3b091aed8ac97d80f164fd84e13b8fa911bf50418aec558ecc72a51d11f18c67cd92450709a21160cf1092c0a9aef8935c1ecb067e2353c6f0aaf1983a25b36ab878f13c14ae5c5c5e6975c9bdaa07839cca75659e1ba8310dc72cbb9ee9587078685df259bbe8c3e27f9bcd8392699d8ba3a152c5babc7790efa71fe0346811e959105ab2d450513065af546bd16a799c966ce4f2ada481e7e0f0aadbd97400951c4abdd2b3cbcbde903bcc740637de4a6b2e8f0c0a2171ad3405c0559f17b8f07f5c30bff02a58838bc1119b3246ebceff2753ab49ccb74a719753501e0148cb509d5d0777dd396e70eae0ea92c480321cd12d26e17845f2fad521ccbc8943017c96252f2402c2c8770e436424fb7087d3ceaa64017ccbee005d4e5ec98d546c23b676e2ccbeecc13ecae49de1fac94a3be0feb2b8d72b7b464e6d60a66144b9f59e8efc794961af6f8200d09e8491ffca3f58d80aba7651e61b67dc3dcb555d3318c2c6e4f626a23c55c9d9aadf0544fe40945eb3b01e7c78fcf38d53406089df04e06439333718bca15889799d35951cb3233ba56121332b380a2819d0b2de56660c93071aa0f28f419f004180e7f2e8712d96523e113d99be2c2de2c019f7732927720c347215f9475b9b4b75d3a5ee7a1a25552d34428de6fb6e9a1184a1e05dab0d00beae3f7799b33fca7ca0e172ea94281db931dff1b94fe38b53c6e50da73e80fc98edc760f33eed0db7863afc29f72a00bd951fe3ca28675f94c3834be1ff2d57180dd71eb21180e5606a0be8d4e007670c0c58e27e9980657a5c76a1f813d23fb77d85d6ee260ffa49ee0ebfaee14973cb8a30a8e1415a1b496bc8ace47f56f1f52113e4e83af6968ff758fd9ed22dd4ad8139af72c7648741f6133867eb04cdbd056c8defca21df120041900203486ff869eff51b536c52b8203a7e60daa2967821b893eda99ffacb1ec7281094a254bd05cdc633dbdc96bf27f5b5e4cc07de84d8e85409426d27d504065675a3697b10830aeb6beb1b2528fd3a7273542592345813ff5f292457da33f40a27f64094541c4be219769d2a60875c7657eadd8fe86f55a6155c53ee65572193f1cc565cf629f02b107b29d16891d9ce5bd8e936ddf41c16f49891edb455ae68b83b114ba7365b01dbc7d641a02b6b67d336e938632a17951eccd584ad468336b8dcb7fe4f471c46d257cd1460dfd696a02e96f146563c812b22312c18cd10ea99370353e39158506cce0d29baa7884c4afb32702aee18ccbbc8c862c8db05731dafc9fece71d9a28a123d08853bb864bfd72dcbe0b7aaa4c8e6c74e603ee33fe81a6b5c12c56ec9629a794c6cc67261f984a6307f7a544318bf7ffa2c73b91f8d59ec05f1094481413123914b4c6bb6c636ccabe8e29669ce3e5b4701c6bf46fffc67153815f96a3819f3ae3ff1acf17e0e921f1e5570d52cc0c700f82d0e146e6050a00a41a1a65a16ca595518ab0a1ff14acacec9d55f47a31a7db6a2065ecc73cd03bffc660a541b2ad136ce18e92be219e26d3b2121cd8ddfaaac414a086ad067d20734a8916f7c8f3df2f96570dd5c805113743043f03c5803bf45f590fd25ab935da1098f45f6048814a1abc9aacccd8b34a2127f7c47b763a890136ece5f0b82f0e51be9035e92be571f682c1336fd88086299926aa1c6c1facaaf17858a21f9f91245750fa921e3ba43b752ab92ebbbaa30617bdfa8587d396c97f0f909ae206ca77fae06cc0200216aa6fb32c3e766b929a26a37c16221adb88526b6fb61e2453486bfafb2a549cbe05bfb24679cec8ca8eb2f7a38466c164b66edac46745005b12f8c404a644013da082597e97cdcac152cabb6d51dfccb2d1c2bda34fc97a139ec3b8237048800f1338d4f60776991af8673ce236a55e747d7442443f394c09ad3a924f9cb96ffa79951d34770137c506b8bba6f90861939154d4c02a0b5a4f6cb40a7cfedcd7c718d98fcaf4f9c64950b7c823a898894e26d413d07fc50aebe77727336c171abd7bf49ba79156cbda7506528ff0b67606ac1f2a56a99617425baa799b6d92190d22eb38e962953335031e1ef99526f369f31b232aceac09eb7f6e31d6b7bf43d5fee159a4a3dfd16b1e57f7230ba5fd0b1c11fb32ac6547c1a7936aa09b32706e6dcc7441dbd2cbd36203e3c5346381c9ee7cd4665e7ab2df540fbea07481977fb318ddfffbf7f96f71d2ecdf93dd801c5c046378ef376f0f3be098afffaf3b9d6ba0ce390648bd44b49fb06b3ff60c24d7e486ba51f963279ee648d56faed3b94055ccb9e65311582a991e28df010ce8d7831e8117fe726e9974b212aff765fcd689cb2ca12bc528615f9cabbeed8d6d302337d9824fbc9eb109733b7482f46b005b22d1ae40a578894b323535e166c1b2dc3ad6d406f419b13edfe98731b15dc4286f1fd062db9881769db8d91925431cb817b99c98cc571514a16c44580878e852d39e0a46a7c580e497881dca04f1422e40b12a16e5466f9efdfbcee3fb17440a9399164a67dc68d6e7ae865312cd885b4e99c8132167520fc95bc44be83dbcb20ad8f99cc4b73d2c48df7b52199f9fc2f95e19ac4f5a4739f4ba6d2b07ecf1c71b785862c5c2b32916a768e48b544b88a2c9c580ca9f9d33331773605145991176b32e3acd4f12c07c97e195e30439397a76d808714bce6554db6cb47f6eac1b324b7a55dd34296008ad89aca871990a1a1da14ed0bb79febae0d5557e6b1b769aae8bd2c456c01474ca437e4bde6955538f9f1c6af03bba83eed216ee626e22a6430f5582722021adf4f311432ed89d1699a9c0362c924c4d794a659f592e603d74539dd2f0e53ebe2f50169d27389eaddf8cba86f6855be61cdd11212ad257c3fb6eb99ae75693ae77264a7491f85a7c90625c542cad30692dcaf8ab9978eb71c755b6f47c7afb36bd17ebf07389ca67195d5ade1fbe60f79a2d7ad17f9046ecb84f1937937a7b42ca5046fd8476116c2a7d36696a658e26bcf9799b8023db4adf51d4f14721e0fde5f0b05bb12c1d9c2a9e7d525aed5535da5ec439dce7e9cdfd9003b77ce36b24320c25c8c2c5f04d9cb414228c02afa4e4d16a1a40d30b05434d6f409aad0778261682bba4e459b0c783e6b1e49b0220df2f250e8ba6879431f1e3bb04235f9d2cadd90c175289d9108b9ccde603623189b38ce828a5966ad53ca6f1657de1cfac392bc76ec9c16d116e51cf58af74dad14c6b8cc0c632a14d7ae9b5e133d553f16407d2b93d9ac9db82405f171aed2d8dcb26d2fc12321ba4c50c91c1016bebbe070bd8a526495457365558cf687f2346318a1acdc2644edbd0f29fb1ce19d35a9045dd38af35d3c74f6790f1f6a022f1712ec33e0881a554d40b255255b11213100562db4726e0b2ece9da62ea2b0c97d8dc6b692c88806b2d8878779b3fe210c8e2fb405f4a130d6d938561d03f647b5145c8ce101ac2113bd09ea31a4b23af539f3ed7a7be4fa15aa5f4567dcafdef2240440a380b55e4aee4734facc25bd4507a0efb95fe60ca21018cd1a2211af476a40d0c67aef0b88ced88e8ea2cfd985cf35fdb83420cad6223696c78b4e07ea4fcf58260c12936b7be0a77e83684c6526ef631d65f835b18f6e7905cd4bcd6df2daa102fcb66421d9cca0d3d2b5853e5dd46bf8f3fca444a702f935ef47252af1216071d30da53b44377023d4236b6cb3f70baccafcd09a64f771003db09701727babeae18039b9e020aa945039b7eeb8ec14f3b04ed8df0f0d1037df7d147dd0a5cea82e07cc899a6e3643d25eb1ef250b657d6f4ee196f8a1e0426d02d1b142428033f3a47e03ca7e559a557ec9fcce12540a8093a32d28c2552c22713124fa36e97231761e0c5605f58ef0666a629620df9b38b55170f855c81e99002ff21e68db4c74598f09e24fd2b9bdd2d04b9e2b48df94e88eae641e184d6a04c8f3eb2f59ed53dbdd9a5f538211c2f17de1062138f1fbf87c1052192f564a1e0f68d199eb50a50f8a24890303e28df32e41bd03d650133a635a545060709fe2daafb62bf016f5e87549e0992bfa44cd2f94519e4ac92140e2d9b99e03088dc0fcf554fac20e1b9c6c582a5b12401086977a99a44dd69883902efdd71d25c1a0aec76d8381ad592eb6f932665d06aba15523970a75e725d17a1388acd623d8409609741a46bb198b3db2924d71c53dbde8a6817481752881cb137848aba54c09a641ebd93ead7d2aba1a2213b08f1c53be046eb606980e8a4e00ed6b68cb209d3f53f1b50a82cd53af49513129381721573b679602c60397d3d98570b62d125275250daeed2407f70ef70b3dd8d849e43931a40d94f5a088b79009360189d50f13e70ee83aedf9039279ae4f207818c3c11f917cfeb23c3a92c142ff34c41b8c4f5dd113d05278b5281d29d48f2c13a4870853605137202ba306f46fb98c5d416f7d2296395f40162522ed1905002b83638f06e7e804e7e5dd8ad811ba3da0269be04a9f871d925444af94b85256393b82453a610516c49aaaceb311651ceb5f8912d529eac55aca1c35706bc490a5e08d22036ac5c0f9126e950b8d909554790cd00f30fb14247598f4411f15f5400a44085111f6a8873d80c01da6a21894c78390f5a5a682ea89cefde22554c31fcce4979ef328b94470901462d9f86fa110534e9733aa032fe89a4f67c86f45c8515ba30abddb0c32c9286cb43005a8996d2a1c4eda3255535d55f27b4336661afb0afcce613325c3167965afd603e3b5150701275874d150382825979074a8a32d49fe476ba5632b5693241df3c9a3c4ef908760fde53e1ed439929efbddd1ea2109c8e9904d2e5bb14a9de3aad13c577da23227adaa5c0231a6b181d3b5c57bd536936fa9946783dc7de333bb2efcc4a0da2863fa7a91a7654ae9224a912ecd0996139b4db257e62823eff9ca1dc9ab07248b12f5690cad54a48194be4d7ad083166fa3bde1a4139f8d7d6faa2ae83695183db639548cbcc93b1fd32891ae3258f5c70720f661aa31b9f8df82ba79b08d9212dacb39dd95e6737fd4cc2a23356693431948cf221924f2d71b123de60477a438f77113c175de291a822ef1162de42147a171dea4d9e585e718b57801483d2a5685d468ca3ff2add5ef62c40cb3ab1add57a35aafa95b8d8ff16688d6e55bf648905189ab860a2c808138c2cec29c3e00d0a622de5522c44d6816d10831325c3842208639329981e3ec054c1f40b8cecd4c60618ef356033d8f145f428045638eb35845e3c900334995966af6d464e1477a51e30db6a7fdbd01ebb6ab658faeb962d01179b71f150e3a48f5a54f65a5d7756ca9532a89494f28c51f020e8b94ff777a66182c36f458d79ca169b489b5e75c82eb6df763e2f8c3ba7c7ecb648d72bbbefdee7998003cacc75512bc5ed1a7d9cbdaf2c2a48b0e53ad60f8a9b8abb692757f1fc397dcb41f20bbc48b85264842e3c33f9a734733398c3a1b1bfc793d3ed4b66737191ee99ef97252e20f0df1e179674c029f1a010d5d8b3732965eff47242c5ade09343cd6342d5e6f8a9d9d8ac7cc4061b9dddbeedaf584a83eae2f95361f31ac016dc551a57d638d3a2a9510b3259b51aa9d692fbe0846b29ba31bac8b94d3a31b1a5a27dce182d12a9b6d7e0a04a9cd97f3660150c162a12d17f25232577f055d6cd081cfd9b325dc0aea5c43598552f4a7ef51fd7b319181b21e81eb9cf1842cc85216520e6973c90fb7aad93d040281e28ae471220986e96538729bde14c19068488cf60b6c32f4bb5c5657e694f5de244b6d9e203d596576fe7f933f6c6eddd3fc57e55a295b3737dbcdedf49d3f761b6f95530b428f4a84bb12a55c2bce2def329ce7f5eb9e449da1b4a4fe1bfe0688f1e73769b980f35713f255a66bf96a9fb21a7f65bf86b9dfb4f396bfb59d005f909309d2602ebf4736054670563f1636a5288db2f7d624dc06b3943a6479d69f4d3c0201db9c1d7cf51d6467082d11f92064968fcda8d20ee6b0942fff294265fb5117ea7b354725b4d5e79c86bc7c96932838e35b3727ce9de11f093880dd00070467e20680668d0683383846996b67124ceba92841c4ff0393473a9be010453dd3ff6a8e795c61007b22d9a1a531898ad1c31305bba3170e1b7b4c91a121ace4bb5ad9bc9a8903edfc7fcbeb9e76ac04abe652ac70b0b8473432c4a2e21369cf0d5b3e1795cee8cb058f3a3d4265931f200ee96bee22d45ed92403e0470d844129821db788a4b588bfc07c4be89d51bf28293ded9e18f3a6feb74f6c2bfcb16abf7d5be9e645595d5cbb2ba4f67b4d168a5b27ac0503dba74f597df75e4fce8c88c10ac1ee7fbe4f2f36908852b32a47d32796b409cda9037d472dba2779874f90774c3079053fe3dada04fea645b98a3cf1d37a1240adf9ee1d07a5e89afcf700ce72dd628408edb879d4995e1740dae031bce342a480657c53ae93ee489ff14feaca7f65b4f7d3f99594178f00ed15372e05f44bbf696315328f63b46488f4990c92b69c29ce18e013bd3aac97b495680a581ac830c913526deb4e8346d56dba2d10654256378692ff42d260bd50d0e5e6748dc7bfb7c89cb0a25770b99e337f4f7534c84743a688a9f85e0854a5ec5b03611927af07622a43af595b90bf50680e1191a211605eae910c6db912b5e802cab53314f3d82f954f66df4da56a7eccad63246ded44f8bdcfd1363386db60c9211d16c49a4be77a350ee4851b950a48450108d294dc6e4fad558228179cd8eb291fd7191e72fc3a2f896fe8855338bb47c350bf5eb567a28a9c907700d8535f8044913f20808d4188affdf8685bcd465c093e1f8a7406660da58141198a150be803fd650f3818ae61b5dfa1398e6c88d5f1945783c2d496a339a7ffcaa6690738594705052d2b9b121481cb72a559eaf98207ca2f80cf0e23c83eb407ed009ece83a3616cfd25d4e3c02482f3a32752354c184efa7a5a08d6da35b2560996a8a54533b3cbb458f2562f6f74415fd0b6dac427250146231e3b202b52e935bdbad57436023d2b9208773ba1438c91d19e4458641419133b3c36ce46f88b9a1db5efae3adff3e86b71ce4f86e39e922372bf3dcd0df29d02fa4b8095933076ae68639830bc56ec4460d26277c729e738159df1ddbb2bae013b7eda50eb9253bda667345f88ec438b315e9f2ceee5d6b2693806ce4cfdab1655177b1d9e1ace4522c2299de2a91263694f3c868cf9a70202b99218ad08b3f2fe764436e85020431ec371473a66e8059bf10b1d4ab2dda3c83087b9abc4ce081a85bf9313165a6b8c85387fcb597b2a3ab9ae9bc9d636a8a1337d8833a37f83dea86533377036fc387f50b2a06fb2bead68082f098f4c274ab48f5510e42860bd5bf59d7d0ce12413531c3d67971a386973669bb4ca9a94b686836b321465b5f6082668a0d128a08bd43725a1886fbc54110adf18800b08428f092515afa2f1d4a64eca80e5b3ea4217d8110f17d9c58a04053bb8600ca4503835a8631751f24198f5824ed6506ad573369950fc4e1217789eaa9d747f8b6f3eeed3fe9f907900542e23394bbe0b6480b72bb6992825875e33c3ec63c66d9172365db48d65b442d51cefa0d9dd5ffe2945e9ae3395bdff78cc01f269d08fe69a7b01b89c4c71ce2f27809a89d62da7e01c073e812f6d23bbd270791db8349565f539888137420fd82588f35499fbda84951743ac1157c7b3b0792f00446f05c50b56dd093624cf0c55a5ce0d30fd49609fedc4125c52906bc3006e088558c93af44c487e4cb01adc2b9c70b8ba02fea62d017cce0d4410b472b6839099bf395871ecbc8fc2332f6639e5039c3c6c35ce9401e2ff57119aba9fa884c2e172602c343641839120dc818234acb63decd9b5cc5d4048fd95f3505c718bb2e669518d5d53b5f34a68b15ef08f14d6b03f428c7fe3f66c16d2a8115f2e6700be6717731ffb4e5258e293ec544717a60ce64045c57c8a90059852ac04a5e7a8205f40b3c76673d5c6abfd335d69efd628003026c277dcf2e39a9de0a504d00fb271c1db88bb184c33ee24149dfd1eaa44fa56b9e992977bc7aff28a03c68b97414f300d6d525a2f48bd4be1dd8399dc9eb9572afb3bd6928fac56364bcc4f2080f54c312ab634143c42275c287a3cd1f89220efa8cb0d979544135922d2c0488b25f9103ba6e3a3765a516006c3560afdde6877f4fbd60d0679e1652716e4387b09a54f779527110950579c40963bd011742c074743c058d06365a6cc9d2372b49334a8ce2eefc3da22239d265bd53bb844242bd7fa4999a35b4983f5d320a60f4be1da2dd2f3eab0c75f2c5e8e9ea119a97e008a90d84465bc9b4c3f765faf49cb01dda287562c4b77e514b224369f549fc404c9fed2497f4c9917c75dce7aea4bb3bb521f9888cf755e47fc5167aadaabcf5d5cd4c76bf42af6d27fdc187f404b06a64ea445c6498922d1ca1374eddbd53f2acd109960b49af0608bc6b0b3c1e285b49084cf26692a2cbc13017c4c580939ff4b1b5ce7ec45a014bfd595bcd10e7ba9654bc15938228f99a5cc9b1c9879328e1d3ac2740f92996a47008cf1d5f14a4700b3494429b3c1368cce810c2218e495467dc2e44037d07d4993e782e8abd5ca5078844390f98085f1e5090e6784085b4debb9232a8503bfc807c16aeb24ca15de54ad204ac196dbaa2b322db88bdb8b3724f6a3ceac2d96f63eae1d19d427326e6b83e36e3df2568c4b691ab6ad7b3037902aafad1de6d110f56ba485d636aae738f7c7e611e34ca5b49ca98bbed5366f6b52699b61beaa642e291cb023d5d99eae924c29e1151b317f75c5b531845a231500db5d32e9ac2a1cbf97812ca986848dca319998c6e904a74485345764323c47eea0e1c0c0f5807dfbef63061e9f70ae4968c1e8ee0fd4754d010d923fbedccb073972bb9c200d9e71721485b03a3ff8c5ed65e42a77faeefdf81312fbb3522a582c0a4ad96f7c69a7d6f4fb9f72bf92e314b6f5b5b1afb4c8123b2554404f5f386f6febb883c64b681492fceff8167731127f7923c004ac5e08e43249ab592d52c41a6c765b10539838d85f925f7b160f23391fb9b2bd4e2e849e37e377f021cb3a4292c5b8568d255cd683952b01f1ac2658e1ef19587223aa32b18765853798522e54162669c5da1d83d3ae765feb84ed4a9da0ff0c61bebf02b62e5e525f173ef2b330bd80a213276d5f57e0afd4208358789b2ccbb378060e673566472580488ab598bab7a64fbe54d05b2a88fb7648a8aca1a05212fc24863a9039674c7e0ca8bb63ba8a57be7e732d4d53f5e6054fc118d88e79f5e07745d2a80d17edcafa83f464639735d7b4bc5fc675817130fd21b115fcfa975609ee1f71e25d12e991e7d9e24ebcda6c6b9abc4bc8372699e94feb2016a27b230384057f22d97a251e2242ffab5ff7a5fcee34f60926f738f388f1867fb2e2ce4acd7301d8b1f6f15f4e90790b3aa3f38277d0d0b0c65403dc96eb95ce5ae843ff33c28b2cf19e7860b4c8d4cde9d64a8c85981da2cc8b0bd6756d01a85b9c6a70718a6635cd3f08ec5ada8c5185be88444fe309edb57fe42089d1799ad961713a63582824c1165ea13cf9a34692607c75ffee51c3b06f0f67476d258912601b3e2a9959ead3f48c7cec9f1003a2d507770366a9c23b6e0ee8db2a20a0abf6695aed727241150251d8030bb06590a5707929011c6fc6f0f3c4460fdf27b81f832391fbdb99777623df483c58e7b6928ebe1c06945b600eee53ee58fe3b3a77fd957e764a8b9686f85eaf484e584ca57a82e5030c2d732673f6cef8470cc1b1cc22cb847d41ad0c2a3cf77fd7f33378db843107f345227c20abb635e7ab632887f7743f3297d9b618e84f2314c6305415c9b8014680497af5907ab181f3254b220fbf101aa6a118b533c20b518e03213203f1ba01910408a0ee21fe5c78af5c0eb3f0d95d7ebbeaeca1e26657cad0c6f00a3f37bc28dc6057029a4ddb7c0066aad978dba31fbed402166f59a7258ec07a00545deccfb2d7e10746a11d3755125a5b1b980530c655593cd0e5d21febba88981e7c4321b66ec1055854f73f0d1929eea6e06cf9c6d2bc3991655464cc725131c979e8c54e64ae271082a515594895557d6abb68cb03acd5e2dcd5466cf7db899c970e51a86bda239de819591e23db714b95844395fb5be746f7e3ae6921c241ef5dd4d8d8f60e9916341d0f7ed0178ed6171c216d08cca4fcb15be2f73e51dbdcef1d4203913103588a4b495299cf1dea8fd3a6dbfe5d4f61389178406ed142d2507ff45b46b6f1bebe5a918ac2351010ca4557d0e2bb94d09c2f01aa02eeecf17f3923a7f9cd6352110a27fa5335a862de3c680b2ac6ea2d6c0bb0973d8010a38301b9cecc3336362a443f61e004dbaa0575364bdd278aaddf38a43e554afb8266b2fc027751df3b2ebd7ef98679e004f3623cc8d6713b8b770bda88d755a7be97e8f2cfa4ab2478baa18bb4e42b880cb703b830d39d7257601a5f372366251d36e7aae501ac36e3dac812b2afff2084183ef4c528121aa9a588f8487a848c0f4b9328380b9033617d77042397918f208842e9a8cb38dd8ba13b33a5f24d146ef6d9d86a0ab276e63f0eec618d2bda002d00c12619cb7c126773bace9ebd2f0b209ba3c567cda1784a0704807063901bfacc7cadf129fc14313406745f949d02b922ec622ca40283b8612289951a6e76fe0b95a3724f488b9a44a05d21967f35d42a776a9aec06fc28ac8cddbc6d311751282b1119c8aaec1add630c04f383b201adc41b82cd219640c531076d0d145620f0507e140ee9f516b2a36f84d1f7b52c74b0e990c9ee004e5a695fb68850e8377a2dc9e71466da78d37e6ef0a00d91564051fd101750caf7d9eaeac8227fd8c55c060fe5b43c4fdeccdec83da9ecff41db500fe169b4f5e7eb53c749f6efb93db0d0b7f15e36be43cc6d3a573c09791e2b707a447c3bd03b759b4dbbff51bcc0226cee9f3671000d687afbe242ff32f85699cc2cbcbf2490ed1fb05b040ffb50dad60182f1184db83ff8bd702c2e565512476a895b921783e519e9cd1c821466f8fbb04ac55accd9b052a495f23adf0298dade92d615b1c5934ca4e2032cab8cb49703026a05458e9a0bbdb3477d07bf94535549b920bbf21a8d75286b4e0fb690bcd68008b059a30ca9baa06a941eb0a29bea35224b5539f5df0a06a3f6b1dfe7d8e30e0fd9a16e190500df65335e9b40bb65d873826dc375a1e613195e1c753c4e4daeb99cadf6681097b3ebc14150cd437d679f3c8bb0f56934fde1f54d44c99ea91a8e88e01c0f13808869f44c06d38193fd6aa58bd39280a882a6e932240c15314563a458f025c2fcdd90e21a8bd20af9b036cbcbcda6b3f9fa554b46cad178d3a2a37e99f9d8e368e7f46572e014854af94acaa51c167476f3d8d1c33446f2a633ff0aa58faaffddca5ed33415f1af556f012ec90406e935f70916ca96c6ad4fcf85c1aed3884e51fcee49290d9aa2172ca5ad4b0886a4a3f98d54b1606ce0175f3644af30328a4c43e4fe78ca4e822e2ac3c3427b03d30b4eb03a75688d23603d1fa481c28fce89341be4452739068d9c1414650abcbc14021925083792bc0ad88ae147992fe16260d0abd002063729782ddb1010fb719298378cd6bd29b0aa57be7eb60bfb365310690bbab43fc3f679322305f786e5701980cd190a72fc389ef1d18c590d499bb82d810fd8d6065c8f21dfa5f18e991a917df12508f6b39022f209a5b76120453775bac8e6cd2dd96bfdc7f7310b490518929c22a66084cd58a9d6e17f15cd7d9326e036656f2bd2216bf3d512e5bd70c2589d355ae46a9483681c32c4bedba761f7cd6c484bf535cf8a4b1866fce5a81e1eb2d1536c70d25bc5b0a5b37a1b11adef2b1781ddde1da43a52c1933b899ea48f5021e2682d41abf8b5e192599c2a3e55a81f3f7f0629ec0fa2094bf6dfdcc2e9a8716aea78811370e84e1af1d3ac43dfd13d02b87d02454e5cbad1d7175c67ab1936269783bd270051ebec663a5a434b5e236ec5413b85248568459ee338eaac2ad2de15ad59e4acaa62baf4876377dfd34bdac9bced8ada0660bf15f03e831734818fe9406dd19a98e227c77aa4c758000668e56f01f24cbccf39bfe3da3df9bf62df499a0926f9403fa2e60974f7bc493a4e30441e321774727c78d45cb8077ef03f3fc782023ca6a3fe03da37df307c990c609fe3174b3ab92cdfcb48a52f436b692f787efc54c422427f98522ab18a4b372c9cac42aae908eae794d4067b121dc812a1a2c0b27aa5e60922cddd6453e8156ed322cdd38cd849d8f1d5453ebd0b3813e13fe358a5cddb9b11817c9a3a3bc60045a754211d6dfeb94ee9921b89391e77924329439f98644ebff296af55419793df39a250a37ff83a9b2954de167ce97bc0f83787266c4985624ed442dd34872810281bc88b63f63e7e5444077a3ac28240bde5faa0353edcdfb6d59c903adacdf01f2c48e7ca4ef11162f6ea50d563d152a66594a2b75040a50ae298f1365bedc23485a6e41fce546288fb9cc9156e289648b4a40fc8d3bc9a9ee019280f0259015c675dc6f9cb012b2a651a051f5d35d5815962b928f3620c45aa8e231b8a029fcc1bdd706ffb9aacb182c3a83e29b82ee584c6aaa6671162a60955ff924f69693d56b238d75add08f612d89bec2d42db7f2db25a7b8fc78db0107e57d258f35a0ff54e2c89fc6b318fdc8618efcda8417e13a1d016e015acdeaeb8871864fc1ac514503d759c398c97e679d4b05b2f572267daa047dc6182da94a5ef39745e254e4b03797b87c37105968cb5900ffacd2e36f2524d47d491cbcd788f690e059677101cd973e3110e863bd83cd958253d0eb22a21d9de8d1dcc4bacdfffc70f29b8157dec3b1b1e7da421c53c3e2eeab2c3dfb37d58f0a8422352082a8a282d1bff3142e9491c849610a6fd12f560a68564931c6cbc653b2a004272da8821ac9c89f310f32e4c72e6190e208ce59c0c703be83c40571003a12287e1499019c11a9a7f6bc706e7a25d2a4f58b5cee059065a2c0c023c2c208b1420b7c255cc30414361fcb24f23edcf3bdc5b8cbac0dc9d22fb5068ba177ea18368c10ba8f35b1a5fa36e8bd7093921538f78314bf93140da252f4e9522c087ee8341397de601cbfcbb61717643f924f71f9064c0f705862a042a2e04595f0f00ae2deeb8ee91954016b2a5d118c1f266add52af5e97833882d86c02743286c29d6358887500cdfdaa090c1fc595f4dd1057279ee9e394be91debdafc6fe9a51f7f107cfa466a31cd8a58cb68d8578e0c173b4b0219331144577645f65c3e209862e1e9bd2c475b2da8b5098bd51b6a930856da1c91142d812cf2345de11e3f7cb512db9278bc727c6b83630a63634d0e2837519d65cbe25520b0b3f3b2cc32b4ea31fd33a90ddaac4f6be1c6adc5ec228d25573e5cf3a76f1c6a9add302ac916283451880dba1f1d9ad95c9f377d4e22b590c8a8b4744c2335d2c7646c53c34bceaac3330d2e18971a5caa7f90723798ddb102ceec78e278208290e01098d168ad353abedf891809ad17f8106f58d1a7acf0ac58ac12a403f72b067c2a9ab9964aa835b6ee2e80c2a694169e2ec1d0be85867c41d507e9e419440de3e5bc405d20a34e01a48d84c1fbdae7e090d8f9500b08a37acbee26d8085a7b3d75fded96e25d45913b025e4fe38abb2659bfce112cd72d1a55e0c7824ee7b3e49790ae46941f642a503e489c31a258e2bfb5021177c74bdab354379c9d209808b5e3fd648c6e8cdd01b49fb6d72fada18e77c7d5d1a7234bb574e22481d481cd387611b19b51304f2e918650e8b8e1e94cd368d1dc3cec0dcc2a8b32519d661928310b70ec4c701a0c595bc0e36e470fcb9d37baa6ac8ec2253dc7fd8d8f3d2b69722b74c62dfb6f20d1715dc756db11c0b9476156eca39fe225432a0382771919583a15a4daea7da146ecab3464c8914c35cc7dfef9f2ee90f248582d0993143b22c11f5d8c9861539671f7558ea2ba72c64281cb7cfb9500b1e12e17d7a25d7f56b1fc4eda51e83d42eea43fb7bfb61280350d69ae4a793ad1701433d839b5478754a3eb8d33c95b1098f82b2442477625f3fc38414837f2faff265e37143de4078f417c3e3f5e47deb3b1e9cbcaf76c773cdfba6ed78fe79ff288dff3469a738d47e26acc7e606d79c1150aa2b2804f90f7912201e12103cc09488bce54de423291894342f0d156ac44813d26732ef11b9422a5b24c2fcd8fd849e196b3e5f580da54fee195ad19c1ada0f525e9825774bd9879006344f88a5378992854163c423ef9a71ac4fe3ede4a4c47e0fb80a53a516c7c7e4c92698a45bf286080ab502305d890212d405ed681123c076637e2e99da17b558993e61898f0b568c95d7537e9638128946c1f1516d32a4074583c144426402eaf7eef49b9ffee429d5e3874ad442c94a0d64f12ba6ccae4bafa30a2a3dfbad95ea98e0dce934042a158ef27299137ce72ceccc9676f06ce132c8192c4d2e94f6e9755fe535fd353c63707ed2b5e9b7ce6bf23bb1c108a1f1ca539c048281f33d6927038a41394d038c1025880d9c4f4a61837e6455d88503d51534876d3079a1c99f063b2a9ad4322048a3490a0382a7e517a972fe3020dd4903d88ffa4ac628741580b542b9603f9ddfcbb6cb5ef3571cccb53acc5ad25419797c00101839717a7252e72b36970abe7e9252258d4b64995525618269f4359d4a8e1965f2874eb828c5650bab9bda183d32a0548689f8306d7db2d42b039e4bbcdc8337d18f790d8edb8784831b48012c7b61eb1e455416ce10b1d2a8cbcf5cc1f0c018d6c0ec23cc1030886f6f10134f6ce060bb7fb3338d546ae580651bfbc54cb429be1e664b5ac62c2d140dd788c16ffb3710b8510025574fc6d256ef4fe7e929335921054a6d053c173c9d0ad2813302c0997f8a12f203b5d3171b4f4fd3b578e2731ad78a01414dbba4d838629ae289f32397cc9d9c0cb9180dfc398ca311f13349dcbd8bff8b70631f7e01c051ddf899485325b5c2b3c3b91eba15be0bcea34553da8cef8e72d1d6fb363e404a512d4179f68658497713e0c4b4cbca0506ce20f260ff1f69b5101557d6f1a63362ddcbee08cc3b9b1c70e9b560ae2b24f6725215bd6638f7ce95d59f840bc05cd3f40a7434367f7039c5b1b152c57a2bc6901bdb2e240c8ca3570de5a8f259be377310a7c9a7e15b9cf13b1a60d8a9249ff145b0750adf86e556aa3d9bfb48a9b3b8a0c8a8e14c0bf389e22858d82d14216a05a24011172a08fb8b6b3e11b13a713efba935e9bc055b9dd4556d32dbc26d27f5aa2699f6609b4f33b658524e4b9e892b2ed500771072a76b90cfd06c966a0b8bc3af80b63aa56df89bf10c12c055686b3a84a607f6d57401c2fcf95eacf9fee5619e8239097e9fbb59be105cc414dc756091a21102db6adbea5ed6274dea0fc4d86a06b117eb5bb9ae8b96022d68157d25534ec36a6ec77f99badbd09afbaa49ed53d6e8eb2699ed1a6933bf5b94c78b46b619df1567b12d74ccda63a49c962c20dae91df1580646738020cfc5e960cff722fbd408fc8598ce0b01bbd84d3d58244ebe0ca58e0959882442d92d55e33bccb85ff0ef3566cd98d2df27157514e46f5cbfead8007dafd0421f07bca084e1377474f39e2070199dd1ad16c0a34bdd78492873dd76eaa9e2bf467e141948a00c12a510d38c5d87712693ced821416c948657b749b541af7dbc69acb266c2557e7120f1c927d12e6ed6078042525bfe8246de81067dfae2bae6aad368fab588afc2d1e2be3ab9c122bdc3dd6ec2fe4a1f9fbb1aa9438e636caed347aea10de90f58568877161619d474880074d87aea41fcf2f9a1054238d8cb0d239a6a0389e25f676b4032e3e3fb9d56028ec795244c0503d0bc300b792ec6673f31222b76f7424ce4fde5389167c26320240c0acab6a2b6728ecf432dd91d9ceeab5b37ce2566678769958170775ca619d14f24db572680177a3c242a4e9e229c7c114b941118da88f2ef500f32b90a04f54a8b40749c5c46191f1629c4656793581f2476b2a069e4cad2b6f4586931923802b69ace1b6e3d256f472829b3e37469bbf839a754f85ff3b97400c001c1383915072de87f28ef912e6285069765ec5b10745d7fc6557e17b3768f6b89d82d6c488673efc3169c112ff954f712c29b37c4120cf549ced71bbf84f69868ae5143a6d5f201e5e909aaf8d44265f8908f19127d39dff695a5895edaf79f9464797e30b20f2d3a70996361ecc034363b90804a649d74374b08e7ccc9944e67d7c4be691ecaa4d94811adceba18c69c4e77924289ebb585fc936ae39d3eb34573b96d908ceb7738bff93e453c3381006c1e180c7ee9a6bf3820508837bab292a3e8ef899d7a79cc043c177aedc4469697e1042de9a3e7cc16d2fbfe4a793271969c3e3e19f795c53a78affb813ad0a418ac48a472a838438b2d2aa3c988827754dddd9b148650ed223b1e1becad20153a2bcda4dd45e833a35cdf6d6d0369b4c15c064eacc4b0df04460f2bd9c3a660582d074484966e8dbc523d09a219f96638c81ac424a0888e425ee2d4eeb64be77a58a28ce22729a166c25d6a0aad03fd9f525333b1a6a968f7a196db77162b7cd8254977a53ad7a9f67f378bf41597756fc19b42a4afd0c46cd012a693fe0141a75b326e39b821090819574543b573b45a01ae8b9aff2a4d1ccdb90badc337d9da64497a7c9e6ed2cb1e04643663d097184ab6324f73ce898d47fcbdba7c3d8bdf3491be132dd5d0898a10be5c171ea872dec8929abe56cda9632dd5092c30d797fbfbfa42989f9f7e75309b3be0799fa603f4b7f868fa4ce5250346053905d6880d801d4a38d7758c4f9677b074ae5e68ceccce9e75ed793808db9b54a39d2e5e8e95277398c63be9bbd35cb5204a566d8b6bf8a883c77de246126d3a5b60dd5c1d563552fe1f80409cff2f21e84967df91b492bc433c763e64e1818f9080d30a2879c3f072a987b7ddc3fa5232c001a26021afadd224ba50387f80542bab4e922ca0d29608b520acbf730ed177005eeeedd161058f9508d2127e4d904c626815c75035289052559555bc1364625230bc7a9d721cc728480d95b767809eb49f0bce64270f04a9d5b4cf6cba01780c65b35b7f152d79aebb49a45a490c02f331806ea8cafff7040814ebd174db9ffbf9d5013b2d9f5c68c1d84ddc68ff0b0d2faee88eaeae181112b2cde0f0f5186033f162c4acc0dee9cd52f4d800d24e8bf6da63d5c2a27797ddaa530f412d5c94c98f0f05b0bc2039825cad6b110994514fde30acb00d977b1034a7cc607711fdbc76357ff00291457bff3eb79d7d3ad1513592d1a0df43ee738bb5c83fc5f83046ad92fecdbea3720fbde5e1b2b8ff58798209d5afa4157c45bc890ecd311e7552858a86a511232722af3ea26a08fa25a1bcbc2c492e50c4c2c8b57b89730792a12d433230e065b3b5895f5e61436055d0b397d98339ec180e6fc6f8eec300f05827c4df0dc9b9faa9fbb70ca4e5eed0a9bb39889c2501ad0f051966a9832324f206dde2748e3a973f4f333e5997fabeec814ecd808eb1c43a063a39bb7da2d798190474134cf841869231cde002b5b5a5954f3b5f2208bae896f172f9f43162e3f67c99daea96d6fb74b61eac9bc95d06435f801fbfd36b1d718fbc65c7da27f79f0d363a144c66620114a7bef96f4a8bdefcb847173c7380ea0645a111988b68fedfa32b882f0cb49885bd53d784c55f0c52f23d594eaf872382797190c0b619a2bbac976581b79572d7f1f3875caf3330a2ef4d94b2292ba703d7165172dcd648f58600b5f0978b48e12571968c72874b42e7b776421b8d7f40f53e6e2e84335e7775658d568b9c8438c4545cdb729450995d37626574ac18c2db1086915771a0dccb28d0b7dcc3d241c10b6dd79e56c2b2a2c59b5cb3b3d46a193fac5ebca2b45cd1fccd085abc295fecc81d0c29e1515dc5e356976afefd332f905fee0be8266b8ba99da68937c6a53d7489e499815e3f6f253a5b682e42e6f0fa529b2fdcc3868315fa3da0fce3c7a8f600f4c8145a159a7c08e9433a5848a234d6482e38d3abc5e1482403c17789cac6c569b05afec4b146b1c69d8c81e76af8c4ccb22478d550bf5947a8a943488bfd49c50e50f9e8b8ffa3d44812eb1d3273dedb3e83103d618db89e9e834dd1d2880257bcdb6b0c24bba985093b8b224dc2d14635837539b042a2d0e7f0a4a038df649d0de6261bf590952390912d0e4d8e65f12920f3a69b3cb2f0226ed98c0d06dd5d91e90d244cab533c5903536ced73ef2df87b039e40e7b414d55e695d49750466a7131c44957221d0aff6f70bc2d1503d8898eb8b8e08d85bea908c79046adeda43aa68061d2af30dae30fc34bc8720e9a75507c7a230443ca3db04981f9e9ed3420b920235ef2bdfe6f2484105bc2a438bab0752e67db558806aedcfd0c8ed37c57e03969dd15054fc2936201a563938fa3b2520d4f8402b10274a038eb4ec793092e867601d1146d769e6670bf8cc5cc05c4e21bb713551fdf9e5bc82f3300abbbf7a30483f31d298b877dcbb9a65f999271db7821162ad87d4f44868fda00a44ca4cba354a1bb331d8a91ab86265367a0e278c0095f95e41803f6959c1bff054b823a15700408f6b4460086fb6e33c6f0f26e45f35dac565a34307782e1aba3e8901f95b0993149822f984cfc7a10cf6242bb190973990b5c9085531e6f858619aaf8d06d9d89873443138293065554676f91e3ebbc81bfdca5c1121b93e490be0ad815a1054d385f5ecc6bd9c32d4daf143054f9db44ba5a64d920023828d90ceb0334b1820eccc6090a6e59dc33ec0505d2e7b19584e21f95fc445469cd1bbf83a53975a1f939a08827e9bf5b7a5841eb37260e117d0e2bc89430aa12be0eb8b29d8b2da7df59bed40bbff951d744f1d741d093851e807cc44d54a18004ef4682d18158e1f79e00907c9e8ba23990335ea67579f981bd8b84584407509eec0ae4b709e63720189e0aeb5463fee9ed6350557e2d8396b1fd1f2851dc0f663215c8511d5ff81ab9ed6e9adad6bcbe441a80e5b1735f5993dddb493fd4e1646571a7581872aed3da8b32feebae0d17837d8cf7f0a94e4c7442c10838af42012085e5aa831ad032485040b0d3473d8b5d20e4fbef7d2625df39102fab23393cd0bf487bf4abbbd2dfec86ac1edb90b47127b28be447a86169856b5185526b956c4507c776925d0750e9ddcc4de235b1a02830549dad0bc16477725ad8c816919fed499705ea1de2b1eb4dd98bd86c6b6951e26a3dcdde299a0ab2c2f4aae22c393276ecac3065313fff008be16ef55b60f8b648966e1dd59c410a5907029de3979329f16e749abb22a5732cefc8b608246bbc9dae394cff161853a4077180f9f764af655a315056b4790c34499ce7b65ef359d764d69c9edc83c80729d6b1b2b225445aa9ce2be45929b237280cfbf84a5dd6e4804909c7835d562484bbcea3045022e744f815188d2ee852a8df933753b33ce94682cdaafb608cdecc0d6b166d92e1cc24ffa4d0c0f70536115d5171885ae1c5210743076bec940b98111a738cc5cc30c410018224092009a04008404c89484f51cb424586776b5b2eac547a1cb28b12e2c046892c059554d7c565201e0d7c47c8482b4cdb8aaaa04145303ea869a815b305616a7036a896296d122a8f22eeb23fb80c922c1904792ff594d3b18048a57da8751cb6462987c443da31e0260c5c2cba0c3f76a000018d359effbb6aa58f888b2d039ac73646ff6197047ceb4606ccbbdf76e6b724b295392298607b8073b08215005c50a82c23acfa85f6bada19b5927cbf68362ac12e465f5298ded07fd9c5263582d36ea1c9194cd346cd7fab57ebb5c110041c04266e6292133336bd2ebc23c7647a7a035aa9492decc07659365e3fb33cb8ca547308b52ca0c6b2ddb4ac043556af06b9b966df2675b2918c6197f5c8440919999a58c46ae4c4a296795de52fea5b3092f7d7261e34f66666629a5bc32d6a47c66a6da8c7cc7ead5a01aa50cf14bf9f38a8d2f79641039e7945286e4bb10b2b60569d8f841785c8586abded99dd1c07e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e462027bd2aa8f2c849af7aad7cfa464e7a511f39e95c4d1953ce54da67abbbc6aa0456db14b21376e24e78756be0ef769eededb159b264c992254b96cd006eef9f49b0ef4a6696df957f6b904f5b521a99a39c2033cc8c538b7986757726d8f81cbabb4f336c7c778ffd04e5392fda34760a402136b78642a1180a85426088fdf5a0ca8d3d7d0cfb3034800ba2938258c530ac43d88ceeb5a38d19f64dc110c3306c6a17f41ae833d05fa0da262cc6c7b0ef50f787be4763e005856c601628147aecb110d6a1efd0c7368240201018821e04aaf18a34461b3e1a89984e55a14b7cd5ef125710fc3029e55599ce6cd6eae10d92a594d25d4af0f2c199a5943da41669b0ab442b17b8050b2cecd82119d04d691c128bc49a3967d3c7badb8ae580a4cf5838a056146a5fdd5da9f49fa0c47c304e80e51d24576e098995eb9f020bf4fa57ffcc6d7477775f0ce38f61f5a7157bfd8da7af7d21e83bfb3880f8b8aee6433e0986bfdcf3e5c01a7cc435ae0602a957822974c9bf5ee692e45e8261902bbf87b3fcf5fd6086b9a16aa00fbf9af6dcb37ca190abbd8f1618c659d03e15ba747d407c5c172605d638704797fce757d2c2d20fd1b37cfd7edc00e217f4383e1f24f8482e5c7123cf654d7e71e75eac6971ca656dbe0f12f8b82ee8b9af861b3faebfc1efcc05fab86e0d389e7bd6268003ac41fb7a3916f006bf2c5f1ff485a2fa2ca0ff0b026f7c37f8e57e7ee10b7c6d0702f17b81a106fab82e0c7faf7ff951a39ff6e105c4e5f7837efdf8fdf041825b43056fc0421203517fc29e19c6be4d12bafeeb739d7b5fedc3be57bcda87f15e1a18caaf7f813dbcfb7c0481e1e2cb7d3efc5ed7cb2f09f658921db26786e1926420ea4fd933c368af3dd619338c0ff929308cbf8f1108b912cc18c6bf7260920d2cf98b0626c9c0eb63f13e1558f097aacdd4670df4ede8d23ff3d55d20497e9c72e7472b6e9472e7bfc0d7c775e703711fd78d409cafd71b4b6d02e2b75e33748599996dacd2e7181d23286569873b18ba74777f3a5f4a4ba3d7e963e3d72e4929b3eece214a1093ee76137f370a6305580b3eb73777c72718b34c3fbf3b95de6b602da4635401c66ca2523ae536c2a5f4fec69e51308c59864ee9cd31fd14fc16606d0d17281d74df92482355b67bed0f59ae74e93e5cd61ae52dde71d9c36c5ed54329dd3f87ac2fabbcfc5bbe7f8da02f306cb2e29c9794b9aeebeabf98bffe7c8e9286f2afeb6a1941f40267659824a419fae4df270783e4706a3087ee8b2707551879aeff1cc2c6b721f230c81b9834a2d025f95de2e93e5dae9f53d20fa594b2d27acdeaeef37d7e0d2ee5a4b20aac87059e1d3aa5d5e7782a8b13e3cd6529a58c538c2b210b77eed8512acd39e71463ce09fe9cdd2efb41d0139894b27b76cbbeec3c18a3e0524a210c520c9e61fea87acabedf7a8c0451f5e4df1fa2149481d8fb2765bdc2f921902ba85ef4157099824948f383f0ea5402ff12489394dee0fc90524ae98f787f3ea594d249a2600cf22728039f244827126c4e766666c91edddda774779f3c79f29cd49d8233d228eab50227269efa3d30ac9329a8199ae6244373ce07cd59fd7bb8cb2f24c1058131567ae3b2168102dc0926298149ce299d47cf29dd7fce39a53b18a59482755c40d45e6817da320c3f48a57c8eb9bed6eea7dc39b410d98d05263f7477affef563ad355429436943565d46e7c15801160c59eef554ba3b58b93a151bdb8585c1f0faf9f5bb586e64d943851583750afa2ba5945cc1d0d21dd1888dee5dd7755dd715d6197a965ff8fd9bc4d4c867265d43531c3bd87ebef361e81804c631468699b71f067981914bd304f2babcf323eb98f2bae6d8cc2490766d027ee9cb3639d83948c2862789216660f131244b4ec0c32435b21e0f131a29e76ce19c2044e2040986cb60d8815bbbe420fd814709ce0de50fcb3c36566e2bb1f1be85cd1d2449b2447a51b6f01d500f789208e10b9457d131264125092dba9368f124e1f3428b0f8167881a1e264d6a6412c5f5bab4048bed928908a1826aad44a274370854971011c242a19d2076a4904eec04a1e47a94529a65d84dadb56a9a14b9130491206a38cb714f6a6a90330422478c603b6b294ecd7cd0d9e83a3b858d1b366cc42980e8b9d9492db9c172e386143ba92f765264dc4e15c1226261c19157bcd410110e9168078823e495ba93a2c1d18203071130ae4d6dc96edcb871a3a5056748d5aac46f0788238c728c46598c3b2c2062c3891ca41c394097a3a8a8ecfc6004c98544ca2e47516191d9cb4f5642a84f5655a678b2849d1f7c7039c145f311d7881f3f6b937186b00692ebfe83cf759c233b2ce8e1f6ce0f3a9c500a2ffe586b32f0a905dce12fa52e11b15ff2cb509e88c2b3359246090bba0c4545c6055dde094211ec04995c369195612d96e9be58f4226bd0ed22eb429bb12ceb2369984c2b6c6859d6a74d4a58ef3214d54e10b4b8a22bd824d211f1b04c28c2a20b2d86ebb1e84516b59918ae8f5e683331cc2ec530fed7479a1fc9c75ffc3915b8d4b8e8c0257f5548e5a19ceba1d5f53fc3e244d1b12c8c530197385473adac07ec4ad4b1e4ba033815643d602daea55235e1723829b8154dd950b462c1a644c667cba1fc45a66eacb64ad864a37009a74d56a74b1e6359fee21c0e2c0bc535893ab62ad7bfc431dc13f1c56ffc58925a5d72d2954b6a5d77a1b94ef249c2925cd02cd0a7f9f1eb9660187f1bc5c5633a26e28bd569538784c77436feb2c2c1f5f8127636b8cea9dc623146ec9bfe4cc2d2ef523e3f3e75389d8a65babbd4d7e1308cbffc3a15c338fdc14accd658549b1a75e987978dc809c778dff2a0ad3ed6f2180f1439e117ff1610188aa0d05c1b188aae405d07995f2a188ab2488956740556b4921fc90aa945baf2b9d07c2e355d2259e9186e924f9ba82974a9215db9a13d0395f580a9d142d92f2ccb7ec1612dcb6a1387e2545c934887d8d0eb99de1096c8751fba940edecff551275ab97f61b91c4ed5a53a22fce20faa76245a752986f1a72bb021559b3815d7a4d5f1a7634729656b529efab25962f9fea07143466d86466cc934624b724d702aae8916d68aad2ba2e203b73f2516939d75bf94a0ade9e16bb85788dfc39fb857b00114adbae4229d28a2a263e66359046f835d4ab462309437c45ad7b168251d6259a6bbeb4f55607ba6ad61227f0711d430cf0bb6b8aca191f5c737a4ea92373123137dcc30a2e750a219d1c737be476ffe710c6d027e37901b1299906d37c07013c920c4884a873284d801931f18e1c4fc72e3b72fcce219d9b63d8e787bf8f6f115d990dd2bfde21fcbd066b4c76e80a1907b6303c378b7bf5ef42230b421bbdb6b8f6d9fa5d13eaeb56ddfa359442296e71711c8a15ca8d74790cbf2d18a0643bd2c2037a44b3337be4773ade7aeb489e5fd2d4d9b982f0644fb0b680fe0ab81366497e52fc0a2b180241840098220bbdc905886c636becaa5ed39d416de70b5f7ef3ec9a5ededc75cda400ec5d5bb7d2c437341de0df411e46a1fcbd060905703b9211f77a54b33358b56b4ca5db1345df2878036d320d7aac272adeb0f01cd42b12187bafe1caa4d71489bac4f833e5ba54bfe9109da4c042dab4bfe9e857df9a165a591c5af2f879a744875258b3146af478d2c24c0e5342e2bb12d96aac05e362c23af5f476c0d93085e365dba6e7a05ff9a784304cd6d276cbd6197ea521e23f2bf6cae231d534ffe40b4992801edb2f17a2e1b924f9b42d16ae531510d9088eb5fe2984e08e61112e032178297c3ff2ea7c125ff119bb05697fa9486688acba9dad4a5b0569b442b2ef93beb08e50dbbd4f590535d6721b5c60fc46daab1effcf884c362d1c6186324b13c2a4a6cec538bf5a86832c8d304bd9ed81d6b94278fd5b29e54a54df5bdb9b8e1cb8b47c563fcbd1e8fb9de4734ded72fb4448be10243385d8a6b3c1076e839f15bef3f9661d0c5a28d31c618c1104e97fcbab97ed9f88b7f8f3ec5af6f546271d818b4199a021b5e363dd75f64598b496c8feed19e648230402002129800052a10804b888d1c34215c0eb15618a481310aa1f4b9fed8446223a55dbb449f85dc96dfa377ece8e9a960e8511f2cbd281bc61e9bdbcf7363ec5828e829d20c7d9adfa70906c9e12441f697fe1e2d7ddc93c0a4777794d399c8d0385b3af39c915986e50fb0daa691d782e343661671b3dcb0d1596ed3322c04aa179dd23b72ccdda31c1bbf76c5dd25f50fc074eb344e39e5f45a2f8f5c92724a504ed09999f98ac2fe2133b364299db29ccd23bdabc01cc530f40433c6fed92fe0b8f2a58c4e043623b7eca63536be4f29a7cc9186bbbb337740068109417a1ce70b7e96b1ea545fd11d224b30bebca80e97bbb3b4a9de53babb672ea9cc4d46d768297170da9b53ea60e34b66984d0c33a8dc7871c33aabcbee5218c6dd5d72bd5ce52f97cde4c2ddddbda774e9eed2a5bb3b75f7e723534a29a5acee4ea5bb47e97eb9bb7bddaeeb6078c3d5a2e88f9176f70c83b46efc18d3d801e3e122e4a84b77a01424a5537ad1397dcaeaa08ea124f5a2537a47e66a04da83e50154afc94367ad2cee2cee3ec52ac1cccc313ac7189999994137679ce1fd60d2cb5b638d35aa60af094d68421047d0dcd0bbce429b4296c212ee90409bfefa7523865c7f978e9127f75ab8ce61d737c55806486d9601629d658078f225cfaf3f20f5f6cbe7bfeeec0f08e94ab0867afb637c1048bd333dae1108b9eda341157c5c77050659e8d20ea7314efa434ad0c7c5da042eb086f9950271f9a1109636799226d7ef4442c80de3b7ac995ff2e7e71c02e04343434373622d462518b7e9c376d8cb8f31f3755d171832cf6ac38ecb1f778462be1abf6308146bf70d94bacc81cb67e9967e89521aadf4af1c73bd83974f2941226cb8e35aefa9b5d676393b637191edc38e0baeecd80cb181aa4831c63925478c5346ee8531c63871cc2a5915ddb0d65a2f9648e794e8ab18638c9e73e30e9187996140203dc10d10cd6c6418c5a9a10ecb64a8d60aa23a64204eb3b55610ce86e3519bab83ed0f69b562536ce836b54e16566f28461ba01b31c6188d4423d1c8256b766b9bc21ca0feda1e41f1034eee8f7863c7509781b6187b722a2e87497f0f7f9a317ffa31bfa6f22bb5354c2ac8b5687a05557ffd965f9ff691b679edc3b611ad901cb10d329742de9982e67ee06aa25514225e68361d1866ad0c0cb39ece72bab518636c318ca6694b6cc8b55837c4a8129a840d2d0b067b67c018e6f7e8feba21745428115684ea88308ced823d23baee052924bc0f452b8e4389565d8aca0d2f9bb8baa16db20d1923a338969db0329db0a4259ac8b4cf86ed6cba59ba22dd11ac1572adcbd91a7f3ba44d0c86add2317ef2b7573a1b826538147a0e1557408db0f2fe686f64bb1b4131c3eef6d8958c066b75c9339a363135c2d2fb43cefc60f97063757f8c1226fbfe643418fa597870bf556981bac762c6b5b856f7ac71aa2476f3d9585da233b02d6811e8c8cd285c0e87ea219c0ac5a9be4bb5a9bf89c6ba1afdee0b3dfb715fbca1ef47bc21163fbe4d32eda31fb5fa36bed006f6b9f5e963d10acb4e9c40dd7875da94a1d8491357aebf880a76c24495eb8f5de918efc10d4552ae77a9ae489b2243714273e30a369dde7e5b6ddfa6b37db8ad362a2210ba1bb821b1e1b6ba9dba5de408fb4d2f3f51e208975ede0902164c442b96894e64d408eb4f645c8b65ba061935c2b60b7d2318031b76a9ec32942694b8a1cb3b3d282d02a15b7dacd42ed5a57064bfc4500e149995960f1459b4f423145098f14358d54ba4b1555089b5ac0e0f38474441a5a4582be3c1ea70391e73dd2093ad2b56a490429ba91fa5d05ee84bfbeb6e88a81163387631601d40c49755979af1bee5af175c46ae22ae23388653451e1b4b75030759b4d8471c6833f5b1b8e2b88abed196966ff909b63c0ea4089262987ffd047108c284860bc4a1e5e7e3c06486969f38783ffffa080671f9eb839cc0273e79cf272c6a3f7c4420ded1ff98d13e86d1b3d6427a3e79dba77dd716178b6481f92d4fc3fc1652fc1ceffd7c1aae278138b480240be478ef4911a421c77b241a46dff2a36ff9ebb7aec877dd5caa6b75f1cc1372ae7f0e9debef7d7e8d3e3e791f9f5a2e1b4a84ed6c22d8a52e9bed8661ae5871a17156e441328375f8afe0061775066bbb21596997229dc36548db70a9096d372c439d38a16207bc038e3bd0818b8dcb1197223ad02a94ac3f8b04c3d824ac0d2c1339512ccec6b238395ad572ea63310ac728d1373456581a6c5a23db816fdc106b8cf6f76876b9f1177f171c26d75fcb893c5c5ac03afc5d5c90833587d26ec8a150f54b72bdfc92ccd7be1c9726bd00d2fbbb20e9182f743972fd5d8a74cc6cf9d065c9f5981cefbff978cc684a669bdc281af6d18adfc9e897c4fbfe92b4fcf5a1fe745d20f70bea4f1e68abf44b4d0ff6d4527d3ca606b5e3d4f23dd853ab4da81c5cca634874347a1abccf01e2407aef47a4f740121500f589ada6c9e2f3589fa745ace9e14f1c15107a7185d04342142f0baf87616e6c948c1661434e25459bf14192ff318c3e6a3ee2b77c19f82480a761003734e0c11a27920c7c1a813535e0d7fcd700e05dbee6fb9a007ccd099fa3a6667ecbd75cef7d0449128c4100a090130924c5d1cf307f040661123f48cbcf8fe00cd78f7e0406f1fe7a21276e48fcd1f3697ea4f8d7f3c9fb48b1e523452cc7e75139e1f302f08d68fcc5fffb46298ff5a8eb0f8e6caef3e93b05e0e313003e3e9dc0a71c5e0f2986204c6698ef7d90eb5b9eef0c1e1864f4f32911964b712818d89053a1ece8b3381c13da9326d8a4d580b928220f6dc5830e378515599ca2cd608fc52b385e117dab17df8e98a66298158db6c2d1e9522c382c2a961c96158b4e97f2dedff2784ccb5f61e5b6483e576458b4956291f587fd300c86460a2c2a3bc1f58f40a0476cbc382faa0e882d055d10dcb9803b231c6375fc25f2d8501eeb1c71fde96311081c81107d93dfa37ff8c55f071f5619114e85b5b016fd48ad8f6485e4c330fe56c76348573654e4411ac3c5871f90cad8502e45da145a1c29444fe28b7f28c7c64a27964230c48363552b0fddf8367472f038d8734545b8fef48b4ffa2eaf25c737faaef0410f32fa23d4aa4b3ec5888665b4db5ceb7a3d97247f5a1a8f2149906481eb6af909e230bf657e8bf738b43c9faee793f4be1e17356259d02e43a9c11ab75ede09421837f47ae61783bff8b77cf40576fed5031e53acbccd6763692cd6f5c75a9ac6ea0f1570f911c03c3854d41196623815f744c4d4883c3616ebc05afce2bfb15a89c5e159bfa7c1a9e0fa8728dcef724f5c7f1b1cc3a9f8c58dc032498ca8f4164d04b671fdbd21b00c5f33443a57ba446d8d23d4c88732bc2f3c313c56e46171a20e2bae3f968617d7b5c7421928a4812cb0cb405b052d0dd7b23a5dfab6d5f4c9be8956222b443a16c7eaf4acacceb66299984526849e8c0a61e387584b8b0c6bd121ecfcebf99b77930bd03030368bc5a2a2bda0dd087228212c12424d422a2464d1ca8f48d066fa231228b5b1231fd8b4dd90e8b73c9f4814245960bef734ccf75a3c10071c5c7e8e502cc3a6ed082ef97b2c8f21fd875eeb7ecbc7b97c96c5329a76bb94c7907278de08647ff1c02364b64ace6dd2a5e65656aeaa4b2eb8fe6a3878b07fd27cc48bbdd7e3b1019a0b7d3170846218ffed88ed46829bceb6426dab8b8307fb57f4640ae6018ba2700cd772d12af2d07a3cf6411262fb86b5b05697ca0935e952488ad67a228fd012acc3df4396871b6ae2865a4f088b36851b2ad484be272544c5f596e2a2da54959071b184cc019a0bda8d20d662187f8c0a61ddeba12db07cba3ede400d8e5056c968c81df9c05eebba06d22216032d0f6875ba4483b0dbcaea0c713d0616896db5adda44a73423e333b2c73a43a207099e273bad273b3e162079a7f7177f9a03f89ce653202cc6c5955ad89fdfa5220d78bd364390969c53cb5f20141c1f2838ac7be15c4beef589561e8fc5ac411b89887ff2d74054c2cecb50a840a955ba9c61af9f7f02285a31c1865e8fac6249ac3e429fa2ce8f1d83cbe9e2ba94525cf919d066240034ee120078607fe1a14b81ddcd6b33f59b8a7ef19752b1100d01354a55e992b3ccb0f23214275a205a451d326ac5b63643cbb00d869dceedaf6bd231de957ef1182f0b2cb0902285a9602a5a684105155248c16b9111c7b048ba74d3a5236e6e5c8622050d2e7679278b212eb7a23e3437ac37f690d5f0c0c3866299de501b95c6d9b6b0d18387064ed73959b14c9cef6561af80f25d0e1836ec52ad1b622d316c07c5f6a067d66a7f374467c332f12e8144170328ba1e91113430ecaee8a08061e7e46dc2b058cb5fd8037d68b51a7a3816c76332d47b9ecd6ebcb73860581b2788261c4cc41212628cf5f1972330e132e1865d0a854647d37971c515f9a82aad56c7f374fead86fa1070430c87655adbb0d67743acc5831b22e0865d4afbba5411df8fbc0e5479c8e267590ce39f039f8cc60924222cb29aeb1f79b0acf8c2aab3e96e5c448568e5831b764738550475a824e11a8056b1e1768381e669b0797afce5e2f958cd6a9feda659359a0cd7cf8d4a9b6c9c20966cf4b06d71fdafce09bf7459b0ba8d05a5cb79ef26eea0b9d0b75b7d61c36d7b32c5c6038ec2311acbb71a33ae6f2bcdc70728c8361495371e2372c2dbcd155968acad463343636d355b581dee070e6575eeb65a2dc1a9115f5a54722a56149d1f509b175ed8ce8661bab0946549f123e8348ef21723d669c278422566717a304e4525ceaabbfb796497b6c828174a58c2126c78d96c46ae246ca24a38a6a5891a700bf31ae23ae266d72f810b25647f7de4d1bd7bcca82b824d47704c8b12a601b73041d857239bb600e7d1f1585ecb16342e356daa18fd9896ef6cba5497d372cd2ee52f49b0a1d743ba82a4fb92a0ec697ef681b050bf5c9bd6c212b840824b4e9ba47039d22690c96509eb08ac2ea87037f47abc3042e702ecfd3b22cc23f36870bd4bc221e9edfdaf23a0b74d9678f145112ce8b5cfbea842049b7d7decab8031040b46184208430c2dacf6d8e7b469ab5793be965c317cb2b0a9366d2e362c83d521a1ac6e25d00e15b8f0582db6670c7f1794cb908e992cb3bd63377e482ae3b2442baf0bd12a081649e3742a2cebc20b2fbe0002a51bd8a3b14c5bc10a3289029782eb4f7ff043162516cccc5d54b15f58961ab7c55d844746f422f6a4231beb9546a82e255a5da552978a61971ad98c8a90fa85743c4519fc34418a850dbd1e09840ca2480b32ea03eb37b4ac1e8c52a3226dd24636aa884521322d62e4218b4891818a48b8c2ca0fb1d6ce10f6fa161c3cd85a3b2291053606dc0d9164d2d0a7f9239b519151aae51bd11cc1b2600c9405fc3441ca437786d011f18882f07a54b5bae702176458b4140cb9b15ac647bc3f5e88b7df46b9dc90a863ab12bf8e08c3cc9f60fc70db6ec8b5b621b2f8754518a6059d10dd0c88986249fd7cbb945cc01439e9ba2fb562e2704df08b47719d53b9a612a94e50c52e322a25bb61c17151a19093c24a059d232fc8a2d8f8828c53b14cbc86606b248b5f92f95c0ece9d20114468333fb4bfa1dead8a78d940b1f13ad22fdf8573a9ee65a3c3a1fa76aa4df1b1af4fe9906d7bd0631ec06ef0191b4a37fe8c1681919425347163bd6eae230ce30ffa2e18b00effedbb8a60984a796043ac654473418216a7a1d0c42f94c0d158315647891863a7682cd92f1a4bf3e272a80c6bb154f9a0485d38550a5c6c5c8ea8ae7fe65284615c5aa0496942c512299050a9f18b282233809d928a3cb82138059c112362e0830dc3c4670eb5031b5e36974d56d331362b32e4fa6369446e098ef146dd0d39550ba76a613f58ab85b55a58ab6559ab2196b5a45ffc9b54292c15d7a55039229356ba446a75c9e7882c05cd052d7239495c4ec530974d7b46a304091219c860061c67d06dc543d1cc6006d901540cc339611dfe1c13919ba28aeb4f756043af4704457485288b24f2e3564b300c53712518b2dc58c2bea842451530a6b06084f1240c319cf8ac7cc6c881c5b9908c41060e2cf6f143d12a92c1a9443c17285a39c74419a2d50d6c78d95c47349b0bc9f5ef6ebc3bd226ac2b036b75375daa3b0243c38a142e346ed2aeb4094bb90beafa23f1508eb6a34a46a3a00246183608238a565f8cd7c39e117807cbf4871e17170ec35c48f0055e367e29113db96c18060a317c727cc6a88195f1bfc51b8dc0ebe6b2f15aae92c75c2b2783bbd475e336fe1282f4092b9a340b235a9c4a3135565689c589f206497753a4b3b9382c26bfbef4133969b198cca2c5664641377e14ad1846c42372a25d4c0d918ee80ad113910fa43411ad442b96d1baefd143a8ad22fba9115b2316026da6826c63aca0f5e9926539612d8b437d5cea430e157a1008cbbe7b7f3492c05352d7c6d61fa54010e1c7abd2a618df873623690cfddaed6c803e3c7bed43a0cd60dac75da240046dc86ef6dc252c5a617927892d6eb729b42c8642a486996072de41824a4c9fbc2ab72f6b305c5d5c10e84300a2000824c2e8ba1960c070c31be6f594d0599d2e35b11106095a1e17e28d4d586f085df2bc1e8f4aafe04f99b09d0a2435ce92c6792206486ee8f550164c5bc32bafe787cbcf6c586e6e4421ec54625c32ba5467d32b2c715d86e2c40cee7579a74709d612ad483eb2be4f02ea18544aaa82a494aa2acd9594b69cca0e5d6824f5a11b6b07cb483be5db6e38949d1263b81f6eb69bc8635b451ddc0f31c66edb4d5b14f763696ee4617d601d686c4fae7f64a2b9d06218a944466960434ea5b291f2e9e189a06825d2f17a9e65e8e720da2539b8fd7959580a5a95c5e912497a3d3fdc7223770c92e48fbea1d74391b03daa8e4897527529d5920c87dd7610633a21e20ba5a0b68a3a3696bf7442c4982d0c5044832c5a4aa92ae336519b63910823aaae858275f8db24a2d09e28a184edac8a1833c1ae48bf78d821b139dd91eb1f5a25acdf1ff22a61e70d2d0e13196562430e1599d07cc4db1161989ee5a814ee3446410b15cd0800000000d3140000280c0c89c4222291505463203f14800c6d924c72643c10079324c6511c04318618408841c600628831c80ccd940100d6909940e24e2d2d7dc45d6c6f4a711a6685f839488c11d0f68b10b35380c289808ce333af28c29fcefdb23c3f15e8ba1877f3587d8031c03c4858f53390700928f01783fc940690892b6a29aa081e4b295b780867aa7282b21dd6e0ed1b1c7eac653490928d0a26fa026b6cacdfc10f258063b5bde8830343fb849078de68be2dc5179202b3365bff51ea7cd4a86c78e815cdeda46e703ae6188faceaab4254a9288c783522959b85349748d82209fae9d3e1d0d2d995a5c0210309f3d69018aef4efb270add8cbe53d591cd44f72eafba16087e08604b2f14d6e393cfa38332ff84528c236813b5c41a9a3baf5fdc820ec6ae3ce9e2079231d4d5656a71faf6771929761dfc21f5e96fd1c9881f0646f1733f60d5ae6f2bb1f3816e4a7593dbf15682088b064c7513f1a98fc0d4bb82cefc8dd4c9fac398c7990b4aad1621c0002e9b9ed46f0e04a88c760a8ce9db1c2ecee2c25978dc78f35f9c02b159f74620068e33bc02e0cce8dcb78bbe0c84e2fc328ccea4952886939550844b0c75dcbad0bf3c610309eed64a08a46df36b152ff23ab1df5d886413caaf5094bf8decd64ddaa81f0d4e230900855402ca58e7ebbac09d5ef3e93d09e42a00b814c0aa73d0253195d7248b4ebd412d246d3de6e5ec8033cef626a1459e72e5823e3d35176841b2886a0bba41b842fcaae174478b5ba2646a957e77d81f7801bad101b206f64285c17d5893861e91c421d401e3c28ebe9f36d20205a39a4b9a2efadbc2e510c8f86be88642744e0ca8336162e4d2e9ceac23047b86be0820daa02e29bb4494238e95a0caed8f73a02b60bfbf2e563a7a25e9e271fc89e2561c5ea08fa7e02f19853d90223c0482817c07174df5fb2db98c0a8d215e54bed977523458b894f76167f62f2dfb921e03e640b67dd11b94e75190aa7ecf98f2248a466b3cfce3cd4ca392c0de998dba7e27ad3225482c3e5651870c1a520ce2e25ea0e22ffbdf0bbca171c5596c70a3cdd2704b46ddd16c781782250471ebe183755462dcf82e18c3683e698c00a7c3e76e778f9f37b4cd2a6981e7f81be2b9f871ed756810171c70078b4502945380ea2286108da6c4835f71f35645e11e36863a1301eeee1a3cf65137d9d8e57457cb66eb4e369a92ebcaa350f5e4c5c42a5531a90f0f1028d0561aa10077b86f4696e3970e7b090e4a83093ab598a4577d28bd3aea082e86640a3df62914f46feab6c1860808f7ae79d870603c091021f45099ae1e3166e3084656ee0f0059ccba12668abef67166a42b0853309e080bb8fb8d620bf04a6ae67c81266a712de24a2c524b92d308245e2e1b820e6526022272142913f68f09552be854727c50ea55536cfd966be14c7fe00c0125d3c21b48e0f27ec55ea6acabc186763a63621bd56bdba45f537f071a3e57ee05797cc7445987f581c0c9b311aad8eba097ac662123ef7da353a31f344f8cd30bc6fc2b463ab8e1273d51d4e10e71327c56976280528f5267d0a4123b57e89fe365c836a3dadf779cc6ed1cbd6d6ab8300db3725056eaf41af417e1eb1e1aa7de0767c29f8cb4122571079c7c2a4ed94531cc7414571b64b1fb904cf7f0bea1e7740ce81ff0139a7068a0359102e3d14d606870d66596a33a740b753d1f7c4a101e02a554e82cdb99393c17fccae83f13595aed9c22b308f659141ae73258b390b99fafed12952e414a47b0e3007c9bac42398f6058abeda17d5e780edefb81581c42103947e37b223a0535a49597668187447874589436501161c6a62c11d1f2af9c84a9ba74d325845a423186b676cf74a903b8d9919044643105eae0c308ba2b97e0f7782ff49362d17d272afc424804c63efbc4b8b59a1befa05d08671237fadd80d421b560cf0af73cd8a61f9863f8a182865fb8b188a7f06f771ad0150e0723106b789517d8d49fc82379f7238a46900ec4cf754920d3be5c67c46a45681a80e62a539a0db67c07b910a74f6463095d4296e18b44d02ba8b3e5100c93fe7b0b68a1ea0e1e2f87daf6c864aa3502038aca089ed134db310efc7bebc8534b896f00befe2e5c7488b0ff2235201a34e7fd9fd51f754ad4cc9831ae9373fa902072ac92f2ae45ea7a4ec609684f1a891203813accc0a98803901638d4405a9ccff4d120d9270c435867e6c2f9a19c96ec5904c77291444d1dc072739e8cf18be3f6dce25ea90f0721cab85a416bdbbb290b234883bed8315c20a0de095a0fe0a57668c881ba8714a2f83d6929422a048a8a9569e71125205db6eb0242ba34018aa32939e953a52919511f0ceac397a195873fbde0b64b4491099e26044f2c7ffd8a98c09cac12592944617b1371c1cdc875879f621b98e2f49fce7bcd9cb13a0bba38f54a604bc1c17bae5f44007e4b579c833b1d49a09aa802b560559967b54ee2f9ddc17dea8174fbdf85e943ecf8d8e6c8c967b531aa767ba98c2f83f9153cc01ddc73361b1c8b487d2bd3f4bcac00f0c25f445dcc3814c26106673842d89f41b11b911c7455e05a0a5e114e0c64f17f186939f27034c41bafd41cf58a94cdb464e6e48a6b9321a2e62b39f43f43c0d4c0fd8ae99b9bea9e22d38b87d33b937b3b242ec15dfccc9cdcc7a6eda75861e7d72c951f4137cf633dce0bd9bc727258172e6b0b7da148b2dc247cd6ee8d02d5c869a7de520836249de93b258e891fead77cee31bfcdcfe4a572da264d32e16cfa1bed94d15432bd52afb1f35557e13e454be609e313165f501a8597a00778f67bb2301b2129980a3edb27353c7e150a2008d9cc2c0ae845b7bcce30dfbd6b4c06c6fae812a6a671b38a22d068b817d602e8cb0af7f7ea051c597341f07fe74c329be17e289c1776021d31ed79d3059a69771fc7de165f9c48bb279ceba06387108210a0e52c31b9ab85590acfe28cd5ecd92be9db00e72d696b435053ec8ce5b686d7203b833ee0685d21d7565fe450a7781c3aeeaca2330d821ddf71c29ce3709d861f686e7d426a16849e6807e4505795a35a756318731a6165861182ddf508a8f962e3180a7d9575d4847903c4f6448504ddfa1feebd73da602c868fd84a64f4d1fd80c63b078e2b8c320784e943953529c05ac894e01271f6808f2460aeb36ae55f363afb022e5af6915a2c0c072385a81df9f0a293bca8151b9b8fa4170a631860c1fef8db8245598de8156300051aac00711aafe605d05790828960b7efd70517707eab2849c223ccfb5a0e795eb018f5ff1f2da42143fcad9e4a05a8126023ba19e03bbcadc839165a6db5e1faf6db1b86cc630ce2febc7a39170314044f0be87b9d25edf27bdaddb9ca65d6baad408e9db2e751800335a1416f4c25f42a2a6de3533d20e19d04321f38cc1e40548ba3d1e6d709b151264f413e5ee4e07f32c341a96a7af8b2a5599d09b4c75197a0d6fbca2c27a99214e20fa311468f4fd24595682b29f154815950265dd02c4acc0bae62c036e01a73c08f5a2b190bb08d58fca5351ca05967f67b43460bdb9b625a00d15729a85b71194f7f96f17cf0d01ec93684e4c565701b11f2912ed2796908245ab1e71898a88ad181a9124d4a93368d219bdf5af5643f5936945642479aba652725400012d6cbab2f6421c87c30eae18f45cb1e44011567e5b88af8ca1803180d9c2b5a3041928cc5847053bef3323c3456e144428c2aab16acb12055a84d02b827eb144d1d7541c1b6d9415d60f1dd122a3dcf4d65043c9dcc3267ce5a7aec4118229523d1cc10387e79a00915b05a1943f86d4a418d68346770c0454f53289447c65245faa4320cdc873ee407aba815ccf0cd2d19b9470a28cd4d13a5e13cb98c7643228f2cafce19006fe92275cc934d54cd3cba1fddf0826303eb089c382f195bd63b35d2bb3b821df4eb523f7b3e876a73dca3d504f1b6278c0681e71071b1889abbfed44747f520d9f69e9456be13b2cd2131ba0dcf27387c03a354d0a8ceb28a47d7273583b560c961e1d92b949b727786a8e279f68fcce186674c9b7ece2bd83f6f1cac8d6bbe5db9b2dcfd76b13b0bde8c67b4af9c98c89eae14c349eb56f50332cba3b17b4b65962eba726ea5efff52400ab1cfb797c4dc253ee677cb94b83082d669ea231684218e67169c5fd514ab2c52974fce2184260d5c228ad0c4e5629d0baa75817bf4ff43abadefb12b2794bf86ae5c946966a9c88e7cb685690322fc54881aad776bad2bf5972cdfe8107364b503d761ba7c7ac42b067840143f819aa001eb23a94b5049ca31cf229903dedc232c6ebfa6e67e90e9dbf1f121249e46e8a2ba914c4e10999c96804d7b1bffcb223f98802004ea21aac283a2d2d85fba2188039c69eab9326ee5584c52edb345253b910d3d0d893ad8cd3d13dc1853c68e3cc5d7c18aaf7972645e96541fd80800db4421a0748e3b38ea4070df819bec87dcabf0e2d4a388ef7e4ddb8a869ff7fa9f0f08d2b7c4b421f13989958049f0e3ca14387aea0cd34d09c3082c826db8832d1a42f2c827773152009004082d06211f409e10c463fd669f6c0acb0703897f0774e7efb86530ec9ce5b1600924c7dbc8b70c241f7cfd2c8b55ae63cfb6ce731a503c8c47a7e50889e686b4419ea6cd2f2eee718edb303ffd066dd878109f21e9cb0a3534233795350d86c34065cd7976dbe06574e0c41b55fd20290cd375b600502b30a29c854a8b6d94e8366b0fb8f472ad7a2fbd6f09fe3fe24143eea40179c5d102b490da88dba38c7c6b3545e127c897b1f80ed75916d72935d70d36c187d690f33a1f14dc22a92ca71aa3d23fa2911d33a8f70489eb94625508698eef37d84cd10e7dadb53a7bff823efe30588d6af2bba2754eff255423a49ae672011ff023f3ce8d5c288698a25e602780fe92d16785f4d363f272533606148a90686c53ac48969fe79f87f8c6fa61bb20878079d7e4b6fd72a5f7d66848879c46569d1fbd458e145e2213ded378c4c7a21faa1890fb9cc6488f8030fa4fe8c0ce99060d576a05dbe111e6172b8f1b65d7052720e45a2673e4dc2c81d6a4aff2243fef8bc440af5104649c040d4ba8d78082fb2ee887e7c41a4d2c8d3db643fbc40abf56abe7b57779708396cb3a0775373518cca9121f928c3bbed85844cfc45546591683486882ccc5d332eb58a8b58cd91225c2c89182b61a3fa16f36dec42a3564a07bd5b96b46787babdb8705aec941f7c3cbddf4ff64d8d4097181a695b10638cef416b22cd5a360ac1bf2f3fc9fa465d502ab30ac4ec43fc85b70562120aa9f29a1a2958cb59c7e173d9d47d23dbcce8ac3d44cf5be9b2ab4eafccfcbace09e651a1c77a9d8fbe50c7ee06ff97886889cde4d6080cb96e5a26b272558d50d3bbaec75c3d78cd93fd1cf40199e7cc1536e5be89c9401a517c84aa7f16d553d4a1727a41b6925eb9be91282485c6319e3ac8464a59ed6a168983cef45cc473d00defa27907e68d29fe07c7be5d438446872fffd98927e638d6cf6c0eba4532393cc541cf6e24108586522b9f5f8262a6be9429279490628df4df77228a2ce20995610b6ba1be08aa37b68f92eb9a370b892ee762df7f0ac202ce48f24905b82a424dec622e8c66904b3d9090019d585111e3a4b90cc1ad8f2290d80e1c4c9a64a9c895d425bc9fe836a464af62417bb5b6b4eb8a2be5ad172d6122eb8a867b9b990c20117ecfe120ace0e1ba6f9205d1fb84584452868974111f60f4ffae7c026801bdda7e9d4cc4fccf63c3b285aba9eafabed44fc68fd83a904baad926d2de137bf3a493e62b352ac132909ae0706ae36024650f23dd0720ec30db375892ded70461b36ce0758472190307e4ce90d9d95c9353e066fb9043bc04d173b29769c79f32346a43ecec0801da41bdc5e2c723377f4b4b92a43f819bff559dce281a22d5de4e06e78a9d80b0fc47e389828b0f475fdb933a4f579191b25c749e922255f83aeda4577f137884266665a6f9c391fe97951613f374e3512c5d7a330a3f760871f2535e38340b8f203490306e6078699b3f4a9a6030e8bb43bcaba59ef3f40cdae8b49f243e89a7d39540e4c69891303f61d0a64ec48028aa26ea226dfe68d8a3874c9e567f7e1c6726736182d324955af6f533108de0bb4f5f2a30852a0d173d457c84898f936c06402ae92b52465b24c73a7fd50b5b80d61335d9c2b9ab10120f7fb0ddd320beac0d68eb6a3c668cf0bb2c852282c099d8c12cd3549c2bb2218e9dbfbde0c0a9505c2b8e42b4ff95b38338ca053bbb4a561755bb485bf5bdd5f94a4db6220bb53a19aca431220ee18d93647f4d6cb27ab3f618f7ee625937e7180ff6ee6d5f3aaac7fd8569fcf82db91b942c4c2c3848c738f23424de91fb84ab5a2e32121db1792149cca056fe7d8e2c35a635d7e2dc2d5e480ce3c28c1655b3cad19ed70e87b705796d8888364492b61cb834983f5ea392c5ed0b36659de165bcf138b324447199a1b4e8da6c899e16ae0c6196299e437730c20c26280af293e8920c5415da19fcc72aeee78fcf1e3adc57c337b928958e6920ea5fc0d1e1cb24800ec8a696dbc03273e3f8b1811bada31fd83621031e8ce37bfa93adc3e08355aeaa2a7dcf4bcf584e78e7a5e3a5935578e6277825cf93360f82e71f11ae79668452b9989c849e62e183b20e295a588a2eb050d0310a8c7060071f7710227ef02d0c27702a820684ada2142e4638a579235d66568fd75877f22ae41b1a412960f25020c55a79523be92b37c9affa82229e85bbb3f053b8f680af399f7a24dbc8a5ab119f0cb03d6de375f915d866b25f3d081605154d2461cbfe8a1388ebd87fd0c2e5fc24d553320e1da9c9435cd0bda8ccd06a698d1a2950f7be775d69818d96b7672a976f67ab5782917472090c83061e56a4e7159827f2a6fd96804d5c126479f54defbbdb10c4c395dedf129eb10a174b06c17e381cc29d747406326302ac356ce0092496c52055d94d774760ccf7aaa039a2f765b2a0bef8c62ad3204cb8b29b4bc39c596e218d0d5d157e4c7466e9afbbab6442584c12b042affc1f4478839d73115fdf0f1770e68555352ef5dc6089348b347d076b63e575133ebb59690f4c85ba2d2b9e95d2566e183b773e9e748c95cb3ab2dcc16c703498de2c166fe0a390b1b32fb23a8c7785ceda1788ce99ebf1a009e2cf020be0061b8243ba62fdd4e7aab3af70996b11599af5b423ac9c24bfd64f7f02f20073edb5b05503ecd016ff4ddb52adfea6991a10dd1d86307588323920a30aa48e8b4faeab34df481439b9f303a3c9b6acf88d267a2fba8ad8183144d5b21af829aa21bd4d94d25e4aa80768313a750ccb92f98f3cd5a9efa71f19e23cb7867d9a3201f5822158ec14495c8ff783eef748059aff7320ed083de462afd56a4a15254f642bfec6c6372833fbe3ea8f1fae199428cd4fec8c08993dd74e6937fe4ce2d453e7e30e4cd199f14b991beb6f69622a6b27a26f08835b38c747aad6e1d75431438bc0441c481713fd57f54f59f5065682ec139921b1c1b4b8d3393beafc018c39a45f1fd9a37242322b4d011b5a2e401a873a448b4dc8f1c8ae86a8b0e437a3dee82bbb9a1c59b2e84b4712a14a5f412a415076da45a3e0780b4703f45304e11a917173ec95c2d2127b96d3ff5e53bd17b8bce40f5b5e332ea38b97c793f9813647329946e34cfae0c98a2e3554dff7780be888fa87cc63bea882339a720cb955858102694dd94415edec99cdd3b8fcfa4ab64bf4c193a3f7e6d2f33e1882823542ba9d17cbbad61ba21ac11090ce9969e7b23ce40fff98a0986a8eaabfd7660fcfa2311356f16acad09d90853d59c6507ce1537678c9d482750e2bf5d9e34397c52274c9846c0b6d3e5776318e87920e9d4c1585e312f51b4e8f6eebf8b7b685d020a4d1203d203615dfe70b47cf578deaf7b289e3a3c1560c321b19d3ae197aa1ac953cf34bc138270b888eec220ee3d413826eade023a2569a4282162f03dd81bfdddcd2890a67c3d508485a228d028a0966a8c2059f9a9f10bb4617abebdb325911c56bd51bc30eb6cb6806f0e0c2b40861024f3e53e782164e5577e93043968ce35d410c667d4396db39ad1309ead67f02dd8248a2fd6a9cc62213a07e8d5fd1c34a3b49c3b6d9ed910ad09564215eca3924b98c904546e2e3f62a37dbfaaf0640dd88e891138c260b7111d5a29d05621a30d52205dd956156e29cb46d45fec93d542267b8f9958de2a4c4c31592b3725c1864b2104fd7430c189ede00519b82699db05ec7cf4a275e07cf12e20c8c288e1da90089a933887a92ee2dbe56a958adde811832771a33732586b7d6513dc6c9a01510887ac5994bb5b6483cc2749b2ed2b223dcff915b54b1bd2466256930290421058c287265f7aafbae86066dd7ea629a1f6ac97d4c1ded72626b19580f96c05e4501afe50ff5e784437eacf3a333a88c09ab450f552a80a74e79d83fc6896713f8c29e55813a151e1431ca9385d48041010709929261e7bd7cac2dad60518b713cbaf67f0b31640af694f010082cc6571266d122b85357e9bed318e474fabe1ceb05f1952e7ca128810fb8a11e643d61f5936aec7b24866c8bd6c6d3823c228f0efddc4c26aa634a8b6a5594e3f1e527ba5593c1c423bf0af1aa2b9edf66d6861b6e290c45d69ef32f2589558bfbf592c3c099fa2ce99364d2322f778ad29296a9c5efef2a5b62a0c29851801467d3d273d5974573af3fee0e6e9f6177f79499deec5d546317e85f37000a2782030c14c874d0c45424b1ebe7d5585b54bd9c1027982b8bce4686bcdcc686429464a118faefb5c3a11934b51afa4c8fb67fb6c94000b7f3253bddd6d58813da175660b7f756755a06255ce0635380562f90b25d72a953851653e132c23cfc8e11a9267381cbf31e4488227f14b240884e998cfc21e5760de409751be5940a50589ea5699f89656900ff3aa09d0b61548f371af07e6f7a980a5ef8a5b3168ef47a64881f15a2a09998fbf55685ff77220823af21c97a3bd91617d70592ed92b890fe8dd40c2a3c7b71609e42de5796c8fac0e36710850fb445ff0b6830bedd41630a882fabc5ae9cb48f4786f9c29ecfd55a3ad47ba1120d5d6c4ce5d8cdbe21bd531506afcc639464d7c590e82db1da5a098d357cfb83b8057681946ea9a2ce26cef3104a90494acd96b8f9faec689006334c88ae00f7f0645418d20e90399a1a1b5ab248d868e76a6cf44566a87af9e8e8c30820814232d38e99923878c8953eb36f7edc3a7ca8ac04ef97133ce0b14f10469e4306eb451fba1d30fff81e01cb88f692da2257ebd35b7d11b17eea0a30dfb05efadf41612cdd335ff22f18ab899366612f65130021204c4bd34ca276160e21d50a7316ea2db2326f5dd1c28d9c6896c4fd00789c202f3af80e2f33d540c602487326d72688f72722f7c0abf621dba8bdec954d0d25c1abb6841b77bbc7fb354aea3c5ad10a556056ede89d362a171201ab4a7f19658e50092c6ae18604e104fb95364d74cb25f0704c15d48ca7831e450f97f3c2578a05e3f94b6afba696256f96f37fea23fa31c016d42b13842505d32be55f2d88567ed6ca6171ff9a293116c812609901730ef1c366e333509d4d38ef6fa0cc5b643cbd722b740c085cfa0d261e9d13ca8c182847678a89bf4a14e1bd2be0479c38c843865c5ab3a743f98554b75217889bf551f414d0f67e9f685ee2e26217f7f63079c2840c5750da263549c40e400002fcdbc8ebbb98b473b46c341a8d59bd342a749984e685bad18adeb90690c5feb951531710cb82a4d1c42e9ca0bc663aa942ebac458c2d2ad73f3369b02a815cf3431de36a88646f442576c79a45b074d838899872a5d16b3095fc1724f579109e33dc5a4fc8a4b8e1f717080c64c22c8a8119909db2fdfa6cea5a91a823d0a6c6435a53957140ec7c3cfe885492679cb3b683d933c75aa89b797ee9bc1323c8b276fd891afffbfaefcdf0b6e156aee48b5b41af46957b9623e4e07fef3af3a894c254af60fecfb8a385072c8145c2da335222341c7a0d47e6dcb2b12df015a151c7a58c63983f053b52e0d18b291e6263eb8cadaac23c08f97e96c2d1439e1583c7d47450bd43c8c721ad7b48dae9ee8eb99dd6b12693836c82454dd90d5d6a29ea92727a6b209923e0033e6f137ad30b67d9f65373e691f4958c73b8e5ef0db1ee87ffa53f0c1f161c64c1281cea7ca73bbe0cd3732cba264af518eaa7a74ec8c98d92167512cff499c73a988331d23010dac16f122e1320e91c1c5dbf0ecb62ae7f5204cb87f3acf73f0144fb0ca520d5b00afc71621d7fee63b406b07bf0cef710887fa70a301a88adc124d332be270de5906ed349b65a49428df5537b479deab1e1db4fc3d8fffda223bf0afed0920ac73e3a944610544ca347e9667e0da8b0cfaf6c51a35ec14a6a568fbbeb59f99f1936a1aa1b386b75a8164441997210d7d05e34f812f783b63130e70346b2be8361d01851b92626586886246eff79b04958ded4135c87277b6742a26efe88a18924f7bab5c34272b251e537839c4faea08a5bd444e4f1e8dd1e95cf56fc0f3eaa40c4af4fdce9726ae51254e009aca0ba1581538052631a0121c7962814547100818241598e505181a5df78fdefafc18a8791a390ccbb80373a41c8e380245c0870377ae5344377a721810ce58c6d7cd5b8041c58f919f206458de961c059ff735dbf4edecf8372ef2f8863fc44b1f4242117b3d8aa26af7021538935d5408a3b897dd57f04233a7271b9d754ed694349e25f74026c764e38b403916013ff6bfdeaa5371079b21f63afdfa25573bb97deddf83f2c815d6e0468ffaa7fb13eb387a1fea8018e599dc61e615588291ca38f663fa51e00033ba049b9de972ea733418a73f57c808d0a6bdad380f7ad7985c7788236fb3a133656812a19f8606193044af7eaa124712bd818b43b5c06a2913725e0610909fc70c627a5b129bd575050feebce13b85bd934127544ad77f270aaa6fe79cbfa0019c0c7104abafaeb86be48eb954dafd5c5a625a6c3d05f0a123fadb47ae86255962d5f07362c3b569e2fd37f4ba3e9287e70d9531cb27d15889401d31ebf73e90d79cb9da5dafe32102617999ee364c98c68e58f653d928bc4fc13c56f6ccc9826b49151b24c37f0898499041ccd6c4edc435128a1c923aab8ede7c4908bad6aac48307a34507d75ae4b7ffc23dc65d4e0439e81492be6865336a34f23ad2c961448db4416c56c5c62faa684f4b649d06eb03d72ff97c67d120b8b0419f372d6d3bc75d2f88aa70e2d79d89638f7323c0b30188949c0466c0e7a3889c1c9a84d599a19fa28db94f933b60a950d4248658b5f35fd2faa7090c5131d78e4ee74b2cdadc3a0d7f412bed42565145ced2c128551f550f1539baac5cc3bbfed897eb55b9aafa36cc6f234e53b43fef725102ccbc4ee6531d6a070f6a4037d3b065a4ac034a3a440fd3eac53ea66b24808899357a2d45d3e54faa40428a26d473238a3bd747fa749ddeb37beb7f59fef85f58f280b4c74b606a7e1f3fe19debb13e4d1255b19dce3f15441f180eb5f7874b2b2189a48ddb572112ef6e5b6070935179b512d027d9cdc21e9a62c58501cf249259bbd804ccff03ab8b6d87c75bb280517417bc4c598d21f92d6f728fa7ecab238daa4de13a330780839940706b5b8bd31572844f888562fc1dd67095413376b54482fc0a6a3c2ee21d64a26add7876aab7f29f58b157e69d46db694d7049e4002c53523e9500244b388c5148a7805e66aaee13a14662a25a9c4a9a9d951127a2b3663646b87cb7e686577cb22a91d2db963d0aca56253d8048db24f6e82a024c9d6314ed7d37f9bdf7e29de94662ae1ff9a9f5a844648fac557f1e1c2d594e56196649468f7a0bf1420dc149984a2778620e81be0120921cfc80d1291bd360345e24d885319c1263b5738a1c428c78132a31403a539d230f78eac1c2bac04b991b315a09827e8222be8a1ad5da3cec387b845075ce21fe4ffbf485356d0bd1f49ce06cf04463a5aea36523a6a2dccf437eaefceb441c13acb3682a56a46460defee11c6e4f7aa59c61b293fbc91f4da0c0f3f62450983e1818ed39fcacc06224f320e0f1f3b34239008c0e2b6f1fbb72d9e1bd4c93e013ea91431569f6a4c0a9fea8505ebb5a1052e46b7bc2580401375101e82727077fc7b37a8a009f396dedc26e1218d880112b6a49e38fd9228ff950485a8096f8decd76c73806123b72853b91cef875dea0ea2c90bcde671230897c8daa7a91da06d94ec02199502e9b6d56beddc3868001fecdeb778f264175618ef0fbe8490e67514c178a8daeb1121bc07cb10c1de782a888668b9663cfbf6485323a3a44303670f7c8e9743cacbe407261fea1511d1e17196eaa1e39f83a0eb639c472b2fe834279c3879e244908bd1fb6315f8c039bdc36149456d241cfb28280657dc3b1f85f3b1c8717172ba5eb0d0246eaec613623d245d9de23880ca26a477d17acaaf20ddc89af11c251127d5dac043064b836bd05c13f00c46dcd580d6adc1a757104cfc6e26792c3bcf2f526f5d1bac0feb3c916b7766e5653cbcf2043e38d479c6f38891520a54c4f3e3ee90c78696864e0116bc6846802ec14680008560be2431845ade9aed9f3bf0ec0376f0325ca98a55b39316eebcbc3e24ed93f4a09e37501b17ea9d7dd1a7e54237b279f7b8c6f360cdb92cf562994ecd73676ebf7ddd53a776c5eba9c20a6e64cc575c4a14d4caaf2bcaf8ff420f10b8020214c2e0daaee45b4f0b851fefb43e37632be84ba0f89e040e78fcd4b0e2efe958d131a0dc6206ed2683a9ea41346ae69c5f38e3c6c029f11ea8b214a755259dbefb4c2998441c7b1bf6702910a9bddcfe532362bfd24476f4f8d2fc3e967d24d4fb780b2167bdafcb08638b25b644e4e7a73bfa88587b98c3f6649697917b11e4943908caca3c7d68bd93b215ccd1dd7db184de0b9338bfb213da607038802ec46251731faacbd08f0241affe7007b0da21ed6e98711511a60f4fd475ec9f41b89fc392dabf04a8203b539272a027fdc2b26332031c4336c66e530a68be02c3d82d0fe2dd141e9a29784be9d2e5b59e7d0949b1c61a56700d935914ba14b4414c2ebfa0c06c430123371dd7d0352677389c165ccf41c26aad40789a6fa7c673ede116397adf70bf10648442e5b7de3e6d06ec25279305d1e070d572d383a6efbd18657615c2ad21ec181086efa040602aac9b4aa871d45129ed3541c973e2699e8ed392228740e857abe5a5fdfc9a2c2e03762a534c4dd5e01dbfdf01c96e259f3a2864d464373a90c337a76992b868ea760a420107389bd1da15160eaa1f7f0f045f82562b04d20e31cabc11c5da4a16cd7575aec2117a6ca4091184f6efe0e1ce6c3e26f932edb572aae2962ff5f106614b8fa622999e3cd8b8087cc9f900731982b415481e52f1e773564136fa167b242e5ce3bc76259fc3705c196a37814d635e842ae16498499a4a51ad10a192888c954a2973c1cf02a3f321ae635ca2a409c706df59414b96b85f5f2cf6af1b9310df71696e8d7fa5f7aa4b75da7b95d1bfa26ecce9e1ebb941abc39a85505ae8f83cfbbc4f9bf190ed2d66b484108253ffc103da22f93fee21e8c1770171d041ae7c5e505009704a68af2d046cb0089ed338c0d5c2669e936b20d61531a0fa6323d496f29db82c2c0ff9ae7d0d7490e7a2a8ef6c60dbc836bf2041b0ee0a38765df68cdfecc064648292892a5ec43d72a1e46063a1aa88d5680fb08c56039d073d707787a883838b933ab3adf5c93dfc650d63c1074aae70594244fcf3283b272af332d207441e0d2d3430ff84b86131cc2f0c3331e231dd171ba88b6685661290f76fe30ad1de8770e4b022c7903536b83d107e7c61e3b6b14205dec78009c84df2dd93b17b992babadc62dc3e675f157a30fb631b64d04309827d885627372f4f787021807765d5c225fa1a5471df8c91af6e606fa0d31e6c056e79a584841bfd86aac19799d129e168eedf3bd551f10c8c08eca80d8e4c8ce0b38d3001410917253dc8f1f39780bb27557b17a1ddf1e3633b1c9007f8d9cf54009fecabda018885e63c961bf59f05aaf0c585f6133106f4f35bafe5646275306b5eaae020725f6a166e4d0423898733bd39d0685521772a56cce89f471793f1cbab88f6d59a1caf97d0b32633562a013fb69ebd3de60fc649d8b22852efe87df71f9d4a8995110a960d16083048c9dfc20884747ba3ff3856700bff8a085acb84bcadd5e2545a0a699518c86bc76314a40fa2b9c084bb56076f947bff96ed13eb13732b68cd121f00f5b7e553eb7cec34d933dde28b19e8aef04c303f7f546a2a4b9423c822fcc9c1e68d32f42228fb2571e9c223ac47f9e3799334b18d5e8d0dc48cd0a2aa03c481c79f32edf58d1b9ad2c863dd82c28b2d9302b02a3def0db8668deaae05ce4a614c497873e314b9497226251edd19cdce453083d45a7559cc80e6e1c252948cb81f3e4d39fe1e40f0f0715dc6b21cb04e770e5869aa06f25f2935d9a0c76ffbefb3b48daf7dc9162d179c70d842ed4046686cf454fea0e4d676c34e91afe7bbb4689ab1078a43d1b9c2b4a5c30064ad1ccdb6f38942add41148f4f1bbbee06e6d6f06795eb507127b503e54a7663e9adf9a64ce0e1c6e1041cc289e4dc0cb0ee79c39ec56dbda3251e9355a63345e2c03ac8c5b6583a4c817b74df0f2e076ca60dce4d6cd234f2654bc1c51096e3e70b3bdc5fceb216d64453c89e829c38ace06010e678d9bc68ddb5eefe0d80ad4adf17e2db8add7d77224d4e8d94f79441045c69540a4bf4182b13615ef98d569922452e17a7c8f19ff37a1630b2fffa9878a34f97fdd31215c3ec6f0ab4f0cce46cb44ea3df2861a4bed834a835c4b9e2cb60785028744301950d7016483fb7c4bd87aea84ca3a48f9693ff734b65b4e2e6afefff6b9eb653b80bab4b9f4c98e4e77e9156922ed092a07b3cf3a3fc9993b6e62daa02601688739533c08782d3a2d8bd87ae508afe9569f4982e1ad24e8423d9d79ea919ca4f991ad7dfb4937f0d2af0f298d49064339f891ad62ee61bac36b5edade538640debb446ebe62d191ceebde47ba168b959c27f633e95c013b9b09d64528ebed0eea5ce2c2018341bb29e6917be759810ace604d13a4c10ac62c26c2d4d88566262b696270eab3861b012268695ec1306cce299eb68dbd6cc741984a658bcb2b2ab7216f01becfe3842a4d181debc328aa2b02db1ab0de482e3204d81f1a0b37bd3a04f0868ab81add559a87d6671bb22105c9e5859e42e52d7f19049b2054d2356531f4be86600e53dcb869db55f618011e332395b8c3b94c9c122670a02638fb8ac76f87ab27f85cb1eb76001468b0cc0d6b253908637d8ba8f824ed17fa228c74bed50a1037f10da7ddd006e669fc147328494c689464e9f4d8249d057d0d0003c99e65206e2845af6a0159812789d3bb8e4d36787b87cc1e93b4507d45b0f9a38430750a563d969155cbb3758f2f3f66ccd04601df629d0d216f8fece359e0d06ce2c50e8c01a6bfc4cba3de7c60db7090643aac9852714b4013856f254850303dfa4e378e0763ecffc82ea68914f659a344605d8691edf0760f92473b3420dc585a31aa036fbc0e5d4cc16acba8105553cdb0f8e311c71650b2adcaae136d9a10b29c888d9ce91c6c86c6e92d13942d0503c65b4b57b0a871ac062cb0a35a212b9c013a6c0f1ba32822529e43f89d0ce27c2105a62e6819b75166f1dbd64c516d968b4fa8d806bc3d4a284a985d81c6eff641568db9ec13c590c7078d0e878c96a880e960e50cc77177e60ff76a4566e50bc78c48c533cda0551c8e8cad9476ed788414df76c319ea31ee227908141341034f69e1a992deab1086989b1c4cdcf4b6063b8f619651d12643e9e1c4cd7c6ee4925a8f541ced0391491eb38cf87100d4e840f7b8d3371116ea693a8ea100d488fe9350275814fbd8edcf3ff9cb169e8465757da5cc4980bbadede8828548e727401e4afdcbe38e1fd7cd8ad132c56593b0d93cb3fa3bd0960a4142094269212dca3870ab0fcd01e1110ff7f47b8542c03d225e04d93b42d9913a1626ef864c12fc035cef0ce08df6445d0df9b4fd886ee3713973d8c7fa262ad012bf955479e0b158c279ec183f089e6da0b7c090abf162e6d2e258a679366f77c8ba81597c406352bbe5b84305f851656c0a890d47a708dfbfb957e4a0288710aecdd3732297c5fb0db771ab922eaa49021676c2296245b3350814302c20062a60e7b793b68b7de9761b8c08127df95397c21c045871d96888fa6729e939c689c81bd8f46a634311cd29d28f1842c20a22e13c0ffdde8069529ed47159ababe69d17a591dadf74f5bd89ee3b5ab903657d1bbe70967b282ec9b5870593d2553178178ecb94c82175406f6a84d4f412a2689be00b609a5b59f5844e42f203fca829ca904189f47540f8f81d4feff4078ea6f5a189e32c2a774e1b64fb830eb17ffff081a84bf4f84f556173706bd48858645452b6a3c95bc397cc4387f883bc99d2f2ffccb1a5bd593edc90354d8fed77d16e582d194f96df2078a589d8c1656ddb182ddc912db2d1b541a70ad04ddd2b9f0171aa62d698cd5eaaf78d8443b8dc43fa1a95afb6596aef40e1b9e61fb9bf9328d40f4a009b5929e51242d15a4c66ed97258c02f60688ec630f96493bf79d6447251d55e7467e775a02892c9939583f46f3a8b3512cee61762c60d248f49471db97c58c94a95092a945ffbfac10e03e1848e5cb6c098820e1e2828ff688b2eadc6280328fd95da90b369e31936e88fdc3ba5236e46dfbff56a652a3240dbff3ae544b132a358cc97725530dd680d1e9d5b27042efe307b5bdb8d5ae9828c726b226953dbc04441500b836c264d1829f784aeb06f3592c6ad78d86a7c9707eee8247560dcefdc4666f1dbf6b826d094e86b47388a311107f62a32bcee38b8a6d11797d18ad0b93e8048f3ca8a66dad2e8c00a55bcb871cd5657b4e18483d667ae942d54509575ed063a5f0171a3f20dcba31145aeab6f3317ca26120b392f052332472b94679a3a72810b2e0d20daba3cfa58212bfa66e120086dff31e869a3265d6377102db4272887fa467e97ef7d93a6339646b81228c5b8ff91c06ddffc37d36fbebf52efcc9c54ff3b769cb440cb77f4bbf789ef94bf2afd2a6e54d849d3ed69f24a7f18744f05f480e6d3c8997c8b6492baf9d1ec6235fd78227f82ee76fd56fb84f3d4108e15762eb610b6528df74ec00a9ed83ba6f999334e88f82d0311714cd4df54a858154826445eb1fac3c3153b2af48960164abf731607648a71752928147c0c8caea2c10805329dd6ec2210dcbfd160f19adf095d338776e23cfc735460ebd901f19a9fb06831b6e8bb837d1848eebcc9bb5598803f267af8b81c6ec5899da843243874095c938f6349c960e41375e5701c2a27da5a7670c7efa44f39c3c47cd2a841c168e80e078a8018032c932868bce2466117a3e1dc01670b4c538ec93f33033c62bc9fe730773f45ee4438d3366470ec5e7fbe48c01f708e2eafc89fb9a40df83fe9e7ea73f7c989bee1d8d2c832692aff57fee7277b5d8dd4e5959375ab1d037e6bb1c939fa67043efb3786c4a9c01a643985b9e56345221ec93b18cfcb95458968af396d931431ce7199da7f96d017f723b816ed2cab013fd6096898d8f3ac9c1330104d9d1308501f1c0c315385d7d0fa732cd00436b379505bbf481439073ba471e034831c5b3c3c5e77bc97b2278aed67e8846009b1fc28f81850f3466571b058f049db966057ee386d32a64957117bb14acc29ff3187bf0508eb3f4f6a88301aa3cdb22b272a32b88249425e12898ada3e42057e1908439bee222c94a7e803632c5b7cbdfc6f0f77f9b293936c0181b248f47da058537a56ef5bf6e7bead278aa944ea55ec28e64ed2543d0469ee12bc3c9e34a0b2e860e4d5838f6f0860e4a265607db61edd730bbb092f84867eb8227670e11964cca2f627867180ea1ca2b0f00f2a030c2e75183da438e5b201f203b6d641e3982023729f044367599ea7b27eb0807f8b4aa8928650b2ca5ccb513c864bca6597f3c7ca8c1fd07112292dccf4c59233e62ceaaf6b2e82cdfb6c11ba57c4432dddde335396f40f2237886ca4fc14d0491bc5d44e9525a78ba48f3fe09f47fc2f83a5424b462819d5f0f0a7a75410e6200ace6096f6354035cb6f3222fd42011b6405c13c64159c4692c22d28c245e1d4f90d3ad4cdfbc0d0d8e1419b339294d138f4843eeec3b3a0a188e23da8a38c9f1bbe853fb5a7448c05d06f129d3a5c68c07d250864d90cbb329bbd2b5274152295c02c3ba0c059e150e07a5e197b4d6d43dc0205de8b7886ae2923690c5071b507f05b202038a4d2040b6627f049bdce6300d624b76c8ea869211de2861acfbc1cd86415d576aa4b5de0ae5829c2a32274882c4c9254bd140a2a0a27281a3d3ee0c8cc1a12c979cf8136997b6582b2a883ec4bc413e301aaf2ed4b60f28b7c9ac4d83c610cddda62ca6085d7e046cb9b2ea3040eaceedb3d63ae1f95a8728216388f810d0d4c36cd9c60c5bea456d2228111e5559c7f0cb0b2e7002357a6337b443d8aefff32e991d3c7d2de2940caf4d1a08dd381336dfaf44c154663397d509e29a7572a6e29a8348dcbad1ffb803ddc502af10cd3c3bb192fb0f0d23951e20559a4fd0f61ad76bddc557e2aef894f6ff913241fc4dfd612e62bba16bf75119a435e742fb6f79c2288cd20d0f3656fc460d231845e58d1550c9c2bc8d57e6d3b2f884c5648629b3439479cf45b77420c1df13182261c1bd424ec039a484cbf0913648c42c284df33e3c89b34e321a0aa7ca8c0c84b3e86f3c90b0b27a3e164fbc5816e80b534dcaaead3785de8206a4e81409797bca7808974c54711e8c710439c4ca73c63d7bd5433b2137b35c6184038c962c845f4e4610e0128a20beccdbe708fe5fea15b387772898352baaf4649b17501e96e3fdfce30dea8cedcf66cd8537e1156facbcb488f1dfa575c2091bdbf39fed5a7900594e4a7439769e941a53959d6b63d45389748c7fc85340e88282582849728afcd1bbe265d59343fea3b0a088e4cfd6442670b15261f7ee1fcd504707748200b4a1e0c0796f60c4c3cb634e326bb2f3ae98b0970db9a4ffddc8b1e13967b3ef89b1491373ebf967cc0a002462318416cbe878e51df8122c91c52314007808162d093af5b4810b4f0aaa782069457630bec50f181f74f81ae51ee6da57510b1baa0a441de47d2186fc146f328a16aa9a506f8827525ee4f338a3b869666e81d8a4685e3b5689fd659e84ac716d196a807ec3a6f387fd98ee381db40ae6ad1a129b70370605f1eaadf018990795c015f29a4acbfc1b19294457f134a39b21ce6619cc94f2354f0eeb61fef28742b2e55918c67c185db333693e538ae40b8e78e4b5085beefdb2c6d17270810dd37ca4620ec09c88900ca5f12db0ccc0b1e22aefbc490999ba689473491c6d447b0658338b403e99cfb1678a819816602596b2a63922cd595b217eedf9aeffbc5f37ea807b24209efef611d239d09ea68049a311288292fa0a6dc23fea45d490b761320bd81f86600ab73e513e403c7d533ae130f04656238661efe1395137d18a8dcafc862d74739ad0f6a8dd93ca160ce9c7918dd10595596fa15f271e2f4da6efa61dbbf9973074d03e7f8bcc49e8d0625c9c91d9cb3a48d4ae2abf4dd284b0c3cd8f7a7c8bd1e8f2f0095cf83f8195fcedf08a33a2ae81118a0ec2da55ed828f32bf5f0f15c41bccc8a40ea03894b6c83fa6c232143c023e8ae2fe7c8b5fa331a674609d39bc1ea176c709f6eb4d62113b5e328cd28ad9440a39d5ea0894c9d191ad7cce82a807220918b6b5a202175153e1e32a384f7cbab4d808645e6cee30e33badae0595e3e4986f1c6f9327a704d48360a7cbebd37a2dcc7a6b94597852e550fa465906e3acc01dffaa33db48c828f1eebc978476ed926d96b80e03602171cb982953e4bae405c935c2ac83a0396ff11c546e579718f0c786e680d1d3e39863e95ff2505c201bd256838298add86c101f0e69bbdd9cb937c3b2730cd37d74a698769a010cde5be8d6b6751751af77bf91a179a0d3c82380d2c23f02ff4862ef25b54157dfa673b0047180e2946b234252c5bae80df250db5d714d414799ca24e389580b0d2aa8c5087926f6725bbee6dfb2409954a92d8cf2a4d494f1c57d78fc5a4de98cd4d945eb8d6ca8a10ffc2372ca6076ea4d2b51ed8d105104c17417973e77a5dbad64b85cd3f7b29325c9f0edb8d43261184851b2f1d4170350ad214e8d9c9163f133306d7a00988f3ace77162d849e74930ebdf8e7769e35197e5e0d36dba1aa5c0e2a886b9cb6432ea5ec136ad2df524bf34be62a821940e13a04a8c419fc8ae7de8f0cd4ccfb47854c7e497e240025cc0c5a672b822647011bd9b229a3bc6ddd42e60ac275e1c94d2204fa7d412b62d90c12b3c8c96e43ad97691e93a3fab4231d8f144c0156630e004348a927bb6eb0038cf67d747df12ebc223cdd817433d34988ab222092896a013eef2257e323b15015af5e0b4a007cd667713ec040db541550cc76f4e0e2a9c7eac83efee77f34088783a009f81924a6f20d975da30c8cca79a1ed8772a91ff0c2c019405334c417ab2e858332f6c6d31e73b00c4ca08d12abe28989300591a25620e0b7492b90eb29b24a1d1c22a9b259b4c74ddc9f979b1a625b19d59d9cbe6516ef2bcee114e9565c493d47ab63960e7e39a4946db0a903927093493ae650d9851ca6ca6aa743caf56d271f738ba402982d973f6f579bf0f150d47fbe90aa2d52b8afb373e0fd34e99b859eb2049a782cbd95341b3c87b237fa98ca36cdd1e2a55353a58e526ebc857f3e0587e3c34a72995ce8f50d96be39ab4612de0b507d1514ccaad645092181abbdf68b1d9235acfb475c96e6441b075d5782dd52c8a2d71eee56ac175bf1c4bf5762e6eb8dc627a9081fa3c929441d337573893a88e3cd94f1a722129032d0be6e8a47ebf2d92e645cfd885f2ef8e0d53a6e315985607cea0eaad120ae56e3870b7582ade5a82ac72222539bf17bf4fdcbded1c3947a6afb685945fc3831670e64e131a3c41c10a025d89dd7724625b3f174286582ea741552c37fc1b883f35fecb6b697487adcf06d0d2f606dacf5198fc24d7c88f350fbae71472b62e3f5ae1c323d560dde4ab2482e4beeebd7740c8521869ce9e02bdfc4ed3522424f6fbb74c04c1311280bf4dfdc1a8088d6b83a8847484b0955ae54342aaaf107aaa323e18e98b0761e0b3c73c69ff0eecd3b4d66d07d42ac503fec5b35789e094c627ba565b57e95322252791322252bd236b902a369549922e711fafdfa94d7b712223138b2ea65b11ad49e74c04fe2fe561e29a0799f251119b5db0d91f18a30f4cd8c603fba8db6972bd0cce1a4d60ada3874e970e75c2a24669c5f0047b6dd7553021e8df91eed07d44e6560fb442ea59670701c919741396fdaed35d8a31e8b6ce38d09fc60928b8403d47027b37a52668389b37b7e12c77742b670e6742d7d8998b54b1d2ff2011f29e36ac66b8876f030252ad40596e9a80f5683ed03827a0dbe0b36f412f4e87547d123f5a14eadcbb0b0d0dbd2e56d18a2ecd2554474c2c048be2f405084b460fd0ac4763acbc05aab9404795954b76a7461ba6f6cb23bcaf82c449217b7a6e4ba3633e3f2f2940bf08448a65b4d26bac6745ac15144310020277c7fdb87bc4801e09c613448f929026d12384eebd7da9c6099e337047e8a9a6d1fd9b993efee7af96472ed4a66a496e376ca22f2775e689035808080ddd908298d7572efee354bbc7fa0b055c3d18dce11baea71e4d4c566e09e0af239d6a704581211ecec28ce9b0729dc2f1cef799333a2e8e0237541c1c4fe26355a8a2c2de745979d77ea3521552c83181a15b1163f0ca542be7380ea6dfa3538116acc9d48a69cf81bb44a70bcadb67400b49cddf0a1a6f9fbfcbdfba4abe33571413da470534a686267255535d9314d9e6de9019fb9b7abcdd2ca24ff76aa0b4b305d0fb53a9249220a24d7c754a948a5c797cdbe2df661731edfdaea20d14f7613beece8cad6023091d7ae30d35e37d72255824cd78f951ddeafe4d2777c5b4afce3f491892d5d0e52482a1d01033eef63a2ec414b13ab8415f704014f174a6f653a69283783db67e76616b573694a4fae88592791a09950c947f67b58e3a1e799847e9ffcb4a72d87e8190ccc672da79076f264f3890b5fe113e5c45b053f54a2489e61a922b42ce807c79de010d8001d5c2e27f768d50faf9943b735fd708427ad82c8dfb8bdc386623b950c6fa5ff1c53770e47ad2a3327049271e62ae76e01c195f4a6f7372590b0387383da09b025897d1913bfa2860846f60859beafa68aa8c9b1389d4e674288168b5fe17d25d3bb400bd6314f4a60c946d0bf8d1c0c11caff0332bad8d5e6a9be6f9c9e74d3bdb30f7b0a893fc73a42b2fcf662e9c6b6dcd1e9a7df43a033d4c5719819f95919e997a28fe7d40f8794275dafbdb171418bd85e4df48521025abf80d0bcd0dd445779a0e08f44a71d13b14b341f9257c2227da2c88de9a0578d2719ba717c38b2aac6224b0f3c7f3f87219cd9218c46964a305d0834c51858d2985f08b9f2b815a7cd3a7edaee49586d5247e5923637d4040c5fda43ee6ea8a308a6e59d5181659e095ecf45a0529ec59076df83b611ce43c2929587aecd4e225e1197413af75f47fd562190fedb67b0a1a88d25c01fd9c4d58b6b3ceedce7d061939a286afb2ef4dd900a5040a13725b0d78bc794bf874f384596d0f41f1375b836427338364c7ce894599b913caf9c97887afed515358440f07abb4e33c61115f85e9d980d9f5fb7218fdb16068af0e5601b45abb937fb1983ba3604584ccc7a388fba79d01a8bfa3fc603d927216cbf97b5da1a861d4f04db361ce02be6535905cd6cb6f5500be8a75ab120d4a58ec7bf5acea0055dad1991965d05df04e36a93a8766f8d3e3dca7d68ee855483ee098ff509da173c6f4b484caf6e4d0717e29fdb0ac6e6934d7514761fc0fac9508fa821e146be63b5284dd5057a579e30c15e51ebdaf5b07575be70b4afe59fdd1144ee42fd86ffbeed2ef1768ff1948fecfec29ca1189d163e150e11ce5b1dc6ba0da4dbc778394c51e7216caf38b7617bb54679151e6d94f139cc1eaf1dfdf52d328948a5820f391f0551fd0e4f9def751720318c9c4d4586dd7498b4483528c849eec5f4ef1e909645021352f40384b3e91a9f8ed42f4ba36d27435085432007a8eb776dcdd15a379b941b9234daf7219cb78cdc812a4b1bf1bf1abe0bf46619bd40c8cdb34e5c2e32a19df63328dbcbc68a93679166404f19252baa32d9d93320a593087de18d3835092b1f6d917fe25c85ca97aa655a0fcea5db670201dcf7247c528adaf8a8404cf8d8d0126024492fa09c338d24b0397e71131c9a6ac41b759699b4a510a0d7665a3037e5fb7ae36674414f0c318ee2cc29319c0571aaeee2032e8bc756b4f285c4a4d6d99516292484e9d848ff7fc6d9836192a050a1bbe2271b0ad0efd6c4c327e7acd1a0696eb7b97ad4e5dc011e021d4421235e7e23e034fa40e52ea7626f82ba46b6502a6ccc4e1043c3ebba60f056896b97d4ed1152039361fa72357c908debf813fb7dfaa9e2338e25c5942d29bf4ddf1a2058dc8dfad82a16c4ccf2c7e8ed87560c715ece18e17f42d9cb49dd5a630a304142d1d406502d72812ded09a92a23fe6fcd7ba6b6451848f8cd97bdcb1d8a6c4b1605b596aa3e6965bf0cb20341c01ebb2219782b110b653abf32e93e14325825b5ab0217afc0919a2e5ed85a061437b86fc784b8d906b724860974434894b7cae6c13329c49414c44af2c38976cc6796d5925b3c7b9653b3e906949758ca08a7f68c1a2ff20202d594109498f3ba5bf1a4965ed63056220fda78ccf034f404a17b9af534adbea7e475668cf242696d25b224be29ff080dcdf4a190bd3ca8f1bc140e86685638904ad2991fcb98b6708d65607ddd19ffa09f5b1a4df9c0f26411ee7bb89e6c94bc88d778529377e6424ecf1fd681b1e3f3722c8f381cb2e3cc40d0c19094df8b72a3f3d6424a1de8aee09b3ac696fcd3073ba47c3a1130179cf63a46246773154ecad699716e4e75ff79121422d429e36ac8d46d591f99fe97b6663c1d183811560b4b0f05e848e01a16086069f812eef10f79ac8552712d46090421f6f281c8e31f497d63652b7bf397287c446125a6fcfc2c3230ab5ee66d19c0dad722a0e72034fe19fb9161dfc6349922fafafe0c0a3360f730f1d88e397f9f1712d00a4632e0e60a8d517915c1a5383d71c97f6bd2bf698d0dad0fcdc3d94beb8eda48683612145e0046051449c2f2ec48e6599c017c68ee15e738e28b0403067b7233d4227760ca734a5309983ff0db5c288c45333d25eca5493b6339784295b218f527b5e73a0083e1c88acc54123b8a8d5b98d67587b4072127cf4e9a38b48403c96276b461b7a9647855d75a7bf3dd35b10489e54f038b1bb58f271a88255353af686eb270c88a40b278be5fa43ad43d4486333e4f12e0e0644c2c2ce867b45e7ee62122391611da2e582f9744b6d6ae1ab2466ae0b6a70d7b873deeb734aa18dedb81b91877e398e081884eeb71c7fdcb98493b804553836a60df378bdd279f02c7e561834211b52c484b7a3a5dd1ffe640ccdcf16329d32702e9eb6fe069ba6c186423451e025819161cd52e0cad947c6504f4cbb47ce0ca7c1bcf0483b2209e50f81bb9c43e08b190c3a87c4423b72e0d50b57c2ccdeb9410943fb6d84101a0639cfaf6146d4600220028149de0b1e99d1637767fdeeb876a65d02fa3f9ecac28da3cf28b3d0a52ef9eea74a7bdc14117e2713036ca2d7e9ed19fbcdc4809dca8b5ff52800dad768b3929138b5413ee6471e9e2352f56a2969cf7e3fd9ed848e4dbdd1dbfc2fab6a6c1c01133a20de2ade601333f340b0cf68a654676023075dd18c8b3e78bc98c201febe4607402959e3735e9ce3fc084af64e5675a27a4a47a68be063a9e0eae92f306e649103ca9ad2df412e4163ad55aea0187a0c423ea7db811362708e0384667d88bcff4a5b84bbf30e4e2cff003c6c35d909a19e7bb0c08751b13381e30c6d145fc28020fafc4b5c256ae921308884a283ad00b579299849bd4cd7f96c77ea7bc1d44765a8612ee30030da9aa675e9fbdff537b0deb6b4ae42385bd37b7f46a002eb2397b20c348a55c1ea3ca06195b37a5f0085c78d2a83305f94cc589aaed3344194e025145a48a53066023af0a302c2bf7ca1093a82a9b6c7250387b3a0cf813a47d6cb2eadbfa95fa947b1005d80b7d2041088fc8401098679ce0cb873561a7b0aa48181eaf83d64e37f67ee9cc781c34d4759a761401361c288b072a0e3fd6c6274e8d381852eb8777381d3a61d87390aa9711edef517457243e27c9f7c92601523827fd3cd2406001de53e91056f1e58740fb43ab0a9528863a5b356461569b4a8b7ba07a1d565a36e96a8cc190e7e46b82cfc614c732e57be8ba81dca4b795f3eb240c85b55cd631fa62dbe0c1a6e23857aa358009bc56c1bb9dda3d32f248fc2faf4edeb7100eab6f4ba56a7d03cf81241346de746a3d753207b2a56a41057cd24d3868380eeb18198c4259bc8ed747a8cbf924ea4891a7a1670ff0c3d14b9fe4ceb5247db6f3b1b344ed2b3b99c0f7b058077f7374efdf63ea945bc2e64baeaf1257646ca5d8e62fa14e09c559be9c3b41b6f544bf0a493dc0b4657c3d3963a41f476e02c4f60e3608bfce81ce722f39f2c6097dcb76444ef79f8ba102b7b479030d38586c63222bd0d26be8b5bef4271664c7f4d8c4fd38f6d70dad64e4609c51cdf7a3b9ac801960c7c3a92d4347cb5bb7ae5d2517334250b1c00624adb6b9b2d5476a78e10862f1ad9e17617ac423e4ea7f4d11547b92983ce8c00fb05756df93c8fa4db4681ec26ed56773577d81d040069f4e03550bb0e716ea7067a1c9240319b68b46ba76ef362bc109f005dc8d2755a9074b65a955d80d6a02720dd966a272c5ce8592b77f16827215634c783a53e07b76b4110ecd4ac6a7429956e0fc83229a013d57d46a08d0db9c049cd1728840bcec5c350a25e3f044775d4293e0c8e3747cb28143fe85bfefc39c622c27b9423a8ce0f411038f266c4be53dbb23c798a059f655704834ee2bbf184b91cee7b23ea51f617bfc9671c6ebfc1345fdb3c8e74c5cf936c90a135f305040e65d0411def2e04bbfa1a833c8032143584633e0f93561ca2c321711ed5fc4626de39c1f4d5e2255d91334a69c607e23baaeb4d4a40162bc1d596ef3d5dfff109ae65b0edc192b813c8144053437da4cba2888cf2fc868082130f9439fb1d43c2bf1c82880f1c7fa7068625920b0325676acc681b9441690398b521562746e584aff3c6ba576d4e9bae6a61885b4739bbdbfe8bc963cb192dd052be2abedcad523f7ac3a92d3cb97f56c69001c4824766af40d9db80ad7e1334a604aae983c65520dcd5261d869283e570c8918b610f3373dbab33961f6d9ae43ebef99339c4c6bef69bbbc053be3c282cac0678024786e0901dca1abc4c77c76efc91c535c5a8fe7033e3413316b91b51ef4608914608d9646fb977b50c580cbf0b386d6bdb5aada05a6854b837d69384578feda9dd4df0a1664dcabdb17e51b5689341f09be977ffd12116c8d3b4b8fdcd6853985bf7d54665972f2b6a52b5f81283304fd9032c7d39cca05610d7ee6bd2b6368615e146f02c14d765454dd4b232bd94f2c90db19ebdd8424a8b74a413e58e23980beb52fa3429aa95a21fedf4694a00e0790084010879abc2eb9ee1c6bed8fcbe5827a105440ab727e7baa4d06e6060b7659f2209af51144237350ab7bbdb261180ccb34136bb9de2565c02c2bebe6250cf92165bf3f355b04d5c2e30cb284d18827dbd6eac450d0af7190951f25685eb0ab1ecab134f835204d7108c4004572b8b09c274a6581d295a1657a7777c279941ce29868b4da6243864fab50dbfaf5db67e1f1029bbe9694fb8591e41afce4a889dd1d3319c306267f47cb5d6da755be8ad485d4c139d137b4d48992e264aceae8c393d2742acaec7e6b1eb9965dce45edde829d99e29905125a4849b5ce801a2f337a361915d958da6caaef6ac4bf5daaac524da2abb1aaeb7b778acc91597acc6d294682c30d46a85917eb51b105a7e87273022e390bfcb29b9afb0d5da6a6b88b58558a49d1010ae2de1ce77d3563b3f6db5f32369a7eb691b2a767e5c1f43ac944d3ea2e6d28eec516f2b53ed3f5a6be5940db59dcd6a5298e189d69231b4c34c6e373d2bbf199b79da13eee4a670c692dc79ec7a72b030853392705bc8a3e801330be1827573648fcf17da9d9d89e708c68591cee78b40962d15c9c373842f7c9fe387c1151e47b096ac3de13610a26cc5e0f2fc666c6c092e909de7e7419896c1589f262ed92a6354a9b3677f406683303a3f339d206cc40550f3402f70ca03acb65456c50a045abda8099484557f1f90275c900e796316a7451c3bc5ad51e5c698e043cd4eb8357293b690f5944915f985bcf122d3dbf0e658282d6e30d84a96519e50010c596bc26d5cb2394590aaa0ca568a966d8eb5e2de9c4c62c28c11006424fa33cf2f48961b2fe17ee1a2624246ebc66565956855f4cc7cf66a8417ce6b0a4d0949aa509496d9298e90847b0424507191f0e4c9132a90702d1549d08e509f04254ca1049cd72de154a119e1b379b72389afd7103c1009f54995c2b337b727f1f4afeba615c5dc41c603cfdee0b6bdc10d6e0a3215cc1578d60757cb47542710c175634fe88759bb8637d81558640182b708d705c59323b832c70b2bb200b2ccf12206b9db8067c7b81911cf8e7129073ad001afeba9c9b36fa2b8d1422bc29d345ed733019b24cf7c44ad56f8814b6ba2856e02de4c4dd515be50a5466fe5b1b2d604148d96f4c973f5a9499f40a7d75eda933e7dac805da1a1d079046b518837731664cf39a5b540843b86585b18c225f55013173421dc6eeed43cbb825a74d002582e0a59ee85339f1e74d1c72deb701dee777cac19e6b24f340ef3fe22203a8888edddb77738656eed69883ebd77df420f97b8f7bf6eb39bddacc525ee03f12844eefee15188dcdf09d0e1f4deddb70de696380c04883ffc836ea1bd17d6cf01f7e0ebf7c3ccf716f7b0859edd42af0bc7ed1e1ec1e16ef83d5c7e11b8b798887b101341e3f61d8e1b2e02932fae2dea701acff1fe82c89c06962dea303fbac5a36c11e63b706d11068fa383fea3c331892cea4fcd0342f481bc51d10346fb3e088f48bacd6bc037b3c3bdb0450f685c373c8e449345f4914824a2dba7f711be39e1d5f1baef701eb9dd863b9c0b4721767827fba545a3d7eea6e8402cb8cd83a2ffd0e23cc8a2dd5094f693487304ba26114c1198bcc3736c5d8ecb2f88ccb6839579779ddcdd82e10893c1efa2973c5f7283b0e837942d8ab028cfd19c237c2f1e6fdfef392e3289f0083ec77f50302c029385c8a273db8689b0416480b0efba656679775d7febcf865f080490ce3b885e8083e19844ee6a70f298e3225c042677456032cb738c355bb74328f30284638d929ce304084721728edf1c29f3906fa687773df4c0230d62c8c932d7f1fd20f3c44560f2096696b98e2f088f3488410a59e6a90f885196f900c21c3a4299656ec3be3a7dea9ee3913cf1b83dc7bb1cae6b2fa545da791cf875d8fd47e71fddc984369c790bc5ac239cf9c707446799df9c3ee5a09ee825e7c8f1da282dc7877c3339b0bc9395b59b9148eeffc39b14e7bb19ef3669944cf5e52733d8ea534f0cead02183b329990ed8d2c902c04cb4d3834bfa14035a01e16d21cd77ca07fac01cf01bb70f846d9bbd3df8b1df6110d6229863df11b027a2c19c3ef5b6dd74ef771dac4528202c088e3ce7fb5d28f304be99ee6182303067c320d6cd993e18c2835b7302f09b65143138f941667279089f4cd943ae211f91e523b2ac806f460bc20d001eb51b0d00a1660ab51b1903858e1ba2e8b82256c5a7200941936246c4da0e10aedd7e9a5f28f4bb24f43114859dc18b12d64b9297558780179b16735dc1234c5699729d5df8c2921bfab2b442176e90a717c0580cf48a79dacd115f4f70acd8ce450c8c0ab0640b5cc0ab17f046574879eb0ce5ae3d57a6d77ee0835be7c624db3429eef7d026c363cdec3ef1fc80d87fe0bfecc337a6b52e0f5a56f286495a0f78306faeb70f725d56b48893e19480c8f27c9627cea064b09d3bde182c96c71b2b6519858a236452b29c9c27385fd0bae0c0f0cdd49fd1f3f9a0ede04e0d7823181100f4a9a9908ac0452ec212b9bdde3ed443dae92e898b16493c2dd2aeebbacf90c4458b25c819953b6506652a1df6e685a06f2a6e9da9972ca318014a1796c8236967769f21288b41a2c224fbd7e1ab03972432266b3980e2da572abf0d03699c2dc95a99be5a2f402bd06afab8b11868150323d3836e2ea8278a9b9b9e307467743da017ac3b63a24651b8aed1a8493119b3c50d483c99f48594e902290c201a0e2ea827b6ca94b4c86a51bbc11d493b19eb8353ed7685c08087015248daa1261e528c9aaac8981e12193286da307153520e6024b9810023890d999e9406b9c345454da432a6484f3a6349a6d76c707b039ecb4c31d16e93dcd596d24eea69095bdef29a14a90a456537659b41128fa629b917c464f594cbedb76fc686a268710c41c1412b4f0fca0d58d685b4932569315b5d970d65deae6b3c92fbd3d5a78a993451d222ee8bd1a7c620d6acc10561d4d465c0ebb049a14cf55094966dd434bff07d33764a6d31040d02cf035e07be957be0dbe19d07bc0f7c332bffc0b7c33b25531a0dee0acc698ec3fcfe7b8956a163b448bb1e5a250234ae436876b33cf4b1eb09e52ccb286038c26461d9cef2d9b66eebbafb207387bf7fb6ed2196b3b084ee07048d6b4f5cd1c1cb6f071c011a988822682e0591b9af03d69eb8dcbd23909878865edaee1dfcfd1e30df1d84d2a70e9f80e6102e6de72efa76fa04ca116a1a4ca8c140d0e5d10b81c7e5d11b6223e9d0218ae3af9645e0cd7b2f826f66851369acbb7df46ebe9923bc1b41c28896bb9b801ad1c24f7e80081fd161ada52dd19adc50c3d1acd832176aae1641acdd6cdb874750152e7744c2c689cdb923e85543301681c6f33ffa03c2e2525d25693c83bbf5c818256e484a9be8473092181f23d39b01cb346c323d4887a26483aa90d227f0b49df3c40a624206431866a6ca6c2abd26834b0326df09dc72d783f6020c4306ae265f6eb9a033a48c1683ab25b9a01775e27af372a0950399a3cbcfc8cc3d90a9c1e03e74eea5da53cda8b11e6f35a7c79a53bbe94e6be27edf3e763d9a8b45461eb597762375c070843c6e578a4e9f6896c712d464fbafbd5a6dc5a51f64aef741e68a69b800892cdbfa6d7e39ab3bde1c1b869484a19bd04a186a8596842157187a85426108a7458a432ced05576b69372d327147d00bf4daee75f58e57efb84d7abb1724f08af88080ff2611f325f87c9871c89bb5f7a1e271fe04b3267f73e6c34cb22c0b495cb489be23419da41d175c0f733637842b4fbdb11679e69cfd8a82039b73ced71657c0e0c585610cf4b5c42d6d9714f4aa3b3bd6da915425d3cf6bad7d89a1e7e6e490a1b516dc31c4a22b4d890fac4fe35d6d7d025f46a61f0990e50da40c7d8835cb2066d963664d757b829e58d1a20968dc0e0528a815055f7d3d8137a9702515aea09367ec4ae9d39c42852be04c1478f68c6b2ff364d50e842d6991c666937666bd85835831c98c5b5d99be6762eeda8056bd83d53be82b26f190765a7cc305612dc260dbe49c1fbf3c3fa5e40e8f30990b6b8b1ed895a0b3d71d3faf4c7f84d7f5782cef0609cf967165a98a1351866dea08b66519850a2a642f4b2b6cb1451ec15eafac248f35cf31c4e2f12c195e70d96b09432cd68dc7c6a05723f1c6b8368928656885ca70431223899a6f884cd9b8a8898658a520f3fd89e725c5a138a02ca33c7182136cf28cdd4431956092c1a889e6c01ad39e31b2182d865821d63882d53c82c91e5748398a224757c82e4f98d12275b159b9b0640ce5a2454a777694a8f1ec18d79251e3bd749eaa77ccaea7454f355fffa3b75c49f7545d4f8b6634b9cf3213c9b339f0cdd4cf0135b9033ab908a99389d84ec407a4e59d03571645c1b072c0e386f178433c925ef0785147e371bbfdc4238f3cd696cc3f68cb1fcaac8dade3e10891c8320dd27f348d5154ebd0aadab6b1da9cce706de0d89637222d7ea0c53a43241c42454df5f534246286dbcf5414b549d3f63a5a20dbaf7078e2da4a01105bb698489fe8b7d70f617bbbddb62cfb1af65aac6f5c8498eb9216ebbfdaead3cbebeb924ec0ea29d2339b97b0d49fa5c6443ed0a67a4d8c9bad5aacdf70a66a510be3ca1c1988815671b37381d47229512d9714057e14730b8fdcf21f7dd2de7206fcd027ee2d9f12f5839aea5bdef296eba0a8d05bac98b7e7adb47ddbf068afbd5423740949e167de16d1a1dd6efc05190d410b43c85cee6fa6854638b31c8d378f46a3d36f66e4b55686dbb9b18a4628f3289c797e22cc85594e8bf52c6106a5c5fa953053c998fa5098bda8a9fe86598b9aea4138b91ecc5cb9fe0745654a48537de5c213b9664d64b0163520dcd6a14d29ead4545f4f8464c6958d1283498906f4c1aaba932a0581a4745ba4a6eafd47d3e02a41c70be5d5c0a0b03e352652c34ae073f9494052d3075aacff7091eb3ff55cd83c2dd66dfb244053add3e4f68b88f2f6ae345c709fc7daa262b44eebe8d018add23a3496ebb5d318ad535aacfddaaa98bb364e36dc3a2df64eefa81f49f59916f7f65ddf3b9dd352fa34561e4df68c926704872babe45aff813e551bcbf5b53f66aa53d48c4953bfca367b6e3f77ad246a8d4da2d6d024e6e47420a1e33653ee8f2e92d239e9cdb5ffd1f31b5253f6f2ca98b678abb5296ddab4696bef29fb4defb4ef94c54792a0ac9e4ec28c5f25c395ac1695641b6b89ad8edde91d9f7768a77c716ff2fcc76a715e8bddd1eaf4b43a1dda9db6535adc696c7774e49724cf6fd5e2bc8edde9937c59a183fcb58e1373327eadfcb5fad4b73d9f6b3636b54b2f2d4e8bd60a32dcf166997b3ed866b69290351ba358e2717b591c8a9aa9531f96672bcb77fe9ab4f8f173e5f9aee3fa258edb6e637d9a335b31b41b6d891dc3f26836b68ab6d2585a14799edbdaf2f469b4395472373bea4d29d6cf592505352c658cccdf1226f45f8ba228b63ad4343fe7e4a2c5f9799b63a5bc27cf143fc8a3d8d336d66d631fac6b374627618ea8777687e3cdd9266366ff68f0478b3ff48e7906f05c211d4d9fbc16e76c8fa64f47cc790bf4e9f63cbe0e2979c89fcae72979ea4d77840f520235955dc28cb495a794921ed39b5953998c99948aa9f9ed7af4a64ff4f3340af9d174e7378aaa3a48a74a8450166d515a77d0c9035c994514666479c50e17598b2cafd861e5db274aaaac9c5d66e1ca1946a2b30948794c814aa5cafd91c5c72765fa63c8cb5f96d9e727d277f5da3b2d1c2dce3011f59d6590ced9d84daef6ec1a26a2bec5ce9ecdda94769d596e3bab183a0933e298602b0bd8125b6ded422c1016a025d4ae076c6d2156379bb8348fa0d7f7377167109913cb21fac59556c0e295c190897617154569dd3f9b57a54f770c528fcbca2589ec313abd4b0ca48f2f66469fbe0f8c198093eba677b76edeefb3f3402d7266196ecd63d77343abd54af485019e018c8dbe18780630f6c55cb708b022b856b207a8091dd0135cb8a97365e70b69a24f834e4f578308ae955972b91a6c592cbacf15364833c80f06db993ec055db159843876a6d153d2c7df4e561e4c93e011a4565a91acacf0bdf0ee884a479045bd4e586a2482e35354ee3f21a9faf51e3257c04898d9390384152e32d35ac9b16ebc5e5a50751e32f18c9cb6bbcf48291906ee3354a35de722734a4dbb88b8bab14ce970b8eabc65b4e63e3a41a6f7910364eea5e5ee3729ad25d3e318dcb5ff011242fd7903841e2f2ac0696038395e66f5ca64a7f79102ebf8191dcb8cb5f30122734373012ed2f77c1a579e4081297677742a3fde5255cba4ccd9d1be1e429cdd84e699ec6e5d9695eae5d7ea58987b83c7b102fd7c880e3c6c7fff39d03c6a41d1ae2edf806b661e3356ebcc311ce1469e7852394a9971a777979c7e2b2a228ed301756056360156d0c77dcc058a6d3c73797d1a575808fa498013e92aaf4407d7451f170619d3eba1c20ccee23d4de236cb90142d25dc29ff05138ce232cf5e58f3e4028533e4299ea11ca94014299e211ca142a94a953075a51944b8b9a40ac4c5714255320166967c3600e4c66c7891517b3c12c72ebd8716275634ec8d317c66dc315838bec75633d2f500ff38b7db37b12e0035b200ccce2cb229322dd716a19ac6a67002965fbf841ab08ae03b45aad5b85db44194e6454dced96ca053f3f828d72fa249b80636d46c52d4256c9447cefcc6813bd97c446b5806f076ccd6f87a2401818848902a380b3c380cf0bdf0e1804b0058238d3c708360252851c1f727280685b4130d0140ee80a4220078685102d72ce10eb2680a5bc44b8810caa05291044db1a8bb96e8f8cf9a24132b8552e1952068cfb06ab857b81b6dd19427c385f14be6fca94a1a86fe78bc2447d5d7c53c01b19d3c4063e267c51f860f3f3e1eb8295a74c1f20145286a24018803ac8f4e3b7057035df75a08cebc407aa90d3c919b2029643a1272dd2f6545d4fcf105ae4e83076b3db88d84098bd395fac45300c29d21b5b5dd08a8261c8d325c2756d1fbe4468d11c4c91bac6ae67cb5e772c15d12468118d84583574411b279c2686fbbdebcc68b1fb4e2fe7bf05dceff3dfbfb0eb09c3fd4e60575da745815d7d617cb1aedb5c8501b65a4c32bf219dca5e430f0aefc663793998de1352f454d4e4b998f041d7434db1fe66c026f75d121a296f2d241269c3a41a4f4a1f7623692d9f6f1799800c01a38d03ac74a4b28f38b2dc7095d5ce8dc528cae5f4a00bbefdca6239c1d6171bd229d2bbd9029bb6b56d6d26704ba6c9cb843857f5c3f9b2f8601fceb7d3e297853c7d5e3063ca7c5664fa796b36730ba887ce9e2da01e8a6ab1ffbc204fa11a48913ec46ac1a01735814e48f1058a9fdf0c00de4dcf667baa7971a1d0523f23c00696e9351dd9a329aaebe1e10138fe702e33661ac1a61b4ee2e719d027007cfe073a33a993bbf9051865c0ae1a4030fc349e3b6a373325bf3c7fb48cc998ed9dd68574c0953a48d8c961963a487892ef141943fb8da992164197a3b37c7e333a7dba3a2d164042e989c709dacf0e47c06239656c487b9832ad41c9f4da4d8b35146ffdd9c394993742f30acd3d269189107d74f9cd780d863b8256dcadf71f2d8998e7be8559eebae971a3b7128ed49be97029c8f6ee35b9c3b112c95d381e1923f7bdfc7c2892c779b048b6614d064324b27c710f53867b73ff41bd70742e045d34d23cc2b245165c9a79a55e2952c67cfe01e9fce5980be063688aecf19dbebb5a903e401e29c3c385dc596bd2695ddc0fcf2e747ce18eda4d8e01c8bc932d127ddb3ec2643b7bf6ecd942e48947fb438b2dbbcbcc9e3d7bb63771b76cb13b3cd6e48e7ea1cca0cc73bc0bc79a2c2323f31fddc348269c790061cd9de775a855216370648cf6a4f3f5e4b75951cbbc2fab972498057a5194b68469cada1452d472342c32bdc685869303eb8114732eb967b8312084110bc29c4cae70a71040435875ef62b10f0ec7ba9fd82520c6ac27dbf7697b28c9ca0b774a6dca0d65a7a8acc9bd3130403d4eda6b4296f191b620ed805c543c90d84032c397bb80473a781ce5cc1a8526ca6003952aa575ad8d4bdb413ab91404a49367988d9155c9aa5831065c841b8bcd275bdc77cf1cd903899981748e224f20d08a28c4755ace1b56f0a849d1a288f007630ee3f11884f3aa6207bc9fc6851a1a15ee7c0d0d8bdb78823c8d0b17b46af17e3e3498bbfe80f40764ce5cb2efb76dac2de1de3bef7ce89bd1b6b77ac78d16badf9c2c9689a16da163f9ab1888861b086875735e2b9f0f2c5ee889110fdd5ab8d34271b331dbc914839ca82027b68db45381585cbbb13fdadfd8add2b7b74a9fec66adbd55c4b8b1b602f86ae35088c58377e195352977bec32d7754524a29951a38d62ce1ce29d7e59ac2e665c52521068e60f2a9ad9ec0eeba9e9b7f0f5f92ac6c4a66b4485f5846903dba2a63fc404e9b971ac8130ee48b0e242a2342a6a74186c243d5a21de18c1e18ac3be3eba9042d723a0b77e655366a37fd0468a7f4355c482d355c482d2fa32bbfc964b3dffe320422d83adbe6b89864efb42adc99c7116c0a50124630ad7af663927d6a3758b8ad5d41a3c2adeff05331fd84c88fa634bfe5d96169e2104bd3692b5c243cb9e2d63f015bad6e75560533b4670fd1a08a798698d802f0a893084e322677bcb1ce8633b7d0b8dd0cadd5b4b834c4923d3e2d8a3b825e5b8b13096fe8a14273695068ad1c4cfb0189817aec3b6372352deeb42cc8f39d9c726ee004ad569b129880c5d636cd2363ecb5322e77d13bd7374fb6c75112d25d0232d5e1d269b677f88893ff488d6f3fa6c1474affbc268523acb9bfd290976fa779f9868f38c1f123f52fc7818fd06f2b1785dd3664e5dc835839879138a1a1ef8ea47e85e54174176124f41dc611d27c232cddcb94e8a3b074b10464ca06b6b17139cb6d482b97a9d1b7b0a4bd8425adf4798db0a45da6ba262d5a09c854e8dd8a88068965d4e2124a6ae2c1edd7c5ed9a764269d1be633d74456faa64fb8eb268ab79668e8627ac79e83955056b66125b4d73b782e5348edbb84db361165e5a332975d249985183e5fa4d72a5ecda335c1a426f1f44f76d1fc9cae9353280aff6f533679cb02c8467eb7258525386676ab62ae9767ea4db24770a61b6a64b87a264ea8a5cabc8758abc93eb6df66ede96cb6f0689166b4849a8deb4ccd67451148e5759eb385f1327d709cb993a73e7a13d8e90fb8d90e53642d13d97d07ff4545153a5f5aad94a410b362204fa3ed0038532958532876c0fee9c9952ccdc6d5ebb5cd23b5c1ad27296f74b342cefb3e052e82c97a9be46c234f7db2f2eb5609afb20bab3e0231700830e8e2ad5fd62244e3a4e3b623f2ef61fcd76dac76a9a19776cc9983a5b33464a2d9799c6b3166dbbfc78f48984596ec35df4102eb56021da65a681eb0fd027b9e152a89e08455d8ca47bbf3a196121f7f56229f410a6e1bee123228c0497b2232cd78ea426859138a1e9b69742ef6b2fd1f4fb483eb18b6dec6dc0eedc7475e1c4c909e70efdc0a6d771b3454d55c8c7fb1c66b6a66be25013adb73cb8e267ebb0ada6264157c2b05114bd4d7291d8f7691fc9769ae53a6feca70bb17cba70a6422b9da8fb8446a3d08b8d1a25928bd76223fcfc25ec5ee25aee492e6129fbf7a34b5ee8d3b1dcb2dc22d152d5087bd1e7cd4e84d62cf4b97546581126523f21d19c31521afd2598390b852e5af9e736dcbb8770691462c1a5102e0df95c3bcde7da91957f1ec2341dd7756129f4ee35a94f580ae187eebd26350abd341a894ea44f33cb2b9ed8f4499b51348ac6ab48953a5349ae2351a89ea64f34d7d03d7c64bb86439886e51d3e62cf827ff44a88c4098dfde748365c0a9d5ebb762e4462716908bdf65208d3d06b259a5286ef6dc0dbd87bb701dde6bbcde7dd65ead37d3e9067c11bca94f586d8db7032253f211f2236d55a125d4ddb8bd34902503a73a556878c698ea3145749bb2f1e51a114bd0ce54a5ba79330e3e7956d023ea7728a03da646f012114d5ddfe87ee13da601abe0b6d563a52f44cdc944ce170cbd4a3a8d2acdf1e04bd8637bcbd5e23c3ad426e217b645abd82ac51b2bd94f58a3cd658b6ef154511691745ddb8ed96a8c35b4551deede993464d1595922d85d223b5227fba8fb705c316c6e6806d0e3c6e39be031eef0e37a98674eab66ab6f048da018f241df07873e0f1e600db60f0b8e1d90a71cbebf03f7ac3a149aaaaaeb8aa12d11b7a335a6179095d1ba350bb28dcce127ebe12760f85df5f42ef3642d06f085e7e25981ffd72e98da52d165d75d5d3c870c786d9d46befe80dbda1ad6dbb81e3db46baf8a3551465e3ff7847d20d1b464df65cd83b2dda6b61bf3a879a1ac7dac0cd459bec2dee31489f18d9de6b2ad9de7e7e7deea64f21b6d94a3058088e1bb76f5547f16e51d47d4d0a97b81ba7d17ee3dc6fe0234e384cb3fde223ddb71ff98c626e55f7d01535d97fc21e1bba3d75dd50d4d579515465d11d9c96e8caf637d95616456ddb7fb44d72a17865c91e2cd9bede54589d22db2a846cab1439870ba9b468dfcd8bc768d1624b7b7a87bd8d9310db574be356454dd6d696e863758d6e71bc25b4711ae1cb47617751f8394b58fa4a58e33842976b21e9f2fbd138baaaa2a8ba434df6b6f2647b5b57d9624c6321a63c94a7a990cf64d1ea9aadd2c2d2fce732b585f5da83a0ff602478a3267b7a24f53265a1983864a29db30f4326b5566cbfba290dd3d71bae9647faaaaaadaeb4770fe2f30d23d9fec1a57963ce50478bf69f9087ad2cfbcdc03c0c397b1a561a4c937dad3cc8b6e620dbfa848cb11857968cb11dcd4a39fc2598990bcf85e7b00464ea3036dedde6e59f87b8940316720397b8d2101bd74e6383fb91eec691848ee336ce619a970f46727f63a3a8cfcab977f62b0dd9b6adebce8563f70cd1fe398df60f3ee204ff48e8da31a6f97c051fb9ff9c0bc7309c391496b8d7e3f80d4b43ea71bcc4619a7a1ca7bff1120dfd8dd3b3fc46b8721b61e82fe17d291cbd4628ba4bd8725248e3f213726c63d3729bd16d581eba0d8ddb886eb3f2fb1f5def8a88468865d4d212ca148d50a646a14c89429962a9b5aab23db5a72a4a5714f5b97df7505427c40674f0bba7fd936a9b163f61bda126fb2eac2e6ab2f7c28a434df6a0bdd6caf6db2bdb7fb06c0faa3ad97ea14c79dda7b2a8c9f6aa457b0eb7aa456b6f7770db7adbe7d53233bc06284f623c63d04a7b6657741266d46a8ff3860cf748a3eceb89a4a04f2baf9f2b8abae75ea78d26ab745b38532be195a090084589a4695e8adb28c91581444922b2074bae1f42f690b96eaf53895c2519b95ea6c17e99e8f29b61408b5554eb695c1bc32532044595fe12424d2f1f65955cc7b9ca95e5f325b42f85db6b84dc5d42d059bc83df4361292385dde5275325990265aa134251d3454df575be768454b9932b0dcc6305ebd03125ca66891987144d80cd8a478a9e892dd51fb94c4af508caf2945d7e599ec96a4bd977b8baa93e0d6d98d0916a2ca9697553f6750533b1b823327df42ad7d04608459546d72c4051a5112e0dd90e7a10dc358ce49e3b0823714273cf7d8e44fb864ba3cb14e832558db82291086b773b8d8fc22dbcd454ad0eee3723386c33755af0287b72fdbca313a1f59262ed6e98061eb751161ad18169aa3b4609863cc337c30119535730111953670feefc8c9192e817027e7e46569e1db1f2ec237bee36db415fc1251116a2e1d2cac5a5154c63af71b75fc134dbb56bf808e8db6b5246b45889c818ed0d97669683c2d06da87d0befb532aef6fb9a9be534dc59f011272b3f42cf7d05d3801ec247fa207bed41d86b1889139afe7624f41697b220b65f8ca4bf611b96b2cbd4762e2c81d8c6e6bb4d771beeda6dbcdb7c6eb371342dd60f11a6809aea3fe15c5153bd17ce1b2eacffea678510a1a66a8116eb332ca445bb834f880d7d5fcb6aaa57d316a4659a66359b89d965ceb00e19a3e3d98811b97beaa071a830daa87593ab6d9b96593c6ae126e9b3509bb13d2916df83fb830706f469943007e8a03ce4d6f14ba7ca8b2779bc945629431eb75c67d0f4b3bbbbbbbbbbbbbb299d15c3844ce84f51147737edd3739fd21d4c55a63cf476099bc28a4da394524a29a594d26f9af552339585529ab63c310c938aefcbf5a60a8a1966d936bb692d22ca75e6732139a7b438e7dce91d4dc59cd2a8a7e6a74e9f9440c67c5114899ae67c6ddb362291e5ec96a4e10830593db5e1f9a44df3d9e78b8cfbf9c9328a1270c0e38716270fade7ce27b3c799fbcb8ae422a25c6f8b739381e49179f0c8f20690261e32664e9812c8c8e3cc992f1eadb7197447f8d03063d7ca74dbaafd1616f16837271745b6cd5a3b4a9e015c255c64972cb170f2ca9a377ebb1fcbb6f16423a614913c59fbbc9c962921514464a6923d68b8e13691eb3d20b730725dc31b727d73d14da5d3dc702777edd3e2b1a676e3ebe65d11697cc9dddc696824055a1bd14a417c559c6c61094c60317179c785f236d7b4b553cd0d37d72cf33ca7b9843889cf97503929a2df3d092745f4b7f717a47be35290e983cc461411a4fb868bd0ac5d7e335d4a0b99741b6599a2579b166b1ea32726c692f0268a2c09ab0d99925c9f25c954ddbc4d353660222d4a9ed6e99dfe40537187e8547d7d6e2a2e911fb431930f913e6d3da54ffd8a8fa83953d56fdbc5a431ee884496c768b11be7ef3c1da3c57a1b5233d670b7dbe8a166d4d50be92b78bc9627571e6aaab756cc446c7fb9fd806c7ff9cb7ff4ca3b35dc978fa499968f35af3c56aae4652362c325eee3a491d4341611f3fcca09669e2f9fe1cbe537f382ebaa45551a74fab44da1f17a2947a3110e914ee638bcea1df55a957b3534dc2c8a3e55314893fc410661489384615113ab4f395e6b0ebf315ed2cbc78b3a787c4666fee76d792775f2766bf1b8bdbfc945c06416fbcdb0bc23cd6f06f47952961b34f30dc74f14761880cc128e3538b99266481462c921968f9d43a7f2f479e89a3c790fbd9328307419faca54653046519e3471a753ca70a7dc457804d9904560954c396f66f9a33b2c02c60b9d14cedc160c612963b81a6e2d72e748a1cc5fc879a71fb9464d464d8c56a326dc8b73b5385a7d389f15b01657efd694a160106615b294c99138fb41d60a42066d5a944d2978658ff96c0b1993edc8988f4a8b1f0f4e56e572ae11ebb3e9d398c556381fcf0aab4f63b6b3a2a44f23a8aa42513814353aa5317d70b3850ba79499a7117a6d9a1f855bc8e3d4346f75d430cb42a6937591ede4004281c20295783d01aec01640016ba09231dd9586d4db07917dbb6c3aaa766ede67e389f1f048337a7a329b4c95a96015678a2ec6203dbcc8f7cfeb9499aa13c2458cf8fe098b905472a7d38426ea0e154bccae8b01e9b625eee813a345fa61f569fca8f2ab4fe387a5a44f1eb8a45133053e01428e217f58ca982e64622dce70a8893ec3f9a83e367d3a13a4802a300d12355ac91ea34c0f56913d3e72d4023521472025462c3232fd5c7e5b0dc28d0617ccc920b8647be2822eb0d5b1b231b6cc0c9b9592165beca1260a5ab235013dc91464056835650ea803ee803c9fd6a7357d642c500532f1697121b82363c0284c4c14188469a2075b74fae8e9a331b88594d1c953c858a01774f8fce0d3a23932866b20b87b1d1ead46ac2ec3c1913db826324607dc43a5ef52b618c225ef1e06d25cd89973f5696b91ca1e137bdb0c6e879b72de47ee1f0f177e31eee3c7c33dd6278eebfec53e9e8fcac7c39d7ae59be1421fcf17cb6019ce47e58bf1b4e8fa783e2af79b9957a4c41d47abd10a07e7260798218ac47264b13e8d417ac846482a797e2c4252c91317314252c9fd2245482ab97189bb3402097984278c560cb8120a52b8f2e7a31545cd548f6e581eeda92ada43a34551201548257bc8d18d284e8fb55ab58039abd58ba2402c6a02eb1be7e86857c76885271e676bdecc156fb46251d40d456507e95013cd23d5598d5adb12d7258f2357c6020953f2ccac3e8d9c2bf78c92f489826280668c9464cab9fa34bfc9e05a253e7c59f882844454afebeec37c87f1d83fc1ccdd3fafc9dfbbf07b5b2551f4e9a349e4af1b6b0e12c2dc29742290e8dc9dfb381f10f2be9008ee9f7fde1dc92c975f90951189f6fea33b233313c18542aba40332f3e75d38d6ec3db44a662e983dc3208e8bd25815b0ca16030f9782744d135c937c3375e50455a6d362c7812a5036c5e367050ff8f970fad4a829bf29fd49e1a0c0d82895be1926755be26a37be1926f5a0f0d6b8e64442eee49b4d500ac76d496edf8f19a8d33b3e0f8f47b2f70ec79a1a1e31820b433568c0e016913b9988ef2dceb3842b6128d42177ea17810f6ed0bbb026f7c44c564fd583ee6124fa76569a18cc498152da44bf397137185c50d522fd4b66c3db96b8601eb31810b2c5aec3636dd03b8b81406f25499f4650b564a3d7c4030540d69391315a65b1ec0d5d00b6262ef779c104009cc24806a3955c51b56823808fc735f188e4ee33e45e7d6aaeef618e7b714d5aa40f39d7ab45cab95a99cee69a34f7227d335c4b8791c8f2fc7690c57ef417aea83eab165d3cc8cc181d62d4acb32a7d924dd8028c7d648f2963643c1de0a705c63ead4febd35a51f56935802ed3e1b22eb29d4c67fac8924c991d8aca58b48b89ca6e90653a2b3699aeac325d51c998500f58058c6549a60f10ca94e992642a63e83bccaa9031f4d90d262a0bc234b1282a6b511394e9238b2265823061396b5154b6844c0b104aa60740d66d4bdc9ac70ca77104e0cd6b95b4789393b4483f3f361fd6e7666eab3b7e589fcfeaa34ac34795472b6aa29c6b8463c5eb491eb99a9096dc28b255c2b9e63f4a56146593b42966adc079f26ab28414c5ca2a596d1be722d9cbddae38fcb9f9b05a9f17dc11cc51657a0180399918592cabd23bc0296447c8f4c49d1eb48204b320515ff69a32f4d40c5fcc0b99be6b6f5be2761e339c0c47f6989952705ef6c8be9031a014129581d12a638a9ca9410899c63a265db63171475005aa286ad48434d13f9129a88282954752dc8c56592cafac566c56541f0f45adbca68f1525a48c5cf9cc90e98a924c79325d227b6519ec837d399f4e1ebf9ddc4356838c953921c30900d89231f42d1e04302f37a545caed642aa54517dc71b4e27856562cd64d5eb9c9f4bdd272657acec5e5f469b4e2a4346ad4841382448d9a18ad38d768c5b9462bce355a71aed18a738d569c4b9248a1103772b548b325992b6bb508e6803914c509819b02d4e1aa0077b82b401ece355a712ed89c19a7e2561c8bbbe1b202b4e1722ecec50d61c76673c7d16ab41aad767caf8f2bd38e00deb6c49d79047308f045e0f3128f03b4641ea22ca3e08ca187cf87997fe064a1878ff7d95a703b3cda56a60f32ef005296dfcc0f2d2a71738c404601b2076171109905a889de0bb72cbf19212deae0fe0854c85a1ec1988dd9248d0225c9be9028f00b3096c5c058160363590c8c65313096c5b21829140263590cb4ea24acd1aa45ce95865746068e550296c5c0587632823130d6fde17c56c81edcbb93a76d1bfeb83e2da9d9ec9343519acdaa863f2e8b25353d57fc695193ea56140feb061ea3d5e7355a4d1f9f29b2d8a73582411633c0a715875b9f6d060073c018880689ca6afd08ba218fc09ce963c4b9282ac3a315d5c11432c55c8fd1ea8c3b7ec0d82ad36731ca6da14b0af3a74551306d9ae7611b3f2d30f6430bc9a546e985d4cabc24b29a69bb054eb2b7b533eb1a858796dba64314791460e4c18307ed02e49e27d1c9a202461e9f370a837ecd2fbb03446dc6666c76cf315c36b3caec559ecdcab3a3c8f39a6d57939959a045215a9c197d7f407899c9ea298a8568d32482276a086a9a00983dcc1eb99f9b1442adbc1fca1edf69a88553fa984ba6ccd43ed2c69d0d895860e7da8f72478821286aba66ce5c327d4c2a53669e74413c6ef7aef29c5496e44c2ad3879432dc67ee9cce99dcc79e9faef96dbb57d21973c5e8bc903e8d128bb1c609593b8974aff462f9b97b97c9d9e0874321b8c3a306b256a5d8e106e807c4f3d617429361296384f489c34268682cd0a7ecf34210999a955082805e90851759f72bae8d8b9050328dd4114251f4f33f288a621dd44475c00ed0a2c8439f48e3b6f5ab6b3e0f8c393531bbcc68142c58505650966496d6cc5a2d73c13c2d699a0c3bcf39e79c73ce396d26b19cf3f36553cd4027d36efaf8b27cc91e3537e90ab9a3e40ee549e77cb5d838bda3af8de1a6fa42f469d3ec3b06a38c75da66bfbdebb4aefbd8a872c0ea3e9accbc6dbeb0580217b93f7126cf14a351f305ad69459f641650e8e4d6b199b071eed874574c41278f93caa6cd8cf66c503b87654c08221f6871a6b23f0b2f0faedd81b55d68ac965353b53857bd63d26b63b8f2449ed8247708d983e629a70c6522b247488ef28b3c5f92afc912cbfa1f3d5f3d9fb4386bd058e2ca9c2cf3489a76071aabe140c5296525e990a6f9439ae60fed0021347dda4ef2a438af859b14e76d58a5389fc174fce60c1b31c2cb468ee47e966123476a7503019ade4c7534bd94fe68286248c233458b4ec28cdcd6a8cfb36ed22624aa33958242419fc832a6e387217870b72c3aa603da084ae5723165933d77aa461dd9360f4ff37477d39b960d32c1d169ff7467e2a642975f1035a9970e47c8e4f38eb46938f08d90e442a3251486db6f849fbb84354e0a4befc292160a4b1a8db0a4b584254d7e3f3a0c350edc3032dcfb5068f373c7a521a2b33c08d159b8af9c05237142c37d8545844bbf4c891e4a967013dde6993be3acd24c42dbbbedab9bfa7cb6fe6da3ffbf03fefc8ce0b886e3da6d866b7cbb4de99fe3c0a51db09015eef6938b3e490e9732fb829de0dbcf2a1435ba7daffa746f3f73664fdf505478fb4ed2a8e62965f8d9b9cf911ae38c65abb31253325337bc529c17852c61f3d8e35048e89d4d72fb8be6e998ec2145b754896c9b8c6c3b0dd9d29b9b35141c386c86a3793a4651396e5dd4a5c3bb07e6f44687907b8e50749870f41cc21befc2d265094bf785c66d84a52b3f9850a67208658aa55d1445eddb6571e0ce8135ac7972e97ee52f8a2a5d5c1ab2fdf320b8af6024e1b97f30122734e1395cba4856eee59a87f44e69617b2163ecb3b0abb41886509fa1c1c876a6bdc0819ba73b852364b25ddb1ee2de71fdda70bbda357df42adb1923252cc4c6e96724fb7d7f334764bf7f383a779b1b173dc3258c3b1696166dbb648cfd8fd6de7071ace05216e20cd388b25c12b2121e4798e5fe8c0499f997804cb1bcbf191cef4f08cbc3b094ad84dcbbd370ef9e659846f4177ce4c6453f323af79a54376f368525c411d287f4d5a2ddc970eb04a784a8d48db16759cd32453322800000001314002020100a8743c2019154aacc5aee0114800c819a52764e9fc8a324c76198420619640c21300300222222236905acfe57760ccee7b4dcf2a427e706ad558350b8afaa0e2244d012294896b2eca38e92728e01342f7db07113e16b5f54893dc8911c97925c658d526b7550b178216c0ad519f9ba029abef4c97a2bfe2449d280beeed0ddd449e28d8ca24e5627899bf5b7ccaf2b71eb16a2b95b77e14594e81cfc63ce19c79227f6eb2978fd4da1162040be91a17280b4ae87da7ff219461028137106131a56d658c15f6a11ffbc326a010d2a75f7b8d3d07d74b68c94c6d75701f69296c15fa0536b4b3d87c3c7454322f696ec372caf95bd0a9aec5bce21cc4a3e16a4db0e81b5ed57868283b28b671f21118602e4f5786c723a022295930f08ad4e252cebd939c589900d8c299ac8a0bbfadcc53f05953e76d1115994b0822f6b5aea475b45d1bf2d207f939b10ce00bf7fd4267fb7dec1bdfdef2ffaf70421c66408496a1dd6c9c1ec13f4250fe3bd8881a7c1d97f9a5fdcce2fec2b9597c9fa243318bb83ca170aae87d00ff23328046e09f7f10c89796ef793d206b073fef167332cb38396e98d69c09e11cf080e02260dfba45b7afd43277404c7fee2a68680f6692919b03cd831799895c6f6efd32b23dde157338297bd1ac21cea45321ff2869bee0c0be9bded410b635624d81a36bc92e3e1261049e2c3498f19038a3ac7b347c797165f67507c0163ded9a92f11e4a8acf59952f7d1e67bed14a207dea86f68d4cf635ebd9ab39dd17396f414e5c1f419cfc1d4dfe9617a8dec0ef415d6f5a0e24414efe6959dd5e9480249219aeec5c1079ed9c19c8145172b24d01b0d1adb6de95cb245742cca758400a2982fce4e478c2134f73a3323004e437730a2bfbe0d06025124307e9e62d6778661ac8f5652090a3051ab3b98dfe487b5d8fd268e63b5a81e68423d202409a00fa70b97a4729b0f6283d978f0f6a7fa4ea2e204b81bbc105480ab46b86121a5610f03b84dc598cbe81de91ef10c6e176cfa90afa6dede2f91ddf2ea7c093d7595464503d147d3f63d8dc3a38d18603456b0401dce840adb407289deb680101ca87bdcf6312b2c37903a1d0f2697b064c69b2ea7446574b58b43bc0de215889148089bd0efbc3476e9f120a3bbea402cfa673ba77cd47ea512d0c83d04884500496eb502783685e5c7638bd5d4e64137e83b495c90886319fa9e3cf46013b83adcd7f252041bf15e81ab8063990701332b97d409505b59183fafc7140654e91c91c0ed854d61fff6bea92299aac151b52985b7a20503c60ae23ec734589de65d25a716f4ad8c3fe63bd3c73dc54d3b4c15dd5dc20ccc2fa581ff5d996522944051b7b96ed6f01e41d4128bdbeae5f25cad0ce808be47bd480f912c32e1f299a98676e4f68e00c38ca2bcf75a7346a707011712f0c261ee8662d0c5924b234b63346244188bb44d6cbf335141ec20a7e8ada412dccab5aea17d75c0ccdc470fcd638f9b3aaa672b05065ebd0d8d96ffb2cd8be033e3511e1e10152350eea4816ff21c60b86b8192ad8ac002a67d0b9695bdc251f9e348b66f20ce83cc19f81f9bdcf5f8342af2f6d91b6d0c4c9df12799febd0722e85f1e0b197f56749b87808aafbb912fd2cb30b3cf51a01444b3641baac1584e2c67298329d185eecac3fa6c86cba7779f4424d4347293ca6ae3f239a8ddf9853a8de503adceaa9638cc50d1b04c0fa6da0976cf2ed8a8b2f33a57841df17124a7f4eb8a1bc9a972e497c4dd9cc67407927097af6c9a24e23cb838f1b846fc85e7ed753e727de1b89c454324e756ea1adb4c59dc920211e1757e9dc4719685429d576f10394bba7d9fe875beb477526e657ec39d4403d8186e2b73d7d2e9634b886c45718aa5a850ad8d5d919910fc1ff05c49e22322849088b6fa14c42f1873b3e8f5c9ff8d443f605a1199c6bb11a3561ca2bf01e2148a67c4d7cfa18d2d377f9f05132188fbcca8557a93b601e0c7fb202bfe432856b31f7981cab6a24b75d90468e0d80b4ae609603f0406833a7d8cc15e0e3003d586ec7d2b31e567c3edd9c79501911093e1411f3c283d6952a76b0e1de6be7ef1c02b3be473025e9fa1c206c32df27d484564a36e2e229213be34344cdc1b0e15920ab1d815aea43360cb0ea4e0c4ef09dda54a4e6f0b4de52a38f9105712ddc239812371eb7a46c5843080f13a3d09481976887925f874c7e5bdf2118d8aae51d9c8c9088e2469b5e8ce72a2e25b043a2522d213b98d6553ce6d8f730cb98db3c3d948a275da678be8a55db246adfb1130b6734f692fb6bea64d2d47ae37e806e60105127402687b1c7f3c6ed5f9ac80159526b82be87d1471d56754e61da7e6178458caf1966a93e82a08dec5eb208b08f6469760812301612364550ebf929af6ecb6a6379c9c366c300086c708750b474b9b09acc62f49aea62ab9e98792eb12e8395f9c4205aa44a4432b5da7889d59d00524e536cc4e096640ea234dfbc67150ff9f201df8d98b35cc87ad752335f3f2966a26e6a6d8943efd043e2ac5dad03ef163aff6137dc63fe952b3430dfc94dff3f51ecb234619a5d9f3eac901427750a349b6795a32da4092d19c6bd69261200266dc82f1f52a812f5d7d0e835682d625175e33ad14e5d9d79b2f23cc0450f6f2c770382aee93a6dcd47f5b9ad6666fc4993b54a70c98c4b748161d1a0626c0fd057c8bc8b417afb600ed2211c7da6f2e14a31c63c1a36bfcc65b64bbdd18f8480c1947b646ccd9c710b666465dcb7195968166dddd17d933ede136582a7bec4bd8781ce9701bf1911ec95d9b2fc6ce29d924cba1170437b97c3094bcf88678f9a4032000be67d77982f60b40a6adb8cc01f27c097159f57f55fd45286a384f5f4558c13a799352f9c1c20246485e3a185f0f4f1fae17ce313f6f261730351a5e60c3239b829ade6d916c99b080b757d3c415098572e48d87b532381f49c9660a79dbdb187653e860935dda58279434849a6aa76bf6b384d58589d61b4e45c28750698db08f183169dc1b10b89e5b295c329cbaea068bfd622db0210693d4184b67423865b642fe2256fe8e27865d1a174e0bd63cc14a749b2f29c3af4abcda426797ad8b89503120c2705584319c3152bc18edc3734b8b3fa307250d2306996e53b32971ebd5da5c4675e251258a1bbeb94382b75b95a9482bf99e17576072ec978ad90821eeff891ce438270f30ce020606fc865241c1b807adb857b96e4bac3eb89652535c3dd94cde3a09865439c4cf1ff7602aecf965e3241eee232b04148900a2bc3d8c4bde8659ad635322cdf453184b853cf06a78db8e4cc134e15b25016be34387a366ff66a4822a7bfbcbb1eb46bd6e9c17ab10dc330dc1f03f61f4d2c7e296c89a3536ccb76d5680d232b60e943bf8e06027590d31f8fdfe1ca89ec08d004c8f23f848899d579851d61b90190c0b4bbca0162eaa7e951e4a1f129c79a05901b14471e3076e28aadceb791dcdd42b35b194fb4e2fdbef26316a8712e856afd1b52320677f83d3056434e4cd4bff0c97ec3d3d7035eaedff3dcb10bc77baf186af6938c6d079aaf7afa379a746ef1ff358ae8d53a7f009fdd01230715cde590728378615644443cdf1eef7b3987de3156f696751aa5c4ef929e705bf0a823bd04a6187300d6d0f5d9f5dd10bffe5f2ef97e9d3f8fff9a476a7a098ccc0886fbe3ec7e5cd3602851af9e7ef6052b9a4927023fad3ad804f398f5627603d9c3f4da8a2aa434fa7b8ecf90a4ef352f0719b9a56a1c040f9348fe8c4c07250479a280694c2f78d5cb74585fdf1a836f99f95479e8a5bc4eea9c91110f536eca956893ee50d1554e2b3386d4d4a9651bf848927f4afcec5330d67157764b7641868c73346323fa2aa06646fd7f707b90d4dcb15e3c3765fad78e07e8f1a94edc6e9ecbd5236d5ec552cb5e297e5f256fdc08c321939d7cd4ce026b3414d5963b73742ed05894131192cbaf6b165ef9cd8565ffdf7aa64a40b85dfdadb748b85115fed7c51a30082deb03e8c74d8ab362ce4c1d07763d8cd39bc29c8c941d5d82fa2ad6bbdb21f0eadc39e80d0b8d4c40ca4b732955cf8ea166439d820b009a15a54aa15f8bdb211a5eda25ca79b5e5b195b1ec2e079591fdd0ae6b2c0743293a4294ce1a5a44d2e646dcb4c0811889b09bec4af864d362cfea260306317353023d824a0ea132303093a068a2e2770ff9b5e1067f8188cbb74d4bc3ed95bb593cf01b492220971ce78b9a94da07a2e208c7196ead2bf1c1222123b4ca4d9fe5f2552940ae172163f8f72e040e6424133443da3aba0452c45c6d8ca9d091722f3b75dbe8c3944b094b88d3e72981f7e68d90ded8834da9af5f5897838707e3de7ba00448a61c880baed301499aad3226d6bd7277b9a1648f60399ca97ec931b14f51c5a01fd7ccc15159bd0100bf7f960a0105d156b61c20351174ab75fda1fadce4658913ef84fdd4b5ca20034b102208db36a102f370a5583dd27ad052af899e42a8f4bbd17fb50686a53add20f4449468c1bc02a38601a8fc339c0e8aa06675226a3269c0442ad81a1ecb739019545ff85c4c104307b42eaa348bf4c63d18f6ae28549878a1d9d6daf86eb8ec2b3ea9646213396711083fede095b991816809e0802137fc6a62eedbd408d2e6c712ae098d394d1d32f2759b95036be2751977c407f179e3078870d0773314725e092ea1e94845d8264e1a87b6fad36d7b3b958038a02821845dfc5367c34b25a4e381e19b98705130c3d50b08b7aefb00fece6508d3168ab11c3bfbbe38a66b2c3dae224e7645cfc20bc9d8a7a4ffdd3a7ee9bd3547b815c39efa053204fae09e3cb26ea8286604d9076c8a05ee8d9270254148640a7e58260fc388f731a6fa24fda41244a267733666ad3a260473d74071e3a265c4797c084adc971e1e22a25c64de72ceb82c2c38ec9dd55afb3b0eb808a5c9c46dbbda3fcc1e06fc4a56c017f3841e5318b642847900b496865e585446f23e691686791c68627926958fb82b5ee48aa3380c37ea7a87e080d1c37bc89cc2742d2f00d8a2a0afc61c01cfcbbfc4e32d0210081931afc9a2429e56eaf25fff8a66d95cf06c9546b00e14c303061339112ea28d4f0a1f65989cde9ed5110530af7d366e44c2ec1de92845b84cfe0fee800d9a966cc2bf21b7bea0e5f53c0290b02d6bf2c573f7b33301a9cd092293d8920bb3761f07b71bf608a7fff4b9b2ea5fbe38f11d301992fc9fc9b5d93fecc56469be78b26e100c56ed70312cd3cedd5a765f7294def90d4a231e57be204af4cd30a673fbfaea3b542ec6ba2a17303fac16ad8c41c0ef7d19c81ac3906a185f1c36a0e2859d7e26080f49ada873cdac813da6fff380adc4bd921d0ac888e31a0976a381568469300d8a14512a3997ddf98bedb4703106d31b004f15a68a2303420b6d0d49dcbf02011a3d770c09519faff04065fcbf43139a74f44ee4cda42ba256bf2d9c427a3517a85d003144032c2949c4c9c645712058883a9c07c62ed9d3d5e0e50c7f8d3fc2911210ff71d48231dfeb2f031cba84abaed23b0aa2810d4d1164d7e39ca6c51bc0b060e23532627ed2ba7ce875c76ef4e5f4553d72c18c2dccad0fd00b26764ee54b3d94457c66223e7db94a7c6b69586da3c972a3bee8c4380f0d5c9a14165458e7291ef060b97db5d1240cb92ae291955ea53480b6352b05a957acdbf9ab407e8c3001ec65b825d905978b372e8f8736ef1df36b07b4387b9c58b357ebf1640a3fb0de3dd1e821edf6f6b732f13d79f3be9a4fe785abcea63637a0a3a8698f0a8032cbca7d120af67f759e8c8c6687ca6c601cded9c1b057cbb384bb7a42ca6a4611c9bba87568ca7d1c2a86603514bb2582e9404228bb82fbd2dbf95a0f3ef7004facd4e9860b2fa2ad600d11cd4d660de8b6a61f3ab745d000ab327804cf5aa85c1634661cd5a5828cf48efabc771cca106ad3eb0d27c6ef8390c11eb1fe61720ab7ee744f799370919a26948d85252d80c8751fa126c2dccd33289bea7d960d3bd04ffb8570efbff95d5fa17b88daa6d8c868da0395715b79d7dfbeaf0d733e254d54f5456d0aa6cd7ef79f78fcc598005d8b2c654f5adc300d89b9bba5eef9440d401bae03000761354b69ee4c75af1977dd4bf11cb4138f87cb05b3808001a1e3e8413c8d6ee3d9fa4fb754b7abd14335c58be112e0581427b27560b0cb07430050430b1d008b1d956cd4404325edc7ca0d46519862c0efcc74ef0b5f7a3bb025680853152e287a23f7c6dab16a73e6ef694794c11ba79dc96f30176aa9207e5e2a6c61e90279b3ab1d5eef30a6e41825d581e3d38f68f028cc8a3ae506775b116cf2a4978aa5015d224185f68fc834f2fc7108d3ee13b951283c6ecd3184da64378e613f4e8f929da65e5db571396d5f1071db924b597f8fdd0bf2d3882a00a9afa5b1c090acbc818a080cc1c55b07006967be13ebfb61347ac4d58d8dc4c5a18d37f8ef2084100bd31c21c8d21ccb0538b892367ba3ed414a955388d712350d0aacc76b63206733fea56fdcedc0611aba687aa38f6c7f633cf832a79c2ba098eb34966a27f6746c19670f54f0a784b7b792572255645d9e17bfbbc17a174f98354cb0a3f02a576d176730d5311e4e22ed962b3abc39709f78558d0f1713131ada2769ddc323f87f9d638056d351305a1d5accc43dfe8e5d9dc2f60c95a030914858b5ba7c2bc225c5a02d416fe912cb3896a5b3a4c042b5c7ddf0dca8f80016664f960cc9e51505f9f7081b6a3f974e5090b63d9b26acec1689e9b6d5032be0da74b510fc5300d51a8332085829fd7e1066cec8dbabec40f4f98537cf6388a5c5315b7e37928125c250bbf3911f0d352170ada75168af53dabdcb6899c81fda9c5ab89fa24a554e736f138c17bd305ee272d673952cd57d8e827c9eb3189e6fbc39cdd53c1c237d7a3304c428ad22e579c446a9ae8ac9884d7a2049c8b046126e1c960d4b7b6f8355018cd629c441238ddec77ddb359fa9a410e04c8e67eacc1599cec722f1445826adc219033121741fa8bc8cd9fa9e63d41ae97e076250342a4a82277804a6303a294a331c97f90b7ff2fccba2d1ac91775e2cc4a604e86e94cd65068b6430dc84036347b6bafe2d73a6064a8dc425d09e697e394c742d11a970472280cc52101857ccc95f37ca3f7f5a1794bf4c4e5d29a13afba9aef7e63b393107a6ce0efb5b7c57f49751af4544249ba38f962207a0577ed55ac5df74a07dcb04e5f8cac1a0671774d5c99f40f0b7b6ef9de6e96ef61239333582c080ae40985bd9c351611190a8d8672c4d0d84e75111b7465050c10fabaa030ac82cc31864b533a15e1baf8b657be575ac7a6191a7e61df5807943e88a0dd1f103730707e85720584c868b9c184544d0e6442ac919997ac1a1404cd608e136808b5458111744a73a3d89ed914c2aa7ba451abab3757ac925b40a29d3b4fe7745e2243276249f52e831c540215c3ecf8ef06463a1b284fced26679d2f2364ed29e2508622a10a58cbe5a0320cd6ecc23f287dba09f905a7ebd246e77f52b868e7c8b9cfa2396fdd89311486347e7b109dc938dda4d2658060fae9008975023a5d180043f74fb2c997f729a75b4b3975469ebba974d2ecdaacfb347413e5a851c5153195d15b2a432c9b78233a33223cb72533664c88bb19fca2895db6fa98cdf4e2a59f0b178460dda19449381a16130c920fa163a233751d3c68c55b96b6f9d821b5b4521c3316c2c5d00b4f509f25a0aa9d450040ccd27e118614f0fdc9f6b38c881e23c9c3e0fc89c5657fea2056a81d4ece690f48c0cae1d91ec78641aeae79c31c8e67f793a49bd8ee017f12aa6ce1c001a5dc838e126d0043706db613cdfd9716c5a53f9010a0f541213143e11f975ce7f8a406108b30d50d3be8e5e85d70fca194696f17b5f0a99395d8fe56c969032cf9f9f879a866d6a4a3afbfd8bbdb8a82d3919a063a66a2126c8b4a1bbd97ac5b6cd30fae5c1cf7d6775a52e3eac34f34869d56ed6fe701039778052d62edb814f52f0a55f33365d5e1239b6ba5052a1fdc8cfefd3b85a226614c80c33f769bbd38b511625dc429a700d91253187033ca6b6cdfcc9a04fee8790b437a89a6e088c1762714288bed0ae4408623d18b74d6f174a4083a98e8257b296d99e797770ec6845978c92f96f9e3e1065b93e825c4cc7297d32231ce793c7499a8f4276da75ec0c34b960948939455c74d422f55723ae13c08f1c7871dcd178bcabaf0bc65de16766bc1fe6812b99976244299bffcac672048b84353d3d59ff433a5c1d20d05a6f8cc6cc7c68f1b7ace7b5dc4f21d841497aa2af10c01032aebbd1c83f06318bfbd0ce035cbe2865a50564416c12fe60b7bc55c82cb49859bc19306cc4570ba5bc38014e4cc743204a20f28966ed74de9905e568faa90c0176d352b62f502e7841fde841a674d645e32ecbeb7a45e78f342b12d5724569e7d318e5674cb954751963e3aff5eacd5a8a847eceeab99ee7f2151cadf6c54027ffcf09476be3b598095df18d1eaab2189464f52636a17ecddbd282de375a60d1de93928f56e9e481f9d0df7bd2bf0cad1bac9cb94568326ea188acd6fccac29b3022ac391f846fac17642c410c9849ef8d39936b24e38023031c06805a783da0dadc5805413e7ae149ed15f587e0968540cd15688b91710194fb796ab57616c21e898a4954845c02266ca44193d08d3fdd0f538744cf43abcbf85a462f18787aa019fa2d553bb1a22d5115c7be52f980389a0d0522911e288051d4e321a47a76915184b6714651a1eed1ad8f9baa41cd287747f115e5f56a46196e339acfd1f05cb4fb3cc12433fff12764f79e01d8fa5d245a19edf12d2a8b10c0e7af4426b01ef000cd97a0ef89b347588a5a0866a6931adcad5f1c541158638cd04aa8ab8a39de014ec90d8e6e84616880ea5a0f9f8b3f1061f67cb454b9420f808118b7a25785a76aa83e86f9de3fb3a2766322ab48063a2b7dd7ffe1d51ce929858c52ad58a1c34ca82df8b7d6e1bc2318ba03773b59cf36a045e86c41be1f840dfa0ec3d87a83d461089801a032c0714442990a825357906bdd269836ba890c67be55dfe1dc8219f4807038eabf86282eceb4e42f53d335ed8244b91089c584a703698530091364b2b4f6ea423306a55f91f7afb7a82c70ebcb3d47841e8f0174913244120082228a29cd50c7540903b271727fc493411a445d1ff474024b698ed8f2112d24f0ed6a4a134009dbeb9efdb9613f75bd8d93c401f2178d0ed191c62f6fbff0e8c8c208a6ede5d47483b428fed2ab8d5e2d777beeadc90aefa6424f84772b569e3b83702e950700a21efe6f6bf50d705c19dfbe29632ff1ffa66c4e0f315671bf5b079d92ba404a7f2266d192d69b82b8c1bc6df80877208f9b2ab583f0a4feb657f40be75282c2a3e4dda5be8d78d099e202f461d8cb8136f88b2765002953eff7b623dd690574fb410e602a7d2bb546073993f9fe413689193f9ea5a6f2ec46b632748d066405925e8c577b808c03d6a2b434366b9a7888fd68ab06cdc6b9f086ad31dda8c7c319e691e60b429b176c0c17608c0303ab2b201f2db6ada01a1b1d587e7c71b316c44223e54265659726ff589e6c829d56b8b8c7636ce489db01474fc5b5e90f34da14f09436ff7f02b571e753c446622eeeb4c7b6d0bfca796369d6d91baec2c6920041d1aeb499c41efd5716495f0a6fb2d786c951135f424cd13e67fa6cf61911bcdc2bbd1ed726772100f0d1a9d1bb91c6842587421e02cdc4298e31e586dbb1bd80d1360df780ca3f3ecfbd240fd86f00dbdfb02970e884133e355fd1355c5fffbc66d88422d683f2ce30d403472e6ae959586c838d46b8639ba0fb630840ced4e84230db338f360007f6c308d68ab1fa26ac55172b92c55ac70a3825d0560bdb5b21c73442b899b3183a59c6f90351920967ed638c7f27f3400e5b0e980193e266296b130f47ebd02e677ed91974ab86f4d9f20b9cd273ada6696fdc7c12490553c16c138b53be20a5eeeab008b049a185c39eafd73e1cd12114e59144a619e44e4be95656c290f73cfe8ae252d73ee82742ad0f76235ff57e99b3004c02a6e070e7e9395d6485e14286357b50e4a80753f845e7004d4f3745876d5e414b5475bdf50fd1b43382f9e2ae8e75e50553cad2589552a1052e72d315c7e95e9de273f114e8263b38afab49a598c100f9b831d83c48d8d6d84a3b6b695ae1e82b181306888fab75e7a2a03cc28ed953b162e52e4d141fd0753aaae196d8aeab0ee07648785cc319f591c530930a5aacdec84cdb73009fa2c96e9ef6e619bf2ac89848b54a693992d0327e8827936bc1d0770d65863c14ee4baae1e44339f56406882dc8b9aac63089e0859e9d6cfa7628351b2b828b9f336149c290ca2902e98c370648bcc3f1a5117f5509415621ebdc88d1e5d2e6a045512b60686bef19739ff29aa938703a38eb27de29f70ac94c217e6007a1c70dd3d4ad13eaabc128e0e43c7d939a168186adb67aaf4e0f1751942c6f80bd44e9505344030501cb9131156ca2f26ab2a93d30e2addd21e2d1c3c9d1a16f2b00d0a1f7d0a14bdb915ee144cff32339916e2959fec72ca89e6625612f984331f20187778c0219d1deb4a4cdefda9aa85bf648c54944998f620c8697d0f8e18a6bc5932d7549164813df969aba8fd5e863d2e4223cefe7b42a0253533284150d044b6ac5e489c9a0805283f8d07534c8e6930fbc5b439bf98a3bc4e7111c68e2391e34c925259d7c7b9d2b1598b7d8f612e003fa6cb94ff0f54ea51a5916d33b3cbf0b6e38040ac465e437c3b14934c0ebfe20a647d8d26b21923a63fadeac57e0665fcbaf8e9fd97c0d4887e44a4f65040c57fc39fc7f098a1cf5900cc71566eb8654b3cc56fec000e2b7a85d54a4acd5f29a0d7062b3618b6a1d944f7c6f2f246866f51cab1831db32e55d36146f9552377f36c8c2fb846f068d83b63cbc03edcacd84bcd0782023e833513b112d67823b1056710d453301903ef64b4f6f194914ae5ecbb54d9930f0238091cc6fe82e961bff9cc0d30e9ca4a35f7e9f9d3177bd6be0c70217d693901194a05838d860d34fb2db0ca7a8b14e20f3532c64036b0dc450b6047a8b386ca315a891937d0624b3636527278fd90993e0f8a94f6bf3b15e017443633c3cac6c089db621e26558164902edaf1b87f496a912eabb755c6eb11e42e775eb2ffd30f41cb5247d0f42d775ec62033dd8ce4a0a000d830ce883b981831c80033ffcae4adefd8a9ef472bff87a8c8471b2c1a60557da9ff55129426706b5be6ff10553625b9936b496201aa9d0b7b4273f99a558bf96bae9e7f85096c4e20f8207458b6c06f5e2da8ca7de81e6f1cb2f8585143bce107bf595174a6711cdead8c9a6e7833ca2883b940ab54dbe4c28e1e3d1cf3d8b4f6f0a39cbe830222bd7d0914e0457f8a5588da7e180847aa28489c471a1a5f4236cf4a41654996391ccb1f254240d677056fe4034c08833e4cc946995fe34a7f411076db6a43f9a1028a05622fe4ab89da131cc33cb47432b306869408d61526aa5926b6c941fd4fc11a7b014104dd3361fde1ce8dd6934c03b2122ac7c205d3f7c06b4c9c4b7b606832728a5e91018a6a769f3f3fa9d6964999995e7301cfd14fca4bb77c36467505f1895142e8d15a9d2bfc30d80b1ff215e00c1e54144875ebb3774c01c3e3d8a9b6d7146dc076800c608cbd090caa0f45d9613e8b53e3413c435b0ab1809e020625669b6faa819903c835cbf5f0990c79ebf5c1810432660845f8cc3416adb313f732e1ba873d2c09d4fbb29c05bb380c4a706798e8a6a26e6cd25b68b08cfb7e7f3e82550addad72c28d02a1e20967c4294fe704fb8f629013c9b1ce4889b3f7a44288effe5025d68fb8035c594cd02c41ed3cf7ffde7179d530aff4bb255419d256738c17161559db0a0152ef7125e4f99ba989ea451eb25b5e11ea8de20ce6bd71a88bb439ee8a2cdf3e68c501608b7ada917789d6ef3eb8004c30eedf6bbcb3d224974fa3b5e545d97a85cf5b6bb02a05b13ed4d2a7f0355bdf05b25e12d8cdc38ac2187d6d31f44956b604c536163c053fe35b8a83c639e8104e71460c90940bb235fd2646cf85bbf31c0424a7b8f7b2855aa855e3d4daecca5e371e6c21a18cdb6492b6e248c0a5e0720d8b278f4cda9e4801ec5304db206e727b3053d55598793c7979bb76d6e1cef3b16f5697809febd84742b9a251c7a428a5b458adadd4873ec5bec7fd8d49966a90d4c5124aca0846046fa30ba3603016b0de6a3416273251cb290b7f1d1aa0a05c523f51aea35ba4b2018ac5ab8207eb075d3d74b4e4e10aa31c41a959bd630bc0254fc484ad7d36d7b6a2a439608441834a00b2b52a4d43c1e2310fd0fa46327a7ff5c6c0388812893e1a9f2d3712c75839ef32831d1c2d69551da1957e4a90b2b8bbae113ca8c14be93d101d66359362dbc844c55fc17df8c0a39451717cf93420110136b78c89becb1cc6c39dac49328695f0109738f8aed1ab0216dd266e61ecc9ec15b53944f61e7c65590e835b12361340571502922fbdb8cb2f98d562c05f1c12edd26b46c20a08b71d2510537b223971c73e87ca2b874cf630a3538e774be52edb283365cd6652311d7929a08a5ac9c3ad99d24eddb9f16c91d6c661b37634b5540694d1ad969751de83c638187350e00cfd980f001bf57b4f7dc7848af4c944c3d6af0f14ec5e71ccf0fa9b0ad85e6e66808188acaa7b5118dd9b109cb275191645bbe03ca4f165b5b32ea99a63948b3145697d169d6ec76eb467670b452c4003a7784b70e717de29d654d525b69b231a8f90dc7c4c306943f628709e19499d8fe87b7f021cd026f1fef2a25605bcec20746e406b644f89f291d121c68d32e8d3830d2583e8f1be29c3969bf0a6c1f948f6e40a0281bb1dd76b6c3a7a616e2ec2457b2589c0598791ae3abdc165f2934c767133bf1ad1accad212b6e44d2181376dbfdb1d871f9c11878c3f959d284639395717f0fbad449a6219c849e9d64c5abeb1dcc3d5e961f18307d07810c736f29a3870b35e6e25530d06e12eacac90a3f8d8e5b1c80ef79207a7e907f07c18dc7aca6640c61151c4325affde5478d1c8801bcbf9f3445839dfd0056f690ade367c20df94e4d7a3c4042c8b3b64383a9ae091039f4329561d903e8a3dc5ab5d5b8325630b5dd14419000932deba72bdf5589b7c413bc6595fddf42ef52cde1a2b50534791ddb14613298cae3274ed6d8480a873f966a358b0b38ea003e0ad2a2a3c7ae4321ada87d62dafb60962b1a28031edc6b9331b191eb2d72e101abf1d91868053386750a375dbd095caeb6b6c043b59a68cad89f8864897696d20841b80a2f4379ed1242a274c6b9bbaf83709a007f406b5ce9acfe19ec81b0b7f980d8eb377f5990c0447ca6875e6b176bcb4ae8128f6c0ab607c1355098392c20caa79ffd016d49e15c80fbece0fd36990cd0e0f7b2b963df273b3187ba42675b8e3134a0820c34688214ae0949804a794cbb42920968156797dfd1d0975d67414aa4cc14b8d73f0f3a8e36e4e1c175668bd87b17def6f9d1e6e804adb4173a6523e19d7f6bd55cfd6aaca9c439565bad4c5a085622f53b507d2d2b4af5fcdc1c4c231fc513a4c1e6f17bbe1c28c8d256a4f701eaf23c66d06aaad3397e218ea4ff4a0abe87b2cd52dd74fa16df334ab18e91a9ec26194185ca88d429ae96e6c9ce16ea60890232f1db6adfccc63b93b7e69d3d9ed2129429519c06fb12cacb7e41410b7d70743d650e3ff636bdead2bfaa53422cc666ab53a0675773f693fe4eca9d5dc71d71553b43e94d9955b4ff82c38e6ea72b4045623c61a027ef4d7853b09f27088f291521abc241e5cbb1549d6b0736f1b3864b6cb406ad9a14ef15969f16bebbe7e64d3d565f62269d53fac9d9114767707ed3295ad045c7c34eb3f4c831ccb023ae6be0b67a5a2669fd502a9e4cd8ddeb8af57a973b1895f55e0443fcaba043808381c7c61a2268a28bd8cbc68c62bee2d23496abdd8cf97922ddc5982aec4569a3dd0afa7132b79f027bca963da00e6d1f49092444cb416d50d47cf02f253e6208df2c3441ba90d8f6dc7c40a359a93319f4a5825802995375deabfe3fcfb194f0bbf59ccf899ad26052b61b84ef2b8309d1782243b4202009601b3b2d56d39f0595c3f5e8cd25173a87eedc829b815d07913a5832b6250f63745c5c060c5d6be71af85baaf7bbca70d230628847e7284099cb15ec60569d6f461887ecacc101476fc4038757f5a7b59b5b238c2b852fa40ecc81e678614b6f266694eded4d120d8a8e5d831ae597195c59256d423135b47d611279530e56281c72e091f7e45a71ce62d7290cdbf6f33d079690df73b76a8bc10956892a34e26e066049bbefe599fd53ec2f375b9941bb8be996071dead66c37cb7420b4223d10b21e1e9628ac69c840d8270a737828b07de06ca6487bb52064fe9c7e29882650b43863df4ba024dbf448e765c002d6ba97890cd822e3e1888b82e18d8299fbd26989e76a19e57291021d569f97343ffb2f325dca655be368d4095a4bebc67be622283c41d4b6eb527b735b0414cdf46ff1a9f920a99ceabf044490d60c12b5648a45f5970f0d16240ab406ab53edd143da834b6e10a0c02c2437d0b630f325624b0c5bab401b4d7e420eabf20e7970a8cbc2403b524eeb1c3c944f5121d1bee902218e920bbba459484b6a2d9796931d53a0627d28ef3c443fae8257f4f8ed774e30dc1e6b87a46890d0428713508a755eb34d354197985e2a4a8271bd8e6f6d09b447297250bb977de385704a11bf284d9ca1c8179a0484d98434ee99f321956783c4b0ccbf7e84123a662b0389371293a7781beaf28a24063c864f3dfe018db450c029283022a81046d4bdb9a9065cd9767d38f61d3b050dc6a2398f70ec990c52349eb7ead46a934596cb5f1a99026605000d5c00bc26a58acda60a149ee9b0955c2c1854e79104086c7135e05837190d7d95aa40a77e0eb7524c04c8a509152fe9f66ad10e2e354a2a59b06eb25b1d4a53e6686d85c829d5c13556b76ce8f982182d880c3d11d600a94a5e638e639f90f4fbb9ec18045386dae6070e522cc39aa437e59690b519e8a7be7131d9b6898077b7163779bf49c3866af44e85692175e86cea5133cec2e932542e559e5eb924304e4fb9990e9d6e5fda52fb4a33e2db6eac4d19f2dda3fbea401358f00df4618ef69413a3986d139258548fad0b8bf126110f01d7ab2bc074b06dce0b6040c05b8236703e710f56447b3e4410246343ae90de3f830bda0bc0a9093016049c59c90ae3ace9b39e1865e8bd79774f1d04f83a9d9319d400a460c24c0cd8f882cd88caf97f78ca685ef5ac8b63a4c91d76415e1178e3d8c2d85fa8a77af8bcb85650cecf460df264f458813fa047468c71c75722e879b85f4c3d67010b525c4a8c0064554636f4d4ed065c9a100c878c3e25b7c8f6a5f1e8ea3c3498a4c9488eaaa93f0d4b4687b85ab56b319b8c25e87229ff8f9711c74f12c9b05ca4482d1344be25828d7f96a09464c74472e0fa6a9b1d23aa6e7056f9d88737f72a2bb7a2a1516505ddfbee6d5250db0056ba23861a946b8990c9c7d09749667b71d1aea595a546c6be6b894e77c841c0c97289f43074bc6e48b975b8c6974412c35ee372a191e5a6087785ed1a3f6603602ecf38c47a6896412a73817aa0130832b211426013a047a8bd63d9925f216829d1b6dfaa9f7438808564e832f5be27525fa00cd9f361baf6ac2c92ec02d77aada99a05a19dceb3393a0a1a0daa35301498deeb08ac71a050f7b1a527137064ec586115ca76ec3cfa277d8f54a106c05ad0d50452cb254be39e69cefc5040e65c52f7df00e65c1096d53210e829d1e55c73b587887e96f87c47cab92a9b1d1be62e32ff1a3e026d8684887d78a22acc74900da42b4ad3967c76f37480865bd09f79360d39897ee0e8082d50691655b3b9e6edd54e8aba2ab944daec9acbc28165b3c1d66ee8f43217e96322ec96d77e80ca8e02de02ffc710ecb2fea06d165280f6a6a6434419f6117ace2fec07ae2a13409e33238a4600d7b109ff9a0966575a4ccba9134e06731c127bc10eb84d742d771aada0dd1d4516f03e121ced3cfdaabe5281ac071779d55107aa7b6961002bc6e4bff01efa024109fc7891f37efea444333ea7f283a4485658e49fcdedf457a278a5ebccf4a504a1efc2be0c0e21fd3f5b3653a8d93ad0e182ff458f84246d5601aadcbc86cb3938114dcae2157416ae090c0c1be1a307cefe7fb6e8ec92cc2cf7f47a9e418393ccd414d5890950925f62d4945f1b4c775d67b012098441858ef6eb79b1a72b219de136d5d6f48af7aba370bb84457795ec576c35390adce562cb05b54ffd28ab7d2f626e50f12b530893f19748c47b80461a35dc5cf3bc62302e2fad8c82f6a4fe13e8b0f8e77d691aa68e09a9ded06de4b4663df5c7fb986e35666c595abdfe0a3c4559f6c3b398bd194e87b3660c8bb0e2a9d8e1573450a73899d5c92d12299eff218e7272674b30048f222942dd2b452383f0a11301d99b7cc5b2cb7c50ad1cd23fab8dd0c9a045fb7f5fb4db39dbd6ac5e9656622230c84ee106d41dab7dc9966da981e917d01eaff8e95e69e54f8ca1f14935424dd60420aa6c28246044c95024188642ba782d28ba00a1513f0bbcb4d20e33b3133fc67739512502985087bb9787d0ed761eff784ed09f3a5dca786009e2145866ea6e5f8d2f9f3b9c5a66120ccceb7ec5b04e2a5d5a02230646688c4d1f6e30ddf79b7334945617a76a176680f05acee2609b4ebf82e1e8b1f9ff6a69e65fcdf53d986017f63a1d54bc58e78237dc38a6cec272df427d25ddc0c0db2cff35ef7d5518cd6c007d4480ae824688deec673060889cf6a5d8fb8dd2cff56849586feefb1781857fb82f4a0c75edbc340c996996b216cc74258de04c0e52f8ad031a928a4a28ebc46681d9158809ae25ce5da3ba6c82aaeb260b2325e7071f628c963664c720fcc77fc446e792316d2435a95054a972e807a407c8b6f8d3f1734e5180ae9bb54361b505200f9113500a445dee8fc76aa52ce5fa9cc898c90911bee9965bef47835f3c28013a5d40c692d6ccbbc3a5fa4e0c4a40c6909b7364cf09df5611c3c67cad5657be0523b0f907f7a55a2361e9926129fd653d6eed8250f32301ac033aa69d1c7edbaca8a8542849128957c1a2e8367b3822eaa16cd87f574b60488b7d6d1bb1f1ea28a7297b3ecebfcff2acbf6b87adc3d20a31032a634449331220ce832f25778d31b353258e4c8dfd79d0a39f0057789ab84bfa37f397c675d04b1cd40e50272425862e5b8763cc0dcffaed868a4ebf531ee713259d919ddf51a40335b81528aa811678d808ba28655a28ff64a75b35bd17a6b1c7c4a1819edc046c0dc6f93e4d1c594ad0f009b554b33e2d20143c0bdaedc1724588743140e5557cc17f979edcee9ca7b28c6254fe62dd4ec3e4315110572949731e8d8754e6ec4a684f944077568f09a10d75fe19472de31d3ba2b69ae0e5069e8d4eca0861bf410da3e5732a3ede559e16f4ccf58fbba6fb58214206d863911202c308c50bf695620a865c4a32d593b3fd58d4ac60a2bf5c22a16803e32fd31cea95ece9d37b761b3bcd42f6c31a0bcfc2394af98f2313492191ec48b6f2a29cddf5da672ce0c17e7242a5a886b75e8a1e6fa648fca9878a875e72db66dbab3e269f70d7d960608a5ad12b7f9c02a18f7f55ad55a1bf8199086c0b322ff4a5ba9938375de8d4719faca63e9eaa5c169bcbea185d29c5b29ce7f825deb6b3c2aa6622aa4157a06d2956d5529d45370ffe62b97885e2b511f0c0f1432b241e02dcb84d040b9b6c4c37fdf105d03ca8c50f58592ccc0ad11649dc9ecb15ca2aecd7b385269ecf5a7b8305739a9e6d3465bd6b3946e0d4554c280e25a93b4f576c2080f367793fb441d8d4e7bbdb0aa21a04a195b48eafc7a5f29a9ffa806510b4a0c905b2401be643e560a5cc9139de1cb45983e9b106af955e5e3ee567be5eb2fae7fbf894f1120927235f7745869f749fa8860447cb6b027ea32a1b8288370b299671136733945f8374c6955bc65f28fcdb68cda0c21f27f88511bc173c7f7e0132568b6acc096e9d48409b553a486f3eaeb3121ea3ed1bbb7486e8b0a2bd4dec0a73768a0a3311816fb04566888afe76e9c88b6be32df03348b227ecf344576f8a7ca20f62148400663d346a7a71ac87fe7429760cace63cdf216f67d0526b527246102b2d65df5d13338a6517e76399dbcf276762e5590b8abe3a8ac7721aa556d6e73969fc7aae288859b9d1d8dc6721f13c4cb2c1b8c5b6bc26ed9325ed2989f85500d0842bd679dc7eec4d19ad9b4ff6140e380c906f9a2fd94bdf9a163a3e307f0cdad141aa3f2ae0588d4bf16c3ae58fdc1a3f0d908ac6950acc5c73ac100f11f078f1232dd96b85dbde64ff8735e01b805d19cd4329eb11640012246c2753f31e2c2ea7f237058c05dc1cc7e37bd99bd3571ee121826b4bc05b4da90872be9d8c784c39db6243da17e0aae6112f2011453971d75b45bbdbd2b9db03ac1cd8e03cee54cc6283c66cc6e584dfaa56e32e244aad2dbef9668da04b65b721f9257d52ee27146b5fc04a5b22cd9dbb6b92fdebae6af7233e6df1952400841317f08ce62b09ac3eec03e2f4944a429d81bb6c2208dd36361d830f373bfc6f9d49e6dec86ce55e38ac2798b325aa72ccf280181c1dad56e1c5f37433c8a484a75b5416d8c86e1a431a2c53e10703621b6e42d56d8d4d584a523712443e0cc2eeed063e14aa186a37af38e643f5a06764ffba498dcebbc70a202b45ec0be417f20196fb6ba82f01a4f1fd0905bc278c7fa1888de79dea6b20161e2fbfab45fe9f2ea937c5e31ba9dfecfa06f7694840442308be1ee434eaca69df14ca10de8c27fa14ba9407ba4b8f63f4848895ef6e4ace2017c6bf7711ad674969341a2881cdd5b27b139595665787a118f50001f030f2a75f0679380935f19c0f92cab5396ac6ead720cec1bd42b4181a61ad2f9dd72ccb8677a7a2326081cd6132a231ae52daf033a751998ebfc30f9b3993b646f03a12f36cc8cb722bf328bf721b9843f2e86a0af28203c5928ce4864fe4073b878f070dcb233d7db74e462d8a1edf6f05b58748d40d334200bf200b5e733c04ad75bd4ce15f9f8d47bbe0d9550b8b545d45bb7e2f7f9002cee644262ecceaeeb1f51c66cf9c41cdeaa858b306d1b583def91de44bcb4a82cbf9caef1602a0e31e2a195828c844144bfe4c30c7cc6de7fd857ae82adf229ba266ee8215be447650d7b92f3f9309f9a7c0a9968c654e9018ce63df289dcb20d0aeb0683fc6492850f963109ff92a137c716b84c5b9a23236c857b1d01ba7d311e8f5e59dc6e9a424a4e1691966c03e2511637d8ce134b39e92208e747c2c47681315fb30b1646ab44e3bcd3e2145e9b3e01e56ed40634b605669718ca297fb2fc77a49f1fd51b166c204155575f6c2ce430517770075703bfd0a2da73a9ff012bf035c613d90311a7d0cca374f9cbc53aa7b3cf35f49f2ccb851ba66509671fea24885261647050e97122a8b2904f86c3aa7933260b9de78fb81ef7b497208f72759f645ab01f6892e853af404de6bfbfef6243a007d6cc79302cc80851ec33315e51843336c1fd0d9d19d15717d80815ebbda395b12b5f7820724a2933f0351e21efc93bb915a687a1d9edcee44afa8cd0ab0384e5018ca051db8aeee4f0e273b9d464cd125dfc6522629bc372f64782a4b53ea1c8ea312e2fffa688884974f9e45d1a38d25f8cc5714e1e812f4d9e65eb598c5d2fe3877986a1894fa6acdd5544149861db7028c1b04da660875453a76e80932f18c7ab40bdf2907d91cc880f8f1afcbe4daf82c79139a9689556d2546053e64e0fa91e8b8897c3c3955cb93da433c9bef643d90b24406e232580a2d8e99da545820ccb361eab8360a766d5f45af78be461a0de142f2621c249453036c98d50b23e3400a92a0bd63a093e39d457fbe8e2375a8c07e3520eae7814dd240cef71d906003444f7a7719c1b9d21f828c006590f3f95e1c9452a3fec89cf7952cbf1e90ce4608639e1a338918e2ed75c21b8b39050e1c375e354b7f8805f30ad4c7e0b0efe09c2507613807560ec4a220d30dceb704a20b2ae286ecdab0e7a757c34dc45d0f2c0659dcae4fae59b2d7a2415f245ae8960dc20e8aad17e7374c4f19dec5c77399bce99e582584a8acfb82c24d0a52f24b51117d2274a2cbc02248a7f4b87b198c4a1b83e2a2f230838345e1076df2bfb0c9b28b21711286a1b52786c34ed7e971254757f0b39a456fc70f20f1bc3e81ff8e1acfc5bbe3d29660b347ca81c9a60226435f5fe9f328ec344e341aa914457a8a713cd01d8e89f57947aceb02e17fa01b9c01aec814dbedb48e892938ea646e7228953a4af998bc6902e8e4ff7a49dc8d1ccd2a297754b74636273517ae3c8872151bd3648481c91bfaad7f64ae11cc1f311f356c62cdc5f11fd980638ecf65eaa41461a76d54641962847bebe5abc33ce20d56f1601657d459b33f8fa863f0fc290350c77a7fb120272ab2c5506696d709abaa36911564e908139181a5d2abf82b89007976c143e412e648f9cf35744cc68ba4916cae397573f6fd20be1946e86c4a1db83ae547d39a980a140e1117812b90e15ad3082da97411da7a58d28a8dea5b83cd008b7569bb28d35567abdc51ade28b0a4da98ad13ad61f98276e8cbe702f8771480c83c50e85751920e0d8f75fc36c928a5fb4abf743295561fc234f23c1a19a05c041107211e68804307211f7d68d38cf5b9310176f5c59f3752a3f32bc40f2a4cecd5153e424eee4670ee29c03d6e4d8128e105030d16c4b284eddf0d7fc3d439ed9b65a828b24c05c4c5144d056f44a2646a94dd0b7edde1a971f027f9ce30dc89dd197c867f27799f8e6179eb3c12b36076a02df2ec23355ce68cbd8c8f332eca9cc4f47c17d65155e45ec909ee06876471a2d7d5a2239c45748b0b8b43a0886c5bb42ad9849c608aee470710b553b39e76338df290c0fc442078a2aea1ca07be2065bfcb9a87edff8dc7b5a3fed709b27b17446b036eec2c237e6924bd077d7221eb0dde7abde282e345636d4b06cab98d97ad84831b531f921039f7d39eda3d2b2cf6af2301fb4e0ada17983f6fe7b4140f7d78ab8c7e659f546902cfa647d0e5d5619e258921f3afb0d82068da4a298e8d34912c8392c42e1395cc81b44542ff6e3ce665d2870576f394153e98c30faa51a5d7fcb1038e1bf11c1468e244d1247f24a80a6ec976cfe7b5781e177721c3f8b211cb070dd7d58b208fefba71e4385ce3510b8706aa4ef813076360ebf16267850a100c0eb429b0cf8fbef0251d29b69b5796df190673cef8f9ac35da5b73b7efebe79d8876a4b72e072add2defb617109b832409ae64a7592918423edc2fd2eddc0f9dadd3da87a1cb58c461c0f0cf8caf4a3d2f05df4d40daa12ace6d0869059f6fc81ce2b96d2d7900143fe8a851f17ba130226a54f70eccd4cd6fbcd0253aa246c10e162eba241c3b3b7acfb48723fd1561b6883875d5f112111b3123171e79b6609f79ab3602ffc1e653794384f2d70089c56e7236502a500ef15facc8770180c06c69f60d41387f7110110e4f5c000280eb88fa8ad761972665f1e953b6213784c3a1c6013e8b40fda3be00e52700a80ebcb817b3f27a81389539585c81ccb7d5e050e092c4def13668744101cc77477ce07c300822a9a454b0db65f905ff93918a247e26dd1953e20bb5a1d78c3fd8d5c5c49b1c0d88969ae3fe206ec952fbf8040839c9efdc770a7ef4f0ff1c84564a4133cdb569304398b43b585193cedcaba5aa36500da83a43d31d802991be00a4cd859b416e0044e42610453725990d7e6e43edf8eab1a33611892b979f34d8e8c6c8cba7c16168d1c098327d6a924124fca0a4b6f3ebc0f62553066d6878f6065b9f457c4c47b2ff3173a2f5ce8941bda0703e4f62de55ddd8fcaf04be5077d38ca0b908db40b3da119eef4a29bb3711b390fdc847040cf8e6976d9c12a31b141684cd7db4b90f01f10d5f66045647b31f8f4423b8606384a11af2bb3e94511c8f4a86141d45e14066847efc647e853c8482262e9cf28700de23d2e1dc3de6b7cac4b2cbfaedba1c4c417a8bae5616fa8b2d30e95018157245b177d9f7dd80d6bfe543c6443520c05925c95ca17744081dcb3bbb9da0e0e73e00b8a4e397e9c23e26e64143c8d927028fb06aa94037d58ae5fd29be30ad49d9a4988a196a1d60003ae4966e8b7f73194294b991e1d986f27e047cb80326be9713098cf2734f837a3fc34ba0c70982a79127c279db0bd114f34dd6099b108e500506bd46b3ce1b7ed1cebf47326eb35ac360fb2fa80a1fae619e189e7831feb0e8aac7e88444ac9e33316e0f41930f4a77e5ad7d59d420e2f9e34e980203d6c47d6a44490a9d67a401ef9dc541143bbc77ef6d04e06fc3e1178718fdaf4b970ba20aea0e95df90665ce43ec6a26219ad2d4ded1645250e90d2508567167efcea0de91bb35b590a01551c75d2e0d4ef350f94491032162230522e02fdd9e2d59a25430f730822f4501ccf45749216801faf0bf8d940e503b79fa51323962306b018269e2a3dea4c852afe403345afd2640a43bc395420d14a747a49bb9ac98891110560e33be140d838d1284eaccb4f59057f7f81ad266575f167d2b3016c41313c8e6ecf253c7111d87cffcdda9df7c4d13a281819cc54991ba37fd6ae5d081f483922143c133d70b9bd65eafd56cef75e8b6c9458a3c076ee2ae6994c73acd1f90a1e9869f5962844cd6b2c3dde938800408702cf34efa5b567374083f12bc65cbbec54b724a1630a6b980610207f85dc8dcdffce7d382818b86e90756c2e1f4b37c4d49868c0b9665f2fc78db8607d6041623adccd8bce0cd872316a0e6d39a9f7e37bf88039a4d7914112545956541c9da47c4a4f248792b2dbaa237f817e3ed10e7d3ba8270b2fe53b9c6cbe9f688160b2e6876e4101002f630c37bc2077a9b3f2205061ac964c181b0a453e7e9cbb6c9c2b84c8c64d14eeee92f5975fb532c2d2c0641c89d0ed845521d18d998eb44b844e13a92d5744b3e63cee3c043f86f03c2a56cd9ddc7bb1b836e309306aa786952d58f33c6ab589d13268e4b23ef20d0ebdae3bc405f4910bc3c90ecdb78b67a65e29479ad5a722695bf4c1712efe86d1c6644e91edbbeb7e0196c210410158c40f089faff5b0c90ab151b110bd9816fd6a65660c9c6373b735aabe8e93b222894ea68c5658887473b80b4990f739625b80c070056f1e3d1db3fca9600f2d52c0bb0b2692604aeddd836ee746b397f0eb933cc9441b65b50194e2a20ceec5928ecdb2063e4252d8c9111725d279212dd6934a6c180700f77b091d0fbe60f7ad0d74436e2f214909d0e1f92cf98390412ac51776f07dc143dc112fa7b2be7142c9ad725b0baf552bc1b22c2b3432d80fbd94349140781a53d8609d43d3ebb081dd01d36464c685debd401238ab3ed964635ff88617eaaa49511781f30b4ba3dd26bb6b5e745ab5df305634bee0085cd7f26916c6778d894e76fe4001bc05db67943731c1e8ca894eb45293e841ab726803c7fc7ae93416c1b661a67f68a1dd00e79f200963f900b81f518c431bf20c86b2ab1c2dc4ba1a69d397b84aed6f33f101e8f0e2460927bc2060ffd432aaa2e2577333c7e4d395b259375440c32106fdda85ab5abecdd60c327f304e6bebe99640562dffd2c5dcb48afc3765014b68a01c3ceb62581e46447132b5ab31c83baa8e0147e24df07db120f2ca0f593400d42a78f142d1d829b0d14d459113e18c81e1ca03a6bb8c519756c041a269789009e6dcdc194667f3df53f7c530d798a7e9078c696840d74403394964de0ae3b123e41540be7a1688fcb7ef50dd9278b141ccc33f257312120058bc2cd2677740c5c7d38900d99072659a65389c821ff351823bfb52faf4816155a24950ea655b1f72f0bec51967c036d277746656e0fdca0c713afe114899f9bb1978447d492819dd2f9254321d8f1119e6a4819c29a054ebd97e5e5e568f823b38ea24b03d357222eb011eef1c85aaea5572039a01d9edca23c68e9ed5aa5ed8723c1a872d853b4ea0c1510803f28ed6888c3ace140c10ab45bccf7a4e0471d9ad3a032eaae940c680283de81fdb1243f0bd197461c9608605e6b44699401fb874c05dc1c9929d12bce4e2cfec07a1c2699e6226f33c4a5156a16e2ee85869bddde328d67f6aae44ac162a6af2e7b32a4a1494b203992d9442b2125e4069a5d1a8771d749884ab8cb199b79379f2bde27bd501c8e53cd5850cca4089ab2660205b435118251234e2a1e7d5d3d9c48b0be8de6267608699ed0317835524c25897d75a9a3133fba044a6e3098e3900b1580d9302f16e4c4933d60f27f10904445f0e3ae17da1e238249380794265c5eb5c080087aca3f3334cd7251a5dceab51e3a996b217a35ef6a6ce5662f4b87e079fec0456f49edc08f5a2bd16377207193a24a2a3b68a22e7bde50048b6d47c965f723e5bed7b66e76ca8f1596a22c2a94e8328e90b5af9895b2a5a39c3170b95ce7103e705b7edea9bc772a8ff064117d870a024ffb98929f2b691a353334dfe2698c7669da9629c3b89ffc6b0c76395c86e93a94f0dab8e85fc9811f5f7b31c6bc9188e26081ba99ab36eccd06c9fa361b28645ad261128c11f57e0ebae2597ca74b629b6ff6288120e3fd7373051dd5cb8199056f35a11130791da1192aee5920fea5e05280c7c8584a20758325cc40821139a624ead49cc6ea5d8ebe45aa561802f886883e0604720bb24c202e4e73d5747f5bd8f5c8a08b6b7f7e816c6d25b03a6cf96e519ce14b37d2613160fdcf2f0a267a9577b89bb5b9dd6778b9228e7ce46fd8c4323da90bc348edcbb7af8bca198703138302b6528460fe87a1af4b4a81e3e0308fd3a29921f5752d357884fa4abbaf0367a809f064b38bf61adbc9640130a59e6b17dedb0e9fb74d3107364690005f75d9a6fb89ad06908d59a676886a59fc65928b94abcf5b25635fce70f071deefa2663e9ff2f8bd4277ff5e7b2d42d6fbac628152018aa1107d36dcd658a8aaed2f0ba001c032014b7538104a19257c9208d053c06e884f38f273ecb6b37b8ff20c92e1fb6572532202497b9ad08f2a88156449939b674e8068f0773acdbef45e92681d58a30946857b04622ab4af230fbd03fbf8608ffaac7102e511587f2f97a92b624ca5b439f316123fe6a3e7a0726ebe4689a6476a322753a41284a96dab7999ac695bddee4f7a31b023bf55755e74856061ce348721b9ef5b4e3c95d6d92cc2776a6db4ab2c8185eba52f67536e890eca4643f9a0cbb66ff8c331fc7b0289095d4ca725c3f777c67470f07d30cc49204be4825b0c955144908170d9e2a8a5236ed388e207efea69b834bba4c9cafcb1b5a323ebbcaf76dd804bfe01e18398e03eda07b7d08fb09b8e6e08dfe268979eb22df7e6524017702a6a5cf82f3a0703b1123d05d35181eeca308875d9a7f124b304bb929466b365443fe414cb43e30c345f86e1959b014fa829945f4e56f2321cbcaa77643a73be97e3aa42927f64da45da29e76b62820c666502040fe7f2df9e6cc06b871903bcb7b1fff2b8e942991360da1172a14a1728f167207ab6b95bef2e7081355bd116a9a0116c9c38ffa9aa04af01aa33450172e9f5ba79d440cc29f58172e92c5786e47e14f0ebb368d03255c9750539b2661025e977a60ad8f9ca37c83842676dbd58c2433143e601c771c1b15986735f5cc5fa5aabd142cbc51e3b4d2b63bfd79551b0ec610b845c23dad6cd893df61ab022c54b59ebe6b521162349d8bc59c11b1f6a84dca01b2e228dd1805799a0324504099f105dbc1d0b824da544af4cf2f079c4ead70168a7af6124027f7a3f643b5612cd1151df2e23a994c1b7b5176180c094f9cb032ffe7446946b35e6ef0c85855c11b42f013189eb1e31a839d522ff83520571a746e8535a4a86f5b1252f190b62f3e15885b0c31f7034aac557cdc01c5e6a3fa5e3d13754f2ed91b8c5c9cf4ab9b2cfa9996f14ab912686de6567f4ec53acdeb81d5d27ba012b51fc1d8a7f2ea16a489c113bde1319f6b735237946d15be80a5f7267fd8ec131435b7bebf379ab704c924a45e1266ef706c3c4d97baaafbe08f0601ff662b1e1cbd7828b089a7ea113ec2058c57d0b13c863844487f4a607105c26c124dcc8140b2ba2b0ff5cc55e533bd958085951920a602052de28a2dccf38ae496087013da8e2e2fb7674647932dc28b23bf83feeff048e3dba99b58f40a13233d1e7f9b28b95ab2ceb4bcab4b191b9254ef2d297ea1b0918f4c5f90eb698231993d824724499bf0f7031aba371c97d87534f0f11563cfcf4232223877fefdfccbb9f561d394a1043dd5a9f5948c5f3d503bb9fa6d088061cc058b7ff8213cad30536cb90259c59405fdba840a9d8616d462d79731b181b09da599a3cc89f585c344d5ecaa50cbd8597e3a5698d1503bd0ba7ef5a51dde5c8fed34d62a1e178f051ade6d73f668c88fd992557672fa7e1ed16e087ebcc58f142e7efbca339807bb7d11f03bd1b02e591474513b0d154e1de41cb202f851d8c3a32da6b0a8625d9ba416def2b513f462f1fde4286010a9e0e01d4941963c9b306c1e208330fcb36ab10ac31be906046e7e46b1872158d72fce3222da82bdc4d8d3d1c3c11cf26c4b889e9bb64cbc7926b685f86f812cfcd283621c591b5a445bae1424af596f98f12f922d6ccc8e64b88650898108138750a742f42bcd102cd752746042c54063d4726c3d636751597574ebdbec5c7ce437be38f0ff36fb8900890c96875ec8c9fe31e42205c949f97ac9ca9b04902aef84a3c03238eee32d268a89a3a5c1d0e4fda4d941a4a37b4ff771e438feefd13ca03883d11410840bd94cd4860a5c4f54853746258b8900b6e744ad805cc214a86e3654874fb476335725e1452b16c45f39ce24f32775b49d46e8c845ddfe8ff4e9c1845cc704440032879892921260fd5242107104782fef6c57ea97accdc85e196248bf1a93b1b934b8b70abd82c17a2c718c2376842a6a6a935325ffdf93008cdf826f3b6265a25210c9ff38f0cceae68382803308988467c137229648ed1e27f2b9b961880febaa3a40abb6384e6a48bd5d537d35ab060e9bdf70bae35dc6946f30a259c4cbb39387989a6f6c8a340b5340e11dcca64b3d9a40a7426304e6074dc37985426ae67537c18242361f6361a358f012c1668027147501b4a2b6f27505fd91e22fb9f428f8d6ad970c1d17e0c87b475c11e802c2b9b64197cf8defb37d253c6f48499ca86dc919426c5ebaa694ca4998f4386caf022b39187310f85550e42609f6f630561d595b4b49bdd065105592c69c981a4b881288ec6803c15ec2f1d5ec6ccacfe2139c119dcdcc0b1478e34e83cc227cc3b2abb2b332fda3a75d79e32d4ceda8a44e9b2314c7a64887897d6683bd23614b74b472577a5ed93708548204a80ca4a646001539e73167bc80520f34a4cd4128f187bab042c3cb1404e40965e19633285cf7e07e06659bfa486ca1d2479ac9c947a2c63088a616ddca2e441885c20560f00472f65f240fca2d76b44d51d79001a3528a1065e1b8984ffa81046312105b5a07c386debf8d5f23028ac734918e21da0343f066149cb1fc161bf1da4a67e40b2a0b2799e38fa7740d0252204486d14d0c8f2b9c08dade7e3e9a512357909d5787382870d7e0087c68d8ba06338c7c3726163622bc0f6f6548dd75485f3c90b9cc5c02caf6118fbe9305ad3f18ca2165b4ead2c3430026c10ca1045120fcd052af258ca1a6a3d9607dbc79f15d1b2b817fc0c2ee9b8119cfaaafc910ac723f28314013892e8d3518a72d820e8f771d12024b0d10da21f646a4ad6fa65445eef38a36ad35ca58130b66c4e4917d1658f5fd10eebeee68f86ca4f8d2f7f4b22c1ea007e6321dd1c1e8852a46621822db5a69913ba44d91eb049c912bf04f1ca7acabe9a27c0b1032675ef72df4f799cc4ccc0ca0485f550777994b476f9ec9e9dd9301ac3863802ab283de5ee5150ee0e6f11b00b95860065541e036110d6a393953155e7487c86ee4889b19f704fadc32d5dced12baca7257322c490e07c0113fed1aa5ace7a9d49e56aef1545420f9640f4781f646d143fe19cc1fe18b80fc92e698eb931095b55e31cd60b11b0d2c639f4065859e0d846aeea4da58b15db0a384b9a5ef046142beb0884832388067de32719026a2f657ae801f08d3d15371a3290532fb0f25829f76edccc981e1dd0da102356fd6b6db7ad49b31c39701d5d8ce5dc1cf4ea4d8266c8e2a92f1ec84704a9623ad2016e0c1bc9a5196c0c8e41306d3d57a08046c563d591e0a37891d124530682543575ed4ab36eb42aa1e814be313bfafd0945b166610d31abc6a0f039bb846f7cec399c444d382ca573492f06ec573f64e1344ac11ca1da4649eb81870b2004cecb02484562c31111c63135886361b5c30540048ddc0255b3fe845a6c41c550a51c70d102192c8bcb2d615e380dbd5f94c4df8a4a563b90a00a4842a114f868ba442529724f021d8a4c25143117891d7a27c68ba314e6b4035be8d719b8945ae49e661626ac9c214d54fb270ce72d20301f1a180cce7a8b006001619d17d03decf44ad043927bcf774562ffd07e2e4e09c33ddf3f00c4f4b4660c975d841fa7b9914a7b02090154e4989a511c119edd2a4e7307d8199d545a3faf53f82993fabc65534fd2ea3ad0a77491ac749687d43e8256924210270c87df92c564d6087b9c25809504d603f3d409ccc3da638747d4d0b5bc088319e3364a2a4c0795f3764d9ef4156866d83d46f205192bd58afc81a0853b5ff2142f4c4a6be390c5440202b5fe2428c9705c19dadf40a0a1ea1fc5a038d07e592620e1b0355a0909b95847be0550d6218dd3a3ead3c60fd46e6b38bd0ec0845c8a73836adacf6ec2bfdad51e0aa7f4fbcaeec22a3c545b6a23f8ac6bbbdddb0e0838a014e6f3c4d4ad1cf01c05150aab00322a96dddd07988d24ab0de20ea28e27f9be39cfdee86a59f61e3dafd483aaef0f9734617613c7beb22812bd4743732fc0561338c4f5748dcf25ce9757a0b43a278dab069d1984486d65e69d3973f0c3920cd57d5193efd17040b4773abdcbbcb190231010395d78e3c5148ec1b533e7002f0ed0abc1ea3983d08440584c67c0f9998b882b0fe358c481a973a576916b3f2c64fef16da7a2214303e22ff9e8791574772c6e1852fa93fa13b90eff9a6ec93373081fd4b0cefbef0c12638b41f7c74b4a8b4fb99219f9531cde218f84a55ebb2a3f203e3a2db185b4b2fc93343219e550f2a30ff7ba25c171a849745ea2877b824fb0b02f8ac2e81e0d85c8557a53b146d03a6ffe4856c06056f434badc45e94070e84890080aca48b608b0471f5d5ba04d5f0378d8a3154e7dee13e1ffe6d748fa2f9bd4a35ab1096376e2637626592731b2728634d1a09e810ec6b4d71e233f6027bb4bd8df5dbaf5ebf0bb8e503dd6f01436cf4494dde47cbe341bfdc59def83a8ebcda848ca7c20cc584baef3acd61dc3820f02a298f0a69acb910bc51d4115910459fd8a408b999c1b45505a27ec6a618130d3f0fe73ec17c362e3ec2be7e8bce1ec8c5d0f9eac4f2230264e479715b56dc06f78a7a375dcb1e89395d701e587d3d9e7cda5350077a4cf313694c69069fa1bf5161f81859336eff01beedac036d6e14110d90728afafcd01c9705af963202aac4671241e584fc0db444eea5e19445c32c185fb43179ebe78c301079fd97cb00d9adf7274e7a9371bad98bde0a7f5ee9bf9081c90ae3ec4adcb0ea26673289018f86f8bba8388f396540aefb136b51f21e00ae75a873987913c1e9e6454dbaf3f5a2b78d27ebc77b0d457eb640b6b3c9ed574e4652ff921436b8a8e6d952af4ba15ce3a78372bef0e54322e16652e5a4c2e7ad68dc4e01a8f4424341940a5498a12740d6c943c5fcc8057fef9e09e0c6f867f2825688099f06bd35639e5c9f06a591dec11c5148a87fcb19cae979b221d5bb502bf8e47a23c3ff5f86756e889b058729694a63b2414a2731e25122e4930e7bd1b97232c97cce2a717a01b3c6430348dbc0bd6e8abbe8fb3cb5e0bb52c2d8a6489e8aa70da4501b9134b1933e71300e49f3f0749bec5ecb48a7a41f6a2ab1bf43c5c31d5d3bd5258a7e6870f52bc3a50da3ceaa98265c1da8d541485fd4f2698f96f86ee81ffa63822ce176bbe7335662b07cf83b8b3e3ee05a679486641c49e475c37a7916185c6b552e39438e53eb8594e1f45ac36f1b53a7a301c487cad3b6b3a40f9c646b1cacad15bd0ca1518063ba6e090f61eb6177afdd2d12723ed840e172576f1b31a4dc3bf103f039a5bed68d1574314a5d00a68ec4f486160def72a57d58322aecfc78936b4a2fb9844f15799f50d052ff811495c38327df60e3f0571fd557cdd250cde6991fcaf226a3a0a66cf3e8d10202027acc929d08b315500cd0d2954a73efc0208c6cb0eae94fae962003985258a6f3f82f16fc91d84b26978aebd347859a2c915c3351ce07955f1a53f0e554f7cd2793e2f87b3f898791880210ecb5f1c44de189e979e27b7e364a4bfdaad4f3e7a601034e7b1a408cc25559cfb1fcedfeda5097d2d8f80d1639f27c2e18b17ee349e0df4d85b32a501314fe66fef0366bc49d64af90f5cc65a2c9f439efb9fa5088aa902bb1d3e95b1663b29ba54e9f40c68294d2b99bd9ce7934d68dabf7cccc19d37dea336e7f9b0112bbced629025d14cd7ff380f3038576812339899ffa89cb94d0c39eb56415295a1af6ae347508b2f9c4999c25ef5ad31747b19a749e2f08439cffb02a0a3c330687019f4ce0c9ec68aa17d19db61a2a7923e3fe095d67ab7a19156c4dfcb457872c67d5539f6dee6acc16942e2bec61178e2b0bc99a091c0a9a57f32b3527e22b49636019cd5fce8ff7000091f62faf06c1bab926ffe29bb3c10a29b4d9d7601c5580019a2e808ecbe3a9987057f70f37e0900cc45a129b5e9ca778e54f51d6fc7cf347b9f1230155bac4f4364274a5d1109006db010f42fa1487feb8446b878756bf61a7453af106ba503f42b66ff768f24c3e688ca5c80a9e586026a10277454a51c30e13736b7bbed2e67b33f046107eb0c37a44a04e7a1139e175586801da3d6d24dc9a8b4315639d51f7cf18733eb5db3050014523da83909943de3b84b76042a39d5ed9bde9764e1a01056b027951b9694081e576c0d9d92dfecfcf110008a81180908063dd3b94dc74c9f1c9d93a6ea97c9d1b7e75925d04406bcc90604e3184f176e9d0a58cd217c9a9b2a4c023e1605b53a7a68e7578dfcb17152af230688bd6b8174e920551f200c7343af370f95e75bf6f8230f1447c5c5c5cf12d5b7486638625c4dcad8906a12efc078236b7db42c4b40561ba79353697c4ae01d99a429076e951d6cd6d3c41261c533ae506e60c1f45fbbd64230a4c54c7d28b7b3aa15fba7b3934960753e4fc6c08f748a94741ac66dc6464853a7cf013988475a5f61900e377473923d3c849bf3909a0948538bf74b655d0a1abe0a3de26facdddc4cbc392bae5f0e7ec702b3d0504408cf0a1b1bcd0c10059c14450d26ca9e90a63000adf21449904344dc1b2c2ae4c9885df4470d1f3c14aea5608e91ab4bf9340581c37ab111f988f9e055b3728991b4306e2d2388d6aed64fe5ed47ad8eb4dc2d5f2e8c86a14955e3bee5781184dce9b61422179d8a0b56d1041893a2a52761ed3701c4331c496714767cc65020890e343c9a40afe7cc4be95b8260cb9d1d2bb22b8cb433882ef23cd9999e25d49b28d244c7b80c4060235efe768b30e2f550e606f654549be9c60aaed05ccc37523e680dba3241eea26fb5a64e94a623ac3ded8793a0a6e81c05834030537b760d2164c20a08e88c8a39a9ac6101f79707ac6abd97ca29264a07dcc8a4577e645c522b6ba8c5b07e66a5a5bbff7cb2e698ffa1591ebc900260965e9fd53d656d1bb02c0dcd3ddb510a157bccbde21f37a62f1f4034cd660390074272980e85098ecbdccdfa1af9ca38ba681b60bbf379e0d67756376031ee16e8e0c6ee3453337a4561fe54ab4af4041aebbf559f8a3960b94dfe87bc4d73949c6013262a041bad24e91e596047ca7c5b8d38197ddb33ef7700c81c6cdc63314a1395cce9d7a293d73f0a46f12730282a84a47bf9a87f636152d88be94587716a38837f1132fcf50331ee88c9a182935999237cb866b0ad6517797ec846514e359085ca384f6bf4470c77c0b8f38baf64f20f9fd7f2e93634303747284f72a579c7794d8ec91c0d3e6e1b872815711f3f9dd15ce1aa83706cc3345f75e36784b2b16611de297a493eb582e620d8d3f98d3e064694816be09a65fa95e9630340aea246f97fa12c6d8a8094e48e5b962c897988a680b6afbb6939703dfbfe3e17033f3d3da635ed270fb36bc1e0c684d6c1212e3f4b28c85d30b8fd3f3f33fdc1f2726b670439601ef2bfe856bd9616d11bb334444f1c119459e61c8a9f83ac0fa00602a5b01b67ba9babbb80bc20ee1ab02bd22bac03a887275293a19ae50dafa2a7b320ab59b8e0c4267a9c21b56b70331c7e9e5b7a58b714030ffcc5082533dab9c229d2be3cfe2c842a9d622cf276abf7b2d80ad64862996fe1d6ace4d6089e1a2e5765afc78a724250ae206a2ef770593f7ba1c85bdfd6cd6c8b86709cfcca9b0f67554cc01bdd2f198705cff9e2937c3fce7ec028030a13b2e27c511ecad4e1362b600c4fca191a217b4674c3f46117144ccbeccbec15e88f078830225ab820d6611b50629f6737b25aecd5ca5bbed1c82fc453870dfe7f4b1a693a10f6420a30cc8effffa3b31f467d7e6955e7f2b082612d93d2f69c2fe02fe638b6acce90bf32a0b736877fe5baaff6c9052df2c47aa01e66b134a99eed5fad9bee660661a2680ca2d2c3d482246ae64a6b7a73713ed9fb7f752c85e6ea991d0985bcb01427390ce5d42dc517f372d843285278a0a1eccd6a2f6c738e26cfa50124f205c8979e92e1b73f4402dd0a5112a2cb5bb68e9adda7a2c03215837fc1af3a726b0f26de531dce96257756f353c2d1870d5bbae30788740b9863dbd3473bc028d8bf186981dd42c2aad52a80b9ed6ff495c5774381b45b21adccb8574342e37ea647ee498a16f18a81676d4e289b143b7b6a8b01ca056c625f36093ddd03f760a33756abed5c9c5e18fcb6555e084397c5ed371918e314086fb7cee8582160c65a2358593709c8c9bd36b379a1ef296bd414f3d1cfbc5f4a19cf0fdd57f01745693ba630e424b3352cb741460e85a8d064119edeac530d63e4689ef46fefb4f28531ee0d37cf9e2962d1e3f45d5dd9e3f084c2295dd9b7408e977e5f962fb132b7ea019ce1d911058272c88ba2a577bd218c5c17856fb11e26fcb1fe3f29e054941a94b018240fd4c5e16dd2cdb90d9c42f998e9e2d2d3d4ce659543406c7e7e29e7abbaabee046df56040d72a8fc3ea691ba9d5ad4fdbf417d33bfcc681d31f2ab045b8a114a8c119eaa386949e264de9dca222e698ce5b4ab49692daa5227f9793d31143fba7743e3329e5e783517d94f2bb9eb76affb9914ca65b460f75365163a745ea7f1f53869be032095086fd316318aaf9108b6047381ca2b525a233c82caa35ef2db285da665d3d3fdf9344e729e475018f716238503a1c1ab65b4b079a7429448cc12cb5e1f78dc44ac0dc1f0d88baae95b0d14fb995f4152f972957e77f0946785030e2a1bec25f5b5f95b2867caf2f743f9123fb2e581e386db5508159f12f699c2c46edb8fe95fadaf9b3897e735b2edfc47a70457f6b9bb3018607631b807e0faa11b22c48aabdd1ae1b18cb4d6ba0bf0e282c8ab83f2c5d61c393cbd1b6df9c20420e18752928943658a11a23cf4ed2d4ec8680ce56f9ac60de3971f5c90248259d4b7b0bd7f0d158a41113388a12c2b43b96ad5325c824aca67bf11c449ef28b50e57bef9dd100ebc52eecb4921a1a29826d9c8ef770c246aa39e5857472851a95b648435e8dd1a806a418294ac1424642f752e9ad9688a97603a3375c90f47ceb3170b50208d7521a954528cdef55571a750ea4922d3e977724de4d1fc6107bd2ad4c28c1998362ffce231bd7a905369cf9a898a85de77ae02cfb26464abe082f61a357744100cd4e89e8e4f1094ccd7b43d736ecb18f10220bf31a531f2815f581273eb2234fc84a6e2e09172e3200ac4c9d9ff617d1ebac1dbd8b21485469d0e27f490715ccc9deecf6587feada1ea940fe6936bd449ceb49be283aff814c3d0db0bb830ec485ec24f146c88cd041bf0da88b8f146bbcb0e1474e0207eeb613075ae8f3785ab142a1676f670198bc2d68e8fdaec4f343d7a239eafb70e0920e6b31432f1f52384a2a41d29c4b21692e850944341d2f5072d9782bdf1d23f373aa02191f56f05e5f3532ffa9d24ed2a1de7d5ebdcba153da817309acb10ec919de72e60ef537fe09355c21748e54523df3b986d13e6c97dc62ef4c3149ae20de8cb0a761e6024a932b6a71fe1b080a0b162a298a01ae4077d930456bca2a803d1f2889751edfbf40788a0ba094395b228726a9bd3a052b51a1607d85e27028847b38665c463fb27a7aa66f4f268b7409c33242ec43e0f0cf86d8985f7bc8f76a01f5c6c92f6f36eb5401fa075f9dbeba6237293948d04564e4b20414b5bd4d8ab4b84b2b995ecfe2209b56fbceaf64354f1f3c538415c10270afcfae20483f26ac8ade21a989d038e2cc3be8bccef082f1e540332e581aea34f690896476ffbf47344215192d923a89bee0ea9c02b4dd97484bb4e5f9cef59ea7d072d7dc7397d9af01023b423b8c3e9c6e0157f0c037d3f717794df77763fda3b15f6ef50816cfa7615ea1792427ad29398e36faad1c6ec2d9b942712544bd835d32d1433e345db152375c71e257e92ae2b8308cd8dd2e643e1a2bec79cfce6b800f74d8dda4e160a17a60605a4a2e5896ec26321fde216b3419220980b6b625b179c23362e247b50cde5035d3b0156b637d8914f62eda49c1b7c8e4ddff1be540ba1e0fd7960dc9a85df563729da3b6b619b5a37538c10157961a51b0fd7118c7514c8b83ea81a978a1a9345989b13997dec143ac602aaa2f8e5db00ca3a13f9abb45c71a3964c33e1c86229e1c08e96aea0d829be883f417ef5448cc057dddc501a35196109d1255fbac46ee3737c06115e33954406abca180eecf06b9838458e519bb570ac6c38e9a934026aab7c1d6c0be778e58fa67a0401ed3cf7f7fa0302edf34d4889f7c817459be5d7e907f2b550621c370f84ca0b0dffc5dbcfea1517d0a4d16018979d03c3cfe8282d07501e91d7fa9c26c0d1bac364ae6e0b33bb26b304e3654f77224a207e5bba3b9531f85e4bdc0e0a8759e27320c521f85fae962871c0473c50869ccc5bd57200a28b070a952a88ac85bb3b2d335f734c2285739b94f06bc558ae49b572117eca72368d81a8e24e1540c8b47ac686ff905606d44ad4a585028968b9a858374e0049e1084b90c5730dc95a80304fc42c479e73c55c0bd469cb3f352ca5c764dca70f27098e25091bc529cdaa9e09cf83fdd1810d098cfd904400b8449d4006345e917ff6ad82cf2aa6111ca455010c33f4ef4531ad97bef2df79632a524039a0cbc0c840c1f605717e37f74d9aec79b5145340c11044611dd68df3df71a8da68bc15a64a3416188a21c11e44393e8dcb64d4a0eecdb695991fa928410885003d246050cf9aa7810ed45b3795cb3dfbe1ff33720933830de4ec8e6b5d780264aa2dbf6f267921a6edfecba1f60d7ed3a0d7cf9ac58140c21695e7b8d8dd852e3fa7760f8ca875e91cf53988f9cd25a3d1e1bff1feb3214e63214c67d82d0158de63fd65bf6c3bdbf7e05fc04f9fcca7facc7d80f078b79e8c3591f9aa4798d75999787dc94a5a0861de7a1a1f91a35b848aaa1a2861a4e90c23a586ce1381f52d04d9185579c44031c01bd1e0dd8240af3d17cbd288cc2288cc68cdfe20efef9f25aabc7c6c8c2d17c93342b21c74eb10e07e566df0342b723896e40121cb9c20a482a46c81b724ca680a177c32e1626b1badb7340d7cd626037e3953ad0e340efa4f15ce0b1e0fa7b4cc41c3c540ecf480a8a1a7631fea42d825d5f0f310a3cb8f2331554f92373410dbbd8dd945ad4eff33586117f04bddcfb77311b327d5da7b02ed6a06dd39cc48123a077039b345f3eea6261177bc5e6ab8bcdd78e988782d8c5ae6f4ae83789c6ba98a429272d891e3293e82192e258755147586fcb9f3e678c2c6506864c3b2ea3b4fd0ec6bac40a25643ef3a3154ac06eb44209313ed37237a4376ebaf714651aa4411c5d2fde7a555e22448b421e1d70ef9bf9b647e28547335644446ce432eab2743911e56a4e50c46ec84b2e7f1b085a14c629aa90b97cf98ff08f87befef1109dd044075ccaef87068210e2663f04dfedbfea1921e121fe6f7b3a84105fd48d1909cefecd3e8806f17f078668d1f783f2c66d47306f66354083f09716020d62b73d3cc40ee081436cc170d1dcf6e486e9a1f6f3237f7c22f83fe4f8d237df3e8e36dbf126a9dc584a1a43cdfae0d12007413d1ad4e3fa931d9e38a08104d1a21e1a68518fd88ad9a145fc9ebec20534a0f25d2641755fa27e777751ebca6e761c19d35dc63b2389a376c5908c2d33ae7c2fd4286eec2ce2887bd95678f516c27039eba92eba198cdb42a8f4722fdf95d0f84e43439531a74f4d737777778db39fa0a7bc921a59c6cc9b8ccfb8468a4d2225f3efaf87ec3bcbdc16e1973f0564b0cb485449d53a8e0ccf0a331119472031441134409601b2b31cc697f8aac995ef4b1aa445cbb48ba3d46f1bf2b8b0907642cf9c1d393de5438681fc72cd2d8d0fe7b38571147e6996460ac3c222782849f1174561d8949e921f53a2a73cbe34481ed120e9ffd2a2904190ef8df9f18830ba5e907831b528e46b5fdeb0a107546d58e388de1a473de72c8287fdf9218f3bad7dcb54556dec74aa93b0fdae9baf8144b4fda87c4ffb51b13c7cea7f82503ae456fb09c27dcaffc07d8a8d1e52d1fec60fb99a0f9fa07d0db4964d252f1a0c9fa1b4d6d0e3f9feadf9a5e2f194abb84ad92e3162287e114351e5bb0982ad45cbb468ce69556cbb9804800fe99571f2907c19dfa91605e0650ecbaf1bfcaafc52e1d7e417f85c3bda9c56eb2742fb4ee73d00ecaec3da606de89137b8b20abb0dfbb59fdc9d07f9f5376abc9c4b2dd23e8785b1471c1636b34ccbe2fd7e682eb7327cf7f447a7362c82c775b065dad5a47aca4521903bababd000690cf5a7800c823bbf91b8735a4ed22019facad522ed45320ec6db65df0f8d7a3fedee671e97e5738d977ea306f8692dbee8e717c8b07e8ec2b01635f7615b8635483ebf1a246fc8af17ac45f132e0767a743e465007743b3d44fc9d77c00e2d52f9ce731c813c24bff39d7f1f69bef33c7cb4f9ce770d863c2e8f3b417fddad0df0033e28e37d78abfc9caca2a9bca66295a45cf9fde8783c9e9fdf0f8f8df588e959b17106186fe75f04b4d983ff2603f4d890e1e1fe75f8bf0c2171ef9ef294a73ce536f45caaa4cedb36c555036be789aa594f3548d21dd4480a7d5a20dc771db3f7f57bdf0f956fb9baf23bb2c805a90e2af79ef29094dfb1a18c5d2da4776dd851ae9cd686b4c1b8521669907c5735487e949fd23ef49473408fd220f915f40de82e6fc9f73ce6ca07f9c891c80f1910457528ae045de91cfa4b14d657bb605bc4a2741757dab0d6eb5b4bca0e0154b42e476e22999f0893a871a1ce20925c9efc42b468c331e8c0e97204e3f2902b39497d7263101ee28fa4ec06b52d9569b9165c304f5a4f5c20a0ecdd9cc4e3c07545516e5fa10231145b31da87dc6252d62c86b9fd5a8d5d9806d59b596e0266775a66d5880de1a1867115af19a5949a26352dd3a4d6592b8071506382b428080dece06c7d342849652e5471c37f218920d00d417400079f79c223c6b545c6335e1bc117246b50438ec55a34ad12305ac4d646837c242dbdde91ed4968efe1b64b59c0e0c664922ca18b3a427e75101eea8f41f8e8a591f0110e1dea37e2294204e599d171c3bf34a8b9c41689cfbcd0d1dc63e8a28ed02333654e32cd5d6cef434d4c771b546cd93c0f1371a384268c96b165c2a89c3a075383668b3c0f7da276efa3bb26acb621e0355c9a83fa0f0a554c94b2d7ded7a030a8dd77d9692261b2b813eff85e13093cfaba705a21892c9c8ceae6803b054166d368361f6c2aaedbb6edc53b544c9b0f78a4d282efa59973b6806360602d5cff4ed37125f07aeea9db745c89830177e2cd9ba79eac14e588a84061051e7048054904a99c5c8535ab5001c2f537cd948a49251559549165f33e9ad5f29e22e93a203c6a8effee27a552da4f279fda4f3784635c34c6dffb7419f8e9e4772fed0b93ce06d17eda97f9dabfc8cf7e08899b4f2dc73cc43332265f4a699358616999440f81e0f2df781b1ff2ebfa26b53d9803acb7f30d16c1e37e484382ccf9d4bed09f93491a589bfad4a8e90393707c967919385f03297bdb46090eeb250fb989a6ea0b93ec5f707c8ea7bff2997dd1de4bd73fd5a9d678d17defd970c3c4f57abfdf6cb851220c26fd37ac0ddb2b0f511cd419aff22b4f6f7cd82b214c84e0b02f4c82d878ed6f58219a6693e8d8dbb0edf290b798f4f7cb43afb97d1ed0d7a1c464a192121026709687ac6b629bd5c0fc0695c9f62a7f953578f69a9212930f6c5fb7ef975f0ff537fbe9e16e1fa81fbf1eea7747c342d534872a2915d555d9ae638fe33de76580e1902be37fc8ddc0f0eff60d8642dcf6c00e9c81820f4c79ce7be090147b00dec1f90d0c71b89cf7e132c06de36c2b23646b34606caa16c5bbad34301b548d0bc675dc87dd6b621aa47169623a8dab459dd775de77df79a0c6d5a0180d144d8c26a6451d9496df8fcec6babd6f9a188d6b533935c8554c2f27809b229b5383609a195fd99456ee078cb703d24bedc6448fd4a07e36ccf8b7feefb7adbbb77eee3b2d32ed0518e991068c0ef9773a333e9aad81e9b0113e979088331c4925a5a29237bc185dbaac3bab29b5a6059b66094ddbba6e7bd2468998037f6f1fda4b8a52ca0f73dcb8594d8908eff00fa7111ba389c950123451d23c4994914a4476725dbea106f645f9bab8fe3d65620bbfd4c4be1f9aa49129a9e2caf9f9fdf89e93e0124f929c26e6a10d13e046899883bf043729d8a0e0fa6b36288d145e10436ff8dd5b6f34a8ec440d278ca26a8e2b7f4e988f60d9bcfe1b948fe467ac6c95a97a5c4a55de4767478a64a7cc48866ad13765bcc3b40945e7cc54623fdb07d17e7e9095976f039c3f23cbfe85fe8d95a7a08a7d5179f92ff4e7531f096112447ef642a61572e385482b64c6af7cf6d9ac0fdacf0f420b92bdfc171b7fc306b1f2d2becc78d0c64b7046dbf07e059cac216ed87d119eebbd0c6a37a70d6a6364534489a9b31bd86ce1d8a69c5f459389040ef964f928fb6ecbba8d93826b712b4ec54dc1c1704e381777457743ae953111594c9165ce9887321570c80a31cb948820540bb217849909e49044162e0740e078a031e9982b9e594cd764cd2ca2883b01579a30bc6336e14e10451c0c22c89f3b35c8e54bab991c0ca2684e96a6a429d119d40f82159a20032ba000f60529caa06a9e7c1f2052ce7fd220e7a034c8c5a5b8560caa15f145052cae7fcfd454cdd4544dd54ccd2433b54d55ddccd454a14ea7999a4934df0fae4206556834a9d407c887d97e7ce87ff9f07fb86d10ede5c39afdb0054287907c3497e2541c8b5b5dee062cb99426a55ab1727c5df85e3fbf2e7c2f19dee19ad2d7051e69969832a9992f4416d7c03461c41d606031aa70fdbb48e3e3f7a3c6fbe8cefbc2bf9e0c0dc79614cd124d4c03d3c434304d1732be414d6c9e5ad469549508938f5ef7786a0de9fd7ceaf57c8cf46e2a0ff97b98d67ac494f15d3773cf0ccaf8ed88793b8d0c50936a508ad5ac220bc7ce969dac06d1d364f9c656dbb134de03861a2faeff070c374d5c7f8df7349e03559a3448a5b24403fb683c8d8fdf0fcf6f35c06efbed1b2c42073d41650d2cb6348c8e8ff5b5a6c75606186a20fccbfdb66a9167eb875fca877d3f1f2271fbc397db1f1b8ae0b60db9e77cc701379591705331d7d8e14fe132a5a9e13cf93cc6b07992ebb50bdc7576abaf920f6ab81db96ea4e3807aa45ad4b6be6a14d9f2f999cc4ced67b949e1bd7c8e718fdef91baa45fc7df857a31ed25e82d543da7ba06ce664325917b2e6c0ef37d0590d72d4f5ed54ea92743ad84a5b692b6da5589fd498da92a8168ab58139cb53ac0ebf645229960c6438a51aa5c4994c85bd5e994cf69a5d6d180cd62e67c1bc947b9bd38cfb8e698ec1dac52e5e9a01ec95caa8f6dc3fd94a1245645362336d26d84eda56da4a2ce061ea8f9f9bc34d3546a6b66aabcbbc0c16a31ca7c46181a9b3850c8c8d1b5ca645fe1dc7b3d1856b0f0772fae2ba9ec1b64b1355fb43ce649a12a14c6af65cf55e9c8c8fb692bb4ce645f1b8f060ee69817778cce4bd224be8bde4c33ce4cccf598ec9619c12a7b4f25e254eca7b792fefc56a51e8309816a5701df3e0c665aed92c8c69336e5332dbe4a13e79c867aecb30da34a588a6eb478850434e4aa260562dda2c93edbba7f69a46bfa343a89a0edafbe84e85eb98cea25d5bd6312d6a586711457e82929bfa0ca62e784743e931b4c85d0d3a411479164e3fd484115966224b16cb2203234b03b728f32282b297874c2ccd04d73fb34eef168b2c333f74b72d410651aeb6f1f37372d5200fb1dd6436e383dadfd12f0232becb49ae87ecb7d721b3f37236e41fc16f3fe4fa68f69abbbb9c659c4c264b6d96bbcd49b176c453aa06a940ce9d52a89f35f53361220421c034cc0d258a8b34489e4ca607123dd4fd2e513ca8a14431c9531e5a626b18113743cc64b2586c895b736f0c236206189123a9548b423f5293b4606c74881f0705f891166d5e0c8d3297dd234372d653ee83cd63ca3bceb8adbef4b85b4ef01b725a35d8eb393d95c4bbe090bfa778fa40895c721b25d350393f83e3f2d17ccee9baa686aaa2810bb16dfc21a73ee7854910cffb17e9d917ef55fea57b191b6f434e772b714c33d2cb0b93cd47d28bfccf06a5b1e190d43784a5d9d0070de2f24752f45088cbffe1ac0f8cc4a5db18777bee747e027ef9fd6e3604e1903b63865d754009135bf808918a58d6848a864c8b309391dd457df948061531e4df04195190b1051aae7f3fc149c978f283bad98e35ac415d4a8a3bf66a5b999228945781e53254c8ef07f75d163376cdc6659bb39c0a6fc9b43a2a3dd35f882c0d2bb14b8711c5308194b449a67dfcd82a999fe23298b336f7efc7f6fee9d0b0aca66a927aa45d73c386cdf7772771c441e2ac4a9754bea1b39c155bbe6b05141ac749c88902d5a0cff6f28790fcb3588b36fbc1c07cf941bc9f2fed8bcd64ec10d2e67de839627aa0a7d21b837d51fb351f3f1da8106ac849715a3e92473a04f36a2223511c974c92f2142795fa6c0c6a2485f5b585db0d6a11c749719a74c85f8672b2e59191a81625698903285c1bc423b1853fcb64b2978fa247cbeaab9be39840724ec0494114712b88250e0c1ac6757dd558aa41491ac4bafeab235964a936883bfc7170fd613c94b785a78507c57b7255dcc7009be16380b98ccb5dec224dae1592c8e248e010cb3d0a4782ca7310845464a15daaf3ea44e96cd181e9b43aacce8aa3e2a4fafbb17db7106ab895b6546ce92f79c8bfc274935b85274aa5527d6d4baeff871b92247753a538a5279b644516deb22aa8e05a216659c8b610d9c54db509b1c684e17a6ae3944a12b5953ab1ebdf99a960e715a541deb942dce19f85ce169d5607a6c38a2c9d27ed2676e938891d2c9a00a56304df4a5be97543af1ee9d10d1d620ad344014b3ac9ada56aaaa78abafe33da0a2de358709996712cb84ccbb08b9778878c6381473e86f612bbb88bf392bb8f81473d0686b98b5ddc8ab8630c3c8aec232f02137c49ad377467c596becee2fabd265132559f36a11af71b070a1a05757111438516162b8e1452e5c4891a4a56b3b6b6441c31e3c76560f61cc877a33fe46e1b275e8faf86f2512613d22a51feff281e1745abf5939bfcb3191fd5ead9d8b047e5d102dd97bfbcbe92c816cd384a444e29b670efa5ed72310d7a82e2208929d5953fb89ebdd86632550bb14505770bb17a21d630c417bb48139399ebaa2fe8929a5d1d38f37052aacea1b6a41331e48f844a2864145546a24adb8c343913695ae1bc178793f25eecd230dee19ee2ec8047be83f65e3556b9f01df0a856515b0d739617b156c1b0eba3aa8586d52f9cf5f1b6e0bd383be0a4babe22cbe66adb56da4c9a5fe2494c364f9b7044df73605a547d2444fe14f2de431139566cd79fc391e23ac7c98dc2c3c595282c3833a8f102f1fe13647e7f2851947694327b5ff8f4b38ce32d1c72b9229c262c0e0c27c581f17a7cbfad34ca624760468a6896b30a42dd588e89530242e59c88232957eecf29f948daad346da954da4a2bf748839c13c379d2a05464e120d96650724eaa74994651372b5312d5a0550d3319992d93912931771bcf03392a0fad382d8e14939304ce1172f0af2f1f71a660d718aeb8feafebdd90d3ba9cefe383f7f281e87ecaeefb3d9093428599ccf4014c2673fd39ac1611913518c61618f206ba1b8fbb69b6c77ddf364b041f313f90887eee63df2e03fb66cc36ec27627bbee190ab85495c4d0bb98e9926eccf9ab36a106759edc9948fa47d6112e4a77de927887c7145ab4492ef94e45fa349978493a487873c447f50392a4eaa41d40735e49462b8385206578914494c68944b2de5947cb4291143fe4c704a4d38a1f9b612e7db78afeb719b316a6933b3897930efe5210f57ed57be1ff4573e1dfa66df7da402a689922688347b90a6c3d885dfc1da307661eb2cde1183ca9c546cf95c7f8e8ab3a445d9160d02b357839cc52e5e5f0dcaa274e8956d91798a5db22a704fa464ea1c28134ee9fa07210c1926dc90c399cc92fadd309391d9a2bd074aa208a07d68c315c065ebf9e85299b7e76c7d81354a0f6a7f666b0f326e5b1ed4b0d6e83e5efc68fc7052deab961a344625d2b5c52e9b30e20e7f6f4207d78b6cc468715277f33c4fe5ad428f75dd7bb528e4a4bc588bc2ad14a558b9ae3f270967b511695176fdbd57941e3129725297bd57f37cae042469575a196fbd0227705cab6ed583bae9b86ea56a51a741b40751b4126bb5ad691bb2ebe3f9cd0f2151f0d37dfd21a4ce2fdfacc8aa890c19327ea6a86a824033a50aa2fdc682f5e9771bd0599baf619db599aacd57f013a4c6d7af61bd553776ae26abda999a2a5f6d9da73e0d1ab4825c553e9c2955a74af9906e9ce4e952aaca47339552a55429956725c5e1a438294eaa4ba9dfa4ba6118cbc6f59ff1ac43e86eefa3fb431bae85dd658619213b2b550a07ec5660c76a75319dab7b426745ccc16556b4e8b4a8c3a27b5dff793b0a3cc854b062ad34ad140c6ba54aad54abd56aa55aad56291f75ab556a95ea56a96ed551d1ad3a56b7ea561cd726b31bb01ed4f85d043d46eb28546497edc6ef9a2b8d5c572ac7d1f75dcf8ad4c9441cd149649a62cbfcac671397da59f2507fd31bced2dd9c224b371143fddd2917dc76c2e44393be6baae12cd1538bb8327396cd3927339fae7f97a6cfd22c75596733a9cd46b3d93c053fdad32498c81f42da80f4dd9be195c498d1504dd33c332dba418c28dae1d1b4ecf3a1499bf99b8e4b49f90df8c25e29b6d4b83ebf0e8c570389d4781caf015f36afc59bf2f1fb9162c201ca1ae0124f9212059f209bd7bc66633f3f4452f590ff10d210d20e19fe37c8e8b0163ee0012992363eba460dd05d351e877597fd6cef351ec76b1e877599ed6b589f91a50d16f336238ea0f7c6fb8f8f0d99ceac7c38633333b165ab71a39bf1d18cc5666233b1991b3462b158acab91f2362795f74a9e7f976e6cdb8dede377e346ed9e16b9dd7f4023fe087a6d3cf7fde86e3cf7fdb861639577fb7edcf81bd6c667c6c7ab61e3e3957c446dd0a0337486ced0994f0ddb2597e7bbd4a28dfb1087ebcf6ddc0664120dd063849c01aa782579924c5cff940de89534a067a2a07742a5341cd8e0fa7b4ec41c3cd58e2437b4c843b2f278a52e3bc53cd34ccc2bcd78a54dc92bc57ce495bc522ce695625e29065ec93395bc52a798cbc1241563d77e2449f5230df2d1a706492ffb3ca7af69da8739463ed321fe0e85a1be492aa59aff40ef57975fd37e70596372f93528620efc2e06b71685af218e34ad9582cbcf24aa44f31a68a2248dd6240ffc04c9de7bafcb40d7809f20de67ef597fd98fbf867a0df809f2bdf79f759887dc663675f9d9872669af59ede4217e0d95825a434a76a794d28f9fff1647cef2103f3f8d2dec0263d85bee5e83dc6b903ba5492efde95eafb33ccc1d6910fb8cdd385483b81de4521c8a3bc2a55ae4fc31baa36cd8592e653954bd2187e28ef4a8b9070f40f2440ca5dc0946de31df513e722731c42f8515b73216979d1559d8674c2df2677e596a91117f04f599fe7e70560399c4a17c6626b6b4aa3fcd9cb4d12669271ff98c87f899d650a5db58b2e0723753ed9ba465961fe5471ac4ef33b77da645fea564123d444ace1abaa8234c39c521dbb66db1492b1a13f900307608f0c31ea4199c0c8e10f49184c332f9f4903d7d6a89f87cf6517e3fbaf61eacf11cf87910b4f13840cf5bf0067f1f209b07c2860f7d6a81d40fc206cb24fb141d3f84b4d96c6c781df665f3365826dca7fc10529792f29b99eb8f84c91467c05f79fb393e64937df03190e357ec0708083e9370e07826e1f8d0b7e187902af8a1f603a47ebc94da202b6f837da9bf62997c9ef34348d9a5df71c0172641385fed0b931f228908caaa6cfc8cbff134fec6db780cd0f819f603c4868d6792c7f34cf2bc8fe6905228c8302c569665cdcab2ac512d2242f3a736d222edfdbf0cece65451515151f994cdd70782f3299caf9ccd9c93f3b3fedc6c5c9c962b2625e59954eb33a9ba3ad27652acc78de61bd47c9aef801f7eb18a1a6ae7e76f1f3b5bc782dce7007180f56fd8f8d4a0e1c97e3e77f803a04b04f7d9b70d411474b3efc04fe7eb0f2179a0f79b0fe2fde63bbfb12f4c3a3648f7d5be7c3acf79f974ecc787fa9b0722e53956c8caa7fcc6a6bc90195f8790328fa8f3d9eb68918ccf3efb3ae3eb07b162533e7e460459f919f685613f4412c73e4036fff92192361f2098c47926713e92667cc833332c934f0fdfabbc8a25a2f3dfc71b499b6f7e7f3fa86c0e58c10d9881dc37c87dc8fd077edad44540eeb3273ab5ea4eb937e568b6659e39bd599cf3fb91c91bb5a799952de5904ea28750cec344ad9df9fddcdedddddddddded0c24484b0d28b931ad063ad42f44cf4e035d7f198418aa7704b10e08b428d4c0d5388f146263a60f8116511b826007bb437f3cd4ab590834a8b320342044cfef8794f29359ef03a00b8106f5f70e3d7c342de8e2d02076eba153547e769991a18b3ababe400cc9a64aa8f42bf70822b2c8cf9850fb865186071b771ef1837a56d4d22dd22911b9f24180c414b5457e03e2c8eb21df850151d4dc837b5c1967cf1a6f431c7931c42efc9f28e25e7e8e289a4fc3e3b99263e466833863429d3f2f7f3f8010d9ac16e4060b746024552265365e3eb5674b8819132adff8da47e63c5076fb67df0f7945e5be7b7eb6d10a1edd7131a6863c2ec89ffeeb90f267dde8d69bf64d354bc11977f44b505b026db7427ba9dcbe98bf7f5043ada5c13a07edc5cd70335b88d222c94574d192c4208c06e36a26ad8bab45d160daab419c12314cb8ba26b819edc5cd682fed456352aa15ab45bb14f5a2d9dd530deaeaa1765517bd2e6ea0c629aa785d96df942af97db2bf7839797d53ca9554c925b2498bd80ab79fa9b7e2314b15fb3f1dbeebaac8e244e5330d6a0743e3c854838890569ee4910c555d9515a945e091b758ecc21d9181c2edfec8dd9f3951bdedb9ef7efe1294e47d73f8235f6ad1a24e833ed23ea0af6422fd82695194620a446ebf64b5a8d5a21932b28b1e11f1a48882176ebf04a347d18b987c12239d2957e1f6d34f26892c2d9fbcfccc2af1bc8ed94a18968f3cebaf232df26f23a80635985dfe388a94a0f440d949296e3f27a958c2ed97d661adf96de549b6244c835a36a1d6a844a41179a473a060288d48233df297cb548b980ab7bd489223b7df410981210ee3bba4412ddf5f2f22602d92b63f46164bb23ce4307fb5f4fe295f0e731b3e0eaabf5a148593b9fdcddf9c8cf337f596877c744c5fd10228dcd023592c93856cf9c8b988a1fe2f502f6ebfb4ad305afe8a2cdd92755bb29a7b69de7942a552b5a752a95491c55f25a35c7ff99271c5f8c71f7ba5aa544a54af56f67abd5a2d201031f520d15f8292b4274249f443adf56a5a84a690c450cc21a4505c4740f85d0384f407d7bf6369e9899a5e2d931676b0052f44118f3493875eeca22531bda2e98bebed9aca25731143fe5fa0add62bf58a49c14091c5b32e92b04bc64516460cc0306d2189d398946ac56ad124e690ee6e08adae25a5f4e3f9651dbbb4893aa91b27f55353e4801eb95e850a057a050c08d735588c0edfa529263ccc57e25f0f1fea7d7f3cd0cf6c983d4d29d1284da9582bcaf2902741d25583580d6af10ea74d1ae4a898542a956a49ffa2b0715dee1ea4a5c8c21a7552bb971e8d2ddfe5cf8a6c65e02d0d9c093c9c0a2eff06051e6d2520f088be3cb4621779c40386aa852a5cbee2f214978b70f9e9112a8b4ad6d5c28b765bf57bef9ef7fd1a94063185c279b7634a6996514f8bb4145bdaeb4079b32f02f47a14855aa13a4df3bebd979b479dd4ade3bcf8f5d044b4fbf61b773950c9f694155bb6556481d222978f36bbc53889a32d8a1a57767bb2254942dd545b6a7b6d311b9406f1f6a44114a64148a8b4c56a103f7d6d26d84eb0a5208a56b09562b692177b444b5ad88217a24886e1f52af194281f51292e3fca8acb8cc5e5a7947f4bd2a096bead2e6fbc714def44e9a28e6e259b99d556936aabc8e2abd812451c51aaada8b69a59ecfa4f5864f118637cb97f3fda49a537d456d449cd6ea8ad564e4f3cd2625ec0230d7662973e72c5143145f0f0e07a0eaed3e0fad323d47897b42849d3938ffca9474f929e422d06a6865a0c3d5123f4d420a7a8cec1359806061fdc30448d0cda1771a49d1cc62eda12b6c1f5d760d74f62682bc9313ed2bc88d1c290b94ac468307a8275d120ede4a30c8c0e39bb645f883bfc5d89eb1f6a3618e39485819ee8a9abafae7fcc75cdaadb3bc1ebce95f8bd597751daa2ebaec8325f3aa9edc4c533c618a3af1a344177be87a6a45ef6f5bb2bb6f0cf772ce24846b1c9952bb67c777e56a44a20f07c1bb274c5cc14777ee45111eefc8eabe4b468d09cd274ea1ce61361427f8927793dbf93a7e9f1443731bf2cd2a0f9a7064d69d2c023e675af3e62f968fb29572d9a2f4f14e45c0d9aef819c0ce7ba737e07d6e01d53ae22cbdc2cf7f6859b98c209175225d266a987e66baa80c21527ff906adfbca1bb7688f729a8d9f0331ffe1918b293eaf3bb8de3be1ffdce03f7fd605b8377cc260d9a1eb96ad064750ef3a9116ae830988f24133134bf89981377ce92344596f9a13439e84f1a34bf416f810ed3a0f97275a75ccd98168536eefc19d6b8f3e73b4ccf9e35d8c57fbe8d16c9e75eec41a18b3a42cdeb72cc132ed316d5028f686a0a1ed192875aec428fd034a4ca900203ad4285025f71f969112acdc1164f44115512455a0fe2486ba5d845dbc253add4652dc965ed4864c9c6d04ad94c64e9eece620ef397f6fd51526dbac6042788a2f9fc340591ae208eb497d312bb686370db928c1bd2d2e53a334da5ada8105a5aaab5245bb08b6683b8835fc3c116da11ad948dc1afbd7ca411696d0c76c9c2883bf8b989afc865ed753913431ba32f6d5da62d76981ec57694ff161e2df863fb139a7a2b5f33997392cda81d7b2b357e3a7c378e98e5a15e42d749909b9830300d6229a59412e45464e96724bc8262ce24f56accf29133815ac26d375127956fe826097eb7bf1f9ac4590a6ae8266671a94552d3b4d7344dfef426e2c84fb18565a0e88f991e5b2f21628b33f11c8823570187fa1bc90c0dbcb8fd82dbf1e5a6c8d2dc6256839ab26af8a4d8d28028cabe5f87d8431c451fec628377f477167726a9fe3452768df63e622731d42f8515b5b1b8a6246d835ddc89b883bf892fa9c1d540474516fe2c05633279aa9b411775842badebd21be70de31dfdf16fe8d1641707f5f03c5b5fdedeeff9a2d2ef0f3d51b2277b63314c102fe494e47b0fc4fcee9937908324b2e400083cb86d3929ef6537bd8deb66c60775c3bd71df0ce39be6e7c16ad1661ba6a4a175067be087b9d60e325f8008c16090f99e7dd9c10661862ac1a829cfa726ad06750ed5e4a3eefdb7938f5c65db36eeb7279788ced35f820d5a372ec106a51d372ec106a7bb95dc3d59f6aee238ce0325384157352895a441712b713e01060881d16bbc9cfd30c7dd6cb821b94ebfa65cd5a2199f32e3f9fbb1f29d738705c3cc21e87658dce1703227aa1026fd42ba9f2f44e5e587990c076e4a6c26d85ea00269b792901732555e6ea9efc340a8bc7cee7e7edb202a2f7f4bd220573568dbb6add441a293fd0c222be066644335a8b4993c70336d270fa5362473db6c70fd3727620efe39e090ffb66ac1c6832d753d058c72860d42cd647a885174603508a6d52095e7c9e6eeee3a5b5fbeb146c39e6c7e8d01c6e9962fa6af8eb71db9a7335436714c0ad84bfedc4adb69eb987442988144394c839c63e2ccc05b2c70fbcbd9805041be9fbbb8615be65ad456469b1559569145369134dbb4bbe40aa429e3604cebab41720551d45688a0167514dee15a5c67fbe23635a8ad1045be820802e50a8ac02d925144d0b432e5ac96535c7f96ab0c942c89f2d05f0e14527056a092a971944cf1ca4368a8fc9b0f5995c9b8144e628939a93093d9502dda6c369bcdc673198cb793122557b185155b3a324993281f45927643096ea7cd87db89bbbb39ebbaec7b4047bf1e64dccd6f9e0337cf53a2e4b7f9a4c7329969a387827caea73c641be41e254d56d4ebceefaae68a2cb3d2257533b29d1a34519dc37c4a058d2ae928cb43f329ab7228e04c2dcab810473446451c69b0ad155bc03b7f7b125bdca3866a8698183c57a85b14c2efc6644e542142bcff5e48f79a9f95b21a44615c3ea2325486cac496fef9940a71b44921d3eaad1559a6e6bb17f2bdf74234df7dfa81f0fe7b20ba4f5b1fbef71e88cf7ab67b203496c678687e675f6eb4600b655095489ead1e9aefa3b3174451a29fce24dcf9a100ae7c004497ed0871c77ca923b6f8cbd7805b0bfc3cf243d0951cf71c65c954ee43cad281723291653e8d82cc9d1e913bdf33ddf95e29b264331ef334978766e7d128547a43cd7527386fa779f3eb21c7e57e6bf9683b7968fe7b3cdb696b6da78e43be1c5e03e7a30e190fd9cb0f0ff5e5eb505f5a1d912565f3a1bc291c4e82dc573004bc0623e47cff7e70bf9db6269b911e69fe9b5b923be7d3988f34969a6835c540daa2ac166d3f9fc2f4687b62a3d3a12ccaf29124cda7ad98e9ba736b35684ea1524b354b550d9a4fa550e7c7a943054eb83088236d45571045fcf3a90b2235b18b06854d35b8f3bbcfd35c9325cc475b133134df09ea1b92993ba1b8f3b7536499add37c0635225a29b2ccd7563ed28a74080abb684ac41df3a71347b8d3c8d44e7027943b5b776eada9256951a84353c516ffe9ad39e7d4b179dd6843e633a2747ee3c7ffee8a8c23eee3879eec64d5a204b55764e9676d0b91a55fe322eed0a27441a350b51b6a2f4ffb42d45e5a140d165b98939d7cb459ed45b393cc4e7326b2f40c2386fa338d0cb75f532605d949e676b7faa916b55bd365451c0189892dec016fd8adda54e8d6ed97527edf03b4cb9612892caf2ceafc90c7fda100148816c8401c5520ec7243d7ad458d5d437dd452c450bf15140b2a74abde502bd5b2c8c2ad2969dd3d71bafd1e236208ed8914b7718c8821524f34cdb8118d81115bfabee64a50dbb12c65c34d64612618b5066e626688582ac24a2dd2b24cd3b497df0f8d488f401e1aa345f33b8ce8e200ded133b1856fe770fb631562483f811deb990df4929b1ce546bc092fe24ca440be4c92294ef9a8bd88a1fe4dd55ac7569a4da542ca489a53a954c7522007643305d3b18e6da7ac35af6c8bec753399c8d231c6e88a69791d074af948633f4abd5a3b8f87fba7291f9aa4a53cd4714a534d592af5c72323ade41e4551e42eda11def119eb208eb499185b92c4167e2a8e6012c2e58faeb2146b160a35f51a2bb6c4e94e91c410ff96d1d40c4da5a849a376467b6d467bd6323ba3851143fc1bad327766e6f2b752d96b8b4ca6e4a32cca1176c9a81077f073e6c5e50f35165ceee272e9b2159839939b25686cc5db25ea21827a870635f30922a8db25fa4490a7d4a26f3e4114d91041fd9d3d578f378b1d8b2c2e6f998e2c3df389a218bbbdb0a18bfe42045128d4b05db5a91047d9f7b72bb668115be2e5ef86dd6e2e6e67b65d9b0b0e1159da0371a6b310bd68991dda355f734e669ed3dbd532b1253a16cd695764e92fb94e3c8a5085cba56e7571a56d2e3583b8c48246b5ab5d4e63b23d56177584d9ebf67748c87fe1010a3bc496f9d9532c2a15b8885fb802b8dd56dc26b1c44115a070853bc0b1a8d94b6eadf4b24364e9ecc6ef7888a18e09e00bcf4563e124699d7faa61235fc618df4767a80cd5d99116394771f9dde4a3ecf9bd89386ad87c289084ee04d8a418638cb163843137ecf2173be9fd204999945f8c12f4931bd9b2e9599218182ca1c24445ca468c71b7100d1a829f6251c3f8122288cea19f41204fa8f1c3e88a31cd31e8a201aa87ddf2ff86425cfa3eda45ff9752aaa2862a9f7ecb9636940d6a0aa2e0eb6810a8456c9dd9823efc69a37c1d1d655d6d41891b7aa44b1e59e05577dc87b30fe8cb753f4411498e7010389bae9fae1fb9fe5c37776811047a28a045ddcfcf9ec78d200f08e4a31d3ce44f69d7cd08e2beb7cecac8c271cfdf03e4ddb6dfc14743c41813634c8c1d407800095cfe21dce3a995c70d9388dc1a8e2ccd81612771f9d90011d4a009e201871b0ee1d89a18596c74e44ad3d0d0e363a9546a914279e3c7761a5b97ab879ecba72c30c13dca0de96d97411775845a2ab6fcd0244df550e46e4cb9b1860978543de4ec9243b321a846ca0db9c45c1039c3f9fccddf2c971a64622213984f045b367109042d9a6c0212c4fcb052570db9c4ac568b4c3ee2e12156f9e8abf535209328ad55c6167e66e21495882107e76bc026f1e0e15cf2be7f69d941cb895289a4b161e0a29445eddbf33b1e3e02c28307fbd7dfd12c8bca57b26c8d92cdf707049336f6250992c672c9432c5601f1119b5ca5235c15090b027e420db9e45e2a95ee7c8eb1d6eda33db5d132093d574bcd6e8ad56df658d3b48f2dd29879cb541914f1cb5491a5a9a35aa47dcdbe9b331593e875536c6955ed43eaa46c4ab0499ef211edee14ed1bb7bd33e53749da9724b6550f61cf68d0451da165c951768777643cc2c1ccccdcde05dfc2b1a07570f0c8bbc021f79773290da59d3e1d9883f290c71669519d739ec4dcce0cd75f0d2a2898b92c28dd0e181d296eb41d28507cc48a2df25d10a3f5871b283e4c0eca479f8d6b764b549e15479da0819334a1dcf023c6751f7d6031e41fd70f93a47d166eb8ddfef0039392d44daff36ef86ea87dc3f42ef8eb0676f12d469c927781479c25b6b8e17a96653116155998b801bd38b08b7522ee70ab020ef9db1a5cff5074fd3b193b6ee8c22b86fc7d0b76c181772cc123ce0d3884c316d7fff36476d6f481c5161cd7ffd3456ce1db7d968938fab862e823d3c4f54f1650d78612edd3c5e7a379ea84f00393a4eeeecceb68c41ad6c3297da49086cb07c63b469184437e7cd00d51d479d9f347fec0d885b31f25f44125a627d16750890944a2ff69b10b7b7887ffe7799ee77d33a494736ecc37dcb06d1bc769b8ebf77ddfd732ac29b2d026d4bea135713e203a9e8c4f89f67d5f500ebb95a9e5221c76f9b92c0a35f4266ea77c0fe0eba7c8c2e170cc70dccb877d625a497ea0c45a63df7a3ef4dccf46ab5151b309257662bc155b3e3ce6b198c7a212a214910a28d0c2470f540fefb038ac0f8c63048e130eccc582f384c3e2acbe558d69d1b75249a9a83a8f8c8ce774a2a035624fb68865825dac0a68d0b8614d4cf8b84cfe3a15f9b84c1f1711940aaaa482ba72c5a938250e4a0b28322d9ab1250375889f8352a9585c0bd48183f5da6362ab8787dce36ae36b9fc1e1695f90f6a417aaa4efa3ffd3a1ef15b53ff4a87c90a4087e3e3c70110e738fcab3b21fcede474f55a8825261f0036b50175654cf7e62eca7d5201a5335d3a775fdb3220de2501aea03f31187f381f94ad6c08923370a2a561c96e631edf481e198f9c43eb0a995887cab0f8cb3fac070c03eb06cc667be958f28fdc0a418d7c3f08f1a64910f4c12f9c47c2675c31eee6a5188c3d5a245e107caf587d2a2007859478b4ea7c56171563d93d44f8c822a495a25d5a0232a4e4416151a08c0935ea82115c0070493b66fd0b3c4c324b238eb7a93cbcc9563e66e15ba841a6a274e754395536c9101bbcc1f7956291f79581e32c22e9e252a1f795a1e42b1cbb41e1f7013d1c50345dc0183d8e2e94164f1ff2bad4745aba89ccd51a441fe9d47757d7b26f550c59639c36fc5bafe9b93483ed3a2cf633e6a12c967628b7c5713d7a5123dc2b8fe3d9c5c7f295a567c585cff561e8a91258749e5a3984395a3d4a06f755b3d3e985ecd8f38663cb6aaabd8d2fc8d23167e62d7a5ede1a36fe55f8faf870c3f5fec083f5e5cff6fe53698a062f519e363d90fcc43fe9c0fec7e601f5827a645e1c705a545a135b95a147e5a5ab4487e5c2d9aefff6959938f68684f37b2f07762665349f810e9ac444c154d609e3c91e1df515189c89ed2d7344a35ce6adb26c4d5b41f42105ced6f28ff8849c4f700faf33b8dd28de3381bebcdb497da4f8deffb1063288b5746faa4c6f778e3fa531e3ee277f0d2b8ceb91ff6c86e7b10acd084193cd1842bce40f28f1f1022fdfc596a8ed1451db5fdd3b143f73e76882d7e1fbd03a5b5eee0c3010d7251c73f3af7b183b77feede1fd2eeeeaedf317685d2e7007e224cb45fe249d9d397fe81df6ddfd338e2f73aefacecf9fe218fb008108f16f9d8a1737026d49ecdc38ddb36ba7a4827c1437cd2285dd4b169dd5e675996d1ff64d41a11a43ee73f99fdf8607ff340e4f8142b24e573fcc67a8470ec0b8da40ddd80dcd3cf619f7ef5118ead517d6a2362a8dae3003f40c01d3c54ff03a4befd50266dfe03046fec87da0f06529ef3406c529e33e3675821299609673f3dd84f0f9fcffef3d9733ed402b1f9fa0122e5399f62ed87feca0f21e5b0337ee583ccf815fbc244e55f3edf7f3abf32c37ee67fe8cf50b141c0b76fedcbe7b34604c1f136fe8748f2e1217ffb2b0f84fd951c2fc4867de981c33e10391ec7e3b042566c103940fb99d688202b0ffe0f91f4a1331e881b3f83c60b01ed0be8c6034143c88caab2a8e4ec328855903245330000003314000028100c87438201914ca20c8b7b14000d8ba65070569c075290c39441c81842880100000000000030da3600599b966cf22606279d9695cecded8e387c7336794e75d422adf0d9a4ee8d10a467d1b6151e6d2cda9c6939a87d9ee3ed0ea0822146da646081e19bbf90f69466e3b19839108382e50191d7986818036e6526d6fc019ec25114cfc6087ccd940892fb1e9296bbac8377b469e1453178191d6fac3596d82bb2d4cbd8f3b257463d46f7bf7e2e886e7497f297deb1a11a8913d27f581d57d56fe9b91928b65e3c0863f8606045155e69a58c9df0aa47c7209698f01b585ff95c23973283051564a1dca34fe92deaa547a196c2142b7323dd240f1e7b421cf7f19eb63cd2359385a50a7e52a52798e179d9e2cc46f093e5ab42592f6e8d0f696896861f9131768c34cfd18eeb33fe1397b7626887d790f9ec32183a9669b183370be9cc981bed6d67a872698b23542881b0d25c74c82864987fb675a9ec0a4044aaab25b5aa0bbd2e9bd3b6b60a760b8e4587b07e035c974bda4624807b8d19b3b5724fd0b3c88510945d1421977c2d7dd4c4979ec89a915fcd18991bdd1cdfce87af7bdff0b503e2d08f191c1b7bbc7404af4f63d6c0c488ff8b90a3822c09b8449b766e49ff9e98837614abcf3baee2e483f1fafd072bcda17c7c34d644decbb67dcbde49f18c9c582861bc4a0fdaf1146dd7c3e19104c3f06f70ebbf9725dce230659b7606472961c641979b16aa47730edf7ea94cd0c7dfc95182e9dbc63838deb0ae8648b63dd9c9a172608616554d254ca2359ea4f46718185d2200919759ec9ae834c407b3be874f75dc882ed776883e2e38bbdca9ed42a429b1c7203cb64c6f682d1e5677120e731aff0f329e99cef70ce9e33e0b6d28b52a7b87438ad0f5e40f8b546fdae7e0cbaea2d293ee5d086e1178ec06d5b71946609a6a55a7830d13e4c92e184b80ab414f1d0e4facd086a4b5b62d045a1544dda00e8d51d69f9ac468dd916e6445976f1c82d2c794c793121d941cd7516f2b26c0d246446f801701d9836265ee581d9af3924230c3808540be167744c65c3f0b6a67e4764c6e0501486911905d36d190659b24ba8b87600d7aab574548029c32ddb546b8c8c3ca05878639d593094459c75df1f6ad5f477db6f91818613fed6af07977e011b12a3db46eb5ca945be36a19d6d213dc2c3469ab7a329a6e6991e1788517f955bb861e9bbfa1ebdda56ff4d5140bb60b385b113fdccc95f178fab09b59264a7584390d30fe212919b548c2b727c64d9637be129070dc5f6f3c5278fdccd471a626ebac04679e7be2dca2219b161bb0bfcfeeb44b5e186a9957cd0f64f4751938d61d692b85283499d4f419892d8f4ed1d08693d3ac360285e96644c1ecd6ffa3f2191feaad1ef2a5cafb803d5a857bff5ea39c39f6e4a464dfc0ac073bc2ee56ea73c895d950dc6b21eede1e5e7401c37037bf7d72f5fa9464fde89499030da5f1b1bfd448255945311635a5bc72fb1f8c8458ce85b21c88d354cad570c06d2017700371e35c3796b8d463a0584d243cc65606f993a28754e18c1c8eb7fc977f85441d695f86a829772c6614f587f0bcba393bb880b96954f0fad1c979fcd1fbe6a174e19644d097a7f1b80718e24e1759891e5a7f312cae9e22fc5ced743281b820f6e72bf095ea38491d0fec6072831a248fee165fcf3f1745235d373ceb87b88192ad020e3251304f3d671c3b0ed8332f963ab5cee1864b0201419475fe00d741e80a90a95e1efc9c352ffe594e27aa37972bac9679a44c9f42f302e35f7198d9336e841d02d7a57ac46c1fdbc8daf8c48cb0a206880a4858f019292db1dec1b8a2fa3f6243726226e9eb8e7b62bbaa8d10a65dd4ae079b8bea44f884fe8274718c2cc38a9ae6efcac60306d74a3afa0c789b14e87bc5f66a511cffd6f895f6a6e9624c98bcd9266df8fd8db3caa40d666f98cda860fa1d721272d85bc8e60de5c9d5d76e5818d3e0eadc10e8ad8ab136611969b7a1b5bafcc8d28f5fdd2280498b3baeb0698687c60d6ad9f711e807ea4dee10750eb3bb1e70da0741c3d49ddd009c4dadcf957b347d00c07dd806ad88adf847702d3c95de2e24e5ba250aad9cfcf565dee577132456c097b532ec4bbdb90477666dad04d3842b21aebdd5336b234620ce54dd5730056ee7b87871f6048041393c13670c406ed21d8db6e691600b19df79ff0304b8dd435cdbd83fc4d823c49526872c975be14c8c0de092e25ec44e30a1e53a1d639aab7ce61c428a2a9d65d06c7d1cf812286c866ff673c3f0c60fdbf532883c3acbb710dfa579175b993676f114c9ad9a5dbbb96405ff61e0a0445b757aa45bb326a575c7f614d556307ac84f9876203f695008849012e6ab1b9466dc763e45bc144945d300b610b99890e81ed2841766c6f5b9795dedde3591f408ca4aa0d1d0d4f195cc2f5e9c8031eb970e7eea38cc8be3eaa4b9273993f280fcc2c55c2e8adc3ab5559670ece722439c587d13c8c116b4b966da07b2bf0658607341aa27fa8016d8003d78167ef4aa00402d6fac05e265a05dc37b9387ef9e031e101d04e907f657d86079b26cc6a68331349ca0709ada1dc3940dff2d9331ca535b3ae516e28e5ab8d58a9f35dc5784aad58e954a5ea6727ab02aa9f0de40ba5cd527a4ac12b0ebf847ce138411eb83316ec7dbc7b3bbb810dcbd0b18867cb5b44acdfca3f7d45c52a2f8e709059c955b22ef4b2a9bf074d954b6e155a948eb68412208047110c5228ebb5f6176b4c19423907510e5ab0562ca607242f6168d9bcc560ee04c75f9c5b1b0cb5ad3a9afa8888636e7433c423afdead08dbb9629b5382d0350a157fb7a6a5384b4b342d2427890060c5cca4788ce7641e427244f800016812d97852e65e3641afc83a7f5526530c313989b96ea748d3fab51c5a01bc1cdfde6aedd56ab2e6b94e8d280e5b25ff945bfb92cabad5a71b7af519372546c6d8b25693ab4907711621159b3e5854ce7a06b5492688eb4c256f32fd6a838a0a35f8f4d3baee41558fe3b60fa7391e5ca3789a3ef2b8b471370b3c39dc39cac73914213a112cb4349c390099003f35505252c1f9cf7866aa0d0ed26ba5b6630d117a5ab23e43b1f1ee75958d1c2d69445a34ede0404a1a983cf822ac044aee9d7c961363a90a449c19be6c30964480faf3501bdc0449b18ee7c5b58e76f445481f501cdfda7344ca4d5d959ed384367127d6c7a44056bb7afafd2771a29247b6db0bbcbee133da4ac42eb098afec297198faa1ec6fad6e816c6fab3c4dbfda825bcb13d57bf7fe3c6603bc56080dd87d68444de6be1a956afbe8ae13510209d7475536c71300c322a2ffbaef727106a2878bd8ec84201880796e49328a53b4b2e0e33685f589c9c15ffa2abecd14dc265600c923912886207fa2f36f356c7dd29303ef9c4905250ab2a877db6137d369c101dd03f0bfa083aaeb2a72a5a40e191e53b61f3a5cea64bc03e7539e30863510b76548a34159841be60e1e02b167e638796577d8837d9bc78792cf46d4472399aac08ee6964e990e8e176261ffaff27b5928441aa3484548e626aad8b1c77369b3d86eee0a2c6d15b21cd38afa51d5eadb704c337f0026b7ada18f9562667116e8053fef7fb41d65e195b568c25bd567ac70f2daf58b99ca821b834f2e25f96001f301e95d28ad5303125078c1e1679d23e79093235e1bcdd476915ccbf44dcef57f99829b56a475794e54ff752c1ee42ad42c9493cd10ca5ab9ce160087419c1f181aa851b7fd0cc7d86b17df9f06420718e6dab38b8e435e686dc218ec2688e16b719e90e146f219bffca38053d7bca829d3676f32f7e1a99723d37442aee368ba68810f9b5c1dd23c202e274470f308e94dfa84b17f5e5598866c91f0d8bdd9c90622d5d138859cf7051146197345215c5cdbcf32716190702d19c98a11482ce414f624c5af5c9b0ba6bcff371026b1d8e82dc25cc834fad2e132eab9a0465cfd352900dd8ebe0048b6dc15eb199de7d2b5910448b0c08acfaecf77ff3294d6fedc553e674be89716d84afe2ab46554f82a36c1126e28d6e60981252154bb4e7aac2b208adadeba4577e57cbac3f3932c71a25415b47cf474ab46c62594acbb7d71bba5d0e202618a90e241a65666be26ab96861408e8177d959a763ff32db7688f418b886fd4d41de1a90a696355f458e0144c3c8c40d6ed2e60bda15fcff70508630599e7c6cadc2331648e384e274c9334e5e16bf33197eec36b2b2a25b2852bafd4557dc307c6ef7a1671169b80ea11fb508100615887581cfd84b3c69becde9a1150f0773976e8028e0a7a597f78854c07189f532fb793c39eb0babf769a3b83e086c7abd76a6f0669aed2b45b5e3cb5cc68088a43ee385df4dae0e53ca64bcb26b086f8dc026ef7408d950d23d856c6e8d1eaefe642b8b68099a0b35963c558a07f810a87a9afacfe9e8fd11cf5e913c6667b1cd19fc086a739bb23232898893e574ae9a98e6788b3df3adf6bfdcb49086f11d8a64088b345ccb8020ab7005cfeef22031d276b5d6fae692a70b9f9d551783abd7651c8b0a7f79aa3e4a596b52427f1ada5ed5d1c86760ab7568082b3a06285d1c640049b0bb6b1b0ef171091656ee268ec5a519ebe9f0c59ce8505626707b7340dc2f993e1d1258d11d1fa9a543c43a1008cf2874bfdc34e08b00df1fd7ea58c7e695f13869d6bc0c59711bf459247e3254e7e66ac7a5502e6c4e2c93ded56e97e3895704753fcebd1f45c6cacd7f0b0865ae7784006b98d830877840136f0b284a4fc0ce59ce49998724cc62801a4923d9860d7a156eb4c384042e0cf29072866172412388afe840372ef88549a9391b5de14640e4348423f0683c1e8221fd3f042412ff358af42dabfcb42da53d27d2aed13eac6ad16e25debe18a73228955af2b8e4cd77ead8cdb166c86b672451e636f03987eba1308d42d936c73881b85e02c2c56a584d49246327b495322eb39d7da42f299679aa1b60b8469084c265281610034194765155aabc634c641401f80fb76df4c515082e44e16f41f22e34d6d2c6256974ab5ca80fa321ad4b850309795bf464e5a0da7093134ea318142a8bed8e718982073d6725db1ab113dea81d3dfcb677b25b5e645c8e0db81d2b5803767b34d129845a0d32585c2a024abd51e40b39b2673f893920994731a5f0fb92d44d2dcb49352dbae7196fb3f2e4a0d5aee9ba3248a3493aff78c32d8e4184114a69ed3689c5fb44011332eb6ce80af04cbb983eb80cb86f83097c9656b28b9a8f050b4dda9f6430cd4cdb48548e15cb0c737ad53feb9d2ea16375c2dd4076c4ea1415f508cc0789b14491c4f8da5b7abbc3274d28b929062371bfb02e945418799ccf75f8a0be55b781b4f52b4fa1c211c147e3f753e111ad910aa50177a909c51292e65738dbb21a8e3f3b1f9a5eb967cb2a9af8a1e39b34263f4c637f864743c5c3188f40ec78fc3091a27f683794fae04557ff40e06476f656ba4e9d0ea2064f8649a8434c9d149681cbaa14300de6e70601d9e4b6c609dd5410b93fd4e31bdeb8325c20c86ca71440927740b17a31a82bb91a141dbac78df01934c06c6c50ffd08c8834c7f28bf5a318550eabe5b69a7d1e06e3f7ede9a0867795fa1844a475447ddb20070ff0838bcd71180667c061a343f22a273a81d06bdb38647245d7042d84576ce96fa511536d37cf61deee278c336f58f4214b8644310432c9d6e8e1a89453f515591b702710591a683d7977e217b2d2a5bc5b214381659d3ec3d91f080512e6000003eefbbf57d5ca8ebfc8e281e339a27d22a0b625bc3f18bc65ac7c83a546f6d305102599155f5aae9e4938c262a864ab7c1855a9ae0ea4a8298da02db11b386d84ace2d68f29ed2face16ed9cd9f122558ebdbec81572516259ae670fba1a2833313c7e81ea1cd0bb41bf4c2964304a9a02975dfcc0074bbfcb1dbb5c5bde360ddb7b444ad599555c331ca6417f275a132fa0c52c5815a7796e31d8c4a9f29280ca997195798aa42af78d4c2d6fd13d3e287596c9ec311c51bad14dc0e29d7d88f4326dcc69460296bb4e54e7ce7be90674c36ef136403faa4958a5129452b2357fde8427a2e388889dc45c3e1560eb38f19c1d19c4621c65873430e3905b39f6b526443778f0c6dd0451e551b81ae56aac1d2d4ad250867a0888b591a45840216cea65c2800904775a003017654d34363923f4d3f3647ff8984c8d4fce39863609f53f52abc4db873eca520e2bf72c7432e7a0be0aabd1a36ab9b9274852543dac11d0d0f46304cea8c11f0e1faee50e036d5724fdd19aa9f22757b6a1bbd2ef8e15f06aae1c8c74bdd92fccbe2bbe611dccb2e2b6e3605e9d5706c9b9f414fef55059510b47a2bfdac2617125f32d00dc24a5ef337fe4139127dad605e3798ae64525039aeb028cc9829ee148e104e9b58174e1d58dcfad3ba708fe55d24aaf45e61d962427d42c695b038950c6ad28f79b6ca7afa12ff94a9d390024adc3c229a32529974cf227975653be463315e042bc3e237cfc9f1bcc33b2b13670902cec8ef79cb0c0728de043244fad8130f24d80a69005ce798fc62621da29ebe16ab34247f080b227b3040a15786bdf459b076f440e95567c197c7231afc21f1efa191389b8b622f0c7bfdb360f1e882d2ebb9827fd1ca1bc0bab2891d45840a1f914dc5ae024d0c5fa38e359590442d6e50613032770c787c4f590a60ce8be1012cd4a20cdb83ee96abbeeebe242eeae770cd80d4e56458a413bdd53fb14de16cd7f71386557582ab3588f2336c969ddc3985577ec3b9a50401a0e938f5b357123e18631960e517d4f1fdf1c36e688f97307f7eb22858caa60d59e9ff409c8dd0423bd17d85ccf788f4829fb696b597512335eb2158c5c37f099e0cf7c77f6b1709745269bdc28fefdca9f21ef027c86ac18476e8706161a187e6d88536e28d2c26d99e4a174adf18c57241d5cdb1b5a67e3a8dbf663757f1828c55ee340f77f93b8654aee9df5b28f6b2a43a4e84875edace2bd355e862cacadf1ed53a92fccae19b09bf7cf070313d122d1d40f0c6dd1933379bfa6fe5fe6f967bbfe53ada5ffb0797cb0ac45f5ea94aff7be482cfe6339ab4f0532d3fc1fcaff539de0452fc4d2b2aba42abccc7f098f9f6d9d233cc13a57941892281a229e8d17d9c6964eb2fcd55c1bb6e2133df42cbe3dde0dfd33f9bd17122f29b86a5d8e76d5e21f09e0df26cf7c6f1b901011887e0dc1784595905665c8514ac27f183e0d3580be4b9e654e3f5e2f2a805ae24d0fb5a4c7ffadba7b80f99dd709df2ac8e19c0589f6d3420ec52496c5e83c7183b66e385a094e6d8a365431a763db1c3501661dfd9ad9c0d3d469ea539640cb3e5966e2e4ea86d8f9ae59d9dd529cae1fc6c81b579b9d0f5f6cb5358e40eb6d5f1575a4a835cdf12e0e40e5b85bbafeb6e9239b113b7ea4280e195552330abf3123ed9aad10b7fe43f484de23f35647d86d21f5a369131780e31e8e505ae13850bc8790223187d4deb4bf4d5c7dcd400557138243ea16d885ab8da7703e56175f2e686a0a0515b7aae1262833d4677dc1006670b3f5896dc789f9816271407ebd538ca881151c31e9d144de7b404f90770e6340d1fd6175cbf4b3f3684af490ae56c3e1453386d257fdfa977c3dd4731c9524abbaefe3b5390a6936ec64bfa8c701864019f3c7a833e534cf0030b7fa25db1008e8f0e689c0fa6612d3a451dc0b0b39bc006f8e668050017f8f3bf14f9f3af37d65cf789f7c99db36a6808fb37fc2c64e366ea39124fc45e441d5001dc4e729d02baeb63bdcde7cf1a66a1d911ba5e21b93636d4717be37d2342bafdeeb96c3a657eb117584a67c679835fcc39e1eb991f9beb63f650ed9f08a82342dad5704a6f47cd1959c5ca08749b05a98ea49913e4f5ccff0016920b6930752e71d5a1bb1095a42afec19fdaba5876da1d608cfae368adbfaae1d1720d47d28501519e9494ba16944e80faa880ad32dc7ebe11fad333ca3a3b826297812d1071f5edfd50fab5c2fc80faddc9a42fd7a89d0935216f8d327a413d4bb1f050017640fecea1e915b20defacc95152dbec339e155a2e0522e48052839c6bdaf60c03a7825b3517d9dfb1d4973b868323e424c0c9fd3bd005500b62528a31784df890771f993a6ababcab36e0d35a983cda5d29957061078aee71ad1b8fab6178ace2be4876911ddba028d887486a2816288438483a0f2f421785f2bae9526fa5f774542741d5bdb0b470743d9e07bea1091cc5954ced6887053130c7df1d8788d6d4feabc5b073a89ba8c980022648b4194c658a5c748a5355ab72604be900ef250496c632ecdcc98a11b7ab90dbaaa4ab01a81dbe850b5eb9b38449628fd9de08a5f98cddfa7022f9c1ad36a74279122326326b78a76eed1d62147415083f34502a8b15e547363495bf4fe035892c734abc02980349afc725251301b46ba4eb1a035480af3792fba2ad22efd9bba39034b4974d10ccca5dc41ae3531bb3883691ffdc8eae3fa587c50dcf8ac69d3f32c929832d2d52185c3316e0eeaf9232aa60158a237edf97212ee535b703478ce98c87c3f988f9d520b0f6986604b1d00a0209407228b3efaccd342a4729b78126f3843fae094252326a1e92c54f1dac57575044c391579a9e99ddd205c28c6c9d46ddffe644d64907935f385bd87871522e9a1540158daa3b9125a011c935aab669455f1a07997f042c778946d8bf9378705d3785b1e72efd43ea7849b35848bda29585e61a8e30f3b4b529824f1147321f6d3e4b7efee86bb17fa47863c10c2828ba48df13a5e4ab978347bc1a235a73b3935c2fc0dd4929131654d2734d065def18dbdf1ec1243118665f9320bdbfe84511b38c796aec39a9b3dd7bd5f247e2a00ed110b77cd16373d62c79f214d07f81ce5983c97dcf594141679d4a964dbe9954f35ef16e540cde9d057354efc63c5a8a964614990e6f9cdb38b61ef2e7b6bae87772040b09edad04f08d7371156a1e5fe5f9edecbd438b1a5e30f208a722a0e2b676a085ecf9bd35abc86973312f22a8d31b598d67a804f88782c4252bcbd15c67c8303b1d608df8d92e052428b79b9b290f2a2175c6cfa037b5ccbea9c458b1654e1912446ae9681a1676e56a331af52753aacb22fc0b4990c1d3d1cc5619a9eeed1e6f73113dcea8e8340e29abda42b133585b9dbb04e033ba6301dd33444346f64c13a981f84ee13d17e06f10c895c10885b13316d158b60076e190146002e5f2075b64c9dbf9d83c0a37abc621c4e7160a5ec628d68b62328adf1ab3da6c45adf97bcbf3aaec4fea5a4fdf27ea295bcfc6d0631c927eb34c7bc23fad67068db36783e26b5b93add87d72639fe02f6502556c411f527c2cd7a7fae62a459b1df138f850e6674e00e86b8bda3e48c74b9716e8554e625c8823b244c83862235cc06b6ab4771ba7f76ce555dfc11f9763f9ccb802ab346bf76520abd13be3e7973452094df1008d894638998c490226c9c09215bb0edfc4ebdcfa4ffccffc67106d3a848da3daff47e74bff436c33a98f3b5eb3d7105c7ebcba3924def74ca25b55be283c4f2ba990b159a0e2cd72e60707b3f2e6ab7dad7e96c46625f8c0a94806590010ad833e104c3cee43c8c39090626b1e6c9e393aa44f5f92c916fb35a5af1c828327304b412351e8123952290d03200eca0cd496e135830d055da4b3d34e785a543d9479a580fce6a84cec35e8b7b0fc095e9fc96669a0bcdc4c0ad5e1b9e4bb9bbe90d2d3924eab37e3a42b46020ae0bfe298c4dbba47aa9cb8315093b3eac538fd087360a6084ca6285886d6f335acdafb4020b7ebdfacd5f4c44d8fbc571886ad7955cfabcd1e283cd7c0562e6a0fd5a6f4fb09ed3ec93a6c144de85837c05512f6932509e417f81f5b4af173b57184fa43d30da9fda0012cafa55d3e0518319cdda174cdc8a087898b1422315480e7d58441c4b81a2b411fbcd825996a3e6a015b14a301f3c124e9f5ab4de7ae51ece85526d74956d40e888e1e4eeed0a20729dc5c692a12f8525c65c78caa820dde0af0fd8fb9d6494cf33f8937c7b80a4ac1b3ef1eb0cb109bc1f37409b781e47514bcb0376820f103ec6e266c7d85931b85c058d95f38542b8c8096a80e8c5ee4669dfb93194d25ef754c0e5889b4372295ba5f89b495b0a4271e95883456678e69616682fce9522c02ff1bbd35cabba76c86e53cdf092f8ad3c297d83f3c588405cbffb6f8adaa814b8d167fdbd8eab28d4ce429ef6639a31a1b19db9ba228be13072c2841da9bf5d44e636659635e72b4881a6609f330880bbcbd75466be9e606454347bbdc11a4935117fbd604faac1ae0731698eb45ed285d71124843b11cc4847ab2beb9e68d3cdf1928287f3017675042b002389c3536b920f485dd1a81c1bcc1d0c1336d57167f10f493cfe87e4ed8aaac1abf85ddfe71943f25fbf938d56bf632f92ed96525ce899a465e383f347221a1267b47b315e80345d9b5f328205c24e734fec6350fb23e38abcfe311b74c16dbf265f794e44bf6c5bb3e97098d64047a50767565e828de104fc461351208d8c1571e14b95fb9946528349460b70482844536e2fa6ddb1956ce8d548f5489137bfb92330a6f73ba526fb00bcc055b121c365bd49d6ee3b5b451f6504d5aac20b1a349301a1108db1d78548c80580e6f7473bceb9e944a38b69c67791a135b78dacab1b00fe8f1c93858deaf4f88c0f0d104e319c284d1b49ad472c892ba0247374ff0cfc6f21772a788913c57e712af0ca5dc500992d29e7e044a9ec2b8a67f8b281e36b5223c22162620a2db2d83ab9d6e34e064e235e92f6f7542aad5d07ee692cff7adefb26b631f34cc253761e11d995b321817c8500b6c80f3c5f28464dc1ef1da7d4249d5ede1be52ebc7ca86c0034b77ac414c62f9d465638cfac153e488407f0eb2ccc9995e42345e0caabc675fec655dc3c54f0b3dea1c48ddee3fb7f424b0b3abddc44e124d16bf37ffc11a27f0114980362a9f497127ccf06bd983233494d911a2d9b3f4025833882d7fa71b618fa6888fcf59595b7c91d23d2162e2fc26e0f146b9751a600635031988f70e14a3098f022a734b0193c1031f8f732cc56261519fe7407ebae1a1dfaaad1c572831a3a8b45d49d83de26556d3e403f0b85632d08fd3cab9f1ee8d532df88b7e2010949c68fed962bacc2034858910114355ccb67d4fc5375138e64332462acf465723ba415b2f869edff858a200e27c2fb42af8d237208b0a3bbd4edfdc70386f04b15ec9c86ef0a048487b6fca3017d6ee41e67da6cad2e45817fed0335e54f3c3816537e11fb2c4d7c6c29186b3ecb2962d8a143e402132210b11e8889e0c2a61ef4f503b947e8e00f4490629b9eb25b35051f342a6a36de0008fc42407071bc499e5d2bae2a485e631c119b22eebbe500156ed2080fb6a73ff59d3142973de73e8c93eb2825133f84ab900c2028e98a88a5ca8930609ae74fd231906fa3c715ef6e63e862e1cdeb6ad37403c78c5e8e9d731f017882ac5f38debee5a2da76744440ed917798daf639ea7e8e35a32c66098571121a50567f5f31e72a2629afa69da49f2216a8d18d199dbcbb7042e3d35dbbd017cbfc6f0f7f881bf072b8f27fa2a93b381fce7924e95b0ab34d75eeebf1b58e2eee018ab8f6367954e0c08ece3b7604bc149972465d24bb1ee4d473555561bfa13cadb8cd23bdc8814c924b6fcfee56e3bfff2a0a09f534ddd05d907355aba028a08e2a8c73dbaad4c28986aac67b2d61620431e7ec933619f2175ae07bcdb92275ca6cf53d2b135f053914bd174a1542774c516495c4491c073212e15c30d7cf88f10f34dbb7166866b06022d93e5a2168003f45401a7e17f9f34bfe103274edaeb411dea540b10d2abfb46917805f313e82ec880b1b0b728950d7b1b4bbc22017c28c0f35e28b93f71d3c344fbdba8ed217ed927caa7055b0304ea1c5291a07b7ab81af1a3be7d99e39c20fb6ce516a6261332adb40191547bd76c2fcee29364bd33583830621eb0f758dddce46825c1e256e6a2708ed196a4667637824e9851b5086127f2e6b2dc7558187e418a3536ab3114597b65a13bb6bf9dd484141b1111f8ccfdb9403de5fb275ee1030701ee6a3819a53de833ed13c4d66d58c0a6ddeab9f88d0cba491ff53cca389a91dcea0e6ea640978bc94f5889a82859d80d1bda06ad05d73964f3397abbfeef9e9483f600b22d3c020addc7416243ffc1b2453c71a20599f324d30e8631768a25b27c706ab8a068b9667db534fdd671925d68b870f11ab5e3e7e61ddcc6d41f224e14d1af57b093d6d2c18093fb9f769fd8c829fd95eaf90f66bf67a3b09bf4b42e7c0f9ff25fbf96436d21e844b24fb64953870bc3b2f2540bf7e411a48e0b065a7f0a610fbc87a10c158209c91850d2ff1eebb884cd0052e333b6299701581c8b2a15c2cceaa66f3c81d3fe7cd45ddccaea4418110b8af277739ff926f797e1721f8051e1661d5879dd87211474c2488c0ed4d29125bd026efc4186ffb3d65c8b2356568ebddbc2606fa9e797d6d439114bd185d75a4c94b4847973e3021a3f1a05e566f64387e907000f88ea896ca9c29b43e7c773f99d2a506c1a504187806842baf43b4eaa156d9f818c0f1899b1544cdcfb37a726f985aedbe3994350c91905e93124ec1cc8f42d7a5826545237236453535c34e8ac534edb0fa07ce08f70b4faf64237d4361b387c324bf2c8d313c59d23db96b94d489cf84e84d96e4160478758dd86ff4ade655d2b5ba638e84da45b172b46df3aaf3eaec9b31f6dc4efa1fdd69a143fc6e4108d2eb424dff51a8b5fe532b7a1c3dd5136c840ab770e64ed7e63a27f6092e45d11da2c84dc812feb049e6d68d757d08a8d856d0c010a8ad7533905abb998c16d62386a61fb4bbaeb1e8bb1555316ff73dc506ca9940b700dda338b8ab7d008001ec0e5c5c30f0e2d4698537a4b05ed78f11624b9fa9f12bcf238321a0a1a2170611493732596db36fbce439fec53f9e7e528811f640be4b5c52274259e13102b35f365db3b874e206233535c1a68f7ae4b9d589276263909db152ba082d7d35f41bf092fddc4cc376d80305c50eb08961a8a885c9778836f5994ab987b394302fbc8a73692db66621af92bb27b1ab06dd12f7496583391768941cea942d11eb0a212e51d2bd0d45bc30a1474441dff29156a0efa531d2bf003e8ebe7e9d80e476041a19af06098078a161423b33e27dad053567640dc01e0c04bd3b468036e60b80c8f8a8a40a77e637461a1a18e016c0203403d800711b596635d5d4dd6789a8e586fef9f9ba5f3e3f504d03c55a4d6fbc9cc75d2de7d163391fd10d8f68277e3096b880ff690764c7336678f2b18d4804cf28e278701a77fa7a4582daa024104abd34b23255beeab996cf98447ded8a03aeb3f591a821c6e33d27d1d5395bcd5b06720d798fa4afefcd8d39a7280133b06754ecb0d24e5913b4f6542d04d344a13e2dfe7bdc1d108052efa026054915bf229e92e6174098a568d5d8e7a9fcad786c218d9804d137f3a45a0224cacf42424a6481009c0a4325031fff66d68b657dcc2f870517765e8fcc4593e26bf917a4a2618a4c09c405544a5e6248ad2974b120f229b5b0849f258a7b024c92e013068b45444c00ef0502c239b3f087371ffbafccce1f9e85ec760fb171a242e586b0bb8af09f7ca31054fda244c40e382223e063a67796dafe8898407bd02f5d667e859681c80b2429657e25195f1c8395198ae2892bf63ec9ab413d7188a40c1573579ec3b411a359ed8b1d07425323ab12dd52ed1da7b6a9864fea5522f2fee5ac546a9a53a3691aef341d9d4e261ee8642564877b41ffa53ea8f51af21084d73316035d259b2dcecf95d3da672d19cf04bc7b2009b2eb8b37ea94ff688b3a35793931e438e0147638517f6b223ba0a02c264806ed48003fb05701842e290c2602c07dca07dd662ace8685c3a106a8d1ba682d6c72bb819de127639d4e0551e822669589eba8e35ae73050dcaa57fa27731c0a33915dcc2c7f300099f8e2060625d7293f7bb3f0afc9af4491bdc471a959982a925c82e7afe79d6d7c4b28d419eb167298750375ffbd197ccc84a64be584c62a3ff881bade75979046ece25bbaf508f9efa242c4735590b716764e4e8f0b6e8e7b43216d8cf08f6d092c2f718a51e4e4fb1f9df39fe502811d8363a8720a996c8322ef1ef1567d4c78304c5f67408555341cf3eb1a5a795e57791756d6fb08c6baa71bfb8b18a8c5476c1e8bcd4f16da82fe5317d48c7c4aa5424d6e074baf2273661cfac3a51d588373378d738bb561df1267dd9ac1ac99e7d6720fe1cb77671000c2949d3e39b5a4da51811115066ab628c7f3efc789262e48c2288d930219cf9421959bc35a30bca86004a0eb7d436acd5d20a1389247913903ba8f9a4366cd1747ce9cc19bd0ec4049ec80374dd9a787268502afc220f7337961d793049913b97f711e4365176f78415396f0323e87699b2170a6916d6a05ac459b108780589f81e78239263c5fc9c60b6c939118b91b068ae3da8f235e264377488270b54d4c3c2c9263cebdc95c21467244c962b83c38edb93bb19fb7220b8f968994a8535a7e48b246b44b0ef28387f837dcc0e30e03ea1575503b6db5aa30bfa8adeac084f63bfa2ba273725e2085718270b1355002c278d55f4d9af85aba5e10b69ebf32e00d806a0a77fb666ed89ecb4b7f529794ed6f6933651a189653d6e0dcb121bf299ec32be85cd25d2906e3f1ccf5b49b3668970dbbab93b2eb1d5dde67d8039aa0291ee85cb0382a9da95f64e878a4887f9f6fc06af20a23c23250bb4756d425c413d43b7fc3d2589474614d1830ecbee0a8dee6784e9286130145e174c31d125550bd4523834fa035de0f1664c2fe2f9e29dee6842933784caa7321e5a6ae19255987a01576d20204a5b3fd9d110c939c8b464a2368779fe12f4504c5c6b51af2c7fa4e5011887d4952c26da8381d6b96b59677617e97727368849658c5bffd9b2accaca6ad0ed30fe0c42549e9fa835eb1cb3529f2391422d6e2b00f29bb886fe0c48b453a339ad5ae52cf82818fd1d3f3e8b77379557628ffdca2dc43ac21455e59a83898227fd142d4a0148c5ec140b33ff554d9e785b06be6b39edfe9ec5903328ed326cf4e6bbeede48f5049f33091641c61e21488cb04bed0d69deb3fc896b04df19ba131585df22054231eb3316b1d5f1ce72ae1417be0e910071e81385c288db3d8318dd50a111a0ee05688fe72c888007a426dcee74dca55a12eb97936894788e969b96b32923f0fb5fe9f1f39bae890c09b6403b475936226aee419615c4d188c3b16a61e3df9400ddda6eebff5e9f48a9e43e45e39d41c34f44756a07191b07171928311972012330fd6243c883b7a2c958037d7da1aa1fa9d65549e4f9664c3c23612cde0cec012c6b089017e838d129825040d545eab7605daeed92accb2e85caecf89a76b817152e5653db04a56d6c6cf3dcc6249a6c12a7d5f1f9888442e3559d36fe1312dbfd4c67f87b99ea67063224a6343fa738c92c1d4768d50a733f010d0f5c69f25b9e3cc295bf6804c93ce7640956e2988d1b3ac29ad924e9fd75d57f000d07471b589459ab17cef37ceb2c99dcd4fe6311b05e6f008cf49b1d8970557d84f43d70857f987225b495c0c499f3c572cb5f121cb7471507b4c5de00d25cc46bba04432ae5b98be088924a5eab2a97100e8a0e5d94bd46841764afecc6f148b7d217efde6658448a2d301c954c6b6c1e86ea58788f381a76c942094a2f39d7281f6d58ab3a9d4661c5371a7a08e19d35f628012a37167b04c8dbf799977bc8d2436ef0ca926fe28b6ebab6068e458c3e2bd16128d6a992b1b781e9ad0586e7454717669d2c97064e2ee6f911bdd9bd66fbaf911fe266db9e0b40ff75bea03110dceb8779a0c9dd97c45e163140a8184481f375314e8fcea4543b4b569769d339b49b16f339875c4612bf29ff210af5ca4bc97f6c3831265ac8da346e5b717d3c4124ee574c342bc52c2dda56ddd406faee6afe3861a78a71a14a1a0261a6be4cfed461205f73dadaf17079c4f8dbaeeac2d97c64f1ff9b2bbc41467cf7083f7c5a170e226a3cb880062eb9f291ab790c494903201a5d4bc1d4198c5fbb455258ae1d795b5318f19c586949173b02731b9ad9e54ef74734e53fe8ce7fc0c6db251c0c75889d9035b60f8ad4bf24dcf141794b98891212dd384cd39b250c4ab9f705a1963ecfa3bd7770a89024e881f86e3d0eb1b47a8e6b4e189f01aeda309051b619c7321b4b74010f439cd45429eecd10fe616d1b21ecf58d19af34490b4ef24021a22a078c4256113dd44fb7f51a852023a6c80dcc05eb23204608409c959c38dc9be2b054f0866ebedfe37a50ce23bf019d345ef7ff3b40898655528b1cd2dfcf824311e8c0bae73a5cf7810fd94ece1e0c079a722646649faa22186591929009a55345a6fe2db59e326f8fc092fe729957bc2012d65de91cc6eaf7a4e79f1e58af026514b04946bea0235883dbdc503874af8981c9426e1cad0928fb7442fc5e9c6fe829742476edd61a73ac367752ea83711a52c3a8eaa33cd1d2e381b2c7bcad305055016f7e34ce1abc104a8dbd0f2c7b1e00f0419f74a6f5766083da071db4950fb8badbc28210050e48182914b5039b77f7e391c0b2996900631e757ccecaa7416521459c7ec000a428a0a6e4d4675f2845841e8900504414bdc149ed869c790bacb976e07860923552766229246b2e629c02c1abd1f8d89c48c81c6aeb36728de321ca429869bc6554dc0e0284b6c79bee57b3bfbf64467f23d7c498470f366ab6802ea83842106fad22a37840808356af2083747d7c5bd031514bc2be9e1382d47c3b233a730fc985ade626fe1bf391afb0d116f9b13be3c0d0c60218c2282a43bb6e7b3c3f1ea7a6fef93652f36a03752b48461400e9cfbe60c171e5ed6290b8382d5aaaf62fac4f268d2db1729a72cbaa844389a9a0190575a305ee7de6d01f3ac003d588e77a7e9a011e4b623ce79df83fc4e2f71c8ad7386f77258d00b8a1649b55ea3dbdd07fcda5cba4181c1a065fe59edf09762b7ceb0fe435f5343946677cd92d7921bc11c82ee87b2b2e67a6f8047751fe683cdc430c2ebf3b7768a91bce49d1083ee4847be6d5acca58773ae134f9bb81688265b2cb72ff88f842929b38a3e31ed0ad2ef8e4cf46d77410e04c41081a59a6436d0025d5a3e321c4162c05990266ba27da0eacd070a824cb7f98d5c85a2b7cf4d5e859c8d3b768d5a9c607117bf16163b4b2145ebc328943eb2ad5e2bf2168a9b4e37dd31e11c084a330bab53e9db133e16c23584089ae8a27097cdf4dbbd131a359c3d96d4fac9b2e69e91c3a010b4587f4f47a1559ed43e70d415f93fc347a150f910e8281ea05847e27962e07af9bcc02484b24b145fcab399505e37a7479b6a92f59f45fb51802859b5d31586b53be676d1c42bff5dfa25c30643b714d1bc60b43a3a1f953f6e70a77e41c0c421f1efeb45268c7ab39bdc227b4b9e4e3c49d211c2cca50007086401d2928ba6a7d7816890670680a880622dde684deeb21ba2ee3c15389fe576f6314ed5089835614fd6b3ae115219a5a4ebe4f29dae9852e43d13ae0dfc0c2ded193cda22fc3647e21ee5d20d15d859c732548ba7fa88c2346d1d0671b2f9f256392b7e13180bdcf280de56b8baf53589ba96a76ef5d7442ed372e98d689420657551e7dbe1356226b90e89edff68edb04fbc471a58f38b10ece31afb0095e9df4843ccc2d958b0c2f03c591f353aec750fb89023705602c75264f3f65ea892e1e5af5321fb105d9b3bccbf71cc54c5cb664f71aec3ae49055416b461aa40b2feac3898887baa37d4d6c71ad02e8197886650abb97900aff4fc706a4e5d1ed63b5a059ebf089d37b2ded989c49d1831f1cbcc2ef130d8abb331b7d4466af1b4fd3bdf7d09c71360dc02fc95949a2dce35b4bf2438cd6b14c906a1784ad06ac2d5719f14df2eb16099459a619b42d1659d1e2bd759d5b81de66d8f0d359d7906bb2bffc7fc72fe0b59ae723e2ab8b3559b89c6a9c073be77de4bc445104036336d13cf085a1c47ce7c097273cfb28529c040f2c2ac74dd0b8069eb8169b3f74404a222c6c498b1dc59d9bab42d477d181d062700ff93320a5e1cb8aa8a05970fe49ba59efe8a69cd011f20e1a430c289623f1e889367a80d737d0fa84f26459c430c1e326a9e69467dd61a2ecfb4b034de418aa0fb6390a5e856df48c0e2686ce11b36e98b4ca01ff7a941030966cb3708f9bd160e3edb069bcc9653bdc7f97fe5fb25c1421ad939401fdc5c488f962822f44d02d90e85e1420772aa1525911a01615a438c4c20de63e025ee4f71979d33e3c187c09552b7044dd1da3253b59767a8e301b36a15cb634aaf331845159c994b26b9fbc1ee845fe1654f0175d94a514cfad2f3bebe1042bdcd7785ec6f38fe2a9e8885513a3f535a5fde836b99fdb171f6e45a495c9b23d9010b12d1a6e16bda3003068d87f9a78fa99186b8d35787b2aa27a7e733603baff2c7466fc3214d5aa629efc4d4a8837baf4a570d84e92f3a40062de7e850e8a04fe1a766fb4d80751ea4e024170e49f3cdd9531b76195877819524dd6b9122a936f43d640268a6daf3c5dd3bf39dac24d2b7a04c9d744bd7f225b5753125821e7dd083cf8ca19516f565142d1fc40c09fc108991bcde1a67067784f068c37d690c371456873ee30e0899bc52d680c589d6dc4eb0cfcc6a206758d2be9f94e939777d2c591af2d67e38d80100257c0e0c5a1036fc49bfa32947e695f352775cb92925a94bd91b8e6fc698d5b5a0b8a0d032db630aff343d8c52f816a2754211fa193bf7456c21182173a7d0ac6c02827c02de44567170a810788c31d6bef1f13e7c4099d51bbd43b3d4dc4d34962b7692280d3b77fadf22cc5b965d6b68173ede11fcdfb7e84bd1b491cf9aaf5984ad4510fd54ee4480fbfb8278bcd5a3b76fe006415224ecd1ff7a27db8d6d84dec06b88459d1b4ecdb3b95979df19af4a539b212793a00d556c092e5989696c9acfb3d02e4e8afdf5b0b2122f51b69d5f6134835f4d873d2f2f6853e9e93607fba39768680df4bd24a2c95163c9ea5c27c6f2793366ba28d26e937e65499b749f2276a1f3535510fdfaac4bb4e99f79d9b86fd1c0fa4e5354e1281c3c899cd27d0f10a334569a3e50c0d79ee0469e9918f1865dbbac0525abf60fbcacb1067fdabc72de7db4898249aa222046718f270f3800ec8ea81c930be2723aa28c5e16cce3038ef9869eb015301fa92e5b06ca71684eb5063d028b67a396e7b20f88b1c9298285864c8c057c2c3779f611d5858e1f2afedb88c7f23c7bd3173536a7e4c3b84a344ace2ca6ce2326eb9d593327dbb287bf7069b84353d9ffb180ccc1f38390b56b3f84687118a4d84153b761938cf065f197baad723ab6977af1056475fbdd7969e7921746437918c9af76668174cfacbf3c921ba4c01daf92b749ddcf89e334c0083af9f8ef8db63ec0bf58594819407f34af254940205d2a7c14623b136c94383e0d7946f355314cd90e669aa6c3952ba3721e705bca28a3f11d77910b2bc4ff821cd3698c1c7abaf26dbb9ebd3ed300676189a30d369963e9c0bb6eb40ea663e3623c1359233401d390637f6d71ce19e8dd6d24b21194d4c369e7910eeaa2601fba3d726bb7827d5316837efb83d2010b0f0bc65092fa45d549d02cc68c0517dfc7667bd93a58bd59e2aca7f487a74f791d5889154214503ceef5c7374adfab771fa8739479f18c68bff88d0ef4891f9d712d448e1e98f0fce03caeea06c669565578700bb110bd1042b3fe24d7bf06793d0b74612df3655ba05cc41884d38ed11d7b4d02849b4064ba681ce3d0b0bf273cbd202239136b9083ca9d76f1d7837cd8a3723961d399000271475b8094d6d65d9378580a573290cda0a6334c8e742c8285327180b488c989ffc79ad52ef78eb97b43d6d5c246f43156c023c7c5ff4dd67bcbb06112d3bb79ee60c6bfc90e1c019cdbf84bf65a2de4df7b22e3df6258a6a3a7cec4aaf1e46ad0c2d656c5b144fc608b67cc327afbd1acfda44d669ed4df0d66bcf54cb4f9d86052ad7599d663a18ce6fb66f19c2a26026fa8976e35bf6e9479e0644e2d18f4b79c88e6e5a134c7a6e2b39e040777685837e660c793b27f8d435c4dd3d021974121994d10089c37cf4f681d81ad99123507f277ec0d3c1741b3424f349d4f09ca8c8bd2d295507c0bf2fa9e22cb8a6cf4e9192acca4fbff41843202ddfa776558f594eb6e8550f806c5201b1495b08bec1b6546b723add4f0ac224415f397406409a58b185b3ff6f321660a22d894bc79848b58525fe1f10fb2fc350f938a76004c8a004149f0fe139a0cf33c06b9fcf839003827b8adfb349b6ba2078d46bb0110082bf7bed3ea1ee6ca740f33af94fdaf2b4de4c42f3fa86fbb50812386d613e0071ff260ddb08dcf4939bf4aa260549a79051fd4170a7f26530274b15e4178d1fb977a84f8dbbc275109aa8b5815c09956041e88aee774a02e2c290ae22051c6c9b8e415a89d376134206efae65bc66d2918ee9610ed52797d39f93b1a08458b096789d07498ffc7ce6204d6aa7137c9a2a352ba5a2bd7afac40f64d259cdf596ab14cb20c154e9eec3c47c00f44e20fd482f7dfbf9a56a5d3a289c4d7864b64f9991bc4954e8fc703f2505e4845c3e032a53a892b6853b17833bf2bbc6097ca7d7818318d764be1135772c7c98c0b6c4374ea5b9cd7f0a0093d4e9c7df3678cc300892698cfa72e476ab9c4149642e417cfd363d3af0c1e3720aeb578a4f88a6f3d6b3c33f250095f190484d3a321fb846b61f931aca6abae505bdb9061f713dda9368a73c322f4587b6b0a9bbfa18ba7cd0a92a76914112ec684d372a99ede48b76b26560d3e13bdd89fa21ad97b620ae378a7c75a42373c95e9b2624490512164f237bf614074a1fdf32fa9feef00648e9deaa722d3568eb8638bdb2e5ce4f6f02a30505b67d4a6843b9cee44a83cf4a5ae016e5dae5862758f370e0431d796ea3a1013fcf92eecf5d0de0dc23462e9e057309129308417b83225db01ba464aed44d6e7d06882d19d4110ada53a53d44d0b4cbdfd3de3bd8bf4131d0d72dfab87ec159dbf3131dd8506976e2b889ba074f3a0d250343a87ca3b70c7d3ac970886a4f7e147d145043909ca016bc1b4f26b60b003da49ad9de6db5dc2bdb743374dcddf70b5cc822d929d45e1129a4a635dfc26c009e5fb82558eaee8597e4ceae5bedb9de79256d770a8cdc6a7b39097252acbcb67eaad1d18eabb056ca44e0a765aa31216efa76e52217ab339611f702f375705cc3fbd03862a33dd321778f791c6bc097fbc8c444d61e9277511811002caf56d40d0d0a19f4bdbf923542fdd43a2ec82908e7f7a25af277d7aa9ed4e0f1e7475cdf8525599a5da366dbe8d7cc8f57310fb44e6a0382a514794a5b5693b78aa521e055049d23b0444836fadbba2e185eb5f82ac0a217f8b274e101bb854edd9c2cab4404b1740cef336b9c22003009f1186b8ad1235e2c9323e19ca73495932353d84e7c9c8f47e7e29d85d26c3f0adbf48eec9a5e9d037332e0e5377e229a3b03b6aad2a43956c59a0e930e2e0aa27006da730995a33b92c129a116da6c48a105157d5a13a63798b8ceba40d49d5d16a35a4faeec5acd307783a74478b371405b72906ce520c054ce9085bcb61b7da8c8d60459d5495314cda08a8aea36436d93508b41318eeece72cd09353fcfaf4bff98163f17a8719f4c744c61079595f2a93250811274f46fb17c9893d34c91ec1f5b5f4bcd10947041737385f0ede802808e6e1b9a439d0d21e3ee1790349d9aea949dc7bbbf088f9b3ccc80f8d4716c2f564bef7be430804b407740bc352913d9416b00a61adb100a06af2206e049a23b861e70d5c4d08c052d678b9c963e777352c00682e6750815467428a2804197cac1c12bd1abd45f3bc961cde9ff6067e55c65ba5535d038bdfe4c3805086f1baa125464f269a3a11a34aecb16353c25528e30eaec6dbc81e191d4e30cadc1e2062ea70568ca30318763c49645b5247c22a890394969b2a42f1d5599414fb9e47902da97296bf74c7e797629199b698d5a8ab104bff12ce7c996aee77d776ca34de86fa58d546425d153810a909b6309cf0c4e10824a83c1f225186d4f6feb51c46d52fca5074532eae0f3c6d7d0961ade5eb343d116a2e74e7d7fbc2c62032e5608a566aa7e6aa7509ae6500152521afbd366fd3d2759c5a4f50ee8eb61f88511ec4cb982f0c832e3a21a4411af27d17ba95ad068132e92558e6084b809dc417454145911b161636ae51cd6e0f1208a798d23be619bd492d73e83a13dfbf63e788cf43bef6c3e5aa8ecb04e6c1779a1beb5ac04b685e7130023421456cc24557788e67aca368e11964de027270f6253818e4dcfa2ba8baa784d99f8993e0a4c06fc860eacbd35ea488a156b449900aac02c74241de3eb97b9d60fc8fe021abc972c367d26292143146ed98ed7c0893ab1f2c28c8f9616542a076303e321f75c035012572e062409b3418e01b3fecdda060187160c5aac2f40efe5b786099a7f95270314aa681442f7e52c10f213096d89975aff074b143d9c41caa7c2e3d179fece4a1e6078d937f9762080a45d974e90886b8c4e5708293eb1a88d44c6bb87a61a9919c4891fc59ef98523527281605270221e471bc945f7b107e162aa171ec16344637f996c46ae8c4ee6f14089d7e89d59f04f2e07bf375e0a687542f0c991ecd2f6c560cdc9086b938af94805387ff07174470c257bf20e2dfd8ad33b1efdbfcad300e947518c63ad07654f56060330231b5dfffe98adf2f16f0ca4d3129bba0408d333c382f9da57d2c2fc177465c68fc3766a09ffe3109a5f540e16be7d8b4eb1006a108b326baa681d448155004b589b2a6d8530383d6cc81375b240c241644ea16305139e086875af416a1748163efff14e6cb2de271b9bb20484f2f8f3905481567bf777f4ecdbd32a17034e6042196a0f0ac74ee6d48270916a65b12c40e03749e766fb0224653885531ac0bda2277c9fa9ddff46765e24d75fb02a6b3cdf6d1cf6bb6482b9380c27fb6b24f2461878d3944af4b5bbadeea8622000d45ac6c00ccf686cdd65cd52304869a0f920e6ed616c40e110771aa4654bf81a713b1ce7f2d26ccc3664d0e0111b1d2cf8e1e49235135a93bcc95ddd41613db6a2a46976848896142f69d07feb27b22826171da830ca89019337ef8b84051f57b06afe833fb9483f43ece665e9e2a8df7bb691150118a384831839bc9760cdb47f01fef0156761a67885e52a028e82d0c5dfa9f6178943af4bf378df893c2002f2036e62450c4d0ed7b5ee4a95edeb477294b887293f0861685708f880fb5885520a2a786e942cc3b7503cbbb0549725db8fe4da5a6262d45b3ecfc4cb104a069da64977fca05fbed2c9d40056ac3f2bead1189ad2d477199783cda368e9cb79699aff5b5e741ac537ea9ca129e669edc209d1be51455ad2e7739698ad55a66eaae7876642b726407cdaf4fddf241252806503fa4d68bc59b0f7d14b7413ceac3f9603a5cf6474b9ee9a140041a4bf034e052c4ab62f55c758c82cd26c9433357f7ab816a649cf732107d6498e2da4123e3d47ef3493a9cb3fb033a176a542b8f7b06b57ebfbb64c9c2ed922411d7d22390345415ff001853ca0f2f995ed9d55103af5197929033e82aa26c7d282a06c1c766a89344a5b76b52d648edb483ba1b9099e0f343639ee4c7f39998165029943b62aec4096de553a426e8c9d83f7ad7f85d73331c50588a8aa2521a67b32ca5e2e40c8e7148289d310a70846bccc7540c886cac2dc253ae63e48b72e7c8bf1e55e3c150887f3854a92c28e6d0c5ae85922ee8209700f782907230ff486418fc453103fe22ced622a2ee045f20fe6cac555981fb8f5bc34869e85d4693f7db5ca90129843249f4d5932d448e72a6cd590862268dc7c002ab0eeafc10a3724e772f9490d55820b992604440f92eb2a0af2f13710f490e310934cd0459aa64bf3df165f0c16057f70182f903e898e4d50963838d94eef8a055ac86a34476ab01735701fa1d0f6cf40127ebf56140d2fd7bbeb04af6e0ed52eaa9f2f7b5bbf14fe4fa7d9a0527d31f983a782eb093ae7241e13892299e5a295827dbbecb66031dfb5fff15daa2555a03eea9b3e6f9028ae14341726c6b246bb3095781c2248011a3291e14e86da6f8cdad54493e941aa9854b100e47f08dfe87c2ddd05a5a00a61ac2990d51b69d336334701f99b3cb1978d595b05d155693145608596ce45da92b3e84a22896e8698aa273ea7066a8ad97cd793512bf118da3d85fc6923541727fa4948a804989e235681964a3c3e0f69339b442d92d8ca3b792dea3b71f27298938886ce0e0d8abc219c28456fb9418df4cd0044f635dbe6dd911dc06925ff93641edb625b36a32d7b3aef7b512a50ba8c3012737874abe2e72591a48017b9d044f8fe717b8aef3a733df925aab6a2d77fda2609582f52edde5ecb57a9cbe875672b2716470ade7fca8c88bcf9602c17f459b9e07ae290cd594bcd26add7c3120e9bdacbbde4d1760ce38e612fd5394d13214255ef4959845edf384fe2919dbf2f3278e4da8f9e3263a18dcf42811e0576c701026d7c46b1c2e918812764e274e9bf65bdc7c6e011eddcf34a314750e93c8bd5e066fb48d126a3e8244b1bbf4586b4ac0460e67afd8f71615f1b1eb6ab32454a672045daa20e1ac4ac371aeb40dfaeb6c270a35c842823bd06b7eb5a57427bb951e6838b332e95a159bd0000f679c77d0bf25f44c67c87d5c40ebc9d1ab6a5eea2a15592432b5cfbd1ea103c8f05b375c31819729c8a9c112b3cd209f18ae4004cf403a887a220e6d2a6e2aa3a6711c1ab179025882420587c609e9bb292fb22ad521dd46af6b454f9553a8a178c02dec0917bec83c9e02e7fb653bbef2ec47007044403c8347593c9e488d512c4fc12ec009885a15515c87c244cecc7b334249cd454406c6e38992840f4e7248881128a9e21fc50cbd98f7670213aaa128a9b785905420bbbe18d249fb9c72e23d92a7b63e89ef526c5f9532ded85e481796eedf19e5b784dde0cafd7a0b29df4515de2413ea70b36d275392e8d5f00a669ef185ccd66a9a5da8df80e682d145131ae5f205f43a3108baccd3eebc65f4536ca94e17d9b6239c595cba833022cbe9a0fcc9a55b35834514b51be515a00b34db9328aee29e52271bc823eb92f834f1cb56253269ae420c4e5a4111f447fc8cea810e32a6358a1099bf49bebc212a9d5c4948f94d86c36f32607ba60a9ab1dae1ab205b24ae6064f280c2d179262d3d7ff2f015555b3c0c5b1a55d7e27c60c10176297444e461f967892106261fa58d38616903041808e815a89588e568065f25e179aa42946cc19a045837208cfd23d446b87339a60d4f5deb586ae8175fb03065b4512fe58bb5075cc2b30f2d2d832dd228370f220a809800ed7d908590c0b4df17e7e511cf3fb1c872938adc1b3c7c39b5c8d5f0a6b5c068f50f000df7de16d3b53a0cbf639321d39b4871fb126564ddfe481565f9723863d6650761220ba76ea2f1853bf8d31d6d6d6c94e04e6bc43927311f044ac15d41f3a9ca346e867cb258141d918e09d6e483707b99a462009834eda1181f7ab4ec099cb68bfeed40939f4456d9ac441f4b874d2ef2f69153d9b5011956629c07e2653bfe98dcdc7a11702eb8b8d74f110562395b45ae58d9175697791e8c820f8de988a4bce8e7952c345a35aacdb3f8bc2963333868d3a58d2aeb9d856129f0558aed3dab800d9eb9b2d19119c99b81181b413a11c98f7d0c0ca30dc171ba89e8a0e1caf040cad2efae2c08b9811c1c6b2a56e12025090c4cd8e421c9e19ec42c4610617174be999b440c7c94eb8b2d72bf3e897442173f086fb84bc0b991b353f161e85f14086eb743ff94575aea4e1bb825a0ebfcf9813a57e15c8d8c6784d51722cca5d7be9334abdddb3d014a4284aa01273457d29b070311c210643a8ff285f29a0f3801b968dfa54648e5c75c86f51c784ec884f84ece8ac0ac292d8161b55311089434c6a90ef0ca5eaaf51da0764ea1b7370c995095cd96fe01783b2ea7c396753c829a8c8a1aa80741fbbadaa7fd0abd22614f54b210e444562ae4c7be0e2f4969bfa5236b8551dd47a8bfa182588fd36561532c512cc34a0f9a7273eed4d75fc4f925baf0e12d34081f9dac35ac59a55456c0bd92acc232902d8e871b935086edb5b59e7294d5234422a5415d5aeb7e07030611e9b6ccd476365581d3fe53986b77d4df0e705cd6c1d5e3b767ef2ef9000be30dc5329bbb6c33493e6c9836e95c8a92c4b7604db4229288c3fb395656961c8a81608d46c09e3c2ce8cc3a68a31d0eed239864121c7d27b066f71d76c372058353ac5e2d6811a42c32dbb7dfba8bbd61311197ea4ac55716b55036a2d1326c6294818160ae668108c4f5dd7d172c1ddc921a75d24e7fac0c345c65a27d68649a5251d23fd5a5e8f76f981dcee047e8322802b685a146574297c70012610af1525c73a2a8f64957912503fca0efe0055d3031af6b9c1cb17ccbbe953a173fffb01e0672a2a6b1b29345f38fb44bec44dc37495e6dda351e6fb09274d8303236bcafe321ab5057edc33b5ef46dbad4fb3d028a8ddb248938ceb5b3077ab3206917e679853d92f88e861d638fbf0d701597f36d0fba0867de182a0580cb7bc0e9f71ff1dc6fcecef87cfdbebac0e242367ba2ed396ba50d07056dd87e975f22214ccb356443acbb53d0500f95daf4b2654848d271ddd3eae1b0c13a6d1c4bc6f62b3fe7c7ef85f764d2c380a62666cb82fa0d8ec416fd28ab0ff8a4031bd62e4017582596d34443bb3599483be85b570975f316aedb9e46397c6e6b24a5a9558845a6a27368a7f982d4a2edd85b0b15405f52110d6cf9973c7db4d8f0004fc451fe58fffb1e2bf9eddc7bf604bca78566280945ac57b58272a0b40917cfac704a8ace3d05ea4e3c2b861025631f74538830213c56a8d4fe2be929f100d6b86a682b7d380ac6404efc611d1e5d400689d824591acd63592bd0aaf25d1193f1ab1efcd4710b77feb01022201e02f44cba15a725a03499bdd19998b842de771753b46571988d45c4fff083dd0eb4121299a74d47fea373f471a92a72db4296ce563eafe49a6600253e26576e30a1b2cf612650e2347ca412fc316be4dfd969bc26398bb5bda0a32b7a651bfdf57b61044d260203326ff82206150888fff1ec70c623ad17df10e9d418a3116099a423ea032f6fa81e8d87b4592b96430423bd316b6217a9efb34196360aea16bdff8a1939664c268a7b6478bb4d8e9771f5d97f76c106478d83e0fbb4e41c6de956f07541bb41997793f185147c2b27eb06c3d63cb45c97fff83587906cfa645b14a8cb8648f889e27e6ff83e9c8312476866b7f644dacf7f9cd087ef006afc168fe387bb69dfe690d17378f228577bd6da0891a5fb39f9b20d889e8ae9c50e79f6c954d884b079f275964341c217c90ba9db2a6388a54d7aaf692e1834028006669b11a2974fce08389ec3e8fc58c900e5251637c9a69666386d71a33c467dc420bcf97a2ff0ebc34162bb97635edcaa22aa50933d70ab344c4a8834984bbb9a4ee0d4b44a84889140365dbb0c1e67826c862582ac2dd389eb383e1c64b9bbddba9b48a75aa46195503634ba34b0ace3af17bfa90f6e75aeca9d6658ef7b04dcc081289ed9e775b3f5c14a852e031927ccd88896a868a8c8e5108072bc7162d304fe92fc929aa73715d13ec5065da627b2c139618dbdd3cea08b51688335d0fbe490e80c94c48568d9266c58e4b486040396cbfd52bb33662d2ddbc38c43efc71431f9b3d32ee1ab7273ad4394ce3a19b35d5e87098b657e7924428cfb19a40599b2f5364be8e57129a828cdc969d35e6bbd96b6bee974fb34c4eee75aa45a47140b6d9e4d9e03eea0d835c247c53df1dde2978cca374ebb5e04a259cd24aa237da95ec97eff84859ffc978bb0ec136a32400444d5beeeb7d4a7a74fa36d2885b8cd8790249f14a4f86cee621d821d7de384de35068c438e9b936b283da9376fd570730076b13e461d86d25df9ea421970b11904031ea983cf41ca85446d54c81f5f0f1500d06500e6c2a1a84f42a8388def0dcbd8bc8a61c4fbde4ab241c4fe7b79444027314d750a67c608366807e0b090595d50f85c79417e7088783809db6881b09c15a8dbee0a52749513eb2052b946077dea3dae248f10dc58f9e9a61fcd7154fc6d1527b5003557daa91191329862b33a372e0f1904864605f1ccd8933b53106eac0407758aec6dae7b50e7a1e8ddc74497f7bf648ee1e08922e903c9723550573ff8bb2519e982ab727db7c97ff7abecca0264f792e1065f94397afe53eebcc8ce9446fc2664c1a57b10c3b4772a1cb9b1599f7e4dfed211b2e2daabfffa78c9e886d93c6ee1ed2bae3563d49ad5e6d094938b7ac787945711119b2c15d51bc88d92fccfdebcc4ca0410d6484984812002839cf922859c3cdd7276f21e6286a0eb234aac0602ec4234374d1197d0a51afc4426d80079c79a374b8cd13c440c0bed4f31d44a59f65cf3867c8f4936dd3a7db36e6ccf91faa3760cb9c6db2d48244e5a15541a981e7110cd1f9100ad756662fdf8272d2083cf05f41d62e9964d0e0eeb2c9339d623bcaf9c16c3bf3534d447e0fe72c4f364df2052d006516a808f4cfab6e863545c3446bff94c3317b37e1054dbdba55bb753d73fa3da50171143b2252f9fcce57c129e3ca8f1c738c1daf1ee2d7414f8d71d8f9dd25558479d12ccbfab815ae37918447ce983b545d20ac57377e498b7c273ca8334d71dc5fa1bc2ad6c6cc5587fd834e0743eaac42d8a99149772ef84c1213acbcc5e46376aaa2957969fe481fe51ed41cd8ed7b53101f9426a74af81b28a911fe2ca3bb40d02bd2caad07e2501fa9af2ed73f174703b7d0ad4a5d08aa854daef044f5943e1657612a578a9fe98c14c81cabbdddb913e098f241f2223dcdbe6c3b602cfe456de2a3547a6a7c51e48aed5e1708a4501d86a480fb29297aadaa0a8fdc50546accd52e1d8dac0276c560161d8a09f317422ec8e25e4dd9240d9ec2c7ab2f445c51b64b5916cc6c9032e0cd949e682f256214006a189b6b340d6d5cf1edd300fd2ff475ac42a01343e45c980113a0fd76ecf1590d4ad1a13b454e446047b07e62186d4bb2d107e8bd9992bf9107d5ba64699aee160a906e9ff5b351b4b4bb7f3978ea95741cc210fb3d1c37769f4923bb21a0260e8086e0de15b11168e92cf4343ee085d0d16ae49315971f4453f24e7962e6d55e7b705483f91a34ad66245455fae290d8b6899219752e26e7e6d661330dd05834085b4e4f9fac6a0a7bd2a2ca9a9e4ec39df4b204259da7266c715e95ce09fdb9020e59b5372821b8fc2d5fae38f18997fc72774649e1aece375412a4bcaa3e342c2c2f389c8390c250b9922d6404a7c836640a122c742dcdab4888c2c7c34740e8dcee0b789d737ca2d1b44c32b2589ffef55ceb86a2b4f2583f9085ee4d82825b94f83c8439a743ddae900012c0532e242cd681eb799590e59412f1fc0f902093ef45390c56821ca5a614fd6d16a871bba89538771d469ce2e702e0d92704a8a795ab1638941ba2fc6e3007c0240c16c802e1e63d96308c9b076e3ab82b912546d595df1efa575d461aa3857e5b80a0bad07a2664997ba62836230d98ef1bcf1483de6ab9641a6c0c712decde99c8e42d04a0a661bec0be56e2fbc3424a2f06b37c28704ad4984cad6592444f26c723b8cebf730325b6f17dc733b69dc3e6c91e6abbce9989ba1419c5b6bc8b89db707f39c9905edb210d3b209e782df7b09144795f1968f2998614056bb0b21030107e089c4b96a10766477208843f5bdb35a3b0cf3434193d59f63ce1d80167eabb0ecafc514bc94f126e59baeb1dc1124653f9a314866c959c5d30a1d871e6f7d34499f172a2d67314c48e9ab11aa65cc05a9002cb93b9b4a60fd3d99356a8c4a073ac3f74901c651c440c783b820decb95920b3925268128a8dd4379d39f5919e5570ac4ad9a536df17731a23e6230d87123c9f5a2d5bc6a8b817cb14f7de189c107909bfd303d87ca42ca41700286b3fcc6a80aa8389ba6bdf8c5eb428b555a77d6dccc8d2fd4b85981ef32bc74694a48c2047671ca50cbe1ac36da54c844e86ccdbcc4decd675564cec14bbbb3ab0059e101ce01806491d6936228b6e30c037aa92db3660078e954570fc1439d4035a5277a17998043ea647dbe32fe7542dbdff33efd16c08112ff0b4b15401ce48cd3ec8f9ebdeebdefea873d965785bd90fbba8924a42bda76fd49e9feb34e0d85b8a68547a6ccea29610f2ea8404a5e4aac314e8117849ca613b2749ff3c9c9064db7b0b3e7ae34b55a69b7bddbc2c20f278873413c7c59d529c166e9bfbcddcec38d8ea28e0985a74f2948997857d9ea754c2463b88ba17dd17a62e286f7b7e38d7e708c119e9ea9fa5f4a393f09e1c5352978206e79bd4a638d04b2fb4a21e5bda4b46c633af133b2daadd44d851a086f9f5d6bad2135ef0eef7630c9955842aa4b8a9c4059db5597f69320214412b4535329bbe5ae72e103778f1391189a6735492d4f8d130173852faae86981b69999d4a6c4462614d3f97e44156b76107e434d594dbd95964941d59f4a4e0108e19fb719361500287f0bc898567535aaf6e01c204ccfcd135234d579ee1e3b49a0587c0175644cfc382436040a38044c6aa048ad69d301e4e1ed07bc86bd9f13a2d41847cab2bc268dbf05e86870a6fc58c5911b6c9994a0d9245742bc2c117aefbef18e808a1f97272a05d11b7cdc58def9f99e6c8bd48ca02e9ac29fd20e58a980d146a6da15d2a893e6809f2be0e486a11f969fbce2d3fa9fe19f6e69f10e61634594a76036633e68515e070922e93df846d8b298e6d503e770b80b62bfa0a583a2b32e04e6984cd3649b14b200885c3b190a7162722212ef6e4bdad9d2df722692e28417095915d6b912b77830d2f8905b9ead5e96b0639ca4146bcebace34cbcdfd026d35adb0f29c8062080d933a4408d5a2a7bed3884b02038a46c0065a57df35e7f89ded0a1d79370cbf67f0dd175049295d63ae604c4390be2eba53c207d1dcf25f4e65cb8dc08b067de509820474d87894692518c10749b83b317c4c1ee2157ee49e4843f777d46e04afaf7d86ec4b0620999f5e46b230dbc7f3b8c51466d3864e36f4cd77b8312d5fb76c833480694b5306ff2989e8344c8af8a59100b7c648045a792dc3babdf7c3efc17e44aa90f0ce1d407fb1f7ddd335cdfa2c670a48c05efbc69585f4eec5ab138f634f4b99540009a849831ea9b2a2d61fe31649f29d67015b40068a9cb8fca3f6b1d3f1cd8d4841dace7055c50008d3564546954755f5a209ab0728811b4b06309e7b5401c28ab70cbef169828b1c68177834370435277e85537c9b2942c3100a27ea1242254028758616b21ad851d9616b28375b2fdf5d180f2e6d70baf28ab1f88ef663e9fd1c4d6f26a413d6382e4d1462617eea758b6e679dbe4645d5299fc01877a20d59653fae029cdf4123a5f18714a5cd6bd57c69beaae0f51fa3096e39a51a2f839e8c05f4242041f6f49f447b054cb51cb61436b0c4a20d5824bafbf44af9755ec91f6bbf481c8edb9e701114d99d346d2033951a9963edca8bbd4b382c06b5d92ad5b926cf07d15a4c63e74a151d3070b43205580627ac016ab4b5c6cf024c82dccd25f82a535676a5f417a0212a5de4a62a52a9a8587c25269ad431b091b07435d2f93dc6a9389f628aff5664064603cb50037912ed56f26654055d3a963a75d997925ee371a4e878db4c7ef58a2d8241940d75090fb5cc5d487b656fa78aef881babf3fab2313e396e5b0ada30e328c58df291b35da63c639cc869892c5cf1c0a234019807ae766dbb060d0e564a30b75c633ebcd94a961ee8c170604068ef97ecf54b601974358e670d85b19df6d9b7196cba17f1630e177b81c62608ade8ed7a6e5a0627ac70105c6b41cc2243aca7e06df2f492eea3e837c503f00b7c2b578a440710f72946dc31125dfdda4d311505587b4a7211e0b7739b0b2d81b2e410052f506693cb676886c61dc188f880f72f70bd9d955bf5b80be48392fb634e4a9f9213004cdf92de48935bf5be3846c506b4523c7d2c41f1ac8e13e4f78fd5059f08634a7840a881c6d6117f26da1747b7230b99f55e79916ed933e1df586ad5e058c66ff94adf306bc997644908a4a9ae100da3b56b3d3c236e36cc8079f374c2d9e03e9e10d9bca6aa0816ca938ec516a3970b44556331b08ea356a7b5c08dad7dc3d0b955c780e515e77bdefd97eeb7da63460af93eb76023b3c0221ac29129b1e0524b9d33cab0504bc34e624104ac1852402bcac5170e655d34bec467444ddec3133b8ae07ebf16ed30f366092c0607c1915abef87b66afdc7d66ba31f73bc8f99345ddca401c5fc1f4014ef3beb5cfccedcd742d93622f74951ea1047e6f0996e466596e805249d5e01f7bce5cb7e04ace6b56ffedff85730e1d04b1fd05abfc9f28648ead28c6e2f1e533a9e8261a911f4aa4dae61ffde070484fe8db0f280b87d61826aefab2920e7e24fcfe2794b4d81f05615c0e95e5dce2266926dfc9d110716fa02f0699535bb31942e42eef206ab8efe42ca3e283c2673b53cd52387f18a4e6e3855399d47ab1bb62e38d7d6cf49bc6c1304701b3b673731143110a2eaeb1191fb6c28a62110a00c8d2b82d1af242638116c2b9749dc35b432cf7e26acb486d27247d0b8fe07e169b5d786cad5ebe40ab59f255df89c8eb054b2ff4642523de1b9afa1a5b3064f3161920ff363c96951cccbd40f138a3b4ea0d0b40adebd61cdd36c7ba8894b08afb595438302d2ff04eb394adeb01617bd312f2896584020ddb17986db9786d26a01d1e3cab63606626d99b5c33b41410046c410a575c152ce001b2b1dff4d401fc113a12b70550d17105d96ffd28c2c25076a5ec6575d1f50ca41bf3a57aa4eab8b960a4e9f466c8be32bf83b1978b698c9b18a1aaad594f747a367f380d51f1ba21f833bd9d32ea0aa494c0e711c35d16527e4919e04f27a4f908bce2c98c18d83b5a9d05817f16bf20034d314136b8478d1e025c4743e14fd65f2fc97259d3f15617b55472f42a48dfc4d21f6da068eb68c7ef7184459812a432278b00424dedcc7a8ad3c055b670e2d8e019eb6ce2c167bae6c58a30a64cf5168a09262c87cbe999d3f191892c442bfcc95a1404c56620fbdb034f3c15fadb8560e950815591baf511d51443eba1b9006de4cfb632183e23a94f7601529caf20755e2c5af4c3d345589a77e503d92259f14034101007e76f05abcc711d6352578df8fc4868d81638be3e8ef8a44e6d6f0b3e39f5d033be310d8b7067bc186f1b614072a7dd37c71f62e2be3847e35f7195e9dc22250d14d4e3d03f2e314a8a1c7b003086c8054071e9ce100bd0d4ace39ce53aa7ed89cc84a059963d8a75b688c0c213e6e66a5e032bef5389f861b031b0313acaa8a1b48799f9118f0cd1f2e3d4c66be2e0585001cc6aef0a33e138028f06e709fc300cd5c85c8e9c5038360eb20cc1eb56687291366582428a57a217cda3e477aae8cd54d7f0380a03034797c43c06946aaa4d2e44a5c253c1053bc4b070c22fc5cb9a85996db1efa3ee30cbe65e63c2da913fd0baf9e51c44c4b48cead4ad0236e8d4501097cdd05c2bbe3e5ff11de064844c5823699821f9a00c2df466eb9808acc950e82d17da0381c3d4fa6712901e013c1a6500bbd8ecd7617408016892b7bda177ebda266510f9815ff0dbb225db4a149783e81f7520d8829080f27fe1cd5e17813788440f3df69a1c4b2b41e9c903734f226030d63b470b7a9a334a7b9478efcebf99c1b67e5bdf77bab967296e75151926d9d504618d15c18a25eb5cd6e5243dce27df412e82443194aa1a639b820ebffaed3db304926468349b7be5cbc508432ecd9c7b6a3a298d23b32198da9fbff8d0e392400d88408ee8abeb75631a0f197edd6230a4928c51b13d9e1c26a9a65412b9e1ece204c3d324815971796a0da19d2bed62d81adcbba876f9b862f423f0a8f04d1a308c0d6e015b4c910184c6f337393811133f1fee9988f4d2a7b186d371a3e7e0f81f50ca9ef78431f58b845a9df27614816241e2fff40abe2ddbd226599e67165546f68cc7019a2c49050d0124c91034ab4514fd00e8a0ec3fb95ce9d52ade57f287f4271f66c1f41856bdc25f0e5d0c9e94e6d1b99dd1004a32f70aca6056e807bd5d9345f8f1071815f02411b1f00b0c64dd534cbe4c992cdb2d366c26ab8550896ac8586a47f0e5c046626864d0851b96a99daf4242de979bdf3bb41037c3c1c6c095e4ab2123058952468a51dc4621dda9faebdce75a19c91ee806502ac62a868f73f85ea7f0f830d6a1ee4097333f239a057473ec3331b6ae75098e9bf2c1cf1ed0c8e0118a2d564fc4991f22bcf2d49f4fb17d0d09a79db3299c456835d4bc0586ba343686508a8892251847aad2e5273df1298d39f75b4f955a3bdcf61dfc7112a3a2b57723d234d2158b4b5c0688891359bebf4be0902ba4a48c8327c0579aee865942d5c92af6092d3cc27a9dd0f38dbcb8375532e539d1fc135d188d6017048e9a6074c995174bf34e8033a399e028083378cbae69f58fe9eedc9ca7850a23a3ee9a68e4226ce5dcae66cce46162ecd1a97c677e3d3e6d1c1a228dba509bad4e50f1dc9cca5621080fe7494952176c767bceaa62b73fd384854cd3597c01a6b5626fb1767d382ced1d05225d90c8fb0127ef27c48998f727c6fe192e70e408645bf4b063b7e5ef773502683ae2933fe42ffb0732e9834869e56f0a5b77d9399e934676f36310149a8dde064eda493416dfc6f8e7015e6fd9ad184f75b988fdf588e0a7f3036a2a1bbb2c7de03516bc7a902d17c15cf9bf2e75a08347e6737fce2c8482968b24c6e196c44ef7c6efe26982dd976a236d7b263efb5b99d03fd35fb0d6e740da95e3cee8455a6e04724185774b19a9d38c30473e6ddd7be160bf212afb2f71349fe6b099243c069f844d0e81596b116e9e44fe67deb12151e66e067c59392557d263d379befdecc2e2b39a6b43e8f8000111582867296f96bf90020c99b63813d52c7f22245e4bd78e5bae87e55cec0ff4b3abc685a7937fbe7bec1a81ce82edb3723fdd466e23277bacb14c27d1872cf8880eab30c93b409b9843b104ca055239fd530fc1d2650abf49b711d8e71bacb5a415b6994f1e8ce0812022406d25db6d64cdfe82e3b46b6e831bc87a34a8bcc5120fdaa489ccfe3ca69b9663ab000c306f16bd138c956cbe7e968eac7f4e1514176edd60427be6f911b5f43fe11c04110819b34c65e818db72b2ad04da057f911ed3e3297da7e61c6558c28de9f9e3638a2001f2f1b845eb20772a7db86b9624e07053b6fe44553e295f98f003a31f82b3fe0f1a34974e42e5f760ceb66fb94b2db0b7b83eadb1fbe4b564775b7e8fbbf9339ba06dd46b444d5e06d44c5afa80ab2b6cf3ede74da9834b56ca5a133674692d7cc1d2a10785a93403de5ff381b95567eec3a54d4099e7f212b6405af54258441ba3a14fcbfa376a7bcd7c894f1c6af04ee760d820c520ed6c55337be784426f2b549f14b39855f3d71ad8a0bb174d70d6d3766113779b19ed9c62aa1a02d989d1598079f79f2d1c609257dc9050e1016c15ebb9f7d68f36550f12968a4aaa1a284121850cacfadbb704dcdce2860dbcde8edbcbfb3d0801c8e151c04b858b54460b1bca0117abcea4f20009301619610a8d52c1e4a8870d1433c26557094451f22e825a1adc3c27c92c410d4067697c010e227f2bb5147cb3cd0cd2823503c280a98d450e51dd864c11ad5334817b73aec8fe6976a6a940433076b0b931d1ec64ce1879ab5bda7ef3344d8f23dd6b5a07cecd1184e0818bb40dcd243c448a651283a2a53f4a1476168448a49c1a1383d22d87c2317fb525d822817446a00e2ae45c273be64b6d9818a0128231ae59df512128d98a68a1d9442929c25c192d79a4f4fedcb5aee0949a683ce24b8a656f4d2b1d4341eea1dbe8e0d6b9e1a3c744ac3744f633b5faa3c6bf40e5b805f28d8bfedeb4e94055bb9d92b261a8609a5edbe543db4a111ae8af4b3c8c7f489e85d31b9f713034c0e67d22bb703157ad9d86e104ca03851102e6456d22db52b70b83bd263292e398dd804e1ab51e076016f8389a7904ba1ae86bf9831163126ef07cc2e432538c49ea7b316d5d4936d6d2e9553b6a0145f3e155af327a6edc9a5d404e8d0a5d34a56d9f69d252b09c2da0c167f8bbc71d3888b8725e764b8855981142be39cbc3e579489f2893a2e8d538f560be26da76f6d42b7a8eccece954c4db0880f5aa7a5b56438af0f13618c0bbf9102c49028e05ec40f8c59eb62af88e1748c8db9fe31c3883c2bf7235ffedbdaa5a4697ab09b85153986c0d5de41a75c9b43c89e2ed416475fadd17b8f6bfe226b05e746a916100e4541792eb8d57a9a6a7033ac05ec833cb7673c6d1d79fc06b5533ab389a9fc7edca47b417ff6775864fe4292178a7be5b0bd515952d22e8ccbd8d97730786caaab7ff18f1d2a8cb8df9301e52b082094aaca677f687c53e9dbe6e7a2dcea534b48f7f4d84a818fcc6c6e09954a6e5d618876b56d3df8d9b33a2b198056cd7da53bfda04ebe01395399babeac612fa082be89097b8b8df6def574759e2a2742b2a1bbc28d1b5ecbb1099b07b001aa7e18eb3f7489e4a1fd8066e6d001be72b9c5177f4cc67de0fed8f4e0d6ebe8b33114e59a944ac4e2b38b676f9ca6a18e696d0b37d3c80216ea5e82fe1529d46d0bff9dd935dc1613bb45f5bdf61b6003562bfd8910440ea6351c4f0c6a160f5c5329393b13601e2796fe08622c3afb4f9623f922e3b31199081f66ece0b2e592ad7b70256a8b9964780ee2b9668ee349dce1276788370d220b25110a3dbff44fcd75d9b054a79c811f7de11af1453ede683029037eaefacf38ed7c5ed4911cf58dd345c4747544db497fac29e15446fa27926bc5d7c2f3e33a3c68c7722875c41659243097b3a97a77e942799f5329e18ac61b6515a01053c93da6874e9c3be1e9e5643fd351bb76db2967791a2cfb712e0ec1e0cab030fd010414926dc4cd31c27a72e42b82b0ccaf179d4c8b70862b91d526df70c6541a46ec6b127872b672cb69fef95ab8a092d1f9a87d363c8c3de8747e4d3c2cf941ecab173c2ab57a36c7bc0aa5ca0c75234b3569137e73602cc0a658f8bbbd40212cc346cc0c4e2c6568d63cb776c0592c692cee50bbc020d1ca2c0b49dadd242238c24117254f1ef8e6317f3a748fdd84c210961c8bc71d695524f3372b02f7910a7355ab7e3cdce337039a8c076919feb9aa5f68eb02fa1eb7673c7e6122775cb7be71b3373eec9e4bc4ac57ce985e5c05373243d89d6f0b7a68f52e9d81b351cc50a4050fe7391a24e1dc0ac448174a819525f4761140141c3a2dd0fa3a2a3552e6eaad18b5d2279657886d9c279b3c17132f60884b70b2f39402f6dc6f53ada61fc415f9c9dc1f4b7b4146c41431d88f507285ad3cc13f6b3bc03610d1bfb07d54d31894dd3e13a4eaa6556fbcda659e83c5b7fa56a79c10308165843c8d4d5cb99d6a8ff801d4012c84041a9e27ba52107857a30e9045c2c9cecbeaf9d64def1dd8a9c63dd499a833f8d95dd5c90e25fe824a8f2a4801f5c1654ee1dc049f8bc463c3792f20a05b8d78c768e3d08072d15ec12d3102894c0877b7dd52ee2d659232370b590bd20b2a8cef8352157545acbcbad178d00759f9cfd7d0949f9c12af3cb78a0a7d7d5c462e3b2afadc1172495ba50f347e469026e1209fcf83dec7e7410ffa151d04a4c5201f5d435323def0183208e46a3de7442e698b146f1c0dd65fdf46cd4ff4e624fd77514a2e633e9f3f1f7a90e6ecd0488a643ca121697018b27813432e455103af096a80947510141c01670a2d1a50c9b54bad5ddf4e914bf1c6438f3064d7e2940e8fba81b0e572deea13e1e66091dab5de9a9f280e1e0e67ebd8fef6d6ba6bc351f2b74b500b832197e2ad54a4e42a1d993276d2dc145e9558bb62913bd66549bcb95f5d625bfe70f080c4dbb55d1c276b4ed2168c0240009d24745ea021805ad354bfcb634acc116fd554b9e7564078a23edfdd9cf4d83c526cdb9fd39e9b9f5cd378eef144e5e774e9da73f3d89cacbbf4782ccd67485842465d239585c6d6ac029406ec9ce4d2cac49b95d551d50a80277394666756564da62690606578a60c0e74c6a6767d510d5366070c862cde2a0ad4f280644c8e4c69eda68a0dea5a5bb7edd11fe879f1e6a7ba4f130ab2d9ae2fe6f829dcf54badd21147cd2929b18a9fa6174c90521af2bb146f365c4c16865d9229282c896297a522bb66d04369cb4f7e22cd6d3d316a2945a978a354bc4dc037a85551b495452419135352506b076e5331c8c8be451e22c8038b539c146f5fc8a5887132f7257df9697a019bb2eb7790f86946c141b6e26d57f126dee8c5f153e5fcb4b232fb466eacf6c4a18606125d8d8704ada19c0b6810dbd7d6e6cb9df7a7ad7930944c7755526bad15662f594dd7310677d49793d7d6a60cb8391aae65dbbeddad392cbdef7343a64c685fcf8b66fbde98e8955dfbbe67fc6ab2b90ede57048993b7ec741e7fa3ad753adad67cb4366abb974b4dd3b5b6d1d6468e7b7f7087635bb336fd51fdb99cbcffb5be9793f781f0ea2c8e93d7da386d6b5f6bdf7725e4df65cd413dcdede2066bd878cf2970a109bbe452b39a2cab7e9e87a164bc3f8fad4d998ae3284b448aa36c1137419933568a09e38529637b609140c9fe9fbdf1f60479bc93dfbedc5b248ee288b89562a2b824944c250a50400e39e0c071835e8ee5855cda5a0ec639cffbb8968b58224ede3bbb50e352f731ce7956d47d5bb3f7adcd4f15ecc17789c25c2bc5bdf7fee5c6aaa4ca9cbc6fc7cac4c97befd75855e2a8e975c6a44467fcefdfbfe127ee8b85a638e8037abe8e8e584c8c0e208298958c8921c97f51acb26ccd52228e9ad3c4f2938916a147b68b90d46a332734fb3ac2f3cf1973308bc5ba61f7ec9123b3a232e8037abe4e067d40cfd7c14f4e19df9d0cfa809e2fa433c6a09c3f2211f8ef21a92a6677463c46c6d564ed8bb3afed14c6fb202a0a7c073508661ac020e68b3f55b15a455c475e54455516bb97e2387cca3f3fc64fa0cff77dc66a53535ec5c91c27a78c4ef31ab9c461c6f3bc199de9b4a555cf8ab040235d0d51511b2769124bcc974ee7bfd1b9d1c8e78d2a4cf3fd67e9cce4ac104310e1a47f1e8d3822c8476940907a3ade531acf48f2e13df8a00ee2794f07b9387855a141a28e4173857b40f0b7a779a826ef514dfe9e11881a044d4703ce5a8ee3fcc98c9911c5a150caedd26f9e9361bb8f61fb7b94a983bfa5336ec684f177336c7f0c255bd0e3a0bbd39c74af65ff92ac5dc8a5cf30ce7926811e14f461e26c5b03114db16c1127ddb91b5773ebc7c8add6a0f1f34bcf9e34744ce58a64eebf1c3ee4f323a64d998af18cfe4dcd7489f10c54bd8b92d3057f2cab267f3ceb64f585673775b9806753866e14c54fa0b470148ee238e9f92b1227bdbe9c7498dd42ca9df8297fada256defda6e6cb77533509584c181b4755247788a3ea4d7dcd1707fdca0bf93c8d1702fa952f69eaa61cccdd7b2f84c67f5ec8ca83de69fce77fac3ce8f334fec7c7078d5ff91fa05fa1e1ded3ac500f63dc3da64fc1ff4620f8632a0a3b71313ab598921b8cbdff70ead35ed743e84911e80099fbc6c676e30ffcd058447d23b0a7312d8fa0117f461be9f368aa69cd49ac855c23319e61274e3aa6cd9ce4a498d1c01deebe1a4fc1337c852613c67e495314086204619eae9179eaac98281d2d3ac301daeafefbcc0f55a2f3fe9406f3e4bd3fb5c14405114454ebd4d76cbbac7280ce5427041184ce9eb0e9975ec5f73776c64aa4b69ca437312795d470e60b9ee1d9cd6359ba8053388553b6d3d157561dbb2aea4b3297ccbe59184bd8f6b5ad6b9aeccffb89e1a4f5fc27c549fbd9bedbc5d8056e7cc44f9eb78f5f185651e0e3d8b65f6cbe7c5fcc4f45d44f0cf3c5fe1765c22871d427c54d4c1cf54df1aa3fdbf7e00be9fce7857c0ffe17b3200feebbef857cbef342c0ffbebcb5cf77fec7e73b5fe73fffa3f39fff3e5ad401e1befbeec39633f21035379bfb926ece2aa123107f8c7147fd8b6d3b95ecfa7e637b3f7767f19111c330d65fedea8f865d1f6ddbc74a2859c206a9940ebcceecd0faf1c7ae0ebbac23e1359dfde4d4b6fef6ef9289c2b65b936d4110a8af0ca465b22903ee8e1026be222b61db8e13b6fd0e1313756b5f989e7d0f67cab80f76d0714274c6ccde1926d859fb9c7dce5acb59d994f16dfff35e7e2ac2dfa3c27cb1ef2d9930481ce53171937d19b8b1ada23c2cbc181ab6b5f631c65bc8a557eb3e50ada240da5b61ecaff9621f839169aba2c007594f365fac10cf835ec8e7c1976dfb51f8028add803da3e0851536055d08e83d2f04fccf5bcfff00fde787e741a01f9f0741da2304991276d27c46cfb54801650edb71dcb05eadf3737befba1c8263792b5aa6ef41f1eeb1561ece0d2cde2a555158e6d52a0abb44dbd258afe5adb45773528cfc69cfd3422e6f2df5de78c36259c519cb64bbf358d97cb1188c5c2d109bdc5ef36a18e72c12955e6ddf7da31661f71024c9dffa4f6ce3e13869b557db9e2d8c8c551ae32270b1ad98a723cc137dfb380913755d15bbe8cc554261acab09dbca2c47939826fb35d8d6e6605b0b624bc7abb2f6af4b897dab846ded97d85a25db7ab56dbd9ab5d65a6b6d4e6117b9be79a3f4a4f6ad71695306dcf73b29b2f7f8cb6f66a73879f1cd8865d57467fbbaf5ecb6e3dcb85eab3fd7dfcdc9fbb77def7b1846d3f7ebfd7aefbdb4f9721f8391bbfb7e6f18568ab31b3ff95f27efc34a14e6be8fefe4fdcf0a58d85798a730e6490b137561d574fffe37a333d70985b97fbfd9bee5e7857daba54d19df9776abbdb78ac23998a6fb52dcaad8f71261dfbfe1d57cb9f77ebdf72fccc9fd7bbfbc52d8f75e27fbc2f685dd2f6f94e27df9a92cedfbf7de7befbdf76fbc3865eadf2fd119eba1de0902f75f85d5c09dc5bac234c759588571d65a6b398eb3b07b2bacc2864067ec738f85306598b8ac7b71a60c15f920ef20073b71cfb867d8d9fa55e224779d38c9dd9993dca5b90e5cf7f8498ec96217e7de2aaa264241050b4448d1945dceada53c992507d5e55413f7f62fb92bf72ec549ced6ca719785b390bb9c5bf3d3dc1486eacee62477a5e038ee2f6bbe70cf62e5cd7156535776f9a9fc1cf153895ff5b9ffd019db91f99c734ed78baac96b642972f7dc97f5e5c4491f6b15abaa26ff6ea4a9767355575a9d39595fb5c934f93f81b2fd55452eba6e57a9fad9c3449ce47ed611dc1807d79ce46cae03f7f8492e310bdc9d9fa0570d7a07eddf992704eebd55f55443fc749f7b8f8989bf806b1867cad8cdf9a0b23c1ae0d4199bbb39f80cb8367e8f597efa88f809d4725745b13c875f9beb743af73df7b03cf8425adef342581e04bdcf6e9389c2506a1cae09f17ccb0b019fe56b20e98796f7fc0f96077ff07ccbfff07c8b66f91fe0b3b4d8afd92bff791a605c30b2affcc7ad604c2314a29169ac7c5fb33f9f0fe5b108fb29e2f1164f98a7eec6c9179b7b4d6173380a9bc87ce1fe33e29693dc8323765513f79e917b3b621f4c18ee7dc43f982f9c635618b9a3f1cad3588559aa1b5f776f4b32ae6118f7b7c3355c9b01e2f7115f22cc4e7114ece6279b83c75322d32fed2db6ebe71964ba39bdea7157a0f862c27eb8a9b6c99c0ed1566e1f2650537d28e02eb2154459f8cf18bbded80e83575418c634d5ef02183219446868830d13bb3e27c54485ae69624d19fae117e4735a884639343d3ac52e4b51e0ec226858dac17ca9e26b895ce25ae8c9a4d542b4da5de5f05c8fe7a112e0b9a296961c9ebb9a32399828b0c95de51ce04c89bcb24b70e62991b95dde15d864a2442cb28cf84a229b4429b429b3e2c4ca0dbcc1ae1f7a3251a10be582028b12332394867096c4ae216da50657c937c62e45326662e8aa28110b110aedc9ac896c492c094c8bd716bfe0a5f295e91b7312b72177da83b988c4c9fa82b121971c0b24fdc0bdfd1f9c0e553f425535d5211bb4e7174f9ad8a5f8aaa810141c65578e1532837b8568e2aba526bedebef812e588aa78b2961aa7c5d7cb53f35319aa76fd53e9c176fdfaa12af4607ec2f903caa1151a2c200eb34e0d08897aeb153698ddc4f4869394cefa5697f5a78ea9630e1ad3fd37636c8e7aefd7cf21879feabdf7bbcf11439e9107404df30f20338bb0a63dbfea249fd39f3fbdd8f321304f5436a12073803d7f00d344657ec2d48643d9bd898ab1d53d1b25bd0711d5446d5824caf976f3de52256fbfc49d2fe9bddee8dbddddfde6ee7f7147c6c423a2a2a8aca244a28c67365b59832fb5d964363c96e30730b6611bb65d4fcff9626be88d936e847b0aab284e539845625d565396934e5767d0d5eb3b02677385c5574f7c6bad55575a45e32912e53c9fe638499f56a1259d73f454cef3985fab3849679d54367559b5a75cd39c9993d281be95e224f596bbbce52e7779cb8b78cb5b7ef2ea2d77dd6cb3456d2d5611d6a67e3ac2f26c639f624cf19c7392a4ca25ab3297cc6593d9392bf5f75c35e76a53d74ca66ce63ad0234e52f76447f27c773acbf11ccff19c6aa23f9331a1b2e9d5d64a657456a7a694cafcc4c44f74469d50d5c473ba0e77554e4ece0ff3a502d4343f0ca299853d3f66becc399f878a328010f3978892e44971d5a508575d3e595dbef0f9cf1ba5cf36edc890bd3de96acaf8d3bf633969767f13fc7439c49c6dbaa2437015d59c4f3fc64fa4f993457483eceadbd8147eccfd7ceff1771e2729ebd336fedaa27535d606c8d846e429f723a5bfe779fede7baef293e7795ef79ccac994db384939fc1d5753154569a6bf9ca4efae6ce327d9a64fdf553e04bfcbb4cf99e7a42c5f51d9aa554cb64b8c31c61fc49471779f636cfa0e656395c7fda4aa4a753993a82855226f7abda033744fa7a235057d82a66813a2346433a2e0e9299ac494f17e3e0826ca5dd54481a8e08ea967beb3fde1b1f377a42a8ac57ca1efa9f9f4dd554b259188961409299148973407bba3e9caebcac857e76aa26fc7dc511df3853e08e60ba5aab96162a8750f7192aa9ca42bd7813e9e4235eb6cc863a68c17414f44cc29547e9832340c738c3d7116444b924c5502b0287f05286a1a60a2a82aef40f113e1a72328e9ef39af83cafe8aeae8dbe364f73da9f34d657e6292e3368eaa31271467fbcc6ddbbbfbb9fce4f82b8aba5c4f6595aa549ca9f3136fefa9cbe5728de5b8ef7b63f981dd753a9d8ecf4e875555a61acb9964734fd8f5a90ce39ce707eb1ff70776ad555b27fd886af2a74468219c0c628aecab0b5e21f3028dda3a3df3ad9fa6cc0b364a2bed384d6d572737620762bf6e20f56dad95ba53eba4af80b6c1522b4645819fd30f1c294d372497558a1aabb21bbb7eadb53e5e43f6584579bebecba64c94ae8cec7932c45c366538ae8b5ddf0aac2cd4161d835b229b2f154f99fa550f384e9a9ab3ba150a3fcd24486c76fd5dbf56268e42c0ad12891da97541ca2e2bcc23ab29b1cbaaa4765ccc954cd918433cca94c15f45a29c57bbaeea633ce9ae2b3a3756432e670eedc2b0c3a3cc97aa863cdd69ce7374c97cf93ce314365743f34d300223104e93f0735f6a12d63efcbf98826c5f5d72ef022adbdf7804956d6e9cfb2975c160a278a8a629d3f939efec2637ebaaaee64b7d1e2aaad649865d6badab39d3b5aebc17f68f121fa9877f0d0d7dfaa41e946a4ae3fe94a6d6d0f857ae4a60ec1153753c0ca6a97e12bbfe8e23e64b9dd435356dcd9cf9256dd11816be79a3bce124188e02af280946675c6414a6f3aaa64e1632120c478157202c264c12464a745c270b8af294e1b1c946294f192020b83857a71988986c38c252223a248ea8a64a049da143e8111545574850148d82cedb6bbe543184ce504a6f006a5139b2394e778ab83675d12268e05adb3bae3bacce9f21971d55d9b9ed7a7392db25a825dec41cb761e4521a32c781db5d9ee547369e673d1e5d3ae94693623672b85b2e49a0f73c5d92622418e9c6c92ade4652cc4f2e12b9bb2e3d9a1423c14830526c94cac9f7c1176fb5f4f293f789446188391f05bddb0da574febe9723474c0c49fe8b4439bbbecf916ed0904b8fad652c3fb56b475ba557797b55f6e4f8c9394f153005aa9070aec5295472495bb7c8d546d0bdc3fdd4c1fce44f723db7925dffe968cf2547a81d3943761979ccedb4086d39495d784aaeb1e712269ce1d3793a2a8c735675542fe6fccdc92ade429f6bd801d53a50f8a9a41e4b052b13a988374f676522152ba3332e3614a6926022158a226d6165dc087a5541da82a270142e36a21b2c70142e10105c6c92b0abe806d48a92e997a09673200f8e92bd5d825a331d54d90cd873a6839bfd8528135e7b7ac184d64a05797ac18494174ca8b2b5b8ede98516b528bb55c383c15077fd9210e649f429434fe21126595fb56b17ee237e0ad19c148f304f212dd040120a55214f2fba40b2e92ee9cb4fa5c766f35338c54fa42046d0f2d3f4a28b221e297ef23645b2856d6319a52aaa83c44dfbe5a419b28bcc85c90e74b3d46c96ce8b07b78500292d5956a58b8c65e5221b75461c255bd085a3e4bbbd5083cd9e5ee4cc6cece9451a70360956511e890cd9bf24c156a2b7e1b161e4b2f42ab9eb52886c97e2ad33ba6a5797fb2e21da49f4dc4f8c731689fe49b2f34e97e214bfbaa435c0087436e702f208bfe53bac96ef3c8935050904ee701a4c585636349878fe8651347ade4526ba19c11da2779185536e76e574693deebdcee3deeb80d4782436379675774ffaefe338ffaffbaff4ee91f40ddfbd0e274d4167bcf71aa20f37e8d2778d1775e99c731cc7711cc771353ce73c0de4fb1acf75373ca5eb5b13a4e33ccebd8eca8d25e9c82e3d6f846fef91d83e9675738f03d843dde07f9ce72ff75797a422dba3575037101c401fee73df7bee6f847fef954e6a6dcf4f2518e72c12fd93396e7887e9ee7bcf9743f877dadfc7b2fbdc9323474c0c49fe8b44393b488289353a6e2c4bbac6dff74cd9957bd7650fdc3bf77ebf7b128bcef877ee5d1980f77c496aedfbe1c86f8e3286fcff326f96e9a851f79ebf9ca70c802e89401e5c0d6e9402801ea56ee8510a075d92ffe3eb51caf33646250fd7fdf5ec70d1339366fbfbb85d639cddaed1ed1a9e47fb539892c4dadfeba8378ca2278dde87e3dce2387ad0c5a6b45b873627bf51ca06b843c4b23ab2eb3be8ef79e7400de47ef7dc7b4853d09992860e037229c8f29f7b26d0f97b744941d7244fe822dbf55d98388a4556c326560536e525c585d31263571617275ccb197988720887b9b07c194ad92ecf02f2e81e886bef69803e7876376597e24dc72a478e981892fc1789aa2e877096d5ae3fe29ee5495370efb9b8fc0ab8c3e572ddf68c73df7befbedbf36dd0d339f993a6a03374fb8752f4879dcfa4d6fe28f8fd476a9535db765df73cf0775fb3b9b1b4dbc1f79e1b5974194ad9dfdfb166bbc336a8495350984f77581d87edd263033b1d221d28701932a5f9d28b7fc3934aad5d728d6ab4809f1979ee52bc9160a3922eb3a84bd10d9a14ea912eb148d7d06576d1a27f5d9224d8f6f4289545a354374a91fb6fb9146fa5d46a6ef1e6a7ce4d9c22e6946cfcd4e98eca495567889395d276cd415ac44927c9903b503819f6d6ad5631afb58a7940d8b55671b23299d9e4cf10bf61019beaf0b2e99700b8e176744a29a5eeeedd687f3edefe3c9d28ef3f9f39edf8754f57d08036b4a10d5b1c67a69fcfa3df7bdf7fb6f3849fd1ee0a7eef0dc9e0cf5a3f9f7048b80a556088367b274e8aaaa0b017317941f05aa33246364a07e0b546658c6c5d8cc2d4bf51d46230ce15eb5674c63547840933e91436c659d1ad3816f674f4a9eee88c9d41484af79a2f3493a60cd156662b5ff8fe7448ca7cd957d64dc989759e1ace1d8007f3864067bc1585a9df51f1601d158a1a95414db5a246b6957dd95aa81a954151e10d56afd67cc9c17ca9efeefee235c1837943f05ae10d28ca52a1dd8bce507dab98305458bbfe1337089f28e7654e3e1310a4b90ef56f0f401a09fc9a0d7e7e6ef0edca426157466c8804f46508cefc54da58a7049c814e409c6dc4266135e8c44d159c5922ddaa5b81b411fbd1e11127adbe3127ebf7dd9737663956abf394c81c75a9b5cf1436b863fccc60d7079bb4c0272e10ca2bca6481668069d89f245e877f9d92900b58b4b47025792d81ed26e11359a7c32d7432ddc59cac3979efd3b1460ddfc0d9cf9ec9cb9c0467e0cc09cbad9a6a88e6c95a6aa1516dd7aff9c91280a382637d18c7c95045612a47c57c8e0acac51ed96e4c2654b9e786c9ec6efd602d702e144ede15fd26539cb4b72c9a08d542219a270369606de664754ff6b377f2347016a295f666e3a712d73c5bab28eec32f91c28e873f1c5de76de1c128a5b4f3b6f0605d8dce74340a535136e66d4151968bce7241515d14ddaaa3792bfbea625d1414d571d1d15edeeaa63a33b8a0286f08b4da179d71d737890933048a9ab42b837d75df9cdf773710bf32ac1433326568305121c641e6c12ccd4024838ad890a9948185c8c9a0c49e344932b5a8e26b98329f87a22c0df1b264b3eb8b5ac8c294c95f5f6402c55b06249a618a62d855f442e84bd10a6217bbd2f8528482f812658c73dee2aba24618e7cf483738aba850a572ba43d7efcf38f77747b627ecfa53b8ed2f4661a4b6085554ecfa435819619445d81af9e0c684cd716207a22ab729e393c516aa85684eb33b07fa7b4a64aea32523a519e04bf7ad95d6d745b830919f8e2efb8ea10b8b89ba322d664968d7263eb937110a149f1980b3d82789db4ec3b599b1eb7f9870b0c934d507e9127c0242b9ba04a380b391ada270ada26e6c6413dd4297a8ce66159cc55c28c6d20ce68b91f9522ad1609aeac744b0d70f443c28e160d72f3119149cb14144452ce3930273c0db6c3663dd95e8d35d133916ba44f1fe537026bec4174536aec5b6efe802ec640d5d1525be42d76d11434b149724a4d0324584b5d8e64be5748b4dedd2930d019351c62e3d99a8258b5d3d19c8c4dc827bb22accb26507bbbe28b34cd9d593d1b2a028074c137d2a90718532a616a878810dbb0cd1fc5476afbd8389d22c53a0b00519300e50850148e1a622d96588e6658856866821dacb4f237869f1424b4dcc427c15a0a576b378b5d4e88c27664151378a965a141485bbdbc8c6b1301914c55171c710161261bee8d045059d09c3b00961d8f5bfd03565bc564f89ec5f869ca7a3924b4fe6a1f9a9c94481b36aaaa0cd8be241d920edc9ae387843f2fdb94b4fe6c93cb6720423bca2ecd035c5498f0dde1299cc93b9a2c83c33bc34d0bc336cceedea50e5644c9443829e1219871b741cd946361189a3264d75c29092878eddadbbb53875bca9d8e974c4e77410efc5bf6124d1700cdfbe8fd0def09c0e62ff860fc27df835341fae551489926825d14a5968341bcd6daff1cd4669a44ee35e13d9e301218fbc2672e9adc21016c64277dc06d80dcc0962a8a2456354091837b05891182c068bc5603730d84d0c1673b53c98ff16b810653399acf5836cab51914b7b235dd2d53d3cceda9b0fb2d31c5a050b2910e941f6944daa8929b25f4f8a5c722cafe5b5ee77dfddfb7388b8e712244bdcef442d97ebf0b971b27e5f3f5f7eefb59cfc3e5d31fec4d73481fffd078e9ecb6b7945bcd6fd4e0300777c2e9eabbbdaf3ae57c473792d2564afe515a1b1e7925a0de6f6a7bb145f74c5f2d5ae7908cbfdbe70824da434a29209f8df21bb6471cd6eccef76fca1ebfebd3f7acb8bb45af65ca2c517a0c7caeef25735d1f0e0bd28720baee5d7adf5b0b1e9bc7d9b9044dfb3d6d3413e88dbafa1a1e00e87e92097e2cbc5d8ca7d8b48fc7445257ebafa227152e627fab050656ff8164bb48939df0d9ee70a69ad8ae2bc2354e1c5fc5472ac10e6ddf8a986375dd8a5a7e4f683fdce93a8f6c1bdf8241fdc8bcf6912d56fed0be134c99ffb49f3c37a56935cf7f0de8a3119c97790cbd025be44580d5d5fe7a5fc54d395e564e829b8c3e53b7087bda93cd597c6a725751c1fae9e75b5dd6bf589abc59a18e328fe68632c8db43ed17d687d620575e70a04f42e94fe07452eed8d23e2a7ef73fb3e23682ce9067d7e0ceef868fa9fa8c6b7e873f96f0c3d689c3b8f65dd2edf81a41fb82ffd0ffb369cba26fd50faff1f367ed442ecdbf8d742ae10c27de9270dbd8fc34f1ad2d5a41fc6d7ffe31f877ffd2f84f4e34f1acfc929bd8dafd5a56455b541b6dccaca8f5f6bd4e0de3e699c34a5b7411a3511db7fd2d8289541fce7397047657d1e04fa0bee00dd7b9f47f7f766f01b6b361de706eb1314e683b33fafa3824617ed7dc6d0833b42dab37192889395e5e92097a16beba81d9a709c3437d418cb0c9385aed075c31b3f5dedadc29807c5d7e2329c14611714c54dc115210bbb7240b0828b6797a14c3665964c9488459398c8ee7ac1e0a4e058dd102739168d9fdb637d77414e97465024f425ceb4c84494892f274598888ea1bbca328a3291c928ce9ec835c2d704f3cd8d935e0e32577aab0e899de9a51bec6285b367172b270bd8b38b15145b7cf9a98b7dfeb3edd2080f8d65cd0ebd833b42ff3d8feebf6f2cfd3f2ea01ad068846f174dc7a0309fd75143a3b772f2a33d283c9693b51a6137188195ef3492cda2e98f978e4161fc413d294cd78df645c7a030f4c1d7e11b148d2bdd113627c11a6aab2bb8dbcb9a1aa3e72758437bca8b64d7f7a0f08f86306cc71276fdeffaf44f59b3af93f95255b61aae7154702c8ec565c119811b82b7ca34a68c9f81c6a5b2ebdf2413c5e125b989e8c943216f9418339c7ab7a94b14ba3e6717d5a588f504273b7cf9c94f65e80a8fbc44248e721a510917761922d99545310ec7e258d8866b34f474b2e5bffa125f3887dfa2575c5014497f59805dded88d85cf858e080b5e046097a1cbea5701c45735552237c85c8b6385aaf006db06f38483a98389ea6ed5a4a23377c819393d085d616cca84b26e64aba89b649aeadf2639fb8e6c771ca5445572ee90ee8cee36243404eb3c84fc50a10d42d5bd970b8a0a8d404df5635e8bce500d4299304600add0c5bc20823cc0d9bf28be079c4d19da64ca849ecc172b5054280bd444433470b603cd893cb239e90dc9ddcf69862c883841c50c2794e14653df1ddc212486778627460ed5423427bb9b9321da7ca9ef44165f9ecc7b4ff6b267e2a7ee36b275373fddd183e3b1796a373c573412895a5a70f80070c7ce8cf9527f7a36c8dd5f244e823b3a3d6fc6ceb8baab4fe884dbad8bc5362e0235d5470266428682a88bc756c0b5900bbb7eb88529e3cf4d619aea7f81c3c85d1081e1393284aec94d016373ac79574f583d162222e42aa4e0eccd96c10cd3a261da354cd4c8566f74c6d6e81976fd25badbf55055512111a6a93e165ab07692d0e51a4729916864aba8518dce8846a3d148541b11a1b1dc5a2d97ebf582ed129cdd80367e2abb58ada23c2d16d7eb4617eb64e4003cd74400cf1d80c76b2297dccdae3f92329a0213aa40fa013d833c255989899f462f92f18529e3b18ab23711266ee167bddd442307135ff7c62a2a7495a21affe94e8768f6565177457529aedcb2bd91e3e8f365c81b4ba3b154c5491ba96aaaaf4bb2b5ebd7d0e5b3767d175d8a562e1baa5d9f458b35d126de6ab5e4c4ae4f4397e28a2e45255d665c415a7c892ff1f5fbe5d160d7f74255a80a551e73008f1bc0dea68c19f666511eaf06a2134771373ee3581c0bc7c7f254b9145faf8aba31f155ff3d1a64f18928869fa81613856baf2903805d5f8489b58ab22f6a9297ec245bb4c158dec4efa383f17b3a88f758732cfc1d5d43e3bac4af2432f7363a681eb0030f10900005e6074f5c51a20f45957acc0af8705c12613a8383c2c454d30907fe9167f73aa60c7d973d9768a1c506f7fce209925dd69c98f952ffc3001019d0c00638d0010f7c200810844004232041094c20c4094a2043a020052a20620545b0c08816b8e00547c0200632082204899a54124abcc4c414a00061c018c000a7182ce4e9e40172c801c70423e3982f3ae0c081a3e424e7a8a61c323238ae30b38005e0b0020374e8c0d1643bc00138660fd861071c5ff0e8a1071c5e40400212c0518509f8e0030e263d2a50012a58e00217c0d145fe4173e0f1c9c40a239c6ed8d35a6bebfe329081251ae00007641df8c0074aa229e41cd5543fa69a82e8be7e8e1084800b1190800452288110422839011020511822052980820a56b0822445186144ac052f78c1138e88410cb6908110214e402295ba496289259a6033831930810635a88116d9d3041e3204e6040e70b084d5134f64a1831dec400951b05848a4e8410f9240840a2a90f0832aaac00208458abc8460c4c8115c45288211aca0577838dbac01514df50acf8b8ef9521f079df9e13465311545434df5af50dfbb224f27778ff9529bc8b5defc34e7cbad4e9394f1cd6ad89a9376ca80dbba78756d55b5ccae9a2f56ca12d9d30dc955746f5bb67dae3565ba6d9f9355547d91165810615b6eb6edcf3e999fcaef09dbbefd986cfb3d61ca70adf9627f72ac6ab294443576d2befd8ed23b45c652648bdf7bfbde6863165794f71ecf7fdf48a2ff7d0d8d3792287df06b6838979fca2fb6639f128e659f2362b923aaeffba61056656db45aeb59c1c3e2803a883fd63e3affe920f53d9f9df4689210bba43f8468dfdfa5ef1b4178ae554792e731f8a0e77618c9ffe5918c215d9ca7b8605996d3514df641230f2cee95c8dd7f88701fcdb15aae837dbcca9d2e6dceb6b38a0235c9e3d1a41e9d9f5b0bc15feb0bf1de7fd29496b6ed77c01e369ef6fcbd2775da87fbd076a681a826fb178c808d7db56ddbfbf66dcdefc8b170924c1427850272c06143a1cd8d1e0773d2be0eff9438693f99fe624edaefccc8b655ed2f7135d94f6036e644e658db722c9b02a2a2fceb7f336a3b1a62746ab575bbab6bab6bc51c2fd1a294d28cad8d936e55559cf429030ec9a55d326d6ccab44c99ceb450a67d322bf7dc887590e9db113f91a92eed6afb57da94a9551c6571dcf464a2ac13264ca612052820871c70e0108576696336b669cd49476261f665cdc86585c12aaa3e99267f19586936b6fd6dcc315ec26a7bf613d73140f534f5e7fd989b4389e386899a1f0f1290e55965fbdf8ecbe1a7122bc03f072300da3938e93e8c54ad801c477219c3434c0e36c64f541ba927ab6f38e9ef2bcb496109192e29c0a4302bcd1b7456ea3a9ce4c17e39633ebc0ee7c15acb830e6ae77356cf3c277d1e668c9324797a00a52f811ceeeea568e317de259e339c1ac4c9faf327276a4d578e89a22cfa94e5272232eac45135468bd456a54c767d8fbaca4f9e0e07f630c1d85465c4be7764dcaee9900e5d5190aea8caa3aa21768e193482f1588a9e0ef113f5d38e8e8b223000308a004667c47b8254937ab89102d1a6364efe928f218de828422e692a5506b1298bd5c3d3949f5c1bb1f113d546105151560751bbbd9fe61e02881aa59c3745cd58dcb0d0041c6c146c2c8a15a594d23144cb1c4b5c22260955d5042b924120c7d2d96d2c8a958dd119fb7ac5baaeebba9b8316b8c385627589ec58ed1084bc438806bbb169c3d0d509b9f0c22d709805380367a3b7caf153e9adf6cd4f7eaa18074fb155bcd5942142f6604ede4e07ddaaeb28a51477ab8e8b2ef65abd6a300af382d5cc982f9ec484b901b539bb0c4bc4aabd815cc428a5f4e39de5c2c6eeab8b55fb1ae5cc9728f3a5eb3a2a61e868bcbc23a3abdd9707ebc8a0286f8bd716d4a54b42f7eac8e86a5d146540c2aeff794d6490c67737af06d945313c95e39f95ae60ac6badd95b49d4e4564a85d76fe77d78f78390ded35ee90fc241cea65de080e6e52093bef4f4c1ff2ae8c3ef7bb33f4bc19cf3b78c65cd6ef9f6045b68d7e5cf6784ef4f7e1df5a68642a1cc62370b08c906b5e88b24fff01e6b215708f9813fd4423aba8bdd5535ed8bdf8787c3efe820a50f3f08e97b1b5f43e31ffdf9681f9db7a18370dff920f671697cd2677d3bddb9baf407bdd7925d265ecb4110c84321d05fd0eba8e573303fcd0dfafa5c0c047a10e81dc74ff4419fc7b9eb137486524f776fadedef0a3a69665b9489b1dd43b73d1e912e83d825e8c9e3f7a0d19f8bb97c656161091ffff5d2715c97b40346a0b3af07f2107dcea0b941ef35969f40efcf02eef0efea4f4d10bfffd5229f1148cb23b1efca7fbaffdc78ff563edffdf77e57bec5e3c34797be5bdea34bdf2b7fefbd9f7f6904d7f237df1bdaf775d43bbe110ee4731fc4726fe8bfaf2b3a73ffab44761962f1a1f4fdf9dbd5f8b2459795b543cff2dfada181acfce7fdcb164d12df6dbcbb5ef1bc7f3e7fc7508bae4facfc1dcb1bda08df2bff7d1fbaf7fae9fbeeebaae58c0c800f7d2f1a4bba450f02f1ffbca7fb3e00e81b37bece48b6bf95969671ee959595959596cf4a5dedd07bc61a2f8ededb18c32f8df8492cafa38a44a127eebdd757defd57fe033df509960f612f8de0ca106579ff96afe53ff7dc8f5ef1d0c871fbf3a167b99f6ff9d271364b8db1a5e66aea427f411ef7817cbafbf5093a7375c9021696afc1dadfc7ed956eafb8dd2b2ca150e85756569cd27bdfbdbb2c2dba749c1dfa8f25b432e60f8d209b7be8b68b9e4e7e1ffdee79d0efbaee5bf97c564263d646f07f23484f279f244712e8bfafd91f8a43cf713a5126c2f0589ff87c2ead36841c7a3fcdeece2a8ab4f29daf215ddbcaca8af6e17d4707f1f49d7d90d0d341ae70edc37b920e32f58dd5d0ace850971489fd794a7dd0a5119e6f57575eebc4d0d87d65555617d2b407fadf7f3736db9546f635b2c77df9a668f8d88d390d6d327192295d15af664c142705c7ea6eb70ad29f1bffe4defb1fd6be675f88e7e92e564d313a1e306354453d746952cc498ec5b1482dd20f3cbc09edcfe9a4f1fef39107dd21cc3e13dc87ae6a0a6fe6cbc76553f0f3ef83f4e19346520f8c493f48365ef3d0036bd20f36be644393bad20fd2e3276952f79386240b6214c2c69c47d0d29c94554d54d3155d7d7a789a09efed33819f7b3a8ef6f7e0585e249d71d28461c71342ee7c58fa92babc96d7f28ad0595e9cfd895f982fe2cb4b65cfe5b59c6c83ecfb0ee9fb61bfc3bd10efede3594585ba14619b26ba51dc958d519850d575ba8bd11b8b81b5f9d264bed47777277db635769dedbe0ed4e07fdde706db72b276d60aebbaa07d4d1bb3629eac162ccdd62a254beb459db14a288c2d62b9a0a68a3f4ff353e7722dcc5367c524b115f3d46961927eea684ed65aadbd4231ee182ed1c20d6117619249d60f5f35cc42acab85ae3094cd978b0408b9f4beb7e08eee2dbe02b096d2d045c1effe564d53973807dfb6b84497584cb26b976967731d903859bb5a67eb6a9dadb375b50ea7ab759dad46ed6a9d0df6ea70ba0ea705dce11ccb646dab65ad8b665bd645a3339d8bc2749696338ae2a233a3348c6ea33050d31aecc8365f6eecc66e753979c445e3c8cb05aa401b25b2d8a85564446464b3200fbafd5e7d6332d7a13e786357765f875f999fbaafebbaeebf6fbcb21b73528993b5bbb2f13e786fecca6e7765b1aee636c01d3e69eebf57847eba1469b8f6fd0579f8ee7efe1cd93a2e62f17d7639b27946b6916d1465a26e12efde18cddc37f115845c86ae10ca3c85be7ef88549528292664049419827d0d72719995b08d940fa010db89d304956905a395508a5b0619b94844d02c2ae4f6a82a26c1b661865a2ee2ae4029db1241e909e5825b12b951d9ab15fb55d3f74d517925716295cc3a00ff449157603ab3506fa20f5b0f6493f6493a6cebc4e87fee0de3ea7bb5b35d59a93b553ab76b429d0e7235b0647b6d067c4c44df59d3c09552325239993a32413a6fe280ab4d87c19b946af5d5f09bbdadba855c4c9910f264cfdd10f888c52a151544594337aad56239c165845855e36dbed969393b2a9d01037dd2a2adbc410c38913264caa1225d6066402ba2a4a026ea2efc426c60da7e648d9f44bd0c6a74c8c197392838912fb39449023318c6c968abd9946364b25a87fa814cdd377514d191a120000007314000030140e8784a2f170441645513d14800d859e46765e1ec85192a4144286186380010060000000000066300393674c97d10d03ebc123ad080ee3d18f9b75fb1e8637e9dad11ae27d5f64b6de820c11f083843fc3c9984c5285d04739b2518e18acca21be673bdc973db49c2b9c6d586d3aca8f40692ec169ce4ea0dc6c4621f34cfebadf718b60ee73877bb9cb0ddccf5ddc733fb771839bb9897beee72e6ee13677719fdbdcc51ddce72e6e739b9bb8879bb9c57deee61ef7703fb7b80db819b9b1f44782de07ac04ad388331d22034a65cd27e4bd76fdea194c493327f00391a04d8c9daa1881ed83a1084ae274a378a718a4e402f5e3219873bf3c302e8b15d034deea46f737b7300468c1615e8a10ba2dad9bdbf01e6d8432b8e275c283a3bb36861c49e23854a04f75da66537b3181bee6066dafb68c93e2f5e41399d9ec01d45e987878ce904dd2c827f3d644047f0ada2f8f74346f402ee2e82fd1f30a627e84611fcd743463ac177154dbe1f31a22778bf28f6e581311d41f78be05f79ccd0adf404de7c4a7f8d4199dc04eb129cc17acc108270056c1212866e6f4320bdbeed9d437be8808b692ecb635bab501ad72e93bd20f4dd1cb514a675ee7372ca634a0bd85841d0c476515150ec0c656046bd05dcc497c660442c01a9a737360a34ee90c87f3a6e678804320533591c4632d8caec783b291a246ee2644701b118348133e81570032b9f8951ac00faf9d2188c3104d3c39561661c4b10bdbc3413a3d802e8f1653131c60aa68f2b85c1388620fa79c90c46b105d0c7973b33e30ec416e04d8f71691e0c0d3103e863cbd8d8f83e482f8e32bd059544a42b048e1a189b439fd6158247fa0de066f83324f476640845a619f29f420b5e06c4c717cb1ea0872d75a3c1cd603d3854af8de90cbac194bda9d1eda05e1e2d2f0de807dfc095dd687c33482f0675af46f4066fe64b6d6a7037582f87d66b63ba413730e56f68741bd49b47cbbb01fdc13773a5b0910c3d1cc80a3328165ea2da12b6522f17c061df66f06b82feb9bcaa32f97a5895c00e497f120235cbdd4a937b87b33ad3b298eb4c093986675c3d49419a05a7639a58d500eda515545ef0151555b2e6b47da194db44b89e238056896497f01df73772b13a757432796cf73d517f1e6b55d45ebdc1b823380c8b0acb82bf8aab3122413c9f34601bda8de8fd73f3e410c19d9fe1e2f1e96a3990289d9b712013ee6181cfad67c8c82a375f4bc75c08677eb9008d9a2de0a336ac48b53224f372a4c14c37eb90e45415172d44ee8fcc70e531951905f9fbf6544e8b2e6f66618c9b60e6ef7b66b02c0d2f6871c12c42bdcae4d0d8d80970a8254872c4c2b257f5c585ab67efab9273f91fab9082293798f7af0c5a400c056a2867b6ac6b3cac52e1afb63c8a83d08b519ff6b1e0c3c4d883417cbe1bc5eb1f19d418a6a1563bb3c22574aac1ada61adcf0290835d6191e384b8d0d7f024b555ef4ba9531d0800d436b4a730ee5d1c2776cad0f0747e98051c7622264ee996edaaf55f9a931a2f5a224760efd9add5e4175105e17812371bcd87d9cd2b163cc80de9a0c5d293ba469dabb18e6e7cc3ed31af0a746f7c9b26c22c91252702dda0b2453a80a258d02f92070f3ad92b326adf3017c3d2136ed0743518719ba4e44726c73a8151435cf73a673650be9fa51de529b3e04c76867835b6be1b27a078f10db292458c1f26c817f104ea00241619dbe08f6b329d7d3286cc25286176c3a8ef0b5f02e835da98502f848a561ad1f1c38fd04b71da9139c4be00926eeb683224e74f29b7cc0481211f815ead5170a7ca550fe5211a53cb60c96072fcd46007f25a482734707c7bd9d65c51a4b1bec150bf0b72ebe6d1f9e0450be3c34460e81ca2b4a0e1eca55e7a1e2fc6aac20cec67acf7ca566a1a7aa0eb3f8681de4582334413608a4e3e2e12f2de29261e98f20573f69cc12593610c7da2fd8fa58abdb1b6e3b8140c25b46a400e60c757326fd918f966b0d91f27d546c3f2c6803684ca17389a987fa9900870f0f61ac564260208ad624bb85dd06fa1a2ea91ed37776e419b7818b12f9cef1605f023f63a5ddccdd201d600fb3c8e4a408606b711663e5b33193f3b13051633d522178994ef6f31e297ac96d69d2f70a23bcd3da035c9c2f0497bd248794914836bf859bc102705526223c5b08b411d0664ee881fe58d205f6335cd62ebf4e8685b2813fbd255caf506f6860a43217eebe25b0b167495b10a64529ab0adc113b92db58d5f3c3f369ef357c2724e935ee59c74d444b081dadf2f3db6df0564c3835b3cadcfa80d3f9c8974859bf98818e881ecc9cc0c01a2606fcc682d6a73a3cdafc69bb77f3e69d966546ae932735da096f61a17e4e14d0f8e94d545e8e5d5a13add35bc8cb6eaaf4f845cfba8538fbad04d45fa0480a972c3a8596d1fae6a8f3ec0e95a2e1dc691e45247c5408198b01f11419a86c4f46c3ac2bbdeb95a66e180e0833823b17c0d24cb87f22b2a6ab7b1eba406fe73a00b8a34e9731f4083401edadd5b3c9d21bf6731d82214a165d2138c87836aea4ab7b8841dda73b8579dca548af258139e9aa892d1033d1bc11fb95aec2baa9fa8c4d6c6f592d9cd3afd58790b1b8a03b2791283b7c0b09f7250f28344c6484604cdcc50caf59807403b06c5cb6278609e30d387a91d1936868b0131fef03c48ae6c6c32f159a37e69894c24beed8d0a07177e045a81c883ce8fb1c8c0e01caf7dd770d72c4ceaeba6e0c12f55e8ef67a3042c7ed25edda335ba509239003c2f0d8b8bb0ef3400ea13cad0dd1658ffd21871012af030a2840bb8b6b580e70375f287843bf0396eb7a60131f109043c8b4020e8fcb02ae58be2fff8bfcbbc0c9cb8d90af925ebf8959555f2eb79b9969d17cc5add709ed0ab6ce864a052d7a7140034e1e4822b5f55fcc30982ea71db1fa00c69904819bdff9ada903f58e96935c630187a278899f4b45293cb8540d6946e886b54249bc54b091913ea700ed8b06126ff835c290b68f95c3b0083d360ca8b91592944dd0f25f81b49094e9b8dedf2dd9d4ee04cda448e0448206bb9211544589976e3880213890497b35b848d46c183fd64f610b3c3cf149e9e721842e6e1459a5281e7c615f5fa12ca9b9fae3533fe39329d1600c8d81973da30d20886cba7b70c907bee8fa7e817931cb4dc1b67db5c37767eb7a6a6733585ba59f62e5ccbf26c9ca9986405e433e086941c7e61523581484687d1363e887dce73464095fd06806f04e12359cc68580d7bc10f34e2cf89d8e491ba279d2d187b985dda9e6b3b53bd9bb372c489a43f308ebcec82b57fac30b54711378fea0d1aa804669e3ca63610761ce791bb8de13cd9a343fddfb834599c4ac87930338e191230593117ef1d314058da96639dbb4c78642694e5d646e558bed51a6662b787ec3242bf67b080eb4e663349d69cbe2b83dd43f6ff1e1f8a0078666fd1b3896b4d463b8567fff27f96ec57bd5e050bf1cca9fe97d02e64753058ed8b24ba39a00227771fe927da105d317fdbe6c2001234813be749f3493e0a49a704f0700dd2d2aedb032dbac7cc35714c6577eeb39b4c3a238c68295e600b7138a70f241a674df0a9f5300e797e9c1808440184a891ddec567c5556cb2daac7283fd917bf9f8ef462e3fcca0351f238ee1ef6c94b6d14e3523671a7f1c8a51060c092b5423f04c288164f19f5ed0f7d48b4ac16d909cd64a17e06933dcf18b36ffe327330ffec4c95cac81ef4b51e524ca9a690b3ba1feea1e992402b16e3f9c74f5c517f0a5fd9364372fe7c6b41616bc2d01e20922a13e819d05486865310b3a9b24b211c23e7b89f96cdf0e56de9c97196a83943b28a6dc153718b5d19ba5fa969615eaf838079fe9214f6e71cd4088f171bb9819b15cfd7d5f3b0b292f408214977aab894f2b6178e2fc51e9460c381b11da5909494a87f07f95fa528eac1a9b104781f522a347d3ecfc719de036946450d4fce3fbef8e20d06ad21bfa2b4537724c7ae7149a68e82ed7bf714855b0f483e28e392185b7db16f3e0cb36b3dba9d1374a831a0004c96a6b40310272786c242b6730cbed89074fe08ee2fac83da81d163b3eab4fe0b09a821368a404b7b5e3d8c00c797e79f06bf15df52cf60e43ccc6b8a5d1596a1f9fee5c3e10b17585dbcadccb8a1abf724e970fe3f2ad10af1c6929e4e4c393a915fbc5a75304870f48af74a8c5402041b80d2839aedf729a7269033c918a28a2cd02b329e06db2ff309a97a076542673342239a0958090a4880c50a0ab82ee195398218491f5c3b1a7c4db50a2b06623523d32f563cc942c676e4416891f613680a4859c654e460adc6215fc51096650a7c0fe376bf2f4b3baa9e25a212ff584b7b62386509918d66d020ec879138b2555fc7b2bfc147b5dd3ae67596173c9c34ccff448d63d0e551c3dcb0593e412ce877087e93673263a6713eec5db54e450486342c8bc05ae2497b17fd8d94b43cc2bf114764b71ac88f042f0ec1928241365291bb7101f008be6c41fc6111c56a2144403ccb7cb90e289f4b8de1905f8a83185e667195a08601c037201912fb12a224af6058d2edb42330ce2d4ece6184d3aa050e34c8284a3360d4db272508a3ca9751342d7904a5534e4342b86f63ed000d2db6c1422b909cca4c500e9e941788e48a55f1bd029e31d966f17464bdc2aa321a9d2780706cfa9c284089a5ca7eb67ad5ace084248c033457ae79a25993e8eac49815888360485c9dbad05b02ef2f867f52995511b994ed21d1cac4361dbbd4d0dc46f6ec313ba3a18308bacd28caee14c57ce303e10980ac65d095d7febb69bf172a6df8a720a659941e6c9981124a3b20aebece92b81e514974806567a9319b45ebfa7958db56b18a4d1177cb251e34c41b9c03937a59db453e723a11b12f64337f45e4b63314062904b5fc1faaa700f10ad69444af15d38d10ba3c1822885fff1d6752f95136498d63c879df1c3586164b39bf92c5e0d484915f94bf10e793c1273832de0d51c5c6dc8189f7aaa39b917a1597044c8b153cda133b233d6253961d274ac23484ed155b92e3d92a391f8d84fc0c9f63ed41084f41b0143e2f3b09d3178561b33c5d0c5c41beaaee53c57e87dc4923e169d38abccc1b7e6f9fa8740f067cd37277a91c5ba99697b515443fafab81adb45f629f006de50cce6bee668d499e87955e4290a87c5eb22762365623ba9da0c04543f90e32c790bb641812bcbc510c4f77b9db88f9c2fb38bb18afd61b3ef2372c17f87f7e98252162c5d4d4347d9356538f333f5d036359cd342be4d098933b8349050982a56068625d257e7e89825825b4827b26b6b0f2c2320a23da06a88213be6bce35c528adaccda1abc1c99e35d50ed018687450e16eec6d697742bcf729d301da3f539f3ed00dca5b50708ad091cac7945f29bd9e0201cadd9dc2e0ad20f3c83e5d65544e4281cfe58be40a960c03f472a01920a02c512ce2949dea1471c59092f4854101f454688e28d0b83464190827dd228982d57a3ffaaa6c98ce8f798abe00df5fd0def1a05e73534d028c89dac399e6b8b35008011690a04501c6f72c951505aa06dee64ddeea3c8983e0c106f65c840198461f81e1f698dc447b77ec5371cf0b55ef164d4109a291c2fb5e7ac9de01af15ae0227d8064302d3e0fd6024c0172f2a7108b0f42bde6fb57b8f8806aa449b6b8d8e748caa50663e09fb8eb3034942d31ca927d57e458b8be42fe46e04b83d22aa44d68539ff13834df2e59737a7268f225e2eb83dfc4e6f8e48d80e0d4e1354990d6efe9d76491286e909370dd0e9881c9dcb696137e40b187a82634545d22c4ffe1fbf27112f6082459a9440bd1d5fbf9586cd55d0a8c23f1ffc94e0d67688b68207baea0c0e08314a1bf45c40a9283cdf9c10f0c4434005225a0771b29d18645119d831a7a6b906780a4446408ccd0b780f4ddd81b93eb14db564da1c0754a504f3ac3a940e927726f5b80d25ed0caa8def1a6a92f252f01c3000daafae91dc0a5de326bbfbb3ed095cc000883fe67cb62428456b04596feb991ee5e61f090ec3c96592121a8fb140d7e6a037f09c2a9230d31d7cef5df8f5a3b130bb71699a40fc16ef67e9e3503d8fca7290ace9735211c6a80b21b65d5cc3485171c6a40de337649fb221dfc0b0119d32ba02f623282783d6bfc70912825597393036adc6dabd87b96c481b7949b6dc8399380bd8d5a8835558e8fd3f16ffd8f5af8e92d5307be2f9901b2e4bd0216aaf6522860233895d19fd33a4331da5491444f313e75fa7f59d043675eed4981904a1cd2709041a7497115843c00743b09f13019408c8cd609239f34a6aed9bfd60f549d6373c10f880f2cc4faf172f7f30268c5e57dc59a45cec939a8bde376501771053a353b2ba0ed09c8136c3cc0fe152c38fc1848ae18057ea9b0eeb5780d7ff12d83c6b20a41f5d3a034ef3834b222657b21b2964c1199355aec4e9ae08319344705cdd2045c13d9af6042870bbe5d42f8319e154f90dc0c884b060cace6371ce190af1f121c3ed9d69ee9da1ddec0ea02585aea8dde0152482f1484c57964d7ba2bc41b07edef720274a1ddb878bcf020ebdbe508f26bd25d70a05bb05a7601b599af1eda72141bcfb4416684ac644c693c70bfe83d7675dcfed05e78e1b114ce327102b14108ab98c0c7c128ab48bc1b0205625abad187b331511b73ceb3240d27c65929e9b29109aa69211bfcc5febb1ace62c91cdc4ce7ea8f8cf91a0f1eeaed37dd7485bad518476810b6a724828d8db8980bb4b307f3b0c49a1311458fff797a2ca2cdab70adae0f714c89c53f9ef50e267528ea9f7aa9c41cc5369b7ea7363724155e6006929f864c3997a804b194cb72c073fc02a0465800bc94e6ba3a374630c91a506543483a8c6b68a3b03f780fb3f45f1a4c45a074120d545b54628521e8441f8c4101da6f22342b1928c2d8e62990531cb3ceea5e02895382f04b91d8292513c1e73fb413143622dc22ff4ff06751e17ca3a1b85ae802b941ef37decce2697701566889564056b11d6cf6fa45f002ed6adb08c6a45134abe4bef86108f425725a9589eca22162c6e74bbcaee80fe987c5d016470909c69e66e5337229e555e45e968d01ac5da657a99f77bab7937cdc06f4304d857a425743fb780aaa62f1b013d2e5b6e5e47932d42d801fee3089f7f50dc3e2bf86b462284423e8bd0284c47e3be3d85729b216cb0cfeab7174547031a5a0f0d5bb6ff52bbeb39ee917bc2666b548d84dbbec2246a8203a31148fba6a74fc56932ca959389e11fc914ffe9f0275219544dac6a061f9485b12e212c58bd3690a46c055a0a77959d1db8d64cbf97589de0db7add06533b02ca65540d6095a3699948c010938fe86dcef836d2cb7d47895b476c8b9f41c1bd301dce03579f5d0b912fbdd4944b408adb6d2500bc06e1896ea406509b5c80035bfa33d533e6c33767a81f8a33d46dd3ca37c72bc9aa7fe58199dd550b2f0c80322b2d8aa24417849bafad97525638b3b45eb1773077a04f8d3f6967b08af66f2c91ed299036209bfec12d2c5726c120326193629e8a82b9730268f632df06c56bc129395d3ad8058fc357c53a35e33daf0e023fc1b9928edd0e4f11ddcfe5b1f583bae64d55990f9ee05c3b99c0e167aa07772d9c990be844ed3a0708537e2ddc37c34787d521a85c56ca9e91f0993a488d99e6bf60839b3a7c86dc42b2926e471272c4206d5e1859b60aab9f1bfa9f405c0342ef2665cc5dded0bb6f75f6a0f2eb92cee6726203afe81862e19e039f6ef16679819e04eb9a5dfb43113b07135f67ae22bed416976d854a3de5a865216ff5d70eb53717bcd9f6e98097e821a7ccfccf08a36c49495adbef7d3d7370299b2655ad50a63c03f0d24702b28996239f6fd6e35d8a71679b2b48b6df9c9aa62460d53a513d6a863a329f886496f748ed2cc8c44b3d2d2af185309e4d9110784c36b8a7e4b73da004a6d8aba0cbf1bf8e22edf52cf9a2c1c14c7b705bb2bdc3dc0b9b2e2abecc5f52b12344afed243056f520154bf788381bed11dda40f0a86efe90570db0af2e5020c4a13251c39db1eac17b3d42606a020e56458d270357f9b9f60c24d80fe8582111ad288348877ebfd560fc69934c5050a11cc518c6ab9969acd1da6b3dbaffe5d6d1208228f1c579f6b9146a46f1975bda9d3f23fbb8253709265b5fe9c2ab4516acb6e575e658b9ac0086f50c33989af2c6655f911afcd22770cc8c2e23bcfdda9fd16a939e6f0cbd5f5569e50178cb477440ae876893b23fc336dcb6546d6706ef9188a47fab2779b900ad9d9eaa8fd45c0c9c080a7970141ab213eda6fb33194332f8c00ab2e2da68ebbb5d721dc9473e31f38a8d905b2e17d0e5771e9f3c0d69c376c64c21079232d22f2d54e7968b340c5827aca6848434805db4a0e292dd8abe19a1e24a9b2803dfb371087f1a5471fd5c812c761fec9d8d22458099a97919eaa4a1a457d343b5b212b5735dd1ed5e3658a1e48b51e991044be614ecaaa9ce78e0d3796864e38dfde1cae52560ba201747b2dc14815ab5a3d0bcb8ae76ba4c8022a040d7110a703b16a9e96eda604d4e8ea8533e466d90a7933c04317237e90f106000b2d68b670407d170113711f90809b40366db2a0825ed0fd9392f620f2ea5b0fee7eec34dbb53e57141aefc0f4b30a1703f28de7c73001d299d50247537457c22ed92d9209910e4f54fdd02104acc36dca44ebaa157cdcd0897d6637dea8e31d05e17a0918857cf7299263f6e3570db661ab84c46fdf1f3afc612750f67ebba26d06779ba638132abf1a0386188381205bfdeffcb3e05011e4e7caa37fbacc5618a608f20441d9d23b71cfc08f75b65827c8d156880dc80921e2c9a366b0ab48442db0c842e3c6d58d2015cc0f3dae36c8b1604a11f92679d9ade76a8ccc7a8829136aac25624d4c4bcab2e3f6227818b2ea2cfa1c199e32b3adfb82df2294296d449644d6586b0f24aed66198caa0bd7ec316c68b6e5c1ce6bec79e808d2727d5b23f5ba2b3fa03de12d5c8e808cc286c1fe831e975f2738f68d39433bf32acdfe014f0f55ce440a3e24ad56c7932803244e5ac443b62e0da8b8f709bf754262883fa8c62bcf0e6d1302ff651d9d93faac2cd63e8da42818196ba7be5755195e1410c78467ee1f61fcb39f24bc9d0bbbbd10cfd04803f67b01e60408b5b246703408f91a71dcdebd59dc0cbcce486778fd55c0e95ba74e60a2fb517b92af2cb9a28ccefe98e4b65fe3735f0ec0091929982b2098a4888be44e1b31865f7103f22c4e33e2bd7c872162acda5b7dbed0e4ce12a2b100ae0fcd0ab512b4b609e92821eb3148168a7cbd14cd6365caa2accc6fb9cd142927e6efd342a48f14da20caa82976098442dbcfba443a155e2b17a10159073b6cbf061132db22a1e295d7a9757081e4deab9b342af1cfc0ad9ffa4b50b8205433667879dc254ab3327399bbca8fc43a7513f976184cab9411cb0c7ddc746be2475340c081c27025a8a4045ee97bb110e580d45ea7fd40d5685631197edb4d45d294066bccaadd8531dd71f0679ea77822af09246da79e5ded53587fc0f80d6ac2ecea6d49722193ad82974654d7b7a6416dfa5fc1aa846dc7bfebaaaed55f81f6c40b9b4ba097b9542e6b44598b3160dc924e813b8d2b36678a8067e3befc0a18a64e22f47015f1017a8131ca0042e803e8f28ce894ece4b45911a9c434907d48a30aaa1038c7ef82c4c4cfd2e49bb132a72ee26a3b4b7f9aa6b8eda4dd05c4de95f1dae0ddb95314ba19d31dfcdca0dc9017a38c72b264efce58efd8e6481be26313ce410cd2d5f9c1c2526ef6f76eb131d30299122a62ca24b8175b65b9cd9ca68250f722f55f2a7c5096567804ef1db7c8ea32a90e93c6db8a4845a8ae1b057fa032a786656604d66f54f57a973f095e253aaf7298efbda90149f8cb3c23c7d109adaa04846d7864d713691293d1e1043b7f4c1bf7253022e12f24c12b5c85ec14abc010941ba433de14d08a38c2f31d452977957e7baeb0cd05a201a2fbddcb9aacd758fc38f31aeb1febc9796f9ebfbe3906ecb2457fdc6a28bae2dfd692cdbed9b66fb12dbc6c49734795632d4d2825371f74de0a3033c875f257d3b56c676653c47d12cbbc1097910a0245a651691ba443e7d0c4d5b19298f6413c1c490f01a3d84731452650f97d3636827e22b98db29172a1fed521f3575c8b8905f97b77cebfa7371e52ffb7a8bc8bdabf056ac3e82884336dea5cd131a0d029256d361498d1ab56d5433e473b3e088c82ef6ac4bc46f586ef77bee6ee80cd89a1e6cf64b08973a7f0e29b6043abffbac6838855069be0e6e2601765bbfed99b11a65c2468f6a0fb232964cf0956c05ec33ebf60d043b8fca3f97cb28c70a984dfbb66249ebafb9710b7799b9da94a42b8786a010d01e050d01bb952306901c6becda825c2058b96adab1cb442d338a4a3aea995f03f191a26824d602403a475ef752f5aa3aac49e1dabae7198b89ca0b4ed262dba1c4cb9a961fd066171c15ce3f0ee43c4e1cfb1fcb1a07db8b88e86dab74bc3ba0e64545ca36d563376041042d71fa6af0e4d0ddcbb492ee6051ccf432859634a6d9d5bab3fc9251cb9004962587997ecabc87b0341702eea6b26e4f39529f566c703deab6d0b612ef50cc3a83a125d7da30dfdcbfe2373fa64c24ca1626c2fd9666de49b69f83d20f1971a65cb54bb87db4eb01b0284a38e1ca6e843438719532d8c5b8905202c88c33ea081db0a12b442d88e3ff6eb9cbf4a8bdde8e30ba0a31462579ea21dd1a085fca88900e7ff4915e5bc0a9edc7a876e049f773a0c4b03e59f326db9bc063fe206e0950786d64ac97f1d739ae7b36f1540f953211c5ca6c5a7ae06f579224bbe94c08689cb1dbfaec6de9c9c22cf1c46188d460b835b627f797601dd9991e44d14cfa02d47392bdb5435c234d18669736d4627bc558c38417ea462f838355d37d574692193385290a7a0c0b560b922ee6b19793e3035fbe3ebf42a280d3f8c758bc120172719585b4e95525f2aae2eb2ce13a767d7e2303da9f51c5d3fc32561d6708d13cb03e76c0ff74bee54a48a90b283c72aafcca9c91440291a6a2eb4c02e96add4fb57481841f82a6e74d185d9d4b8f60c33c950f48195f9d129d95171a9b3802523fda38a3d6be16245dfb0e3accf39324af3b5e10f970c1f20fcdfb2710aa38953a648a51538c2ef8bcb5ac7af018dd5eb47a902f3a9e8cc2017fb4ec5fdde0da4b3d9439334b6925eb411d66f3603ecef513f57dc92fcb5dcb12fa6fad13055bac0b1c168204918bd75cbe59427f5d034fb15a329f1a199fa729151bd62c9c3060ae3e32be9f6bf145a9360b840664291cbe8a85ffbc82517b0ebd24584180b9d25a664c8536db29e27dfba809ef1b27aaa7dd4ffbc8b1702e0e3f7e52533395caa4c70f809ceb3ee7f7485440ff283aa53847fcc11932c19b17812d52e9379d9571c588bb427f392252fcef1f5c6b1aa37b48271941d758d51e8eba57a3f28c97d1ac3ee373a4e25a97fa4548dc9aae608f4aeb054d313fed6c12e7ee17d637fb098825f8fd2d80ced13a5738f3e663cff06b800412327211a2a06835725286b583b23072ea756228117a0b3160ceff37794e0ba90ec32327118128476890cb87025f9caa7ef4910d238e086d2b18e8143f6b8a9b202cd829934a6224658ebce6d01ead0f003af2abe70886f5d340f0b85810305208c65e711a789588542c1856f2adae0781690cddd913edca1b5b3db73f81db311b645cae2accc90d0f3794d5b82468e9ba461e8ddfb52da30c39e307fe54b756ee1ad6b3b3c8bc9b19e29650e4b2ac26b2a053318a01c2dbd450151558c132311e3cdd740c8d10137f8280946e3dafd7c44d2912994570e3be4ad96e020ba5346f550e2eff4bb9c76a784ad9780e10fb2b1ac6fe3063614bbb61923369ba5fced1bf762b89ec536c72e21695fe913fb70e926c9eb7bdd2737fcb4663d8231ebccd1d5e11a4fa85fc17db954ff512fd40560d0bdad5952e199095728b7318e89681799144fdc2843b893caa132e788054f2741d19caa9ee438a93f98a29b34abcb3995b835093a03821d0853e983a2d2a894ab17e60717a8544ad93ac7e650b27a916b606ba5e8a071c9d1df1969d7b20ce44d223b95d71d2ab663348b26fc39c2a8f3b967d0fee13741cecf046b3b24eb36fe9da6305850e1e7f69fc91da49d3f73c3e1217e20c080834bf43b9846602d42a33a7880444e2c2ef2c9698b76093403d9f35f0998487e2ce0d8cf267cda9370acd098ae9571aaa412c082de5585302a2be02d3335da29f03c26637e90b3c270dc755d408787df6e9e0abcd15b19dbef16f6907ce24e233b909c76b6f39a10c7dedf604dd48781f8de8e31cbb3f0f9151b2b1044f73fa68b8425d5384096ef2265b66ab99ef6b563076ab7c4612db5d63063de642937f146dc5fa8679850c4cf74127a2c53e7734070320b5dd2055f2ec2428d22802075b3ad3feec19bcfd01f48b14763d0602d0e1e1e07f20caa6fa7da823f4ab738ea351b3b6afaefafa1e986726b9be37b42dd69a163cdb80c1152149f22006ed5761747569cbf045bd4dbc2131620419d1d5f24de7102ba8dcadeccb69645f60d17e4a38cb0c70d0d1888cae69900169b70a766afb22a2332cddf3ce5130dbec23c08ebadd56965f68f2e469abc4e52a598f3439f92ad140b362c858282d8a236f1d2014929c75bc432fe57dcc3b7e48f01faaef5d739510e64c496e3e0d992dcabd7133b6b7efd66d28e46eaff5d2367df26c0c2593df1348d084b5bb9f6f3c232af28f7af52a3585116fb5190c2fdf1c28aa2be53236e2609357ee9a4da3d2a52101fa386f3a2a44c2e04e68dd181ea42b84e0aecab41d4e99f7a16a672377cdc7e098b42a3403f239474912b99e08cc2f9678c287c52437a64a93cd9444845cf6ca140d8983c099ff7ab449820b2443805d450d9a9c079b73745885b51b16d0ae9aba2798d4d19917ea601a1d249a9e1bc34a841a9a37c4d93c2ed9b26882829b481c38821438220ad55204aab5afdbfed494c6d27c875a8f3b32b77a21adc21f4079c28ea41a4c863590f43c39081cc66dba0899a3ad31967a268127ebeb30ff2607b8ff18a21585eeb48f5faeeb2a33595ca1d0ba702499dc8cb1ddb7a7b01bbc1bcbebb7092a8a0acf86030103876d51bac5e9fd8cc3ec67e7ed2ef5945b19a1679405972234e4b1c7d023a6601cddabdf31d34517871ce9d66482e5b763b7964d2aca0e30d3d0f1ecfd8cc6dc6868d48a96d239d4ffad38ab6a0dd795110f1d1ef4a30ecb4d514aaea3a5ce7310cf3fbf60a36cab28cd1cb7991d05782375f2ba5421080596dde46599ffb7c49be0cc97ba20fb102b487e6cce81b2464886af0a9506c3eeb3c2fd5ade5265c8e30aaf506643a4d6bba131865a626d72064f84da0cc295d91598702fd28370a7db0223d0e128c70560d642f16928661eb004d9be17768addbb40635d5108827423f8befb37fc27db7afcdf2e6c5d2041eb3d407b658e100291e980f1596212f50e9495a39f6db27eb6e0f9cb79b6a47745cc5c7d6005e14672f5fe96e721e3cf939f858f8449cfd62e755b4376acb8bb04d81b6fc18b27eb92bbdd19e0da8f4fae9f06b764ac99769bffe8f877b1057a3890ef230537f7cab826e068c4f679cb7102598d84f3cba462aa16b131e632e5f0e9514f605a4e326858d1b1d32bc01bd571064a4d8aa383c8ca4da6e48e1d84924938991f4d39a96c8a8a65bb0a33961e77da9be36a52eb1868a5a19251c8e29503a8f79d6809c7694f174bd4c2cfc9eb03f79090fb774854e2b94b0746f80e85399b931a43cb4ca9b15eef2869ec6b8ce6353738c4460ed7f6ab7866e91f81c2b3202e8c52779247461be920b8bac30cd510dfa674b26b3cfcc44804be075536828fd5fe751f29b086f3d6fb5ffc147fd40fcac7cc8cbf8438657a96896e9ae810e776fe22b6faa32f834bc020a8a0dbe897ba938b2344cdb5ea82f1a92ec05efb4dab502e97df6aa3abb16a28b81d89e0865afaecc584f92c4738baea202782fcaa70f090f0a8550ce1ea2ee17f3520041afd00296aa4187526f7a7d17b2903bc9ec4755e661d2104ac604c139c2c1acff6e8d46ac228aae2a45282dccb349b4e30c21d3101844e66e4b09fff1bafef61e6edad6b362076110e5e7648f61f960bba423cc79297d38726f2c313f007b9509152a7492226f9233dbb375aa0af7188dd88251536d26d370e92f9736e776a7d164295c80255c314dd8eb44b91fa93f7cc18a3fb8083f2f267d7b6898faad4fe0c5e6ba144b49deecdb6496b8fd04a29d1365334d1cc2365c54d7e166c709c4e74d20de39dbcc9548ec2476941001d1bfb2b6ce3047ce214b8c1f868a116db20559fb2c09ec65617df4f0189679ba248b81ee2732333d94630944c5832d9843373946d9096e8ad09804b43c69fe40cd5060c230cc03418daad864c86150a0d0d2bb3772e4182f0ea22b79f2c944ad035ea5f938832da246444f9750374c4982d20cb6f65cae438206a0668f9c8e103d503668c5dd74bafb62f298fbdcc16f4e7a49a75f288e09ae7edbe1ed9b3c064e13bf90c103cf6bf6d358922e5b719fc2cf0cade77e2ac79fe756f73fa34506a4f8ca7c9991e55c7b2e17f1a748ee7639e397ddebceaefc34def975019b37ac4211c6b4657b40b2b511b3ef73b06ca361a1f8b43e578e1868c4c3b5ccafd6afe3a92bee7a3941a53de38c9ecadf1f321211dc29539e39213388761c3b4b214a91bf15c8e79ddf50a11f4fb9ecbe37ba4263e11c1b5bf05bad1f7b5a4b4e0941faa15e699e7e99d9cd694fafd3e595971261b04f127fe079143886828ede283149ef208e1a51bf1f53a46aa9f7df7fb4e135a7955e8abc19704c085cdb679b091f0de3299fbcec6ddd05842994cbda22fe0983d06cb5b2d4d7892fcf8140aec1a3c2359cf6099e78cf090522b1b302a2ae3d3d4fd63da3307886c7bf60ff68b094069668b137b2165231cba4daa0889108099352ff953ebe9648940226acdf746a48d32d395ba9132210ddd0a88425f723ce4082f777aa2577e089d1063e0bb632cfb7aa4ec17fd3c77741cf4ac76188a80f54bf7d76c52c69a1e45b61e0e3a68c6deda99dd8e9ab2888e1b0ccb9bb2cc07bcf0df3e638b3ebfb85b6736fa3affb902755ad3c97e91818fbdc558890f696a35686b5aedfb838ae56b60393d3c4b382dce10cbd4948f00a55893afc6df7832e7f37861b6c3937a2265e6f59fa36e32fcbf429812174d477475e893c3e255cff29fdb02f17cf10d094aa013a35ddef9c23a8d4b1645cebdf00438da9a34408d536f8b25e091ce0090fcbf7a60159707ace47e9103fb2fe11456dcbc9016ba0a4abe36671d203fa586b4dab07269b616776bce63a2c4173c6b2190c66956d4a4ecdb8d38558ca85175f4d02d7a822c9026fbbcafc00f23645fc63bb0b4cc7f6259b3f8631fab25c19565b5091a080dfb7dc252bd74e9c3a065ffb530ad6e6b8fda1ff8e49345da02b4a0604fefe6dd80844e0d18025596ed758d082627491793d4920b1d1dd1375c2362b3fd3723a40e8b453c0e9e57f17e39eec14e4a57ef899bc8bda466ecbe79553a9ec4915181fb0ae1e0b6d63b952b8e71a1d53d53e26dc4f175267b239a178158326d77d053d2bbc8dedc88c5f03fa717572f365a6750f600bf3a29d10f1e9b0caa002d113dd81a874524a467a62513e7ce2c1d246ccc92e035f1f75715c52f4a5df8d5049038a128c3bb92a365a5ef724f185e7469782405468fb7ed73c56e0e439332a3980eded9505d68c0c2e20a0bb2c0b75e68a411532d76c4d36b49363aedf960913723685be66c0ed47c12a40ee75a20bd02ac7b7d99539efddca033c80ce6cf71d2224a22e80912f518e7242cff4e47b3f1b639447b5e44a2b06657edea799366d2efaefe3d97cb8e34a096c1daa02b3c77c2ade23fafec0968e48e5b7d3b527e70fb9acfe202a960d1c6cf27090a319b60f8bfd8230734bece12e9313b85a7c5f4511a711006d0b666482f5bb59bfc10f93142d859cd29afa70a723eb0f992b9bba9c52327712c5725c0e1e4f06e9feaa3c4c83d6096b918726830ad40cb461debb9d423493064862df7651f095fa59845971228cbd29004bad843143da448b30d4b0bda00fd114bb05adf3012c3a8a37caa64ddfb4646f477564b29282a09c16ab7a3b7258a204362fc7257c1150fb4a064cd792cd006fc661684be8d10c3868259911764ca39f1dbc5b7c6c9bca11efdee489731c39a0ab22a94276d1c052a756dbff87891de34403068851ca99f142d15c6b76f1240d64789644c47c80ad659bac561e6b949b996174a9ee5397fe9dcd45dbe00968b2fe23d63e3e1e383bcc882ccaa643cead6876771035670e0f9b069ddb0437080c702f42c2601e111725ecc268f808834ac49f18b1bae966281ae8f1522532efa44467408715e79bc9e429dfb1cb62deb1eec3c01eef20d019b25e87011b39d862d13f8ad642ca5b87ef0cd8dface76e481b85ade2a8b39c470acca4273b3325da7105fbf332683f8b4ac0f93a528a7459d637e9bbe99c18525ef35b3e6c559a7a626d09fa2cb890213c3717f49d7f86f459face30e74025f5ff184f25234578186c38f0b6c32089ea0d8ec1d4baeca6c195012f52b0968751e1b28ff59def46527c125edec234561df61d7e65578c97683392791ffb2f73f81106cf38156e010d80486b7ff730c308517210673dcbc040279f975f5f4bf55b14e5837d6cfac89bc9ff22abf5371df2b975721ffcad2a422fe0deca9702de5e1075df2b4a4417383a4e5348e87e63edfbfbc7ec43fa6125dc8fe16d207094ae31f2560499a456c0bea477b715885d823f535d786ea53c0a7ad31aaccd824f7fdb539defe692e8e7b3c8fe8d5be8d755109d8e7bec3d6e83fb37c5a83e5c652db004d63629f49534393f4d3527365a879bbde09c192c326ff732936819e294419200b48696df4810650f89d0788104d95b8f00f48d1240c19b424744760c7d9bfa79a63b42f158bd1b041ba80f066523022f8c4caaea3730863d8620ead983df571e12eeadd3a125c7967b2c13f03767073f635603627a8227753d8dee7604bd2bef8036f2fa1b732235e75ba909e194111337750faf0cc3044cc935537a53012107259781d1148281bea2a441a3cc63c32cc37f70bef2ff727b41209bf7815f11260b9f53ca0231129248e01646b93857983ca21b06d32983d8586300d1294025c8ea8e89f2174993fb85ffdf8ea74014813c8ec8793020b1eb99747d6836c70a332dd3728c40e95f49ecd3e529a8c6f0a2c30aa09b8f8c000b62d9d47fc6e56b873b78d2adce532c0f624e138816cdbe4bf89fdd73b9f2f0746d8507407205b697684d6bf4d8e67def9abd2d63e52afc1c832f2c0a5d7a839594c67b6fcbab1522abcff81037a3d7f3fed889c738e3ade64130dfb1be21de966690b67450b7fbb97441a71b5e320c8e80eb3d4ea3d4e5decfb619ebde783a969b362184615e9ef807011c4a752313e52734d4fe980dfd5c4b64097fe1453af415163a0dacc81635bb12d311ec365a8a65881efcde0c91df2842771f53e9d4d6fe1e2a943f90e9d2c2ff38d34c3f0cac1e2ebb0fcb0dc351a753c3880a556eebd6955ba37efc5a376a28d04bf97dfd60b82492ae3658ee81342633b00626a570c10a6fd60ae4b68797caa381abd8e57a50a7ad626db9306eb3a07b8eaa3c66fbfe73f928e7575d4f2b2041d45cfe832949e573f2e85c5f0e2c812e52fa2fc82fad6a213588e12a41507e41b01794cf6e9faa860673008ffa646478498b0a4fb96322184a8024e10c2bcb0a2bd99a182441272fabe6dbf93f3910c01e34bbfae2871e65450f479df0396d88e408eb0d2714fd24539ad04c70d8b7833b5db763272c18bf547134d1934424777fd95e72ebb50d402cbf894d9b9fa8f86db28745720ea31ef211d913d73f85fb5535bf935bf6042c9210c0e5d09199e06f750a62e7f3bdf2bf4a1d07472caed4b1860fdf542927b4f288bee397916135e4c777f0daa713d93e4104dbf462bd5b1bd0c883591023b4c926e9d098565bfe6e54991f935c705bc69766b0d7a029172e71f928f595db7290412bf37b23ad14a06174a744566513486e50cb018bef0a9dab542c9693737ef12b09728a57263093ed8d4ce2e2bc202f45feecd23f6549708a175b711a7449e298d1fdd5fc14731a425cea29410962e7bf51a154eea727ae1dbbabdb0ed852b623ef2f6fc06151582b6f3d6fb5c560c9cb662c04544be79672b16d9847ec9dbeabdff120c180fb54abf9cd5ec30a17fde2b23e3b059adf7186091adba64cded2f0115d533636a78a7c799404aa140cc4564e98755afeef15c74b991b8f9b11597bd20e1696c75c6e50258522f4b17527220b9c1dcd0eb2d95da18407823d909d9ab1fee7160552aa107449008864a5f98d41144bec2971f813810842f4375c922eaceadf51f4b0e7e8388c75f2c861e8b8a9fcd51c900ea6d08d7be4d2f3e798bdd1bf9399a91736ad04773250c094e5824a7dc1a8163430ec668c6c3062ecc7c92af9c1d2a7ec74a3ad8752010f7984e4d4ea1d0b1c0dc4af277a6529c627cc0b395ebd094101d43435c07f8eeca516f8f78cf17b5bcf3f15a02a2578d9b30b6a0f6264e3bdbc0e6def5f03e48a590bd77e35505d1e60f527186da102c1e3438a4db65105bce4eb32066dfbee7287875bd2ce96f56eb022dabcdf5ccf7a7d5a86433541813edef189bc980a01cdfc8940e3d75853fa60799d80715d63bcf2cf315ca27f33ff58b075c7f69067cd587241251d543a1abfa83e3765e753d417ac0eaaefc76351447825372e87441b89d67b82625a93426487c8297290a2a98462a94038cca753366539ba09e83df605d41cb67d6161fe321cc950bc164c237161987fddc5937782b24df643ce11846ad565b0af3e22b3435af391703a48bc0b5714412747bd218ac65dfab2ec95baec6c1267ffacc27e409c55309902d70e6b2e8179ed02b099bf165878733c86600cac90e4b381a1121babff957980fd6be78315e8e78740a63f42fd05bf5ba28930227055010a074c346143bccaab3ccbcfac456a71b52eb9124df4a7104dd204422b2ff9cfc81e4944233ec37e92f4a0d183a5636fe71583ccb1a92d11a74d228ad7b1a395f34d4638ba143e6067b08b2b8c1eee2fba5d4bd1dad9242cd85dee3b38a0ed7fa1de3206607182e1e4a1a7fa220ae50d3e4e0969b2162ca41c3485ac422151d49079d1b095657a1651a1f16b5032117f266632cfa6bcc84be839d3c1142e2b8040da663bfd1d1690771e0b2d36bb06d36877fc2fc4339691b53fe1a0961b11769644955b5261730134945fc867d4ed8186ae4f42aa5b2abe90de108ca6270f4368cacbc7b1fbca01d153c6c761b413072d79f10e68bdc8e32744e3959a077cb9282337a366793a2839250088b35ebe9186d38dad72ba96e71dd38bdf447c88712c25662c22125cad55667de090efca9b0aed29e2f647a81d037809f2093745076fb11d233a9e9c82ea620b376a4011c41b173a0e3974854afcd12b5d72f448b686f1fa82c0c1ddc7ddb81da63a7e18f581c8acb4462777e04ae709db62a3708ca29a02dd9a074ef03dfdc94c5ad0013bb8ac26eee42447f8940ad53b21d8063d04df8281164243cec06b0b768553812cb7359bcf55d82a6c9d52fd4b726b004958dfa044320566c53eb229bf4b687b8025005c8f0a10c960f831c8ec1a9bba7b8cc32ed0812e084196c9258ce1e635bf59fe3228107dd0f3435ea8387743b2e397f2b4ad28bffa8b03fb55e5f68793934bf54cf30c3827b90748c1bdd8366ac113d223749bad18c9352e715ba2cd6da9f2ad1552b199da75951f0a8c0d5d08048f8732829af46ad69517bfdb8e6d04f858f0faf0c64104416a50addb2b55dc9dde7e663084e46ce4baf604223c8adb0ad388da30cf87589b1d6a475185db06919d1b659e8a9176f983d5556511181218331ba8e6fa38228ef82ab96d71bc2b53fa847ed3297c8db34f8919188689b226b56597b544fcc30532d8b3a14eda08ab625bd92bc306787228a179373bf213d1fe16393dcdf18aa7203f94b33bfdb343b18a975d390f7d4ba889efe348403d923a9592db1b53f49a9ae78d793d6f9ab5e8a1debd063027be4e94785006e33a9115c78a9d51b124505a401f55c80cd3ccf94bfc860961659555946de3b2dba11f15752e4cb1dbfb8ba47633accc5c919357dfc65825aa7bcf16e4beb78e42dccbbaddc44d50c4c900bf92ae6c35359b02f7da8f2fa1c60312c18337584a84190c3f9d69252cb8efa94c3f58b90966ae442da1132c5ecc1a0c42461d6ee71cc4f704d7a057e33513bf57324f46c3e364a19c54d0afc61b8ed5f0e77c8731faec3446a974be627d14b51ed7116dc7c56ce55da536289a7313ea55fa7874edc82fc7a5b760c231f326bc98268421bbd714b13f82a9b4e0aaebc218d2216e1815b3f7d25205af646eaf5c61669c33ac3ba7e15c541cd6cbac724f07ecc89b66e2425efc6318f8ab1ebc5356aa2a02cc2b1168b81326b0e9066dc4078282cb892fa8df96e80dd3be96a12487c272f3960f86b6a2f53daa3b97974b3a6a007df637c9eb3760428a8c62dd89c9ee229de009288736b6f248f95c6ddafe97d13d25a539b08eb6fe3af62b35624cc8926772ea84e667b39739648ec1f9c90137906db71bdb9a166f672805c495a505df0bae4e04e2fc46f78c6fd8f0fbfc75d29dba704633b018e8a5f6708f7251f780b96647b5cbfd8c8058d2e4b432a26c68a202b6f1e91f4d04355e2b41e38d2dd91c8d6875fcee1942cfdf1f6497b0fecafdadfb51f58f297d4af81894cd31535c07b59eb85d1bada1e9400383cd31fc137064654b0c82a1a76b696e527983158940ed35fed7c5ab7427e60a03c05e20d472225d92db61709e524e55eae14603b206deeb4f0d5da78ed5df2ff16f12e81ebacf3004416065afc874946bbfe4e1d4a3df69341d319d933c7c5c505730ba0f4d235ea82992f9203e77cb86f2f53192cf45881e3f6bd46bc32d679d99147e0190f9f83dd33b9b2c1d962ae1932901a09406fe1909bd27b2c166a1ec84cb936ddbf45f15d92e63621bdd972000ce779bb2ec04c47f270c5f0dd825e5a2172da7a82d5f6be7b3132ced4b925da408e46e9c1824a8df06d4cbc0256c55d4d40074621ed309a3def9be9befe118d3facd724f89b0d41decb05c9bdb0d6a3a5d57bb20108a3447a299588cbe05338e801337e0988a6b49c782c75eb4b50a3ec9721506837541f6d32b568d0568cd42b780e14ef7e968961012c4221ab9c608033caea9e3fd3fde6d267e39f186b1604ce247467f761802818f6e452e2159003b44dfdc8d3de8a7d5107d8c23c3043e132d8d48bdcdfbcc1a55a6b48b5c53f2fb8925c109618ca47da0098f30c2780583ebecb299dbedd97deb5e74a6b737ff3284186cbd8f25b0d8bd46a15238e90fb55d92729a472f199dd86133e13ed8f487ec301d8b0eb2d83d1881e5c85338cc67dedc54753b56f64498b2bd56e9428f5df2af8b18b7cf8586e56aa8ad99636fbe24c20a2c0ec4123306d9742c9e8213be6a78eae3190bb542cba28f466c7368b9af342db7c2ce7a2abebe32bf30a9e857fba6359b7096aad257d40bc5725d91aa0ba8dafd457c309988d81ac4c9f697a35c91f088567e70bb8d1e1c4ef0b71f2b9eaa2284eb1ac1e23aa6b814b2a593d8b0bf47727a4a10826a9a6bcf0648b94ab8bc8c72a4cb1fbbcc653d31e85126a6391673b60c542cd5da7328b355cf6c01988b9651eea59358ac8c45c64e697edb4e883c6c9b82c68d5643509545b6a67afd951e1741664f23dae7f5d50743eb602b4aef1d2dce60d3d44bc356637711f7f6042b35180280fcee74e41016c3b4ab1d13708227ec01ea287432282b1c66b68c3207fc453c5666bab050e301ffd921ca987a2641c8954ba430435418818c139b5295e1cf923fc76f13833f9f37559ff998a2c4cefef5f8d8ad3431ef6d226ed7c4f2716a3f2c40bcf82b1c38009ef8dcd186de21de38cfbb4b9271b73ded17e19f02666ea9f6e0960f290dc884f687cf079c8ce9e9ce617d821abde9ad7817ddbec967e8ea7e6afb4ab8e59b975fa96105a33d02fb599210ac980af0a12ff9af58c6f9ee8e5b8493df53efbc227a211297390b380fcabda5612df353057e59581ba14e87b43a756303dcf9065da4ebb5bf0c525d512d1ad46133588daea9816bd23f4130c94ce096a05927a04ed67c3497bbb78f172eaeb7be3861fc2bd3a3751d2538a88fdff40d2a7508539b0487bdcc3352e3add30a24bfa5cd2f6b75e29514b039347b930f6c81cf53704c5f61cac6a5933e92daa6eebb881005a245b7514e693c49267c419214b2896f73b420ebcc1273dbfa7d58725908892fef64139c714bdbd2dc4d3f8dc0197569c8138786100a35e70d8a21c1b26852f44010d39c40a05765b76aa901c32a4585117b57913058d4697c8b2fddf9a5c28815b93f76eca98417ca63c760025f42cac4b912622b7b191a670ae511b3c1d2eb5897d180461467803e24c98a3c2695c1f639f9e89cb7e8eef784c70b37628c23ba4881fef4618cd0eed795c45a1216661f5538c84a65b505cb744dd9b243e41d63e7fee7da9cba6b8f976fcdbbe758dcb5e3021e4713910fcf5629ae6084be12b029ee0991b060bbd138613cec71ba2040c78aae8ddd5176f429816b50c50cb7f925a33a1e6963fc15cabbd0d67679e1bd3cf3545eb610cb8c11196db998c60c6495653252a0cb5054a2b6ef72a4cc001247c710745619d1fcea4ae3a889c79075d2bfaacc5c23a2e31e6973df635097cfd60be5132ba0b0c40cd2f41db5009959dc1b42243357d55c861a573a50cf8d90c058c9611dd99c355c7315fa40374022d5c3336d20a143ba19ea326f05c11a10a76b519e1a92601809cb5a8837f4673ab53ce354eed483822d74cf912eef2d320ea5c816083d4437dda558ae66663daee1d5a5014a625a64b011abfdf6a56cf9853ecda5453c7bdac4b388f6723384d79a966afee3d93b4240f45b836199097e7f3cfcbcddf76e961f6e15a0d3f2bbf9f3557e5141a9a6f3a047ff874b3c8f6901b79090029415390af0ae51d00684a37503959d07583d985fb2a5804944220fd07f647920e41a57dbc45749b014e6485335829e0456d27d2ee9224c3cc815d6b010d77b9c3656ba092036299504cba01e3b84eadb35f135a623dd53227b0339741ea1efe850bd05f6987ec6ddcbb19e356d992c462cca49e95c6b0c4823bad59ddab8c4ea95bce8c269fb48caa727b0eb82640c4076bfe2db151577a06c95eb87e35a3a365669de5570018840bfd657d064b75f6837d3e99bc9e9352dd32f25faa04bdc5089af72d92db24bd3508de3bf48cb01b76da9297fc7c5b002914ff9241107c737740723aa174bec0ca0dfc4be43061834b1e79b80a9feab2a4fcb25db7951662bffdea6a3eb152961f033a71636d6819cf523b2288ad53b2cf3ad1e2a4c0b83018b131d6dda3e0ddfb438f1c7eee14581aba65b4a5d555632872fbcd900c5ce965f9c648ca59e6984fa378c130493b4f6712c3bb14f8b5234fa4f3625aa9666a79caa69b2d45a3555777bbd333b4aa4331b535081544feaef029aa02d2b40ddeb44d7b5c5542ebc8a7d58fdb7aedb58e71a373b0bf2e2880d3139bbe6c06db1ac5a23da4380ace1c8925660c378483e9b05520f50b46d56db358e351c9bda50795676716d15ceb3403182549ed7d8b7be066247559601376f41622493fb8344149db6018a1913394ae3550ad5427f8abfb0b47cfaa18088d630ec2ac503fd182cbb988c1e668ecf19c1b856229d73636f4dc0a9d6ae8ba2dc08d2a9fdac49ba78d45c6c0abeec928f0d2cbd33948eb792c48ff2039e1de7962f4a8e526f24b80d21710c3b6c2e7f8ca0463cfcfcb74d7df5d5722ec2503061a80ed80f1b977733c5b3a5d5ad40611269c0d74a93604d73d958d7e2d91c1343bacd1dd63b0870dadc922f4f251ecbf5c1876394a7e0d8b52b53a0c1b19364356e747e3b4cbf4c046f7a88e95ca572b306eb7932d91609944ed9399babc693b72ee800ce75c2c16794dcb171802ab2b2dd26818bd86903f69d83d1331e5b308b68f615c9fbb42e7172c52a62204e80196ed955a43740158e5382296f3a27e55ecc26418c5950b85f75ea8b1e20496ab3d3748328234718ea5ac7af4e157f231750c6f62a939418baf464734b50f26d05945f06e65901296d4659d6ca0671818fb2831543145967c17f13f452ad84992076f98e40e3003095ed4fe88483681040635b710c18333fa9bc8195e282cafa269da76e510efbf521dc9c1a2439d01241203bf6e12c33564e29bf438a8357f1933821e440bb73310a6e3bbb9e264a94ab6bec7f9b2598c887472abc603669cea49278b6cb5b9ec500eabfd29496816d18d7c5be69bacc0e4c54398c46ac26d4a8e71f069f5f7203adf3ffafba388c6df86fb07b64b48040c8e461d28db06f045a1b3456937d0a6d935e8c9aed8184a40dcf58ad34b476d876297419b3173fc0b098bf48ce373af3e25d785a20d7a7d56a08cc3e0b0acbae77840e1fa08241e9b813204a952dd2b8f8aacb0731364ed2b885e0dfa0246d2f55c69d98d745dc8f6973deebb7ddbeeef74438ce4fbc33a08cc166b9202f564514c8b6722536cc046c56746a22d2dc121eb3c32cc5f66f61d54216697240bf02af71da0e27fe8d153be6dec973714778a65b9f9625f5c8c4d66fe09c2dff7544abc6f1da92e851e628a7d6f45513d0a54e28cb19319fe5fb286904b6effdbf978d7edeb50cfb402323e3547a83635f03e9c90602ae183db80f24aaa50e38f7cd89c63aeda064bf05f5fc4ccdda5c3ad2502834b32d871282a1af0343fce242701445286a2a2a57abe750ba40ec64acffff7b361efca5b715e0b35e887ff57911d81731b7fa272a0bafa04e01fe3fe24a024f917ee166b3589ffe138ba7eb47efaf3c261f159700f5287e4da66042c4873439ca8c45fceaa7484b46a6b91692f65129112ba0e9baa1ec4738a275628786554144f4de024643a8e1a69ea4f415fa30f62edf24eb1efbdcacc2d129100bd28b1cbd1bf4ed2133bbefc2d4bcb55fc5e7a8e0e28fd83eccdb601291e157dd17cb13091a105de4969af1ce186e542963de2d7daa84dce7bb2964ab03ce00d7994032fbd10ed78457a2d297fee895499dd29980d897393a3dcca452b9c97dae8abc1000d447a43b259457bb39ba1f715b77c195cb4e476afab01c95983bd5883f2162860fbc6edf37cb3d476e92eee6151f2f0b2829a0c5f7f20c3a4e507b6890a435e1ed4de6c06a6044b086a02df660edc0c7a534298759a76acd167f037411538b822dad4244b9de2b337ae34aea6bbae91e4a3acfab1cc25773115082b7180e23267393c0fc3736a3109d7931c225d340ed9755a929578242f45d905153d2e95108b657d6edce9653ae06e60e84ea55cbfeb5fcdee8b5178ce674f6ee89008459d516873ac4c242cda22a825f1aebc22b9da3395263b51bf0f70e12027772c1ecb930d0e2010d8c32c103bc742040b2c75ae9161ab71de856623ab8c0782026507c0c125e2e64c6095d1e80f7991f059f354cb3d114833b2bee035033966817ed9b8f2fc642454813e64e1550240d3e7650b89da12bcd657a4cc1baa2030cb5b6f44173aacebf8e5edf27ab7204f1bbf0372f5da25862ccbb6ae42f1e37c64c17a8c70deedc8748e96d882bf2a8b417ddd1f3571013f83c9c5f4fb36e3212aa2a6e668894d3610985d1f45a7775af02543ecc1641aced7c55dbdbbdeac96b3edf8897a9d6acdf156ad9c33832aa3b4b325267d67444bd6df72b44bc108ea53a0cd1e22fd9af3fdb2f3fa9c5ae592fd8ca41b3345559e282ca3468e82a43eb71472bf63ce1f8ae0e71dc24f9957e1b045ac8af5cd7e0dc03b3ffe308286517501d11b66c7946b82a485794778938964b15c0a563ba7b0461e4616780dbb9dc42f0e151351bec5194cb4d2a194f075c5152940cfac623c92a8d8d751c891d7476b238e0c31948a35b6303804c91b234940ff321a1568f68c5e6723d6e368d167641c05c5a73095b4ffc063bd71d65c0821456cca11fcaae26abef2ce5e40496c37ea6b066e1b890de309255d33f3881f08756913f2ebe49ed630828daa9973a819cea39b30a39e7f21e4fb7fc872b97100049836a2965386b77c36f824ed23b2eae68a3478deb6a5766500a2daed0418e7e13a416c90507842a1a94f514a24c7370104f98eae02fb857b61fa2cc0861b7e808f152005bb2b8007f12b6c910368fcb0ccb7667e75a22ab34752ebc758dfc5c1898fe4e625c8ff008a9d28e22562f09354c43eda8018dfd030b20f7d002ad3aa47e303bdc4b65c046061acb6a382beac4eeaf23d02450bafc61e38a0eea85c81a26a03b26e47fa1a073f645e6ca666af07b490ed82c90c3abcf29ac0ea40b840683b924724d0eced49c38536d17c320fd482e283a98fb36cf45ee26f2bc6d6d05afa424f06ea93cccc50dadec07e1cbd7356cf5b3a170b0a095f4d7cdc91acc1e73e82706c70f0e00436c354ef6ea0d5345a5af4395107e6bdad6bd2361e02b7df2fbd63d5525c828f6e02703d3632e7cf0ae50a0a3f41a833176d394b5747c7724f8269e3d3df1ad7cc5df684a3765ad1e3661b0426c7ff0e69e95309fc38e7149562613b08f51b4eb26379413dd50ff59e37e57400c8b259d224d6b437fd921f07cb9e4083270238f5e24dcf223a733fc8b4e97600b809810104bd67cfb8f0422e78375b07251078f102522a44710cfb91695fefa3c67122f1e2f3e6d32ff82e40271e080588c2ae9487034e1688ed8889a87ca0123d5918b4d12e319ac2fdd59fb06cc82af4df619b343bf5da497539086d10664cb1decd3b2a588bb442f6b7ec4cbbe0b680cc4d6dd1e6bd7af381684228360bc5467b8c5db31d516cfb9a667d6f5ec4b80d15374856e63f4d5a463347db4a207ad6ee1e87c8e5699487e658e0b258c6edbefbcd19696462e486485a51de85c2bb9fc9c9fa16e6e72d67c23e29355bba250188dd92e7da0662573034dafa89d3238cc4885121271756e91961deae6ae274fb3de81b92231264e77c55bc468adeb925fd4a6197703de938e644e02de91672e89aabd0efc3fe51810806f9bc33313b79d5e7a7302ac0de2942c935f157fdc5b17e55cca2af4e5b0e93dfab097cca58153fc2d4c1b06358ddbf1437636429350e83c2bf321c04c4342653f9b1484c3ca9e108303b4559223ad1fc8dd0d0a0e70e0dd9474981311918cc645c4f74ac7f8e20c0e6b522b01661ac02b07d20dbb4a8e7484b2471a5e1130c4648fb43707e75a84de651c6662e9196f112ecaa0cd728f847f431091ee3642f57b2a8f55a393497d641c07b9c899ee1b88c5e26bcd9e89cded6fcb2a4c1f62318104b369eef41fae65c16f381bf2eeed628bbcf27a4f8caba9aa8280df473a31f143add9a47dd80a4fe4aa85072e288ab48bfd38d6605a4fb83363919e834b300f0582497fb8259e475ead520bb6c41c41f734bf461c9835c8e715d4f3bad337adfb0e5fd07097079e9a2efcb0978e9d1f6cbd865d773bd974b12fa0a0d084da5a8a6980e62b13eac104291317379fb8bda1c6bee847541821249500a7542e48af25b516717b28b97a9720c398c1eda6d0441a430417f5e0dee6f137a1ecc9818cc2d76744cc1001e51bfb6a8a8105299d46326e95ba5cf9f22a756625a000b92bcd6617261c1917659a6f53382552151f78c94c9437590829a43dc30e7714366b55d66739d741e481581fa2d0e090cfdece251c212be605a5227b7d1414f66b3f6e505a7c23f6aa20678cb9ec440d72e867d5a5e6e3c24519dc08f96c5f8b361dcdc258b91fa5c4ce39d19b158220a507446745816e0b89f9d2709fb1f570fde18b47cfedc5a032b51d546c01a83055bd54404d9c92acf0fdd4619802ff544f0b39930aa558711d80ec37fe807bd584ad22ce02df7dc0cf77e940bb49923943b0c6a98e1f318ac7d34046e54d58f80f814faebe7d421f52372d446d19da94ccef3fa0723d83739eea22df612deccc53552aca8a6d5233234617540971ddf333fbd606ca551be7d150c8aa62bde5e86d00b65d67c22b47c5f04578edb3c9b6a68391511a821ebbce3faf38b63965a1569482500343c2294521b1301be936fa98112a3107ad38ebaef9d4b42cbc5e1b6e4a92023a24923184675e7f61d35a97f08d1a9895de121472b4e03f491b61cadd8715473120f31e6e1778b0253896c7a4e9200bad596f756a248eee5628011a71b48a1a1b9af2be2370c6c61dfc93b80566a3ed77a6e8ccc408fa51b0c8945a954e1c3b4a521ede9ad9c6e67b3b5bd06b820bac33a846ddceab2f2262024348f96592008db5c22684ab4036a3fb3cc4ad9a1d05376b6e4916242395da1fd0b3f3ea0d1e0aaea1b79f450fb97bcc978190830945aaad081dee55344efb35a08f8c98d210690264d8c28e4eabc810f4dc5584a3afc08c98c1228a3b62a89e8fd06f1607922dc0652a579d38c7c700db52e71ad59ec1c31651567f7aaf0c423c26feb9a761aeee9d3e34cebdc3f510a0eb6a02e52bbe0331235e5ce06d1f0d026330d96fc88f9d654f52b370f262bd4d72882a6cf071772192171405b651bb3915fd2f884b33cfa9086434f2083f079810de11b1e6063d2b612899152523c107417d9469791075d923f11bd43f86e662c4bf8d3f008ef20c894388e3215d3e6907ce5802c2344d15cfd3d0a49eb8fc0580f34b7a3d3360e908e0d4d09108b522025cce8d12fd289f90d8e5f444672ed1ee87a7f235249b396220aeb6de6658ec8ba6e5de2f93ed74e526e3510e60cc26c7c3b86df5040495fef6b7a52c50bc75a539903b680d3df3c7295f93b21a0365e0a7cbeb5d4cec63aa873281646dc8e0351909870953a5ba3157aa3cf06e04f4b97712030628286c8d4454908a707105e99c905d1009d6c8c8762f88c112c78a106a1ae992bd71430c64133127b1a342117d205d7554ef9fe456b2c23e6c073c404b0b6eb89ca890dc47f47f89ad88ae06285288e3d6ae582c8e641792f3b0a32383613cbbf327e7e307aa11b4398001a62bfbb579cccbc1026d0e9063d8dccbf9c3937f907ad8d56b22e3b581a49da0b3c0927a6b7662a9eb2b1f4e8a825b0fc1c7153496a2e6571a0d84f88314f0484450bdbb1e22921cf54c7308299fa86e97c68d2e4ebd15d928f275cb6c2cb7482557966b51dc06853e8912fbd364393b640559f7cd1a5f3e5e2c63cf5468ae277337b14260e0206f1496e7b6b8bdee9cba9b5686605937a44c964cc0f9bbd838e24ede8ee09da9e2eec91f0b2c2f7a467510ea670fbcae881a0203f7aaae765d9023663283368f5483014a95a1fc6c658780743a702fdb859157d5791a150503a6b2dae754014d68bac165b50a83432cbf51ad1281c800ec6855cc46ef46c0687b150a4c9f5137ec60170de9d5f60829d61866daf6234cf846db287a6837662f6f3b5628146eaa64b3cae27559e8d11a0207bb58c15437eed655b791f950d826919ec2467f7f0b615db46525b3a328f9e5293d130a5f9d5b24c320f491fb0c37e17b3207cffa0c27f6439aac0280a619a7ae7468ea97ebbf9068b7f1df6607ee9a4cd52d4f2493cbb319b6f2b48887f1569dbacc448dcbe5f974396dd7b55f24a92e945bf1ecd122873d1354e2561d917564e406fc01dd53b84f5ed55bdbdef5f0af2887c94aa8a9d5861bc117ff03984b0896740795bbd6c35a6b0f6e2cf53bd8e2f0a65d54b0432719151dff25fc511dd2aba8f5940faed3b7e95e5522d72b91b4c776132cd65c9bf6a30da180abcb0cffb74251c9a7296477eeabf37bc618d54ebd619c5a215b6f607319a09756a3ff6b5ed804f113dac4c6ee61849c3bf8984a04324e2faeee917a23723aa966c660100f519090dc1afaad4e2d1ea5366d85d08a195a5eefb8029905802f03592e725de61b7f07d9b6be39d27f734bd71206ddc6046a9cc66e5ce3a1511160236f5742adaf3b29e5b9afbf76daabe836175744880a21738f9d6b4ea7eb3cbcc348a04b602fa60d55fd584938c983582e50f7815efaf0c25d93cac9cc973ab2844722c0d710822b18d15e39c5cb910e04e86981104111dbb1dad4a7df0f1408c055bef5880a36331db08d7a5bad572adbae2094fb03cd7a4b324d6f0466b30071c0d24988e9d47386ea4f55ff00732c49bb4cb2048a0b01c74a4b220c3a375c0efe78623516f90595b14a712f4d308eb4da695f8c487211758158c7a31a709c58e5be0f414c96f2fb3203b3aa1ac7ebe31e53a8390944f4bffe71288b0b6aa0d002816d2f010b412ea97b2d714c6f7569b4090bea428dcc37d5cf0c2742cb19ea13d0b79f19d810609795c6d8522215747c58a016b5b1f5b1c071a19336d677eaf01de89c38d7e0f4ab5c50c469858e4b759726d71caf172180a0043a3cee6c29b86f971b5a1144ae9c33337f625585f2111678b36abe4855126ff9a50845eeb77b9d4dc424a1065d49dd3843ce0cee71c73af4e51a71b48af3854ca4d04095c09f4bc308490a10a0ca2936b45692f55fed653a9a85190e3fe05341a0318b8d5392ea0a4155fc2a39ba9c0acd518438d02af2598aaef440be88740de3f6c82be978c3a35d89909ab50c51614d5d19ab5c9617f99383976d5d13714593a8a31e7b43cfb78ea69c9bfadd37c637e336bf689f904851922072e6f6d04e5e99bce8d9e0a1f4ad68335062dfa709c8a3ac864098a81022d14d8146bd1d57245f42a9d72b080476932e93f5d8817a205ebc9e22f0dfbdb7186fbe60a1f8715651330a59d74e0c8cbd0ef0728898a9a7f9c1b3df54246ee9a502ed3bf671b9f43e1253ff740f2b474a9b2572b3f1deac7ec40d4bb0e89a61f82a4c97c2fe67e59d43d25bc440ad04ac3e80c144f446726b1dc688ba1639af4de3cbe198d067405b580ba2aa7134d7429475ef7949ab68ca676e69ffb569117c96fefad99e4eef6b60ba5914fd4cc61590c7fa0ecfda4269d3ade952e2b46aef7f41f697c7b7c197945ff35074089df0a5dcc262f1efcef5461909a5a7692762eac1d3099bc433446431a951542e3ab64e511f4aa1a1c784059ed3f9ff765bbdf419ef0f9e8c117de72bf246d44a7f5729bfb927fb4085529b30720fe93f18224f45b966dda7501a34cc227df78dc022ddb3f3907ec7e19ad8dc31e3fd1de33ae9f39ac88f7d3b35438ae433edd2dfab4b610c0711698dfe4163137c4be9139fc6edafbd381270b74b5fc20989b30bb65204bb1be9471df091e839300c704559e927bf910b0bb99649a132ac128ade6b3255cb871fc26cfd3b9cf4d888b48447a6443216e73c6e2cc8d025161f5a1c44d0002f603fddab64b93ae9d9bb093b459c03ae80e621166e6d740df6501f594b47e1ae9c1ffe52d1dbbc00ac29d3d2321e8e29ce747ec528de484ef77c60c02d99ed9cc60ef702e020dd03d483e609a9a445d988b4a63832720ca3c9e50cc6b639fcac9d064d4c977631e1e45a69f044ef656cf10f073b0ffa914f3a04cd694044b9b5304f99ea34198185b409ea7407bd949f570ac6f532757b5aefe2427afd70740ecf970139fd41e662ce8ff3ca71dc6d9cb0831faca005f207fd79c15c5268c688c97bfaf505e4cedcbe3bf438d58bf9463a9ee5561f9a1204b0c4fb31776ff8f49746e6269a76c993bf3d2b849c89b04e2e06339b48d53e761e2058fcb00a3d248a74b2c5538657887a8231fd1285164eb99279942be6385f4fa4521d12440a2a9d05e90f9fb91a8faa225a5a613cbeb6d19e85c58389651542370369abbe339aa20020554061000940c9f5eeca3b87ab8bb5a36df736ecfff1d9c5e2683b00f728b15fe88ff87a8e3c6cd1a513dcf05171f37ea6cdb5c58c609f4e6eb72e09afdcb4d8e93a1a8a511b26ac7406eaf60c9927bf73aba4cbd1ab32d6927fe9640962c29d6f52e376ce5bcb12c4ebda1369954a0cbb19e2fea7fd5e48e55affd6c422f37366413ce76f21b5c8e6cf6d8d55a6c9b4b50460a188f746088053594569ea0bc442f4fb9ff42974f2b37d71e90ab0d18f592260daad0ae6533c38f538d1556a1a30981be3ee5bc7687263017281bc154d432448e7a574c73ec450d0e8875a4a94cf4067f41b1499db3662d68848c79f4d5e3e0a727ef07996ff3a8a0fff8b9548ef64c2183299d2d2faac2e036222beb3a7b89470247ddf1b3f2e123a3106d9f7809aa843150067d95440ffa53b6fb74299a17e54884f438924bb4f400a43f11b13dbae86452157b7cd4387687a4ddcc2cc2a276a8c9dfd9a1cb50d1f0a344d0829eebbc0b3dd692675da0ad693cd016b1f665eede10bc32f21cff1122e34497eb207fc9c05e2dad961f70433902ec38b8d8a739c24521762682868153471457d577124b781e76bd963d2692d6fde24c9f17276cd49e8af5feec967292a01cfa6335ddfa029a527399ad885324befaf3ac918a90b19d647c91f74926a7915d116b5f7222498f20e8e0a31585d75129e52e1f5840e2409edd4e8bc8a0d9994a4915803b6c5cb6ec534750cb81de7524735226e1f0516fea13e095afba59fab46502ca40ba406b14f610d34be93f29674d5ab87416489f0521f823d32acb4637d2f7e488529262f6ad1f1bcd792a7215acb48f01e9bdb45d9f2867b105473684e98e9a8c1fb8ae64f26a3c957a308e2f29a109d58b347b596b4736c4a4322de86828a03899f31909ee68384ce2d2b1d392fc3ed7d52a36fe30b1a8b866b85328cb0de5d0fb276d847ed054b60676d0153f8af6f6a041b2044d8777d4b2b25302ca9242d183013e3e3046b6d4f957d565650fad6f1a68ed093eb03c0db7ebd61588dcec1164d263075a0897ab5312e30c4dd91820dc83fa323a701250150c0152c822cfe46a21c46eb6edab127e9ce38859e9f0d88d766431c73fe2910003a59c9cd30c7e38a89018c09602229bc38af18bacdfc43481e7cee24fba87eef8a206cadcffe56917d64d31810df6c28085d2d70eb929534b551eb98424a8f25da2bfd275454ab59c221d1b91e72d6794a26bd481e49ed7a8cd73266416bfc4f0d1e0098d95bb13dbedb979a5023f280d1f87c9e0fc42a6bed305102fa1d9b095f6dad585e84b531c6348e8e4410ec37daf7cca8a299f8db33552aef1f3e56682224ccb24975bc5fd1023a52f040774ff00ada69ac5b6511278ea021be351337bb9ae195a1082ee05bd038599c0bc3034ff0a9de29ed0f2905992e3d58719c21ec604899bd956971cf3426f2aa97ae27cd7b9aaae1cc5f79bfa8e06429fda9bec1f26560fba5377c001ae510a61f20c47f043f1327edd98f4480bb5858857977ad84349a394ca940383257548efb89ec70dafcf2f2c9ce8ca8df21f0bf877992d553c8389d45268b75c1b063e753ad067c1a20cf330607766616fc2f84856febe0cfa200452880c2d081c6e29618a011ee96e02b9d18c2203a5c3efd1d662df5742342bd4a112b1114eea0a33be7936a3e07eaf4a41a0ba91e9587a15dd333908bbd75c27509da2ba414eb2511d6045bfdfe43ff4cbbfd7c81528ad585e60f93a644cd21332733612f8b2036f3ee2584c502c67f18adac6df3727e2b97755986f3c106244d55240bb9dd6e261cba74a8154b6435e3bed869799fb491090d480edfe8ccdc8aae572e0513b69609ee980c4dc972348040c33096a92dbb1e20d6af9f7909d62fd115eee0b35187f96883816d90ab1691d177d04d2f237040eb0cc3d612fefb96c857c11a055fbab3ade95e18c76df72aaf740b5b756352bbbf68a4366e0aeb757a387d4914294d2ac92b41316022d9f6ea22cda06d7b8884a0f029b6b7b62a1867c93ad81d3821af8647ca1e5d714a28aec94285eb89e89f7ec796d2c6709d1f103344561b79b7059e246704c3cd99ee5cecc8b7ce0d6dd3b18ffd0a1fef7244361af68f2a9e4a854c02589f9eecb6b6309dc2a4232aeb155e221ae1961a72fbbd0bf0667ab6f51b8a5f46b82fc7b0194a743b613dc0abeca9c3560c2eab9c4275fa87bb80123e0f33ab370437ab4a788414dacf09b88bddd7057f356476663481742e6438d5a28ac4bfd22e5084a2632983eb848541fe558194759ba3097579b0d975105ce439df7983785c7788b60540c405a8a9c267853fff07025695b7b4f22c590a31998baceaf56e24d9147a081359221dc914d01f9e43812e1bac3abf78daa7f52c9defab748a9a8144f8fe5b9b16f607ef5a0ab875f04e5402b2a440fab406aa474985f45250e19ca721cd38bbbdb753da6e4fb86aa87740c936be551defa9711e8242562e6b3e71e92b23fb778ac2a6b07ee333a395529c75441ac931ff6557d9dfe534c85639f6185b8a4d191474b1dac5d3a6bbdadbc1fc819b7391b204b6d4310c95db18bd2471c9d0d27d8c85ba54230a4a367105009a8779479d69a2a5039e7bc7d45fd622786b0e57e550c4b36e6b1120d451694da1ba46f6e4a27b2d5a2e19943a1eca6d04829a1059894ec98592b61808c1b7fc9b60521c1e03527341741d50f4b6afd79a10d8689da6829227a456205330729e15fa0bf9d9355b548cf3c30a908cc76863f5298b6ad85942d729c37a9bf6a1d0d9b31a451fb1e3eb6afc873030f39bfff9024fdd8570ee7c743fca230dfe65a20ff8ebe63c57d512a9de1c498e002469c0358f72ff1ccda33b0d1e03862f559f6042c1c21b42a1622aa754d044b0b471bf6265153d1e176667bbd5dd5b4929e5f1febc6543f898b5f88c2cd028b62bcc5b1aabaf1647382b572a7057c4f1c4677d819c849a59a7c937ffcb8bac67d19085509a5be8a45697bc28247f9bb07c444d3fcf7008a37e4f833bf520e71be7d5e4a0e083d2c14794bbf90b25c1044bfe2081a256e33620dbc4bbffd37dbe4bd8c060c922f5d218ab4240bab860f180be13b7650aed82c02a617c4d31061ffe5041d3860394fa88c8ae15731e4657aed57d4f6df042ca83267bb45f301e67cb205d46c582a8715756115eb11a1fb72036ad312caa04846718e672e3bb9cedfd8f1b3d7e01e427053e8644f30d57305a59493aa949d663f7067c2b6696d354a3b779a7f9fd0513ece92e812d250397473a1183371a28b32a096c01000c614018a4ed0d596a285e9d28fcf656c45343fd8a622f1d91c1dac4ba795b42082184904df6967207c30deb0dd60dd988531d3be9cd5a0efa400bd4cae33c22661e5000d7184da0c0c475b910094260c1259148d66659d7655d97b5c0a19693aac5d92069d0beece85e3a8eee256be416b9ccdf8fbbc138e438bbe90bc33e8067b47cab5f0fb7e56fa9f55db5b5b1682fe531ec2d27590764d047d4e3bb5ab2a46b24b6dc5d97b67cab3080948ee2339f54bfeb5e2519afe9ce5680c6d541e332f562388104a0365c40409f759f1247ee76eddaba1a6f4d67389449ffe46c682f4eaa2f0ea3f28d427d7af193621e532fa3435f07d29f7dd3b2eaa1be6d6f1d30ce2d436ccf8628dd3e7b57bfeb7625dbd9c3a85fe9321e391ef52d8f5c0ebed5daee0ce3dbd9beb49c6fbfd5979697fed2620fdb2342e4f2b3974ec31e72391886bd89de213744bdb540ea5b2c90fe76136f666f62def565bcb91d281d3136c637fbc1f674b88c95ede96063fc1cb8a4ed7123655dbc901b426e273d06c7d9d00e83b4659dfd62905ec420c1a82492fdf8b24f59d462d4984a0185711c3024d05d1b82d9b96a6fa91f91db720d362aa70952bd564987ed317783375b229dd696db7ab87dfba8cafe617baddf3504c95e326e668168ef74b4d41da88c356bed771349d7e1406ee2d5e1fd6db3df1773197db3a3de5d8312e870906eeb47afdd4a878dba6ee92d2d878d1abdda6fbb8c973eaab04d25fbd9cb784db435e6a421d61ce63007395c1dbed54fc80dbe3ad824f86627557863ea4dbcfc6881f00ed4bbffeb6e0123da5689dceca5aac3daad7b8bf6d507e02d15723a36dbf693f16a6fe2ed64dc7e466ea7a11ea3ca1b80fa1d71659c46fd885c19128667219d43d1bde98b7a4d7b55de8ad371ed5cb61f8f0ba4c5b3a3eac71786ad008dbbd98f53776326eef6af444499b8f6ebdee234ee76a146701bd8a6adc5b9ca8834aeb51f8f1b84860c0be94dbcf491b3410fb9ad457de1cbcb4f692c680d6ad2a6a039d02fa6a8580115be20074affc5d414128a03c5b2a09f8c9f7ebac9bb0c89d45d9109c51406071d40b6db5bfb19d96c12f166b75240331b87e2938ddf40bf59b459183830dc40bf68e17cb3686661671156443b6bfd58cba73dac0d94fb67f904351be8f6ccbef4ce5a527a2d953e6bff7fddb36b5db570ec3b7b20dd371810da0fc6b36b30aa859345d1b6c13bb7ad64ad1f3b87842c1f6d9b45d146bafd05cc246763132a7af198c759149baef8c016aee2b69ce9b66da92bb4e0c6881bcb473ac46d0df4b35256aa2bd5445295f1961a533f1d582a9fce9c8d96636aa01f070589b92d59cc222ce8378b669185d327d8c417533dc80137098a28eb8a3ec1b0e76c05662e90eea4cdaa61db36a252b5849e5843cf326b3921d5d2b631df765f8f6b7bb336e42dd9cfda20a4da1d4b03fdacd45de2337fdaf3e211ea2c029c11efa2a5ce284ef6091a285f18710af0c43080427348a8bdf8d3de84013cc51fa470365a4e317e836fcb7dacf803cb6a027af131dbb6edfc17df6a0560ea02e1bfb856fad66d9e4749f5a56f36a6620ea367a38c98f2e2ccfd622a8886a6d0adf28da95f14d2523495adabd8e51a9d68385e9c6d4c2dfda74f9985a92bf32f084c65d5b2d5f2c1a2d0ec9fe5b324a6ce50ba76520ddab6cddbbec1de74e86063085f2474946c0cdfea42ee068c27116fbd3e9822594c46fdaebbd98f5e998a84bc2facd486f3a48bac2b7ac72ef9897603c30f5e702d98dac0f08325ae65ad4fa139c4e1807194ed8a8a6691a50365bd19e81753b6fef15819281009fcb7b60be2541c9a59f4e9c5a38c4ee215ece4668875b7f38550a6f492fd2e10ef663fd2b7b71c720ad8966c87f18d6f5f583e49c41be3a43ac4ba31ace5e426ded73406857e1c54aa1fdf8d260898191a25af0796c7d012cc4659b66dcbb2aebe7412d7efba7cd9d5c4d2b9da21d6ada45a2f391b90b2ad7d136f7d733b60bdbcaf2d353a89293250fea66ddc84832a371903fd62aac5b7b7783c2606bad5f84464d22717365eb7045dbcc5b51635fe6044d4c5bff8f3c46b7a16d9a2ace893b7f4cd6a3852de1dc29ade2a10ed31ffb6f3b54d662423e39bb59f916bbfd916fb15b92d7202b119caf0bf094028c3438adc2cde6d4894a94a46d764d4090c8150c6ae2859b131154d37abf1497ba3090c894ea04c4cb517852c15fbecfcedd56ed6666cb7578b4496658f39e414905920fcebc6fcbaa46bb502f1beec8879f6cc7e466ecce1ddec9388d7da8f6d8c4d225e9257fa8ce2744d83add2fd8b29d2e4b9d5dee85bbb7bb52f4f81040a8d529413e350257593a74f9f157463f4e80f391b310eb921365efc06df777336747873436c907e836fbd566d5ee58b7d1808c03586b33bcf4a28637a4d9b0260bf0ddcee265b04da794487aa64745277d257baeea4151b8269b3f2fac8d95032bac6dc10f5a47f4348af43384a56acce6d4636764f22deeedfd4d1baaeb348907e735d1d9a033a548632950aa12477c6855454610df7094798905b73de35b975ddabae9ee18c7a79ebe367e55dabb6ceaade2d1d74b867a14cfd8baae46507e92f3e7a1337f192ce9c0ed25fd824e25532b2219836a35fb386f85fbc391b2fec17e3bf36aa4dc43873436e8c18af4062bc7b8cf17a970fd01887f777e16cdc421ae31a6f1cc3929e4424919a03777bd4b8b91c248b04293bc319d965ec6a127d49d7e43675faf455b1bbe476c44bbac61d3976bf1d122fc9422893bdda8f6fd6c5cc2a196dd65ad2dec84ea153b57f515b1ea3c6bc56ed24997b576c6fd2a7cd4e202661984cae15152ba1a97496ed5ab1a5974a325587cba8a46bb53ea6c6784b7d715bff52ed5e135d54be27795dfcc4274a2d6c8b16a9c9d968810361095ad83db38181612be2f263ea762fc1aca3f152fda2d017872c0d2b46b59c5842d817288c77340e391ba8d7346a74f81e202a3ee9518d4eda14a500652214e08ce852ba6cc3f7bac2497b51e8c61494895ea01f07615da0a56fbf34aabca80a6fcd5a6c64e698dbf2ee5adcb63a7d685446556ed25ecb3f0ee2268fa9784552f6d20ddb52f972509f9a6cb763b91dcced0efbc4bd4b5d72363a0b29efdc988ad56e9bfd8cb86c4b16b6977dfbbaed00a82f994b7d61aebeb438bc2e4eeb4bca218551a31017e8177db8b89cab8fd147a38f6c91d179b8119be93397f4497be926970a6d664ce72ae46c04e035bda409934bfa764dc5c6966ba56a096143b45422e2e5d08639225caec2b245ee065b8eb31f3f0b3273d98743ce06011e4bdbc684fedbf6ab4fa46fdffac4437dd9ceb2059acd9ed7498adfaa0f1e5aac95c3e487fff09265f2c30fef26931b9ba4b2b8a8330e1a7f71e6d87a3164fc2bc9fca3b71e76fd8bfac9fbe2d7b016af421f4dc6f2e19f2ec3fabc38ea2faa0fd72aaace9fd30f9546e93e605aa0a5fb40806a39c90205228152e93e5818af69cb727b97fa42048c123c1ce6d0468351e5e5ca525eae7bc2123e9774ae24233bb8c8ddbaceda6f2fc5e67670e777157b423fbee9d29d4cce460bdb971d24d2e1b5d54a5ddeadfbb6db6bb65aa92ea42cee4d87cdb1e78f6d58aee25cee5bfd622ef7c1f42819e961894281360eec5c4397bb123f5f3fb9dcbbfa75a95bfa66bf9bbb5dae895b0db275e79a7d256b7fd3d7beabd367f294eaec993ed6ce9ff6220e19bffd66eeaff1507bd02233337b5e9d320b54fb37796e64a2bd28d3623de9538cc75289d2fad76b5b8d71aedb56d5b0ffe4cd0e218ae530be19977f1e00fe5d003366fe5d0338f701d41da0893f2373f9332a5f0006b87c0028e1f25dacb87c95295c3e4bcd422ddd4ad9c7431bedabb5dff617252ba14c9537abdff69677f533723b5257637cab2edfe26cb45c6ba990925a30284a9cb831dede5f7139e025d92090e8c678c5edc0a028f1c18dd11243a6c2f67ec8f9e881872662d8df880dccab0946fd682e67bff3f0d12b23003705c0ce1d539d3a58a0dcb977cf2a10cebef0b977f685ed0dbeb4bdf8ec9d455ba0156486dbb2b7d4cf12fa2c9e3e794cf478d73cafde74c69c713cf0c0035799071e321b64e6969a87eddc6bba542b3073816ce7ae6996c6edec979db3995b8199fbf5b840b2930eb91bd9bf1e978423b3dfcccd4ebac6d56fe6ba282d95fe59c47159b47705dad7e131ffac54d16db1a5ffb0eb61c360e90ebb7b4b2d55d89eb55ff6ed3571fbebf7dbbdd6af74bbc3a81fbd9dfdb69b418e8897ab9ce535ada95497b3b0d4340b8b4e9fb66bcf20d065797c3514512a2e0038b49938d0c685cb0768e35c78015063509be25d6a04eac8a44df12c35feb4291eb302fd628a7d523b5468b352a18d55e1edce9672cc75d53a26a10dc7dd76cc1d33cfdb5b3ca02d63c64f942656f4446105f0e57ebcdce52b376203392260ae7216bb836dc2faa8a6636ad4a1469c0ed0ce7e3d6e77aedad9c3daf6b677db21a7a36f3684e7f0f17f1c6c616ee46abc418e5f72c0cbc7012f5b188f7123f7e270703aecbb73e539dcabbea6edbf120cfb41a04b82612b6cafd6b717ff1a2344bf98fa1e239260d8d2bb0ab96f7ff19af8a27e3d6e90999bc1d438245f40bf98eaa145f5bc924db11497645bcef683432f3e58ae721516fbe243257332062638c1a688ca8d045113b96bdbb7ba9db35f8fcbd0866d90999b7de3eca7c491cb9debd758bcf85881362b3e4667398b2dc2f2110bb3ac546833e26a90c64285469d991962f6e12631155331c5419c8a290e0ae2944fbc0ffb44211e820e2e7317535dc7c90b93c0829cfb72e3258e3cd2281e809ef40936b90213a928d54f132b7aee178b26500a92dc4fda741c5b294b6816594efac45cb8515a7f02139d04710ce2a250ff1053514801f16eb554eb1773adad3dbe7ea4118e462e0eb411d9714c03396830a6e5bcb2ada3231697920b086160dcc600c00b400f0298f181c689a64610072805365cb3d82356ac11190fdd9ed9806ed75ae5444b1105bbe214c0db6bbae274f4fd3630e1bc3a0ee6319c0d8eb31e94e16eda6b2232a09b8d5186c01eed67e4ea9b16d25e97e20f109cb857bcb42168104795d5807ebf7042780b06d4b2f2b395d89836c14f9a236bdaeaa1f0f02b31e41969037966279ac694467bb0836c3008af0718ca2283d08dba862851b6611ad7f589f629456565c4e2d272d8e22e5e60488745b4d7b784aa9a1165d911417892dc7477773fabfaf4d16c31924a8dbadcdc6c637956836cb7c5daaa1a734995057aa4d2251d71ab2322118581b15f109697babd1c0242a88b7ab97061bf9bed92de6f5125f4482d5ad88f08f4e22d1d02452ec91ae152b74a597c56462a3465a336307b29a11f1c3af4aa1bd1455410e813f616a2e317b31008d25edb2370403f38a464be0f813e59d6477b93a64f51f6d0280984838393c4a6ff7eccad6acc95f21289fc05231c710511dc1f970d8b216c6b08adc39a3e413e02440907666c9af8ac1f98bf0e2489789568601e5e58c488cdbcac9f912b7b4c3bcfb55202e7c2cfedb37ec0080e50cf8e4e8e073a806303022336559d42e488a89cf9ebf03f224a3bcd8533177e5e96b252a219d119157b5d29962d127c210b45138eec55b5fd449bfac77203fdadaaaa47082ea8aa8a8522aa4b254a6b911a82db704eff1085fae7e7ba401d74e3279116ea2e877e5cd43c1c19e8d745113580f83ec13b0365fa8966d23f7309a546f4e937ca1cce12d1a1ef404031db3fd1c25e7138583b673fbad91f98c5d56c116d8acfb0f84a17843237fbc303b4faaf238082400328f4832b68e24718d94391031daf942b689000b4baf00c255fc6ead6b491e60868900090610c8ca819082beed81c2f3bc6685f7e99ad77230a027509a84042942b6f4ba131c35c3e4c1330daad3d9e36a06d4b36eba1ccac02eb6cbf4b3efb05613c61fffa99bdfa305648c87b132fee25babb9badaabbbb2b16a2794c1e397af4892df6aa478e14507e63556559d72ce85996a569afb26d553608c9534af9a22389783bdaee66995304b72acb9ad6ac581ad5024dfd027afd0a9ababddeee0784c27e1a3a4a1664d0840d4b96b0b384270418a9d0948eb32e2cd336ae4ba12aa3910a4de9b8952b49f5c8422eec86f5a3f7465e78f1c8d183b31940796d7d8230c60b146a560977c83da651dce3cf551e6df272b417654031cb3c3180573f9a62c604fd6010ea31479fb6f79fdcf80c0654defa07a1c44718672017bc991b69725cb664697b1823295da7ed95aeabd4a7cb5ed705212ac7b7d512ad2c34c6972acec6254b31f24e7bf13c03fa9d7a3dc58f8e3b25b8578e381387eb47bc6c8e08eddc01dfdc93750625e26881891d1ab046579aa7553d4ceba2016b6cdd2185a6ea5cad1eb4e242a804d467800bff03447943845c4d7b8c31c6ef871db79f235651db2c0b94e11620146ed0bb24f4d8e34b6f6cb7b23034608d96d77cc2cc7c69dc95bc5535575625e38c32f690d5e5638e266495419ca4ada181f7a3a92945a9822b7ca0fac0c4b9718b9acce40fcf6568c5cf4e0fc5782953cd2476ca09ea037ab5937662fb49a7f8a6dc28a994b2995c9dba1d050df0e4b50705889aa94e322016173281285a4142014d51da6622249a2c1bd02fe63637c4652fece59a36a02dd4a96c09d9366833b9b12aea28ae57f7b230a5f6625574aba23ec12a8b1b7f754a88873264c890adee33c287a94e4199cb4003f41a0a444ce04247813232fee8d15ee44f1cac0a0dc67c15d0ad38c6fa8a969c5535a515031aada0d08a1e30b97cade8c1cfaddea91e44f1f5925bdde26cf478b2d39ec5044e7b8d033317d0ea0afa350ee7f409d648b9d59b894e726df372daac0574fedc8c051912fa35cffde927fac455f5e689a89e6c0594af615877009a2acc368e174d956503fab1dcc90d91a980f221940ba3dc6fda2c0594ff72dd6da76a0265aa6728600265aa59b54ee3b40c689fab3313ed7955a9e7b5b85931a0dcdc57372dbf4f5c01759c4a6880b499524a49e764b6698edf26cf00b6e16b278ea0c91540a578d8e48ad4854daed8c2fd6252eecafdbc0b7bf82773210106107da0c1988f03baf31ac7ea957e41940df471b50ab8a0029beb466c86620afb24c262a744ce44d37cac374877a6bde945d30928b491ff3c6b27a2626aeee8dc2f0ee944d33cc7bf305b49a2dc792b653d69544b6ade5ad227f8841508dde945412fbd33da7c16d09d1c65c9186604428233cf1dbda1993e7d3145d3a7cfd2b9f3f30a2fdc8fc69d5db85f10770eddd9ddf938e5e7632a3a6954bca24df3f3359d95807e56cfd0fdbc3b5d58ffbc2b073db086e9ce5b530a0ac59d87d0074fd048746724ea1ad0c8ef18a170b5c08d36e210ac113fa392db1609be48f08cd6ea81329304f39fd573e7ad790b49a3f8baee8c99160807a42db9aeebba5e5dd675c1ebaaaccbea6a56cd3397df7fc2860b6770707eaeacae67f6ab4538abfba75b42e1ed22ad0217c000c8c6eace7a30e1409b45b3b47f88cfa4a09c765a64bb751aca522a5d1757af1d507e7b99266f457bcd9f0b75682351c63468f2b26a1c3f8122154b292fb98815ab92eb1aac1318629560f68aa686976b299a7a0243362873b5c796e40a09667e640b44febab1cacf6a3f696d12f1ce8e5cb0020840414137066571e38c78f549deaada58eb2c62f2aaac39adea9258cc5a630d7253883325fd43051469903b18ea0291d5af1e2b6bc5abaa2c6fa1c70b4598a96b618ff6db8a907e5d2355ae420a454036394d8c566e7981babce5a5ea523fbe2e53dee553dee52e973e5da02ea4da565ce1041c9b5902da4ae8a14fa5b7e0aeebbacafae91fac6bb768403fbe2e9773ce39ab3aa768cfd22ea574b95c5eb91c723baabbbca6e30e75897197bfaa40a4ac5c542eec8b8e1677711c2deea2aaaaea12630aa0b9a44d568c0914e4327ddab3a6cf3d0cfbc2e6340e11a2b8dc65c1d8172bad8dd4c2beeca8ce5f8b4fda3f58d63930d09295edc5162a9f2fdd457ebe4505325bb8780bfba2a37a8be3a8dec285fd648bb7b8bc45752195aa12d2e79246916e7dfaf4a9e5d649756b93357de68fb4577b20a02b768eace7d02fbb65594c25c759121ea13317ace15deb1bac31afc562bf5269c57e948e6c8aac52a57efc0489aaab483057732090cfb5aed51c8973ad67f565c795f665475f79698154ef0b2f3633c6382144234abd23c6854c69ecad4ff0aa9090575a20fcf0d038228ec37e44109e24374239427476982822d6228a686ff67df4691a7184113f848a38828888a8c78f228c903e7c085133330314440fa55fd78fe5c40e8df6e2bd991934670e1e44727c00c12b7ac4183f4f1f152276c5bfc1b7a775fd06df4973b4c7a33dbeacc39760fac4a178b429a65c4ba939daeba276d92879cd7e29d7b0da23c715143b06e10f9416b9daa197698f1cb59a8db2e6343152b9a6c295465fd315c3ee98dacfc8d5b488557873f0e813f648b373869d31ccbee8e88ebdb35b05b61b447b91067ad969b28fc8a63d08ecf13499a569cf0661f1a83d726c53a0345ea9e4c55096ee1a432cc5c6192aba9880f32ac618638c31c618e346134d9126c301fd3c4f3ebe873ef57595fac422e3104a405e98c3fd7ec51409e445f4135484bb70042b00d95cd7accade48f540878fc8f34e9f3a263c45a3780c3d8ca44fd08a3060112589cf95515cd93142faf471ce9597bf9173bbb85e72a02fd521cb633b2adc4359dacb016558878769c39e25a0ad04fab10e2fe1114094174d3ab006bcb20576abeaba30fb51fb95bcaab24e9d709870a0578e88e2114849832b67641d2823a3256285b427b31f18a5d3818c9fbfac0a6d8e942a0cefc87360a02c598775644caab91c0dc67cfc93a5546873d522ec04910b806c9850792834d347c4eb8a3f8a3062ced0105db7fecdcc39e79c45b457fd68afaae4f5edd6b6e3faf62a004df163fb07856eb55dbbaaf5cf3974bf7460ef8e037b77d9cf7a127caf6b3772b75f75dbb64c49f6221a95bdfa8f3e69af9e551a6daa38797f18b1697606ab5ffc246289e07e8c7384651115d19eb42696d38485d520ed55979dd0aa3341a0fc6f665aafa8955d17ad2ccb3aa26a719b4704e913b4020a40b7ba903e75b73af3709246f114866efa04ad1003cead2a69c50f8edc0a0956e8dc8f99b855d1ad726ef56971733b98676e7567a04cf50940148568b855c51db8959023daab261c6844558798fdaecb5616a3dd41daab8e10d23f54cf7e28ff5432850b493a4a34f17f7e983001020a0a4aa584842e1cb22d71a09ce442a188fa10100e8ecd4773e167220a5601b4851d1c1bc8489889e6244bfaf444a336201c1c9c10d8c073148d6a81838383e3019b13f311cec9a2b16828de4bf40a4a5d086d8ce8535ff89a888236cccc3e9ac965666666267dfade51f469bbcce1e85b5986f2022aad922798690345a1860bfbba6db561561f1f56b72c85b5c402ff51684b96a5bd86b9056f31e42a8382c2f7ab7c6c1954384883121c1b98f6aad2695092524a292b28d47ced3a765dbfaac71d7addc87e6197ef0a04bbbc86d5eef8791cf1d3da0f7b12f23a76694ab4d36894f60aa64d99bc3334b09409a1d403fb09c1fd4a9729f69a58618d611a86d5e4e81faa775b4d7b55855576a63d9afea1ea7c288ff650255a41d9a7780c7ba9bdcb1e07f6983e5dafeef5297bf55244d54453f5acf668af2addf268af52422d4bedd55ef50e07140e6521689a232384104278c18142ca917b34163224c102c804b4efbd0494fffde5da80b0c209209b69035ad912e57f34f212a270e106292ab6e0c4cfb5d165db96719cb6f1c5dd710bc212447b7c996e99c5035a6d6f8ee3e60fdd3694dd386eab1bc76d5c4d73a4d7dfe04b3a626d5657e155b23202da9d473f4471132797331d9a89807ed3e774c8d940c2c56fae6b7a16029a8180daf3b39c519a0637cdcba4943f8ae0193fa6ad86aeca0661956daaaa645e569dcb66daab80d2cb088b3c2896dcd14767cec6ca698d585cadda68651dc9597622e6e57c362deb586e648d467d821e288646d6e9a345138b3e3116be6149da8bd36764c921b0ace2cb846e442c2e9d412a12ca0c8ad74563c94aa2f9ea40ac8ffe599f3f76f6d8c9a4bd172a2f19161ace933e719f5c6e7c56a4e91c41f191ec0a22ab6aa23e75f172024199952a81da8b1286e634d1f3939f643ed1a7eb3f7c17d5fbdae46cb4d593c9fc91c2aa7e55eb5c5546af4676f6d86c287bd25ecc84da8b56d0179a337ffa87c96426e91fe292fe410a285313698537a57e72ce24cc4cc270716eac381bca845294834d9ab31c85d783478497c0a20cc02258048b60112c82320a0924995839ed692d2d594f8e25751887880b185cd072fad48f9918b49dfb041a14512fd53722b06f5609f94c3eb3528979cc429bca664ea07c6bf6c8999744edc50c4a2654876e7c660565fb65496e9635a1dc046a5999457b94856642124a9f58e87e343435138232569831996acd84ee2799a8a8582637e265ab1d698f89ec0774f6f0b4973961b3a208d442e58e44d2288626be5c229348262e2c82c165995034c5aa4ea1c9838198568033c070cd2a627c560585f7b33e99cca04c32f92799645642014dd142138f1663631b9289a563593a960ed79638508884fb715188382cfa348964eae61042878cc7dab174e6a402a2322b64423328130a9a47a810ac3103d6b8a24f42a04085744605ad9e15455455144d3c7db27090f449d3e99395d31e137d3a321433a1888acf88220ada54453825a08822a2f544d4649ea192104dc1a2a0cbe76a4c84b4172b9b094199f84d1e1b6d5f607b56a0c2fd328db331043ad1b81d9383dc8eea725b214c78322228030544651a4eca0d371e0d377ed38132114a7b51882c28a890f6b8ec4926940d394185b4d7713a2a5072028e0e5b1644e7fd66d08d7f11f2b2a3aa6c2b2087db51bdafc2e9b02e7fc4ed686be1cc2c8432a24c2813ca84224a4a71f1482699909509dd7822f1ba28ed3f718b32a14ce89b5924c1c959c24eb226d9145914d7d2c1892869e5f469e6aa3d7834d10481462b2c2d2e980a8e34d217059268579fbeeea655acaaeef7e3d5ccb1caf62a0b6115d948c532071a8e180a6b7077d2a01a336743ebb6bc40b12ac495a3b157ffe4ad300cbbe9db355da0d83f0854fda3d60eadb4631588942f3ae0e371c047197f618f156b25d9856854767e4d56596adab234d3ce5839f44547bfba6d5fe2e1953792f980ca0b5fbdb4bd61b5e52beb76f1f9f3a814148b95113418139bc42240272ced31afd46fe6aedcf2c15adaa55d5a2a76fdfae46cb0cccc25a8cb498f2d27d5b758ec3ad76fe55692f6a2d573041aad24d6cfc5f27e8afd4a57dacf62f284117ef8aed4995b74b1acf4f42909df5276fdba1a32b42f3b6e5b8ba7bdd86d5756ec77232fdb28149d18816646a045960e77f7e9a5ed8432abcb6a3f32fb1f2b4f3956042a8ffd8b93e8e2fed14d32cb351696e38097c5ba8080c965f93ffaf1d74fe19191bb52858c38083c23e53591d649642714ed9afdae7b45c8b153d23699f5a2e9baacd5adfa05a19197afb8ed2c9a5944ee7f114a4cc5546c2b9571a0a7ca0958beee1e08214c81cfa4c059a00a3624a9c2a78a26525c6cf58c9594559c6df105b1aa0aed3a8cf9e6d0cd62e84c7bdcaf2aafc6f49a733e0302a5696f02d1686f5679b3791df0f3427ed3a7ea32773e07918862f9ec4fc813f23c84100a774eb6a240ad28d0ec42c1b282a16ca9dd59aacb6ba0ccfcd5dde5fcf8ee44c4775689267c74ef7822fa2e5689ce5ed134b328281fa65895fad15c15977fd7bdfe79f74d70e28acbddea01e3b95b34dd15512ebfee4554ff72a935d134dfc25261348de865398e0814078df6e6e4aaab542041682ef62034f7ab6edda249f93c4d9f389bf279cbc8fd524eaf414ec57e7c552e10f98f3b46bf203437e5dbb5944ad3defc56678640e9b97f33d402e16e1d08f78bbba5a43b576934aadb3edf5521da34af3b1351970dac696f52cd7aedcd67f6edcd5b4fa0d3b24030fb526a6fc2b4376d40df6342a13b6bac4f6bc64b6a4b68acc43a2bb1ce9c0d2476e8f8101d84e6b2b4aa737de9578b0588a4d1332f3bfaf0d00261fbb2a3022527e0dcea6ca568a93df8eaba472950c7c10b52d0c219525be833649a6b5e97c5ccccccccccb3645d4dce9c2fe47af80ed35ebd7a40e179a78a3f3f58f8b9ae9f254b7c7cd89a6ccde95df1891a79a2897ba2c967c94f9c3558f9b991f26453a098b6dd8ff2c4182dca4399686f88561f1644799060419447868129edd902d5fe519eeab2a53ced45ba0d1d89fc9832046b3006d4636bb2d9abce145069b114169402e54a49492b684e2ca83d2c555d3ed52769511e497924e5b19f85a5b020ac49105f5a5272fca6a5382951da8b29444c8f1435e1b90dc5a8332ddd694f07f49b407406294437d5a75365878edcf86d48a77dda045ab894f2309246452631a7b3682c1a4a5ff1f5938886194750e815504a94e79427521eca83861b2f2be5613b226a2f06f199f2509e1b294f5cf9a13dd0604c7737f3790af4e58675e3b1cbdd9e68312dd0c9249af8113b6c8d4bb94ac524a22a2cdac457b15f95c59d4033670671f69b47664ab3df443285261373e8f24c7299a8b248f044c38532d914a8765b6eb455142c724f0bede10d28852791646dd24d7637b9f2b3499ffa40520848b85f0c8a8f3f7207cadde2cf8ff4f94cc9256c435776f491618831460e684ed1a76d4e11c595cf6922ce28fac40fea1fe4639d4059a05ffc99401368024da018b7ad4fdb50348374a1101ee142536c02f4640c6a4fcaa7e250c6932d9121c95290e1643e190d329d8ce74a1f0a99abfa49f904eddab7fa41f7ad381cce06c7e1b4570465a43502686a023c4118d427ab03d04bc94b9e235c79185320b329d0783910c01316a5391c35c08fd3a9fe7139574e286a984458943ecd32404f5eca6725e8cf9f9e4f340a8b42b2c5b0a22b25c58ab022ac88a38fe47ab29e271906a1941042082b886110c26cc3301b7b98600242d838b828eba18cbd65332c50eb6d03db9bd5f7e6894d136315a70aeccfe5529452145883bb0cb383c5f0814901446d40108637266c4980a8ed279af8dc047e42caf9aa06993f1b93295079cad72057559288cad7c4aabaac3048dae31e989df6b8ef8dea6e40ed7118687605baf35214512d43d1d43214e582d9e95375f9304878fac45d3e0c104c9346b108706098e81394e20b4b2ebf142db90cf373b92704f7836122a52802cffd60a680e9b9fccb923047fac4303a97cf30472e9ff92f59f489c170f90bf783c9b9f2b688e0caf973ad9f2b5b86da632768bc16659452ca28a3052eb402e56bfd6b19e2e993cdad5242fb32f2707777c74b8e0196a2701ff3c96eb45cd112c50595cd842894a20b3c7724942214e5f2b32a507e8b10e63312da7ca0cc972274f9dbcff604acb14d01653620c0d3a604e85ddbcfe50d880a3eb04675be5604e30acc07f3c17c301f981dcc076607f3c17c2ebf8a524e1f58837f65d1a8915034f173b023483e2cc9f4b961a0d9142876bf5294cb2d37b33046421105e38a36f13b8b159c08b3332a8a303ba3281166674474f9308e849e00b3538a02b3036576a0cc069402046bc82ff6cc9e2815168d4a41d226fe9327575c01050a165874169dc5cdb95fecd49536857e303b4097ef0266e732cc0e77bcfd69d989029398ab842c6434ee282b198527c400ca2db5c7ccdcfd8418ac414a29abea0932c0a10208562ca1c118edca7e83af760edb7e832f47dbcb6922e521b84da745cb33c697e2a7a59125d22ac6c9cca70c61b5856a0bf4a3dc533a2b041cf765718cd71e7f8b930a0dc67cdf62a497b94bd8d07edc614cf98cac8c1e6fc42dfe2372a3ad89f03ae4a1d531ca569e020fdbea1841c8715fb92957b94eaf914abf6ae955e55bea53e94c7ffdbbae8bbbe80ef34fde9797eb54a65ccab7b81e77689a3677c047fbb2f278b9f2d17bc5bee8a85646a38fec4784484d6ca930b3b658e121a7a32f2dc07774f95d178eeccb8d958fae6365249fd56f74aefb4a77695be2c0726d32b700beb26a87dc02f8769abd892c971648f7150ba4c5e5a83b17872dcea55cb670215f0e63657b2f2a87dc10d7a326e375cddab2eb115e7df948afab689c0dd2ab0bda4fe537f15e51e57abcb49fcab5aa96680a68f58f56a3938620e99a46eaebca171dfdcb66f23afad2eae89e55ed2b95c21bfd95eb68bb627574d67e1cb440481f91ece826c29a5600160fb9d8adfde5e52d2ee5e7e21c4cf968f4a8bd932b878dcab2eb93e7be625a71d1bd5c965e6c127ca18b1a81c48fcedc8e948f3e32f211d10175acac581963acf4f01bdd0246eecaa106b997ecdaafcb0adf557ea57e7c571eeb476408a9d521e0e5b37a035a5847ef5ed3b17ea5bbbcab1f075e6ec8c7eb90d6ea90f613725bd88f7bc9dec43b7ab41ff719b923be2452ca55aabc2ef53be2729ce46cb05c6361e9942144ee4ddf9494474e47cb4db956469736a57ef2a63c9636187ab14409bb47f5ea8e3dbaae43aeed90a829c1ba8fefcaa5fd4e1304cc0c8d92d703cb63680966a32c327e9b1c8d56b2572a232bebf75d37ae7ca5c2182b77c88dec106b08b55fccb8c95de32aa491dbce5f76cd5ad7b0abeadc669e06b4cfccd2268eb2a2d25a1eda5f822347e6aa7a79820663945437a0df7525aae2aa77d7986a21b84d13dcabead738f9ec5912baddaa01d5b66adb9806545b2171cdf50a0ba9deb4d7da29779753ca711ce5acf041cf8557b8d08a9f29ae061d40a1153f4f90ee724da357a940b8d36b5c55a175a4625f746857390eed2a1fa742abcb55bad734a7a4fb4d0be953cbd6a6aef00a892819b3925e9b02b0792519179499ccf68b2f9d5effb45f8c70c269cde9d5ab7251d963f5b274888154cc4a0220284a21c8edf1f5c602805dd6cc648c5b5b8e9150063ec6c814de42533c6723563ac46cd80e00d8528452ac40f9765fe3614b11a2ac79b3bb62acf1bf91b6e40ecc010953482521094438364323935fe05fa07d6140bcd597d2be4025e4a37d81d0866798667f965530a09fb126848c63865b5971a0f12688bae0618d95cbf7600dee5f8acb05b83c80cbb6fb353d391ae14aea685733dbaf5f557086e6dcf40094a6d068e22bfb17445d6f0be3fb55e4d19e7c0573b457fdeb47d91d7b0ad11ed75420909a35af3e596d2fb4ae3ecca6f5ebeae68c31668bb9b22edbedc1d734c5b84a1551c0bc6928ab8aab9bbefdc860b8e99b9e023c8ce98ef6148141ae1027b71bba2967aad240524014034113ace1c255a050b87c2a2e9f930051db999b70590a97b17037db407ca4b566249781806855b25d4bb9ca53de4108354a0f2184104208abca694a8acab53ac4b241a14a4368a5ac96d5067ac3f7ca0b6fc75c8a55a2739bcd369236b16da127b7497b4ddad398c2f31a28fdca3968a5d2ca3ad488f69899e5d07e700aedacf39b72eea80aa5f64bf98a659c949a92625927473b845a10bf9517284bfd520ead920d48a39abc2996528641eca3776e8bdf9fab1d56c872ad0681a90bb94396732cd78a6851f942a8d143781fb016015f3ae470fc28e288962068d09d1eaeb6f20fe663f9b6ab5dae5c7b0c44f50e9ce202816fb9f64f8309a02df02d6f798546f080b61c875bae69da6905026f5f52ac8e6b2929c7016f8a5df927afca8d5cc8a5a41c4777156a3ff824f8d28f6ee4b69cd69623465d3d1a6204821af3ad2894f6933ebd8122aa7fa4004df0ba9c000bd775f9f98928860c1b25249af824c6f9ae8f7ea5efde0c0db42c55484409019fd916a62af62b75f67b8afd3c6abf990b2dcb358bf3c129eec740dfb6f2cbd75b649792ad77a2896f99a1643fe8045e9a032bebf449d382b834be1e2e03c1b07cdb6da0a87268bf20708aab3de59a56532ae30851ed9cd31e37504449068aa8186882f0f41989e2d293ec5772b11f6db1415c7816fb9556ec4747d083b67f7440a0fb15b9f46d537e4dd36c1009217c67375b0138c5ed27dae3fee1b633bfc0f385dfea0bb40cd4de146de25b506807d9066a8f2f057ee505faf54e975828d31e68644d506b5aaf3d78597ba0410365e035c4c140c214555555d5066560555d7dca78ce9fb47fd8331ab7b22686d9cbfac4b0acaa30ac92d7e7fc25b1cf3a23e7bc252f251691d444ebd6cfc8adac3be31b60e063fa84a14ad1a459164a73c07dab5cc576cb961c51ca74408158afb6238208b92152648b671dd6e1235bc63be4b5ac0f3ca3881fed693ffa8419d1a7c99b3422cb81f64dfac03336ab55df019dd701e54b13440ddfcf079ec1b6fa903887395c4efd20c90f227dfaa01013373e881c451c11840612f9c0332acd429e51d3d610d51d12e7508a281a15fb5dd47e34c5b2fd8c9c86866ef6a37135fb59c0fac033e4edc7d66f36183012285f4b611abbe5214402653cacf04268648875e13970fb9f91dbf23c840f3c035e9e3fe66c400b6544521d4224b0827c2f287fa0c1227774aed2536b391bd40e897714ab0bfd0c0311ff4524f7bbe9baae53f1818188dc9b1b42bb2ad6079ea15229bd8a0aa52a8f9544a9c655978faa663fbe9acbe3675c5c1e91f429dee51da7b823e67468d7079ec17d0c9b5c3ac5a5415c7a0851464413a5e78cb8751f1808ce06c73da26a5a58ec47575a8bf41ae441610a8a296e8b0b5350f85c8db72c071408f7ea7e706888ea0ae9534a903e516a4fa44f6c3bfb452497694a1f02d6079ec1d7ce357687dda55a7d6421b55a57536e44636d7d31976f0466bdabb03aff5bedab0e75ccf58181803722b935edc29a1327e0a498e0c304a053bf5a806ff750c435afcb1ad2d9b166d3f8b035cc3c688298f18240e13f8f830821fa7983c6f382280a2b0bbd0c4b90217659130a3a036538d68ea24d59cd57736a535673be9ad59c4d21105f5773d715051aafdc9ac361b5807e949662cfc5e6124a77608d49af7ff48a3e11755dd187461f1a77b871ca98fd4083312c9039ca3f01ad5ad353345007018142ccbec05f175e4c7e1aa8bd29dad4b752545a5a45c93ffcc34ca2ecd9fdec09fac5544c0935163bf7a3d3b20ff7b4d7fff8879ffd2073220e55443d6013c32eec9a9506b46c0ccc56dd807fb220821f89038b84584254bedfb0b9692d015143782c1e18c5e281512c1e9e69b907cac4f3e8910346d1ae7f72894cb2c915c81d06027bbc5401acd13ca04cfc234a01d0c4406056079c11bf409385991ba7b003cac4294c2071e4ce46640ae1b11112a3c01a134e59459b2977224a08943b50ee40b96309610867f633336be7621215733cd69a68c28e45815a3c617b967501c8d885c01a3d5cec376c828b7d0c828b71d78555c53cf69b3ea51c3b913e75c75ea44fdcb133468fddba02adce38914844c963e71e58035eec42222abec57e259ecc7e14eb8fceff2e4d8bdfae84bc7622b68fac12f1db650d8126ecf06c854019ec9305b4cf72e688906fab44133eb6c72ba15dda17eb459af031faca8b34e143e5a37816abc4f6685f2caba4bf628b8c6c9152346157b15e34618fd43691fd2b5dacfbe7ede027dac3deddaad56de614c03fb7b80bb90ed05953aa6c6fce731556d99e6555b7a240b7bb556823249ab06b957ba00cf6ac6a97398e574844d14413f6ebc24aa5dff3be997b0494c1328c487bd8332b84e662b7a0a0157618835920d64e555d58342104519820b41304b7691976591796691bd7bd416bcb0a1d211158e3e5c6edcbcf003cd115e8f1bbc318b159894019fe4a6733003d3ebf145139ae8bde4342a3050585efb8b300825a880384a2094e60d1841fe45cd8841f9c20bb2a0690916f7af0663c1f3d7e4829658f947c5581f4abaaaaaa0b7b55311f3d7ae01e3f8808f1a4b42f17bc9b470381bcf620337347abfb8cc09b1d1a65fd2ea315526faa4b4487f6882813344566fe617bb497fd583c3a28faa1227500aba3aca6655d4a341cdce52894664cfae7f67bbe89809ee81fab03330ed46bafbd38b3d636cdc26e5db339acda63ab3c2ccb6eb6c7a73d473d000f18d4a34ff002d50e9282c2673ea0f0c28afb7ef44a5a82321cc58ad51066697c05b9b2eceabe11d7c73c57081e296d515a2ac12bf680d1546a8f815c9bb5dab45eae207deab775223e7afc10c2389cc3471a05d110a588be119805a5dc22070365b85e5649b4d8478f6bc36e6187da391d3fda6b1fedf5569d7e2c561c3418f3411b48635ddaa1d78ce37748916bd98fc86d8db7be689f56ae108dea7658826ef5cd402025a95b551a90122fdc2f885bcdca361cd9067290db61dd4e710f50a97bed70a44ffdeb3becf449fefa0e48fa5455f7fa0e3c113577e8b9d73326d06c3b16c30568bab648e712945acd96a2e95242a3e97ab604ba82d3275493f6ae5f1f0d4514cae7b2a3219fd150a604faa19adceb437dfa60cc157dc28e6ad2a7eed7513e1185d289a6ebd74529ca8701d02605a553e262a80acc8d1f4ae75edb29cb8d97291ece2334460c306608d610c0bd1e737d87eb3bf44494f66b870edc2bc60df78a41c3bd76e0b9d70e3ef77a3605a5d7bed9982128737db280ae9ce54cbf7222e8cab52bf1d21dda50fbb211a19dc52ab1625f3aebd9ccd897cdbe30c03a3d11d6a99d5782ae7cc52aa125819e86aea32e7aaa35d174f5e5c3ba667dcca7d89b79bb11ce85f7830d689bd1908b9638d0114e86041aff8d86766459cc50345dcf9040b32f81ca0b9740e30523a7e3ba1d7343c4fb6de0769fcbedde1c0e798714e9ea37badd233744753f256e77cddabafa7143ccfb71e0769f3584753f23b7bb966dd612a8d5557bb9775587cbd51bd6edae61bc75c7bdabf572f5d3c0edae75299bb5043a376b09b4baf01a27e3767540b8cb6f155bc3086e578170afce710aa8fe5d3be4b9739c0ef9ea5b85716385556041863b39ab08b47a562bc032847402e8c61dd8a305c251867a6cd5472a0a96d92fa668088b5c1d5dd1de35d4de754b09a3a128dbb3338723fee5477bd7e12da2bd2bca35a483bbd92fa6e85e3143f1c218c7093766083b5fc630ecb24050a90b75e8399242139270848a28471030ab28ab698100f609ca661ae0dc78ed093ca0167e70f378c08f688a3c18081f3c23a2aaa00730aa724237f171038621e8040b6955cdc3b2acd6ac3aa9106a20da6295fdd11e186eec07b0296659575563351b2a823232cbd670e33334c01fdec0a6a8e99841f340d6816128c5aac030d4d36709289383e9849e1b5fb0039e1d1deec6e499d51294c879e79af82231c44b8d10edc5dba8ecc740b78e2e5055d9aa49950a92404488e4249a440cc4cd0d0371412c7c9610c2405c76e6e0056c8adf4114153210f154d64a575991b6a3e16444dbaf5b95477b41d194d35e90d6032beb2b756691114595aaed548d89aaf5448d0913cde7e2228cf8910514824d662aa2a4c583422cfc704290ca0fcb09413f18082b8767c4aa7202a3aa9c2934a9000303d16f9bba5558394deeec9e2c894a639145f69d47acf74f62b832376468b84451a0d5fb527e4ef94d1e8d89f67a12b5b7e3b792a2c7274bd25e4f7b704912b9c343a45279a11a924335b2aaa1aa924355540d31109388674c27b40c82324e60d494019be20f06a2ada402ce90c110886413a0501644b9c2aaa0f6aa401b8832d79691f522b7ea917de1cb2ae82ad1b92552a44df11608e82f93232a3951984815d41e11e62aa80a1aad58964e95692113b27418882aa82acab4c0a84a0e413a5ab7ac82e4505455c12f36f3d0a61a6262593a4093078b2121226d1539aa569885b6602e1b092b592f58b62c88622decb2654154c565d3ac9a5921bb423686ac0b5aab4aa8f44b55c6b99e754ccd88000100001314000028140c874462c170381cabd2aa0314000e99ae5078569866418a29640c21061043008000000400c004300080fc0282245005017b861b3868ae2af07a03c33008f4b3e6c450bf7ae9eb33d61af6b7c173cdcd087d7e4ebfa348d11bb4a984b0960470a9b1fc572a828e7a233baf931453a788fd67908e4de231f28d0b0b585661b18b8f05d8f47ae9340c4873c6395d639e5caaaae9503ea362db1e185e96959744dc479db350b5daad8043a9d831e508d8df08ce3edee38732464d6ff96a1f3e8b6671e20ae7781bd101863f224994638eb7e540e8476a08c934367ef6342fd8dcc59e1962fd099fdf4f6d6a491d1b499e0755e0b41fccbbab9adc0deb2707b0db7c4ba43ac76e14032df901e8c99ef9505a9b18a9a26833c8d4ef7266e27c8119544f2e1c245a61955c2ac01ed51c92d775ca42e255e8356e103465f73056d13f81360e3e776d37b9c94ae86a74cf2544ed71f3d91f2db0643871a881bab52f2692fe2d11a3168babac67933abd1397ce41f92b238b8fad4da67e2129719f134491a27c8c0809c3d1b6e140172875ef4cb7ae407bfb04cd5e035fd1a7d9821a0b86551dc2cde866552aebd102da9d221b1a8f389ae1cad034beff3b669996e1227314e22bfbf303bc8b1a1e8a5a569f861be1e84bb46beebe5c15a1c58b658071322f18bd29051d4ae5fc9987db1ed15579d44c614df7bfd3344d8ca3020b65b4f152f95ad22f1a0d743353437865d87466ec5394de349266304521311db6281377b1ca748907addc89b95cfdcb441eb988aa89b0982df87a1a6e2f634bcb9299b1ef8c853707d13265517011188dd8dcaad92590e6bc8f6ceb6acb1c714286b14919c8fea8929299cb074e049ad6ed962036381d39a284b3d5c91db6c39c889c23e1876026d994f841c956bda28139018c1354efe8c2e90606a0bb11078515435d8ce5bc12e405bd4fd73d149a9e60eff5f3adf48b8f588343c620b230eea52eff9d541c11d73c5bf7d3276557e0cfffb2d1641c4456811849c28798b96cf510c832d46871779f1a517c1e305712773cf23c8a40e0f8848ae0b91a7077704e9c1998c663798b1a4d03ed9c7cd7842ad448b079f9747b8447fa7bc349e0dbb864ac20d0a386be930bf2881024687508350942e814b0da2e18f30627046f689aa4600f622b774ff76908495ccf3b72ecaa54bfee096a12c87f6a3dd0cccad43bc1506a8e4bbcafa7a0db12fd0470e0e4b00f12307d518d7d8eeb5f22916af7335273d9c401d3df2cc17bc3a615559436282c34e0a709ba8e4b812a130646d3eb57d754ced17921850f8d01856c80edac81f77aa8e8b602fd4645bc81fadf077d3bc0d0b69f504f3d376c394f856c994087e9c0b99977e0aad2438618f9c469d5bd37526b5c64e518d1e5809632d9502334db15fa939f34354f5ee8e541ab242f1a2c0d19e3adc6893b392f81faa924fe0bf2aae156c3d1bb1fd759b62cf51a676505b5839e81d34d57ddc9daae064d1bfde8cacd540c36070694f7a76bb5390907ad8855db8dc26c2dd8942b7dc204b578e1a7dece8065ec812faa9e38b19b92d438ac2b0a43e0b2aba508891e7a8ed027e62ee99eb3e88e384a4c2b36b2dbd288af2ca55ef3657c6af8678d61de24846f68a1e95f8bd743e34d96a4388e632848d658eee7fa47f170e07ffc61a9dff5098164ef2b220cef9ecd657f50e6928043ddacb23225f2cc007e048b0c01203878b71e722692d96a4e4241deae1e6162b403edc693a9b8c0c391647c1e2718c8b60b19ad76b3637bf1da332e134da5e4263e4a28dad0d3deffdf9ff3e5171c6f2c19508de645139725859267eb1a9cad3d2b1f2e19af979e9dafa53dc4018824acf295c0bb46653d09ec7ee2b853b02eb3c40a7c52fde07bffddcd1d0e3fdf90189f96baf4613b46f3bea7276724c0aaf4a4610a7a246625658ec4fef93462a190be3dbf09b0f65549666dfefc87b97183b6b05e04a18410b7f82f17ac21299d5db00e9d84349387ed012cc160f0b4c9fdb18e2c240808c0db96292de3822b51a6de0509b4ce0ca5839dd3e18f64eae342862152711de901d1e6d0a2f1d16084aeb0b8b8996ca22a9498787f3319c9591bb241bfd45f03e6a62b6daf1e1a8eb0aa82118f47fdfaaaad338bd026a106d03ca72913a8efb2c1b07346c2dab0f80a310d4590b7e60f2f3a1abf0a2232fe374a23a826f26ae2b6304e05275309ca7077bf2158a1dfc605a4038f23d6ce9734aa218b4c07574ded33c6ad2234dbb8a274dcf1b158556f87ec6b61315fb0d6bb3e8a0e2a7eca20255a60018f73356b0c3b2548089783a9b1fc975ff65c06ed7694cc0c84c50795ed0ef2509dfbf7a3f7b14f662b831d902cf8689cd3e52c018a939d9b85f417bfce0a989d39830432ba891b2bac13de1219347b3242302d319949eb7e026d56afa3254076de0a52da4b18d991f543c48d56556147c836a3560c0108622e020bce8cd8414aa556e596b83159ffdb0f112f8a2522c44238a32e131acf20930fb38e94801108f95e44b460d46d36e70d3de0efb8c30c3c2d3054d5c870186659b6a61303d36c710dc47353a80a003c05d497d4381719711f9ec27cd35fd32129f59d799a406b96027180cc6192efd76660a76b73403b21344cdb22671b0569b80c7e22b382da1face3f6f7168f4d7145de0f7d7cb7b7e14518e9b503cef94cc09b095cadcc286ff69fae7be11aa253e63f085a75545605d6937d750309d9cd179c8cc45cec2e8d46c7bdc8059ef443b86460ea3d96698d14a3dcadf4c6c96636ab28b7829c1f272058fd123f30f70b29923c5a5084b4e270e847fab70230f67dcd0b24ee37b0af212b7b3599d9233f93979c13e8ec4cdee9e51aaab3830681ad9f03808d929dc48717aece559c094a9d206bf25438094c500923563f975989f29e90844fb72962f818e569d36a5eb27a6136a0aa06a3bc4dbf200959922f5aba3c7340134beb59f9a46547cbb7d65e75d338f51f3d2b17bed3b6e8b095c265c5a1831417c290bc69276f4530e121ebc7157b788ac5487df542e057d704adbc39abc0a7ec69b404dcfa01ebf497eeeb41d822d350c06dc65dbe54cb60feb925230d996bcd0c9e91bd217b686aad6c457447c40e778847565a1f8a2ad6edf30f28d552a4b688f52a66c9df7d891c811c51a7f0bbf7e0cf099cd48ecaa06886c38cf4bf0b1822396ad233fd2cb75ea56fbbb27a205d936258ad51f5ac8ccd434723eeb0ce6326fdec708952d62c85fee71a3854998f8ebe2fc34de2c15170490f3d526ba24e5a4ab740fc6642113134480ff2b8ff7062c2f4883255cd03e6725e087f001af6ad4363dfba4200a71f13a8913fd4a2f6dcf40ee0958659e5e7ee39141c08c1e28015816921fa797396ad0a2a03392060dc102b60ee1087a2cbb617ddd788f953d57ded7a894bc655a84133a968ec35da1f0e064f38af198773cf1275ced0ff572ec523d39dba6dd4332f3855d9423a144b001d20e19aa8ec57fe404ef9f375886607291ed6386bfaeb85e459713eae8a6321c8dfc3457aa436b160e599092dab7ddbab3707f28d8f134986a18718d77e87ba52fbd0c8a6e9691b58b10bb2e55909745190aa46277201461a90430e681457a3dbb743e2945e061546caec424b03a18dd13cda1e86290c45e17bf45a1169cccd79483ff8dc84bbe2002827154c218d793c321dd7d6f721c020f174b8c967424efd8fe09bb9de5ee7a47c5b4e4c30468364e1748fdc0d6bc2ee963f0ce62f3b2a011ba5d952124ee8babb4be8a831f7ec200f76c0dd65b8e2eae76a237382da02187a03dc480797a0dbf45dd594d1fd0003cd13733a1999e85ad315c0f382ef17923595e5b07ea8a9cbb29627036a7ab0046a4ac3e17bd0732e2b61a57131ac9c355931617654d4842861a4c68bd88758e606ec538839db55cd47e737f2232ec2f4e35e36ce323c55b62658565e8ebe7143d14044954b255228a19b4db387aab731bdac769f53a83d38daf4d505c1e59e2a57ef6a01a08a1bbeb81aa12bfb45710094b98d2415839bffadfba25c9ee47c66bd9a987c1d59f796b13e1d0700c9f64781ed29801c9d648651d2acb6fc3897e4131463e2e3dcd3bfb6dfcd62842e8014f7cff068b433e3272ede4bd9ff958a67cd4b371ab80933a57f76db165f7028b4bbd05ddc6de22973b6703641e43fd5614366fede7b609eefdf852b10ec64009dd68718a0c221e3dddcf530f22a8d49114bc2d474411f3768a95697721842e2de9b5261f32412ce18320c2e637e7728bda0dad96fa4cc3e7882aec51508d993b500733c404548e492e5bec553a56056f9644156f841ffd3b08f1d6805474f0ec8aba366c0c607dcc724f8321045c5b526594a7884bcbad7c668f8ded2da6ee402d52edbdc7abbefae107e79baa975406b840d680a888669206c30db36d883ec4066b757d30ade667b78b525213ed54d0ad1c913e13ac041cc3ffdaf15a957c05b7ded17c0c4a7ffe394eaab77216bf720ac63d1a0efa5d79b1fd9e8528fc87fa3f24a3d79ca1d99b6300b7d773ff57f01a0064c7f550160ce43414270507b1cf3048e713571066793837d9d5a23ba74cf66cea918734253a0da9c9cc8d60cdeeed03e867ecf2b2fde3ca15f39ac81c6ad4cd6d4e135df65a8d34448db2a3579f318ef3434ac0736602aefa0deb53c5270c1fa66ba4d65ea71cade147cbc66883e9887bfde5e56db8a041472e6fe9eafaa6c511ce5d268391cbd2944cf6eef6cf3354f5f2f0acc35e0ae5881dc0fe961172b25e2f9b4615d719ab0622bf14da4917952f0a545591ba550dd4ec5dd8b4c49b3faee508a9786d2d2e08e83393dc6be03da684d65a11edf1ef0dfcfc94ba4ce14f8f49592c80d90466411d7d589506c25afe470f9c5c575b52b84a4226f97f422eb98a122b55210aeec3e000716de2c788e4929050ad254395e90f01d7a5f66977b38826783fa524bd767e664e5be8c27702bbb9e30db97b6eecc16fd37f034edfd2fd2c09fd55618e940e7e805795d94e8721eed27e5fee740ea19eccb261654b70c2a33b23844e5af66f3043e8a023ce4ee1e4986dd264cb23423ab742070005b3bc15f5aea64af3ff92995057974da63dc0007aa551edc45c5a6de004e79c2cf8c9d07f8dee544f3b00589d3af91d62d0c0559a42a35e684a8bd97244a2c71c2e054072708cdedc7d6758e0ee4bc0f09e56c159ac7b8468359c86e1aa62a75ce82e234791ea7cb26b66e134aee7b2daf3f2b9ef1a1e403d4c7d7927ff58a05041a69edc5cde267756de06aca864c2965cb8fe56a5f5e0623cc675ca547125e1443ac7ee1e562fc19a17c8fc3bde76d8b90eba5f50d9dcdd60a1d1a8fd5f139b08ac7e76f1d44f717d34097dd0e021d627b3a4c5ca8e7db2807569f8d69a6194839ce4efea39fe5ae84f16b9abe9c01c240963bf1f7987bd36e848618d4bcf5a442dcab85a0b904829bab01c18b00414af28d6f4e762f5882f126ac68ffc4f5afe5ffb5980c7eecbf6a33e85e4bb3d68cec13d0c694281613e2882124f6d69ce424c0da1f140c3a9a1e74ec59b88e9f526984a0e04f104766e3e65effc69df2dcca26658aba0f63902edb77c92f88b76df53ac2a8001a1034b9e13747b02aaafa078700050d37298ee0c247e38eea3c44f40c6bd1e59901bb6c40194ae226e2bc0e18996819d02d9fc1c59199a179a508885c7c94f2e24c36315533d88684011e40fe350cca82b0e76593dc503d02097e8a0d8e18d54b6aca25b139471d6e1bad4a5644cfab02b64f5e2f436c35db2fbfa68d0b5fcb94fcc06f3ce8b555d3cd3f263f766d268511fc1401836df1c0b0a2d7854239e26dbbc924c993f3b3192f4dd6772b185fca31855d861dc37f5a3152585b43ac4471bf7adbbf8cf3f0d6d31a42008967c9446a9d86ab84fccfcc78d0a40a5ff93f8181709d4687ad98ca7f831551ae306eaa282a5a9cbbc9f2a592bbdd7afd8e12347ae5bc8c25f8d05cecef9f55a26b03cd9843f52d9f6bd4c54589261c5156b01350c39f605f3229ebcd7099d3bfc63faad3c75cd9e44605ca4118c2909aaee8952bf172f9c39d070fa4bf7a24d5061bacaec7422b36b6749e15f98e0f17f733ac3284a0ca710427557d4a4ea119fa565999bd74293a528f4b9f0ef89f25aad706cbb690b8b945b8b2c17fb5c91f70828b01a0e4675fbfe9b0b4fc0e6707d08f997e66867b0d6e190ad61c83d20066faa4d05d60794f0c8a09376de80b3834846eb1c29a1b30f0742c1f5c5232909e61fa98b7751b6c8847720ec1e2143697539e1b541608f20e1438b7111db5bf0546d333638b53932439af72e62b25359a8b535b675ca34cc30653bac81f360128891dadfaafd4add406ed2ba9a859814bf20c0d49b4b1489e0d002734a6804cb086d294b9ed561f6774fe0b5a4e9c83b00b618d6236c5e8608d87b0ef0a8bf4343671583c292aa9eff5ff66818f6d31da6b1e322409c41807061d0e8f5e81cd27240347562b7acba17af4b7cfd9e0762f5e126d045388f989f57b499e27350e57790ce7ce5d3774fae5d68939e3480cfcd2f0ea02ef5c9f2d9250e9600610137d7fb4eab2aa2624953992d5731fd7ab3b6d531b5a7b39cd90e9cd49626b2a7a9dbef1f7810f1b6b7edd002b4862c304dec672863810ee01fd99a9b594e7bc26c8bd227534685cc7e20652f7da4914f93e444f1f32e2737908435d09c3e25295951d89c11d122914fc1ec85011d0b174c6bd573feeb34e202d331f174d6e5625f704f906c0fa80c5a19b755e0cc611dce8cf866e32d11b3a94823e25187d5dc87ff1bb84e82c213a4b48f4018093099f73cafacfe6d9d7a0196cf6c706f7bdea40c17a2054bd66214363873a5624cd279aaa586ef96686757dc41b999d1bd6b7ffbfad412d37f16777c4386e7f87e78898b0fa6aa8cd4437a7e2bd21d6ea300cb950bd81c45e9486ca46a1d5c7ce80c0f3731065a406f19e619239e7821d627724f26f0d415342e910f0476f78c4c8d999795fe062925eb7bd794ef80a5664be29a0d663c7c096fb360285f29dbe7acd9592d4877edd55ca94b02476da0f5c8ce31c2b982c11e1e38f2128d5964c07b296a85aa56255292574d35579fe7bf7df53e410554e7e5e42a706e5b46353f372b94015aab51c587b2251b51043c86b6fadcaa6ae4e45a104c87c5eb7be8bc1cf7b1bde45aff29a58aa18e79ad11d0281a9e5c312de4d50506f2d9ea81f2cc6520524b7cd2106d24ba292b2f42be3e65b76cea6bf6827746b6771ff0e0a551276b8be324fa6fb263e151fb74b8269db1fba28416f3f6e10533d34d684d9ed736c84a800f87658f6d2958084b6babebaf10764b35503f36fcadcc2fe7ed3d089dac41d7c93744026891be0e955cd877ff16f29e85362f45d4a3a6a63da1cc1a6471c3564cb4b2d307152b4995664f71108fd55f5bebe5abfb6e8300d3a68faf89b5f80d437edd8cfa4b7645bf3ca0089cf20011fb830fe47589bfec143e55fab4c11160a02e6bdf672ae76663e308a82fb3bf64f4e1f45c8fa34795a175292ce2d351cb4afd9ef686e5bcb0e94bbe4ac84602650e2a6ad8a55126713fc75d159b7ebedb91725acfb48c149560cde262d84fab1e3e06401a60fb2cff244cae9e0616c86b564ef839355753cfa8b257a0638bd0d96520ca11cba09e4d629c37cc931b218b3d3e9c56231358cf90133cbd62d424653be3e3c0c3311eb1b5be8c7e3c98f67584adc49722a4961316506b4f1a0f223b5be3b189a68f204d6f1c6c386d81be643ccf180b177a583cdda11ebc6e8f4d1e4e0a7381cd1c8d6e4f1d02aaa676b74f679b39b06fef265cc06a77494bf0bb3a254d92c7f364499d1d2c6c1b010b5431c75cb13b75ab93cf8e440f981806af1a4d76d26248220ec310269305fb832b8aed783c1a527323c4265e6f0c5f8524086911bc01e3808ec813da3a91eeca144d85a20c21e186414b1da1c5da18ef5925a844736836b43eca192d3378e8a32df1c39dbaf58ac9cc2a445912fd189ccc2b9e076bc9da17e5ea9071246329dbddd24fff36eed077cc82ba5b13a790553c492b8e589af880c7edb154d60059b213d1a565f96aa03af6eb39854d01fe31a8c4b063f7f74391c21803611d301f1411036e140c7f7133374df8118f5dee8555ba9d52ba90db3f6c705d51c9c6c052e531517bc92c44d23413834e461c7becd1ca4ca77aa16e68bdb64ffa1f1782e4bd52c3ade1884d7afd5de711072269a325dc60d451cda034a507734cc9dd25db438a2a774c30017b64b61f12b39c5b506049d8c469b02ac38ce1f269a2a8c3101959a4b57b588d633298d688c116605c4cd44e311575d27329992bc8151a1409117e84a15936035f3adf93db2524ebc13febedb85065ef2dc7fc020f60755e95541f5867e085a6b3969cbe7d94356f91848360222684c832214864cf72b924179ee550c9a120da4b99bb86785f2ffe1beaa55a68a19d1abdf8fa85bb832030c5639c536ee89ff073a7a9e662e144c59ec095520eccd99c9413504e3083bdfdbc0d8a24282c370772cab3516c5a50994d3184ff4fc2d09db3e6dadc3ae12afd246e75c79c9d882d35758354871d9f76c6e0e425110c2ac7aeb3033de844fc052abdeedd5830e6b2380f086c9a682ff2dbd88e84557cddfa4ad75a4b1497befb4f569a47473b9d4917aeeefeea741281e22dcc8346a409c8ee43913ec4fd02652538ddc14a236734a1c5e86913d0599029e27b7f06a7e5a2ae14482d8e83391a78b077097bc070d5822c88489ec099d51f05c2fda459ec8e66954cf5ae340431147b591f86f4d39b0bb4a4988f813baa62d3c655b5d87cbee55f3d99ca171554fd00b9665936d74d6ae7b5c27d0f52489fd240351c3d4afd74e64a587a5aa8375e30c4bae2f99c5b256556e10f028425f7615b8414672975265fdb2e1459ad82f83c5eb9179a01ced06c85d496f637ba90b6d9fdf180ae9ad583508a1561254650ce609eda18fc4a97c48f478b7f526666e37081621cd9b15d31f7191f86c3240eea85c0761e128ddf3e7dfb88e52125f6e30de071d93f45992c93af4d82e65827c09cf0cf52f475c07f7297c13644b0435c36aec209c2097446737e73b41a0813d804639e3e43b9653759a5eab522e0ad5567825a63d7f1d6c958c64de476f08920e0996eed1818942aa70135c0f43af54d13ff34709e872a92a88f74dca95dd21e90af4ddc49e418627e93e5cf6c3a0c123f6db21c608b2525053b27ff6c72f77c64de4ca9c2ddb35de499c33697e8a297f67b58667d89d781f5c21bf092ec125e38bed5241e61264d951ed049489bc1ca53b185b2903d814511a0c481797ced2f196742d6fe430de8e07a1c6d2e8b5b2fad1d08d212d53666e207a4b435d6f497dc6c0dd341d876e4da9b5018df00fcd8c6b3c43efd9945ea01eb0a219113489f9bca53b8a83c8d20b8f333f60071ad0e0775b371fe0c3e44c6db41b2d12db7909935d411de350d169eac74278c8dc0c8d95838523722e180b857aa349465fd0298d13b05aab20534923ec97c82c8d469ffd0786e13fc4579a37e63ceb90a788f2ee6356469e3463afcc6a8130e8a823075b21dc42c57ddc6e1871ddb037f546eaeec743ac2a622ce5392b196f80ce7d385d148e3925f3fd81b3d4ac42bc569f32cbbb11578d7dda02bd953e08a20b1f38fe4637eff814423ce273f283907702101258646c75430819aa684fd241b5b1370d1e1d19089cccd920833d99999d12e5df5da0006f9d282821c8ff31fe09b0605a523ba01dfdc5ad304a488b7a17c50f717c2572dce1df98f614c187ab0486f415104f0703ab1b747631fa6cdcf12ac8fa199fd30b52d14855696e4fef03cd1e6d6b94ddcc8509a8150b3a3e02a71b48c52995cfc81bb6639e0d131a0ff1b2e3cd7934fc94d8934900f965ac01830f1dbc1e49d0a2c506eaa010e029890c48a28b03d3e0c79f0c6a9746258237e4a5230666ecf0f78a60ad712db417b5a38c4519dd7a008f9300587948e2d3cd7af8e61d0f9eb651139afcde945e2802f6da1bc99b89c0fc659acd959715354ffe30c7f5eea0b1d29b858b3f13185399b3b7834671cd1c4d731e7817a788a345155eadaba82e826ec665e153bd7423411bfb249f4cb0a65a70cc172e559e016ed05cb0d608e2075942c92bf33658d640e1f2bc33c8ad6f1c7d3344555ce9b2bc9c22f7ab90c0dc58dec3c76a464d0e04f870506f0395da36d96f85b0d8dddc6747646ad04c7db71dbcdaeb48b4dced233f00c5e32e1305866df750dd8d66e2eb905321af33a876b44657d1f9fe14a14ef17e73623286e9f77d20019d4e63a34c62151a27131e854fa83b86337d0a4a8a522974c3100656373d1a4d9f868725b8652968cb54754de64ac57e81986665eeba107e20eda6a0818c26d318d60bec942166498c2edf3b134fd41e4685c9d6bab30650d00db046789877f638a813bdc2fdc19600d568dddeabe5e95f4de70d26988cb35d4a98de385240032d695c388b1d6f1eee382667dd4a64fd36a930d0e3d9b26f92d1645c2c117219f5e26f296bc937e4f19f6c9c5a9d12ef7f451d01b4c9efc1bff1920b738edd00b1dbb66dcd844e5c1a280756eab1534abb8141194758ab3a824e6362d0ac52185eb9e4a24e3aa93aa2c1c645e8d45b5a03ae96f38dccc5a614ab596f300d41ba85797274f4cd7215c59d07e7b8ee31bb581a389c65f72f73ac3d50408d7c902ff0a48a6dbb6fe844a80a62e111d6ae64f53e11b31b3656e856c200c5eaadca048899e8331204ba5028dbe3fbe06cf1f98be6ed4d4e6890c92ea73e7f06e1d13aca513c47f3721501b8e83a070be3ed9771a2f87100602f427f8d4de26651e90e548aba4ee4186c08e0bd018064e1eb63803e163d19ac418d62bde0a28d3154f3ac99b5813d8ce3afa466cc3e2a9fafb05755772b29106667ae51ac00bf198bc0629d05ba26da770577683a7ce46e14d95daea00a303b59d08de9939347b3521265af5f39d90ee34f09507eb9ca739a6192c4ad8cc83d4f286045bc5078013b440408906a43a4a1ba92b1c8093dd8a0eed564afd5da49365a69ee238e67b36f2b09c11e4bbb540a1a19cca3c33a6c838d555e36cb8dfb30766c6230afc0c57786999321006d9746e280fe00f2ceca570a52e544ef081e42e74c229c34975c75ac86c9ba05a4db4d4ba28500c1f5632e27e1efbbae68e44dc31de0b31ea2c5efba95afb874293a8de1310ccffc0d46e66f37a517b8c853ebb97b20d1e02188da58cda902b8423ad9db286652598eca35e14b0435ead6225c831a1fe52015f517b5052804819362f663a75af130bb5c26402830538235b0d572331bf4a5f25d259182f076199b687f3cdae32797113d0e2c83988327c18d8c0b70d0101630359165d7c2b5fb434e9c0a8b58dc73576c1595d12abde91425004b87bb1a91abbba81856438bc9694f891afcc7813784dd4a0b731f51972e25dc9e6cd41ec8c70ad9bc39690c507efb7c693668bf341d2929a5e445fd0f3e21e63afb83ba227a3b73c1c1edfd38551bc1a92419cd990b4fcacff732d8d793726aa0b7d223c4ab3bacbb2353b9140b04c18294e52e5e212e448759a3cd74640d9c4152eaff7cfbacd820d2c9bb525101963924612baada496cef2b12b02cc6bf86b3d10f28c3e39b2b12a8cc9f46673f812b12f0014e36cd1e52b29f0c3599c4c4ca00796497b1332c059d100a77115395118e4f141d880af098d2ff8961dbb769ed49b89fae34dc4080b30ab741db60934715f165c413582c52a126118e754aa9517e37da17ee0717d990ee226560e8df88823449823463aa147bfca285c0f65999dce9c8efac03dc328942b135e7d20ec868a6631a4670ce9ae1128be800ab01ca34fd1eb12b6357cc191746b55e40996313e23e482fe4d788453d3ad2007ce84c5c68fd8528de85d0138546ca8978e84d625efcdd1d3e03aee2e168929a691cc0e75f5688bea5ca1f087eb664be42449c1e39105888181f53cebc06825f4f1c13231368e10dcd8df68598da23cba9bb2d035ec8f8126c2617b23c83da5aee238736edc1073416fa3c2d19abc0fbed4479b6d17db528d9713538ad500647a0b479505bc46c79c6df46640cf01bfc6ad9a2ed6569a561a9bb2f96e4fc3e084d44a035668eddf37772f3b40a41845ec583bb9f4b8256edf64a241e5952d7e562d92ab2a19d09da3d63eb66a82655f4fc3e6b97298d52ffd1c36db26f72a988338550318f744e2661096feac0ea2208817bab5d0821134a7e9643bada8516ac349ef538a7f7dd70bc127b7fc11f65fdb5a8a37e529264cc9f8132693f32114520ac981d2bba807ef210b6d209c1dbaa461a763e6257b794a9296d7402ac7566c88a5fb3d72a5116c8b52c98659616d71e6bfc4ffb1f1e88221210386dab0cca14adf94241f3fa3cfac7f4a5b4763f493084e0f863bb3d543e4bdbe1a08dff4a54c37fc6105b8441748da549b047acf29c47f0280c5f76afb2cad37e042024d220322ad66ed4e47c09de81c60041102b40ca48c86854f30d7c73074458c594051a8c6ea88f29e26d755158a21724018b38062af60e2dc4542f2a225c51111f385f4fbaf08d9eb2134bd9301ed6489c401fcb7d34a318a48d467ece901266c9f07ee1ccbeb89be2e0cbe64298ab68ff8addbd1be3ec9d104a0c3f1baec7e2c01e82d281f14d532a1cedd8642a9000dee7bd01898d60ddc6451920c3a0b99ad119b48a787f68232b234f8d031522e032c7ebbde3281aad287fd47d722840ad3b55583a937a6580724cd8e12f214556c52e38b83d6bf3c17de60ffd4349647a98ae59f34ebb491384e4d483bfcbf77cf197c4748dc22587f4432fb2b0bd0fcd617425d686b56fcc8e75a0deb9020dcc6ebad8e0b99db910522adc32f876157015f0651051f5cd6df2bd090eb632cba50df69dbb479554bb5611792b4710575e5b83670040fb52bba8cd648dd7a9b60e12d821bb4800970f5b4951aec9f06f5e62f9a6e116be75b273645535e5aada2f5764383612cf6b858ffeff76f9dc8949bddb04f03ba2664bbe81d254a583563d4846562477584be7e5cb76c3a01400dd79a7daac11e7c016bcd2a902236f8859679684d83011b68a37c721aca23121e1733e014e673ed11b36fb6b033586ff62108315a1ad1a5df0fbc06dff515cc1179b6ca882644ac1c2bba4462701c336449b9110c5ce6403722123d7591a5a8a81748764204b14a2902be15eae014e46e90e6f1bc654831e44cb022d8bd31315185dac0120922dbf1e048e4d4312f1584c40f2d89be323acbe44a7e77e7e74be7eeba11a389e293fb4958529e8b74ae4d30932fc6f7090891f01147b5afe10931c37503a0f3c436d40ccc847a82b849382a2b150ae65e8985f05dbf470aad7d26780ceafb9233cff97b0b86d25349aec1144a583de887014663015a068ed4b2b33effee19b703b7c7fa892e37e1430ba1feeb84952537876cc2726f82d8bbf8747b7dd8d6547e1f1e064dbbfd97dc97bc007b3163a4aa823907a0b8f93fd014f08c07b266a30e17a41e7fad881d7b9a2b4d8ffadb2ec792329710b99ffffb4912d7d0180ebcc0c48b77e016da9d3f1fc28f199c7974bb5e09350c4f646d939670d74c80c88dd275108b7180a023d7e6d7e15c13453480729849d6e2703738b2edd2702dcd843af81e4e4885bec529e6f8ed1ec17cdb945496677541453a5c62b3ac68ad5452966ba13d26f346a9d7dd6f8774cf5b5d38ea15711a571e93d8dd5fee37126d03b470c62294995f3a6ab2bbf756ad9e372c15ae182a6bffb18a01d3ba99e69fa1d92651741c6abcb6dbe2c0494fd75c7c28ced80eb778f254ee99eb3080f1d6c3ce12908da0e4109098498e1f1d0a12f4906c76b1c2fef604cbe74c89f01b7897c762d65963e40809433bcbbbaa2d96cda4ace5d6028fbd53f5c04a4ec47d7153d72e1990044b66032780be50e330bc8e1214ab537b9de8d96976a1d892820a489c415973ed912d47569fba82ebb09f493c6a547f8ac130f438678dc9c865e9f800482d19be985f3bd788a172164b6292167037d51ea26475942a85457fa1aca6a4e09e52ef6974f6112749b507b7c9e278b743660737f8206ab776d5fcbc2d0b4941365f98e9b2064f951016b9b5c9e1a7ffe93939859e812f21cbfce14e9efd8064365b010a5171bfee517cf81e62d44044bf5b040e1f14d254357ad0b57710272b9a6b58daaf707149e1804293b308277be773570a02d380ba077c64bd0323b608e3fcd2cdf7abe424cfaee3a5d24dbed01596b3cd2cf1e48dffa22091aa0db66bd9df30f793c815fc39ec5fc90991b8efd17b9d78ff82b1c6361fcfeee508d21bd571aaceb8451a6abbc1120aa738edacbad329b91767cdf79872331b8cb462aaa3c211f537372d7bf9624bdaba01416ce402bd1afde58a419ae5f469cff41fc9c6b37070a3af33ad40b943ce02b8bff2adc3939b6dce2092ccc2df1d8c3c9f5909d1a974b9dcefebc980960cf71c4c513ba7756740534d0496367c132977f458d1f20710242cd0a799a2f5a9771792ba34290d19d0a26e8d14ef1c952c0e0433cee1b3166492df93bdaedca1a71e75154a0d1cea9332ce050553173ef477c7cff6683956e7616399eea3fabd54a92c2da8dcbfdc7dd33f2a5f401fbfeed5cc484b993d1f88d99bd68aab22828caed0a1d341eced35b20e14afcba4a5beda95ccde52c10d1fd2c9e6de72fad0e88b68995e9f5ed1e30058d123f0169e5cfd7eb14f7d11b9c36a0427d14227f9d8244f92520607c845840f281b51a77a3a179ac0735b6b111ceb4c9951e16d3e74382d1291de1a3f246e372360e4ad1f546b3e4e03736fcde683a41c874edf8fce01b0d8a78781158bea9490a7ea3c11013aaffa08415a1c3879e5362880c6fbc1a0b3c3538ce5f3b4bafc9b6536f9fcff476369f33f89cc5c7193ecef070160f679cf04c80ef39b894513fbefee4e03e7d3fb00b62e3424b885a04a1bdac3ad44c8d412fc1abbfc15898c3c6f0802bb64202417373280080c7496c9a2596559d298af21a18fe683db2c497ee40b4f8f9a2a0efa66fa55942c362fb49fe850d20a99338db68c8bffcd0ddacaaced261696ba578f29072b76d5db5fed88a1ac865115f554a169ccedbca3ef05f35009473461ee8ff693af27fd1c49dada9d93097ba18ac412ec0343cf9dd928633efbef292e0b11f5bfa13e2cd2b43db01521a8bd96acca05b818ab53185bc0269b2656a6eed8fbb4e2023ab2415cabcf6fdb47daf1be9ca9cca64e82139d010d619c3d5d8128ef40532cc400307c089e63a5831c3fe139e7cca77cc60279315cf1b73339637b565b461369b708212c6dfeb4d8788fdd1e82f0393663261697024c92b04a0968212dd695e6c848bede60e409588fc47b72e9cbb4fe826e89473d42dd79df599dc285da37bd5a3a96b377a4a4a2acc0ed6c58d404a46d3640abeba4be457cf197fcf7be6a1dd4b8c93053ed3da45d194527d22b831404221a29d83a313ccef9045c4d29aee9174322c90e9ed1e7b816e2ee093b466f1b712e4d0cf830003ed8c45062f17cd5e0d951c5548b2d0f74f65a2482d1ce37c36d86cef2ebc1b0f1192ae8bcb5a89dea995b0d1dec9d4538f9fbf096af22ad0e31b6a7fad5aaabfb2569e3f12ad7e0dee00445fb4ed8ddbe5b5fde0489ca43cf6c1186d0ea3e7e9e7be04973ab8bf7f1e203faabed77459bc914e3b39f851bd5cf4bfd5f3c2c79e412ed950f57191a12b184af4710527f3dd5af3796886890d9a86dec02ba7b76fa86cf215ac7064595d0d617e86292cb44248835f9b08349d0744120bc6a1f098f59e0d0873601a0b1c30776c3d941a44067a340a791b4b4a05bb9d0dae2fd0bdcfb7829b7960e498d88b5a66ae27b93b3aa9de43cff729e16b8147117696b0dc9cd0c260a1214726e1c038fc5c2529988d34a8f0478ae001684d03f9592adf9a0da412064196f9e3a5e2ef498fe5614891a37d6f6b69b2645246417b79755380ef27271b30425d0095d05ecce1ab3a02baaa8d205f81f9ea140553d7fc031c8e19f0d81b5c9505c32263c1b1bac7d96211459f60ae0cf9271dc17bb2ff694ec84d31b2bf8d78e6ed5401f61b3fc21afe3227a1ebb9f0001eaa01f07de40ae36c4dfb156a84621273ec74646b87a6a4b57a589768ebcede9f2f3f9e3ddb1f79df563ec87f4145323e5ed43764873882385ec03da3748365c6fa32ea2edecb401788f1a4f18668a78ce22a41aeed454552e83949e0bf69b65932aabf9d6c0d28da329c7362aa1d900214e49906dd62b2752f6141de7a50004078f10485aba30dc89911cf8b7509dd05cdeaed1f5259ce8998f0c56d6dca4ff81d94d6e0052d41d40a951a2c8ab8503d529aec28dd9d626ac99cd9a689063500a8bd56619fc027dee020235001da7fa249608308ba4ea57df47d16e8e61ff536058c15279000820b0b742c584f3b78c82462cc54b0e452d8be84f7ab0ceddb7755b2af5319d98053be2e5dcad895e63f4f7b832ae1b793eda28c15a3323c62e787d8c16e9fdae77f832d3f3a23e449ceba7300e72d1c40c38ea400cf6005dbc0c518731b1d78bcf39f61df8e29e22744a1aca2b20e125efa597963f5046ac8a676abeaa39dac73d98983aa87cc93dd430d24d9b1a5d13c38491069372195cddb55d358a1a7792ec1ef6da28531eae50bdcc032beda26ec10e5e69befb587d692908140cb5b743f8832bf14a1fdb958cf12453fc42bc6b1d454c920bde7938cbcb66c71ec1f098ff9754c2a6dad70ef17f704e22f6576007ea33c1443450717d2898b12799c6bdfddf11aed47e8aed61dc2105500525519121be0d2ef9691cb43030e9f5a5e2e8d28ffaa0dc81e605742367e2612c2d184be56b985aaf66d52148c381cc9d924d89879347e1e2754db6190ad42d5a0d909fbbe85a8d78b92fd09a521eccb2a1d22c437e4983f4dc269841517b6780e5f15faa9f4d77006b0e5c85b24db51309e4b49bf101371a505219be14c2ffc1e0d6a50becf97a552a5ef6b921e7f0dd5d15aa9448f2e2b895dfe7ac6d4e7bf889d8c75e43326c74e06c643f8a5b9e2cf01e3e00f9aef421dea00eac0fea0020b3388631dfa1ca2080adc08dbe0e22a7309fbc77ecd07e72538432845a2b1e3435f47798f63b645c3bfc544be85c55f11689db5603ad3ec1adb353fa7a6dc4d8c06d0ed7c3e07a7d3e9f0f83c7010d9b2231b7f15cccedcbbd01a1cfeb378e7d4170135a2d0b6e6c12f879a6b5a54eeef26d3aeb9aea040d3b4519772981ca7aca9f89ea2b19d1552e14a3460dadd1b02ee6263706f196c8d7c15bce984c1a9ec1942e698e4244d50085d04ff1e6ca2a3c05fbe205c5546fd86ed63e1d7726f320913d99362e47dacab42829670c2030975b717088336f62d739d04976a51af1c9a70d8ab9d8c21500f6d008548520d1b2e4d31a0be6ba22a1533543363d0c6787585269eb5d0fb4bdd04696c46e8b9f189d5149eefebd9d384f1f0308063f8a0aef8ec009414dd1ae6c6f4789c66c9ce5230edb1732290f71c39801d27f953e316108516b722507aaa41c0b64d2262c0cd5ea4ee8ff700bd1918e42215b1b8e9d779745381db6e2bea164e19439f32db4ef9d429a5200b991d6eabf42318d59ba03153d7a2a79272bc89f73abed7542b83fec121981acf9f6385532ce67f8c584ef75822d4dd442e4e6fcc5623862e9d4a35a8e66fb3f0eac540477a10a035317ff62b283db541cc5357f6e09a0f088d0999db3466a41c45473c2bc3a97a3a607043ab6ef75af6d2ff57bfe6864a70b1f4dae07f0df93f585a2bc425bfc26389cb229ea0a5169a256d6cde3493b0a48861e12916a679240612d035168c8194db000123e6cbe691b8a60f61fbade93030ff0da6c1a19c10bfe4cebf41e1e2e4adbdd0b9469f2df46c772c17e19a82616af2cdea2cf92b2b9c815244e8887cb74a5d241f5ea42c0d703e0064df87772284302f52900a8a4cbfb5a5ff7d4732baac1cac3ee66a98053136fd9405629a86182f2584a4c4139e345998ec504432ea23db7b3b66cec0019e557c339df27c148cbf298b0036a09551d885cd18e4e2b3bb2a452806ff5f6f71b5a8e657a5d6ab6facd1a73267a36039d2b709d4bf88b5e2ed17955bae3931157efc2f3c731f306326292b9e19c405c836c262a3b0fb796f2e9b3d1fa35e6ed711668926a355f8815402548914cb18f65964e4e914baadb99310c69e1ac7cb0053e90be305a2ab1992472bd78e9a9091e58cbcc1c12483c8636ada6efcf992e1652fec326d95a35deafadfb33d7a75e3e3659a1ae62a137c6e8828f77cdc82ae6ebbdaa660623a38f31762b08c4b275706cca8d5623f527ecd3eb1793e66e408c10b55bdc056e02794301e4fe549e8b68c26fdc26af0ac32d32b449828ac388688ff117270bb5b3c1d83d2b72a7e781dc490b62031e9c95111b85dec765e8cd9a5fc97527052647abe4cad002d8843b2887f90fdd4d77238bae438218c0076555b312d2aa1dbb60c20e1775deeacabe23f0f43bbbf9d7c1497ef5bfdd2a0299641250665ffe9bded3c5051ce458d5ce01157c7c356b262b5d3603ef6a09227940867c5281c0ce76c57ed8023ee01f829a53640ba503662b87e82afd2fc6bb4f52cb07f6b471e96188cfdae58ce928e16b2388b7401fdc63c0711ecdaa19e1a304472529238cf04f7a3f394705d78408945ac1a00d9df109e4a31cc01d17f7e4f9ab15fe35c47810526088d89c8770c97d54371f4fd125953aab833b24fc5c40176a186beb01e3d121da944d10a1c1a463daa974f0bc5f55da9d5f0563fe1835b6cd80238377f696b2b98aea84c34438cfd1d7c0df03a5a415c3a1d51969b3e5fbd693a227fb1ab3e4689003df9949a7fa2e11c8acb62a4cf30cb6262943a910b8be0ab152aea3e6aad1fe22b1e35da39444036112a10a9e81c4fe26560679bfd9769012b77f9e1a2193c62698674079873090a10b13d1f54090a57471d2cea82569b478624086ce109f95a370bd1268bb3240ff9072914cccda30072a491dcdc97a46fde78c69dd0e98c0a96479a420c62500897efd6096da890d7a85bb92200db021553f4dbe92c986aa4b710e8fbbf70d3071703c29fc6bac41fc5d800359d0651ce628f82f51b8357cf1ed68eac0de431a00fffe8a6e8bd58342c95b3e6337ec03f756b6d47249d9a75cb283de89f2ba189454dc2a1b595d41b7e2d19fa548a68fc02fa8d634aef637f1fc04bc682c7209da37d7174bbca6ec62b001a2623dfbb12f4d826551723140e3a1b5a028b0ef4582cc4a02dc83971bae506f674f90710cb68de4a3c1f095a61c774d3eced7306838baab0a45860a10268b32f847454b61092977e0ce3eff611d12fa659555378bd3a7f8822fb21ed8d6859057c1c382de29c5842a878880c80ef4020bc816f48d48a717969a42c8592f72fdc8cf9dfa69cbc258754e7678d386bee062b28a42a5a873c8e4709b5771b4d338ea6a7be6299ba9817895813bd9fbd2937db84a0cb55a93d25657d1069700c17b4d338c261bf324a1a9709c4a941f032aea742dcbaea5f54e62b3acdbb00b41ddcbf41da8fb7358b06c81f6b0a58545164cbb8a9db5462f8f5701c3bc8c100d7f41f23a266e6027318de9ba923bd399bec45350d87c72aa62307872552cd14ae0b35f4473884e074123d901e5c52476b15d5933f151069f93444238622c92c59ba0b628b38140e82ff04252a46a40f5a12c410954eaf4cb58bbb4d88fd4eaebfcb5134562183a499cc18f55b8cc7e04b012de83edd84ddfd71827ce66ae913bccd186a562c81fa758f367035511a512447440ca9d767de8b4061fd29c29e52e8fde728dd9ba631cac7eeef7f4e49fb7052c3a45c5cb9be62f5bc699f937a72706784084789442ece9d4691136e2cb0d03024af215c2f0f4409bb79f5c32de7ca3a88473b304cdb4510bef0097087ce9e730a0bf5e5ebaf788eed5074925ee1c1a8a9f854d1a3b4827fa7ce707b61f840a44feeb8cf0ebd8c7e95f4ebbd0b29ae83006b672b30604e5255d6491c9794336cd20c2095a7effbe4a31fd7e0fdc0366db32e3756c9912232520e6bffe8889794933372376f3ae6c211ce9272dab8f0023ac31a7b2ccc02eda2cc8c4778ed93724689a15eb8c680544674ceccfa7c440ae9a17c6c6c24491ca0bd5e6d2141a8a6721a9e98ab5bf811200a98aec79d54ce594eb42f0f8fd69fa46b76032414e6e50f08d5ec5cb230417f610548dc4c8ba5afe71aced6c31fc24b403afc32bb8194ed9342129001a1f98e841aa68033ed4825746c7a267dc6012e962af656810de52093cfc158ec7da90f83e4f5fa9dd44a9e718c5e714abe216bd12613679c5434db1010ccda19833ff0727eaaad086391218a1b48a5e9e3bc470689c0c824d8c30ae07879c59bcf679c86e44eb082d9a6364f31fcd6fc307e12173757d78146a72f7c46745b84bcddc2fdb301348c8dc421a0938601842f159bd4e5d2887e5ec33cdc607ff537a60618605736d9ac2e7482be94b47e1f3f0de063e1b9dbe22fd7995539abf6dbcb500eba49b40be8a0e43f32d649366799a5b676c4fec95c51d3c880c465c1f0d98e54d47bf0b058231615bd360d234e10c9242c982735759a28a74dcc5fd17c6dd5992229174ed819dc9b1d062c20989cb0297fda956b03be9e56307571a06532b21f6263cba56dbb472eb4cb52ddee4299482d60461a43bf862bf0cd1aa80c4473ec101ad89c6b574a4dc26011b424082076281d1ac9f155b86e248a400430611d2d51060da6ff54d7eb32236476e749a9d35c0598d2fe2f0bc69ab3fd89f1ed087dedcec116fa8e2df3530acdf96d8caa77ffb4862507688b818a2e202ccaa459d81902c54473dfe2b2c29699dd51a78a83d0bf9d31ee5ca8b0c03c8818d949f11290baac8a7b3cb9f91f4c2908639b4c650f9b381272f4ac45228744d46857b26aaa82570213ef176f6f57243b79b01d32d526a15242329b61cad6d6fd26fc8a403b9937990a19e73311bc8b21f3a1aa0007e3282c61387469fcca21baf7795845708103a5a7da3fbe4dd599935f3f243e5ab95c584acafde103890fe4abc57062d4839156eff2eb823b039a1767272bd0180e2e914588ba4e88aa33118b7a9b40e0331f60afd3d050955bd8a9e544e21301b4b0980063b747883081a8d337c2dd76ec446dab4db9ec80107a34b7e825e679541a80b991451675c125ddb0c1a76e51ea27cedfa3173fc3a9e758e026e6279482a492ee443017f197d00b85789ccdd4ac161936882f02768b617931c8e2cc3f8dbb6417aea60baf3abaa983fbb354fcb35e7b79bcc394034b5c488ec6ffe6a2be8cfab5d59065b60679b0c1d6aeed7b25fe9fa90bf983ee9623c40be60c3b0015fa41acd2a0987925f35cf79d795c4cc1bd5a9a6c0f1ba9886f9da486c9f45f9a0b00d1722f61188efd6eda26cb814c9f2dbf0d41522495baf2c4a372866274b7f8a91fd0a1f0536544af14045e07a6bf4571f74a7f06616d974168288391b2d20811daeecfed400f4e3a7b0818c7126b67f6d012b92c2bdb08cbdff0e9c5aafcae9b777abd752208725983120c400217329c3bd091a3ff851ee00328e8e6bb7f78f810790a200b67625acde0bee0c0cf0c9398b21c2d8bbf72ce0d22596664bc19ddab60b6a16d58f6b24acb6be02a5a4a037272a4da3f4dc8bd7565e69dcbdd0408d9a5d88d8ae711a6f2f880bf5326ccce1887aa0f128a9fc533d42fb4403a092445c0381a7ee00e4c96b19346adccf52bf641afb9ab8217a2e0fd0744ea6708039c887aebeaae20afb59994b21b46f0a315ada27638dc36a20bc4c702bdd0b86c14340c2c4e44fce1d64d7669545adc8dc738ccd51ed88308b5b79c3b5ca31ae6ce3409dce608c2a66fefef83287b88ff1696464103df25364627aea41307632adfc08548953b7dff38351b3c35502c52cb823a1583316bc13e999e7d87eb193e036fda6f9f0e4662c49edd3df2cfff63b1da4fda98df2a8b8281a5b074d33324cac4c2118db9c4a0724de969c34a94dbd3d796ce18d718d04ff24260f8d13197577b6ae0f27eb5415ec804952a048efe88511541dce55e17edf79b089f7c2ac33c78450ca31b42782a6617659ccf7a3246736ff6e36d86a19bbcba27fcf02b4d429d25210c13d79944071fc2feedb89a829de7cdda0b8e4a0cbaa52285ef4ef8f3accc4a820365107688bef1250e1981a1d36e5f53eb5aa28eae403e45743947e81096c0c61739d23a5ccac8509567f620d0019293c6d1eb7559d91019401e6e956559c818f1917ee114fd5e7186898323d24155e26569d86e335c0a0c30797e5092c4783a2b73cc95ee1d8928d3757696384fe986c4ce0595916b2c06b44036ba5e7a7e8aa085ccbd1f56d1ff9f87576a67c600bd539167ad278709d1cbd9a43ce98d7c22d477f20162b1a6adb07b2ed3a91b70c221062df618a91bb0362f8ec02d86a4f569a6ceb4994269b824eda8a287d2129140c20d4988479592c7a2b52b8ea9f1f89f98734b0b20c0a47fae41162aaf97a594c5a54a7aecbc62539c241ccb9862b7e3cbb8fd7a409f21b241942d44baae1649fd27c57fcbc58a19dc7320d68740938c2c3db50fe716b7e5030d2498d87423c2ae20bc8a17165f5322fce347362217ea14e9841196961efab326a83752b8c3d6c5d9cfaa2fe8ae4704edf44191e28862084185b2358441cf9bd67e4c3c4d58398b3f85b910d43de879785587662101ea1c9209aaee9a67b31ee17c929fa27f431332bac81ca982aa998b0f0bdb7dfcb89868e10e068346be7815f00e711c7c1ad485179f6b399a4373abb5b73784e2c4e17916de3f982e4c1cc80e75fb2c73ac7d7f0c62c10bfa03a13eba7da162a24690f50b530ea57f1c2f21fbb0fbb6259d13fe59c040e94c55a458e9e8fe2912668400c201e246d72d0918df2074d2574efc58d70ab82a10e24ddf45eaaaef7ac6d46250377bce9b00b219774ba573a614d9fc5f2fde47d4bff102718687bd4a48211817fb9213292fcecbc58132531e96f494a6f6ca8e7c93c8e94e2ee60c1b835b6d77348aed21d125670d7ed9c33d7eee84eb5c68775be1d4ac03c9bfd0207b30b28d38eac19d7f99ab0b0fd75250b0f0b88764182bbf1c95b3eeb9ff17a4fd2db20f20ee56c5cb03ef07b0c936906251f920b10d642915d806805b68e2461cef9d350ad1a8ee31d737ad7b042760c7ac16c4a5366c47aede246a9d1a479787c91645bbba3a4bb193e208278524f5a19523fe4fa668f620090a0b4e0cdacc409ce9bb164087972c8be834ca9dea858f2e151efb4b0412747b51f10463cba6b11e327da06ba054edb967d51e9fd5ea7c05023c9f72241db65ce66e07d3773c343c0d713be63c9f8bb42b3c04171b9f95d5d18d1dc0b5219bd27c32394d054f1f786d8dc1edae711c2dacb2ef063fd79f4308dac085954159b0fec3eecc1bfc0aa3d509cd101824405c82129e6720276948fc593e18545624cca1b821c9e134aaafa1b2b8385cc37ae0a38502308f7adb4455a1f77331bb509b6454a03c9b5be1adda8d7b95b11cbcd4dc527464d04b6dc8866db9be5dc5fa0b95f1d93727e51c18ec388fd4176e00eac66c1508545b7944f74b8c92401ffa2cc07297bbaeba59c0909eefc8b5b24626ace4b3aa4fd973f487fd9c3df8e3af99b8fb168bbdd47cb7cc4cf4a4c9468994492331c0bd84b4d5a97eb9f2ba92f195ad9017157cf1a057f8eb42aeb09b8764b90239f0450e686b454532891bcac220862f1a586757677d9fd438533d9dc13a70b22891189a1c28bbd834b5bf08b2520e507f8dd9c50dc0d02f33301c44220937365c1f6e3edf2b7495043d2511bd6bb4ffe1df52d0a174f42b0d3d4a819e92a0c75265077a3f960b84f9b2bee2ab405825a960328c9710496d8408ed26bd04aec37e3a38cfd0b93cd6c34884f8daca7c751b11264a8760f7d1ad4fa4c60f4cc5e8fb420fcf69c0618c195175ad34cd89a95bdb1a32c9bcb188058a6c1ab4050448e9b5fbf4d806c79f9ef4880cd0edb87813ba0e0dbf25020657f08863618d5af1894de4541e22937e863149300813701e501f6621fcc3547c0762b34cc228b4739ce765223cef96ac259167d3f1b9b6e45e633dffff515b2b2088ff6153ab0b7cef77db7729a43a07b6539e281949225d372a92ccf491f22b1adcbf5282cfd05bbd41542f9b254e98cf36842db824fb0f3936f66ddd2743b65fce1fc5c4b9cdd958497063ef715214e64dff7a8ebec9fb8bae3f8c2ed9daa937dc2ccda8ebad9edb40eb4148f847dd7fb75bff84c5518566e33068f4aa72ffc22ac6ef45aa8e7b55b6c80815c4f423e19b0ca81b085f83b9e24ab7aaf93673556606663567a94fd6dd3f008b7427f7d46cc6ba7412890b6e5e0b4b7686d2703f88cb57bcdcb4491c5bf1a20efbbe5f0faf4ed925b411f45935090dc195ef71b1d1a3f2800d51fd938db090b0f402af70d97bafce4a1b02fb6f4aa0c2c83d333ce6e94bea911e6e304f2c6a3498b3e9adcc690036e8698871102f44487060b34efefad82723d22d8cb8e058db05fe5691198810c4216a5b0c4c202a39b9340071c9918a257305fd192d3bc1881023e45b5493d2d41d748ddd89a82319708044388687fb42468e5fbb03073e065ad77102e9094763a3d206b017ac9cc534fb546b4281b26892a3b61f1109ad7d53b6c11cb1f9a31ed84cea8fea728213186145fcef3bc5d9bd109a08901767e6f9066560ebe2d27170bba0a9bc251db409ecaf391ca0dde88258215260ccadb04240086851c10a2ac80ddf48cd2a829ed29704b06307b92c3011da99a286b1fe0cadb624564fbd30cb3fb4a9453e118d174dd976f1dc2c5e84aa9d3608012ba2564ab756d894892888febd6c55036d2d42df2df41f424787160041e49ffd71942c0add4d16d9146d76324b187e6cf158304e13a0176687b931a199c65d58bfed7941e19904fe094d089cfb98040c98079f8bf7fbf450091ed1a3ea06c6a4e1ba51709e04c949bd8839072edaae21643e6e5bc545f2e34459c194767ad4bbe8338ec8ee7ef6d80ff905093183d0e781ea73ee4217db246461c1884260e436c4144cb7a8f44ea382b55366ab8beac222db70213678d121b3eefe4153ac210d4e3a54c080a9db0642b1cfa4aec7d14912b61f986d738eca0c37f564b648a8da5fb06527c204431d9642b9478d6ba87ae429c37123ccd1e5aacee78f8ee730903474879183b8998c342ebce2786991e5106bc3aebe6637782989c412dcae870dbb0c8b8ea449109c5451756b9281877ec9996504e8cc9fe7ebf8036d43b3ad8706a84031faff30a0ce3dd522a213ce53001bcdfd11e62aa7044bcd31d621674b8d98d2d1b7f9f1923d039b05d356e80bf0e5c316ee3552b15fb0cea74c041005703562e81eeb8397f08d2686ec5155797f1d57f00b33fb806a347a84457bd293f1b6c4cd70378e8dd75ed39c5e0b7f2f27133fd85f3e9d6eb3a9fd27e5cc92ef1b45cf1583e430abce4e0084c758abe36ee46840dc3f4af7577e42712af033a2d09f660cb8683b056fe368458d8628935d319b08d20a1081da02526f5645489241dd491d6c43220a343e902772de57b6f24669e28505186f68389e0437c365177f0ee1f0bd2c99eafaaafc60c8e2b50ad0c29c86ca8a1d688cfb70c0e0136aa3a631c103ced37bbc7b96e278919b5c6aa46ee40cfeb7e86b2f9b01d18fdd234c53324866f4b1e68044eb95d7fb4c781a6b9810816e351515c16bc64c41691fe10c910eef2e253c6c92b211c8da1ccfaa431f697ec5906030c36645d8f3efa3735131508ac68fb6edf841dcc4c1a1961f12f5e485073fa5720c9765a3d4a1dff134fceb8bda051f02dbcd8c8515d19496489d6f2860916f5f750d472988d88817c134e74685d0edec9c0aee23b107612e84bc91bf0eba3334628c7cd49a47247e4dccd84c7ac5885beb2f9a0acd9207ac3a9c5f6d73f3ebe917f666eb042bb4491921c4bbe8acdd899856df34a70d64a07abcef822362bec94ac85711650812556dafd8888a4b8c0a4896115a09e695c2b921c9b5a5d3f65f1fb9236a28f616bf0205fa780ecc852d442cafaa0667a59d67cc1fea40ea9b155933a608dc1290bc4e147a51a5fc224e1cab4471f2f23f4d7439dc9d956c1b0b2ce06c5b8fc54cca2c22c916de6247a2e7e82c70399ccb6a4d8b681945ac6e2ac8177b01423acfe7e817c7a9791eab474f102de77558d77405b464a093d94c2589112e943ce76be7f881acc49657d087c0ff5abe858eaebe079cb8c119177e327566392acbb73bf934073dd5bf63c28ae952cb494c630311e9b50bb74512591698dcba0988979edec4ae82aa44b1b4b753fa7dd6109a6a9e3b39cdb850a5f1485fadaca03c5eeb797f9372ad392024d41f55ecd64e2724c10b48b4f4844fa254367ad8e477a1459ef07ef31a86139209a2a7c5311686fe8a78f61a186f568f818bfb66c38905534d36e1e092ec44b4100263a9e0493a5d69efc903407bcb4df6d0dadc2fe5bce2509f2601cb4d52caf638ea248601f0cd2c2ea3b741c49791b06b716e4d9b2a8682400a20cb7348f9edb9ba98d12aeeafb32c1d6539f506f6971f5520e10ba23e596bff22e2c9ff595cef77c05f378a946022ae03c3a6881570e350c1dc3f5eba03812e146e984238146aa00b97530890401136d8005701a6231aba6a911fdb87b0f9946e3a0a64125d2586e0c48921ad56c1d7c9984f36545c932bc851d56859ea11096b0ff7ceeb5c7cdaa186c2f9802bb0909a76435d967cef4b5c568a27066b8114ce5b4518059a448e0a9b03d5ade96bf9f6e6ee550726f427a0c12ea70d37d078db4d6838c88fc314220d45894f04233a977dd53dfd2edb0ed559ba9d896317c83f55d2ee10559ded9e5010705e3fc917c087366fb319a336e2cb0051900925398cd02619034be267e73faf939bfbad93b75a61a5ac2bae0175bb09c4141c97df1ee1773c2804ad70369aaa59373f94370f41e7f0497060e5d386cde397da586151a1c7c795ec2ba67ff7941947afcde658407b261dc8acac07b1174b70a46a6ed933f92e2decc983b54763608befe115a938e13b1ad9c01eb284f1ebe7469ab97b9f269320bf83a5df4d9f0a9abe5ba5854944c08468bc18f1dc761406ff520efc0ac5690de07790064da236a662e10ae5c15f684abca7a6ac1bfe471cfd3f26d439d18bb1bde4cef352d75c7b05add097bd062020c4f943c83844c6a1f20e217748b943c91d5ac621720e9175289934a4f823867812dd0e6c0fad5e3c82f8442467bfc352befabe0362fed88df0fd067430fd68abd6d271e4a2af17b722907aed0c9dcfb86d1613e75905c90173dee86ec1bd2f50e0af41c4829332e0ca2e1d02c18fb78be657f5be1d73be1dbfb86d9c714b05156c0f76db90d93ceb1d46463e4cbe2c76ed15d9764af67a1765d8b5a4392405dc210237f77d2ece6814a9e73204f9c5a30858328b5c31238f1335bc0fa489aaff7fea4d069b095d18a11bc35a07711411198e03586f087e97d641e8018940bd8bee04144312b1865ec135117f6eece943cf358a398c1b96139f980885645a58a474a84886f928325ce71442b9e2726d9648655ce07bece5dd854c7453155f92a0e15be6e4929a43e575476363e6b5224109ede862a30129762b05f9a8b8c3b22da6a33784bc3422e4d25c5bdad14b5722904bb178892e8f68220c4155c924ea9547c0fab6442915bd2aab9676def4117711f163b103f053aee315d2b532832c1275257b887b1a37d7d6aa3b28f8e838be53dc7b2eeac5d6d02ce37deefc730c804c30bf74fba863797dbd611c1d6b8e1b8bf144975a005bf961056ed9f398b5621e794331140f13440bb8683fa45247a8d61f67f4e61c26164cca8d086e02a82fd4bdebbab579fb196770716c0dbc1b3357b99d773be12d9a4c81b36241d3db47a341340111939fc13c02fb2272c58d452f9385f535561f6dac90c18bfe8a91eb827afc201fda40d2119f850d73eaafe968713f601888df38752f3dad2677044cfc48cb8b202d6c08272c2c0388a6493ee53e3eda8f0dc34bfd886e3d126f4e0314348d3aece09846fb588eb5617d8a5fbfec031302a5c10f546c32fc539b6c7f7f9d703719bd641ca48be90e483ecfeabc43415a61309223038223b572852e6122f800dc7fea410de0e9e4a450fb67b9950a44d7e27975720767b4b9021a5f447e57c0c2beb1a8760f97f41809834085e8133cd802500c681f9f7d70cd06da920ff8a0538776cbdf0cb45933587b4683fb450a4a101c228505c885c60efe3383264c8015616a319319cf1f2841545880bf273dbf3f818990e20e05423fb6c242d8fe4cc97826a685cfa53889e7318246bdca1a697a90a83f7dbec47fa00734e91c8e04892f9c16562af535bc290efede8142d5a42ec61f90e22012d911a5a46d1aaadd0ed0bb89ede54e0b43800f8443df6f7a82686259ff9479185350b3b59988db8e756f459c1dd2b4b876edbdc745dc87d7684071b4ba6e0dab31e22fa1ee4d19f8d570b8343274c461d51540254c7f964b137b553470bd54e596756fa135d6a5739f2464088f832acfb247240ee80ef120adbe543a77592ce8d15ae7fa26032ae87ba97a99d3714f8915992f5ee541b830d85a1b8abd574281a907cf08da9709b85bfec24dad695b4183d2c6c6de84774ca0c3d73fa67a9a136517312fa064488a10ff6c78f5a820586f49857b80dbe896caffdcc56255460b39262209fa10af9e99bbfd6115baa8090e401b510fa19521735dccee1f18400a7792df4d9a208bb162490e760f0cfa2bdaf6ce85e6c6399ee4de3874fee6e116a9339c6be7573f0dd92569d007e06aa420465e2b871b00422a543f40bee3891488a19e5821c5a208b45e21d94cc7d48d785d0672467a1263b713f13e76e15e625b100f00ffac1f49ab716a847ef4674b61a5852bade739e81c4a1e0017ccff029ce786c5d5750d56e74088011e2c3101260a0007e6a95970e190c53052fbed16cbd85ab2b0d3aeaec4b0a90c4b0f43e303d84a34f84375570cce9bf0fc16e8d31c6f3246c32b120d1497c8b3d562a68459b5035d0d38830e018ede87aa569ade06d87778397add82e1650c137e0c170a8523df6a8a7dcb5211975eaf4ccbbef4cd689e2b31ad57f864643b5e198dc238c8021262c9730d21dd4fb1fb8059b5952bc5cfdcf635dec77c36b1ae7d2737457fd5b303265e2712af92dd78ec0bd8a505d2fad9f3458383dba85b55053b500bb71be908eb09e4334a4d821a31447bec47d869bf1c7c4183c2ea575a06d309a8105af018fa119ab47060ae09ec6539e29c9303586efaf244632341aa96e487759172bb0efa6f8b11940ba74fdea21dc7eb602b233d64fa34876c983ed6a25fe3bf7e0312788cff16da47610a79097f4f0cb840a3f100f344ad6800419719e46b118763089c7b84005ad323a0350d9a9b83c58fca9b2f0ae734035cc333934ed488cd61a0829a130f82d929e342ba7a74972ada17a6a57e61572d8685690091f952bc40e7eb8f492075f5362e09bdb62a3e982df6e7007b3f02c01933c531a40dd29a127514691bed4a3ff95168e94f809bbcd9ba9c3282119fc5ccbca3c102e4ed9be7b467cc92ec6c5e7381b41b9eae0fcd4ddfcd76829469e04f04068cda0d2c4a8006e3545c5bd4a31e200bb8b04b4cf81dc70c50ae63d7e54eaad969bedb8c06c7d15d38ae30ee21f79142fe692a29101ac6bba982f34bf0c0c185f59b21a39a619b0beee0c9c3d7ddc5431f4de42c60513087e214180de6b49f4c5af50bd2b94a6b25f74f3c53e73f61391a83cc212fb6d60548d77275772ccea27821581d36919030e0f458af9ee4d52d0c37035e7ec9df4536a6838a9f9311dc57e750714dca71eeca80673f0d24c4fd928319c45f969a8540d011911e615bbbd8c071ff09e4b1154274d3021ab85252c9622f1ba7252a881e868007ee7fb0074b425aca1208cab425b0c8e2e689ac708ee85cf74184cb7c32d7954f28396ada1d39693d15368a316e6af79b0a52150751ed0b2fbf583d55da2887863b3620053c1764986bbdc4a4306010b9cfa2932d360896518641ab5dea2ab3aaefd0f00370f7dd92007a0b70e02a66cd53356eeaed7e66467d4336c6e3c063aae3a02be52e22ab84b9d2fb5a37d37a712c4d4c2aa7496d96a9c83699c02286d7dcf5b71a00bf4d3cabf1b6ef01eceda33111f2130ebe3f09443872e56c8d6b35a1e5e84b5822ed709004553dceb6707ac6ae4e5cc9a6c947f81a443f020f4d1621b20af663452e8c4ec196318fdbb43a58e5a3f2cce81b7c1a6d28497b8420a09f7993a641a3f65d5a53a419072d1d7aeddb1fdd974d60ed057e694d4cdf493b7cc887d39ee514e388f1d33c7bd15359d1e604518509a7b0d8adc348878bf3143ec98526392976ac30b8b66a1a721680d6e773c86e6a58fa8c98e83a1329de91c02d75e61644da56e8deca2e264b24862488087a72e9a4a44cb63ad44457c10a423078e984d2f9428c5fdb806fa7306c6d4e6ce98489eb75db102a273b1ddc49503614c18cd57f77c14e2c85e7b5b6f5f5e93e6091ad2818f801304a0e2210f9285c8e9f2a398ba8db082d6672d388986001782fcdba73ed78019513b53a955ac4e07178d9894f32badb336792b1c44536b17738d067007607010b5c705d6317232f70fef0882e8a1c7b3a799994f2975c4cba70d13c7b4d8ffdb4236f236ffdf2089dd1358c484676caaabf40a0dcc48abef9df4141ea798dd988e5513952434ed23f52f0c50be581f78a4145a1b689a61f85cc3354c2b0aa4118a1f9168dd90bc8f3e217f69fcef2d3c0ff724687c6df2adb602bf57eaff6704935773f7df6c5a4989365689ab60ed85a6dc8bfda7a62b8fbf59d0cf2769aa16e9265a63ef026fddecfc0b6029d54a4642d3386390fc6677bc4ec256aa21fdbcd520a74e655ff801a4abe0beb71aa62b064497ebd4956d6532f8033fd4fdb700092f62b9ee569079dc1840ee8ec3466c61c8608a000366fc6de0f121c2fdf262fefaabfa1be70c26ab246e8728bfd6fcdfc9854c221cbad598e48813a0f8715872153ea033aa6781287f37cae02763da6612d199e74cc67ceab0012598915db9c564df15c3b142bf23c30d1f531652beb589722fbfd1f3d56ccd1d27cb8417bc9636d4bf34d57017c4e5a149745dbdc078cd0ee6346460238bce727dcb4d62af8470653bd12caa2fecdc8910e5eb587a983e03bae107404230cd764e5642affdf959e0f1295121ab76016005b507cf7e635e19bad2e67a8ba8c99a6c6ca68184c071c2d4188f07156fad43e7c3479ccb86c0518c55f91f99900b75e5a07a018bda6c4ec3ef25e3673f47fff46f38782ba76a93d5489650c8ad985c5a4a86caea7c424a1ee6419d7c48b1cdadead5f605d9500ee4dfd599e563ae82ab63e947f19a15aafa704c5e2070a9b3e804c2c47b100b5bf6310c9796de98e17a1c510b7b7198209ccf3564bc3c2201df0dbc97100231a2cbd38fb0db99a61331929c785cc30c1c752816049835405a27b8b728d8712ef74aacc632aa7d8ee9445253f90aa75c3a765c1366667f73b5807a34333e644e64faa08f54724bfa9e03ff320ada16cb6cc0249faecc2573ab266bcdeeb7da9226a0b25900808c1d6692a18d84e19edd7c1d3dd77dd3605d222ba9913d99c15625f0f2417bedbf38f82981f380521e3b30a1541aa01b98b3f357f1e01c79dc94cbc6181c6d733f1a1fd20e1e314bf5e0414457a2f472b580bb190e19ea69af4aa74734f34d0f50eda7b7ea7419990c4de34589f5e67dbee06414153671d4b71c42eb3de67e780a1545bce4b45f38e0de98c36806d5b4626300a29f587af9af20a8f2d347eb161882d550d53eed0584aded414652705b25b3be7446506d922e01d89e47a613857a7bcda24b13a7596ed94e82341ad14f8a9d642a66450fa829d34a09ca79db08b0e055d8885dd8f99805dea2ba72d0aecbe2a45dc24b9cd0414dd0c4fe3d7154de41f9d4c33334afe5d0f858cbb63dad99fad80a6b197e318e524975b592feb8ed34199571540f0e739b528cf73a2bdf7d98d404f3dfce8096f532afa72eb7aba1758fd808de2e5c4f2f211ee5297cdfa900fe15488fe7b16af1fa0161cdcf45bf02150233919613d2fcb138a11f9625983cecd6f7eb46b4f0fc04115c1a3a1046cd90fa51cf9e50933d9af1011b958d82dbb4d63f1c1aeb4220d24f35e609b005eee687a228f6634b867d18d12711d0c288219b38316cf26ea21d6de36a842f013bc16f57d3e0ce68061809ae3006142be605d0cdc72809030917f0f2c4c0a9c90f34aa525f0bbba831f82c28bb0e5787b336ce80549dac54302dddec327ba08c866945084c5a13df78ae2041a20c71151d583817920168aca674ea7d6be3b45a08421d6d17c4ef59e1823c32303c0377c969cf4b34fe068d8dd175d342449fd7b0e67c4b7382a24482e387219f3e29b24b00893fee58a4e40b63bb2c2c60fa1d413cb8b6f26ee738b29279d8014601fa6a513903799243932d55328cbc8112d3cda7baa93c91252779e75f1cc2ab7d711e702074f2bc724f554911350de9b44507284f88d8574e6bef2b620c96535f19792f2dcf816d03eb07f8a2f0c21b28d7ec2e566009e7f632d8f5e9ac75676adf9bc0c1f0e019771fbae2e7f28001270f46941fc78ce0644952b5175b6c25b102f5663701464bdd264f48ed2a938b627039235063c170f740f70fa4670c4d6e0dd9aafb9f2f4a9707fb25b9f4abf0e1ff53ab86ba3ea7a30f6821481fd10572e94d72ad142e262642d2af5562744a3025a9c23bd65ecb3ae1aad92686b8961abfc51781980a3ca41a2fa55867d4314968faed3cc6e57971e22eaffd41942d4956ed8294249d3807a42f552023b203f8655ef0031ad7b10d93ae54668a8dfdefb9c8d661ff0c7cd00350b7666ac6b8ebcf93eb6294171130848c0939161602ce36286b936c71122cd2f33538b7de407663491a881bd0e7c050e222a2f27df64313749af93a1d3eb6de90858a2f5b92357c8a84ebf74eee37bba212d1e616c497ac77e00c01798235b563196464faa39b759c7b9383d665a81fce90fbed055f0c2c8fb6d5729b6320053a5624095fb50914bd02801023817e1415e037e6f23ed6633b86de29078c79e4b3b226ff378afc922d1e8e9afe3c15fb2be286fc1db12d125ea300880ec1d5eaf08c78ad443b04bac1673b2e6a3a818e3391a897ceeb16430f5230bfa496575cbf0008049c78e76ffc8ef4400e2110c821efd318ee442a4c5c03a5c2d923d60466fb8397ba583ca1ce8a5c6a2f94b63eb9a2992201b47c9b48025fc236074fbf141f97df125afac38a6875720a9a7f3412b74a77db2bce961cb2566be09385d48350f782d671348c812a191f5d7b341782d18e523621d44a9c3d30731187063bcb394f5ae0dff2b4b19bf43bbd2d4fd2212eb5de634986d3a2ebfa70a7c61ec0f0da77542b643d11cac1110ee4c2c755ca511211597f1e56bb25d1de866af3e0d9328826b4863242ff4aa56659cb6999a3b529fa511a32ffe16c77f27752698921c52a285a230fba1919e5263780ba23bd6514e20075aa3c664f992fd4ed24952823185c25566d1439e5f428fc4df111d5caeaa1b35e3afd3915d1840cecb5590828e737494500f6dacc84df23ccb704408b0e51c28750661be1408d18a470f22f86033a64955c35f3ca2864995f5e00b199df64a2837062d8d6af0c7dd7b4cb2aa7a130c0262f0be106c916b3027ff6ddfc12f450b20c66b4f1e9067f24b776ad892e0775a8296b6918e50c7bf042317506f4069180fb516dde3ad4201091f4ee370e3a0b015baad300961d4ccb5d57944252b56b6d4f6402119bf267c8629ce3a60a834a21fc3b3b39b052b7ee2117bc026aa3a7f3d86fc45e51670b1b508b98cf346f7fc4b68514ccc817f699798269675d5fd75f8445ec1a3af4afd28ff268d2f36196566172161de335a57110c3160d1fe66b99ff42d44a021dfb4fdf3a6ff01341e95cac7e6dd1b68d67cc7ab02044b73a754847ebb4788993a4de2be5f3d0265f50b9e39cef44e24132c937c2695a40588bb51eeaaa32c33d75b57ed7a0e90acce4dc16040d81ca94ec0822f5e946b5833981e8aa111fe6c81674db1dd84f3409bd03c5af3f0a8e9463e5adb3cb5ab358ca193f68a972e266cea2d6d348cce4bb529bbf2296ea73b22302c056782cd129536b603060ab245aa49f8b6df66a5912d24a2d0051a74aaa9441c6bb679a6634d7709670033cc0cbb310046ea1574a611b59bace78a8a36f4af8ac272b5b7618ce793610cec4e16366ab99153dc2d43ee4ad85d85b6ceb223146644652cd29c2c02ec39f2b3b93b0e6813edd9cb18f4444a3859b1cbede349455ce9b92b43dbc1f5bba5a384b9b1a01063feb02aa266bf5f4496b765d9268c3895d8af817f7aefd1a443820acf5f29b92e469f5f7af43605fd5b8b2be0edd83cfe5187ff76229af609a11b4af669d91a49c09bed5ea3f487c997540c3c61de8451f2d09776c4cb5f5198f0b3fcb2246c82158dfc0157362cfdb4fef38bcb48802e471816853de1dde6731d56f55036942325613a23eb2a09b6af342df73c58c06bb46ccf12cdf6d316ba431052acfd37d4928b92bc893042dcb19a267ea7630b74550a32590294d3e05895a4de3d4b6c2e7781fbb1c1ab6f2b6de3efb7c279183fccdfa84af2258934124a52fa5049306ac7509fc3dc6b26f0dccb4c86ccdccadfc74fd32d612683863d0191e1ad8228155190564b9ec834c3647db660558386b66615e8b3a59f1686b92bad664343184f87973c85e700f1f88077d4fd1859e140447d25ab656b88c64bb6262b6af75b3a10c56233bacdc793ba9616545dadde6ddfcf597c7e17cec94065ceb913e18d2cb903e7a652d128900d40c011d8dc082e924ac6621eaa7411bd6faa475bdfba1d31bfb3d0110c5a2e96cfc1e9fb3b567a3ce188c55e3b67bb591f68218b92f64f5d6286b4e65c699af4d52a47acf6e05c1badf66c9c6606f6422c857973ffd72907e1515b27216b5b2fde19b2ead0dccf30556d7005b4e52bb632a6beac1558502ae7c0887e87908243957468d4920e000da9c22de447bcb9470f246f75e41ee53ae7c7bbd57fef5b8b99e08cfeaf1d92c7a3e62809e35e942fc3850abeb8aa8c870f72534be4714197497fe96c0fb343dcc5b6c057ae8a8ce32e6ace4651fb91f1e91a370967647c3d3385013f5f42840524a6f246a655748a25b417ddcbb4b1f65a231ffd9c4965446bc3b502da651d2f34c3c43ba790025e369ee0b1d61f0d2c2facf223eca22dd1d24c1081b225180791cff035093eaa9c8791278c406128a8d3633003b2483891a4dd84edf450afe2f91227a4fddcc4732b202f0303d16a806a3e985a4202aae80ffd905d712742ce18b5c6f686a42248b69c9b73e7e84bb8707c16ec042fbfa48c474c35189c38d35d428993459d4fa1ea495c00139e2de64a69663754c8cda308ec8601080c4a623522f8fdc5c7e531b33de5a1af801e835bcf5fd8bd12eb3006f0a284db4ea729a18a922cd3003f2d3c40df80680640c3649587b17cf30f79876a457c76f713baf4a807a19208fba21d9d3a9857dc4ea34b8c78478389981bc182a93994ed2430a27183eb6b71acfdbebdd6b67266761e65100bb52cc21868bd7bc7268432b84cf351bbc4940705692471a5af8a9a75d819b23456f906e88333dbc59b3a9991973ec62838d497c22d2455759d11a06fd6ff544f8a891b2ad2323a36cc90b6f69f286df33d79aa40fb9fc25553506e8333e0adab02132254f6aa8175ff69986e5e4c3e3f63157a764085ef1633b3dbcd285fad315385dbee5253a4f651357745e7441058ea54016f02e3d154931491315a4c646f0b0a0b299c4c4359390808fd6ae832950ee39d8124158f75c3356bfdf4528a1e4ff3a9f010ea1218bed85256e441dd7a291368491e36c47b050b800160c58c298f1d9944a7580a18388ac5a8c38484e6d403369968b74c16bbab96aadda85a3b66de9a083c8a6ec407e818ac43eff8d2b8809c251ab5583bdfa55b2187210818ca4fbf560e874188f86a975c8f6dd0fd3dd71df090a427686659064c13769aa694a77bcd779bde145244aa98e71a2af13be66c2dd55243900748385096ca40fdb4a2641e3ff774724e369deddcde03fac6f897ca6cd83b3b26b3385792a05041ac9133bb69fb95987dca053b9c0c90db692a3ee6becd86550496788121b56766246d56be88de00a30b9855599a12c2334fefac0e68dcf86b957e29c476d4fdbc04268510c312d00103a4a8c33fc7d0b7e2fd0d218fb9608d319acbb648a9826015f3fcc03d81319a8420acf407aa9475a140020143a1492f97412a2c2699054218ec9804fda97d27e9416285a74dd349d6ff1c73ac7fbbb8b41fdfe06ed3937d45430b3237270d74f3bd018de15ed5fad80590d6c0b2b6f333da64608bde9e342c10cd6859d0af7fb083d8aad46adbfb85ac33a3b25f21a8cf455b3f1015009f033a0c6c0bc1ad02640b20e129ee707a8df2d5c96c91f22303e95a217d4bca398bb05bcd653be4b71e5fed6446d626d9c9e4f0f964d505fd36019750af9d4d95bd3daf05a01bbd236da36837d98940c03d06e63123dcc1b73ba489b251daa93289cfbe264142cc0ab6de95c9f62d0fbe955325ef418d1ef49094ca94943084c32cbe9a3423664ef2bc17e6216eb510edb92b40ec11572a59c74b98cc7945a5e7d19e3b799948cca42429f77f80f0342ad4000dd7d8461c0b2e6b6b0d14ea3d262eb6b0177c420ebe50a3e2874346890e3ca9f6395b2e3af6c5da61c0c222e8d20d292f96671ad50185711ed16daf9f5b0cdcc8dec9f58537a0dd741498f9f0f30b134cc2c9a31d1a24d1e8b74838a28ba74b6a04656214c6b24d786890e87d3f42e605491616993659f71965071e98b0fd281a15e512d20f8831392abd3c5a0c04aaae64757d7dd9d4e5e6871828dd6d365a24c656e9ab9c7daa91d3501b20a2f3ce43f0fa9e4666f9a541f80f522180c20312bb2d1438a5ea8384956b02c5dab4bc68faf43972a0a47a81d798ce66fa2751092967252efdb45945173b24581935f0bbb3aabbb4ca673ce3030702bc5903400b5e43d64b1a0ea1cf7137c1190bc4dc34432069c8189364aa900095c70ea87b0f34b69e784820c8b30535c0bad414ca9dbab6d2ab2e9fe871e82664fd0948f7d4077020848fdcdba7c86ade9e7477ba6247615cf8827d6cc21b1e6c440b34ecc62b851294444910c958f230172fc66a5a2d5566239a3ba7f5eb190b538660af616150e163fdd7013ccb97d07899ccea5887f34f52e5d1ac8a093e07bc75a79c63fd43d4d0d4fa420444f5de1b99239cc65f9fafe2238754fc4f3ec507dc473e80793f275a4fa4710cd5d416a1ea15ecc9a2608afb9779e745210b963f90d826468264937061e68e36459f14d17946a7fbed7edaa2ba8b8d6e2e3e5dba409fd31917ede32962f23f0b90a7f0006699125e285d3c15deba346aa7e029d43371815b85d984d65196f87cfc7c34d4685108168c86d551a236414ecff8e1e50561fd475b424d764219445009bcbcbfb2456974ec2b3234aa20ff059d86038e840b718534a118a81a230b035127435e219b33506d91df81a199491ffdaf94cecfe146982950fd77ec453c22d072e8b208fd030ab9cd7549f6033e92ce79e41d54ffa8cb411122b03fdfdfa845bf568e7976d78985c57ed775742ab471a560d3a6fe9be6cc01083069ba5e068261e881ed8a229294c1358347d1ab5930f9e2b23c9a992e653173e9b8a9560fee91117927c0a614d6b9ba584f6567dca2b0226bf12fa05e843c91009eaa21fd7838dc7ffa88e7c93c8f9b9aecee94a7a51a708c3a9cf2f17bf48d4d67de057db9b90321a381080c42859e700c4e68174ce0bc6570143a1dad0ebf8363b39a2dfd2be2f5a2fa04ddc6112ec732699ec74477a8b818c7cea5fa7e80fa853c2d4a9aca14ed79920d0a7a2c34bdaced725b8e9a53a34f3753eab405d0605aec74718e9a3655260d936211e69bd715234a212820de31dc1d510208fd6749a45b874a71cce72ca073b5a9d00d5dd1940e4377cca9f70bbb3e5880e8f06fcff9c2589bf67b58593e9311f9196fa68ac3686d314d6618a7b6b16fb50898a27061f50d8c0577393e89fc459e4c030460fe1a7b5b0a44064b0b35d7af48551fd182b68f7a33b8d57175ef7a896913f60bcf0313279ba82b025f31351d3f36b8949c0b46b65363326ebbb1b9f21aa095ce0354df10d04f78a50e4b53e8b204f2dc2a75a4cc0c64fb501441e27ab73900a0ac78acc800301cc5b8787de1e396416949b5413aaa65b0118b17d8ac1acd9961dbbee047cf67ad09a2a329af64cf22a54eed1d7bd1f644ca608d821a3a6a301c00882aaba2aac7baa69b226e42c19e4a1371934600d789255d088410bf137193e3e615baa1b47a3994676147d25b6100418d5fc15322604d87911a556bebbcfcefdce3a6ed97dc9f28a5342fdcc6c32b86e6cebc5d51cfbb98a78393023a9fa93f03ce9fde69ea3e8bbc9373cf11b6f4cb9f367e7eba593759a4dc2b943f9943e0d08d030e6b38c68f153e6d61aa5737a2e8ed4906b11cacc28912eba49e8b2ef8549b60f682c4f07b1dfa8ae8eec29892e29b17838f40574ce415101cb10e16fc5076b1eab89db3b1dfb28d1fa700ee1bd14c6d15793eda024f606268abb48cd4afcb9303f62f7091501bf0545cdb74008739c494f2050e6b3c0e7dbaf4bf6cc8aaf7f1315a0ea9eb1618854458fbbab166850702ce61eb50f9a3f48dcd80d09bd3b41bd7feddd39c497b3fd781033ec8b5b7f79c251ccbe1bc7adb2ebcfb5774746899b1057de2e54e30cc19b7a0556fa88546ddec702397e6ca1ad73f53799b65c26e4bd1dcd6c245a7d1fd76439c898da48c046e35e7533ad0df997dfa547e94b3ed9a6bd756d2ac3c1ba1a3fda2d0f207476b4dc5f0ab057a32d483911e467a30d2c3480f467a18e9c1a87a0523695f8bb17a0b7ad8fde63f440841e3bedd40138231582f8211facd33aa1e018ce95c83412f06bd33e8c5a05706bd32e8c5a05706f67a9406fe65cbc540bd05d7df9de63e443809e64334fc60333e0deb7cb1040aadabb356305c55493a99889ce264ceddece6cbdea722de7c9975b7ac6e0a49e4e2a6dec88c767105ad2e93f9170c966e9c1dde20fafce927a34988c12b9a51d4026bbb5e884bd49b41a26bd9c4b6b5a4354208217b6fb2a5dc3b310b110b150b194624d9ebce82c2da69549fd4593c6df5942c195830b87dab057087b666e083041cd4d6e26643f6dc6e9e6e5e61f6abf2a755b2a751fd22f5e7a78bba9d2e82322c6b08a3ca005596123462c47861ad4c56568f0cfab9820b6a555f21a4441775b766cd165af0813fecc90ecae4511335eac86a15ffa8054627b09ab07c5a1e75500deacdc6763b08cec818046570ad9b94726a456460edf4f40ce154cb25409eb8f253067335e5d1295a78531b259f5d22614f4aa12b0fd44137ca25f268d5b39a435276539b6304873f9f53654faba6cd99e7cb1c2338d7e973e4912ba9cd617bf2c1b238585b53a3e4e92f2b7d1a254f3ef0db08ce7c1f896ad99eac6965cf5167adba18584dd40365fcc8232056594ecc00aa241ce4518f3cea91472f4c261313795d21ecc90f29b2baf27205654838c01925a04ac621a2e4e5098488e04a098226ae3c823372882c227bd86ba2266a959c0144c9e3a0a80746720847b207ce4879248fae9447f28753d2741fee920f4a3d77928ee0cc241d559652c9853c2dcbb2660f356a1e9ddc8f74445b948470ea2319ed70ea2bf19478380593f0832577be1484533d4f5a324b40ee2c397149469c82522892e4ce9394708ae5cebaa4c6b562af1a5525a4f9da82ecf2df453a9aaf43d5a82ee1d4f659771aa5c3294ba8125d4ac019b087e7ce7f17cf9df5e8ced5772d7167561f25d7d62467a54c2aad6db3ec0907a4e2d657aefee680545ccd9e72d41df75ab54acaf74f38f6647dbe6601aaea8eca9dd69df6142dce75697564bf7eed98aeb8731ec2baf3853bdf5ded484bd89b55a8eb50a3e6af8e7d3c716b0cb8d28a74c45ee4f983fbaa50156a15fd69d47cada65a64e7ce43213863446e271db3b235afa84cdcf9193f5f790053d6e7eb0f8ac4195527c2986fc3cf9d4645b8b3ef473abaf368461bf1562a6aad9509eeab3b75a75515071035df039e21dc396b127a6a1138335f858adcd94342f3a89bdc4da39f56c1a645ad9a4bb8eac419f30a0863de64b21f1572e7a44ddcf98fb681ea4c36dc799d3be70cc2a9afce1f31f9d022a6a159e7344dfe9ca59ef6d18dc204bcb1ff211e5a24e0e3297cb427193fed49d269c2ba5f1e9dcc92e56d22574f4339f869132d4bc3f0a3d18987279252822183321f8410ce39e52337e7cc0e3b583908a184106650e834df40b4ca7afd0ffcb648307624f8963d4d78136dea294dc7c3b694b32e3f3b137ba7b1a9d4d2444bdaafb667824431520b08527061091221487c8890d392cd310939707ce176f2c1fae9dc9d7ce867fdecf4035f3b5fcbce9d76b211efa9887825ecee147f1dde68dd2966dd29529b46d15f348da28f9d8eeee8670c28a554fa6066221a092247d66aab360edc0f2681565c101e02c5a8292e2f3400517c252e3ffbbcabe6f21046b81bd4ca6e3b1381da5910b5d17ae5076e3f4aad25c7267d3e2e8433d2cad91813f31b1bb88f7f5adec7b01c12eb307b0bb36cb7439eda4b0c3ba594321cba3a48ccf6aa776c05c2512b4b94d2d7346a00f74eff822606a7641e80d3d75675a7e7eca783e5018732acbb8ab0e7a2bb86bc81c3eec2127139e6f221ac7271e95a875173b5b11c76e957cf85c911707d6b5db012f626bdfc74f14f4a7a79794c5a16683f7b2ec23d3c84bdd93384534526c5b01e8c8fd888bd79f518f514e1b986706ae5f3d7139c52e11e3acf3c9c3ae1e009218b91cbd2ab49fa565fd8179fb11d95d80f9592ca3200592d6486203e66e8c19d7106ab2443ac9b7989d19fa02442455630d1c73716b137af1b8ba8a8c20a36e2d409ca5983c9c2b2a21bcc5dfed517fbd15b87e95e3a97eea377f1b8d9a0b732a71667717cb55a596b7b5857e671cb11934516595c1919a30640ebf0c27ea601740c4516d3f1911a5df72ec7088ecb636ccecb5d2ce7b8fca563a3ce5adaf1114e7956cab70ae61265d9873d3e020567fd631f86828fb037af97ab87a5d4ab27fa097917bdd33b2e2cab83c8bbb0fea5087182bdd94078e81df666ed21add345fa896ddbf807003a504642fff18f14c07ba79f03f398179bf3f2db93658904605e007206a0d3d1a8f97740346a3ea67be94e12a63bc997c7582462fe12f3972311131363938879f7db376a7e1e26c6dac0dccc1758b00d1c3df6af57e7bac3d8f9174b739abfd88f886bd35d6744de85ed78d0580c099c3dbc37286b5f3a78c33ead3ab229e17880b7c5fb1b1b38af83379b4038284305cac0ee34994c267bb8d19a02ae4fbb8a02aecf49a00c2378809793c099f91cf63428689e91c8c82b63c3321d7bdd0e0b06cec54fcfa446c1c0613f3d6317bd3dc0f2606f0eb1060ee62f87453c0c006b5dc8e8187171267e1380cb749779852a189b6304e77fb139463e223130ffbbcbd8cfdadeb9f62a9e9b699f4d2d6e367888abd81e202d23a91b0f1cb4da6cf0ed9d2b38ec4cf45d3d3f0cc4459c3af93c2761a356f5ca886b25e7ad816c6ae0fa3d5711a3a32cd3e2665d7401e8388877c0b607487bd2f1727b78a99c8c84bd7999bb389bd89f00701d3e36b20000807daf3815ef7cebccf70ea7b89e2e32df3e0dc57c4731df40e61b003a58234e7dec7395cc970ede7c3957e62f39ac85d073216319e8e5657ed6b884bd692fff451f6baf22b2bb7ad2c075cf9defba7771d5a879b8e9d0f98184111ee09587373f903022ed4bec69d48c3e8d9a5fc1742048828846cdbbfcfcf8fce55ffcb9f32b2b18eb7db1c7c51aa18f3c8d9a2a59dce5e6c5c5f63cf714e1692eb2226e384c2e65b7f24388ecf44bc229cbda78eabe9496ce06df16b68898c56ce2ceb3a8304f0f8b7b4a87d2f1dcf9938b3e5e7aae3b51cb3f370cc4a8c93fb4d4ab15c96eb68853f4d939164dcc7e475cecb48b4d6d8fbebd637b858667d7ba530e9ac4a536c2db713a93280992d6616f3eeb2215eccd9d39bf25e1e8a3159ca2f3b357db19ae2e56c1de7cede2107bb357433c948afbb5905ef5eab292983e68125c371a2e4809cbc07ddc955c841dacbc838cd608797b58970c5c3c7ce4816c29e57758b65ac99ebcfca74929a550cb172f9fb5f6d5ae66e03e934d33d135b9704aaeae0d5721cac0b58c8175e3143c1d6ccd234ca6086f59228e780ff68e2002be20672be28418c28883b731ae64ffb0220c4de8582bc7457b41f8ad0f9b39524a618ed26de6fe34975bbb069ca2f2d6acb2565aa96c6a6f9080fb6a8858d18ab66e64e03a0d5e0b246380828747054f0c3a29b5acc9006864ced71df396ad5959829bd6bc9c746a345eb0d7dd5216e1b8568e7bbc50b41a42c190ac0fb93b76c7eed8dd6fc94523aa5a597ea627707008ce081914255b30a8c6664de65f8f0642541fa381b4ebe6e15609395a2479a12adaa0a09898480be14cdb8f47ca9597ec41f986cd75954103c4ebaad7bbebba7a584d641042d8dd0cb916d228c83a5c3c3c3cc9dab4691db91dad6e7656865d5951cd3c380379aeb8e681d61bda2a1222a488a7a4051352183a0940e06aeaa4b472b35a97c43aa3618d8674558ab5256b5f8c690a88f1020111a3715d903296554dd3e192bdc3fdbabb25d6956bdca00130cd8a8289d3ac94202b0a5dd20217cfa5c8d1025c54c3e6e67566c952736c0243d3788b550c35534142c2c5975e6c9a24750fbe31983b797162c190b497b42b9accc00f4000587d4153208a95227f6a9a5950570b2c7b2969342db869629d48944ba524a49a4c4e268a06670e7f643da30cc538b3a99c70c85b44ccc208cb722251641064c2090381e3cb8f52585be0e2219cf920132ed481c55a4149e11415959515a9929272c22a2a282b9cc2c211b68bca8ab5c2224da66e31a3d722b69c52224b4559b158d8a4416ed87d50099619769fe5d3852f11cec09f98ae16b5459b2ed68bec187eb4265988f6ab568bec17180d4af6b893063708dfdd078bb8f8e6d1125fb293e6a265305adb0a6b4338e79cf6311685ef43cc45ab9c8210d6176dbe808be749a985538be167d7b0cb45f0867718073c64ca866e688023119ce109e10ef82f5e9c7879291f74651783ba0af6380e11b9808390831ccbae4a7cc4e3ccdb1c23d2e2c4439b93e3034618bf9041191dfe7137bbc9686732993c2fa8664e703d85bc943d1b0bf1d095dfba1f71eb8c70205e8b95b0278bd8932de07e00f08d83625151d4a12b6181e32000586a73fab05135c7088e0edf9ed3a73ad8ecb4e3248cf29415538bb79c60ce4192f49a9d3cfe7cf5c695c96173a5c3b6b0c3d678c785fdb8693f93b5df3b791963bf1ade691584375ac54918250f633f567265eb5cf916f633992ccb8abc8afdbc9b62bf76e2caa3d88fe67e30e8c47e26cd7e3598fd68ec653fef2696b3d31a116fc9ca22f61808f3ecf015dc178b8a5a159320a59459b852fec019c948588899e19cbf01ba76767676ae08e4533b691a12793ed2612ae4c7565cc942b2e84ab9e4ca6b19b6c34038a55d79a8f14eab38887987798779477e26c9d6ac94da89c39e9cb7accb6963107bb27b5892883eac17ac206805472e4c821356f78344170a0549726f700a0ab1a0c8957700a74cae7c5622b2e227b1f9006ff8a40336eae2706deb7f50c9829ba7f6a4634e1b6f287dbca1d3d6344a7e65d5e77efc0f7c08859a067390d2d61c3912459112201e2a8efc0c1125e1a9b93db1c7a008d4f1ea6cdae5eaae2ea2af36bb529c8f31239148a46cda1eb29b655917e3b32cc6ec59174fb2615800ad3bb157572a7dce5269be34e3cd6e7ff2a271b32c3b8491eb64578038e37abcbcd5c86eb4058830aeefb03744a3585a6c0d1094dc005c28040424b735ab881cd23dec44bc911fa3ed20ec9dae72edf19337e5d17e1dc44624bde5261f775fbe75361e31b130ff38695ba070af312e37e92044711d84b2831055bae9f148db2fc6bd68dcebb75f8db90ee3623f88e45e2e8f5fb9ded2a960c1916c0fbe2dff54ae76966f9d0a16dc8bed61dd1693fd62c48d871dd7e56db13b482d29b607dfeb2cff4eb6075fd259b618d6e51720ce28d91da4b75c3b6f395a6c01220ccdda1e7c5d4a27d91dd7ad7bd90244185cb20588304e1ebb93dbf0912832beaa3bf3f6ae33e920a3b84e7619bc43f0f030f3f0234fb49127f2449ec8a3f1307f12bf88643bd12cdffe9c19dc4818cb2c7dd733997b71e4c8f1415cfe827040a65d1de96a39612796967995b66fb532cab3c8c52055dede6a98588e3ddeaf1c72aac5777accd97e305f79dc7a603996d55f17cbb9e5dab3aee557f70571af78d269be74add6eccafefd342de9a5974efaf512a9fb82b8f1233d25765c7a243df2b30ec45c0ec8dc8b2fbef822d9ec91af97ba8f747ae9f42b3b1f25eb5aae9653f616ab820597591e3228875b0fa75f76c7e925bba3c52f999b591e32f724537fd91e7dd92fc64a18dba32f7617c6b01839c7779db3ebf16c257b5f8fbe98fd90a01a4bc7f7caece7c22e2b2e875b0f7c59b2b3cb33962e0a71e9220fcb4a90dbb0a99aaeec57677aa9fb82303de3cf7439c6be59e94734c82e871ced8bfd6aec738c875b037cc85cd3b79bd91da6934c96b465377557bd4add27734b2e975d6e3c665b7eea207b2db6e55fca6597684f27dbd29d5a2e3bc8a8165b2a753c646e1057fbec38b33bae7a035ed775b5389376645b037c04b1f28393f9b25fb769beba1da4f385db0d78b76b9687cc25fde321735bb4b09f8f4bbac9749b367575a59357a5fb7c04b9db53ba2f88bba13c43e920c72815cadc0ec41c355784a109b7aadcfa932e06893cf15a14f2afaa38958949c791eca77de3b91e249b25520c4ec57e0fbf998dc11e04bab48b9727c8956d3fa7f8f1c866c31c8fc898608ebed76370eab2316a542bd9f3a28cc1cc56462b25c13eb224a28f386986b082316ae53893d7409094b86482f9907f59666666ee5813c40d96ef6a924148d98344129de027089ae00ef7c1239141192670f59694a4230ebb553b60dd1dd7eb2d9971afddf75ba157eb5b58dbeb4d50c67cadef4bea7aebe8b9d969e7baf9b638fbb5b8f2d637cb354af6d5ac09ce5c97ddf54c5a923deb5707bb938d786705e2e22d1494565b1d870cca589fd1a3b1df7d809f735a9f1102f3d3c6b52e58edd7f3d68c993c84288bbb40f2070fb8186369045c6c787537b9dfe1fca18c0d03420c8105111035d7c61583bdca97bb2292b8f2313865d1b0e11dfadb11176b72f04ff2f17e7c3bc0f7cbb9d43a80016a80320e0067a04ac6144c4e50427b67af99e06608324800ee860d7b5fdbb0c7b7b8b9b9d96266ebdcec856eeeeeeeee6855816783038f8d78a33c49e9bd88501543141f239a8060153537323ca73e961befc2a9be51e64696241cfc347937e6e0cf07fc64e61f31dc6999630d38781b365510f860cb12a271ea92510f6358edbda8ef5f9ec75eadf6c52911696930aa6d8d46020ecae0942a9bc085280e6f31c7ed01f1c6c7cf470ea6c15e6bd38a27601f202278ec982bc55a9999612621943dac2badd62c2925263579869d5d6297d79561b556f96bc26ae1572379c0211e7088365dc1cf0b997bf488d223728a74479da01864d53db7ab03689121c81f4d0d0d965b8d9a56dda0a96c23bdc45db350ce36727b031779a0715239226eb4ea888b2b5de6c11e89043c8860af8748c27d3428a6691d568c23681a6bc951c6b8e5c8a64004165cfe09c7941b8043d7ba6565572fcfab0b324a29fb48b8d2a75153f414ae94438d843dc97dfdeadaf5aa57bd6affea7e0f6b477ff655afebaa7dabdffd39bbdb9ab28380b820790ee21b2435223a856ebba3a57dd11f0f9327c4412965ac612e54262e4ddd04a1180cb0b961fdd8dca8a1190107ffd1dc2b5485d6739bfec099a63ff062ceea121cffa33f3aec75b673b1236c49e603c54f6d19a10c28af7621ae758ed1c4d50ae383d8ebf81c31b4877527fdb92b6d8777d0563eaea51d5ecb084d6c70e0aab6c3a92f1bd256da4ad3814356a581757853b9eeaa591afd4101571fbbcbd01f7a71b772e76910a72a124e597409498033b228228c0c280bca90cc2e13caa28833b225c0992358475dab9519cd7ea6c4b280b0d79912f6fabfdc19116f36940ddd7ea619714ac914b7b370d9701623970db1d75915f1ce0dc8dc1d6c33a2cc0afa53dae1be6ca888535fe67393f450159c22b282531f0f99f6e9fff8643e473805a9503dc13f6d958343b959d42e6e8dfed020b7995986f2b0d7422e843ee88e5cf551a37ac3a1fde4bd58118afcd3c4a5bfae7534343d4b5c6a3f3a74bb2fdb57bcaafd329e8bfd87ccfe801535aa6fd3a87e8150acf427c67ab12128e3ba3a8a2d6115b502cb0254d124d01ffa830dd11f1a346260434394fe6043f4071ba2449a8eb6a3add8a33dabfb852265b88d5d71041bfa39a2413a2a843dfa437f5a48eb719902d01a862cd9423c570a29b97276b7d5976d757dbef0d299cdbe3b58ca3645165e69159962a1cc136a52b9ab8491b24dd3b68c84952eae9ad0938962a548955e6196d8e25a8289051ce7259faeab323333333333ffaa94b9ab38431025eeb4107af23c338ea5f309777853abe04d29f2d74572070810cea75548907e350155f2a7e975244aafffac234333e82ebdfe07d2af189c8a3739e14aa5d2896dab7d4a376b21b7dba79bb8cdc39799b9bb08e84220320c41e142203288e04a2379d2c11b4b27dee4d4b276649984c0474473f71ed6651b57ca8e8719ddc13789f19afc2671f3c1c45a3becf5ea933fb7eb0a388dbd9b52d7e7ba9c38852b6af0c44d12310837b8d178877e6d01d7a5939edd5a65713be9d0b6c38de334923badd23122fb6dd4aa12a77833eaa25ab355a37a98423660bad1ee908f6c3f9a13d3c9633c59963df950fac97f207127fd843be9489cbc64598ea3dd27e9b3d8558ed49d62a93b457bf2a19ef41fae731689d2af93ec75244870cb6172c9dd6792e70d982eb5df109787e95ac73a0984bdb6564dd42a19241ed3589665d9af6f3de6945add35ec55eb517a94466a3feb733ec6b2baab133046d8e99002f74122212024eaf6c2d745d7b202072fbbd65ae3117a48299669f5baae4bcb30c9f02dd7eb7ba8af1da4424aa9ad2db85c1b0713d28ba1d28b5ef4aaf06b265caeb036d0e55861adb5cec7d9c1cba38bb4d514427aae70852852626458b1e8ee6e9e276e13ea9c94da70adb556aeb5d65a6bfd68d7daf5d90f68bd1eabc7965cafcf74a08c688201a7825b3312dc5aeb7c0ba9b4d25ab98f74d873c47b41818b17da8817eb64d7cbaed8bb3bf57ddcb65f1fabc1272885b0fac86115bbb0abd69784b8f87a2853e71b327ec65b8d880d71cd0391792295bd951f91876a9d07dbf195f18a93c3374fe5a941ea4f45529d9041f50921d5a71ea940324822b9b22bae981089f1cc6c3db39899ad692d036c6eb418a08cd2b9a170b9ad7099df4c802a1dddd3405046767eff70aac5f91d451fe114cbf90d05a752ce3fe988e8ba3e019c1175228cbefe750a2ea37ce5dc729373dcb11f8f2eba61230506e86895e42142a7797c8c6acb20a346759c5177228c6e15156a94ca3f0e93401bcf25d1b79cbc371fe48d652b4f10eeabb92daecf03261a1fa82c1672bdbed211393935aa3b7146051261a8d88fdbe16995094401e1ce94ab299d851e002670b15f9fbdfcdf934ec7b246f874eb810f2fcab1ad068a851ce3602b6958d06394b5c0c57e6d387eaf6798898d359c44a9abc14e8548b5f2d4580bdcda956762cf68843317dfeb4bc29af2e6e26a69b057796e338053fceea21c0ce4094cd036d04597067bdd53782693a7a12c010c2bb8df87b660c139f9bd043843ff7507358a7612200cfafee91fa24b871a8525b9d4e8d22e72fb27e3fe6914bda4b7e15214b88ffe6047d8124ead38154f9fe9d800ca90a747ac7f426a0f47f9ab97322d820778eb73c4dbb642f6247dec1f38435fa1f0736986833b7aa14a872e7de4eae94fd36a25b186707126a0ff59b7697c19762fff7381fdeb0b2fc32979959ba0cad45083a909239c811d76e7917ebd3b1d23db9930dd18a1d7fa3a4bc4649145167358dd30516fb433e1dd64f74896371b44b443e8f55663e507373f89f48beebdba48adaece8b6e365e810a23d75abb568991ac6f3682b80d63f1d6ee0270868f75158041b0b719d183bb75a7def4b36ec7bbe9634312801effeaacae025d855fb8fcd9f16b18c201882870ddc95b51892bbbdaa8ca518bf680d248a9b564c50525d48ad0b2a818387addc76d7ad961e0a2f6fb8d892d4eba98ae63c4e56f8ed185bde694659d9ab852b46d9d5a137b7761afadcb32b97433680af180838f773199ce3bf44970a063e062b0ea84148f953e1a26dc893559a6a0d871d0832f7510a2600a24591d544113948172fbbfd1a8db9347081503673af44cff685aa858befdd495ded2716fd1653775da593a94af742757e952be75a4c36d0b0a12bafdcbce9f79e4c8d591ab8ea7c8fd07928945027be95ce9e448989c64b9c39bf64abf4c56f54a973591a86d618290fe1c8845c4224acfaec35d7bb4276a7598d853c46ce926c729dd2427db5eca1e2d0ef7d24b3647d3ced9533dbcc1eee3264be94e3146cb32c11913aee646aed4a5d8133df7d249dd89da1f3812e92627314a77bace1de527dde9b23f704739fd60f2939be430ddc8c11b6b0e45c46bd914cb16a180941b93eb94aeb33dbb76eca7b1d1d128afd4c11bae8337a646f5149a4126782526f00d4252549104462329b6308224ace07e1089773b06b52ed375995c7e0387552b3e325f8c9adb10c945290fa73805a5d8821a6eab04e1da7026de8297f69cf8a0ed32076955797e0cf6f83435b5d66abac1a90f0a5d1d9c824a9062685ebe7c20f841b08a6f98371c061002a674c418494739f8566b8233b1c597815b2b44c5631da77863c011b79e6f532d03d893734aebb28dbd0b478203d7232919322873511388a287aaaa595d0a6bd009f1b21c9ca19f534406b02aa57ba3e8ad8eda19c47df087dad4cc63afa7e1543d9dd7e775cd7a2b3da76ab51f0fef5ec7d0c0d5d36a4ff7b21a6c55bda1f495638f5e86da1d50484a61d5c35a6ba574523a69a5535ad201cc92a5945272b025137e322893225517b796c2c9eb7cd91446591c7bd6ebb55a93b7facbb9f2cc710a955ed735af19371cd8a532fec0b34c2e73ce6b5e39e27d815d8c88b424d552785cbef517395e9429965443c58430dd64aa753eb39c69a6743dac3bb969f14deca53084d6c4f10ef190b3e4bbc3c031c61863e41823275f535313638c31c8c78aa12a1c09ea1972052cec9c446e694d5a2f2cd33652893b82105117aa60ed8083361c395a57a894858620b45898cc436c79880af620644e68888376c0b29d60dd7a41e3c1193e0e068488dd071fa1f52c765dbcdd114fc4bb2138156d84d00e21041c42077bd547890c1a20c608e78c917925ed275b05b5559255f49ad755af3a67a4516345ee05a720cb26bcc0829e094410712706c1400d542244d369d5d0a0aafa0554196eff23c085571ca0a6bb3ea4160838d3d754c07d343fc7431953ebb184504a299d1336349ac2fd4cf009ed93711117719216d24358091b75f3dc6e276eff8adcdc763dab58a4f344250565e559e45a0eb71aa7dbe298c6714a9a7032d50150c6c9e175e0100165a01cbe07a7540e7f04a7520e1f834019a6c34721d1094ead1c3e1e81325a1cb61c1e3e560165c41cc21cbe1c9e8740192e876c03a8b26123f7ff180a9510d67eb554ba3de20c24208c7e432cdca062f8c80538232ef9bfe8850b8b3a1b215045c2f071087046b4a208173ef6d422f051057046248a30885870e1735815a30e900b5f049c11abe829028255b1270a295cf807c019310aa019d18908a3ff0da0eef00881e715abb88883396f355ecef705e667c90bcced9279636c51378cfd79b13f2e5dbc4510d5875f8539bc47b9312e7f71798ccb5f8e725d0e6377b83ce5c20befe7624f38526ecc536e8c8be522cde52ff67b394c8cddf1729797c3d81af65e2c0ff0badcc5d260af4f2d6c45ebf0ecc431dc3eb75861e122445ce46d4a51f9a982e567e5a78adb972893f644d1d313c5bc27d68893b0d7d1893883a9fd5a87fb78c9ed3e039ce97fdc9f9b8d7975444a1b91d2796c875cb21188515b8dedd91683f832ace215bfb8fcc5b8fcb95c4eb95ca4517046ec89305af2d96e41da0a62ec38034218f3cd452dacc916b9f32bcdab145e7111af2e773ddb6a44efc52703e10c5ff4ce7bd23150107bd532151c2331225e3e0f18246b2ef69a8bd55215b8afa6e3223622626187b7c62b5e158be76eb4342e222a97632046615ae4f8a7e5b3a092a5591cc4a423aea34ef62588c832ad9b96bcc95ad3babec9a4a6757c934d4de3225a0fef767d7cacb974f995e3ee75c6b808cef46fe00d663fbeec0e3ec6456c73c8cbc72017b5ac2cc1c1fb5d351766775ce7b73de1a0f1b1d1ed1f4e0141195777da52153c93c91b0265704afb30534b859e30247902bc89d25a31eebaaecb428690215f6608c0a62c956802cf1358081a0262c2c512937a939a954d8c5eb55e149b99a5c9ad495c8a2694889b95c69d08e408500c12bf38e4469e223ef1740ec143458858733d9eb35975b053e31569bc893b71a7b71f6216379a250044f1012e3ff270b1da0301b85bbbcb1246264138733367165964513b307b7e50f90957a87dcceb8814338022c618a1143300ba9fcc85f7f3b82ec57f0460e6e638a38c3276101a1aa0213a434243560c814d4b3623c15171e1900e94f8b873f13c61ff8319ec2c6b71caba6c4dd334abdeaa97939ba6f959a7ad31aa81b32694b1c230a59ca99cdb6fe615c8dba7b636f8c6214e5521e472eae4722a08abbc684511cf17872403b9f9386ac10874d9874f5006b95f74e27219ee1787b8442824fb1cc1b2e875f974b908c6218bdaaf5e35707168a85501df2f9fc57eb79fe7451a1a93972ebb0ec4cbbded0e939b1eb71c1387c94d97cf62161c952dcf3e81d3b7731c67f251da2571b9fb34ebe3d29b74dc7d376ecbb3ff387d7b6f271f5a9e1de7445feef2e3c5c266ba994c4eddf6962eebdbb4098f9a6bfacae166c3c73531e94e271fb067c7217dc3ec0f92dd48a4d35b48a61f27cb358adf62b9d3c9873e769c26bded8fcb420b1b455bbc741fd786b3d75cd34be7ba785958e66b1243b77495eebb714b8f425a256f22bcb46f7067cded40ccb1e150b9f3a52e16894f58265d3dd77d35977bf4e154b59f0e4aed27c465d2766a3f22b8978ab88033f9178bf060721ba6cca4ad4aca98295e4d599b1d77a9c5007b5c078b2e8e229c2a3d3e3e114bde2d9da674ae55d94ba512110df4e885a08f0eb87c88a2dfa8a68386c34c4244880121d88b8f1603ecd588174287cd67a2e11911a10df7a331758f91c9284b42fac89260ec00441994f9a6d1ad35ad926cf260a3661bdd5a29f770cfbc8f9beb58779a5687ce0f3ef71f6c913072f2613b1f673b97eee3c6e298fcb23926cfd96060410991f4ecdf2f7b233828271d874f22653627fbb5a241b1dbb5cee45c57c2be1d07fb761dfbb438da4d6cce76edccfceb38fcab469e469dd81c23271f4ecec73939db1c23f3393e3a3afa34aaf65c3687d9e6947e59211a559fc39de6e2ca73ebc9f50f1addca95eb6d9ac3e265738ce06cd8b7e718b95ecf249b138936cb36276236a7feb23951b342b7fe47e88b4498e5d5cd555f6a01f771cd96e04e38d7f997955c65d09d4617ba4822f311198b41a5df4ec329ee316aaec96f702ae5100aa5540e4d873c38d5e2a42338e572b8e4c22fae2e7cd4e1d4cb774e220fa7fe20174621b73b844538d57218f3984e050b2ee63077b1b978e6a2835c4c4c8ce51161a0b8f12d2db787817906d341aee559d4605a5a4ee7d3c907e6c6c86bbb222d8fc9623ac89d9e452de674b23c68dc15931d201adc959521ef54b0e0560ef396aca583dc4acbc9902952b0b26279d45c96932153a0e0b2b00869e9e45d89e9e485e9207b2f9d0a161ccb577e7a164f2c31ee09ca5014c0704f4e80c4bb742a5870276ff94ab6d241ee64e5e404e58c8212572b9dbc27f09e20c7b740f9c959a0c682826279bcb824161a28d9c125919498bef213c8914eba1e4c22954a1245de15d2519ec5124aa96479c85ccce5c81561b81856051527580fc618cbce5946eae4c5e045e9e40d52c1a2f4acc4ec2233050a86d0889800ac90832b34a9e3ac835c378f943b0dd0022463b873be9051c1829b8fcc92b71c0ac8228b2c3a79b1ee9addd6595a676baa60c159676b5a16a55276f076272f77d046ae8a2cc6fdfaf0ecc580fb6872645026e7e40a3d2881d18db426ad1796691ba9c4fd3379b4271c28dfc9516e8451804a4550899609b9ba3aa988496e34891d862808614545112a864c915b5a93d60bcbb42064502673c0659db5d23a75e04ceb2671ad47b611ce48ab6f26cf17d2602ffe85a9072cb8df6beda94216b3cbe6623f92a6c784f1ec79bc437c4908774fd3666fddafa5a025d90f7eb3ef64342b7305f7fdfead8a379083445140485313a3a30167e069373bab7ba320344d1fb1a5123228f349a2941b778bdf8ca21216701faf78384817b8a0dbf396a441534f57c07d52059c3cca7fd0dffac97fd477f326ff719db3b91b769397de75a7ec36b3271f4eae1de724c7486673b477cf29fdc40793977ec22c8ec94b271ceedab96b7f77c26eefe306a53b61f6e403ca7f1c94ffd86f738c6016e7b736e7849dfb734e983502c7dec521006f74aa0b9b93e3e22eacb53e6e50eee3e6f04643f1117fb2a899743ebafbb8090ac2c513d1560cb4ba9d026ee52967b9e99fec611ff629a1805369191638d8d59b492d76d9d53a23db33aa419ebad9a89ad6c19bd86137b301d36dddcb63e77252f7d99b59d26dfaa583ecb9b007d37d3cec8d2759b8d538f5b0721c2b8f87d7a6bcbc1c06e675ab01833dc3eee36edd7752f7c94bc2baed2e8fe997f7b06e8c2d4084f1f2adfb62dc97db344c67fa4bc7f216ddf7e29eeed27dda3dd916b7e996eee3f1e2c6b7b044b45b5b0d16cb433453c73dec0d611f287c4ec07dcc73e362dfba120fb7fde31f86fc033be558c7a3e6aed8300f61e6e104b4c6a994f75987532aef154ba46439a8511d03b127d4a83601f771348a4ad8eb0b53db85a7016558f50a0e5ed2e59f5699bcb59fb40ae5fdb14f77cf216afb49c7416e7ba9dbeadd6e69f289ed9f2c423a91483f0cc446bc849154c1414cc445a42cca156f3cfc66992d82888b61560e61afb5cb9e5669d68a38f0f9e47fb64dfa3c7efb467a76f2ee0b4f6823fd6ce79fde2ce5349b611dd79f96a4a191443c7dc4caa28598e1d0c951c229b82006b017b918e7d51070703f8f63b9840ccab4acb4bbc7bc5dafe06094d0f3c9178275e0b0e77110a512705fe4e999f633451e2e0357611938b621cf1ecbceeb4b2a701f4dd56a242a02903bdb88bdf8137753d8639a22dc69bf9ab7dc8ae0816f1f87bcdd6f6b8233fc22ee33fdd025d844ab546987d845afabd6ab524df2e83eaa90687e376e7c67f682a879ac831890963ba22706726e14c2e2e86895656dba250371b5721c0582d1ad6dc11c300cf7e2017537ad9bab21a830803630028170291690742b6dc3ad140db752319854003912c01ffdbad22afada1db602ee77a53335aa9e2a61209c0e2fb9f52527709f8923613196a6a04243f39508d634aa7e76348daab7763e9a223e453b25a21534f570b5be14d43e244c969ac0fdeb2021fbd56a0de1ac4ca374bbdfa950b53608f0cd9c40b8ea53795a054450adb58811e50254d1d7532128c3de7a5a4d5e4fab8032ac9d947f340915c3ad9f544825c57ea55b0467eaa9507d3df2c2ad57dcfa9ed60a6a94507ded02f759415610943105540151a7c065e156eb0b5f1fb54f5371eb4b52d8afb6a587db0ff354a851f57d84f1fdcecfac21dc47857a20fd93e7b79c1c3beaa67438dd49070e922d31818b9756e8d6a3d820f6ea79ab01b9be7ec184b39254ffa128119d02ac9b0d216a735e608085181cad6ea87da3eae3ad381cf5ac6ee0cd129d45163746f84deab01b37c89eac2bf6eac3c07d54e88846d51b21ef17851cd1aa3e6a547d25d53e6a956494756d95b2f3491e0d9b877f01ebd461549d4bc0993a9580306ae4c857b264130d0dfcce71d032122a84755488bdb96a547d15c25e8d4eccd54decc5e94421bc432dd9d8c35eb55ac07d51c8ad5148ac54c806ea6e16eb50b71271fc6faea60e1c6a3b5770a6be7a81abb556a1fa3eeada03b4e25e8f95bf19913886074df0c28e1576ac10054be496d6a4f5c2326d1b924d27cb1a25b795616b31fdd9f37ea50c7becc94379198f46688d58a119ca0ee902389923ca4bf65a7e818baff4c26dde6b9ec24bc4b2cdf54e2693709ee99599d9428e03d25d22cd5f40b2abb4fa9a95596d5db642208da5143e9000956b8d3a4474df7040a4b1bdc8b021866c8600a2276dd7b222ac48da5c97e508a4f96051e802180c006b9cf6e23ee666c4e01dd1da025763d1b0675934468d6532d57ad91a4bc39ec5d1c470c18d050402888277014b880344c1db724ff04aeec225086942d5d8b3b84b794bca2a7fa400a1fd2684405c6a599f67595be0e0dbaab556fbcd4f1edeb5b85681e4c89300784ed65a757022e728dd1844e46bd8a3212d0dbe0e70460d08a3cfdbbf141928033bbfd4ddc8348e9f537aa1831eff860e14b8f56d0abaf83417b8f517db18ec7513ee9ccccc7ccbbbf2dd3e6a6dc2688a2fec2c010888158caec0b3526a9edb705f41c9ed47c82996516fe4e918a1904199ab42139c9101b8e942930e70068430e85b40943cac97817376169b87c71a109f7723760b320dad568e33cdd001c288a7e7cd06bdd3cac099785debb28e8777e7c5ec87802b6f992eb5a4cb295ad3b95aaf70458b074a78c34a096fe0c9542c48ad052dfb438352fbf503a9d4a8c4ac5685492d99a20101000000005314002028140c074422815030201697d91e14000e8fa446745619c74910a330850c42c820000004002020186902055bc1ce1fd44f36be0baecfe1fbfcfd40b081b3021d0aa53068fbca4c0789d551ccc246f7e222eb6ff606fddac38708bcfaee549e97329b0112e38f589672446d82685c3edde7dc4885784500ffcce882be540f3939520cda733ac95e11781128a42d0dd2bfc438099659834f70d2078122051c544503d47f5389be648029bfea5ca53fc30d504f5c2984dc96b0a69149946f34d5dd3476ce1d9eeae64a26582220bf11b1290b4c4b9f8c0a595c8843013ac42ea45cb105054dc5be447ed46c0bf0deeaa8d86373ad2d944ff8b3e1d435a0463ea9dcbc099045af607da229c51fdd50eed749d36ad4ebb6fa98c2f66d0241f328f3333cdbf957f3a17e70590d65d178045856e351fa2df99e5be5f8d3dd8f47e06845a71837b8100a65c7f1509e66c10254e18531e135c6d1ec158d16d37d41fe38e0a667ac4060c00ea79cc4456050795ce0f872ec663a0345a89c80d337a3e4ff8a68f028347101230cfcdd55f4abbb437fe3fc9610f3727ed1af9856b0ac635005c3af92efdce89725449a01ac17438d6e7ae749af592a818cef0ff7e70fe38020188f3efbf99695881a4ce1e9c9686796b05f08ad2a747320d6e08125fa47815b77713d8a141941f242b39d6a8cf2d7b45ba39202f8ba151e42595cfa7f1dcb7f7516d8224c85b0423f99b9ebd3d9fee4b071d5ee29c5452185ce4b85e054693812c4a104c7e8c5b4c5a3f7451932b7aa205bf8c3be43e987db0b8ee75c2427131948da5fa156315a4c6c3cc7dfde09b4f4cbfda6fd2434c8c0c6d948bba87dd3ce0ddf2d8782c7589c64475d7af89dea30f6982461b4c8dc8b1f56ea15612079a78cc8db63b30c577c5a5e0ca2ba36118ba46e5b6a3e51d532cd3d02f33075c5badaba9deb7604c0f364c4a235c6351f0beaba9b4f561232667316d818df8778da651419cdfc9df2d5c373e4553666f8a4c0692e1e7ae432e8521dbfc24833fde64baf4ab540fca7f90def10199e0749183f8183c1bba08323d8a20c0abd5a770b872a7eb6df41a356600561805a5ae9502d965742d9010c0651f821d6cb9f6a915120d008bb14eaa177c9759490c12544ea41c9d2030fc8cd6ef3c9f035e90121f5d0d3f099d29e1efa85e36f7b078eeb63481a56c9e32349dcc2c3858f520fcd50392a51f0130903ab07b5e69183c16dd921719b664bac6beb1b2e7c51fa31d2990e86e2abad027750d3f09f77e381cf2a7a5a1321dc585ea58ec80441d75152d012d6a9976d4828a8b659e69593f574929fb9605227f110c3f6a881906d339de2d31777e7a63a10b2d45259994525495a2f2541accdd212e4aaa1939c7f62d6e9d4b0f2965ebfb9ae502206b1d990380cda36d4a045fd60ea03c0b87e08550575f099cd9b774daed4ea6ec5b2e1c113cf7cc30049eb3f0e6f204ed49ce7406c141d71f4a2c0346a57c1e66ec67d1a2dfe7bb036fd06dae1dac4de8073c4ca0d6a8d1ce11c5c50b88b9ba6b59ad3483027f37bbfdb56eecd1fdde3c724979e94e5447e53fb6c662fe3cb84fa3ad60d5b240e057733eca314ac32fc63d9002e541d494b37aad66b3a014ac2769a043675ae59cdf62cda4e74dcada2817abd51d97fedc7c544a57c84d74bc26cdc03a3873ba9fea5c8dc48b7d2ec6efa1a3908340f0df82ad14eebba10d2d3f4a47fdd5a2a6c507822c0599a6b57c15e008fe694fec76720d54e126554ef4b5c40e22de788c27de4d7cb42558ff00f4c1f5eb6a905ef329b12fee372f208a00ce1699bcfc9ad230e8d07f8d0b457c8ab3f54340bf99f8adf95a00b12b9e98ce08f19d037a56b0ea196682c561352a4d36010968b86185507df918d49ba661bedb75fdb18c4ab605c811aa210246049cfc90396888cab520295797187a1cfadb4b91064a687b3edd7fda645db588116dde8f555a23302a4088a093de880afb0195d2f60d63eaefe3f540321483edfbdddb8326c631661bcf2ba61bf318e78761558f15abfb370e35500db6fb115db1f113c8d0ac85f049132fe8c6d40a050ed84ad4576a8beec06832cf4e733ebdc24099d04003eb206c7b3d406c7866a2f9541de80a36e17d0b893e5219d26b0c6bcf2e0a4327db8443847178f1078163c125818f5bb6a747497d47fda0ae0709c6225419ee5b2532174acdfae463aa89e8d934a43592893098350a65a303720a2bfe8c5462c46d90fee734c610617cfd71a1bb8c236e3d354dcfa9cb57dfa6fbfc40e995d57aa430c40e250d06cabc311852a2819e4d451b7bf18b1dd7f85a48b0ba43175da3c853fe516f3c55bec33be1600f211e864eabfe512936a6b89b3bf2f90c6b77754cf4f786c792c1eae29706759d011545690c60409e3ec7fb0d1b2206b2281a0317ba1bb10cd7aced3b9e1fe052e89f2da329f1ac5a9e6692ebc9d39636c96191df144dc944a4e44ff9f2088082a0191cfed66c38ffb498fd3832cced26b7eb08a7b99b42ed7996385fb99929501edfd5d020d7ba42268934fe1f9f6ca975a0fb53e952972e7cdf103464ddb0423524912b9090aba8a6941d0e2f5a60602ce2d491df0daa5a102caae03f7f067823d5453e3ad76df8ce7e1e701e86ddea9b3fdcd89949a34e722c704c5383b6c172ade141ed8f832997b2b97c6e970e29931b4b3c20394b152d5d42940bb743737caa48a8906fab8caddc894f87ed4dbd13f46b736bed456d6539f2ee3a3264c0fabc4de55bfae6a83473b7c9e3451770e8f20fa5dcb2142466ccde39fa34da920b029f1316139857060afac3a271d7917b37bb188f03c9d9a9c6323d1d3b111a4104f4eb3ec8f486d2b828ddfc9631f4a698d195225ef6fc220d2a9401f02ce4f731bfa5b2620e8871101678e141227b6760fb133337128f1248e21f441d4734e161a64418cc4c0ef06610ab196226b87785406bbe157c062f61bd0dadba29589a8aca7e19b0cf8da5c64febf6e80ea4e2298781884b91a9827bca034568d1dbe3880848b076c4411a67fddce53f63a89d72ebdbd4e5a57fc402e4784b929211b3a438f1c2d80c71a55f5bdebc07db460c7b5de11e417cf13e66842089ba35e1e3759ea55e5e7070cd6b167273ac5f60a0de9a470efc1dca503b1855bbce7b9cdf233686e7e816d8528d7cc7a6b1c111c3e85e88665552b2a553d09de8118dc2b77fcfec20e5742387311a781c17f06cdd5691530f1f652e9a8ea1595413e5ebce1b32800208fb9850b80ce547a24c57e03aa38404710564a732777757092ae9bf6d95d9cac5bb30fc62d826bab6211d880dd80f1f513d906c91bc941f9b3f741f42b907e757bc17436586fd1190233ad0253b570d897b194b64a9ded75b5e76e1138af1be479c527e9a1463645b5a23a3100261ba2a94313b46003da2d53f79c57e5e85c9b92d6e99ede1ccd874e1f7327e96fcc5ed416366e697a86b06e44bddcb1883ee3f3fe7361f0ddbe09621340cfdd98ca5215156a06ee5d5c9abc32b11c8f09b5840c82015e19564d63236e295647b3fafc0395a858569cf33090ca567bdd3d6b35282afa406c945d199c4f74d677bbef1ed694b09287ab5d5a4712d6ed69481f5ebabfd3b3b9ab65ec040fe3f693cea2fd906ea46e6587492bd8e99b8c57ada51e6ec2f351eb9c8599b0f87f48226556eddd220d22e69ce90541eff0b6c8ab4d5be8310f3448a8fe4a1d6d50d3d1641bd7e153a1e2de45312fa95786a7e736d5d87255d368a6ae2a111116975d4a353955134f6ceab56a12a3d6166b5e7b60da4124197e92dddc3466af65936548fe9fb85ac5b2379d90bd2a94c34e38de32c7394fa522cde68aff4061d54fbfadbcd6e4af99e0a86cd8eafcb48aed587e751e0c46037991264eef05c9d7404fe8a25fc49a3b7d6bab867c281cd18c68194593af66a7a8a1524184fa1614e58b48feb9206c019a4d067612f984ef4a05fdc9103bcac389b483b2a2df200024b1ed2a1f776e81802af344b07bb886fcd9578eb2ea6b403bf163c451882672609560eb29499d55127072e14a8054edfb29cd854195eb7a480c98fed1f5ff12415a34da11786101b1d964c1ecef3206724820661f85efc14bd918458325ac7d7600dd4b74506350a281677b2e3b56c7bda2776c6e411bf88eddd23abb5f07635906991beff466d01309f929dc2e44680587371ab6b8234b1c76a6657483647582f10599c192e4e8662755f98a65ed1a16d54ac660249537aa05747ca6095d86ec20f13452121b7e229933ad884af322db37d954e916b0a240f8817c938393fbd4384b6f39e23a91c33a1b05cf0774825cf326f1823bee26f154fda7f9f5f2b3d3c1fd3b8167cbb0e503aa1673e18367f96ff5eb51b69ee40b88701fbbe74ec685e9125556f1168f791a137105568b9ce980604bdaffcd0c37b24a1211451dd4ddf2f473b7d353081e32da91384b0c9f68f6b6302f3c2d0f21050b459c55bd1b93f4a53a21a8d71c976ce83901aa5fa193fe721654cc4299a3fa16efd9b12ec18a381cc68a9c2512d10f7e685a8380700d89b8f95bc9c1ff9e0707069e87535e5830b7243907a1daf9d568238bc8a100230975984445d96d4c687c4d5450f4ef55b503bc6a28da052c81e8bb0b9188353925c3836bb785ad6960a49877fce9b25db2b98edea0db5aacac6daa3e23bfdba3db3c5887f6d3fb039d249dccb2bbc9c29b4fa4c46d967cf732bc84287b7093be71cb89b53c9cfc97ae4a21ce420f745c708a1aa48deac31681da03b4c5debf1846cb8182367f99a38ac825001cc8e06812cfd086164e4d0ba8aa603e1aed6353e4e168527c3b5e48e33651cd31b9eb908e739bf85a012c6a3c4c7568b40c59146566b39500f1aa85c9a95a0e57dc488965b87f32a90b85090217202e09a48e0500b5cc406f60636fb90f98c1b949ed235e621c5e36e987ac8d3dc1a93f81ba104ef1f5494c53915908ca5142a4c458a2709253295a412afef968df0322afe835f5c27bc8cc3a0168bb0de26308248a27c50fe2209f86c5947badb9d328e386e66fba4e06df5032c9665bc1585119cb0a894767387bafd0dd64f52d686230a449638660907608c0a225d9e149006dc660dc0726b760c0e41da82fcf5a7c475f08e120536aa32df58e3fd61abe6fec39842df1193cf39b91001b16108d2a9b77d23b09e9750c0d356aac01e19958686f0315f13424d074180b70417f5539f5622eda0dc43dfd120c91c187ef409d49a03470f8d603064c05d773a0c0527b699a2551119aa14bcd4f329c078d6e327b133c24b3fd0c382b45774cb1eab6338cb7418f38eb36759f2303509fbb1152fc43b2c23bfdd614ed837e057509063a274cd85004d98368570e5de643337e40c8da76ad5740a2e6c7d50626e44ccfef97eed310e16e4aaa002d01277979919a73e248739cef9c62f6d01d36ad6d46fc41adc164efbc0cec5c0900bc022a78b7644972101d94641154efb1b8689bc8fcd0486abe2e4f4ddcc23570f2cc7b463fd2d475354c726b610011859dba09fc0ea59eb94d563b2a781246543ad10f0ef02b096231d9e1ee6de39260691c44fca11ed2801014f74fc025592d35e3adcaf54440ec0acc3e0c8647599f64c306460c2c89bd29087dc1af7d08b88b02d90369dfe09a036d0fbc3aa034397d1cfccc2db74d30302b0875047840484bb64f5dda187fbc5cd34bedab42a6dfafed19828c382280c89760191fc1c7c0f238e8d053f1f18db5e9e0103924599c10c1944252ea7779d61ab26e2cbd3dd9616abe1be35866129ace40a93e6af7551988bc91a438febbc397c48ec35cb452d7ab5c245e52d1db7daccd47ad19cac19f0f110d22148ea97295fd518926bd3e3161e163c02bdea5842fec5fbc03b96a278f003d7451ed26176f7ced141d1a8899e2d56194aa098e6a36115ca381f4c57a4dba8393745a76e6a80329dad1eebeb57cb45a4a4607596300b5fa9872a7519838a0b7126867e9215927f5a06b48135088d4cc12d1317c7afe54a76cfb06d48be898416d906f7e72f385cd5ce40e06dd1b04aad062d072b8f1bb5347d922b99137dc49d01dad4ee1be080cb342bf9f23ca13a3b004c0754d8441ecc5b2281515ccc92306879275ac94d50cb68cecdad6f05ff18773cab3d7bde4cfa3b47c48769566367a544ff42d969366009be71eee38a429447d8ef29de561c118abd7396623e1cba7c3ee8a687f822f314f42ca3be1b4a58657100584eaf69d186d73596eeb2dd3456d97915b068f0b8ca04f41801df09e5e042509af04fedc21e0dad9c220d7bf9e99cad31c8dfa3716e9565c12ea63135c71ca663ce810a48b12a33617f017a2e849d75edcf8236e5068c83cbe38f728bac80c68af15a083cb3d974b9ba4ef4618d1339a80ea557e59c575e659c5a5cc5a91ebccb0126ea9c3ecca68879927fa37f02e53e7efe7d1188acf9f2627d18c2f50bf76a36f7402d42e5c899984416901dc72d31270b89c67135e7852a999a69337f57b1deda9b5eda1c3dfe5bb3b8f502cb8b70f722aa249503e301d95552a6b94b96666da8918f26a7af7a3881b50c750d2a834a45a6b8b75642ba9e8b23743be70e1a7ac6a5046d67446f701e29ffef730b5e83d579ae167a0b96f7891efcedca80c9cb5fd39708f299dd40795e01ab56c65f57a04bff4cde15a21164111c7518a1700bc24202962ce222e56b79d0fbe947571e0383bed983ebd0d3813f1d54862e500ad8818d4cbdb411be9b9f60b52533ae5d8966d8f9d8a6c0b759cef59af9e0dbeb6b9cb19613b938c081b517a362ee2d9266cc6422172227f7a00a71589567ba950536954685c459a3cf107c07db3833486b009fa98170c8f64dd701c97bc56e60714d8acbda8839eed433a45e4dd67628e57cf317f246c19a4bec8923efd3d016a6747c3716d4ea92f95c878c68c4c00557b74b0ddaaf3a01ad2cb338e4de58fa24352e0b4eb3628e4534d97c64768a4259ef99b8a955aea350ef3329b4da541bcaba7dd8a2904ce35ffefe9e1b371bcdb510874d188a28803392c8205cbe82d12ec048781f65aca3fa32fe2c567704038b7771e4fc416e18d9e78da1bbe93ab87084d19d9b197c31e94106069094ab2044f4aa8c039027d7ef20fde4d822109aac9daf1af9fbcab678b47bb339603d41ba248213d363f86e5ce6b9b8f47c7d0a490921c5a1f450d23aea520cfc94554f7410cf7c12a01eed80181b66a7a35766c2dce7840ffa8c7eea75a30f2fd6e2bf7863afaf646b7de946b8621ef0b37b9ed037b9180d37a5fda00354adcd65e8fe63d01bd0bb172f3935e04b5043ae7583e7cc0082170b5b60e3a255411b7b125ab56b382533708dda2d7a5ec80cec8e59e1d95874c6b9fdaa66f7ae2afe4066b655e8f8a7309a1be5f32a27c7c03f3c099c987557e0746136615ce78d591ae1d7e727d6eb3d1a5377c04fabad2bbe2225f11948bd517e4efc1688b4df2c6aa7999ca5723b8c0e90fb2b31173a6aa92a8c4ca250137d3ead1ae14056b2ad399d88616ca40619e4bb3860a9fe7dcb38409f14cc32872c2a914806b6144e6090da6b6b4243dafb9fd551a1d6dbea7f6ab386de116d178cb049f28ff7f32a2f37ffa27605bfad598b5e46d239b0502ca58ec9afcc0139a2db8916cd7d4fa456b048f9b6327d8dbb409e4f3489beeaa5bcc5156aeeb49e6d1f73f40f2aa0a4b4913aad4209f3e4d10800c6be9db9022a768450555ffaf3017d910d421fc1d6142ce590da27351c6be26af7fdf359573ce0c9d61fbc4f49b594d1c8604acd2819a7257e86af4185de7d27f910da8571c2d5b9e1e7cd601cce028a014e3c2b89810824615691732803e39f2b57daf4dea66cccae73e782a1c2f349611643cf08a2db2fb7f4b35169746dae00dbcd278427063fb6816ee5185aa7639cc2d5eb7bc3c9cf460ba6a382e50a1120bd52c9bd7b2fac70b576a2fef8d3f3e69aa378840d6da500d563e16b807029bed5de4fd0521b996b0da467b60c9d920e1bde8394648c4db631a9ef108d6518a278ac64929fc98e1c1d8d8f76758262286ae69b79828fca7859830c9e092ce7924ef1563e6066c13909fd60bca60634bcdb8288993edb57336ecd205dbfeb53b998caf2d0e06efb0f6834a7937093b5a1378cf5ae56bc1224302ab950f4771e6731c774817a6b7c2b6808de30a5946d4a101c37029b7e7fbae2d392704309f2d28cfa64896da5a09aba492b9264864a9350bb5c7bd34ba285d4621c28bef640f6024237fe8d3aa39ed1d6381c53264e75b63426bf9eb7f0981622b7d5afd21320f7f2171f32d0e58f9934170d07ac5efa39c71ab288a34fe8dca9c7b5b792cde1076d2909bd2dc842eb591f85a738bf7545520c08a330c5e378e9ba8c3a0dc005384d905346a90727726d0e3fe3e704827d68e874575bea57d1fe48699f0194b9889c706e83166034192b6083999e6540ac8794e176a8eaf7e58e1a450dbaeebfbe3bc8f8b272b678bc33d083b0e901ac8ac6c474e48b5d2601f2d0dc6e4deb8342664c48a56e4f5506e6c3643943c9fe78243557604b1771acfd0073438c1bdcdb0a612c3ee8aea24e71fc7f857f5fbb5ed7a23ea328bf8e6c39c6deb94b1284d041d0313f25494f03b95b159fe8d2b3591aae53ef1c5efd61cc184b94452d973d399c3526bf724a2cad4bd80a5740d8eea47f6b08618bc5de6b4e1da77dd51426a6ab178ee78c881e0179ae45235e5dc09df1f75102c6fdfdf44dc14d31c35e506c86f21a5f32e138816510629cfd53061d66a8dc5c5374ac9ea9dd36038982443715be5bb66e1a17eb53ec22b7d99b2598fbe48331713b0f62794e5ef192b4dfe40820e4baba9d3abba2fbb10f7b3dc3d489099d5739a73f8584672095ffae8083e3c10e44b8c48b6c6fb0e1e47cc4824565372c7851249fe3cb203a9174196202544660068c4f7eb41759e85c570f7c83de16442e01d339a013003aa503036602cc89e9f64fbcfc5848b848d0c5f66e1c47a987210a6e7964093e4da9b20be1730a03ba53ba75939e35168736d4328ff33e3d8f148f995cd0a45aa513f0414cbef9e4e0f265a7e28ba9643796ee6e917b03886102bafa3dadef80b9c39cddc728eb0a75b125c359918e04f4100ebaba899eb44066091940395e12f285c21069e6d1f3a10952ec3d72aac3c53affea1265d5a9846ec2865038dca765d391f379815050500514e22fdecdd4588276b8ab9154ebd732c1c0525ff68235eb32c0819bf6d394fd0dcae669a033592e2ccd440bfbc56b44a3f2178fe9869e2e0eb94c251c6dab614b2d8fa2452659abdda13addfa8353ecf848c4b6d3e78926060aff4e2b3ef25a01e59745ac8dbba3b79999f9ae22dddff4c7a75b1ba6fc9d188a0c395b0cfd392eea6706b49ee9a427fd92349e05aafa4835c70099c28383564ccc6bbf033b6bdb8291a3e1efa50294fe41d9690bfb5ff6c1739fb9ca12e99aee7d3315d554512f1d76b98f8010bbe2ccde11a4aac56bca5db4d35416171afc8d0901053ad7967167004bfeb772a83ee8acd6b9b9c1ba13e002afcf23b18d84d91d0b05ca472e10d0d413b8442a0341315928547e76f9b91987b8f66690b786f296f32d91088b08382134eb1ff542119420204143613154504c252c92ec2c89341fecb9cb777621723f726f1137e6059b907abd8cd99f2e0ed3f401a1f7eaa50c15a63f7c2dd8ff0e9638191d36e0c486a2bde3e9ab405805b118d6b3087c2b19d937e00c0f4127144baa15494884d3f280052b81cce463a46ca042514d16fe89338a11424c6dc14ed3f45de68b8bca996d27f9050f071c944912e71807ef6e7b4f60698266ae765fde7ef4c1e6a6b7e46939101ad1d87f076170ad197744ef5ee353e4fe3da43bf19f54f342a98e1a168f55a58aafbede77027944de9145a2947546460fa3dfb4a1e5ada2366918b7cc72889ff3a6d4b0d740cbd7881bbff0955a9ebea1a2ee1da6bbb631ab428916384cdef6efb09971645381df80960c470d7626548ad98ec28d9cd3ebf83cc6a9e6d96d7d7d024dda908097857cef2df832e17a6f6730e9a165341621022e2794bed2a43765131b531d11b468afbf591953e0f92c8e555d215f17d877ebcb291b4cb847d298d1344b55d51b02aea2e11aef173fa033c9e9d1369f93dcedbaff94e8b7696eda281a37ca30a02c43c3c3461d9a8c2c4e27aa013a58afea89955d30184016bd7eeedc9eb0a924d45c602a909f05e41627e812ceb36e1de0a2386f0e2ae784d2d5e21350b828e0bfc3428b41eaab1b580db8181935424fe20f5ab3aac4420f95126898e88b18b008aad645375987fa7ea2ca41d6e6fdfb393892e72addb4901dc843e0000e929ebaddabcb138423a32d41ef51af28be71387cb37fc001461461df710681c46e277fb634807dcc0a19bd2db92f3504d1206b8de1765806665947bcd50beb13940a723fb0f8a1e1c6b2412bcdce5b7d5a022146fcc8ac59a04b8225cbdd77bcea8c090f248f30093fa5ab4b76eca988d5d9449912403c4f43990fab118ec01dc5844ca8c5ed0e5470ed5a35d142df86bd213a6449a421d6ced26223184565be9c88b088c646598194ce2cf736c853394a29b2d5fff129518154c38f1ba86ab339bc131455b3818973483a684ac186533d55a5686654a127ea467a54d224354d601c4dfed8346bbed4f9d7d2c0a36bb113a8ea8a579f5703f3a7a5042f1eb36603bf1f8cd0aca06f8c37d2a8144e19da457ee306a6486a06da69e628ffa6f7b4c7e9b19a9d5a7754590a7eaa58948d0f7b198cf4b24de0f73ee25e856264e37f5c74be390459cb9262664dd6b1c9a16cdfd185e8665a2b323208361b8a73e0ccbf41e1c06ea837841fac94950db2f61c2745158aae40b9363533963bf9bcce95051f874c83495188b43793f10327f82dc997497a5112f2908b2388d184e774fb9032db67e1b5e023d3149c0c4f9108de8d2464fc4f73497e750dae84e4a7f365bf045efe2eea924f72188062a8b3fcd73f1d024edc957b45e5587ab00ff04c34d53f8fa56194f3ad521435fa3128cce0f825a1201ce38cebcf4ce570f9024162eb1487a883bb8c99d8660b2eb2492043ee0037f3007e08738953183e02b6b8bda053eb10221b8f6c6ef0e3263f7b65397b83a384c3aadb395459b28899dfe97bcac74cdebac2524a4239cbf9752291d72ede511bca10537cc00162ad78986282d45d2b83938f887cec4a58e9a2818b3a867662512e9da866c38b4f8195d43f570ba84dc0b932a36976cfe6e31b9a49c38e7d3cd70941f953f42bcca53a630b1ab2e30eba7b54ad1b2d39c5636dadfb827117d862ebc4a92d88ccf63e5ba0cd0678a0ec03d266e04893e1a82fb704c08c9d0a0940bcce738311810972f143a2b84c0beece10c5c9f327ed305b7bbd97f0472c360c3303557c3a7e6b9312ec12c1be8fd06623bf19e52435ca8ba0680c7ca1b4a4540aeb80179a50bbcf349f302cca61248c135d8068ad75a2b623b77f06a91dbd2eb81e7399e878003f206b8a7c813d02ed07563ccb35dfa1aa8e82b0795f9da44d83881a7700fafd58eaf5eb71e20353eb53cb8b381bd1a48e2a66c8bf4a97d85a752d36f9bf6aea78718b62a686deeed2dbac135aa76cb0a9d8285ee1698b62ce839b8371bfe994154bc5e0229ec71c9f84a78e5aa6d324fe971000ea1cce47b3baad0d8b44d36d4a0ff4b83dcc3eaa4a392331ef2937991f1c8bfa6dcb5e9ec1be6c8ddf85533743eb5f940d4ff648daa6eaf6b64f41049a2346926822159027e8b68d6581549e3f977063734bef5a20e56f4670ff01946a8912c824b7c1514f9d19c4bc1ebc2aabe1b6e58c2ddc6e1fb37e2fa41ba59386048869f39cc417783301d1d3a0a49cf27c2134585e75f0c89c4041567cbc350493269ec26e95df64e09dea375066335c350bb17f1cff1818e816fff34557c094a822dd9bb63374ad9d5f0101424d69ca053ccc9c7df7f1719709b310817bb8845e2bccabe673b0f95ad6c04d76c8ea3bd5d73eba7b1ed2ad7751de8ca0e544fbbc309c67873815132ee0dfd8019e5c020e8a4adc7d8db1a0e00e470d21030578cf392bfcda4e57b9f9a7ef3938568a8768a0c678d05389752821fb9129e6433718cfcdbb65f4f6f888032efa979c3293cb809aee53efb617d15744adacaad50782f5b9f61607c515ab82722a97bc0569b6ec09b71918166abcbf89af882056929c953dbf3928745c61d8edffe623143bc767694f24bebdcc9a39c578ec91faf65495313368aeafd14d95c875c5af44e33e7834a685b03fe916a86781dfa5bd45626e5a3508bf00c39d545df3d718fa8732355c40e1145b5ab028c7c9563a3197ef1334c335e451f16199b20ba0b488c161e5d113335c210ef7676c89b7c972875fce6942e9cf8805bb36d5968b8ae2342b36f1e467d6f6d0dda393efd4e92a6cf7a79964598990aa6a292f68264b76211ee91faedd6e461c74e8a129021c32358243155a3067fbd6eb3a47df5918ab3fe7ad57aca8b4343d69016cb462244a1498476b502cae390e16f401cf80276c62ed087be3e12f06a53e712ba758444bb2ff77e2d451de95a54ee1d7748460e2649ff486621b2d8ae90a720fa2f2c4688f86c05e47a693ff4baae803872c4735846b8cda3ffafa092194294be947e9a615f1e6003d427097cad98f547c086885bbe5e4e138869dc90d8ad487484c0a7bbc0c540b037a0e16a4a89b25b528bf5a62dc6469c6374c194c2f5694f415d5086d2828835da09c83011e768f663d553cf7f21e0af493b8bdccfa360c1972685adfddc0e326ba18e63f7b6e64e3b2305ccd378e9576e90264064e75b54b57c7628f7f591f724a93aaa4c2bc0a468cb0f65e03a4f6b645d1d453ba1ebff962a8c9dfa8df07d45d8c06fb447050cd879290fd5e3910b5eb7b81adffb25c52c61cf3f92431702ef3210d10423a2218a96435c177a23254f5b8b82f37b540570fd4c0d7d7dd30c82a57743c310f009e0441aa265f7d192d5bd1a9de419970b0f3fbf8243144a3b655cf9cddc08a233905c95043944bc733d0008691328f3a109c18737a20f2925c048788c215c1feb752fd2c681e93fc166970b089afae2ebdf1f6e458db4884f7878ba1acce3a3f581a84e2ec4ffd889c422887615e0bb6c590bdb12a259b3f75c133ea0b42bb5de31562953fdbba6d94ab25e133fc6f8f1f5aa97705c04ea41873e21ac5cf65c89dbc927cf67576eb2e7a7498907d8ecf203779961b89ce6fd01e4520dbf3d8ddf12f4323ad9cf55ad89bd667d0152c83f438de4750c730d5cb688b0f932e99bd6859f96d7e3a367aa8dd0d89b7eb3e08831765b40d792474181721a468f3d580a6c6ff3990a15500e9b9c30f52dde37a1dad839866e5cf851e1d26e9062d47e1b80d93737808e790a202f5cf86d660989260cc256254ba1d79024c8bba00457eaca2f32bd78297f83f059c6e4b48b5e03b063803159bfb60ae10a18430420a058d6f8635c0008ac5a656d9638ab67f760e5ae71a5b91ae1fcc126d07e5ca528648c9ea1ca90b01922d831a93118b51f3e716f0615832644bbb1f8b5d3bc0db59940ef4da4d16294b8f2242b1cc891bfb7701c126d7e04445436c09da939958d583b6bf5b10b82bf746baeac837bbdd13d321989e8eb7e87232c11fd090d7d87fdc9afb10fa73bbae525654ec808d66a3332c7d55d282807450229ac68cfd399f8455058f9e3816cf0637e24681d41f7ebc2653d7321edf9384d399b397720a4fabcaedfa109223bfd16cc7e493dc59b9c921c401997f8df1075f0409a853b96da228ae7839cca5ab483be5230d5928898d1636f796cc1b88d28fedf7ec3733a9f3769c11f3c85f79bebe9f68c4c5049d42a9cfc89a05eaa4a3ee2f809ceaf878997127917f541407967233bb4a86edf6b7788b8bcf8c0d7cadb892a8356b757d780754c7360ea27c932603ef9e6d3d91264f313f674d88dd9601281d424dcdd414a88af0f609d014a61486015b63c1fcd814a04e330af024a2618707da3645915253ece365a28e7815cec8165d82e8a800795d69790ff58efe9748010ae6b6bd4aa9081da88ca7e0329882e0a9b6f45eafac2bdc1e08a88e50a1899ccf6d75e3e7b7f588dddd98e1be9a2341350ecce1e91c5832c67a22ad9c1d683002f4e9e96ca5a096c10273ad6aa7f0068af6454079004c7dcc0b82ad37862c19fe11c09be6af20b0461d65fcd4de876d995745ae8e23d028d3378343c89cbb475b6df91dedf9548914c7cd8ac36294ecfdf5d4bc810f88289c8ad3931a0cc24ca85388d331ff1ad60c593e42c0f86184942bcdef3d0c5a8e2896160ed1a4bafaa9d35c4e647bedef68f7c5a819f09a3ea06fa46d3120b4f5c1652e0d4cd307bd6d65d40bb60083d5fb99dc86d64b09585f97f4f2bd16862717a56328ec847552ff5466183b3a64831fbf1ce4763b92e2879c3777351c4363b557318c0808cda12d1634d2f5d5a0e2159af91601a69015e1cbb747ce281d17ef089f331c9dfc6173ed6ae5ef788434674561602953a500f940793067e173f2518cb270a631ff92b412ff96b3dae32cf5a2e66de2adc32df3a2e65ca8a736ba4da9b9f23256195a4a237ff050ad8d0e99995f0522aa4202e132aa01087030664abd3cb76f5359b55c5767272ea09ff01282487b029cd9160022a359027e16033491d5a3fb2c0ca42f70e62ca30e905194b0b7da85374927aac58b6577069223b5e877a7e670babc33eca7758f9e7b266f615d839b3e70b0f483f4750112db5cfed8d5fd0d4c96af9955f852ab95c785c3c4c76df72f14515bc2dd614c9334c16146675d3b557393df993add5e80012f53cb3dabcf87cbd29102e4293493f4eab5f18339ae2129f577c72a867990b9c0f83ba2afd4dd84c819e107c8f31b3f398a62911559354c33fcc3aeedf1fcfb6f4afae34503375859a2fab19f40fa4e535eaa35d31c95f165c4933f3a337d4930252917e5db5305a25b22929080cfd25f2b1d1547ff321d093870857091ee1120fa932ddd0d52963ab668272d3918cacfc28338293ec6fb584a5a3735d7c8af85048ae13f43ca46b5ed604f65f8f211467f87e4c5a82edde3ac9b8f12b159c8b776a541ef76af4644274881bebde4d501aeb43782d79baae1016078cea4f5675b924ef1e3db12aac5c8ed5c87b51e98eb875a0c7e9222c395ea8c0d04f21f40b4cf0f9431a1288eb1abf05e07b37bda000455a442fc571ede03b5a7d75ed9ce96c6c9ce5edd5bee5dd17f3fc90faae303b448efc08dc74bfcccd497bf73e7e7bcfc6828342d6cde3be8f45709cd6f3330e53cc86faa674b03e7c82e53b64d71e2fc9224fe2e3ffd26c6a96375249c9825043950272db793f1810ca3f5575c0296a69088c96ad7fc892b05cbec1d4790e4a03bb8d642ec3ec4bd28a8b25e33373d36ac9021182675657f0ef759b2e6250c395e8d1167ad95a9eef4696ce3987949e2d5ea9b724f862ab64a5607fda470c3cb5052670d0655f93425c8622d509b76c9ac253ffdc52e7dc8f41276bfdfbb402811e40bd3a9c055991004456263d81cc811a55f228b54653ccc9e4c18beb903809749d4075df4a06add4efcc02bb976e9224430fa6cdc23f3c3363b7da8b7e30cdfe62592565ab836c43cb54bc5a8b3cb3b2e9d30c93f8dde6837c5d560a052eef64ec77848066b7140f62ea16e2f14f93b69f2ec5e1e0c7a39b068bf4aa1249886656dfc8df855fc21c02e2d0d45c0c551295e5c42867fb02a54bc3f7cb0fb1b5a8149da6cd81e06417934818eee03d1ae15b38a5d2691afb513d93813905bdc4a325134b96cf199e3cb394e792cf390ad6e092ab9aad8898da04ec8bd38c040fe1a5ef6498bb87b8bf95431a4c583e62c9c83a05b1bc292c9b8bbe9be1917f2b1b84037abcfe135f093c433bce13167788b89ad7b7edac8c0d9ec465438e1dc5428faf9c824cf92714095f325d722c9c670a94b552a288b23c5d6e2700796c9ca2025849ad95061f37f47861dfa71aacc40453da678438b9955bcedde1bf976c44f6c56b76684a5c0d776ebf9cf2e6e55c5aebd57882d15be658590fe89e62b9164741ca9493fc4b6228f1db96c2a1a1cd5f81926b34b77432d14a4d04c5cfb2bd1e3f37b92de70139542aba26dd200fc7f0c4820a2c58e8bb1b05cf3216d7e6ecb748ebc05ebed58712720e80d6d575780a042ac1aabeea679a2b2c871f08f6a4d846af9ac4b8f38e46503da86d804d5b74a8792a13b7c1cb83acb0a9bfbe5f9ce32af5f0d18fc20aba6a6e803fac199ad0a19e65b0722d9ebc7730a11771e0c426e4a86d5ffba1e5524b66614f4d6b20c0f51287bcfe7fec02f65ebd6ceeecc072ce27076c45b8aa05d5eedd8be5d923c716828dc1f060b4f795ad630c74931705d6d8f2e803099fa670866b6ab80d148734286055d9b7051fc839878c56c844dca0954ecd6097291125c464986df8c3bc79d863f9cd9ebc15000453794f92ee7561de4ab9d2644677e1907a3d9ac2f0c42255a01a6b3ae1ec814e5a1e8059bbd5c835c8924b8109fcb33c37dfcef6a7ae18068ec74e8e0be89ca4c33a77090b410a802c6915b6c9cc3a8a82f40e488589ea9bc2ab042ad8492a6ce10e3b9be6a4a5f9689ed7df4724c7642ede346419048da07cc64eb04cab492ee84302e0941a65e702672d84571b121c29362d45b7e6a4c8210c45ad69d7bb083b11b057b8746b515474a308c1b1e0b587931df27ca2478cb77e2a8017ba308a46d13a7052e0c06f5548e1998016a2f0fab9b082ca035fea0729f585a4fd3af18947032f3188b668e14f055b6d4f164ca7700c5318a62d73b50df4e8e2b5f5979bd015a86e365857a3d278c553924c53b20228d5682d0ba9ca25710c4b7cdd711f552248715dede94166c6a9cfeec3dcd450818bfc04f88cc69e8360a7ee9b56d557cc5607e87162a61892bdc19540e3e3f4ffc03216a6ef5df006dfc6d98c343326a54ed45cb57c67bb4e8ab3410fc7d384d9caacc1db108ab5449ff925e493d1ab3b0240d27b631d40b178f4b2683c91846b6c285c291a560d64db056f627348c89c9f078c649c9b309ceda495e8054a07df40c7b5551dc1269f3806f9cb48a7b9e27c6e3dccbb0ac04b08eeb086a95a410c7b1cd1b105bc407042df8ee65a28af01393e32595a2b71cfa6f79f58ea2067dd1d26e16695d4f3c979aa31d7801125fb64346a100cba334195cfd220ac543933aaf5d426801068188e26e7844c03a7666f41626ca761a4a8d41994b04c75918af0804c352f338b50be32b11d366805d7cf22b9223c09ed6a1878cc6bdda99dc29ef44c0486cfb5a565f4da652ee9315d8ca78766dba1613b96c47e1b20b01e4956afbd90b01e48a6df2e28984d25b7dd1e188c672a11bb73b160b07626dab8e92ece407be23c03f802fdf6effede1d2265299f24b797f42e7d0adc3bf95259af2947be5a9d785b4a4f785b72328560f0cfb28af5bb2d53b3b1d263e26c0b79642468212d0fd2525fa774239ebac66d1ac26129e5830182fb78340897eec2dbc4ab417d0270a92902fb691bd04820d44101203ca0d488e77b907aa221d94aa8e6f1ff427d7a18c72f2b0eec99e07a9b138809885a6943b1b208bc983ca41de863902359a927ed1e59a61e52181eeec5e2c8908d9c51d32aa91c1be61d1b31290c9b52a8cfd99ce209c6d64840b427dc3ed1fa2a44440937d5c4863ed3b970bbedec4668ca01adba86d1859b5707f169bd0b373f5cc6d1d974193f984b8ddeccc5115d17811444a65bccedebb61e3ae47593bd0dd7101ac73189d2ec4b347ca8d380871a10115b8005a9df05d1b19eb4c42cae17cdee45f7cd30e255c4bf9b8d0098e2fee0be89e7aca98c0d8822d7e73bda14354ecbb2116d209e2f07fc124fd19e60e0cae3eea03e759d546f255629e4a3b459c2cc45b56919ab8be5c8a10cbdacc8d0accb6b2a135854f1dd2dc1bb56025e4fd6e22a53ad30fed1b2ec568e8466535121fa48d0af53dd28866101fa5f3a50cd6736189675f7eeb338ef7d3e4d7b721926fada3886df081c0b9e2618dc771544310c6b0b0f5e943b22f55787b7a70085212fc75c2bdae73c7f7a9788a8d87093976cb596eab6784277b3871808a1d93844b7bd212a47cd770c87ef836b4fda971163d1bc6d920ee186fb0aa05453bcb23cb521df5ea13b792ea44129355372eb5a87f2aa17a0dc67d366887e0f6893e0dff4cc5702d964816a357c8804b10842e350279e66ce523e99d9c4cca25435c2da329fae56b54eaeaaa269de210c779e11ceea0d592676a9317fe5d7d0767073f498eb270b4aa988a659194209b6eb0722215c8317f22c0b09d9e8e91d48b6944c6783fa9252a7e129d8f956dbdf326f8fefdf2be4ea9d8d71eace10a0ef34504f9ebcf698aa615837c3ccf18a2187354e187175e0301ec7e5a8185ef1c3c4d4171c3c10f179f058d680a81b8c2d0c322aa3e6e06182e1c99416b2f9e94b5fb46c4885a78c6d3d52a641c69024b6018c098f97d854149b156138e1d4ced6367789b9d41c5240e4228c9a555cb4318a5b4746114d0dc3824564ec0f11e1290ee596ecddb91b945caadf14b9dd8c123916313d0c4890a552989cb71d566fbbb954e61f305cdeab4088e6b854042b6a4a359c0f6076db2f2a1d337fb25933e0ceb19ce0833960c4bae398c25fc62210e21ec1426d909548580b38eb837da9246456cef9b337b6072826c558cfee5fd2292d18b36fc62af7aa38b1496ecd8114d251d93f71efe928026eaf88411f774873914d7740f2dc8130bc5d723b727fa1041c1480396628dbe68f5af4321eac300f660610bb3769af4f292040ab18c29fc89c574c8c8e5d7b8ab930b6e7d3aa8b32767d664c20e7eea04a6780623de42314ab7045e71d258048bd65fa62df5722e6230e384ed6f85548c405c07ce78e0b58321efe7b488cbe120cb6c898b72a8b0a1aaf3e915c63a25855384085226b69373c2418a1c216b66733fe9e9073f5f726b23c07d58150520253d87441d1fa09560354188cfac229b879cab1c0944d20c220267d1c6c50c447882220fba984c6ee9fcb980fc2a52681729148b008a321cb26952b891680c249d2772860fe2d26ad8af3d1633669f1eee3d6db2ee5c51e64bec4a6cd976371d100e88223f79034568a6d26df000226f1abe9461015c41a89c90e7da3127d6d23ea268da404b0cadcca5aba8135bf8480e559c32b68f804cae1b82c12606894f50e44d2cfd9284127d9bf0960880045bb215d51d324e1c922e86fd2593487900b7a6e7b88c13892ac28847414dc05e411a8a3c817875580682a81d8eefd6ed8185bf98ac8ee128409abe45413245f7f2acec2c61a25e79139976b19edc2b8869997024d6e54a5803b685234687ec5b4ce0e7256c678d0a944ea86150436225224378d4894bbabca47ed9fb47734039e0965ad9935c05f2642835c49b3591704c6986a95e7d3ba8a9d4f96639983654ef2b4b10b15f0acf0f61110c1bd0e09106ae772850a260b525132ccf765676df2c5fe2fbb87fcff6ce9bc5c044e74fd62964266995ac0eee395d6b32d745b6be095961dee4dfa2dbcd9aa44cfbf7282ae803aa84b1fa91697ad37dd6ec02592581c9ebd41e14245c3d5fb3c89ca9b72335379ee14dc08f611b165220211bbd6b8a1f347ba3029274cad4ef707fdf382a813b6433b184eb4587f7280b6b52437c278da8d75b67b9d4f181d6773f2eb18535e231e9d0611077c4f8d689b22277c7b0da5415091f0dde600e25e1f458c5959661e87da94c2bdbe62fc26c8c5c1c002bb880090d82839658160b201b49b58123fb71368fbddb2dcb02f2452b0a53404f538a25473576b45257a87ffe94128d1fafb0ee8b5f3c23f3959093400ea9c5f2dd1861fd8c81b9e2c99cc471f8ae700bb962ed945d7fafde010cc473b1e8d0e819abc71fbc031767b3509ce85223e606fcdf0f488df879a1cc560ede5535f351ed7f0068e58fa7e3f13f660674b7b3cc8f89a661dc8d316c5d0bba735718dd90998e2944e1360e54b31ce4aad3650532c9331389f6575fc9baf551797633feda048b346361fca56262e89f75e9908341c9cf056792c3ab6c1657c268d28be71f00359b7482d322da909ae8f7d65bb62fd75d8a7d44966d6422733be4a58e01de67ca001fd50e192a902bafc3807fb206091953732dd4f93042aa8f2fc8d89ce2a7d4c49045b0bccf5a0641e47ad243f8930dfd6180967993ab200767826d84bb3810ed53ba9d7d6182d890af61f093e1d4f10820b982ea196a2984bd28ac3608a2e11e11d91b6d82ab52b3993a41fcffe16af20bd9f6442fc6a2c05dedd1f394a167e1a9d0b1949693b21d63436a333490348d65b3f26ac26bb8bbb5c11958c0f1a804d63eeddc03c00536767a48053745afda2a616d098c36c14e870793fbee2318404c14ad76a823492c26191c1570892521e0e59fc3a394790fa4c1b9a3c320d0d1159955ebff5c7d418dccf0e693d24901bb0d43982fd05bc4b180b3170f50c287fc82420a4dc668cb40ac39bb51649aae1ea4478914d04bef9a14daf10898c3dea34572085dcd652ad15e87ab4ae2265ec072701f8fc1ea1460bce605acaa2374d10641f59afd36ec5576e14c84c46075629f3eb6ac698ef7f43ddf5fabc002b669d07ba4bbc70e5dff5ff839facb59fcd6f81fdcd1c9558891ce4524d09ee6881fee602db6499a58cc0a94395f1ca5e043504ff11be6322bb691073830dbf7da9ee459dfeed892acb34a41bfc4667c63105d22b7a8f686eb1caa0e359b10e6a44334e2278de8e02a1a1a42906c5df96656644276a7cb14cfc810a3aeb72e9a7045a573985e464c58632705992aaeea00920e84432348dfc2884f243e99b6025751b25dd4c69cc18fd856e96bb1f0c722d0ab021daa4adf6d298c11298b3e27471a8d002faa654fb3ade79902298b972ea046878d6b51b180756c81a1a97321ee5c1564bbad45fb1ff445b239048cb58102a585bfc5ee76b97f071b79f8830081765ea3dc6c870246e086330f0f7e4b7927846341eb798a3a18f2dea0177f794c51def70603d458c773ceba80f2a5371e1caa2baa4caa47d2190071fbbb8d4aa430170005e05eca1377871615ecae98b73b6517d202fe463fcfcf582b0374fc14d94fcfbbe7d0901777c8b48d636449c94e55c643dfa03ed4a10bd46e986ded148cc0ace5be644303819b53ef82d32b43c6ac7a63a858ea4034996027ee91e488b37cd671acafebbd430fa01125668f51acd0f78056c68155a1398062b0313e346f337f3a27c3bc789b7362ebd4d34ffe9cd0e8401966995d9d17e81fa87e83657a8e6d784d69efd093d4822a684ee6acc43c15c23ef4d9f5170b380fe954b845b0e18f449794f4340be78710e90b9de9d4b8d5c5fdf65184103164ad0c72e6f38aeef806d76f90a1eaa94d9e5bb67574cdb7fbd9cb98255faaf61eef00d6c6886be37bb7c9146de49930cf6c43c4b62acfda31537f111aaa5a6c3f933487cc4aaaf46aae2e5bbdb38055f3eeabf17fcc85c3816237b0ec52422cae17cc4a5e97b1310c9251a49c448653e3a813765b4c241c5b40b7d30495e3e120e2db8862346542781852ee4053689832ac747241ddc677317d4564ff9704f29edae1f933996ae42adf7ce42d878c9ac5e58352b725104c36bca1b9795fac3894c403db919a6de29cd556edc0c8dacb1a46581ca9c4c45c88ca0a6a4f937d1b21f701a65c0e22923e5f84bbaf8e5711ef9b54f1493b646a28be28edb0cbe138d962b2f05b31968ab5236d13a2517a13abd330186b229752baf8a76412b568ec99294d685ba9029d65f231ef86d3e0dfac5e75724f2a85437529a3fdbdb213be2fea9af84e619a7e330ba76fa6d864920a4772420ae575c61cb65a3e64d0065add3392e529146ba851f30c92f0b88ac4c0560b6689474930629725942e48eee09c0f542da7557f58dd342876436679d89b1f1f800cfb6c09a902c39ea0c3112a5dbd0b5c95186c756997c6472b4acd260aabfdc91df5213745d05beafba4ca38f7b653265143fac9d447cebb253b2ef17930bac5f247864b3163e1211fd267911aefe4696e1a789421a6570c3b8f467411534b316777f8f8413b4145b342eb50ba72990c95d7484de6aaef4e2f1ab3f2629fc45b1ea03f4ddf1158e224dfb5a51f22e75345820be4b16aeb2c92834ebaee4334adda61820235de22cd9b0b278ba383817fd94e5bde5b1629907ad44148826ad02a07584691a592a0e179a3012cf1425bef94a84d0f7aedb909791d9b18bfc96ccdc4c72f8a90b49a41785080f8090007e8c086c883358370199066a4b299927b5f06a25a0579b81e276e7cb02063ad0e7aca0a4ce6347a2ec3a940294c397ba8088193f32de07452c9466097625ccdc0d46f7f389dcbe95c4a99069270f994c3d325e22d17ee05f2d43cc80fa30e99250eaaad7cdd49b850d247c493edbf74fc519e07efd2b90102c698aea7c31034f8d80e31d64d3f294a3602bef3060b45c901378021a69f5e7c746925adcc7e40da53b46483a13365bbeffc4ec0dc2fe98083b519b00f9f35011b6e7c3480a596ad886d44215fe7f0da6aab1699841e5779ec493ccf38261aeb11d05fcf4fb4f55fdc6564384d74b11c4a75cc9e57b8800c2020165a36b2ae02af281070864b30e68765bf74a5828c63dab7f567c602c986c52ccf5cf6f0c4b01c8bdcbe47bf54f7f10dc4af3b8e628615ba7b3dabdc7eb0c2d4200fb387dfe4ca49db521a0a8c976a97e34b2059d48ba34a57553fa956674c997f13417a36b9ae002d9c8f2ee43e68e421135046e864c19338ed68695d9e247da73aa79278e50994858fee84906450331d9d8878a26d56b27810c2ac7fac36c885674f313e4ffba319f77cfd3132a22a951fd0d4e86de968a886b99f48d0b6bfee07e4797f12f439be920813166bdc988a9de021af9286f5ab1800c23547a7a4509e1029b30b5dfc4aecef0cf1f74f6777e66b2e3c9a8aa07034319c2108ef9d99b6c48425f15c6d22490e81e33a1d8668e2a20c01c480de205ac6f89b2a6f26443b1c4c60e906488324910bbc35eb783897012acd46288bb09d350f3aa3186aa467e82f7b967d1d3a88d5213cd184016a706648a04111a3f650a4813021a120b0b2b096f2b6ad2ddc640d03015041f02330d3963bdf6d5d674092bd77b1c2af6c0b0b11cdb9af8fc46561081887f0e1dd9ae7b92188aac613d7d4688e8f09f132deecc07bd12ceff6e175435459871351f34c079b383ef740bc8027912926ad568aceff00f3f9a7b45fc5f3b5912a52b792d0f82f9e6b3d5edc8541608915532b0447b315173b01b6e118b9785ca8669385f1a4248d9d021f18666f2eb283011db1fb504582a8326b0aef1143814c20cad18c9892d83cdf9464c0f875dd56748259b55ad7f2f205a7643bb3984e8e4e47dabeecf656d22120be574bc9fccb4d13674fa59ed90cc61daf13605066cb449300ed87d5f8620634ed2421ea46b83a781f6208bc308895ef3306a98ade2814b954a88a49fca49254f98aeb218c3e0e9fed048c5e7f1f877a2e66053bfaa5671a5b64c5d578e598cabd07da835f73cbe6c19feb4e68864f7d3e3bdfbd663cc7d0df02b9ab2213020b06ff80b903d9d295827f5213f32d889ecb70da3ad8aff87158dc62081ad8af81d05aa63c61bc821af649eb93fbe31ba3c0c8441f8b14ef4d639dfce8422c896f7cc8daebc6f63ab3d1372cc0f64ad7e6ea0024e0de75a1a5bcebddc5c2f5105041f3b2037dd8975b186c7aca4e21b89f396f08729c8ccd69636f82ac09c0ad82c6da3e663c97e1e38669ef6ad6c6d7cb8ef8e65d5a92570194ea5b621bdc04447ad0a4bdb6f0fd058f7a211148598e1c47864e58c7162ae028ae7fb59a70445655147a8e2007396cbbbdc4785b2970efbf4b89fd5098151f0ceca3e5519d615b0db7978e307abc7289d16cc21b8c9f5c615c3289b3647ec8250798cd95a38e7b9045a51ebc295262bc9f2ab983411c802202ab8bb78adc90bdba1059e81c85fc3a18c7f2887b895ec757159bb29b267669a0f4977001e3a42efb414419ad5573e84e7933ecee97e2ce2c12958f047f82381035e7ccb63f3413ec6fd250b12026cf8e0d0d19165a4ed6a78f3997006e76f487939b69fbfa4f42a6bb70715e7b75b6ffb431436cebb1ff98f423d8aeff8693096eb276da96dfd3c0e1380d990deabff2a064222828fdbb1c4914a3ae017e746adb424258cd87d964020d19b74f2047966e7e0a9400fdb5f0ff901a243921a6abacfb20210b4f213cd61ae6f28d5357c2c96a5272e4d48f8a128956088cfe7df74289e0886393a9338111d985bfe5f1c0a8617c88aae5b339f9f465d80f878c99af986d5536924a8abf539b5d0f1fd6de68bdf247188897a63ae8ad66aaf2df45800fdac18e7a03eb20cfc1370ca79483b66d462da4750b30c7a83a094f1112e00a01256ca7f1301511d6b629a4a86c4966f6617dc46b2c857fcf101b6b63e4849fef707019a1476c8e107e663704673735a5ed14325b1b09c925c8644565ece6cfa9b1476134119e288740380b3beaa1820d2e37e48b74c39aef0bdcfc3ca379e65881a18b8282c2e8f421657f249d062c382310207333096305210cac090dabde336cfb4d271a755753d246a3d44bb181918e31500b3b0cf64fb0b7100c0e9f974dd9382f109d7051dafd4285a2f024676797377cfade84cba7585a7ceb7d2d1e9702cbfc048f63aac36f290dcb4ced22332d57f9d144d83ab68056b03241dbae03dc67938bbbf28a71c03437f95e030cae808d5f07fe26df9b6bb536163a260b924954cc2c727fa712788e287d1ca53a05544ffe458582dbd0a0d6f852131c0504207819ded5df9d6bafc50cfb9d2a2663a8ce412d6ff8aa76f76ff3b02c159f34dbcbd9ac293349c45780797950617fa6c25187633915d4286c0309b18632f7a347c7b7d3d2b6ceb8ddd531b647c1b2462e5b69c208e7a5cfc1a690f9e9059a41583106ff4adf94f4574e4ea4f092c81ba3e732f06fbdd8456612842b09cbda4b9d2e1861bd221bf13f20b11e6f0f4ff7d2a6c61fae0380e066678344cf6cafe461102683a4ef6eaccd8b4f4f8c5b490ed13cb80a02bd51d82492c870e4b3169ce5160967a4ea5672173043463c68268967725c02e11f8869dc7dcbcf1001badd2667e59a76eb01bb09694094b13f6832b4aa90cb86565bc6f61df24edb5e949825a912d1175caf8003402e8e5d2cecb7d8ce36b87b50e36adea62a931a2a515ff4fac7371861145480e8ac822c102c2124f3ca3f7a94d1c3147e4c3ee2f4033de89e310a36b786a024ff6b5c716fc192c121247008d44e06c417c165d32f60309c111fb38f3aed60dc604a64a6bab20b1f12bd8b8d0238f7c8d6174044668bd9552a747f5f388b62c680036c5ab03cf949b52eed373efbc4f402aa0da96093411ddfd8de53ecc217a0308b5a82ad033dabfea612f76b7d7ff7b6dd92b4a118ef30c42812f9e4e724135a977b96d57825f4f35bd72c0b154d243f1079b6858c4d2612279c49ff5be7f974dbd26a156bf4581ce4ad89e0e9c72370642c610371625fa118d71fc84a350f35c4923bf114f96a1f5da39928f6df4a636ecd653ed4d264638131cbd846ae9977cd0fcdf0d4f661e7dd1d9ab8360a2db3343d9d496cce606ef0f6381ca6deec3232d11cb287706d8c2d25ba3a7f4498a8195adb1b15869200a99314bd988e5823afa85cbd6480720bd5c2559d199f946a6471403a6e01b4d8524c243d73811c35f90cc4512aa53f054fb564f398b064a3eefb47857fa17d2d59076628e1521ac7c43ab24f44d443eac0c3ff8f796e4cbc1253771df3df0f98caaa3d5ba880dd8b080534f290d0bae198bcac3030ef59a72c1ccf59fcf433c07f32dc8d7825435906a4efa5ebf2c70f3643287131dc8f88c486eac45ec4348880053ed50413f3516cdf6eca80a102d792f9787365bbc2907bddf26c6fcfacfeb20764c6e761d01f2e3019233663dc0ba6de9159e825c316e3b51f600da65eeac16e85801ceee649db8d536ba1bd9293f589ce9112b54a13045d1fb4186ac61f5f9972fcaac5fbf40568b72fe7230ba931eafe8321a6439574819eb2c7a3269c4d650207d19ba2eeb55802f5352f4b332a039c57fe2ee0919727667163be6c86dfbbfb4d43ac3f50b403c8a63af600d9d46d1e301394c55db4df5dce7a8ba3327b3de0c8d962616cfb1066c8bef8098cf0e9d19aca30f99452d687730d0c5ab39ae5a8900076eb1591097c873d35e08d6d3d297c3a52467d5a173e784face7ef87a1f0a263dbd6a4df98460f5d995a8a48a19756913248d46e8fb32eb95dc23db311e40e0167397fac44570c0b0a426edd46e71e1b05d940be151e2e441e8966150aef8c025c2d0329bd14678de91030824e0ba61d06f3e78d9b40c31f615f16fa97a9c6525987064b98bd42b26f29cc46f3c6682d498af684a5a47c760779535101801553e2f706309e811219c3e73f8e1ee83340b37cd65d93b357ea7835942597ae64c1b2fbec81ec165018549c45b9d5ad1f27a40e93818aa998426ea966a99f68a57ce59c5296fb197a9f952b98a8f7471e250ea58f69c7abc6910a6be596525a1606998adae3a95ba8424e5b38f3cd5a1f656af1821fe55fe43228e56e5aecf04e8577c1c950413b34ba978d06d9ae5d1cfd235b6624747f24d9433cdb44d3aec710f453d008032109ad09f7d8ce4f886426caba2c53eb73ff9d6efeaf39bcb81f3c448614e56782b7f392ea4b0ac6179d077a5eaffd9f42c3b9206ade3dc76a9a94866038a369a2f73e0c32826cad72cce3c42f9db1fec5c3d8235e62801b8c5ea7a000d955f6b67990071da542e981e0fd042dbad876a916c31cdf7960db8dcbf2ca61bf95b28058b9ae187930722a807c3eba2261bea7c44027f20b6db6ad49ea727965c6bcf3601c83f487215af832ec62fea43ac11b832a5aac4708c71f902c8a20375501cc0781e521d62d9c135d3e46206a40f763b602a2acd64229a5c946be998fbb9f521d3cc728acd8b1e27293f650b4695cff49e5c96d9d95b18f8da4612352274cc1f0cecfbdaf7d47068372b854a7a727b44a13cb49b61993e807653fd075eef9301a64b18b7b28d148b7225e1fdca677c87a5d1d608773ce01f76c963a9ccbfbbfc083aed4f1ddb8bf9390c1012312a8fba0d138a3c89e75c860d8c3c81676ec305458ec8b36ec304224fe239976103234fe099db70419123f2acdb308190c065e7ad9bbe1fec158748a69c8fb17bfa04b5db0b8b4dd5b6afa315628f1bd5a211ee413209febb8250b99297bef9abe95315a3c0d8fe5cdfbb3e654929fd07dae01a92d98d515fb9d555dbb6eacd758e8a4d04cd908a7177f736b29ae4144a5ad93fbdac1199c6149f5e446dfd87fbf40a3c4778c3a51cbe30e68c3a28f258bf961aa113e9590840b97daed46878b1230f296fa4e52873fd28976f7712eab644c607cc2a373d32a1e8a4ff8036f397e91c2c343b1fdb0566c7cb86bd455d23077a719118066c4535c2e0ab635fe2af791b40c3d69e01800aa7daaac5b0316b189fbce32a8dd3ee0f9834134bdaec83221e2122976461a6afdc2cddfe9dde246085cfc2036e326b87c91f119f52ce0768ebb1ab628563ad7a80e52432bb0a9316fe6625c80e7efe56b9dae8eb2649b06cef0827aa9dd18bc2a12ebf5ac58e057b637b15687058ebe68585a29226aa0ad1a72faf9eb7cfa1bdacffe3c59f2141176a3c04248fc63a1c8fa3ff0f9a9ecf246e58a741a132fee7c848729b329cf12907bde14c164d64fb2a2d3920f53921f1ec88fd4d42987ad62d26d044416cda01454755233bd3b93d88c83e2b81c98b330f6450ce534b682aa5fe4f831f500e3496fbe234df09fa7402ca53a8a45745eafd6e8ce4dfbe33e235d3e24b8dce7c0bcf1608f3d87fe81af54a8a7a4c71bd238c7cc6a0a1896440fa51e1b3c44b6a759590205d892900f762f230c91dd9ef7203ebedf89da0eebfd59fe6d2502ef094b8f99216c64af80062a7c9d98378a3355ac8e6c5ebe51ebbf803c5493144a3b05989299547fa84d612b69af0ea66b1016e86879de430dd613789c494678e19a8676d25920f49fcce2cd01ce8936e2a567b58b3fec6745523d6221b2c4eb2cac667d0e7bd44aa670870e9de67b151054dfa6b36b2d4403baf1e710c20b3222cf7be1b9f8560ee920a7fa6041661705b7cce1810cbc18c85f4e5e39b19f8f6a8c241e043ca158f3db86d49250d8b64feb871441ca67ec678b82dd56f9e63a7f8a2c6cbda33c14301cae93f65c1df08a2c9aef718b9b2dc09a65485f4c0d621138104a2754cfd2bb7eca0754627bb33afd768e3ccddd54fa592fe4cb80d4ce1d5be8e874c7d040d396d394d534e34e5c9a7669dd956fda477870736f82416cc4d5f6a7e3a78bbe77f7242b2b81e7cf6cfc884112f4c457d0ac856df608c91c20126c8ad6ed699897abb49198e60e18f84ffebfff28f90308ec0e9bb8640f9c8557a2de7a55fb62d1bc8dd0d3a3fd33596f021ad9547ffd1bed9b9f41c49b29a980f0eea5bc42c96f6de355eaec9cd01418f3c5fb0e80c27fdef457b096917fb1bc2c99a1de5525e05197baa3c9b308d0a1125fa0f76a2ceeffd5c14cc7fb904e9758aad26a3df4c434ded5f626efeac0c83dc85bd3c6d278d2605670706ae8b5137b1cae9ce26739d5d2ff1c0464948a0d0eab68c96855bdb03bce84c10b3a225aad33de4f90e7b28fdd03580231754cb3f6aac9c82d4f4e9f0e16698f4fef4d90a3249fc5ae09106b2bab36d252b86951cac31d2863112c7a6f010ed995911d4d6e04bb7f490f3e7d95988c0112cd259cc2bc41d23c9cfcc5f6c8fb43bfcc0c9b902aaedef50d4aaa90ca457f8b5c3bfdaca8f5fb235b06a8707da81a2b017860d7964e3ddb4e8a14a9ae6218fc9d6a0d4cffab7e7f60499ec61b9006358646b02cf74a4e01bddd024657c0bc8afefd96a93d0e0a6a73fcbf70f1965bd2aadf16743c5ea5dcf22ad2db2217f2cb18ffc2b02badb1c429699fdcaddeaed35e4d6237fb08ffd594b5ea4bb05564f4587484e6e7db38849ab3db54d0f4c79013b5eb2a6e116e30eb26d999dd0acf7b0a5e3ffb78a3a019db6f7e43650440aa2f06a9a8967e0c63575b12c70eee4cbfbb85829971b6eb248a0568148edaa60220b40b3c30ee1aea9f48db9e79767f324b87f4935b2a8fd4f8eb3b3d1fbf483f56cf8abf52b129ab4676b5af03567a5aed846d720f47948957af8813df6a66c3a593c37c929514c40555ed93ed5b72d029608b8da9e4998aafb844001bb9655e264741801a500d316ad70dba98d4edf5e8011c20eb57c2f98bc27e582ab2c906a6303502ccfb2019b1154e76d25cd3f8fd496898868cd253fc993268a90e6c0228cebeabac4aa58802d63c470474cc3006580895617fcb70eba936195abaa013650fdf63ac6f06258980f72fbe0d11c27804a77d268903dd1f4ccee5904610218423885cbce088cf7f391f7d918ecd4cc3efe3fa49318bf74d84ef42a3c69479c4a96a08b5a836a6b5cf86e7bb072be04cd8bba6b6047d01a68997022489ae1b77e557c7ee59bdec77610d1c652baa71f04c2b22aa41215f494d7058c1c4593f5af313b348e8b979abc995b34dae1216d2811549728c402d740ee1db12c896181dc4cbc779544edc0266e20a9c206ceab48ee69e5c7b29ba0fcc495e8e6e83c1507308ea13d439b26a0dbb4102a4d941c025393767437c991ec41f0ea19f12afd19b1709010e1cbb9c8255bfca4314a5fb9e960961f44c0014210d941405b89f7b52d7ff69f45b0ccda9593d5da0343f0f9e65f6e0c28d67bf4633bc3b459c0c729cf8d46ce7b3529bf38c2fb879d13ab77fb85b4549ea86f8498bd6e38a51928ef744d1a2bdf3262cc7b86a8c5de3a4014f9955cb5543b5d03c5bcc92109b7ddf907e85e98223d17e4fc62044797b3328f907b5a7d50b53dad8d2923e8be4a5b42930638b79bd2c94f8ee0a0c57afe0ff4cc06388014861b721e6982210dca44ceea0ff8151ca4d7bd6e56c4658711ab46395134764d6af5fa407d183ff5a9ba40cbdaddc04317a7cfdc5a6749aa255107e4e73f4faf52cbb53b48a8e10db70e0f19b80a8f36cb3b53e7b324acd4d8b5bccf6e5c225b3d771518acac5dc5c25f50fb339e1966064cb7a9b93b7715fe85570a00202997a28033679ab94cf16b846e95c586594bd935a56c692f67e6f19e9f4efc9b90f44cb3bdecd0ff163742e59783d13b04cd5925710bd12fa3868a91d4ea94b91e1b192a529cbfd33cc3ad44beb1dc372e9ac5dab188aad0a54367f6ac753af5aadab8d0dca91a38074661fbc669af9b1f515fa0f827fcbf722b0a6abe6067127f872b0fbcafb96ca886c96150d8bc2a0774f889c5290252aa97fcfb762a5da667d2fb6306db30d5716a1714a0fed5a1583aaeedc60d29633a16f9922152eb0652dcaa3d0dfe364f1549f3a4b651040459b3ed0f45d74d0e4dd0677d869f3849eda20013464d3519652d824191eeb2d9703e1196e2985ed78879df1ffd0ff4f1187eb84200635beb6cffade570c64f7a2189ba20204371aa2381824c0a90cb9ef352c41d0f6cfada0cda3a11dbadc7a6cf7b2c12fcd495dc1f6238fda8c384fb93f8ace0f48850b486a8e47e8da204eddc5d8e775b2938bd5a95ebccb1c66df701313811f549161cd8f5bce84376daaa8803e7de8cc95c6e6f91ed7bf5197496569ea2f1599e14d40de1937d36143eb41270b2803178f8866237e4af8ed684ca93682a319b2e115d0d3b837572ed43daf572a1a7ac765229de2e9dcf568a2b71d4ff3982cab017828921b5fcc3958430469fdda2be57df0359862bd02b206eec0d805a382e0f5aa315e249ffc35ff6f658fa4a330b925761e49148f81b59817f2595a93e72168af90d250d5f0e1b1bf52895c4f403d8fc0cec220a49cdc6e86ab0a6c1cdb19d94acdbeebbdb0b67f94599b917e19dfc5391f94d00dc517af0865d02838fd74a4bb2aefb03f015d803e5e7f6b22f0b59ae84054ad99b9f0c4799941d709ab44e574279e261cf95c25dbfae71091ed77a3a99094fa4a06ebcad13a3e1d2b24fcc8db3c5178d8f4804723f3dc93c7bd128d9970fa33317ab5eb9527b913303c0fd1aab2597ae2b09413fb7f9dbf67dd8aa3a881a3559f3a810ec221cc22ad05922afd0db0c0641c405f20528bc466a27851b38391c4fff7259b0b593402a268aa91079aae077f608517db43284aa0dc8a511d52e3081386fb65f25362df4c0afa8dca161d8422ea828ba0eef9fcc3ac1246e853e76c0c1e748b90ae432879c5a04ea94a3d96d38ba01460982e3b02fa2bfaf80ac25e7c274253a71ad74bbdaae7ef16c065bc9c358689dc2a0225ab40b2113eb29a653be4e632a2642d02c1ce63187fbbb50dea2dd539b20b38bfb394a90fd935b6aced75023fd6bdce893983247b06c0b700c68c6c4f66664e2db8e1107e3277b969360135f25c59e649cb4f81ce4a1925374647f431dbc1fe61487f6833bf18382c06e949424f19b0849c72fe9f9d5fb2fff33263688016d01903e0fe65fa6e1feba3a692f2c37590fb68d4c5e88c199e3e655121ca99e60e315e718a25a99ff9cec0d2418ed3bd293a30a3d5db9853962e713003614f832dcfd8c4136ed92352ed9ef00a4730b17db3bdae6609aa31597309752383f5b4189c09b9766f5b25673c268f34dc11181b8bb3c2f32ceb063b882463f572cbf4c6048540693fad4ed717c094b8b02642c86d6979e093747d23c0101908817bcc464b3e2d5f147eb187912ef69cf82fe4104ebf73f91902787223a03676bfab4425d25a5baed0ac7506d56642ea8f715d0877d1727c98e525600560a8bd16d4cc4c3283e6a77d59b3a88879b57aafaeb95514c3f9890d4faf14d2cbe8ec7e8661883aa14f2e21ebdefffb0b05240c0b726b3fbcf605ce276e318a3d7020bde5d07a501a566acc7425332096ef7c3f14629e652a1ad24da3cb2cc9e657c83b96843c1228e1ed76e1b0eaebde5dc629c909a5f0b54d82feb23e25646064ee15d086678cb8b3b85882f20418a0d5ed9dd77428ea9a49d99cada3cce43f7536d81582a06bc93d7a378ee6232d94502896876d4589d3ff4c2a940406163c5d0787c3f358f7a37f0621d621c955fd30c99f879d4c3d1b7a4b21e6472cc3b0350033f7b76e326120ecd5c2f30277e60eb01a8994002362438800b334bd210bf22ea3f325f4464930a2def4c851b0f0dc59b0e39c2a04117c7881b26e2788348327be8f75ed2106c331b5adebb764ad4d5a452a8e768e6bf376787a4a9818fff5384bed1969373985a782152aba483fae45813cc28684815fe103c2b019cd7bab9bfad81af13d723e9267111e237cae0753ffef55ece97a34467d0c73155c80368e4b92d9080ea90aa553b06d0d1c902b86fcff34db7215ce7a103d33b2617d0948b93bc0cd650f8f56c474f7603a87e2c2ae25ac9aff5ec80947e9d4b6813a05969d0fd1d22f8f010c7b3b0e6049269d6796f250d25a74239eefeccc9c074eb40ede1796437e463c97999054361fb6f0c9eb2e13452c2cee2d2ee8a99f5b6f13ff504f9edfe995b34297c69a0c1e77dddb4bcadf3f1bc6086918dbadf132c522845d2bfa53a008e8fa58274650d99dff8b3d219a9e293448c85ae2510141a7ec4817dc25f73e5ad596282a7859d9b664fd2dd0a394d2b5abba47a5486db557836c5749835c8f58d17f21af50358e97e582ca6a50df94872684593968d637c9c2398d153c1be3be0d1844462c3e155b6c885b1a3a9fd8a4c3d2217c04479d65153f4cdfb184c5e40d9adfd422f2d32443234f646810f9be0a2dc22cb8512bdd7665623d16dde61c3078e543d3dde7648fe32e9358e9622e5a952a1218fb037efc1270321e554fb0cdad52b606a428672d60c12856abbfe9bbac331be5e5d40f5c29d5ba47e82c80fecaf1fa0d72dfacb792e0c85e613d5691852869b37ae98d79180ae102e2b6bf9c84cce7a78707807bfbb804006ad6c421cfdb1952a59975702e72240c45af213a16d6417375c08d7ac4901a77b98ff6393cdcddfa054ca2c12dac7700d7b8252fe481e7b09044172b3f73a77b21774a817a1f6d4626e42844e0b89698b22aff6a314def0325aa47c3df371cf8ff29c6603c2a82596d9d36701440d8306d534d11f07c91e2e7a323365c254ea5d8ebb402295f0942ebff72688c42570fd3d28207752f05b24b0a219f6dd3bf773ec3b784d087f8601f95f472210b88f02d307c6de95cb5a2ac1773f53cd6833f268a7d497a7ed2ac77e21f837fd0e13c780455745bfc45d258943e57d3e28c41f9ccd8ab1abc89446b6f4417d6e6c1eeafe6c8d59b940e199d72474f28966170b045bed27a29b25c32014fb60f79e017687b51a5da22d224ff5dd9850081a76d392d929ac952d387a180b8cb3c1ca156aa2012958735718ff39d594e26e8bec9075229df949160842a558620458e47733d7a9129e3d23bf2e8a43eba17acb1cf6fa75818a804292eaaff7bad04b1644d56254d99ce23f4c919c6ebdf76bad39e243ec8ed09a5ac41b263ec78429bca878e6367c8e333f595eecf72e04835f8da6cdb083e1176681fbc160e3f83eba30b6c8812098611a00b3399bfc12dc35382be6ec35bcd99186d2fc0e0074359b85c41b00b35787bf08b7a4bf7e1144b34bbb42f37a6079e0b2c502d2ba4db8e659ac524db312167f08a8f3b5698f29bb62673811665a713cf87b0d3efc4b1286fd395998b4952f9188fedd1768d3ab67793b8286e49edbbde1a471f4ba84191be101a37102477b83120e1b74c1ea1f02d139a463b25ec90d28b4ff3b303f7d745f102de598156267f820b5df762c3b9e3e41d7ad6580e77a5f5ac13318058790d177ca2fd1acb36fc91695140142bcdd68a51deaaa83863867d7872dcc0cb4b7078ce8148bb6546ec78c176c527bef3f68cc18a4ac67bd515ee893a1ef12a30097f0e3e0b03f253611aad283d02962a66ab57624c21a83796c3a7b4101d59cd0c2d53a14ec08f913452302f774dde350533b3de5b20098fe83e79afb62e279d7bf00aa798f874362061bb98d5bf95166f1b92c88cb87dc58b123effb872a34b925d479876355c4a79bd458c5ae8ad7259217e0d6a5141d82274372993862f0c8f9dbfd43bb217114efbb48d9a401eb6a9b0fd3d61555a5e3c98aedb0927765b62e5300f2a2ef7c11314031428494471ea4f34e852abd5a93cbe6914084451d7806aeaac5eb9cb19ee435c69f4d9eb3b673f1a7bec1e9ef45337dfc123c236ce360602651a822cf751293db84447dc6b72c28a8c108790e3ef78f9f878f6db64ebd48751a0d5a1edef459f2587f6b1dc894f4b7b60374bf30aed35ebddb0662c2edde10520d78cb8cf48d2d53642d5296568a6adf88704677749eb9a5fbcff10e6bc42d88dcb67fc46e74a02440d02f380422c82f195ccde9b7f4efc1013d705bf13fc2993b9730091054d44bca9736a84c8728a95f87f9a1e748cf4395de1085c21b4a72d1a87ff4ce2329e1ca975a7691bec3b6dd6b56486ec094f0262897877c233feae45e454a30cdab11fe18cc5030c77cb5912be77eeace68b6fc4a8a8c7a8c291274cf7837a5f7d92bcfaf7347dcfc9262485c8173bab20ba117309bb13339e0605bd2fee3a91c59e66a5b224462e1bfe2f6c5bac62434d1472264574ed24ddaa5830779d2f2aa49a317b8fc83662dd0328942861f3aa15838858ec8a2b286f9e73ef1e6adee2a111fa6030562a4db0bb15f46d691df493c7c3e3ff6b05d201d01270aac476595b04c46c3fafdbcefc7cdcfcbf1888bfe5a18aa4df48f51b13f1cdf217bd3c15183d2cf0edda126f6689eeb9fa29f5b5ccce24bc544c26edd6570b4e4fbd8450d45c8f10362e695f2807f8f4904d351cf0e5bf461ff96e0aa83b4617b5ec65a67871c1cf8d547949523b768feb698a65ae2c239d43c16c5559d9ca17126885b83484ae68af249eaba3288334240ac30664d236c196555b0b3b0dbaac04ba468f711a4ff040fef3eec26f90013c5841c898af1714e8db10addd9037267e6653519cbbd01ba25e36c4bdc94d887d54af897a1fdfb4cd1309154a7bb4e3421941624c2ac5a57b0ba46fd4b658e7317bcd91e2a75242ad1520ec50d275d00a73a357659fe1e67541f3eb4a72acafcbdb79f9be1d52a2fc2bdb04e417d7ad10e878dc26099895f8585228acedc7379480079dd4e205fe3cca950dd1ba93a40fa4fb40fcdbf13a895bb82d5c632951f5c999ede04c6172f71c7af0c06a7ad9cffc2fd69ee0321c6e91bba8384ebe86112d9f2a63621cd686b50789a4c62d98ab89d2fe119d8eb52c62e3c3d67100237196c37f7da04a28070446b3bbd36c54e24840563978bc36d508d2f6c775fa065eda84daea550672a3cebaca12bbf089d817a6da40a01d4a13002bde470c6151a46e0470b1e419ad0af6efa15b895f1b303f9d4aca4a81b82add50b52ca7b2e09519e155302bd4d12315aa8ae22ac7586de3ca6bc89b3f602d58e18dc2660d97bee616f372398b9f7f549d488d6c72872b121c17f9db3f6d10cc9e46bf9cbe31b62e598fdb0a94a2ea19af665afd04735409392d8eb4a31a5eac205f7cd158c469c3506f75ae0b0e1d519d35d95b19202160a8a99528d638a594f4d31b4ce4e298dce72ff0a84d310cc4ad8dc956167ffc9e61b3b57f1d983f106fe04d70a48407f236bd43cbfc7c8bfa906d860c0e1b8a380bbc9f9ca503fbf2f9a31f9edac07ed0580197cdd1283bc5ec55b6c740f2237ca154ba83eabc427e95d968b625b4b83f32f9a85484d56f726dddd4d951b296ed2ed0fa0520d6c3c3e270042495c65c17e0b85148ae3cbe6d2b192bf7db44a5b431a482a7ad08c697117bcf0a45cca7e5d4af585b36dcad5c228b596a8d1632c3841b975626121f8e9716146d51705112d861411f5baa5cb016e46c44a14e06a14cacefabcfd51c0be6c938f06aaa48a892885a17dcdf0af9347e3964d4f2cf276e5a1b5cbda76009083afc57092ccdd209a31b049ae34fe96c987b39cb0cd3fdc9fc25bbe2210f260e8f28cace402655bf4cc3b708a0989750c354a27b7d27633b63fad3735de8f05fc4fc91e36dd2d963061c3378f54671276906f5e522e80d90510677d616040121f67eaf5ce19d9dfcf989a202d67c32798140c83cf6bd761aa71bfa99475f52399f3d6cc7ab8934d74bf62f196b0a431beb44b1a48078e689d18d82cf05be77a5bb6ebcf29fc7ef836d68efe5443716f26454be5c20caccc04922183087608e0867cae8937cd653b46e698b1733341dd403f9b837e9d31518c948020600baefe34f73ddca851862dc4c4c98e2f45a8eecd71f38b35b27ebcb364fbc4b0dfdea43807d5d7fcc0082e2a6564b411cabd73b3bfc4e8a064e235164780221bc2fb6c298299b3707baa91aeb572e449f4a35497fd501ba27bad5b775bbe055748131410c8e00fa0ca10b5e0d688a5bc80c2f78faca2bf3f16609b75a98fd8aa7230210c552000ca2a9514130e8ccbe6629c328099a2f5d9bfabdc715c5d34228aab5fa379959874a12d4560b8c5fca4baaf719402f321c6db59359388ded06dee86b3884d1a3f06103db33ebb3cca2afc5701a04489ff3c901c3d03971861ac47292972a8a1588a71e27df6b4ff73fc50c57e3029c6c07e97932dbdc03398832cb1022382775330e88bc2aa0f7a3f001fe5ae39b1ed4e7dc3fce641781368815bea9537f983af273d2da2b10945034141f2e282eff5a51bc165d77b5ce17825408df895c03474835bbcf04a70f46d4e4f45eec6fae8b61049b1770390d177fabebe1efd638679bdfdca31ef09b84aeda59b569a60c2dbfc76250cd299efe984932c5f703fd30fe60678d485bbd1b3fb358a975a76c7899338be211fb18a21b4c75fe7120ddd4f78369c72e65c267ea29769e83403be9b8008eca4695fb7e27456b9ebb58e80b0872d5672358ece98c27215a7c66fd71f5a92cc8c7ac882db0c748ff0e2ba44fe709c7f827955a903504cc38f5e218d5a4e3b8eb5082cf9fd07c6b7746968cc3bb16d3cbf2f23af70c8662449dae5149c74b4014019daa301126daf2311b4ab88553ed6a157265ceb0fc3c0fafa07c2c6bfa2018756ce1e4a1413e24a1d5692e0321709f1e63a20e121430af49a775598522d10f2c93b43312891930c1bfa8d29d71df8034096419b9ae8592f6aa8aedc37b3642e1bda2b60e5d802b7e374bb5143695a69074072b033aaf0f61e3e8b3c9d42f1ebfbb4a35d9262ed7ebbddb818a90625d3c28fbc2f23e59f17b1cb179b358e40cfbc7ebaaa40a933fb8e04008c6937f736dbebd22f21dd4b88efeda9ed7fa1f7d16a8c8dd8e1b614b89fbef891c7f6e23e2421a16af780ecc653d00c2da0b7af63dbd56f39ff56e4d12fc8db88f3d2df57c6132eb4e55597c99af722a69d4b96a9a33a2433b180196a0ee0a68cca1b33ea0107bd099b6613ae652d178c5c3e534cb0f7f568b0d019fa4050890e0133f64dba12debf2b6ee141708be11541791dbc78d959c8fca6beb1ea605d39c4723683da9392edc73dee11b10475109df7cb4dbb8ddbc448e3e4b11c99f4e2aa9d13711f6887aee6e080a7f43aa6989e16e114f800b584063da45b2f6e75f63ae7bae3db320970ca6d0088a0419f4a6b35ed1c66dc0ea4c0fab1681557129a9eb6a0a4f5638d78b386a7a4e3d0c4d46d939df49e59f4cd6eed242e638d9b48306276931948ea93a560524ee0322a50cb0bcc4a00e5c676a2140f04ea8f57ac5b505815271d797465fdb67272ffef88093915babe9eea0f90a3875c98a557558ec30b3510882728b02fd7c50c35b34e1b73aec243816fbcdb3e37f0135d22712817b04ab5ab60ffde447fed611f1169d2db2c216a8d1042f6967207800a910a8b0aaf355d5719c03678f5461efb9dfca327e7d1aa08a21ca344081390564222914832584886aa483e033a23e13e2389ff4b256e872e011d03fa2088760c531e37a4c7aede1caa781b0ce8c8e3bda31e2a55e9bfcefbe8a3a5efb4925aa927faddab24545721f082f4624a2ec6f5ee1c2fac8504a69c1e4f4f9d6d8a9f688ad44fbf9955b9b0dc95ab38d7ab72d399ab717aca7b77ef7ccda3f3fbce72fa1b55a3bb576f0e15ea5e96cd592add5b54f5def71e3dfafda4478e8795a31ebfaeeffe51e67ae07735d1f751efa889feefb2ec4efb7d9f89561968ff1ff5af3bcafbc977c8c9b05db9dd6bfdd030bbbaf2afd6ac1c556b58fee550753587caae54c972d2bf333783a54255b5899f0a956a136deaa5532a756a3e7ddde97b9f53f5f6c0b6d3a9bfaeded22945bd38f6f492a9f453bd6c4fdc9d4bd74e944bd4f4c4611af5941b81dde9b561ffc8c548b9c6df9b726dfa7b54c53b8c2f2bdd07a5f49072d4532aea30f13446df21f71da64747a1fe79f5e2588f5e1bb60f4b292e93525aa195a5a66aadf7fc9fa8ec77d2bdaeab35df51a3a3bea3beeffb0ed31f5539ea291fade98eb2512244d775ffbafba3fca33528d25f73a82cea3787caaa9ca4522f4eca61620a1dfd7471742ce927f4dab024190383603bca6ce46664462cd72b636be4bf5285c00beb7d4692b00e03e9e14902123182a444eb83baa584614f0f0bf9e8edbe7a6dd8efcd1af34d4a28e8a33954f24c49871cbfb05ebd32b623651c0d0b9440892b08b15dcdf1c25ad04ecb454b0bb70c77110b262783a47446620255285ac1fc501e62605526c8ec4b05938358b8e283473e1ad318c8131a4cb589b6a160ca245522695596648aae4dcec4c4c424749bae31d9386e340a715bade9a0c9efe7f337738152c28139aa269fbf9f6ad3b6a749d349efc6bd8575303977ce445a8ea301b2bd7132e23f3fb5cbe56dbb8b76d93e6f7131a60667ed706e668fdec23adc1e1dad01dd879d7d98cdee2dac437f1e26deeb26a3acd67407ddc03a8c6e7267bd6d412eacc955472050bd816d30a92690a6cd7a67f4e7e7e74ddec23acc9bd4c344ebc25eeba15f17963bc7c9187dd69a79936f237a03dbc0559bb6d64757dad0354e46bfc61a1dd43dc26013569b73363743b32675bea3a163547b46b9c3c448a1d5e27603eb1002759fefde8fd7a64d3a6967358dce3df41b5887f99089b41ce8204e86c96b62bd1faec6664d7e03eb6032cf716dd9d18842dbdd2deda8fb4f6ce725176356385d588d47234dd4d544437493cb10dda49a1cc74e7aa509bdf3a1ee1c8e9d145a8edec036843ea76d83699514c19461090b8f908488957761e111929cc0f2cc51897b4865d2026f8b95497861ce1117329909887207b6cbacb2a75516924d74d2ad28474b897a94444bbeae223adf54eb6dce4945a22792f411f96c72f5963a09959538f2c68a3e6985227a419f008e1589ea652b82b631d1f5616bb283fe111531a53c0c5d5e22f980e8c5b1a067146b2e06e89a66720d72227a5bacb4dc439a09fd7721bc93aec54da3231f4aea57e7693c527d5ccdc3b449c9a45ed13f27997c34de499f47127d7bf7b908c7725406c16e34478bd5aafc41b49e457b5568e588640a0f34f81d380acbb005436e2e06842d18b6909665812c0b2465263379eb3f48791863619994d2ea21411866dd48ab4af904401857710e49e24712add638300d795af8433fc343644bd22e0d61987cb8fef902b64318d73fa7d92efae7426c944674cd64f2e173ec3f88ae1d5a1c2b39191c4535997cf8dcfa0fa25b1742745073314c3e58c7fe43769c981f40d5d4d67fb86e59dfde03fbf51f36ebdb618c56af67a7b99ed59b23e06f2acd76637d9bf9b1b27230e0837322566fc495d401916cff449e24f1a58583f090f8a21d54c298085f5614e236aa65586f38dc2125e8f5d898949994d787b530661b24bd92c776dc913fb82e249420c9c543f6b4aa9bca9ec6c158ca602482a4c36b24ca9644aab73bb43b33e55712418ab55ede381a203bd238192a7e3ae46318c63bf1056a1a4cc1f2d4ca25d59351933e479334924b9cd09ad07d58d2485ad2c9e827a4c344d28a19fa01eb30dfa1d549bd6d435fd5dbb65b51efbca45f529348238b341a914623d2954bd82bfaa43527a47ba34a22893e499f5209d1a8c66dd82e2ad145d77ebd9e59eb0d559bbe5e9db5a6fbc9bb5d56a296b24f442727a5882c31155748a43a2275ef6a0a7d5e7443037d22477ad73b83f43ee97db92379eac909ade1a279152a2ee2648c4e1ee26a6c96f4d1acf42aa81aea8ab9829bdfb4ba03aa9f1a6b9d9f2ed4755dd7854e6a1fa679ace82b9a72950a1522c992aab764e5ca565be20bca55eb55a94aeaffd55249a5ca4a227527a46e7472d20f580722ba6bcd3cf7ae97798a5098eb6144fa492555d3c94317edc495bc4af5974a7dd15146a477a1faa161e610dd7b0a954458d13f9c8cd16b48b57bc6d5d8ece8bc23a5ec8be4a8f3302e86374f4e28b473ce394f38be2e8920516861bb6ca077b3e93d224d8e461d3d6969141413ca8528a9a691c98528a9df71eca49c777242a16db9e371a70ab17ff4c7119b09fd5023be7f4cae7d0751234cb2394bdd0245d4bbe89c164f4e3ee96db93376f48e6a27b47421b297bc4ba7b968b29754c89d94bc749a92974a6aa90a61aa2827d564f2a17493d394fc7ba9c268224449fdb2cb1b75242a7a97a3c57e449ff44e2bc21ea25c0cde32ba3dca28acc53cbd7d586a80c472669a9e85b393e0cb2ca43bb340d0cc14c1d12a1e99462316c23328d204127c39089687700f912858fe28c35e14d12e5b268679e191197c018b1d477ce181c124629837cc5977777756ea1b3b7a89762d7d348a7624a957621de49544946e29d3509efdf1e5f4ac96642dcd2ab3ac3b838919ed4f0ad3dd25ea7d44553ccfbbec691779ef5126b17234d2ae8d47bba89c31d109664d76cbb29cc4e81309acb2ec612123977eabbca9caa854bae4666836abf2076c43e9a746acae5ddccc0f216ab8e942b4f869c5431782c55152ae5d88780e445b5ad4b3a85c435d51331b51ffc840bd51e8896a949a288c2bda42ef8b798f3af6394caf2888b3d1319fb3ce652030b144e53fb463302aba0ab4a81df903d601da1e7b6534c86531aa2c8c321165625836a2d9b70b958d462611b4db75d1e5755dcca59b18819abc0c3021911204c1f6695fe51ab36595f76f967af6c8f540df98f79563f5d6679581d4e8ca41469f1fd1d1b1eba3d1dfa7a8cf8f28ea19bd3236c3aa693b7669da5efa1c65a36c948db25136fa6db1d5b4d51de44b4268a583aadc321ba37a6dd829842663b152bd32761ec7ded23f6c3b768cf64732706c29cbb22ccb4cb2ee8053a2b18e2e8406aa8fabd12c7d1e4fa31df4193d6a1534a2a38b2e391ebccb4b4e86adf75136a2a8d1356c1b51d4bd9b65d5fba8d67897b5e61f95688e17765473bcb05efd451fa5b28fea5da9b2569b6855fa2aa7d787ed11b661a59e1f1d53a9b787ed8df3662dd59bdd26dabe1817c3e41eed739076e9cad37b76cda31c848178bf0cc4fb889a1c45af8c459db91826f1286fc1b03fbe98688fde14eb3965e05c5e93d7ea447da3279f632db27b7ba185e88c8c721a1a8cfbe734a16b1c91509d3271d5d8e734f19fad0a01aaf5455cf5714cf471155752346b8d091651d63419bd66be74bd54fae8858cc55856e851aa78152c2bf4aa8a525153d49ba5ea9d2bb5d65ba2355656d38ccfc67bf6b2052cdf624d081a6360862cfc677d38cd493c4e0c0d8e1257c04109b0c7d3608ff5e608e64a73bd7f1d27a6413190677e60b5c4c5f88c607e3c30ad4319c95ef3800884d1acc341e897c843c41117cc1d21433e3872f0e01715e768f0148030425ec08285900a165e01f08525c5c27f103e871f200c0e83611db24eb67dee023302cc21c023b08e8a67659df8329a54442fdb2db4e138728436c066dbb66d1a57216cf1d93299f8a293e9943ef4c226e0c8c0f663fc1c5473f8d0eb7200dbc7e808aaf8570eb60f6b6c1f46c0b655276cc19c0384d19689641a0ea460efc760b38c0839463022d8113025b01eec08580f46647442b31b6058f8030b57cd2260951698b3d0bf0ca4d4186033d83ee49e812d7a85851717a60f40180803e91608433ecbe664cb925216d1b61b36c1057d245809db319785d8e67eaa870a4dd866b1a261af301e0da6be5006cb7d01cb2a369e8b005f7870152cf31360122c9f7b6ac3203eb090214c0254820fdac585d91c6017c8ac057ee11157598030e46d1060e097c160390996cf23be7096cd8b2d03518285878285bf1c046ac1c2fb005b403058b62db00507c0c216d822c538195f37c8825847e28afbcc4af32515bc8258eef78585876997edf0dc378eabb09a82b4aa066c1163148ab42aeeb48bd6838c6bbb5dab44b66b02c2559423addab66d096b15b1b10736ab129091bb38f1a6c28ddecf278063b7d7cb9cc904db15ed767dd81aecd6c5e18ab0977b96826919b19a689723edb2bd068401b3edd9af37f74397d10fa1386143f2b2e5be51d0350ec76ad4a62da89a4cc036648789f2d15a55661b6763681e2a64000986659f8f2988c904262028474c26806f1a29ca11531096a6204e7081611f0cbb5c5c1d63bc414a223b6842ba70e10227632b077247eec81fc89e241a42179959cc0c82f2a06b92663066189dd805aa0498a25665199279b312db182c6fe2ca279830764b4c8306033035c83195768482d1cbc262d75040d8ee0675a6dc1da63dba83e7c9797acf66fcabde99a27e713150154eada3d73bcf14e7e868b9a19a394c69c80c621b6707a27066efc09aa6ce3b20a6f5ac54de44eb0c945761ab6aab4433fb7c66ad334e7fabea3daf56d8aa3951f4fe28d46ceafda3283ac3abf074fd34e386bda9bfda48ab42e745ef8c4d5df4d1d17d7e5fbd3aec0f13dfaaef4d519f87e9af7e75b6eaf3bccfa7ee519e2fa1373831253670624033f34c4d3facaedd4423fbae95d01ea0df98bce41a35fd00ba7618a3d51e2607718df9ec2b9ac5556a9e5d7c46ab371ca3f13c2f6075d06740f586636accf7b0e1373e4c8ec30370c8cd941ca6a90eee976956198d7650bd31b956b9c6a4c1e137506857340787b75c748f5e1dd643d1ffd7cefc7177171da6ff514e7534f3fed4999b91b2de2765ab2a753fb977ad7b128e242109b78984888898a96f17b160c22f902008408ec4dc80aa8f6602921cc41c61695c67610d34b69959d8d421b7c376d3961931610c2853d1d3e974120a453a9ddecdd21d564eebf6955485000b5bb3dd647a2a2565e9c952cfd26ffdc24828a56724a477d444e95958fe779a838585000b9b72c8ed90bae9307ddec1c1062d00eff777ef01a036501c54a874d87eda415f5dab33ae220e8f2a15c78196d023faddb9de54b39591f24a0e7a7c016140fbaa62a0a45ef59bd969bd5bb2dea157b57ac47712f35846125f54554555a92bd7e4c6a5c3f4977df5ade29577f4f6ca0c0b79449da5de12ea24467df7baaebb0c68bb7ad4712cdf63f9477958b6b12c4b8a7b3132edb2f2781efe52699e0ee94f2f51d92a5a61ab688a5e1696a64ef46670099acb757ba50368557c0afa02e5307d5a3162c1def75dbeb1de8d7dd77ddf2713f9f1a33f443d8bdc0edfb3af66adea466f7a63455c8cc93631063c85d8152719a387aec2f21365396531a9f89536c553bc57baf7b58eaa44295c2fdfe26a7cef16a01de4a12a8dd6719fc6f8f5559f8e36ddcc76a6571ad451f5eab0dfbd7a75587e37bfafda4855ca3f693f697aca536f8e86e85f8aab48512a815662a89c96584a94aa7c1a2d51aaf29d5e1df68fa7d3351ad40240ff3dca723aead05379ea5fad5179a752bb9b12bd53f9ce871ca3ee3df350de9d008e3d3dc56b6ca44df19b7a1f74fa353df5f1a9deb6a7a7fc287a6f5894f7151cd6bb61bdd793286c55adf52ba4957a7590eae561bd7a514fbda64c292952d420d87e3fd948cb8fccef0ed3cccc72e67fa0ab8346aba0ee9e0aea39dca301e1b0377554b591b6b39196e5a943fbb1d48b63bbaa72152a7a894a9b03bd366cea935e1d364529b45a888ba1aa19126b13ad887351675844ac77910edbb58db42854d72b6fbfa8da01af9f9c69ea5d033a61bd1dd15ee7b818a90aa78db4dc4d680e0ebfe125140338d423b8df507b04e0369c391f02504d2d95c6866afa41d33e1b4761104ca0633d8ab20bf8c94136d1fea717a5164f35ff71d487fdde19df864f0e39d44985b3ab36d172d9bf77c31310a5243c1c2226924d894c88edfbf871bb887b7a77c8d13a83a1a080fdfed11c1f8bbac68caa3b30fb0a8194f5ea05c29e6a8e94e54efb6c1e85960340bd99c5dee2d8b7b740f97616d488127a59d83eef30b3aab71a68122858070613e53d282c2c23d93c9065737af5aa54323cc46abca1b09056459e81b435f03dca1e8e105824072ce2791080466c8d5779486524645e309168979b031ad17e4200edf1e4a7f4b2a5a77f8fdb4763744cbf46757f5f7fef286dd4e9d4fdd51a49ef8dbda37b995da1e21acfd4ca35d389965e29db997629adfc44bacaafb429354e5fe9deeffe5deba88adfe8fe6c909b41cff5f23f5c8d7e570375efdd3f14ea9ef7eefcef16aa4acf3b1d1de37820fdc7dafbaee25ab67d94fba687ef5c4d3fffdebbcea0bf77d4bb7f6885ad4265afb0558dbaea90545bc521578374afd690fe5ac382a236dd55d9aa1467f9a85952ef9494fad4ca575652a733d7c34abd3db2edc3c530bda652a7d367daa53e9a50e79aba56e90c95a9f5f4262310f5a6a61bd3b58eade6c7af4a4d6e1fea748fae1c4aaec64924d9aacff4d151b5c6743ac3542f0e4c3c419846f5f7ee4ea0c6a62de9a7f3bf124a9ed23710b9414e46e7fda337e361410751d8abaff46e0746ba885483608b7a774797dc8cb6a85ad397a7a738dd2b07428fa2976774dd6357356c43517ad447ef3f8fa2d787a58fdc0caedca77a47a7872bd0a256eac5b1b49a2e9fa2d24e2aa22a2a135f644ce562a8d88105c176c5615a05954bd8150fa2ed8a5a3362eeae0ba2df757425e85888841140614b162261044d584d8bdb8d9cddbbda75a2874267c9d5c0b25671bfe9e81fb569eb9d501a8f1aa1f39892ca43afa211200e72a32ad32a17402bda402f5aa5e98e6722f1055465e2cde2452d984f7092f899a3c78ef20f1265edc67aff2809b6eabbe7fd9003827540bdbbaeebba0e55bfaea3ddefbaeeee0d133bda47d18bd31e3da997fe36dae59f07e29fff2d2ec6919c4ecf6300dbf0d5fbd9c4553d5da30c601dbeafda68d5f7e69eb88a42644ef145bb9c3ca23e6b0949242ad13d6cbfcaff0e04eb00ed57234fabf8d7a6bfeff7d5a6edff5514cb79f5ef6625f5a65e5a551915377ddfbf934a853ec54d287d09a5f42b97399daeaa171eb1a7ab40624f37a5a81726b1a77a6d2c4bfaf7149b68e9bdb35cef9daa5ff164d47497966b4dad972d3ddf26dabf7ffa4f95010c601d68adf9f99e47aa17271a3fc11cbdd1863ea073e85c6122e71db4235a980e5d3b28e37eb97afbb676411c17126da03a2dce8d0f0b7a8887e52cd0434fd86b9dd6f07d5810bdd1720f7133a2c5ce816e5de3404ed86b85b01ab72d9f0b6dbfd941a07ab97e485bb5e1837eb36ad396db2c1a9f3383e8c54859a872f47a55d36e711c7790f6d0d94888f97ab7b48d93113aa8d6806a6c9ca67955f33c0da4fda3619fcfe7f3f9645605593d7a473150e521208e0365a0cf415c566b3ecfae6d5bbd361254a33d3be8d7a6393b07faa772a06afa9cbb05ba15ba756cc33e9a54446de4c5c9e05e13aa972daec666390e740cd33ed96360bb40101f043a3301e2ac6b1a6f96750cc3642814ba0cfe9d1614a25a6f1acd3ef53212d6bab499755528358b84048d476569d7b1df173ce28b4cc8140ac5eefed1393d03db0f45bea51cfd610166a3c666410371a343a10824f4efe34fd3628c5114d2eae5e66a685654db888859148361a288f2357a6a23510421fa7f94fedae34e1b892200d22edaffeed1be2f850ad557a16ec25e9b8e226823ad0a1d864ae2999e8c48dd0a5a62a35de83b86d2306b42b7beb70778a7de088487a85e9c9b2802b681e9996ad43329a1a29f501595b32a05cd7ac557d1928a1585ad72167d45575c45495741bba7a0a392333dd14ea837b54711b00e30865642af0d5b7253964fe679c4d5b550bd2a1b9a33d61bba8ae83325df398e1c3972fc3cd154363eae44157e5e09855685bbf78fe3b8526f6c4d684afda45547bbd437fd3ccb8f4aad3c4563e8917b68854ffe5d444f6235698f2f316957f9270a856ec9866e43d5a4951cb64ae52ab5a4866ec95122e59347edf11ab645caa21a2a2fe110874226adce5029a930867e426fc9bd5fe50f557ee9247472d14fea878629aa2f856acdaf526b561e2aa1915e51cda1b2afb2552ce7957ba1159650eaa82a5b953a4d4a678c738644f494f29358a5a8de13d7d3acfdd3b513aaa355fd13c511827992a355fd93ef2929d7b49bb227cfc62dce904a0babcc50ed251475c8cdf8572abd4a4e55abd8137d51832151e8900b71ffbe874aeac5b1253cea3596547daaaed0d9bfd58e720edd7b090d82ade85d6b4234b887fe3dc610b4a847faddef13c0b1f1228da90d1b7a099d215249d16eba77ade650d9cf43d58b23fab87b47a1d786f58e4387c536d1cec0a1044a1c611a9c09bdd942e72ea2a17ff4aaec177ae3b0acc332e93b0f304c1127e3869943b16446e6e247218fdd381e37ed79de61101bdfc5c34420465214ba01da25246d949a05d3990174c05cc7aa11d6555db4aa59b4aaff4141173b533141e3252cfc12722cac3b3028ac4d5bd38c0f9e6461bd16784926c8c5a2ffc9b4431ba22222910d207488708088870f07643e1c9830cdc3cc0d4c44f1bc9348a46dbbc7ccde562fb73784bb3946c344a6fd8da2d48b638730e1d1d349f4a76f6723a7d379239126bd6c67f7bdcb4868cc435ae5793b7c17bd694abd25d125e5988fde9069973ff28f5923ba65717827b18e76e94aaa5e3c10a2bfe9569242baa4308659286c4922c9c3f4b75dd28e49a1dd4fa19ddb472f0efb5df3bc92ed5b9a28ef2dad129de937475424696645d5aba55689eacd51b2a40e5a54e8dd49a19009106c4be62f553ea9ca8d765179fcca570e53a76faec6fcdfd74454f4a61cba2835df29f74ea21787255dbb68a0de179950ffee6da4cd84aa333e51bd386c9ff4d235ab45a87f179148a6adce40d54ff4147a49ef4eff4e1779e79b88688ae81ab68968ca2187008f5eef29f543c3f46a8e92c945b5e6f4afd6a42e22d11c252bca51b2a72a5bb5727ef7e668842eaa3651546fadb255b45e94f94fa6b255d8069af7a6e8fcd6b24d9b22af5e948932e76fb4cb8c262fdaed28d7367ac306101be9269289e49da9e9287a7158d4bca59473e94bf928ea227a3a84e939125d8a4a29b5d4aaae3747c99adedd23a14227993c138974ee9972184714754945a2949ba3f4795ead611a21d2b526799f885e1c33bcda6754ca4f8e22cdd8db3da5644fef4826d361a289868e727192b0dd4bf4e2b0dd6ddc6893100c82698442efa80d0a44aba216ba88f249f446bb8c48efae75d44606a6e840b42a8ea8ec1cd67bfc279a9ee89e25d15b2e741b4074ddb3f832fa8446ac6c7121b2a2bb681751ac2d2e422dd4bbaecff52c87776facf5f816ebb26aaa555192244eac2c901ab01107aee2553c8b022842fc55612384218339072de1d0c16fc999514a295b252fcbda8143076fc04608a3cc914490f1b2644bf92cd69bcdcb8a87d7611a8563adb17eab9a66dc5ebfb5ac77b52c9564fa56c973a75a25af92d7aaaa6756daebc4480ba663186cf0440fa0b83abeda888a6a6896a1bdfa5abdf8ce5ff44a3bedd69d3fa351bd3612b60ba89397cc04db201f39194c703158e36de4b52a96acdf1992b1575f43822f2e0633018718611d863013ac03b4928f640dc462d5546507261f69158efd6ccc1db190e3832ccb0c3c848df01066e2081ff970605e173d63a373e81014f3422233366460d230e12fe4c9b2394ba57fe6731e09aa39814c782b46a1c154b3c530a4c90dfedd1cacaab7aa63a973e87fe646e7fcb458cf5ab0eb2de3c704135e7e81876036cdf03f8ef85c837496a6c5cc3f722c8d399b333939564e8e05e21f3abc7395e60a613433ebe4a87847b4978e3cf70cbec06a59078fce814f060b3f93b444f89d92cee49ce9850c36c1c21637070b3fe3628f502280858fcc70a65d4ca0e39842a09d10b71304a455de0181b2fa59c1c42a036995075bc05b74b68ad2fb59287d344e63224b4218dd17689d32c0d5f56b5948c407b8ba20bc38097bc500aeae28fa6acdda7806b6b88ea56132110823daeb9c04f8c23a44885c270261c4e07af611724f2c9dcbb2625f00be5c0d6170096087c0dede80bd62121d1cf1a5e5ba2e0b278641a07f3e9fdf6835fb0899f2731308544b8fab8b9308492284bb7212d8e23a4c173127c0b6af7f3c30b12449ae63960441b1822ff03c1cc260b1d85510465bec33f1e573ec106202b0185604da8e14b6c0fec1c00471185c5d454c668ced2d59ac84655a564d3e4899fd06745955f67a5669e4e363bdf95ce2c45c333f4015a261c62aab2aae7ed8027bc80c533e7297e4d1f82bd842a258185f7ac617cce4437c9f26be3f37a6f81ffa57bcfa3d931d631ab23066b145055b4833ccf81faa16d6e19c56c95f57a5da89ed042b12e00a1656e1c227c024401f08c0c2070066d99ca5d29908bff01478d51ffd7291ee978d90bc24163691af5e00d8cb45bc7a53d8cb454eaa17652f172975a1e7f2153e47d9db3bddb3d33b01981c989a448224228bb4cb95489044e412320ab69100612400c6744f5cf53f31987c1402d83e07e967a55ff5b6d80740186da165597148442226015f5643620f6211dbb189c863fb56ec9dee6925b4606f2f617b27f615af40e310d8a2a30de0aadfb10a2d4f5025e145b0fdbe0e6ab4026c917365514cae908b7416ebbd01f865ab3189b8eaff02c05e0210407b1440a5253e132a91a9ba0700dc4c1c1257fdc846b8481c22556d848bb011b8d33b6c848b7014b888c5bf2c6e16c2415aa5821905d984242263909dde911f1f178e15493430021140385a4958c2b2128458ae366d658abd9be5e22deb56b462bdfcf8eb282519985c6bacc537fe8acc97b6862f23d3acbd9631cab62c969d35ba2626ca421f0eb469da06e23ea14c84cd6b64759214bdfeb864b397ab47ea465fe8e2049476a7d3a93b75a7d3a93b75277a3a9dba53773ad59f587e623ea52c52fcb4f213a5a99f4ea7139fe4e9949e2af720aa9c81a594524a29594a29a594524a29a594524a29a594b293b2ebbaaeebbaaeebbaae6324a494b2bbeca494524a29877840e7c70cae81155e61e695951b0e606116666161cef991e214a752cc457840e707e7dc882ca486152b15b3a450713ad5d075dd8aaeebba6ed5755dd7759d8a5952a8e8baaeebbaae3b75dd89c58945f7d34fdde974ea4edde974ea4edd89c5e974ea4edd497552517fe29f78b5aa8105ade1278a59969f58567e6241533f9d569c56a7530d2b56457840e7075f258ad01842629837162901e07d6ea28f10e9e109924490214184b0125c04076117d8d8b3d3a3c33fe011e80444029fb011f64025ac57d9e2b1de77d70040434f4c00741f0087e918857e895913d389d213110a213fa407fa2c7e6d78e8e8e8dca8e11788204182047912166706f41767c88a5f1c246cece9a91707481bc1d1b148e2aa7f7d3861e3c521c2c6eb23498a5f1f50a8f8c5c9b111e7878d593667a9f4c71cbe3e8ad8787d44c187111b7f7d1cb13127fa0062bb16ef4e330723b100a8a556f55b50d30c7e5bae365268af16cc67476244128ba480481190b07df8044722edd2bc85203b46d0895c0f4c836dec3e13851d9e18847639bde3bb225d57a45dda761054d0973aed025f18053c4db40b54a207494c623b489015d82b737e5840f88019ec951e884fd87ec7b16d5c5dcbb1aa7aa6a09d1c5b59cef4d3c38a15996dae077a168f94fe44599c2966539ce9d52956ce3dac9c68eadc43aa86153bd8c6c3188bd878c4880eec2dc52291450d949b68557f05e51ee8c4173ed247a29344a7270bb2a25c844a450aca423987dea00ea095eae8896dc4a657fdee9e7ef1a2a545a58a39cf81505853119cdd38c7b207340b391a7127c7ea0071cec742ae87f8d33b9a59c8f5407faa0c05662147a37972722cffb82ce468409e9c1ceb001acc9393636f481b2de4b8892e56ee01b41dad9c04a59c84f6f872ebddbf115fb2f771e8e0115fb44d27f4167d76ef3312a47bdfbbe46df22ebd4fde6724a6f7e9fd96f892f23e4c7c41bd4f55280ac6131f412902e3aa146f52f27954c677f123d6c9819b9168d16a8a87f6fad8b177ca9742609877069138ece383c33e389c885d6742d92f3f2262ffd460d83f35bb7c464b3270599c0cb458b5691a6cd974fc8e182b372514a523b04fcb9bc63b621450d8cea91260d8a2eb2802365a9c939393b3b20ee38c4ca3910c73b0a4c987edda6d6c55bb0df8920bd4c0231647dbc15158fae3f3497f68877105e2120ccc1d3089b589f63a8c81300017c75a3b68207a7dd87849afa48183bdae5df2c6c619d15e9bc5492ddb3ef48820fa8a568c5172a1ac06d1f6baf563d212820653f21f2d03bd6500adba16ba42218ea789996eee823140c76b741e62f457dda1c35a464879824bda006bb9da89d9328f8d8e75b447b475e20afba49d1357585c61cf66489b0d815d0bd1cb34a2e5328e46b6d77738e412620591c7de40e28b4eca63ac4c24aeb0cb2cb32611694f2ca734454bf4f2b02515b72cd7424f11a2478448355c839c0cd255212a019a1b9a4b3e9a9cb99b586f32c051c41c1132a9f70ac11a54a8af7640bd86a35e836906eaaaa3ae3a64c089741b9146fe9275058bd79b49e007be7a5cf5e60809fc2061e44aaab5c7556be91c0dc118167407dbec2674470166acaef2d555604c564d33545ec3555e03fd0a7a55ace80e8e6286ca5557b9aa06116d8d8a6a132dcb5596b9189587080c26b1cbabde882bec3ae20afb853ca25f4804e5171a3161d92f2a9fd1055c97f5e644fefa02e402382796fc9831167633c46374bacbff8859bd3ea2ece143bbf51f32bb061760591c7bd59bcfaf5b96bcee63deb2dec3c7e756cdf9fc18a2fb75d34c779d9f465987e86e5518579c76ef2c0b38f95571622057c33a4bcde8e929ba528388f6aa6c0df7ec95ceb8ece926ca43e20a3b0a6511659eb8c28e8d78d8fb0f9d5a1da2fbc94f335080981e5dadc04985312af4b6f55ea2d73b576da2cd380996a4772c3644cab58b8f2041694d6ffa43a4947ed19beb43a43cdea237d68748b9cc400162be5f54e7fa768beae85c973fd11aefd9475e6ea0eead7bc6cfa635e820adbbfb6362fef08d0445d34da06f2cb72865ffc767c4fcee0ff7cd108f91dba70e31ff3977cdb97e98b2eba06440548798c789e9e1e3e4f13fb66b5ac778ad391b3fb863c79a737dfb567bf838b9fc685ac8e3041156e73a8f133cf6c4429e2d04b111ebcd75831323af599c8d1ff13e7e904d751ed3679a812166cd40016244df1e690f1fd765cdb9aace634e3efaa89ab23a23ba0e4acd4001627a880e63b6c39893438e669ed42144674e068cd94c4c6a5bae1e41aa3b0a60b95a5372c86335d0863dcb86047159ee46c73affd2b16a8fcf84d3ae4db4dc6f27b183b45c2d802d31a9437ce767f59afc7612437cef97ea35a9415cb6a41af1d50a5cafb779e6e5d5202ecb49c4973ec683f9c06633b25ac33d7452ad31c27af60ec6cc1db86a84897b05faa25a017ea89ab83ad3e71c0b796c46218fb568053453f6c715965509d0588fa5b8c22e8104c0981d098031f2b1dedcccb8c26ee1c4dc5b8731b20217e817053da39c63e1453fcf28f36c5b652171855da3bc131948e420b1736cecc0c4de49c4179ef8721d7bf7606722f2d8d90886454ce234f70d683f1042156ca9559047670cb6d42ab8438e608b7e141b12802061794cf8031e276cb68d208c6c420b89d4a0071e68231108f6010da630da2fc5d5d54e94ec95653387aff34eacb7643f07fdba8e9275f9a9a658552d9f11ccab8a87d7f51b12873be620611107c083cc4ccc7a6466220d9d615ed8d3b3f5c85896e44166c61ac08c2533037b66301e7a663af68b1747666870480821fc74c0f32e7335aeb7dc17bfd7aa9eb389b7e46a9c5ad5b79abb074af040a18d4411b4910824470a43807dae3df8dd03961ee38c0d783e0d7c1fab377cd387d564e1c44498d812e1e5ad4f06635db525c2082fa3d5810e69d8153e07bdcf4278c8a7724e765510e5982c9b13c2180d1ed11da623358d0e2d8de81a4fcf46078fcea1ffe308ef3b668509632e2058904cc867c8418fd544d20e632ef35898b8ea9df8c23d87f9aa7739070520d0356a7a464df1433fd819a6e451c1b42e1fba06c3c9c497ebdaced51edc37ee5b35f1f6ab9a388e72ae77e7999538071bd5cb40fa32cda7214624b9187c01d82207b668136987770978d544aa71023c33eb0d4e8ca8dee0c470df1ea2472400c6fcb0accb2acf1b801006c9f65907c288435660bb04b63904b6b9c77287f1a67818737da3a658b5fff8fc0776eb3f40ff91fdc78545ca3a0c24ae84c455129f8fbc5030f958100ea723c7139b79689776e1220a4db0f746b4910dc42718b18221313e58093ef8b0605e956d1ec00b98ec220cccfbc2669407103c2ceb3a78cc8047f70b1e3a6c2012be0e1b1e97a583870d243a6c6e7070130e681719e6172f3acbb22ccb32ecd72dd9a59865561d80d56d03735d7f715198ebf785cb95c10ca055fd620030d8f522be58f2058c13368e404662067b9f6957d0602a528e71f1a214578f0e60234838f2108d87c59d5789ce892e30f96d2475d5532a2ea9426998ec956c98354766dbf44aa12826db18b7d92e8f22601b5e403907f0eb3d8a20eeb4912802cb12cd921545d04d58f989170e9060233c848f148957562bac3de78f108b421a9817f688845059ec30ad8216c4a0108e233942206642d653e9a5d3dbe5e21b6f971fda81b86143a88a8698d7614988c93cccb87c988928c3838d938a05ec5131134398e0739b6426180988e413b5231a8c09c5e8b057046330ec19c7d56b23190950fd87a301b25cc6c9d8e0a50481e441672e0648e3eab42110772d04e21ea300a8f4ab16f5a19c650ed188000100013314002030140e074542a18038a40ab35e0f14000e9db64e724c9845410e630621628c21040000000000000492800900a0e36ee3dc3aa51440d6b61ddd0c02ed373ad99972d40b10333cdaf91d2ce6524f5cce509c3e79acca239bec390a294bb05eb50a643f05e01aedd1619a72896f846ec40a570fae006026f21262ee44b6412008276d05b2c54683510532fafe8d7addaf974a3de0e83960834a7fc9c6f53b50a3220cde048db67454fa011a2bd1618d986e355e10869355ea6159ef849eca1b454f3e5e372ade781e8a141a27de1f7c14ca5c26fa7a8c451cd395cf41d3a7668690df9adfc74c15f0b464b6fe6b6401e63da12381db54b9597c88c6cb6c7a479b01d57b35d3000b21749393eaa5697b9fdecee636fe20982f7463fdc2b3781600cba5971980ec752d01f01ee47acd7fe47b308cc119ac5b05b7617b0d32bd5efb007b1f79af796537bc4353ef0c741c6c12475ac4730017095492f9021ed6721a00f5f2df0e205a69e013ca04287677576fb40e80f7bc785cf42e1f449a9bdf134783b1556aeb05f40fd55315b4076f40690f34cfac28f5c090056bc2b61da9c7fd5740ff408d29e1a10d567a38fe0e6fe60d5a1e591938d6c370b8a5f1c18eca492544c4f06cc771b420971b721923517a26960f0800b324729aa6d6990430e8b54e5f1380867512e063143b86483d3bafc20a2cdf8144218600d048853e78e90c10211ca1322c663104085134dd7352b60172639363cc3e2ce08cef024800fcf538db4954c55513afd13c7821b58acf582a05954882911ae28e08cb1126fa53c9e226f0e669a4c1f69857298bb2e28baa0c89a6af3e42ef7c0e3d773f0a58ad6e9fe4cd978816e8a6d34d8c4439ab92297af3098dee4218fcd366dedbad185885693c715af483ae714f00a96e7f2f1462b46d5976519b71667edffe24740cd089e757eb002e59f154f125a0849f01957ef0784013414b94fb0f19586d4b26b4132ed92b39d8f8cada84905f15ada6534929de38a37bb4b2e7ebc78fcf192b0be263fc7caa5aecae6534147637105fcbb21278622489ce4e81a08487a86ca4448a219ae58da67f48680340cdb53841e6fd44a3b67bdc773c39a651f466fa45f84503819c4fc2c449d0c9a6ac070dcc386c708c0d15b524cda1cbfa3f6b55e957d3d28278711dc6646f6e905c541dedea6377612203ba88be932745b42e8dff5ac9d4a32b1c4c0deab897abd890ebc9903b268d5eaeb83dda24be6c5d5259e9cc14a962588045a78668abf37a0e8593ef5dc5f93cfbf8441b1274d1d246774f86da01dba69dfc5870629af9d10e3f98d47bec99ce2575516121515eb3d3fe9d7e95f348103ff062ee9c7768de335ed27dbfc27b721d81a554ec62112d7e558ca8d3bb18358b17f7ab40d42c12e3ac409e645300979c66158257bd8190ebab2c3c1c9ffc8f9af5b10c60ea0644af0365e6c974e17e27dca782482449fdc8522a673de2c690d45c9ecfec1f813a25b5e48bd976516590ebfd2d9eb1cafd7fd8c9eb61f3fb3a2e984d6096f1dfeb7d2b9a67f6924a01c9b300905ccdf8e8e42f5237f8f9c5ba848c15af305d774c42d6c8670557bb0c555f65cc55a15745a6411a6ede6e798236a51fa91b00866dfee882b66d703657dea01a72e76efb772d271f59f42e9fa3b8420196d58f7ac2f8bf0a1234606522ee0b0667a42ad68bb179c63a1223f06f16f2281db3a7aae99bfef72de21f89919aea52e63d7871abc97936d8c914c3a25d94532406edc1356f278732720d3bc89a29f51225b456291c1532de333eaf0cf8c6389825d6e97e5a4946ca45181d2313b982315fcd10e98e3d0029f327fdc2f0313626eddff697841b6278aa5cc7d82835ea444c6305e886d58b955fd329555f6c043b21729c8bc5d09affa498e8935a22b9b0c058efdb1dcbee4e3319f6ed4e09db4999b2c3ef3239fdba23d90e9bc64aaf23ece96eec023a5d4a4a9714ce1a02dbd63066cace016c6a5e8a6acde1e59e132a1391f525def093f47c0e21e4554b0c2c6c3a0d468dab96b8cc156d44b270c892f28ae309a7d0f05757c8583517eedc5d43077700fa8184dc718c9bec64ae79743aeab8779aeee6d14af85b43655978847a004085a519a97d0b90534388552480eeb551e65c8977baa9f69a99b9218bdbee9fbe73af27ae0677a9225148448fe3f1a7fc418210b690d75e9c8ac442f24d1e07af02564568ab1640285c30ec75a49d9efb3a1bcc4915ce08eec0631444eb6da089e474c70067a8ae512752778e1420e3a4d5a412b80fd1cca2a0aed19cbfa8febc48580fe3315a2757996edece0d5b00f9a38076fb3c01852fbf48d0751d9eea80ffee51231668c7197bfe779390614274157832868f3a3455ecd5dbb122f69eaf0ea07fe37000bdccbf6079b513680a1e76d5ecc59b3f2c9aad6048c6906839f8aa0c3fd568f3786c23370cd86e88e127668ec00894f217bda7fbb6e279a07d585934c145a3ea107261204b06f957692d25b134f46e79a9a054cc9794c2a2678633989a57d861f39b4793049dc72388aa98d7c2d59fd43a03bb82e7ee498785e92419d4067b541ab49384affeb16ba13e7b0725500a13411610f077f348425487d0b47df6cd320e45267dfbfbdd70f2f773be70a854bacb95df266827e5eea2f9f6af44044b2974063670298d711cc15029382f71348b485a750bb88e18fdd2cb116e26ddbdf476f04855be64ca7ac109152ac3f4c23e8b736087da9c8522224a824a61548175cfb072f7e3dbf4f60e9fde8d20ca2d8e6a34b5e205b37d89402a39614ba645173fd21c49cf600e0683d5587d38c3d259b3540f2ffef4ccc27583f21f0e99d71c545d4b00655c4c1aeac63d949722ad3c14aacd21ab9a3a61d4e7835e0620e46c7d1b43d56fae78ca6933b2662204d82b0fe32d44e612355475942bc860766e4d229909d0a66fe8899c789ec99a75e8a46e2641a38ce8cf6501db0268c146c2e21b461d1ed9119094069a6b40ac88dd153df82754066a4d1619815a9885b1aee6f1754032ab6a11b68214595e057900ab5efe3ba4da9d142fc6c8b9b1eb61d4a8b7b78ccf666db56713a93150b3a33bf86cbd83fe8bf08a466e35a3bae69d37abd86c4ad77b131d9eaba1e4ce86d4ee0d09c4d377b751e632b9e128e027e54c350e19d4698715e52e6294d5e8d8b0f42a8f0d0523ce8c1f81fcd8d208495450d180a3198740d6e85e4fa0034154a1ce9c333b074a242960d0e208056588bfe88bd0687a0ddd3042781907ce9d31c67fdc5a60ddbeef828b30c3fb3a4cfc54c5ceec79625bd2a1fc91412d860ccf0b7bc5d80db0c45fd46b02590cc36daac1a2de7113c7eca1de450c5b1cd17f1ab1e02c2b7d786ed604134ec04a7aa831ab3efa2499face3ad08812a3254762e8a5ced99557e75d5a01dc08063b1af9f5e22042d34710052dfc589b7c08294d95efb6798a6e0514162b37e65c169e897d92af541815610dc73d7f8569dd0363408d385a00bb69ebe38b8018cf67b08eeb4e75862f1281e8bc0e9786eaf18ec99b01ec10d4021f8299b58535f100f1e2cafeac92bd1bfd9d5138f748d8830205e980cdc90ceb25323c767e9064f616e95b39cc40b877f68fcc7683082fb4ffa897a5ae101b52f81facf0a81502fc23c6e8474482c536543dd1cd7e73624e2ff2a5f5ee80a9743eda07a98f04e2e5431cbdd800d1515285b9d11770a44151257609c68ff8c79faa869ef1e20ccd27c0923652243f16697183ae4e8c8abc6152e051ee9c771ce8f5e2bc946f6604f2143dee42c4637f7f5b6ef2ae2e271bd607b4ceea42ec1fca9fd7d689c3556c082f5421a7b98a4bfeedeff3d6e699a0921eaa16aece8a04c2db5ec9b128598d38e2ac1c8e2b6e6f58336cb9fd083875607b6287993a0d399918df01f39b0de6974aba205044178fe2f7882f3343276e19771e22bf6637c20c13ba6c82a5b504a629437bb35aeb8032426f7c7221194288db5d39991f24103ec76bf28ab22834a032543aa9c36049a75ad0f01bb5420ae288d36d9e18480331a8ee8ae4996d4373b38611e9b38266ef52c08924819f6542397a97ce578211b6a2968b6bbbc3cd66cb929585fc394be40bd4953cde8beea39751e25253051d497e579f474763baac97ad9aac2d57bdee41e3c5cd55dcfe05e96e6377b97915e9f00f4153c02910d5ea61f05f7996515b372a60a271d6fa49c0d03221aacae1d594345ab2083a84e1c56b8330d22312855602e8930e22ac7740415386fac47c3ae34fd29e06fed776d1319818569c83099f3cb0278961d4955dd176d12f5fce2560971924f18b7c2fd54f7f35bf51ff04ddb8d6ae51ef7e08acd726f3ffeb6c5f34861389c91eba9ead078b2112c5f6942d51ba8162fac2bb015b742f7a8b3c3af59cb6d128232253bb5977d297753e8e8b26fd3cd83afb3edbd2ee7a3687c424ebf833b4a9ca6f9351cf0870c99064c6bbc78ab01ce9405b6f3d124cf7ff31289dde398fb5ccb0bcf24114f66ff7f7c08c3a10163ef44151ad8340d40eb341788981b609da2a8504747e61dcafcf07ae4303736a0ce896a00a2d9889d5e7a8fd2933ec11f58769b6dfba00945c3786d7133dbcfacd43691efa4cd67795ef76dd0f24d57b726167d169a3cf7233496b03af00350b57b404b3c8a2c0d1f89935219c1a513e0118502a08076eb6376766e79c47f1f2b4441a704be9ac58ab276963d757f5b128425656988da69c07d036add17b4201f484719c6d4f206036d4311f5743128241d97a729c7ac23e0437f3bef8820690c546c3c8d5f4bb28a463d5d959028d65d6882ba7d4de1ae3b1b43d51e1d8bf9bae613574d3d4da0c404f8363dbe0465854d367928f22b19509f312d8e1d57d3c571d4e397c3f4ac3c18472d57118d6a3d5b919b913e5a00ca456ca6d3390ad521b38cf4753d7fe8aea023c9f06be38c296592d2ff49c534e955763cf40b4c18dd871fae9aca167156b71fcfc1e99d126c9540d8d5a62a93e234b728453e73f74dd8cb1b45aa5c93081c6567c4ad102d351a02363909e258504359df9d22627c02ef191cef9bfff01d632f8a0af975a0413fd5518c54fde57a27968e0106fe034d174a9aee52c324f499594ef02788da3f6135b2c0941813c889a0ef31fbf0f0b5aabb849508a43dad92cf7c04ce7b3f9928b818875d4e0fc68909ca20f52195574a6a5a4579dbbbf8acf585b136a1be74c438a575670d0d3b28b833809328682f251ec12ac2c54e8e4c031240abdbde7ae1768e8e8369c88a315b386e6a549ebb6d5709c0923b80c73dce9ce3dad4f6128ba8c0d032d102f20527a1cabdea20bcc3b11dfcc20df7b544a5c5c876e519b00716174124c44d567f24bab47ada1d6936ad11de1bbbc52b5a5648316bbe09effcfcb3a735ccddcce39a83ba9ad7a1869b8e1d1a99f579883c334f71836590700517918a780a6ca6bd1916a8b6af4843daae5a64ecbb6869629f5e2e7b6306a69d0222fd6752cf2fec35d67694aba9131653585bdac700fdae5a3fd1403db8727edaafe49c84aabb1af01f5c72857fd7fc1e5860ce7ef665cbb256657e4a825f3ae9c7f14881d06981ec1e67625be057a16660cc2e968ad316c1833f254f0d0d408c7a341f103fc57720828891d225abab2e8d8589f30daf2b972b5d3df3fff6a110efd031dab5d5527743f47c9ef610cf926a62ce744bc591c17da30df7a6d6b2488cd9dcfc82842d56e6746490b6150a71dcb3371a78989ca9800765fdf1764428527c0a9a1587c54829fbaf1e8f2345a800816644b29b48408d0e037b427d35803a004e663e5e1512c7c6e4ca43bef72018e010b77e7fdb6801e14dea7629afa736cea5e1b3c7a52488b366bfd7c4564de113b8d76dce1441b3a9ba351d684a19d88e11013aaee0de3b925f0bcec7c66752f8b4c6401dee55658393844cf6cecc52213f4feb6c04ac336e83fb1318ad01eab5ba7e4315cdc48e7119b2db1dbaac0909c7c5edd6321e1e0bed1e38a96fbc429300dd38f84e7fdec8d9c6f7dc5fd955dbfcb526cf135a79656da474f05f7feb3cbea8c1729ac906338f7c6b2bc7a009d832f58f2f5560693e127a499a64cb5bb08054757a879181fbd061f1023cacc05c4848a77420d74268c4402dfaafc175d6a69c0522739730a15462ea1555154207b74142d7768e82e5d3b97c1cf756b010452fe349d11fd72b9a8e3e7ddaa64b752dffad6fffb14e1f7b647753e8af8f666711f7d89989c35646529ce69f8c432cb412dfa7a6f2cf847323693ad1354a4910179874e234273d2119334df73945bd98dd82360b25066e4e75a802831907d91084452bd593a94f2acc05d8183c1ddbe9ce139c0a91406f5e2e006eb975b1e67ab8e4ea8b75934970bea78613639792ef8b121025235af43dc3a64c26fb91875b7b031e0afe096d08d217d8bf949f32d8cea95cddc50ae518fdab5dff55807dac14c1201e0fd4e61db72a84a15d4603db87e8289c6491833dc06ec9dd940bad7266bd19bc179d821b7013a4319083ed3d2721eda08b05bf52c81bde2e346f4397169548005977cec4cb10de4413192ae51088533e55f362d971aa2cad9bb8fce0309000dd5f2de64353c35501a79e0daa939375148a24f59c4eaa94ba00ed27eb7cd8358366b2cbc87681ee0b62b2612fd260110910566c4d08e3a3401c50c5b22da56821dbd1181beaa9cb0ebcc6cd873c1612cd2eaa902331e925558c8a5d68f8588415ee55e67e474efad26aa38d88f4f20e58d03be6739e381944b31654b02094414f5c9c4294f9078d8a70c57c302d611de17383350c41678668cf6764eee1be38806fe0b2a2f2eb412d6af1a0c571394b3bdbf398eed549346a9f8147900b9141f4ef960cc0a168f6e015712411994a7367be8e9ab45eb1645ed5b135812e56d2af019c1a0e471f14ae59664c094b59fe5cb8fdac8db1541fddb077984796f911c2c42fc522636ff788c55521d5831da59df1ef2e2384cec3ae6177e3644c43fb4af9ff61f56ff06787cdd6cc37b3a846e807a72501b5b12e2c453db7c4842c98430bc42675d58ab9c25034ae216f0c952069ba420a1431b61634c76f689d05e7eba2744a91b5b4ddafa0297c397b8eba59cfd1d8e1c8f5adbd3cbcf82b38bfcdb8dd21ac33e92aef034775bc5b90e616d4a826f9a67e8c4259004a607200ab06270f91963c6a7da77711ae42b1c5c0ba3d82293f30abafc823d2c442425490e5882942d84602fc60850fe33fa74ec25804ae64f979fcaa7e527ad484c719efe26e1967698834119dd5fa59d15a2644e3b969f3b3326d64f7e688fe1ec1bc5acfc1c0deacded30f451f9593a26a29435d2dc435046b8b615889e5ebb8b37196bf4d7bd213910179a7ba1f57c4660942aaa0ee5274a6e810511688905a4e1162c21097ca2949fbc42f9f9f007c584f2d3d541a6fac94fc7f89818a5c94fa889a281399300613fc15d59d6e25dfdf8424444128a29a29e3fd387e8fc493971fe847aca42d59363e3a83a8ac60e3cfcc3e448df1d4549b36d003ce0e990ed305eda760bf69b993abddc2c478fce39c7b7e9a80f121698daa4b4014c226817779b0b2fead927c515c950a6379ecf024a3806b2a2a25c9c06244fe12d4d1cf71190c707972b951bcd7b746af9231e9c2eee395ff30b2d74faef59c07f6771113cbc907186dd49981ff2fecbca311c4601afbbe39f4aa3603c70cb34ce891c5c122a4a9447a74447e33ffe185b8000f2029a7867ebc8b2d9f60c6c9da5d88b3ee9c3d7c01615cdfffaa34539ca4ce1ca28b61e858055144f4dfc40a66f40a925c53d51cbdd83b6e74ef0109d9296039e8348a63580057764c68a9cdea9a52b780d680ca774b9e661eeb34590f92b5efe47145112c8549c96f11e4a5545f2284b2cf75b22169f3f59c257cd9c406dab0aac7790698194429300b361ccaea92dad24a32c08d68b0b8187e55210f28aed126d939726615caeabbf1f57fef3bf38e61b7d65e5fdf9bf10d1727ae70fd6f915d8a9ffd2ec3710cc634c3ee0dbcd837d210986b6c0253278adb603d84883964049014b97c8f9876b707c1cb19191ad3911ec54f1f4066e23db1d83d92ccce1186769eb3ed3ca24147e8acc19b940a0466cc15010bee027d1b983f7dd2ecc46fe5d76f412d8faeb351764e8ef1c5b4162e3224a7854b8c8c9a0d8461e54082afc76ccf42f707aba820a5f27433b8c6962913e53a3336fd0d0f9225aa69f3574053efae0dbb895c83dd21ad5406a594af06e9f2db33cc8a243602d6125fb39e0563f95c44bca2b84e69db42295a60a3bb34aa6e66583fc971684c208731c4710eadf28e4bfec7ec27035dcc7e55fc99c541b29ac8c6bbcf7f82f63110e046b1089cbf8e2beac5e069c9eae41f0951926bf6691b018779e652917988eab0c5d3dc8ec0275b87076fcd34ff22a4d8438acc5f7317da9e5b84f2c9285018d246c8869d3c70ea07d0ed93a86c731fc0bd33128809a6fd52729913b01a666966674c6233dadc9e8d3db897ef87828e3cd5efdd21b540e9c34f22fd37bc904dbcdf8a22aeee3ed2791a6e6d10b1916071a98a067e8e5a9917c20b3e424e1a1a50f684cf5c9994c900c3a1afa3480335ccaf530c05d237d4865c476da3e2db4e5de90464ae55bd2ab2bfafaf414e62e3c24e8f6e8794eb7082d3b00a1d0c7e5ed8d8476e3fa6fb2511d833e4ecc8f28e22adc0b07cd7d832af368f3a7ec9e555d2bfee7324c68c292eedf0f3d6c0aa9cd9d272542fe4ef37cc2321d23ba94551dd05092229d93131b785d443c732a22e51a3a507a946bed3ebc21579d5b808f0c262455bf81d41b3a908b4d28e7c514b9232268b0e53e33272c66e98ad28927c074a01d06a7add17196ff690bff357a4d41a938bfd2cbc84f8eef5f72696014e1ba0f18498aaaf9c39e27a4b974161248760eae92829f12d834f1989a96782a0805cc4f08de18fb50d255e781fb7d14f6e726739db6a82a1e0ab6a532fef7609d4428616fc68ca21a4e95c79cb4c88fa1a9d775fb0bc2bf740de41018ee5f1cf7b5d7e6d8a83214d232c7b662d2a6671086729180a47573285fa219f0ba17afeade621887b18045544379a95469255225440a440c3c579ea54b16fb48b7fc6284f06beef3cf57a1be01f5a88194046c3f1b5b6993a608bb50ca104e28e8b7fb0b8cf2da7dab6132b56c2f8948176fe2cbef2026a03ddef075228d0e1e498c377ded5d1894c522dec08be146a62adeec0e5c1efd2cc3f257c317a1dcc069b2b5a9e434e04de54026c38a54bd4e06d93adf63c7c157e7eaf160e782747361608dc18308f117e358a3456596f791a0a3660d5fdfb3475d33518bb32b015867d9bbc35dde022d8afab04c3ce9af31b204842fc190250fcb63e09b8e42ab2513d6d452e24c44e26ed30713e2cb3853eedde8933ed074251f7200b90649fe1abf05f459cd35f086e1772d27ce50ef66ac239c4b95cd6f71d4db14e724545ea03f29b15a8d22335825c21958b21eb34aa3ca1e09c5e3c619bc0cde26d66c03df84adaeb1cc8d1ab0d149db018d0a0ec71fd38fdf9e2b3883455b0de04eae0f1160465a562e0938626523be073307652022961e87656754a72e083bf9a85f53984ddf7e119d0e705509c3ddfba068ed500b60927eab420f4fcfb051ee87cec020b65af827997ec8d80ef1bbd13100e11a53cb9531e106cfcddf72aeb9f15e72e06d2fa5194bba217c84a03fbafcd1d0a52f82190e5e211a549e365443f4540718fc6ca89ae75766b1218859286ca28d3317c99ab8f52bbb7e6f0b9059fe9dd93b990dc28f1e2448adc4c12721904e200569d79d94c1568451154d4f69877762eafcce46cc52efb06d1e4e303f2b4b717e5ab830a42d4c0bac7fe19094361e5bf9633b07145fdd3d9be92bfe99fecd3ea2080458851305609bfa5654c6caae24efd810d22d34eadd899be41b73ca02287b62385aa1187a6dee307bfce40d370c7c29e275d60148cc1dbe106df58f642750b4c90b72984e24113b28e9aecc4b3f5a56968c1c484604217d2bae2c4699938d805726462989a68525bca759b5c187f6b5e16ad782d9292b7aca1ad7989a60857bd703e15441d8a4964921245eb11efba74d79cc52f0520f20cd3e4905b9122ca6a4d8ed134e1d605de5e8483f6896f8ee43e14916684c1a844fea350713073a8a1d3463cdc6242ab8edd31406db0ad26d40a35ebfe90c34827c46aa6c57e5d141f88ca954ffc083001115c3a350c1963a49fbe8fa1e44db084a3a6424afe0d0a08d27af2674c22f615cec044dc4a5378485e829d8036a7cce110045dc5d8a22ef972b8d958126b59d67e388d5b964c1a23b6edd76580a58bc5e8263868da4e5b11a4aacafc7635ffe86ff639046df08cb7b8b8e5814e97106326528dbb592b1687d340f46652b6ffa59a34d49eee4f6060ab7f5f50c82bb519c74276d4bc3d193ffe598ad680d6c43c581f18c50bc589aa8ba1efda493d5fe043b633fb4bc8372fe4aecd7597f06a640ffdd7e1aff215d3e5ef1652e98866869580fc2a35d340e1af9dd227e9a20f647875608cb1750c5a13f115b5154eadc037c3ffa2c3068912a3a207eca02de504c7ab84500ab252bb06448faad04a892de9a6aa6a21e9a54ef7957339c83f3e0f084e4abcd608f71343490948bcc7ce1904a2f31fe200f345e2a37dc010c4a48a08c53000a6cbcdc0c9a6465ab678c13cd587a706f6aa883f7225c013e8c47ee9ee053a99a982fdeab49d5ac7d6b6cd7269f62ba5a29d38c9cbd454f0b34d23089882c81ba97c41868915c9fdb431482c0173c39cf39afbea8e200b0cefc62ebb611ee1584b742dc26d037bf5f21e36af8c76ace9ec9102425d03407b2026a8e17c613bbae22c7503688a4861a26ec60444e1cf47bf07ac181285eef76c7d7f77a398e8964aaf328291a24e5f8cfdfd9c8fc64433ce41075fc283f0a4ea7bca27012d247a42f06332d46fa329e17e8faf3e3f11ba265a11c47a19bb32b5722458111ec8d4b00e02f4fc2ba30d42518f9bb67e832793e964ec0205594f03544bf748305353f864ab660474122b4f53fc7792ff7d34d0d18be897c676e49ef00c43c9feff4e64f7152dc723add7f59b63b3ed693dafa8f43c8fea95cc8b216b2068c8530f8c4aa38c5e5f3dc8e3c861d51d346df0e819d8708df87e3cee530366f93e65042a0e62da2fa7e5a1075c5edc3d619821c26b153282015a2fbe40ac1a58fc51bb520a36c5dc4cf11bafdbb112ee880f5b711330ff181b52d49e32b2034d2c18f59d185bf49c4173136a7c116fed50d8abe0b6c9039ab246a1533688786da2885226c578536f0c039fa5cf2f10c9a08b8dcf482c9dc9ed738e06047435c2030712b43410d329731b9f7fee26990fd0d8350f2a2b6b507976463a0f37ebc5cf3e8fdd3d1fbbc36babff7ee3d87c4778b53f6f73e7968b2b11450d5992351d428f1043870cf00ad6814b062d23245437148d21ac9c45d6673799c79477750c0843d16c7fb707232e11e97f4c16b136b6b212384d4fd5dd8200c49ce4172170a2cf18424060d07824abc5c4ba1f0db2223301c54174cbc20ab7ef2119e98a36f83167145a08e1b5c9a0c8b786e72c907615d5685c751edd6d0444670321c884431b5814bfdd0a5bc92ff776ba2553a1d5f9ec4fab9b73a7ccf38e1e5e02ae150b87ba266e0bdbc69b816ad2109c2144e20a49f2ebdca45b7064041e009c6cb918b25eef5f488ee094d902f44b10421ef5cfc1d9b01ff1e0e0aa018c911dea051abc306b51a5cbca52d71bcfcc4a21142290f79a29fda06e29f9b9114e8994a2cc75d04c1325d0e457f5659f4b4dc422f37d902963c706cd831065d2f9ae0d2035a39dd4790f29ca3fcdb728cb778d7ee568a7d991d79004e3224a49968cf7c85109ca39c688c7830ceae9e9af783e101edf7473b1a660b2ccfa5ad7a1293083b452287761f465abfddae942eebbcc0801866115901ddc0382857ba3b8dd4b399c6796bb54b9db421b0194591315f8dea2223f7dc0af27c9f838999886d43c3a69b8347da4ede6abc4c99c5f0c7984d2a8313d2a31932b7515c20951f6547ee16532c407ddf15f86b9c407b4650bc2e05bbb1e0e845ed36d8f6e857a9b7ec466c8f67ca261e8f440bb3ca82983551013797eeee593c5243e0b317450b99feaa8a9411a8dfa69e45e21f0e816eea3bb648be85b1aa922d342176ca8d8e68d191b264ed3accfef6ca6f7b598ffb6696dd1f3f1d453058567f1cb7c03427727dbeb832735a3366f2dc41d263a9030d488e26794a5c1c9c85e85ee3d06664f823dc75d851e1d57adefb7fa82c333b061f35a3c4d5e0555f806e027fdfb96a6ac43ef7a09010922946b24cd9cfbadd0bc5c1aa691cb14803c7f5ae484e312ca0e02d53aa70cdf174ede2063b869d4863861ae4b40bf063a00f227da7157cb70b801355b06545783d10613756f4b677eb3892e3ec432cdc35f85335edab78c554e61cb9c7c007dc3f1fcc8e46c3e505d615111874e67ebb6d1ed7bb41b7301c91308554d83fbf4a5a5608a3a822c43fbe0a15cdca5fbb6d78793fc965c2b1b8b5a5ac196a5f5bec28c5e8043d4649d736b07fdfe49c486941d925182122c74d9ca70a21f6afc7b62ce784ca6415fbe25edb034f1ae88b3b845f90872979a0315a748e91d634c47cf079747849cf8c4fd2d3ca75943e0203fe81e30f31558975e62ebe8c8d08518effc52c21a6b9438f39eec66a6dabd437ec71a952b241150e32799012b09a0eeca5d0ca02f20ecf63df8ebdf1409b5e1090d9bae81a9b849b60ffa118ec550c999316689f11e39d7b0f08cdabea63cfd550b49c85cb4bbf36ec7f0f66535e0747b03321e16cc72247760b9b3d2a6d1388954e25d1651069f783736207c624bfd6a1c3757c91e395bf5d9a580501a144f726dbcf820b12767948854480ecdc8044a59008dd355b742c71aefb18a1e75a1dba962d2315b1f0e1b7c64eba36fea5c150d812bab981278450d4312403ba7f35d1aa75067ce1dc3c70555890b79769f200c762b8d914646379054b936d028b4d7cada105f61e5cf13d1934f1f734c6fb8570b8f91f5a7cf33ffc0f502904a0870cb5beefb0fb1e34336796ed09ec97b5b3b457228c08ea2d0205e673d9bbe342c38efd13fa41a94a1576242bd4f62f4344ab293896d0802f63445a03997190d1fffeb3569a59028f9399a0c3bc2899e11b3b6fe70952d8eb3111888c9f402d7d8c0806fec50f2c475552ded82a12f4c093a3c79fab684ae884ff2a846e7b1762510e7a6716cd31ec696d21a029adf3400c898efad2135438a63e348537e4552e01f38472d1ea9c7adc140913cd74f0645df4783bb48d97eab1c94dc91eec9ded74219e3d9ac7ea361bf2e9696b9037ed7f838c21b4186c09241a95d5d9ed13efad6b7ba3badd103dd74031f75ce34881478c18d580be3f5e7f84c5a6ec33b76c4f9b588d8d83340e7ff0dbf249679935b7e432e5e335de21966cafa696222406320e964c8a2218f55e53028c9f657be88875272dd79e83112f6a16f08c287544fd3d44b12d062eee5229ca19ccdaa644a41b16ddbcc271746b496ea4d0134e8436401fae6da0dd5d5d85fa82119f50334093040138185a5d5650d6fbfe53d6d99d73171b2d8b1d44eb9c730bb97b5361c5ab6cea9959b0465f91d75597323b582a58cfa6e98d2fae9b95c510cb6b26aaa5782ed675cd566739f8836364c5f1400b2907de23b0c422518d8389cbe330b20faf03e622331a8ffa6757275307254bbe33fbbdd3f603416d5ea54365631d3eb6f340e0ad7b1581b0a78bd3673515330f326cdc81e402325c94e9902791fd151ccb4473e1182da258bf8f29ae65c318b09d7eea7f2f31abf3841e416c45d98daa0018af88ddd9379b7a7a498c5885e4556286dcd347ee60396c672fb47c50fa821208cc40f1d2a182c3a25b60624ecbbfaeacdda20c57eae8ffc4741f0c93b9767720952928182d6b7a8ac3954c0bc7f46d7fccde6d819733d847c0ce8d8eb31c9280e9cd51376bc9833409a6490b3ffb8f52f1fd1900014a781b8188d2aa06e146f6f416f32e23fb22e4fb6651f76537b875e8e614c44f1b6b0da093f388cd0461f7aab80519c05caef1e69e496a55f54935835750d70cafe1ce4fda0eb6da05eb60417904046e0cf32830f06e34c73b3cd249a824ad381289316ee6f329b2dacf8ab725e3e833546ba5e165e311c7b890778d910d37446d18063b7305dbd34d146f65aae7bf0a57d1df1fed452b0612d1273098a4f4908d81c98679bb1e7c102ce13186a60e2552dfb0bae12f49076c9b2682f7fbc19cd961e1e28e3d42142caf64ad81169af5acdffcd4d5dc211b041738565f71f251ac2984284bb26bd3313554d140330a4d2ac666390204a6c92716cdaea6e35c0c3aa13e8251bbc2343bf43ae7e85eb499f297789696478250a95bbe7cc7aad68f9e612c988effc8bf0d17857845308fe3e3ba7aeb6fb16e101a4be72701529f30c48200317e089c1d84446112101579f57582f0500732273b462fca58311315f96c6469af9c66bc1424be8b5d5c3b99a8f01c21035f6fc10a4c162d06f3f5821a9924974d8530e736b5cd29adba3fd79364dbd7809d891fa276b0192d2f197d8ac40c3ed084f60be0edd9e4400bf4bac256f551e5da00bab7528d95d84302ee614e87e6f007d4c5826630362029700ee3717fb0114fab4a0a7acf11cabfcede00e03c890f8284079f87e1dd828bc03c81bf2c07729185390e899df022e5dfadfef0a77ccf589472dd0ae2cc7908005444af347c24ed0751978603820a2c4808649c824cf3cf82a7d4003450b2311b09b94a11516052c185c4ea83289b4df34e4d1fba019d5064d7ebc32fbd71b0a88f89136755a6a2b50f201d30be2e6fecc53aa27d4fa68f9692e6a910460da79c7e026621a623bc24355a824ef05d9efa0a3021bf04ce7e2518ed3d85ffa878179544f83968162c78ee6ff9574aef64d7717e3a2d358c726081114c7acb80bf476ee01e0905df853175067da511302560348b19b93fbc823a2c17f05a71c40890b046596782c41c14eed00f2efeb7d97710fde48e879142790c213ef76bd5d10a5894275428588dc0124c4921d0f4018847ec503d59b1c997225dc694252f7cf79da29c638599b2e09e8d3154f174703c53a672bd4f45f88c022445dddc1f828894077b2c4416878f0682b9908cab300385189c0d3646d2b77ae2662715610bf95005600fe16c9ee58853c2681c298b0cfbdde352f201e0a610e5375830b8c8e86276b86536bc93a364a29cf1f4ec87a938ed11a105fc4c7a3050418bda008caada4a5cf5b76167d17090ecfa5aa382cd691be4f44573ac3fd16ce1ccce2cd6f198646a8f190bac2a9683634343de7c08438681d866e5221464856d463b38820136108c40055b586104fcf8f70805d1b13d2e70def6248741ee50034533f92cda97e0f3b0be52652fb6793abf41dcd705260ada2228c5de826e011a7191e4cf4d9219f3e4ae6084392cef3eecdb87a304eedb795e603a80977c27a9815468a002a4008f22a19e58a369a2d6cc8deefca291f9cb2bf19fcdfff106150eedad920cc6c288e5c70fda133486f6e62bf0f4c7423bc1d89b73125569b620520110e224217260a7c817b06a4df9b3438e4ee39c7c775370de676f24b797ade255bf6e13830e7d56b6ac917b2f44bc084a8070e06af4d307ed5817104959ff95e122f00c3cd96851831ae22e8fcc6ce68598cdd3dea7df4235c1a2347c1d831cea2abc8f2242b5c1e35b44618ca86584c086fdc6cfb51641a98a20765bc14cecc386d731cb5e7b6155f8485c306e0a08f714e15fc9ee413e3e6488f9a6c06b8d15eb78d1e4f78edd28ddca4243a4976392b55e1ec20a1b1b57b6e810186bf765d0e8b2e639adbbc9bd7a761770cefbd0dce9b8285ac5ea5fca0724d35eadfc60a64ee64f0f793487a1e50001d4d20ced9c9475ad8f07b42934acf951c6c5a9f3271913b34e3fcb889875fa5946c4d6d9271915b3ce3fc8a89875fe41c662d5d9471915bb4e3ea28cb015db632b725842aa1732f284d8a9e358ef0fd27577720457fbba71a52f8e70bab7b5dda049e5aa1a66cd6b4543531d352c6dc30a2a9c42220329226b07c0f7dbff1c94a48a773b634f609f188257c77da11d77ea492ed6e578c4dad9594a3416a41a6b3a43247fc985b04886344dbc47d8ce301ba797b65ea3142f6103602003e59b818d29f0234b933353ee228934a9cf780e53b1a38c9df667035c0e73e40c611e16b77788dc25a5370755ed1c6013520a2b93a464d67fc1127036f36a004cc847c825c002d548ea4b0d28c7281927a25ffe30743261f5cb7882d377adc9fc89c281c97cbd981ee6e17843700fd0e41b5042b8d4ca60f40e07dd671781f6ebc213bf07fd6f92fe896199c3c8eba07dd9393326366ed83acf8149328c79bc7923380abaf04d62ba3d28653e209c632ebcc5b409f89101a0779aeb4bf2421fdd4cdd6990c7634b13ffe96b125a834ec51c453ea93014d9d01e85908928a36c9e24aae3d9338f75d2deba0f4cec7bc4badeaafffb3f45c370c7426a95ee1840be67bf2ee72e95d7098bd5c09524eb7f8a4f1744d6223f26d2a10d3b611723a9c90be66205c2b3814529ac23b345f360a590a812aa402e601e31d47c747afc536e9bb74d77955f643c76adbde4b6d82d938fe63f53dd8d043ada3d5f94259eb3a44717376cbe893da37a154930fd30c1954429a59edfe69a6ec918547c3624515764dc93c8a35b2aa8913cfd2c92ac0d5a749f6527b012aed48a103bf8aa0001acd1cdc0d8adc33841ec4bafa62acbd189ae82bfc03f7c3fa50bab35b06d051b7728f0001b54d7516fcf450302473e80f95e0984cec6e9354b02b673c98b3c67983624527c608d376274d82d517e01f9199be5da372a093db7aafccc0854fb62282a299ba80bc316e1d3774200af9578edb758cc34e9ba82b649392e6ea0ccf6f05e8d598f60f5a8387a2170128b711c3094018b885a0634b12f48b0a44abb86b0a9e8e6b0972dcc759a98930d5faa1b879bc72e668bbe28299c6909dd534cefce9b9510a2114eb40e36919c75d85c1295d03e4c4bc235d8f869453abac770b395ebadc0b4847a39b1a59496273946e9a3360d7699304864b280c820f22bd64282597f08cb0e836d4e90aded513b6214ea5fcd817207286219e488668e81e26233b387849d3698527e111bf66de19c8794fa0357079c8fdff1021cba6b7e767fe2689834b599a5b5a36837b39418cf20990c4ec6a4edcca34c233b61e8c68a52364dcf4ab78ef2b0c1675e5e0f1c262705e041531da18343195cc487b047c673550a8cf532d350fddd1788ec4e7a9d7a4365327d6afe4b67e2d15d99dcb12022021a3cd1e267342ead3eee58a7dce73cbb0c3b1f853894ce485126ebbf49f42c79563ca13132752b0d2d8682c53f98e95850c2ca3a81679b76797c9ffd12bbeb4b52fb1d4cc8d3cd2d0a85465da7eb78612c38b6295c79974f54190c55e753d6217d52de396ef7c5e68390c526226a2a5e486683d9c79364ab28d5ee8c6b5e57cfb4b4ecc4aaeeb24ac0339e3502f9a1af7cadd084c78f1400062efd0d4a142232bde5aa00c75780c8488160480369a491aff8f85391fe8f86120948875c67805a85b080e79f54e56812463fbb68ff78fedfeff0c8136c37e2553d703e83789297096e5c447b3624e9ca77c2302abca3cb601d376d3e827ffb233568a2e2b0ee17add142055fe24f38d69540c4115678a72fc335b9b510f6379372f55f571a977411d80511a78a387d64b249998d29ec60f3c056ea6e3a25cb85229b8594cca7d1282f2e0404686784c512dc99f5618262713687f092c6ea307aa4b28190bce352290359ea6e3027104a2fcb3584b21b1053ad6adc22ba57bb52896c5ac655e97a9626d6ec281140233f6320c031e21c680c23f730f1bbff35d4f06662ac9a4f90767fcd6077d620c76cf386943ab4c961bd263dca4d405bd0acb655c7f6a8b4eaace47aabdf8aa3f1cd7709f298e4b200e6eaf8a58224ad3c980df47633c569fa3ba41646ce872c3544befbe6d8896492c6344d803a1ecf34e3269066627334e306cde0e09921e69c490f4bbea33031c5f1fda1bd533eed1ac8025d70a4d5724e980b2a18062a5fe6c4bb9c2a1dc4bb881f31f6320ebdd7bcf3096b17606673a3295f3069aacb7dfaecb879621b30fc74e042e5921c52d07033ddc8d45b2c0c7321ad368ad32c634afa90c4ba13831b5317b2571c7435e27f06533d7d62f5bffb9af7a321fb2927c3f3256f0cad1969b24cc46313df6934c03002244759bff345ce69bad6ced7f7a246f02f6251d7f9ca119d2fce9c2f50ec58eeb0e825dbbd03859afd87fff7e77c7100aeb633b6e8a3553ed1e32d16d148cb12fd17ed39f668155901243d62474618778f3dded51f6d6c5ad17dca026ec188b9e934a1e1a4c8e182ed30c8c641eccbfc0e1a9b613ffe533d995f08dce1a30e12665dd4469ddb7e7927fd3ff3005cc654485e842761e4950b62decef90e3eaa7dc4db847e176378bd50dfe47824e9cd0882b09716403a214c20f4a6d77463442f55b879861bd31bab85a46cbab1b263ed1a0495d0bb529679d2b591a034563483bd6dec423b8ec61237304a95d53447eb56743037b173a1ae10e78d55a791288cb4f570f3ec07092226c3bcd5563faf3a600004f4b3b1c02f76c5947066ec42df85f82ede05670518e3a16c94e7783768435b7e0749487cae6f35236291b088b42a5b20ca721565461f03c24608908e43af1a6106bb79a695d7f71b39e31448c58a46d23ee34bc5a0cc48e52b4274597e71842c9ed6c6c40d06960742018b00a05e5ea5642bdc136b69cbbeada74f95455702171af70d1a3ace357171c002be599514ac5f456de8eb267fc9dd05bc41b840584e93a2f0221f084b7a9b03490a3a093d29fe19fcf27f57b4a9b71ffcc2197444107664613a0b91f3585838a70deb322cd601508fc618e56a6fd5b9b029dd295690d82da26f6c87f566cbe08443c10b8956dd6042af2dc54d5c27ef30c11bba34b204b88a19036a01e4d1de614062d5228b123910abf8c687706ac1e87b989aadbf44090e5f64c71c2ab17a3835ed23369b65aee7459e4cec39037c4afb8a04225bee663bdc17d9a6299d5d980d335f62d1d047ff153aa40bf234b575a033682e3a3ad0f8410e4784401f5c8bce0a5a816a029f0f13d9278e487d840c0dd66c4335f1f6469081484393ad95a2782d9aab119c8c049bb72b261d9e236cbc669a0651cce38d0336ffcbf90ebe8d5778d86ad1858194e03780835d9ff035e58b2dfad2342561582978844161a8e4b145ef1f5f90c96c83606f7d8a7d490de1eec2891c821ed7baecf4daa4c2c9537a40dd5675122fe8002a3f9172030cb19f8078aa3abcaf93776f2b86981ac61c6d8036f65b02baab7eac0d09c47f0f1391c030c5bab5aad3f90a7d6582d78514f16a0e1274aeaa67818b7b3edc0a95ffb991ccb2048b12155061ce672d351e5dcd2d188e924a175392ffb0f7c7ff3b16ef830024798d05fde1cdf03e6070bc841605a8efc702c45a1e71f03f20c5433536eb462e03a13121c67b10fe419f556a6b0a1ea85d38947dc34d5a3266985b80b916b35e16057e30768620565cb31e87c5ef45907bd0740060f5a0bb16f850344f89f16cb1c3560deb69ce7f87f1665e5bdea7d1f478e059020bbc5d43168d4c5fa02b19cff2470c1ad0a6d0b404fb3885766c156b8dcefa873fd4bf48b616b535f440cb06c89bd63aab889f961c33ebb228847de76138e15a3e6f2e817d0472d9cb6fc4c2151c0768a90ef91b79d97237d324e6a9696e2644408d1e206da456989a484854801cc127f60e559183441d32a599f905659ca07cd78a2bdbf8f8a2ebf1904b8e3589896ee9873f53f307c2bed61b165fd4bdd680c02c9d6fb36591a4962a3c364628a8b31761d3b05c4a13511030fedf2296c3ff9874d8136131db99dc29d1bd09e697678a6747168d1061d933a17c1db84ad56f68b0e36632b87daf0649472a1e325e45e42837c26878a080a227db6de153837443db0c5eede8cefe467a914677968df4b1f3786e81bce51edfcbf55a98e4217c6d866c07c378e16f6c728052792eea4e5c7972054b1d4b67231b31614806124ad3624909f56a7b29d12fef62d220a4d86485fd02ff0066722ccea94844fc1123047fe6a9f52ab7304ca9d5c6a978c76fdd6666ee4878f468657113ec3c0600a72d4cf014a1866436defbc73bf99fb6b6ef7fe41a9abae5ef01fdba53c119b5d0a9c787edea84172a405788c9ae37cb7734c1ba5306d6484c49d9710fcc1127f31f2dff55d9bab40461d949f6a9400c720c479b4dbe2ded6c50d37cb50b4eae9a25456e0160a1922b7b3390b3598448e11a88c40911511e84b5d2e19ae06e4d08389040806c8dd546519c5af004e2c3be555a057201d1f8835125d15270cd604129d1856544cfcc41aa7e3f55323ac928784e72dd351e27d47d7a276144a69c1aca612074d3788ff647901d1c3be9c25cab20905a9e97541e5b09cdfb70ef5341f8c33fd01aaae51cdb97ef0e56142a262efc41183c7c39f5df72a6c9a7e72372685633e3e706600e2adaf56017ea1a13e6a9aff45a17f5429ac6018095f51e9bc621102784bb42178d432d9ce2da9ca94ec469c42f2a76090d6cfe634206b0316493778ab389384323f281115c26b22664b7e53859e1388bfaa69b0ff1115b111012be440744e4e5a2e46f4c60cd1afe01ca092cf8eb3f266b70234b0c199ee0590e88405c80ce97bfe126168e444f9a20d9f56b1677660230740668c803f8dd05b494a36027ef7a002a7458596a52c0b62571e7a8aaa3197896ed505c233061d092c4ec6d9ca90a87c064d777241b1e3463382a20fb28606162a6ace5c6c7108a76671990d0495e17584819c2753819be8789eddec1847d757a76ffd55b94b615de7896f3cd32da4f8469e7fa7a012b6b482836b10df8e43186539a01a9a862c9b71cdf3d43d457ce3f9658f5f354d0f9e80f0e220d4f7fb20ea46894efb72ef218147d0a8ef21df42ad2e26ba7023cbe1583c023f5ed1777924ec27c573ede30c65e23001a62fcf42cc9bc2a057944982cf4c121a9e79ee300e74b22e3681d1ddf3f512be1e76c6a60c52ee3f8fcb201436c89443f86d942bc8e2bcceb30c986b2f5176d9223b200748d11220a8c0566691e90aef926920830b772a787701a7ab07f56856241c28f6cd1deea736faff9d67e5f62a3b6f0abff4676a45dcfe9fac04c09b5b0494d0f4c8a3b5307a04481da51d00d62b6a97d967161ec7f15da7928bcc9fa0b048e81b9859b3b19a841ea9358b8710b10594cab8905a1e438dfc26279f7c70ca3b808d80e0c2ac93f862d50a46d23c0c298b56a30a4fd9d1ec847e926cb7d64fc6ad63fe46540ce107d0a13bea2e8606028a2834f2f1a7df9e229de2052da81d8b87b304ea310d3c936535e9f22013fa1c4923d5451e3ed28eb866e35a0c77a8700b5b6b2830a4e3b814eaba8f24414f344691591dbb4b4cef2954e531f2d87ef901e4c6146de9f9e0e6f58d8c718b12c9d6638322a02bcb342ee71b3630d3ef453aeda9aa603e0075d690be7c50bf5559c234b0a8de19151adc2bd9f478ca820e86f63b2a8f17eb5d87ec343d43138100dd55b22360cb7c1084da23b0a7ca92db48b15c186648672e2520453378b110123929db6516face6201e924fe807ca072044782685423e6b4360bd908bc152f08649e4eaeba33da2896741760566caedadde742acd3774d1b43571b513530365c1d372d858beaff291250e264e9ba60a3a248087df817cbb46b6d4a40584f480f1a59ec87d66c865deb0f17ce829fca2ee301817d7602abddc3dc76dee2b3415bdf3ac6666fed5fef1cb72a6e23b1bc3d64081c5055ecab3532d1fd0cd68c7349b113d533a960a94bc67381d37715d00ba0590e548d239671c5bc0b57b59cf3e409511358e5b0782b195bb484116543beb2cf363ef6867e198158f214f5dc66e76cb36056c77d144bc621be7c7eac462ab0cf9777aa2ca823641bcb8613719ed9f2d920aa92474d7b22e5d157b93b9fc4aebe9c149fc2b8c8c53e7ce8ba1490bb624fecdf449b124f17adb1205f4c975d6b4d00b964219bf56a771c0751d9688f9b638ff6ad42266aa008e11050ba26d7fd30b863cbaf941dbc2e84d03bc9bf01907ebbbacc5067d4a0bcca0257efd005659410cc98877c9ef5791d7d7a26873f226f55f69904c0b9d1a4db7524b55076c716fbd6e466d30282a5bcb27a020134f7644d1c553b50a30ae3c76e869be71af0a305972ef905f9de7501dc750e984ebef4d907badb8dc954e3970043c40562c365632bc55437ada808cdb9882b50c7799666064daf5f2811a1b4e9ec2a24527fa56f828a9044fc3ffe2c0197580b3007d1b236da960d9d580009a8471fe56e48d6d638eddc673377a7ad5c6f20448d0b52484b0c769d504fbf5f653f5a65bdb269101e6a5064e3d7b0fca4acbbeb3dee1a1723065fba16cbdf82514d0e0af219646ce73da823bc6b9c677201cbc1c2b3ed55409421a51c575c537b7d9d00b02e11454b59d4717d772e61e43eb0bb5e45a3728c249751b5f8e1815e954fa4c0e41694c047d66a24b14d90c63853803ab3eb058f8bd8a6aae8f5a43e4d650cfc55d00b957980e5e3d7c8e4092b56243ed0dc443347b54b583ff7fbba8e70b9882796be679b75c870f8a5c185a1ce60ce7f658309dd1a59b5e289636b7f0481616a0795beae4ab07716cb8becc6f2a668434c005f9978674570ca623ceadb522d702d6fd8ed1b61889449428801a06ccced3998f47a5326afaa81a392306ad2d558692ae5afe1e8009c47f8cc26b2f51087ef1bd82490df091378f523adf847d013c3f490a0759597bdc02ac3a432c64e0a157ff0051d1a3a009966de0bffd4bf088c08a1681137d41b862c87c436e3ee4c6a5f16130e9a6d132761d14177240ad744fcb7c9042c25288f0ad7801d2064000592e6667289815c3268da509dd474691c0a22ecbf3393cd4c7bb28205880d49bb84408b62f6efeed65a4d6e6627e034b5cf8f0a0d1a8034fad85717d5730f4ba0e218698dec80fdb979b43e2a6bd77cd09803990ed9d0a6444bb6dd166f10120a566b9c6b47b35aebc665e94e7a2de2e631841ff2763680119f60903edce1691dbc6fe6c10bd7b4adf28b0aba0f6459bfd30dfddc1a696fb08588abe9784ef82db6300fa5b118c80699454510c122df3e6c4824ce5145b56958d0ab8aa8a58edb544812c5403ee5e7c6384f5fe05a7a58ce5fb282fbd1a36048f18947b4502d331b078f4fce4e1cd9341a8c9989ddcb450ca39a17a8cdd51cbdb841fa4ccd70844b1bdca090e91937b2f9b4a6f8a9d4fd4d7e29a41d155a5f2251ea50416463c0a23756f1157844b98a9c117b66b898a263df2e1dc6110fecbf0ce67d0fa4dd5305411c45b7115998dd8632ca9526e3d8e1666c4d86b6a96e186ceefa9068c37d22fa53e1a2f05a24baa98178010f84867bf435705f471a61ba75bc66ed5cfdcc532b6faec6f33e02654fd31192e63d97b1eafa62fcb9e3e28d95fba011b56d0a04a169cb2c27ce524af8e111187ce4c0d63977fd2085584f73f77a78943799c9b7b286ce7c845674df09484b9240ae8ce448dd8b71d977b854e7a84e90e2ed6f34dd6fdd7f3650c1963424ef72f19e8e7b3b66e49cfc9159e9b2a8042c0cf5719fe17fef00e6b0f4a23de96fec8923a43d6995d668c490336ef2ebeabdb2b1412d8c892558f8dd596d351f746bc60958fc8699bf0f1666b39444b03beb53245de145a775386c5c3f3489179874492130db24e855669b86cf5769f8ce01260b1113acf6d89700aaa6d927f61ef492fa17af35946297e1c078b268407f8c07ae64b094ab0f14f73cd309b9b09804659d1c30a4387e84cf3730ad2c652b95b7ddde509c519c7d7a4d26221c740f42714aeac7558da50d863392990c9c5d2d1336b2d6242ffd884b742ae1f9a8d985ffe92a31db7d2591c63bd17bb8983c38646814919df17733587da5f6d91bbbb1b6a516ff6700a170b3bdf0800dd517246c394c91973666526865c73678bcf84cc467022249a67c59c8d1fd28e31287d42750a67ffd4afe051de3ac3811f304494dbe829b50209e010d507c03239ba16ad20f83192d0861c242cb6ea2011224f9f05cb59d825f6c5ee15e553d3bc0ab63c92400605615e8a9af73f42293f679444d7c164e78c75315f9b41e76013e504127fe589ae8a4f923f58875a79a2b704489532873bed1f6c317b44a3ef05d590ba59bffb62d7057705c18d3eed27378817844c2af090c892cc55c2ec6edfccef9d20b5fc6260cd2e40f182ea462743e7b54ee05232553cfc6299c4c65c248b89515c65136bff6b58c0306ebdf21fb3bb0a9a60f834f5e4160076db6f0f9d1173785a6cb0d2cffdd7baca8943fbc536cf111daa4568a414de6341a7450efcd825593dbcbef481f0c11962bf58439766c75fa5ed9494281cbfc5dc572d6478ccc60c02d3afc5024a986bb14bef0acd3b38a6f0ec9e36270826ac35caf57f87c75f79782dd4b931c707d41edb9f4e67c5e0e9aae22c0fbd8a4a36735d74a60d61d6d1d89c4e66d09d344390d10129e640e96ab3c0e60abd9801c52a3a19480e8fa317eb0a7f74266a9ac09e7d517a3148e006f1257d9b5e0c21848b61ae9a7ebfbb241d38f7324253991e147aab2e055c511e470b6a8c77991e7f81e0c6ece62c180a368508bfa78b95c13f04c7e7202652f784693d63460c50b177d5b8a69637e2e2352e679c5ebf5a025968818f1e95cd0a6a911616f069fe1b2e3dc6629c2c6bb1c9414beeeca28d2a4c7f872d4d60129e02f8af7ea9a35564a998b6ee815570de8e40cc84528e4d2b29187c61c3894d7c49d36d748c5b3cf5d9f56fd61e364d13154b241cdb996545440393a5621cd9969258d0551d1aaef8e5dc7a17c532d8761931ed7b61aa83a6e3d23d2740da9d46ffd76d6069da441b1428e4297818f8d5a2adb42e1ce864d462f9ad5d60b273174b99bfa2b7c23ca29b8ffa142f268288c964c3d2d4b6914670c195abfcd8f18ca46f23f98e8c58f9c657f50c88feb80502f3f94061b7052669e7f237fa7933b4f87869bf80ad9315516a1747fc11d88253eb2eaa48b1b41c8842f50b8d8bbec78f7c40ec3b634eaadcb57655fef7f73c7e44cf87019f147c630fa27f06a41c6eec4edea32024e4a6c39704ece6609b447ae4119bf8e4c9223037ff77aff98903dfc6a70ebe29b456af32476b207296c9e283fbc94c35d2b60515432c234412b9b6c21ac61c7f2a5887a625fc899402cb1076f1391cff8d4d79628bab2156e05cd049392b82fce04c9e0cf403adbb1d72963c90cb8b3e7535d5d38901249c4b0271cb66f77026b9090abeb00eb28ea25ae56f621aaf542707c882d2ddef4156bd215e957dfd70936fb3e686897a2d6b3719e9cf932cbf41f3642891794b3598d59ee37a7d0f338484192bd2948c5be4104ab0b6b73b2f0dcfb70d1ba68ebe281bcbc38177e2155da08d0f1070414920a2bc7c662e5e7ea13c4a33d08118d980db1660e50479b90be9b27b18eb0be365e4c4eaa4382ba83696fd5a69a0d0858add05747acabfed81e0fafd62a715b0f960d127f1abe38dac4985da6ee89308a9f580b1c731f9fcb62b4995a2e724b8ce29adde2ca72e8aa888876729fd5d094345db5e29125d84d137dc2e255f64ba970c0925e17322939e4b01911afb6f0fba348427ed60130dbec91d14c08ab30a82b33a6e2ff02b2bf6042d10a0d3ec5974ab4a0155417d024de6b4cb4da620c5d44afeb10057463441a75218d7e0575e7d479bd8756703002d28f5ccf382b582a8e9e5d63a8b9a02ffd3e8084c6386ccd38ccc5d46cf715e8ba4516a1ccb7e2cb1b5bc1fe2ca0ea7f749f85819c412152e8b5e534235fadd835955099553fa04a8c7acf1dc1ac243e1ca64d07c0bc0dc62ddeccd853791a119ff5426e02d6a7c3b2f373c87738b79facf42fabad6a8df03124189eaae55ab699d033c02e3474b8e51adac71e14d8d1aa91eb70f046131c975c8216e014a7c7d0b61fc5f31e06ac2d323448f43766a41b8681dec981dbc9410fda845db917677a8414d44c632c737994dbcef4bf3268f7667b098f537390802cf6f3022933d3e7c951134065280568dc1dfd791a7641c82b4caacecd7c21f34e01e0167e665d3efa59f236efaf1784873109ecd987ca8254725f4764cf3e3db9a13703b8d7c6442e2ff5a72963723da4288a0ddbe8d21ae82c5c2ee6e16e89baa830fedc1d5f2483b7ea91705e92ef286b7e1498b686920390d58d22fd04c2aeecb4792544af304147080f8c432173e590331adef06b1b17a19d5470e57f732e55f349fdfeb1db43054c3c7fc51dc9bf80543c172567d083f914c730698b6661b7763416378620d637e2e24055398a2c3265420fbec3f068726b58d2632e95e91abc876062e453fe642f0e1f3e9623579ac5b644b8e9f4e5fd5abd24688720226dedb6d07d72f0fcc0060e86b4fd4273ea0fbb46b54a7b2bb4a9ba41881d19bbc724164bd585db9cf45afb5e4d218bd144e7419e2fe195a4b313c2059e3fec97cf299e4237377046b813a5228f3c1293b03483858b4ee6f138e9a942c0ade26a5f72c8293a84e237255beae5a3d7aa605ce803285f79a996748e2b23bc545fd8fe490bc068623815e44df616ba4c4c339b6a3219f4e3558282e3c2e38dd580bd0f9832394805ab18a0c4302a87a8e12e0543f0ea8a8f3fac7951c2ce4e802a8530152a24780570b29e694b4f9eac6512061d13e738a2a00d34f105c4a02b2b36a2b21d642e224631cd169beafe2548540f859e80d0cf5c0688574989fc73ea93efa943484c754b23301b9c5792412af247a33bc0b2a5f74fdbf83aa4bc286a5ad476c70204fa5b0479483f58a298b9227ce041b05d5329889f71a9dbf18e329cf7c15a92a3af87852f80afe460e984a09ae45b4e41258b2f6c670e0b0dcd13849227637c3659b4d64340e3212ba148ee157c9a5f1ad36ee336be2dfa89d3e409a57fcbacb3a456f4a732cc7321401d5ee24f2546d1d01afb52c95ca40f151891511ec082834e7612facc688aafaa1a7f4f72cdcf72e43c8100db1d30eb7334f24c187a52e8a3a5104f2a987b1c693fd7d3a84d202a1a6cf1ec2f104227f51e63329d361f346f8813151d225d5394c01630cdd06f3eb2b59ec0754ec33c9e0f2d2a81304551caf9df413f09fc1c2cb8af69279028a558abcf48b89574ba2a61eb7ffce7c428f4b6b227015951016275ee10818bb3b403cc6699099f80dc53522b7bfa32e1f105fb97cc2b4e4914ea2081388d708235fa7683b4b20feb0ca4fa7cf2678f1bf4f6705d3a61d780e7140bc3a5a9895014e8e69225b1d2c396f4db710b12faed4c832c4a3325047e579b72a9c1b60f507ac0a762475ed52b2fadbfb8e18c64631a934fd4a8979c99a6b51b21d1ace27f771028cfe3d4038bf5578297c1ee01ec3f0046941dc5c5a8c6344f23e3005e1744ed0853896797083b38a2641d68dfd8ef5de58f0c02941d599a94e6f39dccde53672d364a195aaf76dbb2799e9fa385cacf9af248fd34e727f7c0361e5a4979360642684d30d1d6ce160a729c46d843865e1cc6bc440e2e9d938a00e80fdff4d7ce322f6d6ea5a2a944bcc777e7f6ecab92bcf2f107665b2d95ea97f9454c57bcfe1c365afe0642867714072cec7bb52a9ca76c83c445b8725c1fc767ce74a559ad7a62b971cffbd1d0fe6a7220a7047e6df9bf2f131cc0eb3adb4b17eacdb97f27d0f0d5020667cc135b0d72abc880d70dfbce282c07e3460443e6fa26934558e4ce44b952d38075bb979aef71059132f1f14ccee35f105eac5eceb620e8260e48fa91b214d205bd2972ab8b1ff79332a0f07d9cbf3f5c27c0ccb321ca050f593cab8a852ca546e0942656b6136a3c209430b32cbd9833fa459c448fcdb9a54ae679ffd1ba9266f296a6ed6cabd571175bdc4ec029ca6fa9d8a105aacb25ffd2a26c737a9abfa140a8a07c1020ac688a46b00060138c5c017e4b923ad2a6ef166d639e339743b21bb28e525da57c0fdb0e5cbee46f061104c6cf92a3c25cdc351e8e454368494b7a46488ae02cda977f57497624d6ea99c7b5f4aed01d12709c12e3b3bb3e19f977950f441e26dcba668aeb6979157bbc66fd61f425665691e0b017bef705842a3226e9f48da4543a07fa6d525c7238b6275337e03727cb854067ddaf5135c5f337bbe67873328770e6f9765b4d95151445d9416933306dcb2c05ddf70b67c98acfd757609ce827986456b75e5a52426fe05a7dc7026fee84583a1d6b30b2d89a2b310dba006a1a394dafa65f5e48c07a8127a469e4f0e88f0d9152a63313b68d239b5e131f3823f20fc34687c6175c55351d43290ccf80de3a36bcedf5a7b351ccb66a369d16281ebaa578f6bcc41f725491ab6aed7da34cebebd711d27be734224dcbbc8ff656435b835409b4616d973077d8fe238cb59f9cecb24264303da3ae662cf0ab6b722b4a5fe6a41b85198f68f857f1f370ce1e22226ad5dee8edaaf27f219a303dc68f36ce50e50d1228e42c0aa507b9ed106072644c6f71ba3297babf04acd22d615756ab643e01baf5a8214d3e301c5995e9ae7ae01c40907d8a2a5c90bdb66a6118a2ec1a50e15f4b9c00234739957d3360c1f54153ec4276d8bfb5dfbda7a314c1a67ed8b721f99b1dfceb66ee2d6783731f0378cec3094325740ad633ffeba0e6f7a80b0ee1e71cef9c6edbfaa89e8ef79846a5772b0a4d529561850baabda261dd44941659c74de16186a35bb0e29cec1f73f3718f3dc86680a33b3e04ffb8da28289d7d87b88e76268861ff5baa022a133be63d7d183562dd2ec411d6b98f01049bc9772e9fcaf7e683d024307cc2aa688fedb7ea16eb185f799a01ee483029e4dd99337d780b910e9c699c48436546bad5f5ba6b1524f15986de7dca24fa14a7aa960571db085e09d7f1911bd6fe836128290c3bf46d51f75b4fc1823ed1993bb4df7553d1cbc66f72f8b1aaf29e6bb3eff44498139f76a05291827868c19bacb724027300b9d356bcbda2dddf4f0fc2b3b05bb7d0f85eb252d29ccb7d700db5c3560d48280c27f1b7496d01f6650cca4205f1a22e672c8ce9a7970b774ae09a91958668e12a70fd5420fa9744d64923c3579578455d29c3873d198b94e5c88a7c26f12c2d7afe2ee99243c57a6847e4c09f5ff0719936e27ac5d59d1c8c13884fe90a3620a7e715d4409b9c6de3eb7de862bce5de1aeaa032fe14948857828457ab3b2b41029425a82e0c8f1a969ec9caa3be2bf3221dc49782490b1d65a03b7cf06c0fd441e6fa564a99f724570322f59bc856a1207a0d7b8830eae8f48685bd26763758f8a37b0643cbc08b4f6d3f8b2d27f0f887613f5f4454290b5fdbf1b905ca9d136860fab2ce8b2e58a1ed20dfc32ba1b09222b6f5f1427e9c6624fa7d27fda142c0b9ea534f3c82697d9ef90a1252af4637b10160dba1db6bd6f3d06b90b75b55d1cd553923bd31163b9ea9ce9fadba329d345965d644a68f819852b0920b41d7d04a676a301420c479f9a0c7055b8db19c8c52715d70e38766e938d7ac84bbe21412370e18e87a442bbde10f2bb71b3ef16fb06fb7c1133961080fd1e23c42699edf9b99e879d6592a24ae85ac787066445a97677bc9a9f185100be466cead4115b6aa790267ed80dfdcb323595d08cb7a8d302537312e445e5b5243fa87136f931d114a6cba8075c70a67cd5f67d8b96acfddc8011dc1594bda57c04524d25f8285687eb7eef604303f3b8aeee3fad13e95c1f65e6bd554e6dff3fc1af8482271b5d971a93e86ad30b326eac2034bf2f59bb9e2de8b78a39f3d00a3c463c50c43956b0e1d28a99fe79a0c513ae2d1b14cb58c67689ae60b4f561d904000adea875ab63383488149b89cd998771136089ca9afac9dfb73144bf6457e5a0f2bfa8736a1890592c6559dc1ca694a4fa3c7d34e57f59c0c4147168906840232a1601a94a8b9cd85c71486f908159560eb1a94aef9f14f7c75baf894360675c6400ee08a96436c326bc9bc63990e1884be315ad2e1a5c76f237544768bce46d02b9c8775c365d14c843afc26477c7ba8f9b2bace613493bb210481ed4392fde6377a67607e4aae31b616a22d4f10202120dda85f0f61b7e5f40f02cf1735f40da2ce3efd72ea5987f157a2b5abf1ed58f882083ae7d4c87a9121da51a4578060af40dd7bedee63c4c95a613a649b7a24cab5413352ac083da33ab4cd4c23a79ed6bd2dd7ed6272f899b10d3872c97c6035e35de7ace3a6bfc55f359cbb948d37176beca7d3bd949100c5a3c60b5d9b6006b6d90ea18ed333ba3fb31cf781181b97b060a45c16aa38e5149c24a9d8c729130a449bb2d334ee895b37b1ecd6428dedebc7be07aa5c363d8f3e8eba7c3c6e2973e204c36fa5b13a7168545ebad175c859ce5ca6ef3baa11923c30e3a66d1b3b62187946c7c47db879e39aef03d8dbe2a768bc7d2f41db992f3e85419d9eb4d6bf3583e19ab6e028b9838a53b894b50fdbb770c9c99fc41425348f347dac4b99ac76d46d97e09cdcb8cc17b0890b0d24bb586bf3c2812d0837a4f11e95a08af3fd559b043ce74d0101bb826915075492fe06dc03c58f713733822132b3127b8a8f5a448e9314716f1519b6e168644dd9fe4520ea0c737e3eebd1dd24bf83e5118e2130c306993fd8656094b3d8c2219d04c6007a93d5869c362db0ac27987ddab0d232aca781921a86f9552d95e16807117716443cc530c58b0e1d8baa9035a606de4b4c9a29c572454e3b94911a81f4a0102a50ae293608b9acf0565e9b67e3e6f817718016ee743c23dc429aa2be0434890360c1f27a8529d7417174e79e7744e788ef380470c07ceb44f03eb561da9ecf1770f8debbed4e00eea4be6a7d581c367edfd425d85b5f28bb30f73447a11f51140d7da2904b4f1d8685f9f94a7d41a3488ef1f5704c0e533d2e50d805ba4028fe0c69a740d235ea67eb3f06aeac0a3b001901ceab696f9bc3215249135b28eb6267e31ba4f375413bb57bba6d31b1e76771640dbd459001a49fc0c3d406f920e04464abebd082225779ab446dfee98503f1b38c6a4a51cbd3e563f35b87f2e5b25b1bf35b184b446567f6c29a9d9d0d9507a5e1c6b9b4c9223c200a700c40088112387710867637c2d84b169904c8c19460d232232b464be457e25ffffffffffff7f091328b40b26feffffffffffffff7f46156e5d00c9c38bf1135d8c752a481d00c96267e76569197c86708e2081c2853bd8205052800ff011dc418223a180bfe0c2efe063f8105ff9cb677c067c0f3ebf7163c092375993a1644c72473e0d00520b9215245b122038906c20b900473281b6d1007c3340406a683e2d3f818c0da70105f087bb6b77721b69faa06e234d1fd48692a4bb69ba1414931295bb0401aaaa2baa1c017abbbbf7797a9fe7799ee77952a0c8f1f3208786dc70efc09631c696edeeff8738816277f751812cd0053a8062a0080b15274a9cca880dcbffffcd4f8d7c3e9fcfe7f3f94c4bb2cce7f3f97c3e9f99999999919951053edee87bffffffffffffd4c8e331f3783c1ed3922cf378cc631e3333338fc7e3f1783c666664def38224f9161fe8a8436f0349b6c895bcc3ffffffc33c66e6ca9748bcc3ffffffff7c98012cb361b6010189b8395bc4556b664d83846246699869aa26319358080361114341a2dbc5080169a7c2293149414ad260e6f82c621645d1c337204da7c948d3693292344d998c468362a1eaaaaaaadead7a77777797394010044110044190c83104ad68f47677af6aafaaaaaaea8bdeeeeec5607a31180c0683c1608e3118141c191d7abbbb57b557555555b5c5718ec3e11c472505c5a484456f77f7aaf6aaaaaaaaae40e9edeedecba5f772b95c2e97cb051111111111112f17a4bee9edee5ed55e55d5abdaabaaaaaafa020506090a736badb5c6ccadb5c6dc981b337b2c63e0d1027cc31487c5e3c5486724438a871369fa384d2692a68fd364a28b22499aa64c46a349118122c72755575555f56ed5bbbbbbbb787c72d2f4419d347d504749d234a5a0989480a8baaaaaaa77abdeddddddfdb05b6064a4d3a198ea3080814374d1dd455174a1d31712817036d4246930d3a0c38c373aacd3e95b6b85acb5d68a40d65a6badc5d950d35a6badb5240d66166bb016ab58d569d0f4c162c66c31c6165b8cb1c516ab18638bad641c366538850da863c45eaa59b603f31b2410822008214431233aad031380050866a141648c026906422008c13004411808111001210242888010420c42d2636d1e4631a8871394ddb5908a813e7089c447261fa2fe4944bfef3291ead2d116c8a5c8d93129be4c3ce1d26082956e823115dbe91fb2121e051276f4ddd59d432efff712dcb1a386090d0b321301b6924004ab40a52590dd1eee274125dc041298a6ceaa4640904f2998551c373f22c847a91c0434743e6c359f08d24c350f0150bbb60984fe3e2a24ca68468d306ef72c02f0d41e646c60c2bb68e278e864d2caecde4b88f6a6bf9b70fdf89ec500bead258280ffc1251980d478bd805571e27a047ba8fdfcd905404f96a070d7623a7a1ab4469092542f208b5e00ee83a5738259d6ab0fba72230827344152fc3dea0dbfda67ce82bcbc951304903ffdbee9870085cc1104f8f3a2c6cc2b1ad8d7130e61e9f76714807a5842c55d83e99196a73863b4d1f48ebc070a16ecba37efc7007e310501a7d3531b641d08b5c705d94c85f36b19c08b465f05549da313426e0f2941c8a6788538011b103630cd7032f44cbba915904ef82d486f88db37b0ac450880573bfe711d44db2a9e9361e2b6da6430d952f71af6041106007bd63680f9d579476feb116661d60b63c038a102c8e953f8725a961bab3c6bae2c09adf9ad85d01505dc1ab6f25bf32ce968163fba3ca7824c07e0e1d0daa91aa73270366ac656febcf0118cf6270f35a02e0ae605f0ab156160f9ad863c6313983568a836753fd590e95836b8e111cc6fd74d78a7ba3ad6856e5f05b57af0088e18880d0e719d56610b5983f6fe048bd32aa10a414111b481dd4695a7488150f67427c16ef342ac35fb0c6635cdc17dca599b32007aa513dcf64b833f2572660197450373c26321474ccc48b999356e23a4009b4b83b619e10816ee3894d0cad7799bcc94db7f151168d646098d0592c3c0dab0e801cc4041d905410e0c0e9c5f46519ccfdc63005f109af53a1090bd31d4488f717520d3dfe4ef127943d0a338e0ad6b7f81fe2da9175fae53da82daef8f2d00f4b0048a7b0dd3624c7bb700a1462dd7d7ab31dc56e28b60874642dcad16e971d3df69806677792cb9d2ec3305ce0dd2babd60c89412a0ee08d8d5b44ee6ad7a0d30bf770d73e7e9fd5ca5a8aea74c380b49dbd3f1a5f00a05553f82967bcc4209c60429e934938b1d308157283c6700322b4302089db89e621b6a3fffac21d0832528ddb5908e8f86470701bdd6594fae30d8e486b0649dc21488c3e70eac93a9f8aa3dc840f78f041531e1bdeb90764eebd72569ed7a44c2a940b25edd95f7b38bb24cc6337cf6290ea0676cf52eb87a44be287e9c56cffa9d33809615d104c9e2e61a8b17f9fd2c308da01e9ea070d7462a7e4ace11827d7f50bca3c48248efd84d357b6800955f711dc536d47e7f5805a0872750dc6a311d1be51f83a0ffac03bf3d2080ff4d6d32300601cc62901904c4680e909c39ab44256134890052b45635664bdb8ca24cc8ed432f6b80fcf96b987697decf25a96a7a24e1a940dade2edf5e77f055f543853fda831bb37ee381899e93b0e4203edd4088451dfe19cfc9e80fe1491100a21560eede35c85da7f573cda29a9e22e12c24756fc75f4d1e0ffc2f3e78245221bf6791027480f6e56e609a5e702b462472e7ca658f483c4f7b81966bb936b97d45cd80e17a547c3028bd71c23f11409c19baf1fce58298394c067830b59c6dcdf45a5a88e97906849cf0eeb68070cf075824b941a3ec3af40e864781211108e8d1892ff90c20c08272d69c7b5206ac3cb711321c1d1e43f8ed61b4e2591b8eaa7196cc77a496eaded13916d751322fa32f844d5f091827d930aeabb0563992501d46205c586415dad7d1c5c719fb006bc69280032cf5c65417a249e8cd673efb6d8b3d720c72d820059a9d3cf3c99fd20a960606e9f9d2a7e9ef47dd5b35177b84bd8a82f4a7bf7efaebaf9efe68fd6d6c3a74f912542e4609c823b9fa9c486151994daab7289f9ab9ce9b9d8bdf73ed2801dd8c931862c9e5cba21cb7ffe9acae5202ae644dff864adeb44ba4129094a7d0696a72d0529f1250485d254597e47c9b1b5fdad910ab8d81aa9b6fc2e744b8c42b0133e823532d0ea690e68f842e440187861290b4fdf76c4a26c69580e94cd4a7892d9368c1f48a3157664809e2a310025e23618970e084e1cc678240f856f977b4460e4a4050bb6eb1d84acd7e72d5196ab36fad6a393cf8055abb445202d264b650ffb2e772455a4443786963369de94a649dabac1210e845898a7f6d07b1a2d914510922f016dadb031ca0279fa4695e5c6314ac15ab125b3bf4e42fa77b59249fac70ccce3e36ed2637f4c107fef0e8ee9290456c8f11fa39847be24e6043bbe2165907f2ccbc6133ebe87e48ace0ac13027eee9c52a054760ba21af0c06b53e27d46117e4253df0b013f5017f254e1bac1683ec28e7a80474ef56428044cdd3c6a551a64ecdddbb9dfcbe91a2d5b0957d204bccf3b76bd3204dd9f8020045487a80ff6ea11ae1b8c2ad0800b017be38d5d644058f4b5e0e569cec5a5152fc1501302c63f12834f018d6d6522b33bda9cc777baf49c74689f50d4835e3b87bfd40a016fd080ae18b05554dabb21edd47221e064ebb9247a74e1a0abfee68f25db3b0dbb840b01fb1fd32c6d7a21a0135cbb7d4650b2dacbbc4ea4880cf682459c8714a2cc04c2be1a62ebdcb0db2c50681292a41242e8a39710d0465c6a1a1ad8659b39cb575a0da021ea6a333b6260883b70307850b803068d2008ffcd671d5ea7dc77d67738000d6c7882a05382068c5f055bff37c6fbcbbd5988979201a4cf05ce6585081153205e954963f968987672df5812da31215b5a2d0b257b59a86d5d06a01dac8a1549167934fa6dd84c466825919733c5b5a02d5835531c5fc9be3e6f19e396ab954ad9003a093d8a4412b2f7de7bef2da594520689107010b510f3b28a2a86e8f96c8af9c2d1f32f6c994cd73cc55669869389e6869b2d654ad607b68af952a938b84a1db28faa5da2962eb93a893493c81a5c62ce0c2a592819139798bc346bcc736bb82dbfb46986b35ec1c46429a98a194e31c38934c3791a453d028047508726c1df26a130560ef3de66f2be353689a6916b925c8f00205723b912a18c6ea634675c862bbccc0eab53ce9798e6f435acc748c37a719b4750087a97c7fc8071fc169fa010f400b847bf1b6c61642052e31c234d0b1879d3fbd0348cb758b7f90b9a83500d23b75899a7ea186962eef21b4c591e83eb131bb3c1d5a9065b221c84ea99d3601f9a9ec9d6488fd834b398e1a4b04cc916b1473e23efed32f2beaebc5961de673de512a37470332699d27cc1f87cd664be623e9f5d9139416d31b2924cde98c2c0d5a93ea94f95a81aa94533e4c07059dfd529e613dcc19fa08f9d7c1ea963eec90be311dcd9619d47b6c059d30c277d8bb7c83e2d4e1fb50b0c9c29b170c6245bca9a644cd91599d373e66486f32eb528570e8bcbbde52c4c8f663833a522941477ea3d97945abe33259519664a3746988bbcb72d535239ea2db054729a4fe68be574b358df577b9f475d6ee56dba563e3b56de2cbd3234575872e5acec15e40159729de1ca75e60a6f1bbd62af8253f00ef5ae4e3fac0affa8f3374ba2272a539a4c9c94f4dc43d0cfa0f9a2f23b57ca28e9239db129f4f939e11f098462c3216c15166b4579ade0ad878255aff5282b14d6bb16ce856b712f1c0cd78273710ee52eea5bd4c3d4bf24e109f5aca8055defad30cbbf3a5dadbeef2aefef2a2cb9469ababfa724c8f33de5aa7f56d7d394544a8d4d3b38274876a0552875d3b26fdbd05cdedbbebb479515c8acb3ce08c65666a603a7aa0935112212fec30075c9cfd963a66ee1db84b6cde31e43ed32c9101a8b35f336628819c3f90af65c73af60d443645cde1fd0daa58c13c56539b5a98798af2188e83153373033c31a1282147a7fbb02183627ae1bb2a936d6bbbb6a2a447fdd53996255ea5f2a468d92edac29dd396f875bddc3abdbd5a7d7f2c8faae9a85c5bbcaf794f7617b8a3be9e29da6fe6194dcfa4e0fb6bedc63fffd3ef5dd94ea59774f3fd5edbfebcc0eb750728feaf69dea117514d453b67e18c57e18258502646a9b7d5047c93e2e4f01995fae336c79971fe5532e2d2996b358549ee2a9a878a9d4e77da79da7e23d050477b85b2f956b97778ab74af1bc6ff3e54dee4bb19f9bf79d7aa854ea12e4b199a650f236438b3d3095eb0c5132270497813d5cee54f5bbce54a9a8a852299f7cd751d58aca957295a76610a9bfa3ecaf93ef3aeafddbdd97c22a14dca3fa9eba1cf84d6a2e73586a25747cb6552ae54da1a9232fbef0be67f8f332ec65598e33f4ba2c750f471e3f2a5506bbfc499dc2525f60e52950604113ed7dc589d6ea332c44ca576e310feff79ec419a705f96d3ba7854bdf3dfb7110eab3e59df22053fbb0bcbb170f4a10c497c707ecbecfcb1be81df80ea3e2c1888ade4fcffd778fbaa7efe5f1f11ef54d094945306f2079107b3edf3d2480f4f70fa5310ff8f8a87deca3f656ffd9537f9f71be66a4f9e27c49b97f2811d340a646024877973e7ef4fd0afb90fa2201a4bb2caf52a15a3df7dd6ff68907df659fef9e1010bc0731ad1304f3ee0163da4a1bf3963169c1bc654c5bb0a6eea97ef1be1fdde6963ceebd7bd7a1f51dc7a1eee12fd7779c97eb7578ff7cb8ae95ba7d770eb752efcee9cc1f3de0e353b9c7fbf7aecb41a6ee7ab620dd651fd425cb392c635a5b2c635afaa47ce52c3bbcaf7c823d295fb9e7ddee7b0477a47c256f20ed1d90f9e1568ff7947b4f6141155a7bc08d506001112db54f823c56e423ceb2ea0f7c863f7abd2ec3bb6a30d55d2cdf4514de4274cc1e2f86c20ab2d0f2a0e7599047f6cdcb28c8433b38411e5d0643791044f5e0caecdca506f146e2debdf7a8fb64efa2bcd97b87b38cf52c7b77168ed3157f95d0df630e22ef06f22df5a7bf9def206e6557bd7b2bfb3d2acb3df7a8ef9e0a674f615496427d78dfefd4bf77b87573cfeaadd4ef556fa572cfbd2a9ee5a87707710b7ceaaa67b895729467f758f0ca5758e5dfc782bbaf56ba8837987b56de0237d80273cffd97230a6e7d4739784f85bdaf5454bec2de57f20652c97186f1874cc93daab7befde59e8bba87825357e1efa89b3a0aceaec237c7197e39460deeb8d1f240640faab31c64a27870e5a345ede0ca47ea23bbfd86e3352caf4357b4bcca74898117c11e245bfe517dabb181dc9b69f5d8a2e81effe28502f3e53d7a8fde46f272ed1149ebf611c9eada2392edf61109ebda231216242ed71e37929627a130211587cde323011e5f8778fcc6e3f1df001e7f673c5e45c6e359aec7bf848f35df7904c07f78bc8d1c8fef01c7e3758478fc0f413c1e881d8f0f42008f1fc2c5e38968f1f822601edf00f9a873fd1880fbf078256e3c5e480fb19e2020847410e1198a299289b0913fee9cf3f06de33b1cc1a6783d6e94ef94c7adf27859c57ced95c74ba5188f3b7599477a188f1bf5178f1be7351e378debf0b8b9d3fcb5bfcf3c7ec6a20bcf68c061b08b051ce398220e03c7c0496808b80cfc968ce368ede424361701f2763144de30ad1819790f71576ba78503460c0370eb610364bce420253bc67fc8496c3be63972f0c8db7519030873e424ee8394b8f2fe411b22ef013c474e62dbc93bc7d6daf9e1ae96cb95f78c872d57f8202503c81b49eb3b2f395ac7f19203c78394fc90b7eb3c66e41d7e0097c1809798ed050676f1192f30979193f85e66c840f272180c88793966c0ce0f0f52e222ef1927004cde323ec45be0165b0f1bc6754e62db621ea444882d88bc5b1c667301136313e2315b0f41c4dc85025ae4ede230dbe5025aac729092adef434e62db317ee306cc5b08404a1f7ee3ae6e3c48094cdefa3227a1c1c81dbf9193d884c8fbc6b609401f668381c91b5fe624be278294c0ecc81bc97601e424ee8dbc7bc849dc1b3dc07c87bc00de4201d887bcf58358c5d8563ec08859b9c81bbfc5ca458b0729d1792359dd0705c4581d8602b40f0f521293b78b0b81f36ef1209e7166c9414a7601f6eb3ce4243696180f52d20344de3906f3c0f2cadb008fc1f20222c6631290f38e3966f98bc8ac1ca464f7ec1d361e74e48d9f797e1ef2e6e1b01d1ea404e7cda315e0b09cc46680bc611b8b0e9e63168ccf82ff202505c81b09cb75b0602c7fb160af0729e1c91b5fc7cff39c809e03c1e2616301c18ac91bc6332b263f48494fde48580722013cb0be430278d8e1414a62e41df39ebcf381b8cc4dcb4c4e62db0a504306464b0c1844d4c849dc96031420464e42d379c7388c96bfc049681a0902645c7290926d80adc36972125b0d1a9995172f6ae890770d171d60e4ada211f19596991f2027b1b5aca81c460b0c182f5af213414a60bc78901222f246d2729a9cc49dc91bc98a0bcdcc8394a8e40de32a2fbe72999c84a691dca41860d3485c6a6c2e0540798a4b8cbc532e9393f8747e2248490c9907293140de485c5e809b1a7923113a0e97eb9093b8fa8920253574d8318e9292b70c0186e031002182d821801e2074f0ece09aff8001f01c983b0efc5d631d1f7000240e9bdfc0dc7bc0df79c0393b601b1387cd6198fb0b7faf817132929beb8069642442c7719385501c363948494d9e49661801906714338ca7c1dc67f0f719f85e064edd85e9438c7a0c7c2f83538781e95f60d463f07dc6a9634c7f8cba0b7cdfe22f3873c1d95b703d0b6767c1f52b9c81b8d32b38bbc290263cd12a587382101678a053306dc190243368149c91e0084e60d01154227fe353781299613c0acf22338c07f18c65ef30120e23d98c74bc869164443ade62243517e939a423900bc8cbff68402f7e2650ca8f06547f242abf20ee5c1a375b69d514f7b0d1759ec6292b90596b9df334cbd9032fbed814495b6dfb6688b4241e29d2faa6dcbba77d442c56a8e3a6b292029343340377523e213ad3bcabe4a79eb28188f456798fd80464ea5933ed1ade54a79e79da75a6a7cabb1ec8d4592af3f1a3331f52677903693ae5719ae65d725a8ac3dcb5bccd5093d927ab5acba85c2b90a6b93e9bf37fb9b9e05128b8d3b9aec2527fbe5cb7e08501e313e4011e45f50ca734ed32c067da3d2c44abb2dcf29e9db6bcdc83d276a0ee1de565d457f7ec97e1947c96bf0ca7eef1405d75ef55a7b8dc9355aacb7acfdd6baad4cfa9b8bbb57379250e57cbd9afca3ef75cf6917120d3bb29193b668f8c1c672893b5bc5de430bb97612de3c067a077ed194a0e3b70a7bb0abccef4c203a11a74e5103cf8cf1798ed63553dbca70a314b65aff2de751d8772503b0aa72e511e517943e55db5ecd3ddebbcd55358eb70f608661ce70364be3e95ca1b45fbe4f29e289c4a01e0a9d45107008ed38542919b3e833988d4dab99ea9b5ec93ddcb36cd9ed4348c7a0a73b807a53dbb8c2e9779ff682fdc40f361c618efaa7a9dd187100d44ea398739cca7e00fdca957c12b77bae4c3210dc95daa424922cdd02ed1f63bb2c848f765de10111c22cb1247cc2d9eaa7dc839549ded685adeaa6b4268592ea9b63691a6f5ce33f5c7a5ac0aa5caae0140bb2a29bba6e59994e71230c9dbc01d1595baea0c0300cfa136848fe08eeb3a534a01eea83ca2ecc3df55a1a6d01c229a4244326e3f89cc22da5eff682dcb3b751f5a0485485122f3a5e5205467b7b10ccb264b33b459e665d946a46315747c821c90a03d2f751daaf5884d15b77664d7ae65784b1e13955bd9239d4312edd2f1097268410f78950a87f7be1f555fbcc3cc5e67ba709cf6a1bdc7e149646886961ec4dc3d979513599671f9e9cea489d486bb7d4fa4142a4f247b6e0db753e5226defe5135c2dcb22590e19c9216a572b8f54e52976dba89e4a7977beac87ef0c99aef7bde9f8ee0e2a6f33dc338ba2f9b2a74442b6c2260e6ba9a0373de2fd47a3bc09d2c798e3230994a36494cc51187c7941c1308ec2f71314c23bcca93d8dcd2ce6cbbbd5e15b6e8c072941c9940ecd1af6a9ed1be5ae7b28185321946f2a4489ccd0a250f2bea6b995f1cd9af17d6750f2a6c9d495a950d59b0acde4bdcdc8fbcac89ba5515468be50b7a7445e160547283a824679522e81c8eaecf831c270f67d3586c139672a957027d25c1273628cbfac74ca8a42a1728c3460d4287aeafd4590186950aeb750877119576ea14eb1d431e6fca09771978b47d007cd407c6832728c342e9ab7771fda6584f01e846a9a5ba8cc53759863a441c92017750c1ccae0290403cf222ff08cc13faa7da644da1ee31ff5f887d52e700bec43d3da9442dbc3e02054bbfc0507a11acc93c886a1b31e48338af99a22e6786fe5bdb9e47d5b584241a8d6304a07774fa425f385345faadbd4eda7fd6c325f28b75fe5bd5d9a9229ce6ee7d0449a4bc0703fad82a8f3489df2b1a39de73bc532c90c6d6b47e6a3bd21596486f6174ba219daa7ec5147be2ca398a16d698f73c90cd9602d87c5edf266ed9643766886b60677cb5a2dca866c7629926bda10c334caec6ce9f949348f4c986441917cf204a26944ce203d9fd91863d432bb3dd126496d6896f5296d347957d7cbecb1587169a90849448dd0d32c8b8ccc28ee35acc662b158118e7949c4c45aba4ad115751055244557d4455098124f4bb2c92da7711c65e2368d69bee6d7a469b2a949cb5b4e9a25132991e69c4f6206bda511111216744dc5bc78739d66c58011383f60c0080d0374cb46600cc8fb4c0cccd7a474d2796fc31830820291a99e02f3db3402031408996d7466688412067a0c4165ad3206774726239430305f3d868848f43e7882b6829c2167c8903ce4b194919921838850502c0b9a171a1a1a9a071b476ff09d3deb28db51eeb1bc7767c12b71b8da37eb2879e3e8ec2c5f61203303999a759b57f6556bd98775ce9ee55b3b4bde38badaafbe675ed5d3903c6cd9473bb783cb34644de6652dfbd8ad3b0d59a37a875dee59ee1acedee1a925a8837bfd86bb8dfb9ca8fd9365ed15b3b89c856a15e7e272792392d664bd57b79a7777b1f68cb3b7d6c619da9c92f24cf51214b50b8eabb32ef81506cf61a93ba1d559eef25d350aca59dd2b965d776ff56adf61aee6d6a633b5db98bb9cedec30f7ace7695fc5527bf64dcb2df76859ce9ec2728de55d5e89c34bd7752cd6e6bf3c661f966b40a8b61908d5df658f97e30cbbbc5d3e5f592cbc7ff4aa7bbd57715757f7b4af5bbdca957df7ca5a7dde73abebcc9ae78150bd7acc73b57a27345f2b0e77425d8c7b50f62b5f95d077c572af67f52e6b77869dc5200bfb90da76ef6e718d34dd59f0def42a6f33ec728acc3ef719ddea2358334db376751696bceb6adb369877f529d764963dfb04bfb32301a4eba5d761257a64b7b5bee1fda3b39df255063e6503497dab6ec1e02ed609652f53157d28a1a3ea14ec59d1aaec5d56e15db58af5f25d95edd3b5b3566a9dae97f8b39a372f2bde5b4aca555a4d6991b225a525ef0dbcd03e2f6244efa0e312172069cf8b9fbc1a8b6659abf348cd9a2f2fd33bc3aed60d647a1587af3aaabc3df7ad1daaa35c955933cc1ef50479dcac32a3b72709b1e52e6886f45dec33faa4f88e58f0873443aa9265a91f8045866ace886c9950163443f013dc69f9047decb89c476ab0f56264e8880ba46a45664889cc90d3826aadb5624e8b11b9dfd27cc1a85428ef62312786a6ef8226155765e55a8cc2689116db5a4cd3c360ba34c3a016ce843222d950566486140473b64d161617da687b9b2ec6ca7bbb2c795f16ab8bbd8bd5adc6ead6655b922d5326ba34c32ea36ef19e4e5654b4a3ad1dd95f157f714593cd5f147429563dba345fddafa0d469bee4939813bbaeebaeed62b3569b6b97af0a5daafab2bca519c6fba223c8a3b5a3bed3f211da5b3bb2cf9247e4199921f58acc909e0e4991063074b1eddbdb102b4669ed622d79a3022fbed85946829b84178f3933b4fc8b50de29a794ffde6c6c4c2122774596026b339b6599d5b22ccbaed8bcf8e5a8411eb31eddba63dacc177d3dce7c6927b831d71ba970f7a9abbebe5214937b2392145c14429056da84219d9774c888de1fc1cb7c4d6a8b98e164b16c26023585995f58dbc67a99afa955625d83f5c295f7bc24705bb9302c18dfe10d5dbf494a69d7492e4a8eee1ed6d225dada5a6f6395d9096f4edcc38635a7d29e4b7a4c252b6446eda448d425bd061031c45226345f323bca966445285276241bca92644699a5487489b4762a51a519ee205158264491b24f03772c13463a53aa73498fa9a467268485bb23d3acb9c77449dafd880f566f73ec31953030c3239c70a73c82c6a78dc974694b910aabe78d499afe5bda945670e9f7a6a4636332432944612c7b7ba8772624d43d51184b8ed195023282b65fd9b0b16263a31286293f0a8bd53da1de7d12dce18346fdca89da405a674e70c77e03e7c1298447957a539a2f26f3b5f4d998b40365e4080d9ff7792f49536086f21ab86d4bf4b76dcb46cc10ecb9b6990233e4be37a5ee6986f25f15ee8e4c5a9eeb9eb4fc96096989811e4748fb1e5389828008919e55652a690a64f64650401a316bd6510a756003cd42bac2155860918e313f1ad057ef0862dafe264afb83bb679356695a9db06c689b2f9a5f3d5e682a7770e990dddb8b9d2dbc2966e81dcdd07a2acf0854a19a70bd24307331cf2976cf0906e67bd3598cda14fb267ad3220f698676bbaccf237a752f8917c50cedc1a9a31542461a45db6746d9118505552b4030026d9f21654b262cc82e09810934eca6285a3183246d9f15a940ed0331179bf5b36973b1857ab33b2ff67e6f2ef2beac5ce4928b5af20e55f2b6d12f2a2ad97b9aa1fd4bf69c66883ac27df9f69cb4a6bd64a259c3a21cc5049ae4e5d74e70c1ab70122f0acf88c2506eef1d515877144b059544cf245a3b0a3ed26e92d6b426addd25efb764ed2a4adb9114d948ab6c145a659368552a7544abf206aff5984ff406e613bd9920a27dc0fba4febd823cdf41f01e0555dad42a30fb9e49f694026948aff08f8af73ca25be0ed55b1b316dee055971ca74979af6e801e41b59681483d5758b63cc36dd332cff6d535bc81a8a47db6af649044cb7f2762c4f3e2074482f9e52e1e846a9414461a85a2200ff90fd4b1fa06d3a288bddf637cb1b8d80cad101734439b39212e880bb7c5e9b9188509815fdeda55b72a958f2a239a2f55ded7dfed63dc9b56b51e2317a32e7b55f63e9c116543d9d07ca5c00e3c070601a4c1a18c089431b8d990cbed3323f3d5a28372fbf2185b8f51e90bbaa5a5a4540771ea1a56a1509fe053d887b6a3ca3b08d5a9bc7528ea3bcfe54eff05a17783d987a65b3c08d52d729da17618fc82bf19d20defebd016ded705b7e05df59e4d4111a949dbb370dd3da292d6f296230db62195bc595ccc662ffec37b467fdc350da5baa6b32233b4590a6584ab4279d78a1e28e9d4047790a03cf59b5baa57ad6aa9723684232b325df6e077a6526d57ddaaecbd38a3a4a89bf7779410e06992226daf43c1ec1faedac341b288085dd01de686b4fdd432a62840a0bdc77cb2633245f1849636fb7cb10964eda7884a352a55c18b2f74ec7a55b5e5d2cb77dc53dff2aa3ca3b8dc79703e3245e40b775e0ad1214fe54654f9226668847c032e1069eaa6bb5bbc572cdfbe82b7cb5752cea55cca9813649b3127c8a53127082bc69cd42b46ee5e2a1564d3dce5bd6b5a85a2520569f55c4b9f54ea407c681a25c55daa522ae783cb403c99bab6d2e11f2d577dc33e94d0ddbd944ca5342f2595d0aa77d8474bd12977b90afbb0de3d853d0eff08e20348abe75af5a855d9c7879c834ee5209b965912d1dc23a7bacc5b48e4f08f18696406b2692e82a9ec83ead477eaaabfe00da439ec431a8934354ba21427a18891a6a54a09b56016f6542909052dadd09e4a0855f6e1be69141d51b3641f9a965fe52054fbd07c68ba7b0a96118b1d846af9637bf70cfff0a169997d28a17dba9cc548e3435e128934f53e9000a2a9189861bd8c09290185234f88e64b06d563a0be47a51ff849300b1d07f8d3ef14dc41911c8e2994ceb9a5e6525e8a8abb44c148401f489c40dd0712401a092a0b1d47ea2924374b21ea4282ca3a93c3205682ba8accb0fec3f2886bd7545c6ec94b2b74eb095a56a1b5472df3d611f58e58e80a6e3d9b96dfb4bc40cc316287a6b3253708d559fe66582f71d41a95be1fb9d9abe4c919232ae9da3b99a18c710e510149efa02312149cb4143394f18a19cac9d4346bc873472de1caec721e10c6a0bd8904a23212230a5bc9b3c80805c6b83fad02934f3494453a493c22e7eb88ef5b6a953ca34029413e4596086654de12dc89288964e5567ee1aadc5bc1428e58d9ab2301a459beab669d05ee883e2c7300595a3da983d7917a06d23a737510af56f25c325df29e5cc111470455f2447ae23e3e45bb2839682215d19d2adf0da451f1a81e333a3e3b886ba479cc7186f4dfd51c9e484d4e3394e7ba70b76cd2328c531b729db49f09a4691f1594a80ede8b12d5e1940fa9c11a69be4790479c61c440a8de47acbeaf565f76ae0c65e8baeeeb2edf51edd3f2ee1a4b667dbb1781d0ee432101a4813cd43beca13cd4fd7e7aee41ef28160c847aa8233e180b2a6f14fec07fe077d0fb0e7a972d1e54f71a7356dea5f0961208750141956aa6a8dc3f8e886920d4c587d42b35d250f01e0afc8742a194f83d0ab57b502814ea1e65040a85fabeb3ee97bfef1ff881a8ef20bd429e875b50abb7a0beaf564a802bacbd0371abe77bcabfa79ce551981312871215cb9733fa1df50c83f9fbbe0d453f154ee1e87ddf86bab8469a6dcb5c9ee72561230104ca1869be0fc71906915a7a2990a67076d0f30e520f6c8129baf23c55d7a5d06f7f073f14451de5dfbd155601c1947b2a295485425110751045b3094a216eb4fc122aa80b1559cd66d36c7a51b5bd677f706911ddb67b59ac3f0ceb8e0d126e76849be222781e796b57af33e96c3243a6195e319ba693ec0629c9e612d2e5324d926911ca0837b5fdc34066a44d9a2c31b14a33acc2669b34435a63bc67ed63deba6e6bf73abccd90e976a73bdff71d04c12ccb32206df1beb6f61f2a75a054ce64cd9c4ef476daa40877df6e5b279a7eb3d1fa65be2c7d385fd289a69f893951d36aed96d958ba0528e82cdbd82b54416b36a4630c1028bd1558ccc23c583237ac4357b6d9b43d95a2d88b55f2c0dd5a6b2db75d5af9589b321d6ab13c875756529997c25aded27bac9ef7d964690a4b948c5157ce240fdb69266b36d4d7a5b64cd64ca902e69422ed51da2cea137d329da4aeb94a1ea2ae72cfa6babd7e73b9e63d9b2c4a77944bde589e55ce5a1d6c390a4ef9d692f7a6ebdd5679a582af57c95d4ec93edbabeeb28f973bd4250fa954a699ac915ddeb349d79cc99a7a6ab1f68a294eddd24fd6a3bcaa50a8111426637bbb33cb582c163b8bc5c35d6a9b7dc839a8cc70c3f4768b39534fc9c36cd23a9302a1ea0d83a7a952de46fdbb46514a8dd014f50f6ba8abba2994c7e508c4722a15dcbc4d758f751566a55cf50ee52ddf55af56dcbf0f942b2a14de466814cdadd4a9766edbeef552dabfa38cb020d5c02f6f1fd7415c3412405afbb70fe6d677faeff4e0d650eea19c4381f7a2ecef1785ca3e28f7b2cfca51b71a65a53b6af5965c67b8ca5b459592a202415c776cd4a73aeae0694ade4c68d5558400515fde2a2a950a045528658adc5178bb4763a417c4f4119460f74b612cff54204a069fca133c0b8ed10582dbe3766db371e3364d3bcafb5c68d0458b1630302f2fad968b4b4b0b8bc5c2b25aadaca8a8a4a4a0a0a854f7a6522814087e9fe7751da7414e5394c79873bf350daebeada64f59e59dc548a392774a8c34aa8bc1c708e6fd3d9e861188d5a87f3835b9ec83baa681ddb776248006108dd0d9bfada377bc97bb474d6a0dcba26d848e3d11c9080da4fa60b3425b7430a98dc20b9c4839cad52dda086fa334041211484534404769886d4304128e4e6d421df2e479c473f7e4ddb4cda73ed2cc9ec3da09aefc96717ab099093740758be62054cb6ce38719e2a889286288506f5a29c6b8c94903191c0963f054592fc2220d85180ce9f96fbed4ba6b8fbccd40b65873bc3ca6cd84c29c53521c93f4ac3a1456b34d641a425395620ac5a87df515bc129aafd9a22f14861eb59ce62db4832b67d0149a9e1773e863d7e98832256c62c1879cc35c8a34f30a9166de935e4dd14ccd0b1be4f2c2e629c6e6e67b2eb1e0f964864f48eeadd18453e33a938606cdbc42cc598a39201c2e2b63654bd9eba82926c5d5098bf87da821dc5df5ce94aa13f839c32609676a1ee39ebc966986f30a27775b27d823b89319d9c245d1fa04b37194106e2a0975cda75ee05db54cce929264495a3c6654109adc7bd9cbe51fd37cc17069ba9f38fac58b4c43d6b8c060325fd1c563dc77b3b24bce8c3ee332ee7a56c50ca70b76390c1830582cd67544cdca7bd3ac03e9bbb4a08fa140ac6e913359e3721d0a03c719ca644af926a3b24dde2c9df3066235bd8d91bfa6194ebd1ddd9d1de9f902ab2e83b3254cdb56911dcd578d7f26a1b03993bce0dac8192c672820dc6c6886598cba6616d3f3a81f5827bd81d8d7e503f0c2f1fabccc2d7aa717ae4fa66b52d42dd31513f6faa4df192b73325f2d56e6999a45a5e6943dcd6b312d685e2332612e45599389639e951d55a7faa46611f31593aef0447f474bda4aa41bd84a051c7ea0f7e744dbfd25697b2d9356e889a8a968beb674b244eced17f4b645ac116dad90b696dec626c496f8b140da8fa41f250312234f2a9773cfe0c54718ac01d7273eca213ade8b150b6d38ea334cc48ce1a88f78ffe81da4eaecad1e59a4339af78fa638eacedeeae974967da4b4cd482a90a65bc6644c3300f4711f57cb18a55af0e28b2d23268586e2a1e98abb28bd6de3be62a294e20d6446da4752395118e6c8744d98a2258ac439dda2234788b098182b44d7fca6497a3ec60a314aac1952fba1f0f52e8529a134bf98f42df48b960f294cfe65bea888726a1f196ec5e2ee18254d44bf5018eaab2719612b344497145a3d89b01513cd424b315df31acd100977c31419e97998a2f98239325fdee76160a298afed3434ca3faaa6db8a89ce15139528265db94873ab66ad7ccd28fea4bcbcbc863f29e5b714be98455d9c8742f9a62b45e5eb487023cd3fa496992259e1c21479f1aba6b942438fcc48772ba625dcee7bc5b4ba628613a648cfef151a50523e29f1760aead82e6134fdbe618a5e34cd314a91661eacc2951429e6d0cfcb2f06dca19758af98beba427ba603bdaf91b6e1dd233bd882a4af11855123eaba4088300a0420c425e8f9499122a522c2be499da0e74bb534d336aef3bed48d20aae66d9b51521931951a9c74846549313e734284d1245b36053d93cc900672d22459d20c926e96243328e8221e4fd324914606577ed324353b05ca70cc9cd3148315424c95da273ce96a85135d676aadd34e2dd36c96d94a5f646bbad096cab22cd94a5bd954b8940ec5537d174ca15029f07e2a0fa54be154b6156d95b158566da12eb3255f3efad2726981a1300994c98e0acf93b7ce306e5222799ebc12f0e28bcd15e9986d811ed19aede0b676d077efb24fea750bf7cea3b470b7ecb33dfbeef1e9ed7276783a35b99562ba24cb6496f5f8e84492362c5de3b32cdc180d122a42d4a27946a1679219c62d6a9f4748b346bcf6855bbf65373ba5b40a3618d192063a56f1e4497bad1e2480347dca537e049d61f63bc3cccb8c8e90ac8ea9ab53a9944b54b5b00429599d25d358903c772e671a34c398858e92e591e52df758306d893426dff28cbba5b1f90aa242bb6aa98a5fe1f9346bc46b29b828b7d73bf8e984925b2d3ff7165676824dcaacdd550e924e2bd0a85844e1aeeb12b9540451f5787a44693c4da23095c7d358cc71e9781a236d818ef404085082ba22028ea0aef8953c9954f06ca2ae28c19d8883fbc575861c778955e66b6f33e454ae143291a84bc84c9a47d41551ae3a771e778632a3b070b39f85825b05883862f10a1c4bb0c21326c8c10860d00407ca77a8e3e31538220ed59998571d0533618f32bfd9a364208a9857651df0661ef534e2b051043a1ef565251e0e924e3a7e46817d32bc411d720eb4cbad1eeedd7570d983505c9ff5606386b1455f35bd865b54abc2fd503644571a8b16cf29a62b9ee27934c378ed89a3a1a8e48316e89a3725d231ce2c7344e28a24fda129d618b27b54d2f52e29a53848b4d339afca4a5057b89994524a0984a3eb3d2234a579f7084273af5373f8d214eadebb1da0eb2bad117f3162fb2f7e44e8bae10f4fbdb3f7c0f19132e368c98338e70da5b7e96e664a2965ccbbeacebeda7a9d297176aae1c099ae295ff1d4dc1caecd0cf5bc77cafa8d600e61537bd8d8a861e5b8271f82e3ae4327f762de7dadd599fd5d778ee396f4984adf0cb75b7fd4aa6b4dc3e564c6022fbed85749d7956d65679bc25a6b6df7ecbbb7aa3147db709d6145d2f5df84cda31d563e3c7a393d74766b5b3cc33d545adc65032adaa7c55d02709d9965df346bad9dd7a18fb9c51b984fb4cf7c4c937873f77c9aaf5aebed932c48572e0b28c84049bfe808051948a1a15034850e3a42a14848db27f6f5d64947cc617a78047dc034cdb05e31c3ca34c36a9964f68975b24fb60b775b27eb649f3aa26e68862d34b779a4f7e69bf570db686dcb3b281fd30cebd76486df1227c50c6b912d48090f4731e1ee6ea823e2017347b346bdc59cd10c5bbeb92bbea61eea3fa7efc9f7345f5fb9dbb5f7ba7861e15c7f391276383a7ccbfb5ab0e7e5f6dcd07cd9dcda617dc2dbacb367f5db877dcad1bee967411f9249c3d6095b27eba4c33eb996659ab64ef3b572bff20ddc59e1013b71040ff78144e83878788c343623e121e3016731eae201471c19f661edd30c2bb64e337ca23d7bb8ad93d5b2f03ad30a8db51f5996fd25cb3ee137fd82f25b9c77987d681ae52f3908d52819490fe78ce8910da643ee86f2666d33af33a7c97b9bb98d99dfccfc45de9f39ce3b9cb98cbc6dbad8e594be2ce62b8b058142f315e3f52091f9faeb6df04bc7d0d53a65e08e666db616698675dbeeddac9ac3a8f9de348c9aefab61d47cb3340c996f1b7a86ccb78d9e21f31dea19336466c8cc90f9deb4cc67b058f7762affbeef7b67c462dddb3ac862dd9b62b15858cef249c59d793e0786bb39cda703e0d6480cdc033e674483209119567048ffe0e67b1284c92df056d1d6e51f131778cbacecdbd702db4750cbf3c80cb33c6f718beb501a3300a881f78bb8245e1174a4066f79850aef19b4e791179e49be2c7eec173b5e1134036f79e40a1da4776764df027b9f98c603802b0d1f5c9e6549e4e54967afdb83cebe3f6db3ef8d88de9650d199867b58ef16efa0e92df54ade808adef26a67871c2f90f9ed80abf601471dc1550e9e55ccb0878a5edd7bde41e8956f389ba6699b8d3e595ed9ec3970673275752ecdd0d3a8a50bf2b02ee32c58861775e6549aafd55da2ae3a43652629d12d2455917d397b3791504eb8d9f73c9aa24eecb283d0349b53d2f5757743db517d5764bef2ebb729b625baa80aed42472b8aa2d0556677fdf5aea3a010d97538f764be74c0c95b6a9cd7b8049d7d27f2b01dc59a7a4367357446034367302b3a03331acfb46738ffeee1e0e934c3fa6f0517e74eae333ba3eeb57b4af718dd55b0ee6ec3a5bbaf1ebb7bdd6b9cc6cccc353cc19d2cf7d45ce615e481bdbbe765218b94c151bff0c4c151eb805d1336e3dd5924c8133efb8c706b799c3bf387998373c1f1bd6917fd7db58bce374bbbd4f8b661a35ba18def6b95568c564aab6be57cb302f07df58b0fdc8b1275d5bfbe370d43e3fb6a981dbe591a267c65c11ee7de34e7445df52d1ee7665ded62d32e1e27ac73f11fb13c66064d96ef6c4e2cff6163798e2caf60398e2196eb2196eb1c6161790c96ab2cd12cb791f759beca3b64b9d7b1bc46de36f4ee8c284c064517cb59ee8311cb0360c4f21c235dcf29511805a28b85c27e882e96b37c87bc594f34cb69e47d59fe5262b92bef8de5b0bc2fcb3bcea91ba2b017733ba2b01a5d2caf2c32795f96cfc87bd32c2cd7f2be2ccff2ac9f4ee287327294069d715ca69de0ea4c796d6ec19d1f3ee41c74cd816cfae6344e03a76809f268f54c5df3a96b6ee311d46163fb748d39dbe36387a4ab15454674f6957b2bd93ff08bf385a2778d1ade6ce02db58dc3605eccde813b5d4b9092acd66fa925ca0a77774643babe63b26df7be788cb0ed88baea5f1cf644613cf470e3a91b3d601ef0ce3907f2707de61c2884cc6bee719f0dfc7a0475ec701d353e23fcf60ccf98c132784b2d3363c63770679b91b7d4da75e88ccc6d72306b867507bc7bc423e8d7610f3790a7c6b3dbd8a1c158fec2718638d7585e03ef2c08d53abc8b5d96ef0ddc51f338439cbce7159ae51ba8a3e641a88e33d421efe944b39c0656d19d1433ac403ebd5dc33d3eadd9dce0209bae99719b7b2ce08ecd3d1b6c53b352f3951a9b9a3ca3c7a73321b26bb93bea8c66588fb2e202206f219ae65eea934fb8d18aa298ae93898ecdd70e91e66bcfaa6b0c9c747d2745b744d72ee84d83747d0a1482a23efb83fbb44d31c3ba216d4733441de186df1bf82ddd6c6631c34a63793ecdb0a28c70c3eff904bed02cdf07d03444681a1d331b476b3258ea0cef2074764f0375807acb9d51a47927820beadd19c95c67cee43de3da29c8937dc6376caf43b519b8078e5e798665b01c06de52c378057b56ee0a71047d5c469a7a54152ecb617c77464f499d518d2aaa1408e3f53a5406470d63f502ff903178cf2399739a4b3e9ff68b1678d329366db26916bb1ad9b589ae59e87a963d4b8ea9f83bbded5badd85ba7f96a6dfa7b3261f36943d254b291919692e7138585d77bb54a5f0f156d3fa79847f3d5fdeb3a0a02222dd0b6ebecabee70d5f388c22a8efa89345f510aa0d9d21e9354321a5c24ad4bea8c34235def8514d6ed20baea837084da3121acb533ca90744654683ed57acd04598e33bc4adb0f0582d10134a94a18f180d8e4014658235ad0e1073c20a58b4c9d5475976f80e4e1be43a150376fa9513c3c8dca0f90359d7c44a18e92bf3825e5015e87558f0d50a9549f437aa6525d263790f980ae93f9013c2097b72025a83a6bc87ba90924ed93ea449dcc26d900f03b32a5766442edad461b95d3a7e0cee26db365203367554af6b1f9be7e83af2819c8dc6006321ff000c903977deaefcd0f9035a99c814cbd81ea03648d4c31e9ee0f404d7b0ed76f3a2a126f9372fb77ee1b9e7a9ba18c1368ebcee0c5179bc6323b959e28cda9349d32aa8abba79384c94964129945669169641a71e2e4c9932cb2d07b83c92341d3256114982ef9264d9830a9a28a254ba698420a29a288c288912245f4deb42422893879f2248b2c8298b01f66667d93264c9854d1430f383833332f7aaae8bde979e4088d69455e6cad6d3b5a52e4c8dc24067acc6b638673da4f6e527233e680383abbb5d1e466df367a98e1a41888544ecdcfef5388f63c20284c95d48463f8d9c0d01f03b4fcdc62534f858096ff3e4feb67e3c977dbbd2d86db6de66b57bd659b19ca4d6e8944cf1e74328bb32365c90a2f685971340e8d2f4a1248d22ee6c5174c2a395950d7992829d028dccd9a794585e62b65e368fac3d01446d3154d419dd3e2db869782a9108d65e1a65c070dbace6451d83c9a4719e7cd72a1f73c72a1374bea79d47aebadbb30f2e6e702b7d8ace801928e5bd0d10a1e2869095ea59734dc1deff23d877a5a1e411e180c5a2cb5e7d90f087d57f07c9aaf68a35d3a621d5b54acf82de6a4dc86a63d70f4f65179bdeaf1fb5ebf4f2714146efd9e4e4fb2ca57c0e8a2f4a0a6f71e29a5ef705450709d2e7a0bf24c9d92bf48b3b21f6a1bed839e57f5b0a1535ec19d94af308dd1a019ced55756e2ed0acd3abcab5a3cde5557bdcb7b46d37ff53ee20dc4fa57750a8eba857d5a50ef81a357575d05ef1e337a366596d318159ae0ce7716dcaaafa8174a29655971374b0f6124285fe1f964c250ae9a535415559e47f38b47e139c59c474f845fde3631cfa1194ea259631e27517aa4882671a294d2181294ebcce94461287946fad115d56938eb162efd15b3693a99af23e8b7d4aa3c9dcc707ece7944573a9af356d12024288f73a25c75eaa1a0a4a8d0c77fd8877e2bdf57aea35e256f20338804d211a7fcc329df49c94882a66b568da2ca3436c379534714cc7bab71e6c3d13b9ed61ca778c2dd73e808d3989695cc22f3154fffaa476692f9a2ad19c353a80b97152bde2a35baf5870259ad0507241d638c47b3467ccce8cb486c8cc26c964ed4151f633a220942e368fa14bbe8c5efc5c3089b9ac65d3a71583e6de1724fb27c9a6116f375c4fc961a95651660d6b4ed7328fecb0e28426b80a67ba6078ea641d37563dc1cee9eb1a298822ac419294a09774b275984682259aa11a148539797474f0ad1db2daeaf59875a1f546f2e98f508da481e56afd92a5b659bc5ecafec558766b8d69d6a31eb1b566597dbb058d7992f97b35839dee8c4c22edbb6a57ea956ea9969c81a7b1f3c1a4bde9bbc562d93aa44ab98495277b93eda649d19d6f9fbecddae1b8947eaadad5062a4e97233dca10ee2421421323243db7513ece27c753c493c398ea80bfcec910b823c2efd2433c44f33b459cc3089c25a2d04d0229989169296fc093071c8156499a22c2393bda42c04590801f534df345197d3dd99fe3c47d27cc918cf100f124f1285c9223159d0f1185f314b4000010410400091e39e0e1ce84822e4c611012a0efa8ac55de23a70a0238974220bc9b2892cb300aa93f842caca7dd35cc6a133c414e550a459020fe09e945d26bb4e76465378d265d2551473b2bfba9a1ef0309aa13d8f500f31044b0f71f5109b1e6208023c52d68d05b84cd17c2dd1849073afe9418d11104ddbbd2c266a9eb64d094f3f79b3bc9b2c2425252525256d5b1696b6cd008f61dab67b592c2158c62e9bc072c897c03f974d3c823b4264118cf384719c70906eb2d073fb9ba51e1a0f7f16ebde498388ef1b374e4f375908802580ef2b805727f395dd38c51ca92d8b75ef011e23ace7009e0465ecf2fe5cc6f0ea89abe99fcb26ee4d4f2e11851846fdf3185f3c9098c430ea4df5cf63803b3f395e4d47706709a97f7ef216a297f8f9a67fb24b286ebef0ef1f013d443ffbfe4828f00d17224d4bac084c648af60d17b4954e50643888a1bd2452932404972460e2713a113bfac10a6842c80d176a70105f3543a849325f3547473f9b0c7ae21204389672d40c4112c99bea1b24c83b0441de2113795f17e1441143b28422967fb20284609d211d224bd09a21d41cddb871e3c68d1b314c1dc7c180f1836f9ecc10076986f6879097e19ea46b348529729a729ce62be7c97c49a7e7108a3972c8ed712c7d2186f631be6612100af9be2ec2896f962e625f5dc4a68b28620191c26a1490fd9cfbc20c53cdb65d26f2be4ee4cd12d2440d1185e948b2848e24b489ef4d36914328d224200145bc88efad88ef5b4411df2fe23b5cc0774ed3102c63375fb861aa39aa39aa3972c0778e4cd10c65a298386411ac247b4c16e2ebe60b318c599aaf1b264a29a53b278689c2742431d22d847488e84812737488228d05c208dac56374714fde08d465d9119d65374d140684082214f104f1f5737b1d15c417170388230aeb2192b1bca2652ce3589aa1d024328766110550057c89267e1efe2cd6bd30357a882811968962ca2499e18ae6de9354005a00ac2382a80345d43941d451410ced7b9218c0003850bdf3185f3c3be1cf62d920da378eaa8e904683067432f64dcb58de48fce4d0090e51f3b83dcfd37cc518f2b8bd0da2211efe2cd6bd433c493f40e6480d7055e58dd3acd169e14a1ee6106d7fd37a0ea1ed52caf08cd2f7c194e66b456f9dab28d264950c57e79e44a1c09d99aee366b2987902ea78d1334e3e6c1c276506ea78d1314f47ae952bb83d8d1885d1cb22b7a73164b51b318c21e6644e0598386c6421b0414474e368c8dd3712478dbb8a620e071620e2a0972002aad3dd3762b72ae57473e89a62576f75fae00a75877538ecc34ec730c534c58841eb472d875b5bd963ac51a3c633acf3c34dd36f68eb5d1cee9e69d2dd4eb774875c823a66b8bc09459ad0c9e55ba6e8a6c925c714228d14224d14228dfd4c13a5f7e729e00e139913dca513f75ade0bb833b5e765485a66475a725270594c4b186f7e5167725c8773d4fa9199e2e747a648e6884c121924992419251926324d64a29031fae172ce10861eabb9e734c5608e73d4f2c9dbbd05dc9143623fd9cf7f2ef3cf4a67ef7e70f708ca21dd6a05ee2c21e5cf8f9452ca6c03d448fb6497433c17e0ce123f3f1ba046fae711dcf9390f4fd20c2d0f52a4b13fca31058fd0c19d250e8465ccb343bea9d1cfbb37dc4e0d77bb945c4d5c57cc178dd80c6d97c595b1ef4885d4f24032455df783b71025dd831a5170473ec35c0f6e8956c62d99a19d81f725a1b01611f5347f4038ec23484475914aa00cf22d93629c5285da1fb034b8bbe529e2f88ee60b48dbecdaed0ceed6a13d3223bd81cc482bf1189047bb075e0421ad838e4a44408236caf0cd52a4c9b2225cb1627a438c094620b2454cb0425027b46f9634919774d2f6e79ec77d32776fb8f6aa7ce5368828ac95bdda28a2b056965b04a0972b5841cd4cd4cb22972b90455470265a2c78c4d1756f712959ee190e55806d5890b9e03ecb11a65db982169792a55ccec96972c3957aee1b47393dc41e620fb1871e4e311da2aeeeb5fb27bbee3ab3eb720c53d69d465096a19898d024d6652ea5f99a2f5793f992678861e2669a78c8ce7d5c6ca2f7942992e08e9073f8e712ffdc89771a08e401f54d53a4b1d7de70e9250b3eb55cc16b8b00b2c8e911208b9c6626943021577059a4886441967908c982d3471c2ac051e6080bf04d1375c1e0ca24c93245337cc1bd717be3377ee39ba55b706fac0047eaaa586c1a08472d5580238e09764b37a669a148238f5d4a4e2b54e909266061065f1113aec0c485e10c4b74efbace1a2915c10b9a9211a0183aea869ab8cebc69e238191b2263f8a6e9c6698616e768864de06ee9ca671da119d23cdd99e388c2621c62286dcf73147322d884e31473e254c9b7381a4112abccf0a6e9c6c97c45a52238d110a231446141b56849dbd320a26164c282322428dea0ed691c99b0aa74f32449dbdf3c512ec714f325cfa05f320cb2091cb5cc12b7bfb1c48e909f4b27f0ee418db490ffdccbf2fe2c719d498d747719cb328ea342599677f79fc7700f6af435f9c11f9325f0b70484e5904f69f5552caecb3d96af8ee1bae458a22edb8de1e2b817595152d406d2329623e907e7a842c78b26f2444dd0c36f9a62ce9443bc0fe4913a5a689991c4700ea548636b8eea73bce6e8881ff1ace6e888cb2c8be08f490ec12d897320e5589223a9c5272ff716e08e1cf2d3759cd411a2b01c53e80ccd578e253a45262c47928e91f9caa144c11c47374df247c66252be4c5a699c16056aab731cb9e80e0b77bb942215375c4a32454b5c67de409aaf2d87bcfb12bf8174e3e80a570ef9cce49021bf71345ff2f1f5f3924d5cfe8b2feef29951cce9b43c00f2273110be792263790b51d232e6756cb85ba64846680d77df482798b8248184423e2143f0386137605c4a74d3301bcc7d226f968661419125914c82cc44dea113b9cbdb26cb38474faeab28d2d8874e338c53e9e713dce17208a9811a6979e364ba90e6ebe6c90c974cd8cd137555315f342478d39486fbf30ccb58ee418d3487fa2ab8a3ea219a0c4997d2cdd20c17628e9caf4c240fcd5777a48d38041e274ca668baec23108153e051dc68864bb404b8ce8bf92456b9948edc9c1c472f9f40966f9a3a34dc7de3c6d114132663f6394d394ee62bc766889f5c3a7b92f9723d89d24cd17c09712de954e0e7fbea0ac4be59ba0243beaf2bb0c477a82bd0c4b78dae0052cb3d990f0867150bfc495c75c5e2e21ced50c3c8902103833c2bdae5054c74547a810c1d958c3cd1374e268d22dad220a22d8d206d6fb2d0f6e689b6bf699a2fe90485e900722eefcdc7bbace52ccbbc43a1ef2b82117c5fdb3071e37be3c0f70d01089ec041337e7e52f0734446c1f7f6e3fb9e60c8042568c01028be6f906f964602e87bd34b5c2224d8e145ccb3269a6025f17d613cf01d2af17d2de40342e4cb331d49288c670392f7767de47d59cf9b5593f765f20e752c5100e4bd49a1bcafd0a508b2082e4790f76f936fe4bd7120efcb7a882374b4e194bc59320579ff88bc431d8068da5090f7f623efcb3a41de2c3994f7a509f20e754812836924f510f5243520ef4d4291f70d92370b89bc3f3350de9b2befcb2292374b9220efef907778d394859ec446ce423172160a73121986079e4489241fc849b42cb31318c7d20cad8ea5aeebbaae932410e28438214e88139229f839fa39fa39fa39fa39fa912800a229168bc562b14ba46cdbee1022398468c890c709eb49a22efb6dbb97b5c4124b0c3d33c1b3f067b16e134d3c4e58964d843f8b756f12218f137621b7c9883cbbb781b484e23a53c71285d51c4d97fdb6ddcb62d51c2d614988c2669a8484848484b43d10471416c37474747414c39474a4ed8168a2301b443d441496731b44db762f8b75261069fb9e240abb71e40a7f16ebc68dc884a46dbb97c5ba4be949282cc71175d9dbf067b1eeddb6ed5e168f24414dd33fd3f499a6cf347da6e93329c03829986952d1314c18c730e118261cc38463985080754001964ec430a5681b4439db20ca3688b20da26c8328db20d2f6f2045887242718c2349e6c10a1e89ca698dbc7e434c5e434c5e434c5e434c57c8772c8049846524e934adf387af16dbb97c5fa8bef9004f86a698212601a44378e60dc3efc59acbdc912107129a5748ea397f0acfbf2bd6d2809456ef56c5a42f14d4b28f24642337122583a71892509304ae31ccd171323c83b0c4590f7b50c8c5086818181d9374c606d09e673e23ab362719dc0383c4f316ec39fc5ba37c695b06f9a3aa7bb2315473c42f3259db80dfa0e9ff83e08be593a0cc1f7d561e87ab8345fa0902696c03b5ea1b3cb2178cb223abb8ce12d97e8ec3fd939bcbb4cc65d325c322e4390f7d52e199720c89ba55d322e9fc8fbda25e33228ef50bb7c1cdcb1e9dd1d092d9db03c2bbacb31ede3313e8953da0b3f796f9c803b374e29dd31ddee158bdbfaa73d191f10de70d08dd3ac61efc411dbbd195ec47102c22e26ae25eab2f2e23c9921ced30cb54ce338459a9ba619de3899e14d93c63992d9a57486bb2392d0762919552c6e6786d895e1ca14cd577624c97c19cd5726c57c75b7973992419aaf9fdbcb2c992f194baa62be98cc978c2dc93491b962be5a59ce9194a38a19e21c397e700ea41c47a08e95e6117272e553be23154743dac7963355528bca3afcf29ba61717208fd559eeb07077447229b9985499a2974c51076e3bf02e7740a6e843a2ae94d23f6d69be56b4bde7b93e8933ed71a08e152d24e31c09c15c369161be44dee187e47d19cb9bf593f7e572eb14df38dd38b9c1698a39598637a14873c4f7937c418834f6157f48333a7027fb12f84baa426986f687ff34c1d17c40b8fb07ee64dd111f823fa418fe96d47c407889a7c09dec3ff863027f42f0b704677a09dcca32cf8ad69666a8bd95162e8e73cc0b989718a16b464666bd3a333343a74cc5d5ca0bca48833a5cf44734439bc45b9e624e76bb5392b47dd19996b523f10fe0a83d80b73c125742e61e1fd17cb9a8b2ee63d2651ea41d64e1e45bfa989cb018655185b6ff923a2d6b796ac962bea41962f3851224e4e262ef5264bea4176812f8870c827f54dd01bc3d236d0f046f4f0a6d8fc40f1f786f47e07d39807fd40de0ad01bc690fbc698840dbfbdcd87853a20ce04d8b308037eb02d80278d30ae03d9950e049b4fd04f08f2a01bcbf08e0fd1981f70701bc597a67216dff00bc3707e0fd06e01f92017847a41668fb05e07d05e07d8bc07b324900de740802f0b63900de3768d0f644e04da348db1b00ef1700ef4b00bc6d86c07b32e12153a4ed0780f72604deac20f09e4d76e04d452000bc593d40e03d9be8d8910a1ebcb71dbce9901fbe1c78b370e07d8df7d5c1fb45ef18266def03de9428007847241368fb1bf887ec01ff903ce4e05d230a6dbf03de93890dbc271318dede136dff8a494ddabe06de1b0ede358ab4bd0e78d758a2ed69e03d9bdce0fde99dd3a4ed6df0a6453578532100e04d8568f0fe66f0a645336e1c69db44bbc21878e338d1f632784f2630f0a66144dbbfc09b4615da3e066f1a596c1da2d83a34d1f6c71b8788b67711979044dfb441dbc3e03d99bce01f55df34452a98b47d8b4be9a649dbb3dc385ac141d5a5a4678cc86bda5e92b631ed2d694b445b260a8b4b1f9109db70d80d87bd97e4115158c451e403f3f694b4d53b332ad2db0a6544fa3b4a1d694877b73c1dbd3c451afb389d68eb3d69fb0f471c2ef84968fb64534ae6a4042a2455242550010e999212aa10839ca61b374d2e2590c745fb68a163a45119a2a2044fb27763b8fb43d2f65eac1fc5620c57a27cd00eb4d0405ae8a833392ceeb642ddd2dd5648ebd884228d3d8d451aed7a45bf7899bd15c2f12151d79724e344498e876a99bfa34863df89e16ed42553a443aa86961851aa324544453245398e84e66bc6228dc442d7daead119d6119a215844450aa4f08092ce9e114133050b20712891a235edc3851024bd3da0a47b64463a73d2dab7582c042c2d738c3412e7389aa1e6b4040a234c2843760a43c0769a99a0dff27cb5b07cb563c28214d6be7e455928926936364494c468de0b577c210a29844849c22d4fd4652f05686348f84191aa74042724fca00a42da7e472a8e5292c2a0995086fa4d7007d512dca123f4949294a3e529a7e9c9a574e3e8a689c2eaed278800d9445d9289baac0ceefe8eb65cd2365e815b3c262a4c60f4319126a042c90455902d4f4cd056e2f996a7ef48dbef68beacb6ffa698af48051c86b4fd87345f2edafe6b7a32619cd1b724af2ba8648b1406daa4964cd18840000010000314002038181088c482c1603ca6a6a0e03e14800ea1b4547225ccb220a810328600620800000000000000010000642b496165843993fe8cf9564aa96e16a47e815ac11ea2c6d8413bb4d009908318f9861ea5962ca0b78d7bd399135b8712f3a380f34f7ec47c2de345ce09e4f70ee25a5a7d73e8941da6cd406f51fea53f63c6c50159b30631e8197006dadf709503caaa58c5783bfdf30e80b0887e4aafb0798e22a13f4476852649c538f18ca47092b8534d3826454954dc889b7113dd04de50df942184a4103867aaebc5bf3c7f39544b9b5d4e250a4552fec1f4603da6254732a3e8a2d71ace87addf54a0b60cf8a7f2fc5f289fffb764e328260868c49123a5efbdeace774dcc1cc5b52ef8ed0bf3b8b867f7d2fafae8acc559caaa81f12c0c012c7e4ebb164c9974c38b6d27fc4d93fce983a3727c52a944e1df23fdb75808cf2d368063c24f81840bb66100892c06a02682af70e11f801fb83cb7117e052de4f8b803eeaca6a52e78ef3d5478724393ebc27b2350aac57ef17fbb13ff5bc458fccfa10743348df042fd5fffae9cf9a732e199f3d68c0fff14203bac321938e3e500bfc6e12158b7c96ab0c75b570c707d469d57259a18ce69407e549d246c6816fdcc377f590df8d605e0ce8163583e3cc52a10ac636fd8d7a94113c778e5ad3143375c2feae57a616faa96e187408f02c9d5933c92e8af0cb6459202a0375510e1428a9d80bc48b8e9b18bb8db52e818a0d1901047b27d4be0878bc4155ae5796503d04429a5c1f686c4d3d693eda36f072712c2dba859a462f02588e57ad133e5c3dafecff93920067b9d3a2437e04d87594e91706cd7531462673d9dcf2b95ca42017407e0861838f8d7f509e6c538e9482bfd72a8cacda471af996a7b587d145e7cd3f4474a84f0e9ef8cececedafac23d79d5d00068c9e9b7938e8941d4c731ad8b996eb3244f7e15fe99131ae819f00d00310f62e8c80431ae1e6a84d720fd5fd99eb787a04023ea6b6a9b6a1ea98390d72d3c8ce919a1acdd67f2b646505c6c6a63e9d55661428b652665b92ee62a95590169ea4f87709a4582441669456de28d118e16c2721570adeeb3b9aa63c598b4fa9c98b7536b6bd827c632dc604f6934311d0ff65ce7bcb7df8f3c35e72c48fa7443f8dfcc95d572cf02cb401d9d22efa9aa0888122023f2b4a83e38c55ad4236e8fcc2b0674ed5900432a92d428fac4132427230239409fd8792dd73f44e807a2a45133d3cdbca71c19b6a43bdec482899f99c3bc2d4c4ca8c508df16aa134088850d4b4f8b99ba5d8e1f442cc16ff1d63e2b31b1fcc6feb664470963c2d0bb5bb7dfe9dab034e176160b736032f5c921528c3678850631c87b8955ee93dbd864ec9dffd38d290a58cb9ea92da36bb564af7dc7392577e78570b0c4f34b446886a87e4ea921b94197b5d2ba39a244c097fb690816f4525a087fc1d4c998364735d6802f5d7cf0d8a3a47fc0a4a8092a7d65be9e7b08e592523a8189a643c8055d73a87ebd0b2f441f670771fafda75b129b6d4443a09834406e05e1dbe17298ba601e2702fb646924ddd72ce7b9081ac8b392e2f54e6ba197a4017dfc5f35ba13dfcf58ebf203bf4089ce19dd517be0d6aade0cd44707d5cf8bbcddd37ed059bb8011332929fc8cbb7bb88d664d1dbd06baf948a8c8883ea5e89885934b368af120f554cfd871a0af68a409a7ceb66958c7a0db377bdc4e52d3666db98048e4ca956dfeeb908b8f64ec147e9673b2b19843800e875bf3fd369c0663862b370f5da382ebf44314aa0ff5556d36ea9a6f7f4527ac7e45fecbb955bb58ad1a04ce73842176caac45272ac4d41ecc0e51d22b55beff10896b6436adbf13334bbd9a47f88afa9a1108f6efb41fc9598ebd4e44d259a5cd22c6d680f6c5dc1cbfae91a2b95f4a4350d6c9b12a426258edaefe5c60a69f8dd7c3b8c379c65281eb6c642bfbd150573dd506242ece7e44f9f564f625853cf119c707ab511ef0d6b6d889d14c41817eb0ebf175c30f5a194330d21ef8aaf94b3b82ce0b9c86916c56738c052a992a79d9f8c4f0362f35f68133383f1ec507a3c9fa698a5e5a0077c7acf3ae63fe705798c34658fde80dfdf81aa9d9b2c555b7b89454348e63a81e1c8b63c4b849d12cd171516982aa05efbb3983ea9b554d4a0207d28cdf93ed48d8ad0b4c8038874d6be9e4ae06112ac83573e8f990a451272fac7c55e9aaa78dfed717f414e951add394ec844f6c590b83a19f7cf4a66517c578e9c7cfa3844d7b7d14d04839d18d848db4e27089a4235c00eed5285f4e6a5ab7b7a2db1816f3072b182c00e7aac855f89aafe91606eddd84be4497e995c030aba8eb4226085168ae5b4fbd782c9c8bc55d6e8813322ce85419d15f7d11c6b9ee5a897cd36d385d5561b5c381aeea3ab086595d1748512b06d6bbc8ffdab1e3d0da827337a5504f6859cf09bc31872a1a4c2acbf1ca5b6ca4264ddf9065c1c4ad5cea53bca8d9c723f87bb0b03dcf43f5d64ae7e9b7fd675d159f15cc363439d1655b94dd23ee94afd98dc6f891c96c31e920186eed041299107592363d2b0273ea071e84fe68108ad1c6dceb001951c3900d1ff24fbc84316d05fcab21149fe3355a02e6a80db21f277420e35b0332dba6c700bb93588a410b7686453209ee93b745f05b3ced485c211c8e8dcd87b9b4eaf034f00256682d2ff299bc44b31d74ff76f4c6b7cf4d05967da98960e79856f43b0068630bb2eac178ea084981ee8ebc1eeae60bd1b0a3736efee22b00f100754b2bf6f6cf9b15c869a7f1c07a8162f41e5b58bd8a042d65a1235350a3f0842cd097fff486405ff99c7ace21aade89c1b5caf324d594633eafb106d22566e07023432e6a2483ef155438a0480c76241c65c493a1c3b6e71d0848e7c78108fcff2eb4c0543f940beb22a71fd95d3cc0d4fa6b38762ae0ac50e6eecb8dfc7c2f04437cdb46aff70108e4db645c6638acd348fc70002e55dff023b50c016a80bdf786d8f22a47aafa1e5309439047c0284566578ba4debb2c6e64ddcc0dd0b53f3bd33d684fca8549b4cf16c1f19512e2661f9c9da67245866fc1bd0de7bda0168e2fb32b8d520c61422d42ef9d34f3af7a3b6f1b30d152508cbc7244a45a02a16888ae2927827374b9b1345bc18381d1d3519cb291d6f7aeee37dc10b0937544d134a403bfd3c0a9a1dda2baebbeaf3dc3c83b6769721b78af2c796ab2c14b0a2a9bd04944d8282e6840e7b3585cd595856a60c7aa729b7a677d4d915d0363a9d82496d3bf0215f7d5430702704e99670438ba32061e4609fa4cff3e4aafc867c360725a7b571a9c77ec84a39ff7ad422cb4e5ab0eea0434ee422c3330fe987368401f24b5199f6f11c01feebd6be3d723634223b3210f4bf482a680259902aad1d9900393e83f3972a2554c7559e3379c1a12e187097a5b5333c7925294e55cbbddd20ae611cfba857ea1bf08aadab030a3c319f0f8aa6e084227a7ab6ba749557e9f3073ed6a3d7dfa1618cdd7a159cc367e815232108af079f4d1cdf3521e1ec96dcc841737fd1ec01925599553d0d467aa0fda30ac9c4aabb44871d142ea1d1c5a7cce8eaf2c1605326cd640b354e0e309d54c83218fa05213ed5883098aba1ca95bf7efa47f354f11f06b47b49ed46f45f0c6f765a9be1d4e7313c3b1f86e5cc063483063631511dcf43b75b6902d15f5e4db91f78f93cb8384b8c8987539a3b4282f07c8b81495dc31493fd8387e99bd02cde5f7eec7ced7abc6f526e07a9b0b6e049733f57d80a3560a4f0e649f9a8fb3f18dc7869150949e4e50d497eeb4fa9005ac97badc964391d5963eab182d05be000e33142f9eb540ac5013bbb8015de94ce87888f6c5c96527ccbb43b4e986c3ad01b0977e874604a57dffc58094f5b604082d655bc8652d0e168d2b67d0e5741c63f4f36ce89ce00ddaf35f3da11fdfa9a8d4cd7f1a5d717ee5c7fd2a0d6c75fa0548843f4ac4770e7bc1ac15b9b5d55f77e3804d04140477f10c10763cf234d39a5982ba9db120aea33295e6e6e4b4f3409d9a83dfbac64732071a3ec344c79b374984552530b6e96e74fbfefa7f8caf2f4fd561d188ed910195a929ded0b43c44cb9485b25ede650b173e7c2381157c02a8c21c24886b316d546860277cbcaf203e4a6072eff917f48be3be416acb831a42c2c133087f74272f50507ab8d9865c40fc6aabf136d9294ba9160b1027887c0fa743a8de0dda8c541f454675a501b4081e92111fa5c61c6925586c3fc972baff572a555a8768280744ba7d0cc58dbf7aff3ea97ca74ccbc343697d6b90e5dff8513f458acaf9970f0807b34a8fa85cacf95759f15b2a6241d5b5e110d4da83395e6d7a4cb14f601968250869489b652e41acb5ac6d41ddc98e533c8b06c7a0f32a3730a9a3cbf52b821f31108704d0cfcdad48c95420abbce851e5b9a200e29a8a2ab8a6e6277369737f1611afeaf1369219b23789cb79ee1240c1cb198fffd96661f87e0b6da55c5aec5c8c458831832e83f4542e9a8d4c5f9a3f7200342b51adeb34560733fd186786795b910d3b31469fe45a501f73fe8f34fe7249aa5f27da32fe8d8c09b3063e5fbc841a56d2a787e7c044665f868f14145b1e22f13ad1655cce13eb7b5fb1cbfe22bbf316517703c6a2ecf4d6991955f2d8c7945ebf9d6331f2e06c5c9826abea49c3ebdcb89802b39702a4377a1da2f4cdba7c9839b1d3805e4d6874405bfd39576a1e958e95290eb56d07ea30d4dcd8b6ac868aa6d8ddf2cfda787512e107fa7c5a87290d1008d8c8b0d174e07abec847ab61406237d63589990e6fb2491b3bff275cdccb120d140f13851923323d715d5905edbdb5e97674b8c3b329ab2a666db518fa95e61f734c74fd9ed4b6e33b9882409c9d0162c1e2b4893d1d8029351c2cf9cfbfff3f0dbe98f060731b40124899b0dd80b788aef77959cd33de1285c1254cfd74f076a05e9173cf52668c24566c48ed8e6a3ef2299f39971b09964cd14fb369621667eacb899523660327b68a8c26c8eaada40e6a24b775cda26741854e235846b8ce258b6e32f5e052abe0cc6a472f339d04b22a61b5469e916098092b65d0af0a10d02ccf902be5b1122b69a148f0d1e3a91935aff73ab1aa521cee0b98d28d7e6f481088d6c6d6f268f0e44d597aa60e478d2968ba404ae78077c765dcf1428b8309599eab72e93f9d4f1867abb9a29562c42462c259a71e4224ccc81cea9fe1882653a0d9f36c5d7ca6a800a3e5583649318be1679e8e7c38317e9f6b24b6e111e7f549459ab3b4c1e48e30326d75e19de940eb9796386c66bd2d985d4bbcb5cd3f745287e9fea3b1269a9112735b24f774038f88314ab710d557db3610b8f4a668020412692ae3428995306dd1ca55c162a499d54dd26c47b36e3a280ae0e2e3bdf376ad339a00e37363089c0989b61eba02610fa3a624a17423cfbe7833edce2410e98b8dfa33026ed51ca74f75e51e3bf7616111040f4caa97f62a05ec9f4d13c417e10ac98e083ba8a54cfcbbd831b28ca699bd5d3a0eac5cbdee884342f9eb3a3287cc26295f21021084452f8b900511de62ed3d6dba0cedd72742fb60761f8e221fa53a537f6d66da2fa3d4cc09fa97675fe178e811110945f0df402300670df03e8498019134c2f203b109d988b0482f56cb2ce15c41480f212f5e1742fec03003825484e33b580523081c3c0004e1349d2a079667638943f1ec2cb03ddd676c8856c0b999ffdf02a2a77cbe48e175d0171a09d58be94dd9cb793ffea7da0bc1f18486b0060258cce21dae06aafe4ad2ca2c7382b00c15bdc53290d1c1e9425443af58d39588c584905cc7210ebb9b6fcce2d07694151b949146a3f38b055d13d813a284622eb63762291f60d1812c1929977a00b721fc9c1d62afd08c0c863ea9bd4450d8bbf6af6fb74bcf0213b09639c75a61c3d6d5b8004acb27a9ea6756808ebfbe45c15f4312b9f270706b20229235b1cfbfa3c7347c4fa06539d0db46eacf69639e72a135bd211d3d718fbfcd3d9d96c6242d8193350d631a43ca0d4f128f783301db6faecf026b52ff1c223256bc9102ff03f47492a2819a36497a786331599e1b23ad4d8fb5222863fda0262ef975a0fc3d003399fc3de6cb71e560d841e01b75db55d646f8cbbaa61ac58e496996a743e0c0341b5a42c6ceba71672f7e7e8547d8e6674351dab92eab6ab21248d443f49ffabfe819d161983b2da4dcabae1013ed8158a46062b77426e654de20160343b646e808e7c05e0f21a309d43e09d05fe7d3d453006b821b93a96baaddd158d92a542497b3366e0bb69211a7ba8eba08c2f0ea6211e58edaeb7ae7c5e460689937609f5354349292c7dff5de35bfc41a73602543a6a92e41004c27da7ca51e14c9a84bf3dacba77260784437ccf8a4061523459947f15926f459786554db0d8a8ade638b547240e1a4d4baa8ba292428e3659ce4c8d3ae8c663f0a8ee0bdfbb7ad5e1dc712e123b940fcf1581f9c023c2bb12fbe1308d4f07cd61b886cb5e1c1894b3197b283cd6e47ec838f79b906287f6d9c32163dc56cbc663c5490c16b1098aae551d84a9abb4c001754b0c3f69b1623a2760782b8a62b20571b34ac600d32dcc6d79d40f22ef0b5448a69f3a94807196ec94a40bad3272937c87d8a80b1816359529cd76733556272d90f1ec867c36158b11aadfa0e41089217b890dd834287b1a70e98e53ba3bae4a4c4731e159e500341151c81be2ab071d6755d1c2a67b050307f1de2209371a28bda12978c6ec30a9146320d910cdb1ce464026e696851b07966fd04f787793c9b695f4fc718767318b1d67e7a22285bd1ebf693c433e70048a6cac9b84dda35dbc5b9f3a74b2f10c2d6098e8df39c32056c4537f6b9498728dfbc1d45191eab761313a9e86aeffb58a55518a24619158b38dfa54e7f48fabe62d3996dd3734bfd26e88901f2818f0340b3b585b5456227582cb00385bce2db68dd0b35a8cc71f1617ee491d9353054b844833c6929732da502cddd161b55b2c3cc2a6eb6663f7580b10941490b00485480070e25bd230161e990c19355c77238efb6db28c64c41b0aa88cb99db02d00da2a860171a4552f82a79914bc286a9186d4d27c2b90649ee81746fc9f2f4a40e3fb30b790b70fb4848f3d41534f4da550803b99382267a8154782eeef49501bf0f5abe132235d7c22bf0e0fec4be02557e2eca1c64c0cac2479dca5096f0355f5242444488dd335a32f1259935d979881de851150b850792c2154e7d25b15b1b498098bbe69b028c29d9266687bd7345ff6bb12069d4c991493bf78f85b52cb446de89930040e03775bf6561936326f7272de12e104665fb739c991d5d04f2b03045982b59a88e44e1a8bd92ef022eae5043b7addd5c61e41b52e77a3b242b8687e2ec79c0b3c1e5c218884f5fb8f58280345a3131e780bfd76a64bcd2a4f0ff57e58462ea081403e48cd3046daf080b38adc11ea373061c59ec97b02253161cb7d0ddc54718dabf74272e34a4d9cacb86cb2568e76216e81c314c2468e0fa0ddf3d39999d1d53c850a046511aae512dfb881c2adc6f9867298d6dd7f5dc98cab8075abb07e012e8bc8c2d0bc3726b6a975b66910263e841c6b044d1dca24502a932348a6d8e248886d44c062c4b0396d3eac2769cca85b4e39a2e158113c0bbbd4a5044b2dab1ffec70d593c2a8581296f4feb3992889b902a6e28a977180e1838877b7dd21938d9cbca79812bc57fbe1d953312d1d750b61b0e465104baa4594fa14721a058e96049c5cff743c4576168bd4a34c8ff2db88446aa6f371829ce8619931e9192da953f76f309e5e52827ec1e14685444cccfe409c4e63307b91fd5f58ae3420e495ff79eb3de09081b905dac745d94823f99971cb75fb71c0db3afefb91fd15991fdd20109bee02fd472f903956528dd60d92bee1dea69acf174ae2da2d894c9914abe5cbc6e4e4a73ecf6347126d7ebd45622139f5b56b7974fff4624dab67a041f830cc0d183eb9ff1d8521e955be7ac1ff32ded0537ee469126b9c0df2bbc91feb8476649a807b360cfbb873ae9ccdfe17287828d290ac7954e21b795e63304d6e5f75c16c0fb15e5d8b47b31df520181d44c38c103f0d1bb69c01a736da9d51fd9e5773a7ef333aa7c1030afe9c7f9ae7eaf12ce4642672f5ca491188973296381d7e5bdab25371e77f23fa4eb3517352fd3e2a7c7d6d03bcdb595d1fff4fc9d1a7f917a8e275c5ab1021483bedb73b30f5b3c6e6086b4840fdbf900556fc57e9e71864e80e32cf49423582a0b9b3977a7ee6f3067083d377299867c988712fc68e49ff7807016f7e97d412226a16cc0daa4c1b9b0572c023b58871a624a4571595b1454a7d3696b57ace58b2d325af7f3e67a6b4d38ab7177e0d7a03efe29ec524d3409ab7d263123512ff35815ac88620539d2cd132fddd7628778ea9888c29696e08367b1b1b295d83988d2cba39429de2c8c2685e3276a1cd8db085643874d2686d6769e4bc3c86c9dd8eadf6c4c49c766f796ba403c19543d8f7b8b6181c9d9be90040ab19292be159174af6020578a1dc4a1decbe22856cc57162e5723953cf69cfd0178a35515e93c263242e24c94b0785220ec88febfc21409f1b18338da85154b49cf6a0f72c47d37d0ca42618254ccdec1a2cc9897616e8cd6844c35a97b389c78580f3bac8cddc543415cc462e820095df793784ed8a83bb0b5284e1e28b922c55b97ebb3fbdab0a5422dad3e81290d36966629b46ba50bced60e17ec28c81c3afdddad7420a201206a64404297b46b99f074637ed172774355b213bb8e2ed230cc0885e65646c0bd2d2e30a8ada9af2dde31108c5d0fb87ef60ce1616d1f65694d44d113d968f4a1459cc984419ca4df15089614d26be10ce73758df048bb3bef5db9ddba6a530856349ce3b1d8aaed7826e81c994b24ad92411b50fdd6469c1adad2b30151eeac9c5ed79ffd9a82e09c94f2135c69872463058045d7feae036ed06221418c70e25956b5fcbf1b33a328197f6b16f39babf9a1f388f02407c56a74c4cefed7d4a3ba42135c3c5861b04c3d02ce8886d6a6bd34e7d934758c62e53188bfdf1400a54c6c8aba863f94a2b057396c2cf0326304c5711c72a81c21a02c7605579e17f5f1bf919d1783ed0f808e2ab9e4b818ed50f2eb7b5a4fa4d11e51593958faa06179c2b5825bf97c829275e861b82e92bbfb67dff4e546589e421b95df4178352520a44e5e2900fcf889fa96f876e4bdc895f6ea8be600162099a93f9e8b65edb9dc786c0c9e770d9ef05c5520785a6649475941fd0481cb0997620fb53d8254953424744705c28908f901890ad3e5c5c814762408bbc7a5594bcec932ad38326f0882b55f59ea12e72829de1fa908a34c6a57788c4362b41df40766992a3231618be55f4e000213b938951e1c758313127b086b294f310ce541e79c78e2b4ba640e9081d12d00616ce1f06c6a22b1c87dcd8afb84694918fda536595480136e664556227cae847dd87d8eff7e53bf0a364061abf804b16122983aefad802a011091b0f3c7fec88cbb9c539d6861ca14d37a400913c3b25f62e6e7aa37f7447c66edccf016fcc67cd530ee4a3eaa7b034832a4d29ffc8cb0408a80f11daef94b58cee3ddca7967b186f0cbcdd0162d79c4a3994e88298e9627c8da63165576cb21533b8c05b2032d9e11483402280b3049801405012064e6805721a0e247fb30c3d7bab9b7218bd9024591d839c81a05c848c7f076b66085e29fa5f167a511fac2c91280e8931b5f6d2579de7009b702df91ab976d6421749c93d2b4d4db79d0c57c55f0de1712b67912e334191a26685df4d37fb9c0129d87c5d004611070255a383c4d601e623e5a42a142cf874914f788c848ec43ddec63c603e8c087fc2b1e846f34a6db3b6c5d444cc710b296b003e366f57865cc096533222d27e200bf0b5adb98ddd55c08bc9629922753e0600870f42b72a225337d6f1d4fd8a00516309a58710e15c355959bc572d133401f8e7041ea13e75c0a7c8f74bf64d339b3ca738a99a17d4b0ecaef968103a4c7d8e6dbbf51b3aae162c0553f21820ebdc10de332ca729f133a7896cc4548722a2ef6e9df53236621afdab3867f62948a7c42e0ea223e4dd28fb8310745c10b004cb93fd3b0677a9347360518c66a116732a68d1e07a9ecbada54625e422aac89e5c45d2fcc6dc4271e46d7a0234a4461550d911610b45adde8e4e9b480d9066b9ab2a7df7e14d74a6956df053c7edb964bd05bf6a5963b5983e5f37c740ad86d75f252c8616f6f8945e5ba9809e517622f6b51f91c12dd16210c56ace43b73d0c1fdd1ea4f24e0e494888e2e1ff6b603673e82a4e19f811925ccaedb532ca488845f237e04532459a6f7f92a2f81b97a5c25565a31d6de5cc780ad76edf4a8f88a5a792480f8c149d77f94eae78281d5279a083f07ced05a432db372c61af21f01b391e6e3d6aa78ba0c47837b0a0275e358b18932855be39faf7828b971db733b0ffa55b72e30e74ad8a78e44119dfbd98c09986e30766d50b7c02889e3b3f10d4d1511f41b342feda6092694d6585b67d7ab92ecd40a4724d1e61b842604373be6c953ca9ea2b01dc1004e95dd47970c9529b21d0113c772d146100018ad400025da4e6d8655fdbba9a304fff2d4d63f7733479d8d8649bfb27041026b256223ee5aeade3af001628f365a5843e4a57a7693a8e5756352b8190eaeee36cf040a222322ad1511d8daae8a84647252a2a22511d1995a8a88e44757454a2a2221ad591a88a884a745446a22a3a2ad1511d89aa88a84647252a2a22511d1995a848750075879c83c57f8d9bcd5c6ce42fe729ebf74d03b27163563c964d40234b47922012c8195adfd48ef3bb38109ac189fbbbe218a7b6085d1965c83d2a838dcdd0ac7e0d36c15d3ac65313e6fa2e6fc986ca59c5c004f33111c936249f1fe60ec269fff321129e6eb1466f987660f74337f63f891e3a73550c916a4b7ae36ee4717cdb6c0757c25b3e5ac496453258af4f08860e2f2b93c0cb011d1421aac609bef54dabb82e62ce27cc06d45e189ed7d5ef6eee1c4e242187c0bdb09a838eae2ce068cecba4c71b6a8db400095ee91dd2db4799a9a81d1c5f51ac7c19ef07fb1376e3f41f540980dc0002b13e3a4e2c7e4d29fb0c93623216c4966873837cd23c272cf845d0b28a4c771e4c52534d43957c7313ed0bacd3f027344488d5ab2eb7372866fb05d3268e504a7e315b35cb296f35d9c07c23c70f7270e3f1561f79da94327f9d3430353c761ac7d521de43469c8622ba35d5c5b7b42cc29d347db0814afb8881eddd2e9ec35281243994703d35c0f6ff0751c6449c1c2714d6385c23c559424e9b7dc9a3462f40b8882f8a0082d31d0e8028a47166091a5c817123d6098643bf8f2812d74d904fd074f4078e5dce8a1647e1880d2eb1dfcc3cfe10f04332828d61bf408f455a5cacf4afe06ed19d3c60d8962ec157a547cc436513cd27836102504311e63854bfc6a24fb898d54ba2981acc21d6c3fd340316ac24e7aef260f0294f4e9e1b8a4e3eef62da0a806662caa00d9e61102752ed264710bf4b4b835514eef56247d6d96d1cd461db68f5ecc504d19dff1f9183a4d2f0332ea48c162883909609698abe5060bb496722be62d1c26aadc19523fa32f66b6e208f047d32ee09d0c3dad6720ad83b1636223ca2592b1847e4b9c64410788ea85fd276a6550652e22d3b5e63eb4053f9a6c363727198a3e73028f313c6dd9e1a764226b68dfed838a6b65a2cb07161ef20243b68552e142e712249f956c0352f4f3d59db86fe2218bbeeb2c7a4269e9ea9055dafab8891d23039718cf023a522fa5ab124d2f9b981d1b0c8f71a1913b27ca270809c2e8b8caa05772a38a69f4f01ff77b12abd64c6d596628b5d65eb0464e94cd109ae02c943b5f6590fb3911543769cc974b675d275b808e2e81eaaa6150066edded85daaf89f8d635130f922b520d9de189a44f75c7a2842da6a53f5763e21d6275cb78350e8d02a632a26aa3801f91de0b218b545a1763b61f84935883185f47ea4b37e1e1fff8f3fe250f0ad468fbdbfa6dce8e2f43b6b5f15536039f014f98e350a190512d53db6ceee4440f68d950c7cb4af385f8899a7f2327bd037f67bba28aef3773b3843c4596e32e9221e56bb477575fa72c002272e42665e2c29990686ff69ffe51486a44bc21c8c701d245112a7178a04a9e92349a5710d169171920a681efa376cd4d780e07f3b9eb60bc18445112025622de98fa894972a5f7a32385b147235a37001cbfe11e50189f08573b1383f1cf9d4c695a5b70c3f179dc79b9717fa743b2df446d71f8c1312a169e998db63f178e0fc36e0d78b4a3994d574a6e2ef8025382f95b916bd1659dca9fe82b3130c0a20542ace907ea7cb000dd4c343147b42f603c2175760b16c070bb6bcfa66d4ccff4af9d356381a74ddb1d32e66a5bc20eb4ebef8477fc66df3fd717f939992a6902ae6cb0bcc92a127366f1d6247be59690020900598c05c4820198a90c2779d4d6e36412af40125026fc59d20333d1e1e39434782063b1c141f30ebb98d56cdbab62677b2519ef4f3403faf9f88c9b0a39bc134650c81806e0bfa14f8f9d462ce3e13380973fa00ad63998cc132c8ba1929ed482a34d0333893313594edf8bcd6ecbbd20bd07dcac702b0ea6b4ae319c851a1039fde157b0cb58a03554ce16fbcce629fed13f0d86698a85f9116cf4a8fa9283b9395b7c4ff0aba1c553ae07e329b26959a22781e8ea164f462cc77c1b5a29c2c60384ec2971a02aa3b29b39f83110d07156966476bee76aaf282baf6f04e4f723441c01e8a8bdf99a4c7a025f11b8390879d1191f748aab4b8d6cf5468e973bff7fcaee076a8ef8a3f40215e2ae7cc54158f17649b855838e849cea183d19c1c6488891613231f99228717aa3745a86e3989f1b830e4a9c420b6a94afe15e2840c17fe4bf25529e44a9e9578183fce96ea7d13dc77b172c64efbb200c856bee6265b6d663bb6677d94356c1f639e2b0e147d62df291da15548f46208acfdcc297943d9c66765a028faaf1572fa9c97fcf483e15e0b089aaf1d2f1ce791a55b37e6301b2fc1c1fa9699493ad8d9b586e5727873e48a9eca28bc2a08129f70aee9b81278c9668eb6d85347c7c81cfe4471fedcda1012936f60335a98095f339d7ad01564e578dda9386331e99d8327f24315c06959a4c4b459c9f0fe4d15d371891c923ef83a373047f4dcd5997fee160cc7219ca1992632487d80a2d8536d02c19c3b33b19f38539742bd2e8d130179f92ada9602ca9a106f61d188670b49621d2e3a017af6ee8441988fb4bf3b4d2c7ae2eb535326cf0d714068dc2cf50c0c1b402ad189a0b528fe455b12abe8ccd7b62f1485d231984a3ac2a7806d640a508c255ffed5cee0b410edb9661d962294a44f6c8c2275b78c4015070449c6568e918e05b4094c799d31c773abbfe60633d2e2436a5b8cc565c8f788383e4b8e9c484662920cd6fda25b4246b89c3258d259b3e00cc687438dee9a283aa9451ac4e5f54bd46041c0cd771f45ce3d7f16532ea3187fa16de4c0e58fa82651a8335afb57bd3ae22cc46b5770ae75b921e5a684e8a53128daa5a8b991c55ea5a142105a50f9e087257ebf7b22dae54e9dced8710512b601d423506831ee3e0a10a9aaed19aea94f87b5c1dc203832e266379900ed4a6f816666721691d3d80e40d7510152070493d061af847a000d7f10ba3326b53f20f451948c5608f23d1d4ec944ce7c0bc4ec60c18f7beca03b6c35eafc212d1ec54c6f9a31f9d588c85f9d08bf88359fc926268137045a5a0a9535b30ab2b5d062fbc5e790dfc9caec4e84ec06d3c9485332145927a0d1edee6fe0f2f7972754b0d58c79273e982c32663f33880932e63a50503f488a65caa00c1676dd46367b9f100db06bd7914fac89aa0863c8bbaa68107fd10f9c3656cbe97480e1d152a70da575d691a730f18748eb77b7bd1bab4be7e0ece4ff41b99b121a4215dac089b0e07c3e9d9a34d07164cf7e04885be62ebf230ac81522f1dbdce6d942a35e478e339065c5ae44a7dd6ec21bd8cd190b2f84b24598ae4795812b0ca894895c670646f692157e70b11a1494180bdd1499c619e67d4911c0f6f701a311025f30b133c4b21e7fd750e8224948ae5aadb5e04c30490c77b10c7583bd8d78b74056b207d715f78d0eb0899b82b9ecf8219fc4f4d79a5ad0edb78c9d0166ff635efce7e9d4e72741106db68a88817e3c73443bb265ac9e691aab5718af489c722346a40b5ba0c32f1a21189e12c34d8db4941524d5e5a6028edea5131411c58b68a6e49d553f9827b7a11bbe7768d052d960a71b1be156249234ca88cdc8e62ac13054469d190c8dad027de73ac1b4f2025568f94d242d745e82d60e16de6eded679e98d6dec8caf4c7d2eb15d4e9f5465c4058b3183cb2fd457d8ad8fe6c8700d21a2790a833cc9ad302dac568945da316e27eadf31161885e0415042ca6bb4deb1c1875d8b3b637b00be4635df9f568a1194eb72aa2626791fd801f02c1ded67fbaa10384ed89d6df6d9dc72505a049f8d208da699d8c5422009430eee9a5dfa48052c8ae16c74736b329421635011a8256be089e885eaa99ec08b6b2fe00ebf98b0a918e00142e4445e719c62a86c2555edd6ebc613150997072e7b51d584bbf29c734e1ee0143b87b32d92bfc235bd40a85260dddadca473b1bd5dc15626208113211165c4d2988df90040e718f9200855bd535a2930c0a07f83130cb9e2852f45a06bd9028628f3e2cf678bbba66229757ae53d95ca845b252d5e1819d66dee4c0fddbafd5484cddacebbe826ea6614506c31d8ba96b15842f740b6505418f0b820c734e08c50f98721c0200fde40108bfe03f67d729ea1d2067f8bdcdf7c291a4c2df2f7eca5223a142ff24e2a30c80ecf8fd6fb03e5957c54bb4ceb2480183ad59a03ae9335237d11d59777cb8a450effc26662ee0a8601f3870430205df873e3c1bb7d8f5ef9a23098e545bf706ef054859572f2ede2219f43ecc316ea28e44ee120dc5e3342a652443e0fec609d93ef2ba211c41824d843a5dc9b4663232284d2a4a88ad01670e9013606083cb25522ed0c636fcce800534d69a533b2196eaafb25976af142f1e5943183c15104f2a7a0551bf72d7f23aa1d263fe4b716a710a2492395d3402a6f7292e9a96ba595ef1e70783b10f850a712fa002818c90196eeb4afd7e46e9b220ddc1f70c7f3d6b38192e218d6e2c42eb0011dec48a0985e1764167c0853d9554ae18f652e4069bec111beaaa78e0661b3759e92f2f6722ef75083ae0ddc56a2b801ea3c84227adcc5563c8b8e45cee8bf6342405e71e0b1bf729632e5ba0b46418f0457775ffcab9401f10b216bf5558a0ea5c97daf062ca9aeb6261f46f7c4285f964d972c058345d532762a9ed6a26ac726f72daa26afa1fcc8428c968f1d526854113f7b6cc8c131c27510b5331095d9aab2fe01cf0a123fb48182b173a729600f9bb2cb3cd3377634e947a304b1ef053a25da8d0a45e25b3ff4c86065880f5edd1d934c7e427c59c343824a837b0ba5603c2be6e00cbc76efbc2f25c6f8d19425674904bd8271c25cf629e33b6dfd99569e4f9630e14ff0ea29c751bd2411f06ba52b27389e4f3a3c26e2c0cc3566b52da1c04835da8e88b70269026717851f9eb7ad0bab0117ab931f8ced4f3851754777c303e11594ee08ae78c5bee8d32cd0e39b4ad683db0f55584ac11680da75b4713901fdab617e81d751239cb12226ce091c84dc381df8ec9a959fbe15209a16bc5bec83a621e6de0980e6e6a9773094bc726b44dd92bc3305ff4265decddb035ab866ba87c72ba795d5f79452abff95822ef6ac12083463598b6494056ebeb12577996fdbd02f9b542a51be66f6111803a1048f6ac81d4733a09d81d884577a547dea6282c5c2315b950268aa338dda34eefb16631605cd0716a5dae385d4b15731edd7f5fc226a2726d827470d6ec0b3443c30cb73a59550e1d0d2c7e2d840757f1ab82b0b7bfbd716c9f7ca704898e3f1c1dbd6c4fb83547cf1e42c93e89437575ea3d90f7d301399d0f98ca29ee14a953ff033342d84ba6d40f7dc9f9491bf8f03c53cc19bd2cf41832e78f337a04ab3b4216e5b85c95f56be56d08a450f36e0b796f82004a4760eda3aa2d133d82b3be87b30f1d69b0b30d719af0431f4325fbf7bd387f78e1befd5d669adaa626ccd02ef4982702baf901e529992b57dae0c686fd9f3fdc02a7326dd10b08b7f7980af92b14eff13d6164bdaae45ed4bd75994557112b198bea8b08f30ac63b9b2e30e680af61103d204ad8ca984a2b254c5c6de2607db15368b2a2a0e71806c201f8d0f1c3d1d176cf915f0b91b8393646c87da8b3597a1f90152218f8c485a2d1c944213c89f9a1228a59214a0bce210c9a55c415d496c8025894146aa84d2b251a803999209ddbed917cd17c60cc3914880bef65c86a2dddd9c90e49bdb418b7c778bdf34748abb46d050c86ecf667a768a8b3f5e2f73f34fb03347a4629f0cb4e2e8e9d514673c5757a98c31b630663e212a09df63053789886beb9ed8a50df8cbdd379a84d1190228d3500aa4bd776a0edc3b0840117a3a0d267987fbc07782f394c04fa0fa20c9470d19c332259ba5c8fbf53754a8714fd312215fa5e5cf44500dddb47cf01d5ac9acff300189ff41a8b387b4fcbe2f76011e58fa1336b4122c5c0b179d37bced26c1aad82e5c4272719a4e0bb977208f654af816eeecf60867f99320fa75da8789f7f941aab9290460f2a35b2c7f126d9cfb49963bd362186f868951bd3bcc12045cee4e4fd4093e5b3c48aed607a5e604d53f4586753fca334b062d386e70a49181a29596dd1c03329308f51fc93eb7080e41783104f49a20aaf76118e5013761c4a053680e12099b037d41bdfca53ca854257fe04a1707792e023313e7d3af82a2eb0e522cc0fe3cbcca5882495432b5724f074d3f4923d746531620b82bc18735d8f407188003fa04b8af15aebf4cb0c28cecc51e436c3599e5e8a935c5dad2c0bfb5b6c56b5ea380955d39f99ffd551239cf2895b958260f2a60eb2827c1564384d1ad50cc79a667c2a08d306ecb651cb5c68c0ccfdde0158ca0d6091704ecdeb9fec222321a180f683a83fe0250ed478103c59f4a620eb59f24cb31be2532ee8fcd22da24e9462942d3ab39285831a5052d43a4a50e9cac62023a0e197542180b6a66a87620370f7076df025edae875e92133c260731d56e99b812989cb5167099911706df34aee4743a9f2cc57e9a57dd1cc8507fdf1ce3f5abf8cae2f3273d55065dfdff028cc8f60fb7e5c6ccfdb5d7f64b14bea8d7595ac73f173536d402afd015d2bef8d341c624925e549fcedb62a19c90ceb677c2dbf754d31d6b464d367a8ac67151b4c0da86c64da9d5984fcf8c3bf4570da719b1454c7da9ad6c0247c778b849314e2cd1511c471b74600a55137c2fd6a66b9c1a0c13dc9cb6347203f70f5e94019ab2c046c031feb48500fab21d2afbfb556c553f13c0eb78f0d0eb0deda50b88ceb102c0317430115120bbe09f4127fae6aef5f820e39fdcd105f566f82b02aaf638cb259a9c354c0bf968646ffbcd44218bbfc068dbd801709db5832f3597112a8d71e6613f75da5c313781c864fdbb6d4b8c580c464218de29ca20284632ebc861fdd75e677020330f868111a6a1847b9e2aca26b7030179b3f3f5ea3192527520818fa0256240624b4e26e7866307492604f6c7d3f509d47438368037d5b397a185c73e15460453056cbbaec113071181cdfbf3ebc0dceba0c92208ec72fdbc18a9cbbbc5f61b1b018906e228681dec6598a4e5dc90712cb8904a2a4c8419468b5913f8104b3c4860ca0e426002e2f0e13a92fba62db5fa4114d8f85c20ac32de8e5cd6378056e60ce0240495e0e1c2e1553c420d6fc7c640848722241022af787b5990bf0236b6d4b2cd2475f2cf1a4a5444221349bbfe806702039115430a3187ef86ebe05bb12ac6500e026c84f8149d76e78b1fca8dc33f587941b74796bdc6a5d0cc1d19bf458ffcbf684443081278081d29d38adfbcdb7102c107ee22857d1f04e3a73e72ac41d1ad022aa59514503bcdba98314f48a9e36cc4ad88afd8c0a40107545b85bc2d8976e11c9ab040d5059f6204e392981511f71f5dfe82cd42d1e4d78d36c6e31dd3f1511853e880e0a401a98acb100ff7f8cbed48f59b7c94aba5b6ced9fc2215e509906a566da8292532b1e9d2e9c69a59be2281bb41b4900dd291fecf5958ee08e6e2ac1e90e9d0c6d02e788ce253d3501f9659a2c8613d627c186900c327c4a857edc313de2892154b13a5c58e89f9448000c6d5607d7f9ec1428851dcc06062bec00cd0efc10f1cfcf86227de6541662ed788587879dd674ebe4b50d92804f92e62bb5b45af69842c751ce5fca2e9311eeba4fa061d992911e426e33f7c29c9661813b0168eb501f805cd9fdd1fd2d3e1ee574a08d2bc121e158a541a08dfe476e0b07b6c252a103d75cc94c74fb47f4577e5883ffbcb054e918013854cf11f68a58ff21ea1f5888e33242ae91ef0d3519246969c2472eebef1ce170a8050cde6b7e0e2203b21091c33a4a6dbab8580ca300c91349769ae1925d7328892ca028369d95b7a8638d51b78a8d6b82de4c2c94bdbdbaed87155dc2044215a8a1622a971563f9c8cef1209abe474b66999ec54473cf7935461a63d10ab1155ef9266494ad4b773a1da22554b40637b68b0a909ff2ad127965e8eee0f2e1f6ff4e0ae9a06302bb903089fdc0feb1456a4034fff2e34867934ceed63c80b453c65332fe39414959031430eb5408351736f2a64a4f9f5cebae9692aa20b0f7885b167125db6f4f343736530a79cb14c043c5786c661412ea11656684dd5ae42903c8742911725c35678585e6e9f3ee692516bd7a82c649f3e472a83907d346b4a427c05b407e4462872c2fbf10487ab22cf0b0e740ce9747febcfc411b03085de45a42e0722e9c6c05fae114c6780df05c33147e6556f8444b50e7ab31f63d363c82d9e7c5af24672637e3ea7cdba1e67842130b9f004d63f698e9691de751a0364f501365163a415305f4f049c49dabaf13804fb3fbf3a7f3d5f0e9751f4a639226a618829a374c487dc1a08a28046dbecf5c1dfa275fd7ede6df5218b9e67467891b16ee9ef8bf41394c749a4ae10c864f190d4429c5d5cab53b1516754f63ca047a39d02839e8f19a53d5d9ad7b6af7c2112467a897764ffd6f4deeb4744fa333be50e289a18f1b1f2f2cf7b5ca267b1283b2e23ea13b095537b9d2889e1b5c99ad7b028f7c79a6faa1236448c83d296c21adae7b72e80d0133521343427359519f045df0ee295051655cc7d5deb953d63da5586fb68312b08d44fddba286eb6937c0cbdffe67e0677562f60ab9641de08c25c8b10e629fa9083f80bd9621d3c0a511fcbd98561a2b299def8f69838fa2012fa4a72dca922fba07d390a6142c783f52ddce461e689ae9d79a80e37bf904c7ca01f87d30350e4616483dae6f577a1e91bd49ee6ed566ac090b12dc9d8371506186583545854e438849e23909a2796081ae97430c898fd396fbd71c6b74b5ec6da4686521988b49d23181ab8073e3cf590c9a106b6110d41ad467eee8134c8213b575f7fe11df50291baebc7e073058a8f6774c054b71fc5a9995f6e500de1f223a91f06528fbacf58b57a3f9b1647dac8bc82af18d3eb465f41d8542775d39111d4b78428152f1719632bd9ec193ca1e42be0fd38e6b71d824d2898195ed99a99f656c606b2a3a38f3e66e84c381c0e6c4a31c71e18597e88b49813d61ea9ed1dd1f7e373f8fd655cac6d0870b288d4f764a359ab53c225ddebebf7d3a0c2708c400dff34fd9ad561c61050b478d7083c9cb459389e21cfab73d3e2d17a37f33f968d70f87ea83530292e2627a44765315e4515017000f7de9088c6d1d44da79402ba77829210411c9d92e09f1236f33646275671bcf19831381beddf9cc049213ab5571f54e161ec73b706986afe49cd8568338b256a4e3b8e1aa5b6422edbcf25612b3894332eac5d7d66c423573306ada8dc40fc20ad0ff223fa8d69a58578ea134c9a5b167d1d0b51a32f32bc2df7e7cfb5a34b4e4bc25c7a354782963b62b99cd7dc0c46ba0cd07da9442aba724b75edf11cf3c963fd5b00091d23061d99e2981ad2fa241849f2c0ffe16d85678268cda9e7cbbb9054f68b7ba4f5bbe17826ddc9a98e5c6642e9f2c175db23f018f72a332ac175a1826480cc2acefd9a1c98d1f9019aa251ff307d79229c376e4d06fe54b7aafb8900f10274984c9d8dc7666282f42ea7e83b6895983d372ea4f974a3bcd51159d377913a0ab0856e55e849be9e8cea17f98e96f58eac26a76b3a2f45a3d9816637038be155b8add33d2f35f941f03bc60b72ae0abbef48c474f6639d0b8849ba81054c5917e94a8417f8801650b3f3b1a747d349a923a5459d8a919a2f2ebec3673f8bcf8066a961ce52b6991576c0a75070849de13869ccad46469a617a110d1fba199daf1d5c197d7706ecb3622a1b2fddca2df88923712d14a5c7c1863c5cea67f23b8c442b47927235c67685382ce282c5f4f41447b2899a35b9118924cc65a8de7456d73d5f41d9958fcb1207720b178f26b558c548210ed0ef4d7b1e75a37a4a76b510c1a999367fc956d026411a9ac66d430fb1a25c357159fb9a44751eac279e4c419c2b21b2a390511f1671a8c95faffd5a8d97fca22483ec4d119b05ec5e237c9cd48b1f8cb0165aa84af7f1c2dd8b270c2b39b80d0903389e43363b1f338cff12df1e129272e910e512002c91e56608ac5371a50f0b15ca3afa4a3da7b53914c709405a4dae659a629a254a43c158b647b7dc0871bec5920987719bc827ca69c11ad588449ff18f79d3918fa6b7022e0c4641b856da302f951e3b7fc47d0e03be13689f9cc5ea9cddf8b955977458bb71775da9e4469c68569f8db384adba1711be63d90bb45ad886c8cf4a3a45273bdccc9adf08243336807792423686cce58a78ef39d507e004cb99922f24df85273a92c23d119b025334f4a598ab976984dea5c3a78c2b37843264429cbd6d304ea86fd9fe54914a235bf76946b0d7c816b87bc6009f58583c2e35af7e8c79d41c3b3a947679640db97232b6da60442a8fc3bc053dc4201f16ab562e472928ba1a2668a6bf0295e2beaf01d838d2ff0dc948e6a8b032b1962ff8943c9d4f257dcd9c496f203cccadf91024da49e6500f5eb0d05fb7e95fc41b4c03f48621503eaccd468a425ea029622bf960584dc525f0f0555186860ed0aa07c5047220ac692e3480804715faf88a1655de63a7e5cb63e08bebe36bdd01b57e9718ae632a7903d7ee1ca5d52ab8fe028baf10fc0605e3eab926f8bd420a1c311512fe61d02462db20bc6748be270a3196add6ad2aa9944eb91e4a94c44ebbed68652f754effa55a8022183db602780a67566f1929e5f6dae10103a5ae4e873aecaae690c06e1295343baeff86c6ca0d2e5a268ce3e1bf7cddbe9c460e13df6e37e9c626d3a809b61f4b9cbfd12bfd34cc6b00d41b57cb96bd526cae471f623849ce5491952d51838b8695be37ec082a6fd98694b8e121a49e87f23a723728547feba3d7df695f82151c4ed366b452e84ac6f53b6a7060d98dca699f8fe3d530ed68f5c121436ae92c81d924174a05c26231699691ff6aa54eda1ed005e8e98c87b3cac3dc727e7c24100c8f50d2d96c93240a3318be0bdeb5606d73f876f72573260bf959bc9964bedb64e6a0a23840714be04a24e723f0e079524af0caba7ca06b19d05804d6d770dfe79cb75110b674e18e98e61d72e298dcbb95f1a655f2b92f8bc8adcbc83fc8a89b60c434ca614ea1921c7310ab3ab85000eb53e0239a5970d10c93af672e5fd3ab7d783b24789fe8688ff39531ed875a2649805313eb9ba04935a5c990d4db395ccdae36978a7cc081704c8b0deaae44d7e3e14e1663ed91e6b69b1603215ccd2c740fcf20680f3fa0ae340a3ed85f420b2366078c25c81a207c8b9209b06867aba0043108d0d038f5aa904269b32e1dd8001dffc341830328c3d4fe50ae69cb66a1114c57fa9952a14534b2388d9b94a9f18277030ad73ea9e5abeeebe46c3fb9689c74e312e375c05d24b40c6d4308e66583786d064a92aa307ddab7a30413b45c7a8843b590b7e10c784ce7d9ba42e9acb74fe2d8ef42ab6b03b9cb636734930709a247113837c37c34cbc5242fd81b1803ec8aad6599db54fa30447fba2c83636e7d02ed7f13267d3f61c98661f85986f8d07fc3cdd3c06e0fbeb571aceb02ac0272120b72cfbdf4b252a40abebee6bdfdae38c3bb6d3b9b6a4ff46e140efa644071ac8e469c293dbd248ba000e24ab6dd89bacc2734992c5a93b263be4d381243de1f61880ff31642dc32f8854f2991579aaeb4ce30f5204be08f496d48cce5ac9545fc414a5e75771d1388f318627df0f8f3bfaf04407e2b12292615815faad1070f328b1a5a9dee59c9d6b3a9cbc57c4b6830873b9876d93b5308656a696048d2f567ad4ceaf10404beb70d340942f0f684486cada8080ba1fb88c01485263ff7cffb6a31efa87b11139ea5180d17e94351c7804d41302ff653aa8458e3a516d7b01704425b0023f0ce51c7c32e13c2b4f9c25a605b5bbca1195e02539a340284f586a7e84db3ec2b67519058c594db94e148765be4742807283eb8322f820cc0dca9bd1f987eaabda40ef32e42676f64a954e38ab09432b1a0739270b9ffc5a74865dc3ba6dd8f2deb720d6a506fdac36e87c711b2b645725581f0e469ee5e1d265b42f1ce41dc175089223515a94d365dafb6dc575263ce354b68e3a4f679d2aea6520318e7a8722a7288d1ba0ef50c2c0dfbfb0b476ba09c26cf152234149ff301008b7c22a29e37619ca4171405f91c4dbf512e0b73871a4283635917a42d41e5dfe7f3c1a77832ffca3226240f93057d0f5c27260a5c9040006715803fdcd8791af5a0f8399501709e0a03e0f031eadcd4553ce34964596bc72c3bc1a8f00c85c7a68293595a1674f99f481992c3df130361ccddfb5f0736e2cb6dd414265fd23f7de583c5789a137f2b204ca2b3a9cc7caf6d5c6e3aa1c88b0c9bd178e429374dc49e3b7bf4dbecb5865d005210e223d039d2d012f53807f752074372c5c5e09ae5110de527b8d3a5a8046f56a448e624d8c9c05af05c453f41f6f436191df443fb04617aeee6aa9da32d9acfcc5196562c31de82761a82f2ee77e8ec3e70ffdcd3657f8e3d7365ba3e2735eff9f9a0b5f9cd107da47afe3d3c2f99c8a50a1582c7c8e561f84c2bf42e7e36c37f97cfb8727225788946128706a0e6f98dad6bf829cf013f960ea4558d9feef40c5c031a92d7ef0c301c6400e280bc9c0d8ec5e093be4a220b8da1dab237050ea3bfaf72f33be276cee42f40b19363250b755b43be93ac6add255568fe3e8d69f0d0b92679211a3f721f3d957babf3f9e6029bc83e43fea311c5814e15e99f4dfa0812e58c8567d81dd261b936116dd5e5dff2eb51d99dcc33b79ae2eb699c3310e99c60c6ee00bb31e0895762f20a7ad0881e20f65744a2a69309d4844d5a75e3f1c6de52f4b4c2143442f29bd5ba45f5ced442f1091dd5b0dbb98a0bd11b8b3b2149818413b290b9b38ac3174581d5ba0f579647c1ad883d7031cd6bd3fd2ddf7ea558940406c0b8660b7e54a1072ef4305c0ac3252709e9b54a49b43f9fb6ba464683f3cea9f621161dd53502768f7fcf6798fc249de960ccfeeb7f17ee9afa99642943a2ef9296dc6a028b846518e050023a77155f20f234ee27ba348552cb871dbf98f6d68890b65392f29c649e1197374a487551ad26736058d1dfa5f28c05980afc265ac7a0a7d817a39cff370df4ec61a90b2d14cd79987b08aaecebe85041b9909e31051e7406fc17ec3faedf8f097e0aa0d8682085a06b71b65f861427718fffd7a4281a84adbcde71f57ba83a6d048df6c33a2949765ac8e72cba5616f32611684c0f5f43b508a3e87b6290bf9880f21013df8e0ffc3470914e084eddeb5b91a61d34f1dab98b68b70cc4ce7fb3bb671e7bf12a7ea7a8d492f481f3d37cdea2cea8cd5c23205229e25b001e9edb4f8ca9718a56171a31a2f6eaed43f5080dafbe4da379b0d77594f1695b6190474edb98cb9405d03b535be1b400525206e849b445521ba3d88717906fcd42eea53b6019418c9bc9f24ea83f6372d56a95237bbe20f1d1c96acf755870983a8452c70493f40fd55948aa6c9db60705b953a6a7a808d22f759dfee47a23a7558d4e361002fe12225cdbb0a1ac75a06ab848bc0b3e562317253f3361d9e0fb668b9cb8722dd398f4f329dac8938512f3361cbf717fb12c2b909ca05bbd6213215126bf050f72edda19467a90b7df8ade8e0466367e6fd4679d4e27c87fb1c8665f9a7c7be2edc92c48e2668b25880b39b881f1abfbca63b586d1a91949bbd9cdd8d829d3a2621f95c8812605023e790a10b799a501139eec30821b8a35a84c48d0fb10401dd08a3212360dfd902be054e9c4074aa4e694b84b0794c1a9dd280d72ffc114e073e8ae896a7c7c8aa67d7f06826346861b2bc8a0a5c0db24155b63ca98b8254e0b799942a3cf64bf5ade381f6b0cca0059544c4879d8c901e9323e04e274fd37829accc55232ff4176c890897d2ff49e334cd31752f311cd8fbd48d7b4b90eac2c5f1c0ba0ff3e2d833a01a75184ae63a0afb6556da7d89ec68d886f7d9d62d889c98ee2185479482710e990c7668c9eee9f7cf3c806989af57c4a94caefae87d1940470fd15c9d90677e7e34642fb4f52bc04c46320504e8eef33afa669460024e87933ae9270be7a02ec4ab0aac997b5d983a623fcd34a14008664df23607482441a65e6d9770c55b3652d73828079663d28ac462e0332a138252f3144981e435418d85745a39caf44b34eb648991770eb4c3734060d07e6f90082f1e6598f5186ddd62a3f1852f0a004745855166015ded454c3a2d6ece65efb3b561754dd65e1b43f600d165c9c9932b36e5d4ad4e8582efc7fb04b19254eeda7d7f04e06a8a2edcda8a61e34aecd8d3f4c61d873a60c153358d19a0968ce712477d56d877174618aadb726012ab16c93d0f96fa574903ffb4d64457f374332a5f02097ffddb35444de2c0945f80d3f318f30e3fa9fbd0b88a44e56fd28bcc523351083cc29d83c6a6d07a2254c149db944e9e88217407b0f5bfd01bacff0d7cb1a406069524cc11f1f4152e03796cb2ad600886ad8b45cae2840f0005d9644ea8f3ea3a08fa9c0697f780cf09ef2ee401f891c0232d69037a33d27c7af7a4608573844ead399d13369e7a8d41813e71db08ee0ef8d49b9621c47cd68389146db6618c57084cceeba2f997b9d839950ffda7e81713fd67cee3b7ab73ed1b6052f7fa7f67ce0072f6ede5a2fc8bfbaefd67f2a8b788c3019086e487fd2864e021dfaefc904e2196a1b86786cafebcff996e2dc7154536fecde9b228443d3e8726bbb9dd2d4b0c511e46c705c5903d1b56ee4e9fec29e8d3271f358569002ebe3c4e52adc763f42b2c7a7bb71c64efe0be12584f0ba054251e9ea6a4c568ae90f085e0930eb02125b47236c8700dbce88cb53d07592ee4b2e44e394903c1af8a0bd80f321c5f1ef7b2bb94184c32f79851bf0617084e451ba572b15ec662430ad35c0c5258d3355e4e450c87f9775618d928b1c606231c85e7a05731fd46d4e2c515fc8775f764490ab93d43ac39a1b97c1137010d2a3f209f68b673cb3b064a5fb90724c3e840821dabf266a5cccc121eae51123137cd03cb15afe978a2fe59760270eb372405f826fd9d9c065e026a220b8477469a978e26ef205d6249f22170048f56643dda21270107f784db6cca04dc2a5e0eb44429ad2a351fcddd41c466505551180c8496cdd79485dc5e163f1d17874b5588e7f9df4780837da1d1499e1023d07812a9e61ec463c12cc2bec6c12e0f88cc12835eb8a46ab6ddc5d7d996c6ba69dd1ab014e59aaf7c05689b68352cf0a410001d9a9cfc414dfe7d3c64f904a1f0af5e31459b3c5771b63d566b3cba610dbcff419cdc865d6c029ef97bdef80d34c4fb97ac00f70fb67afcc68a4ff7d2defbd70d209172bf6e751a14c4d0092dd69086a5f0a6d92ff61a2381757b3b907c16c8db9445e0ea1e84dd26674b6fb401acecbe417a3d32e18b3ae6942e90451a79f8a7c8545bf7a9421bf24edd6845251ec8d9d673cc8fc02e417ef87820fd0584cd3e414e667e6608301070494860ba374cbd87244d045d6c7f4b22631fb1319b8171d67d3830ec8f21f2e27e7a9363bd2c4de218a26cdfda4924bfc7866647911375ffb5c88911bb97d4e893ef2a441804e2e48388b182d030ccbf5fd80d288235b7722fad87c707165230d54cd7056533b6c07603aa8575379d2ad509b660c1ed1628509d5266f4ff1261ac4b73095bdf73e592893a9b923bb87290ad1583ec8a0a1ea07faf296e6c31209aa434faf00413fa1fadfacf337ea848a18132050f60afcf75ef524f07a07cefa2359189e8fd39c8f04699eb7f1a6d8347e42b72d772440834a6086ec2ebf56d97f6b378f9ab3bde42faff6608c272861ea493fa5470836d3b69dc554cd6281ed51db800841ca0dbd1779bcfc6414b26c6a8eadae8b680a27f41902189d0d8347e8fd1bee8508aaeb6d8375d0d48b89253b9e4db2d2c10d45f8856d41442a981186425eafe4d59e78fd1571ffafd1d95cda198c3d602a11ee684e8b4bf67e7be4d676738b4952679e7285b08127066b3e99f9262dddccb74880062d24c6131376a64994308e8e546d1f5e7435a9467061c8f217feed65db0bf5b75f969e01ef30863d4884cd0fbd680557341ac3e588af788f4c4143c2af8a0d0360ee87f9ed289067c45b55bafc0afe18044e756d250d5b2882392bacc3eb307710ed4fb68d656b51cb473be0419a369bf6d7db1fb4fa46d36d18fa8e79acf254180d5ec3b93132728394abc763828edbf1c85a24c303268e12b5710227e29b247c210360bf00c93bfec06e9aa8102edfe090b6494c1adeb27274cb1b2c1df8ca4740562d86a185c126211d7a3df6c443f83e31d50ab24a2e7854635233da325d4f331efc19f725a210ba09d6541fea0389aa4bf81e36f9545b9185f6d0521eda4daa651027b3a136a54213b3b28f3b39289b204511af510d6a6312d6e2e15ad9e5aab1b2912b0a6503c9af1ef5076d364875c3c62a107feee4fb66e5cbafa4123f9d6677f60976d9b16efb6f3fa04e51d74d4441f4116b0818be9cd43e06b800b2c3c18867429ad1837c2ece8313f1915131cbd832b02870bc134cac9b93898bdfafbaa4a4143658fd9f4b023142082fdcbf04928d7cdea5b8103dd68b07c3cec23d436cc3cf5f4a96ae09c5dfbea9d67735f324a73ed94d7be6d328e2dc452a379c0bcd41f509141190e76c88876820c5ca1a8614c06746d9282f8cf6895cd7feb63f038e2146629853a02a69ce74ef3d73426314a0558836cfa53fa83a1b85170e544b97fc6a69af0d57a1188d304f98afca715e2cb1ebfb8f05a8969cf954ff6eea80cb7828415a0aa206bd14a668a653169b40371a28a91059040c8d54abbb9c9dcd07f4a0390dc237a503a4c508eb24f19e69435c1e58d5bfbf982302d6c4cb71d07f7fca490175b1a2db2ab1d2e9f2a7ffc7a8fbd1cb02996c07eec1d61b750917a52820e2a1301ad4a695993989377327c095ea90d95563a895942f6260d4ea26612fbd2d5bf48e80b317e0e4735a99922b8442c75413f44e11c0b1f132a3e05e99fe074d6444c9eca7925ab040ea9ef3f51935b27e2bc279d8ce7c907144ec41290e6d844a8ec5898b2765779f135c9ec3a4e0aafd580b56f43e1c827622f86822a646111fd05a6ecdfbba0584089e30ac344ec956a656c986b8c3243229664a1c537707840a914186980817fcd033178af302adb2f4d2640ac8070a5c042cd407f0588e9a2eb0c05e004d95ccccc0c10735c1eb600cde299290f4bfe3aba0cf8f034d1c359a75e74b0cc1ce3ba932787f942380514b49c2000a3680483cdc8dd327860e1edd90df0cfc0d5cf46ddf100d2ba97c37401eee2a5b1cc3879abba1c874db2ed1ac961b51ca2cf5fa1c25d82d87055e2462c0f32c0e19d02c6f87c383895d6eb4ebd1171b492ac1c46feddabef7e76e540e602fa0a032887b926c6d6393e4dd421e488b25a41aa8dcdf2ebb386d563f9fe81120c0bf475371461382bd3ba8d7325d86d610f8c7c6b29120ee0c27b92c968256d6102015987a448dc2e3a15eb05abeeb833bbadccccf439b79892408cc23cf85d6a45b41cc0589509eb7078ff08a23e06ac862beb17348a189551848116540bc7b84177840d4071054b4e387edc8530296277b1b50687e80e241a0732965156745faff72eae18a8b9f6a42016fa7a0134cccb863dfeda2fa870dda33a108c60c33ff73041cb300fc12bff245ef630c5828c79138916c2049e15c109e5b8870417e2d9f73032f1ae40162934d01ef638ea463524db9536a286881a6cb135735b93b0870dbc15b1c6321a16dcc390edad741ff922ce904ca6e50c6feba3584a88e9d2842d607be043f02010188d72f7642f13792ed0f66b4f84fce75fb11cfbd3df2ffa2f44aaed17260adba857ac4ca319612b3459f9a63690f9774c9adeb720ac512948174120c811e9c1614d21ac401dc0a6e0c7023d457e419c6092e89a0e28a42f3f98b12a3e99024a95d96c073d77f2f74b4330a011e6b478ea539f5895ae5d97ed7a130459d546c0f39fa2620c90407f91dd750d252a326e9245577841825d4c16b9e244398a229cb5c416bf87701d6777c22f38fae1d7cc603f031f818fdbf1744c70dbf63be0461d67ceb2c60818024c7051aa1ebe244897f21d501055db0204eb3f98f1504b71920b13453484182632287350e0b7f7328d3b33da567565325dad4559c916b484449e29d4be7a22438556e77ef7aad3058712c20cbdb3b05fd47487c59936c56d6dfac959ca68719a164736bc0a3748ee4378757fb9747041f3252c009706e566451ec4320046df1eb6ae59bbe181e522cce53188749491d2b348fa03011bdb14be8806b1e1fb74895e0294e0f9fdcc43cb0e59d73a9c4b1555f254dd0f9a665974b6f89e7614c301978dec3b8981c48ae400f3d5f6b36e1e736b597a1bce2d23f027afeed9ab8b233d52f8f7b3ac6137c9a74601143910b36a2d457fd431da9778f3b233b891e711ff60c81aad81d3b00cbdd1aa95399110c5768c2495b2021e49364ab36a5d295dbb930d4b45c3452919c2f6c9e53cf9c71a479ff9eeabda264a48043c7d0ad00d026b6a315c2d762680fa4378dd304b1054eb21ea79ddd1659674c43bac5ae9907916f8195f40f3ac1aa140f88773c7672118d348d4ddeaba5bde3c023d0842c0d68382dc303324848e8546955fcb5dda4a9fefd439824c26206782020ca0b3542930e6d6a0db05c27feba452a563df800e7dd97d0dcfe16435327bfb1e784c78c49fa051bca48ca0a335ef91e9ce7d629a6871007047244acc189a7cc408292ebe64f1d91e5c7448db129669c9dd117c91b10492a8666a87fe7500ba7f08b900f0ea2f673f234467669d7584c4ba3b2238460e7e7784f59493aed34045795e94f4a85c58ea551eb1bd053f42c79885f499fcae34242c8aaacd3119ba533350dd88cabb83e6054f1914fce96823ec97e72d5a2fe93b67761a549a31cc98313a30a96fe79410130645e4db909cbcce4add482a03deab438e75cd6bb870567837b05c7d2e390314425e32b715a857c24e45229bd3d3b0d858c6c507909289b434911ebc0dbd94969292e00a1dd744f7f915328b1fded4881c70e013586035270e4cfd0acdd96e48f48eaa02d5a75778270ce7241b2235d1c18a3e1cdee85d1a81e524605e1b3a4b0433b39977ec4b7cad99f8cdf754f80c0baf0842852633973d2837e66071a31ced56782104d4aef900fcd54a2efb64e5ee22c796b052b4f57c51def9d1e5cc90b0e5371facc9ffe7e5f78e72296985c2207538220b6d83cede00c5c3b83597e5aaf8d66880315dfb29f07be1078d6169ffb40e6784def05a7d9253da3df90ff4702283211b3c73b3f3c396013b75a664a8dd851050c2cad7704a3c2ce2278e469e51c2e192d3b15592561b6d1271f55e8203f12b161086f96a17f522b01f9d122b41634caf56a9b343d4a14ae5b79cd8992607f3aa8542acab57520c23f6a525e5321d4eb12fcbc6a8d474167c6e04fb2903284384e827cb9f220683e7ca6c4c9d3d1f20e798e1a4d566f6a1e4be661ca892817fa8b3a7dd8131919e2b57b7f1a59bab990fb446d845448ae7f9e86d67aa7ce1dc52be880462c7662665f9e0ee734a11fc3684e51d5feaca957963b539307155acd41160be319d6033c54bd291bca4daf3ca10ce507fb9ad7b4924751781954dd8b8f9005e32c0d4fa576affbce4d2721ec272a8bbdd803a90721ce437d9fc058ff3da4b2e372b540da5dda35675e12d67b2942c266e879b5d2e7625d3b26273ef15ab4daee71f032b2c5e8cb69f186a709ed2a20fd651f667042a22732f94dd8a4a36e485127c542940c1435aed25326a803a3c1a88520b40cdf25f0cfca198a1eea9dcd06c423ad7b6de1f1b87e5b3204541c66e4d98ab0d0636d0c232b37dd16e08fd0c3fbb51e495d06568b2d9afce5121b6c45b7c69e7c145895197a95684f8dba9bda4b681e1aa81de9a23bb2225e8ab9a7ceb555b5171bed3b832795b3ff13e70244944d3b4e4b79b7ecabaea386506ec39c1315eb81c7f3c979ffacb20a4ce350e9ae5106fe46e47abbb3139c334e92a7a92282b9b1602b8d9cf17825722c6e5c7b9e471973dcee5c7bff478973ceef2c7bdf478973feef2c7bff478973cfef2c75df638971effd2c75df6f8971efff2c75df638971fbf4b3f32c5768b82b3ccf29539e431cb3256ddc01c55ebec5ef5a11fd53d3554770b198baad3471fb99ffa15c5e021ac1117da32229ff8ded7045b804c9d8879f5a9031bcee6ea4fd3f8566ab457e3e73e0ab72ab6cbf14f4e569adedd6ee1eeda1ea59ce11d90e4e49a1c9c745236f1ad1ede27725deab44a2210c79138d62637f2ad432f2c481759c02c2e78a9e4bdfa63c9be0484c6f714014165c314a1d18431b915f896f3903b35484d0a98ce283fb7fccfad8323ce2dc134554bd0b906a8d57a758e6cdb73236ce60e276601f9988fe2edcda0e44c8c82fbf4950f9b686b5d4af1214e7110599c9a40a4db0ad2abad49ce493683caec04394e51eb28cee8dfe35145c20933d0040c29a6ddb856d154ec281c339b9914c7d96ccd00a55845b2c12bd28c1c9dbe5a5ce45a429c587212575b415836f62e2a6c448a385d0312365766398fc8def89f9c34e7d241d44372661933db902e8b9b44a82eb0e3f6b6cacbcb1528d7af75214630d63c34c154b7e3a88104786d5f5d32d30b541fd2c9ec5be0af67813dbec81a597d203c25b41c96c50ddf63ced7b6e40295dfc58b54f00ddf057ca506ddb80344dfbc929f9a9e2d49ed67a16304f899c66d3bd71d3a8b3a01ce45a123a09d15d91f0aabb41395e3430b69ff0e237e24547021ed6459055fd8924c890b8b3b23999b75b28900a93b76a441a2129cc4f00dcf63467f0e7d8a20ed47db909f7ab2cba2d006c63717a73b90005be17f03278bfade9eb461a1887c85ab756feb4eeece9b367b91d61b56c3a5a90e94cebb09b58caf64e650da31d578e9f2eb51929a48081d8933126a9fdd030e956f2a9bc6764f0c4eb647ab073b2425420c9f31e8bcfb39f27ada0070ca093f2039103ac4f5ccc2f1015792c6e72231d99dfe6754709260f8664f00866a14e350d8b323d34c11e60f46a6d8fa029cf1c07f34cdd351d58dbf8943c2e6638db50df5a60bd51016e080c1f889f6ddf45336aa85e12a28e2bb833a93ca9e74b36895b8807317563e083e031e8605f29ee4d528479a35140d492bd5aff3e3e5ac29fc81c647c6ceff8a680f07fb91cf9a7d404bcc1f9171b1880626912b9c8a6ff7e367b16093503b0bf5ea6e1b1635ed190a1e7888a41071967e3650f7f173f602b5863a0afc45a086e4f7c4dbf1a15a159723323441915f03e08c2ab326998f126b227088b9ee3f5f7f99159f0ff4e3ff5b5c9f10f5c5920a9dd81a82933e5b94d1fe01e403f3048fee221f98735d49033c6ae33df238459fff3eda11ffad74ee1131beade49b16f2c29f41e34732979ae48c6db7988fc433fc0aaa9de6727abdfa6662ccead19f99620295e738ccb320c1839ba620cf572682d2a6b5203732ca221f7f0159feb99a9d1fd0ffbd976f560f18e593e9252158630baa09c5bc5ad08396c56bf7b1d5a02da35da4eeb478472f26a1bbcec84e42a70f368bd83402a8f0a93d95958f189dd2a8522b467448e41be7666d4911a258c5bb45fbf2cd1258d29d7a53a6a34bc8b91d98c53921f11b3acd840d4d4f008f5806237f45f3ecec247633cdb229f5bee572254ca18b96d4fd5c020dc360516c8f0bdffac1259ec85e68c9ba3da1f2baab0c0228295a4767e78753fa693324ba6580b14ec7c809160b1e8d95a01b6a7a9bf3aef73c45606cb11ff34a8b205583550815a9dd5856287ed71f1d2ed4a16d4bc13c8803d45c116944d07dd2dc660d8bc2dd59344395aab528a4cf9fb9a87a700f8205733313e3a079b4d3a870363722ac570a17b8e61e24e4de7add77c9c34b4286638798d5f29db93fb6b447443b715ba528c2d6ea31562e116cdddebded56a6b291178a515322839de687489e2928d38be18377b60598593dab4ba1d17621d998f70dcfc751f98dde11e7fa1cb77ebf165eb91d09cf99c786e1fd3bbee1999630865cffd14730143841b969e81f7e0d78d6b01dc2ee9a231f3fa7e1c47fcde46f7ca07060be4d2f5a56ae2f653c98098a424d2ad6c17774c04567064f69163fe235b91d005f839ca9f5a082ae4d8ba5391e19386aa5e523e53bf6b16866d0d8204ac11505a5dad6c7517c52863442890a9d2ade75dbd01f0ec9f71cca579d5f7dbf5630a3cc4331bc6d9599cbf2b01582b6a514150d7ccdffe3808f4f503adbd819fcea2910fa212e38ea905020b32c63d3f3cf1ca67ed33ffa2fae35389002523a4e0574126f9910fc6ddf3bfa3c4e7b00c44087ea8450a894ca14a759d495835e7e7ab2a233f51b9a99a9065c0004d80311f62744b2974444187e23bda5a221f3ce8f254de6887731b626f256138f0d6f5a4b6393c07a9619dd8ddd63589599bb0ffa6766e1034569aa862c5d76f23530cbdcb2c00bd0f97314faaf8ad5ac5f2dbcfad59284033f2f221afbf3e540aded84b71420ddf2cae27b48138c494c80866b3cd4e5df9b08bf6c1374b09c808e9fffd8c935b440957a08983ac10128b4666da7324ee746fa4147aaaca312d58729fc2992f7db8e99ee9190f282a83668f72b78be4310fb71a4b2196926ff03450332dc38b1e1b6b7c6047883e210f88dffb79068fa1324749e3f91ee07ff2e92bf7fe2b180c73e097f2bb9c0bd8a996997c83e392b06291e20009361b6c2ea06b423b028400e842507907ae124a99c93958bf704c4548cbba59656f461fff5784fb0d5a107ccfb8e176105750e440aa407498d79e813075b1874b493c5e3ae416c20331accb6c1942d48d3530fbd63279d93284c6c4b7f2a69a720099f5c59a131c7190e2b5090a81cc41614fce05089418c829ce8fab655d18b6117044882252f5f309e975d7ac73edfb168d7c47674f5685ca255b291ab3b75836c267c8454d689f6b77c305a5c32bd8c2f7efa7fce242dd7285e87093750217e55a6c1b4868514c9adbaf9c3839cc6e208db85bf64c0b533704f1266e77e36f7b475f17cc9f078e36abe7470bc7139dbf20ae33ecebfc75a599f24e860a693da7214d806fc766f9d23fc76131aa5d1c1e4c57b2cb06862611dd74b82ff60c433740ee2f5e70332d9998dfcf37c82b27d63a71fc7c3ec24c1fd9a816f3b37bc84b4f59d0fa97ae5239028c0bb9bcfb53aa230eaa25300fd95bfd5e683b5825e077bcefc724671aebe3d9b7b438d5546fe75946706bce823f6dba76e760695f40c8e8f057ba67475e81ce2cca5c1ffebaec7a72f4a1e31b97e5c5ac160759a51a92879ea5cbddd3875aaa2107f071097bb41ee1dce6777002d4c527da3462f1b6145bbaf7a1b3799cea5d5d34bdfce33b4484e450f8a4d54f9092cc4b3c2a6d64f90f1ab76ed5e6688ebe55ac14c567005a39bb057fb57caa9683d55a456ce48ed1d8d6bfcee36dd3933ebdeae2ceff24df9d8394c5bbe50a19adcbe64029d5f10387dcf6fc60da86cdd30af67530d77401065d4c341bae1f35c2cf7948b180252ed8ac49f58c6a6535238284c353403c8a67c890f2fb3c47e71bba9dc265fabbfc25f1da543247f2040a95094ebfee84bf387558ddfc14006d50ddbdd1474ad741c23707f07c2c4a4890d5c0dc3d60b85ac2c9296c42351eff34cfdec05ac46404d27d2403060f5faeec696a51878a4485bb00574498e016174455402ca07390f0805dd4c2abd05255a0ad0c8b3afceebc7c6d4e469d2c0011d0686289e50e1135cd99279f457a15405a4a4255d4d10b05b2c97eb8b632d2ba8cb003b566d604f6e0d1a56dde9e0f4bfef22494ac6403f4ff7c2e00963ad8762f13a4909b382bf43f20b209d4eaab07ea5e1a69f5d2568f4b14397f3b3bbeb42925ac42201bebaf09ada0c48370d5cad519252b9a657f4229f190de82a29b824553a1aab2fff229fc5fd68ac0008605a9214a24b360c1873e67427c761551b8979772db5f422a66a443a9dbc396c8761c83896743ab87de7b05d820c178d44dafbdeb23ada043d9540332bd145baa569e12271daea24076f5c21396c539c94b5ffca609222ae241d2a7179bac1311d49490a5874d72146e749eaa8e1fce003051d4dc350e7b02dc030e420cf71ac7be9e2c5da3bea92f4c1e0d58ad014c943c72a906009dba2991ea1c4162bc917408a91905f7568ca867ed1a7ead34276c4b3e37b8ab44b0a5d2fec457d781c763f5649f62cb47e8d20a8bae0eb24e7d35a2b0c21aa7074f91f33b7822a94adf06d391469230504a02fa804206ddde79290392080123ac6668e007a6a2224b860f90a15e368c0da67660c3642b268e0abd29959a5f4da58996a43a5a46f0337d4aecc762f2c5464d390b80bef0fd92dc8101c5f4485bef311c76c21726a6fcac64c09372ad520f9475d7b5336d7a5b9046c8e6d7bc94c69fff568d84b30c5a4218a23ee45dd4a6110cda60ba00e107f73a2ef3354682164ca6a5a0a611c50feaebc8369bef096c6fbeca84e612fad2505f7467eafbb96489edc95be0ddc15ba09c0c6ce2d6b2fdc846f90f63d896d308e17e34f09c5f0891d20f4fcfe2f3d280266f5173c26cd3206272351a5c8ac20081af26e89d29a7084571692e08047653c347ebee201502df90e78bc9506f976647c2abb50d4accaaae6dbdb73ecc03a7a159c0b83a96ce4fbecbedb14d0fd91a431a1ec7b9f546de1fdf513daaeb62da3c66e4c93bf34a8f7b3348b5b729549a432a13b270bbd58d1aac4fce3807d3a36c363888badfe789090a3f34a5d5edb472e381dd1b73daba40ab936ff2594a6bebe6da1e9c1eda121fd0dc2f3b0cf80e247dc0df00c7bce480c4b21ffaa9d8ab00027b2604a3dd8c26946cec3564dd55216c3981a00e05d854a477ecfa82f6e5397db75169954692eae68e4fbb6a9748b1f3f9290b0de38179dcf725ddc08b1efb1f43984c54038819bfc782bf62fe0aa9fff2c867f28bede3234edcd779a9c45376bd2a69e3d291312826b3c88df0fd854a5498076fc71b1b2f9ef29e20fdda167a1a804e32d2628ef6b839dc196c25641fe71b372bfa7e9c1b932646e937a644c4c26a050626cdf3c5964b82fe31e0b6e6627030f48d0b3b34c002fec089d0292497a401aa002bfe5e953e6372964505f1063b4f568b3bd4d38b11ddb0a14b51cb336a26b2230e8409efd8010e6d5ad18d8375cd5a772a65a9120de61cdf96db28547bd2ea9cfd3509018fa7ca985af4d19fc693bcaa8b6e02fcf9dfbb746a7080acbf91d048019a9e161c598c8d5e7bdffa55cc042be9b80369361c4bf2abbb44bf5b925b5aa141e95ae2afc06d1aa1e5066eddd015ea1eec04802f10333ccdf16d2885bb6c5c72605aeb4904d818642392890490bbb1412f1b29c2bdd9fddec02fdb4af08c4cdf03323581f75e5071b58f01eda4cbf96d930fa5dcbd13fad0ddf89221e554ff5bbd87c254e0900528251416a359bc189dba8d7640b3fa177c6842fb9fd2002d3b42f19e917119d41dff67b66acb1e74a4d54f19be8aa9c505232077baa4a7e52a90aa7b77c7460af20a64e82b04973f0827f377972cb13267e3ded72c0a59a0ed47ba3a3cda838fe39ce0bff42d91fd7f4ed5306e961aa5d19ba050cb7fc619fdc4f695503cf55b4f418c3d7f9a25cdf0e34b98ff54c270644971f3773dcd7263e5ea0e8b37a61941b0295ab098b3e8f692a9419c01f3d36322b7dd06557ba39226f039ccb2d7e2e388d19bf911e88fd1f4d5348c04d24caaa35f40057bdc0c96c1c24595b3b865453dfef412a5e1371651dd0bd023e9cae110508d20000f095bea720a93240df31bd903f79087aaa2086b60375abba75b6652b1c95735f608baafd6f398a2b557cf994ec2546ed39aaf5b038ede5cbdb57d8e404c5f6428eae1351348e3510f250bdaf95b08e5440313b4812cc70450ab002a38f8e879fc5d592596ae51d5ccbce8167fa42bc06e735ca4c1d2de7bec68fe113171be45a43056e237e9628d9407433cacaac1aecb4bc81bf8920ea5308a25a33ce5fa0e4dc1e8fcb6b091a2d7a4d8c8725ad3d7f018b2e568e8eb6db0be1fcd0cb41749610ad26a2d947b49f44034bb460a2a113f01da09f995de5a0aac43430082814081a148a880033e366a10b7c1a73cc791aba00e89d77910ad23828291504dd6fa9930eb5155e324b6efe1bc1c19efd0508284f2532ed593dee501696490f07ddfeef1f6e2d6c269bd7ff14936c698089be4db6bbfc1e5674bb402dc3dc5d43b97495684a6ce510ee7474ccdc35e0bf06107c5347d31da888544cfa1a6c661e90e32cdf5e441120ab59b649c80847f1a327adc7b24f03e449675c4e4b57152c6fe8098ef336dedcd848e12e94f4478f50936d689b848535fd69a8c9f56813391af9d1ecaad036a3fb94063b43a0b59ccb4a40c2e250bbbcd6563bd9bcf4f40a724358746009554b7617db58a9982d23a2004a387c1b0a0c60bbad2ef641c7a0feac8b2eb3b91d02d436c0691a287b72f855c4aeb019ab1e91e2b4ebd32c1780be565b637a1d63b8f4c58b5823b3b2a93d083f6df97e18abf677502033822eb92297320827486928a3392edbf8e6b98f741b3e10696121a0924a389807dba30b9816242b7a325c74c912ae5076a7b85be97b4dd2472407477dd7a1baa2066f31d0e4bb06e9c299dfc91888b6650ed20dc07817d50176c1779f67fb72a53dcc79c3222d8f1c6a71383464f3d44f12da9ca38059c886b5cddb123b800b31636600e008358e86c38028c77b2b66783e750e46835eb3b05812ee49ca4b41000c8480b1d89602155655684d7ad03ab50633a29448a36a7fa7d180137438a555059128d8690c933b2e80cbabcfcc26bc0f7f8bc9051a7af1ba82ce482d9c625b5fc1b40926a26155a3651a412bc1c0294ab682ce8582b1f4d00b6cdb5058b6781596a5bf5c212d88f32bf8cb77198aa71e5ec98505c4273203417282c122220f69ccc72fb7b645f90632a8008f5ffaca98e01f6bb82fadbc907bb194dfe8f051d1c7951e6ef9db64f3ed7649a0e998c816d0fda22461af0a55a4446568bf363310b57f154c5b620b4458e122e3766f6f192c7d8773d0d7ea609e038c0a34988454c4244b39536948c3672c37611c15052a78df5b968f4a4f25cd08d83e892f5971a2a03f21405ec382f53a76aaac4844d4cc55ccc450a2e881bbee11395150e4e56d57cd1207629704308d0c2f2a3853ebea40044efb264c935c1f7e0051d84f6cf8c1b73ac8da0c2ce201f51b2c498b33d22d5ce375d5adec9440a64f1ca4299ff32dd841a8c795925da84dafcdb10fdb2ddd5b46fdb0ced4e138eb7e72d4ad10bdc174f3108e9f690b5b256062988870d4b01915b83ce8c5ee523cc305e1b094992cbd01ec9a79fc9a4c7d0eba3129c5db2500f34ffcacb77410828f84c6c8eef8343498d795548014be75656cc984c8d1396f4163f76a8e4e3e4187a5235d111d928fac5c2ba59c027720b37c47ddf05fd795ed3922fd59d7ec0196d2a05550a469073577811ff39d2c7ea042e84cc65f4d6b353e5bf1efa5cc1014dd9898cf540cf359df0c4c8d4a81023cf7abbd1df2c36455b400ecb9d5940b0f9f83ef59d9b961ecfd1cff0f80c801d62a1231e2fbb6233f6fac40f9fbf0641d3dce55d5454a1578c6d1780e8d7b263c477cd792ade14c66aa31640a44892638fe8292da7a8cdcaea0c5696c7e44703a5dbfb5c2743f0598008d20fcabacbaf17e3989528c4c2f72fe33dad5fbb2e5fde7d4c0a02a13fa74de7a5351658cfcd8b442f1298c8e429dabf849f8f7e0ec9c624e577c4b25a8760b811b224bbc2ef374b8a7897b99a3035e2ba73a1e1a3263cdad5f3e850306101f31e7e0159eda37caa95965326e5fd24ac9afe634da3dc8193639136ac03afe900402b3b6aa07082d11750f197d0e8a9c93ccef8ef77eff0afdc202f6e550368e11931a174adb35b961d21286864a16fcfa4c214ba39c64937b8860b8603d84b964d3cf6894733fb7c3ab2ffbcd28a7a6a73433406ad624948d721a4ac4a8c70276179f50c7b8ae5d25bf37ba999c372a72de0e8876ffc182a98a778e72aae05ffa69e828a70419ee991c4884a27d6626559873d7a69bb8b0a3a1f915927905f0d6f52f1b4855a2a4e9c5701fb722328ddf280299d9880179268cb0a861ea109924d063693c8579e1d6ae9006af409edfa64387f49eacc0f7527c3fe6bf8c70d1bbdd5b6fa5b62bb81d427b85166acc3e2741eb57c489ca91fdb27e9d959ba280f79f75603b6e0d6f8a0c15b7c765ffcc896c4d191334adbb1f63c32846648b1383d5a2c62eb9739b31c354178164df738fb194eabb35d54709be9bdbd47b49bc0ee18639e6bf739478e7934c3e7d9fa21b29edd03f415e695a03337ed63b966fff4a1f779b808d2278e607c79178cd98a12588e5fd153d559a47e498d346450cf28ff92265902c331192e25afb695b01388c21f0b1c800dba57c04afe51d2f3a2ad51994cb2ef930221e3c49744019ac375257aa539a05702caf6f3864057308ec4275bafa64a309069730ae72f8abbcddefefb0b598e6200498e57bd8d5090284755997f58875c0e7a566b778b150d5c8a17d91adf244ed73c770a825de6a1c0c47223cae4703e3849dd97cbf9db0c84ade4e4a6bbb5363ad36b3cf2a68026e053da89166d5d72092f60e656eb5e1ae118e8fdd6a7e9b454d6ffbc065a2bc4bfa5586bac369275b116c5bb2b17b2b6ae7a39cfecaeecc2fe439e7b1a4ab7f9f568b55c03f336b790726dd354c6dac70264411e6b63619c72e6358ce8508f4599c5136ee2c172f11dd9b864a2c15fe3ac20d3f4aa9f368f5e0be421251416e76b44fad67265c4024e5f7f19665f9167ba44d41204a4e98a8d560417b8b52ffaa116548cd7b0489080748cdd4efd0ef66c66938df15bcf747449479460a1363ebffbb5744d3de6d9489a211611a526c9cb97f577482c546613a879e85d764f4d5102d6a05cf8bf191760c4ef65fcea4041278daadf4ea67a14683a44859476a6e4c1dbdc8530797ac7da00cf10a8a1c403222c95cb26819fa6613fa3678b3054ac1adf4c03b44764db33e93502a414547aa28561ad80b8ec23a72c3fc8640dde6e44de1223acbc084f74c7c99a9a98b46759d28ca3be7966a59c6908d3c46d10ed23a60cd00d6a66dc7ce8b333c416ea00bf0430fb4e262211c4aaa5f8b24f0d799d25ec775dfc76812af58a729c0e5b9d1aa77355febed592e6d2981f4a31bc456042642f98fc649a2c4fd856210dc780d2906e6e895338b02a55d68439bcc1c21c9d02ef12114f56f4b6749f68a306c3c92ceb690583d36b84e37da86637246b98819f22cb814bc01a2b0f3267c172137d843b50ef87f40d791382e1f72f5b1e6147f14731be390c1e7beb027b247515584e4b8a21322ddc9647d62e25cdde8afa5760a20493ab966ec33b2abf6cfdc435136a46df29a3ba952f982fe6ed9dcfcac3129114041aa766ce393b259253ec2bb5a54d31083604da19c6570c1070cac7628ecbf28cd05519790f8281b4aabfcc7abe4d8e96caaf6918dca9f66ce5be6b2de8da3c98e40ac976b91f18666362d77cf14c99f0efb70e6774bf888d41e547ba0bb97a39dda380ac6ba1385a412a42ddd99f2611f02f231126b15422bed76ca649b5b9a3a953f73bb7776568b14a13b7d883170a9aa456a2ef8b117916ddafad1f27f58fc07232c72b35e6876d3b54e67f265d709b1db731a325583950e7af5e0cfdd79ec371f587ad9d431aeb47f7e1c37be6a86237099f41935cb381b609f715b417be3804a26917f9796d39edab8282ee7f63691e37ea2998e4cbee6bce5cb7aa97ac91856edd737aa60512bb207928a735ab13fae378b8369ba8ab0c8879abe0418237c741d2041374b65a7ad950ae755ef1e06dd9a09c50c334736ffcad267a5b83b57fe76e4ef421e242b7a293da33ae93a3ebefd01dd5c56a5705c0b7008c139beebfe08c49ab1a71919573a1697a935998e90f1d893d3d91e14247db860a72616944074f3b0e79e54544463bbfab81b851e8ec987fa33db4f9e695bf4a3d18de227d2af210cfe02092a51dafbdcb930171b9b964a22c35bc8fcfa8cf85408f73f0002ae67abaddf8e5291a98eaeb1dfe8d48e8d756d589f375375b75d8a360e8ef9a74871ddf7f48be5d7462ae204bb96030f4b6fdd0a2462c61eef723177320f7108c1efdcba69da7ef0b67121c9e1d11359b1a7c6586fb990118c9836d86186f0d9e7778f9fcf26210852577fc986ac9d99618729badb1d038f2df55be107348e671feba44f6cd15f8828c0541c2a2f5c3f46f02e26f0d5f543c8e81bbba78627de6d4623cb1227e0d4fefc59ba272c3ee98208f7dc774ec62f5dd97dc7615c6af9592779cb2cdead6a5d4011a6200bccffd0a3509f2571e0635c8e5fcdd3ee2ec0eb1b8cf376e4aecd209fe555988fbb62d6df633c9b8d4ac1cbf9f1097e2314064958517d6d52f40248fa57283d565387b92c227a1e73681fe91a8162ece3657abdb40c82742cb58d9f04da0759994a63db2d55946399c2aa8e84f6fa6b42492ca3bdb21d396ef96584fc1f32c81cd6fc5fe571718a3c9356bd60ee8927810f8514d5f47cadb024904de1981da0c9eb739ab9bab5411d1a9811a24e3eaf425970a991f9cf12fdf79e65205a33b585eed30bfcefc928b82daa58400c2067619b59ab868c4ee6027f6157b1eac8b5a59fb92b4ed521d2a378aff70b8e4be9dbfe48e1e8eb36602e282a81c5b66f6598ff491e6361123c3a66d84ea4909734faddd7fb83236a571505559cae821334ec4ff05378a52f096259e7c6dac67d5fe65260c81eccbd72260bcce0af745c69fbe4a668e6700f3f30fc4b16ad267cd0499d6dabfa3991c0212f8b5d4089b7cbcfe802c7641e71d634c8741c0ad61c554cd46a7803662971aecb236c0ebad103a61c32b0dc27e2a6414ae080109c0ee6003c42bf8eded0bbb45e8a6218c2049fa0f0530249cd0ecf6fabbaab16826d810495af92045587e5f63bdaa521d5b2b807d63cb43edaa0a7b38a2a60e7f6907db4f38ab76a89b08ea5d7930356425befdcc101174f03c4ffb7797d5a21396ae7bab078cae147f6150d9596c8c9cf9063ee0478a6b52d640c3790228f43bf7e1205535794b2e41135a633ee25980560113980a15f023898bbea6db53fd0ec20c09cf24ceb94ae4eec1543bca343130b5d1fc0c2577cd6b178838ebaf23dae6909ac9ad166a292f66cc653c779de189dfc5e164f6d219860007b1fd32a43d4b43359aaeaf0c6497cb610bdfc3daa6e4de927ed38b67002b37fd310a80befc6e776554c3568839fbf8ce4d949e1d2c00d1cb77f816c72d8ef4a7df6d28fb5a75f781bbf51409c47ccca6782f74e20a8507f96012d885678d30c2afde2a1efba14d2ff26a59d1bfa0072015419051e3104360d58205c594d075571f00a17165eaae2e076e41c2e2cc701b7de53d909932a682eb8fcf8f2556d936e41256085fb000cd029050848348810a93103960d0edf6ea56bc532279f49c56330d04344444848db7bef2db79452262903f40d900c150d2fbef6a0c35ddc771f7f013f90ec9b3ebe06dc85faf83d88b089b98be5658ebb58b4bc2c2277dca53fbe74c25d2d3ebee471d7897e74b101fc1800017cbce1e34b26ee8219c0c7974ddce5e2e3cb99bb625a1f63c8f8f85228cebc7cfc88c3cba7aa8f3f5fab8f32328d200e38c800c0cb8f8143ebcb41370034fd6cf87ef19ec0f261bc0000007e68e5b7e18188c92c2f2c127091572eab0a0c20a35aa08280c958630ddc90bdecf51040be4f440000f02d2d00b45e5e3e08001b327d59e1a2a3a72f0b70d04dcf29ef603941d222eb5899c974ee41a589929c71ac807c3e1b4005939b252d992682f455342cf20ea91d0cb022cba06470b0e418a7183db0724c04e99b6274ace41b2248bf7483ca2aaf628be2d349956f6cd14f914ea32f07dea713ea3b9d4ca5fc5ef7d5d0b13a01f61bc21d36831cb8803d5d36971f46f9ef03f165168d45025e5ed95505f6445554105cc6146b604f6f7a3df67cbf93da8f3ab4d9f3e5ca6f461a8a0891901350c6d0d51ae0f81da9d20087970e79944474448dde41a739cc73ea49295ec5e9497c17719274121535cf2b4c67fd6dd3a17fd4d8c189927ad2296764c76928d84c10e98e0de884889fc346ade900c78fa78e353feedf32668f0578851d94cf83e387d8872eba843194c6bb1a5160ffedaebaa9f68270f8db3915e018286e7c8d8929e58c2eba84b108b1288b563bc6253f4b4e2725fb2473b09e7c36c9f3217163c05c9c38c22c0cb65116a134104d0adb2cd08ba1a06d5731ecf0e4e4c9ae77bbcb24e4608d0ed6d89e66960ff4676789e01526e28b26279e21be5e0c75f167899e5d5500233682fda2c888bd0264d7a74122be6ce0a9dd6eb2ebb314997e228c3c35893f49b45729aadb73b0bea64fb313d05529fac0873736e5c5d0077478b18c6995a295985629aa43f8e743ab57622a45d2f4b3129343d0ad52e42e8d88afbf12f36874ac4744a621c283c313104d8e0a304bfb9b2d5f7bd8c3748822a269f934a4c11e45e41485e60434651b68db97115b8d9543863090d89830721cac2c1b73db8781247e37e67e31e4200c220ededdf1e02e052a4544603801fb80f601edebc3c871174ba7080f8c27602071170ba6690039586930a1f1814cc4105607a1c991fb34aa56295299b2d2b3a2c45fac9f18043414edf0b45264d7959d159e1524bbd6842b39bbbe769ab92b24fdec7a6a7272f2d5d8f41048763df184a79d6d2a42019e3fe4a6461af99959f2a6667ec52720254eb31df2e512d2c84b25b4cd7d69c44616f97953632da75234b183abd9aaaf52b49223391daee8ecaa5254a72cc2b33d1f1dacb3c39ae3f9d011cf935885818da24887a7e7093b50a4b8c2068678ff8e3ed53695e62e68b670b4b73908ebe5086d207b43644fa788bbe22ee2e006b2f643641b345fd1cbc171b0e6c8dc2535f0210eefeef1d15fde4e063ebab7b3ebcbec793dd4db91da8ac44e342bbd9d306ce0e35763080fbc46c47f2087727fe03b6fc773c25d375fdfe399affbf5bd1e99bb3ef02b2bc0a1e713258629f1f1fbf1346ea344be0f836d181664db609b8fa754888e074453ec1ef6e5b61f0fab6db5e72383719c1dc2969bb164c6cf0c1f5aabb597c2b8ed611cf73343a8d66cb39b2c7264020172847edc2d28ad274e1cd441a8c0872f3c2007293029ad559b36f0ac6cad204ec67ee338fbbe7dcbd8e9746fe8783f3c288a31461537f2e5cf39354bca226f43354bce087b01ccf0c9387400559800a40066f854ca6920b21398fe7ca11f7ef8e1871f7eb610e2689e901c2753251d1ececa193e3398bc187a3164358de55e8ffb6cd4fde369bc152485b4825ab3f8020cbbbe188aadea7b021378958fcd2648d1941b5d13d84990d0d61a6a11b9cbe6ebb7a414b5a6e0b84be604200045dcc592318984964196d0f8b9213520e487053eb4818756cf069eaf0667038f0d3d1a489443432474914a3ccb962878f92cfe9ae18332018e9d08703863e8ee172fa8d62fa23081e577526888f82bd6d41d2c7f6668be9848af5b02bf18ea94981b106d04c37c8c229b1852dce5e3b99741b60f638c61d78f1186a8c3f6f5861ba4900c7b1924db9d5203863df73ebe63f1d5f0a12386fd8aaf879b0dfb4e7a3e609a0b92eb6fdb7371eaf80842391f36b0cd666e980f1d1df4ed23c708b305994f6db210b0d886e923f33bcd26735a06e19ec67d48297d48197beeb90d83852f453647b91723d205f730fb1d112f3b1c8d6f71c3b28c7552ba2207e9f4e123a6bb28ad9e1f53c6a101872f86580978d60efad2c853a977c8223fa7568246111a3b3474220c1af00006e0e2c3df03d8b6cdc7c36eb6f4b1e5fc96250eced3388d9df9c24942a4081a45dc35041243be3e8d0e84310825d8f5698c20ea2083c47c8c59e2c318049e5d536ac052c8cb974808f96ec5574322a12396429e45081259eef849213a7aac469d2148108932f6b567cb9814928b20a22397c838b117028bd5c825e69644b2ce1024748ca06f89c4103df04662cbd834a27a42e64e11b903774b22fa08d571b662df596da40490f066fbf839650c0810204f337d6409829740b20c41083e7e37b4d8e7e44e0a4eee8a640872170504b91b0ab50d3c61b86406d07ca1209b8466eb95e8acd705c5598ae1c47282640fcf55d9347e3aa1f9a224220eea3868ed0ab0f48878369d90ee80a4ccc12a7d54203721194713450632f0e1dd9d0fc65f0d1f6fadb5d6da0d6f8939bc3bd95d8eeb605f8d159cf699ddfee563c4bb92483b88203ec6576b165bf58358ad62dce1637ccdb8c00530f031865e0cc9203fa35bc0927b2b6d682ca978f562c85acd827ddc5688fc914c68fc3848c34716b9f7c70d980e25124284c0fec7d378dc128917521ca45bc0f6c7c35e4471f0477e4154e420cc069e6b619a860f8d1f9751b780eb50ac7e08d334644dac4de070c611fa72c64f67f3228ab76c682cf156d5347c4a80c317439ce6c16031fbd5709773447363db343951faa82628c80c1f9b2cf78c25eee27e66742b9c1570287f833dcdb42c5c0e9f8192126c098435591f0f3e032524d812c8bdc93206647726efb38187b32b24c0347e68f83838adf6cd62cb0759d0c8c9daee2496aba0168ffdd0061ea0d34db6567623c0dc73dffda9d341793799e334afd311010e23d0cbf5d15ff45faf7779cbe503067bd979310283bdececb08773308ed32f465e745e8abcecbce8bc18e9b66cf3568abb6c7428b7cd4b20b07f292275d07931f2b2e32ed80b10ecc5883bd93ae745c741fb6224890df6b2b3611cecc5887401eba448a7fac5100ed27643b08c088eb1bd8ce5ede5f63d3343e0b73e6c2114934280c49822bd4a21b905a426a8a39e9cd5f34fc697c3ee184511a6462be31c09c9e0cb2099fb4d02c93e78cdd45a08b8dfb2e49ee324c7c590494e4a19c8711d118cc38cedc3193351549b238263c06c789ee89129f1f9e180dcb53571e22e2ec85ddb13289c94a217d8bf18913ac40dfbfcb223a5088794a25934c5c7141c3886e68bd3f274a2d20426f82abbf86d6fb30cd222896ddb3ccec74b1f6f9fe360369c10ee078704c78580e338d85b1f3a941bf676c33011247e08b181e9f066c39ecbf25fbe1a926672593e2ccb2032880e6fbec55743765b964dbccd12886ca289afdf71df8288d4410269a103e45d226ef1b3b96d8b610edaf2a37c1b4e9c2da5f4285bca99d4aa23b0cfb6d53e92903ad816390edacd3e8d7f8704e661bf6ee92f8a602ee92e0ea6c3163a9bfb8deb86e28cd70dc1347ee49223f00df265914c5f1ac9f3652ccb07021ba22f5efdd43912898f2e87481048239ca02f4f303374c31139389a8826f23fb410173e335a5c2030d86f3a8c9146b28d1f79021d049977428777cb5cbc656464c02df3e386211a39e4706d74886510ed43e700c25a08c1803c8c8ff1f332ba6e0896f19dfc12e023e7f034c79a2d87f12747a5da0af09a17124896799965ec61593ecdb266cbaa5ddf4756ed2e4aea239cd8c758b691e3600e39e490430e39e410849d1b6a626240f07fb592918943008ac9384263f3455f46464646464626b66d5fb79742b6b7d95e06d9dec7f612c8f6b04dc67efbf143c6f40cd1b77547e0990f6768c4ec1c740e39e81c740e3a871c66f8cc973b199a22242528ca0c0a90cff8d935676f2f73d086fdcc421ba6678854335154bb3b02dff07488934de4b865e4b84b12d171d78ebba40c2764f0c8e89181c45d9b4c898c25eeda64fcb80c26329ab88b25eb7743ee8ad222a74512f9abc1e9885be86c19cbdd501705c79083af88230a91092410dd116d190791839fd51ae8e160fd488400df5cb6719088fa531881ed4b19fb385fac6d7b1baaf5a6a9bea9e172302ccb98dc913bdf8100d7971504b87e8ea021a08ec89be4983d7197d5dd9083425d941c3d397cdc956367e773ece470822707921c321c38a2e0207297dcf9fa38a4f84b32f1f5714ce978e6dfd8cc0ccd6e67872cf2f4ed53daf1e8b0ebd92d284cecb4662d27436a821c2c020fa1f11f5b964cfc4d963b2f336a7363c0e18ba1203e5ebee89421b80525b79e78abbeccad20076b031a305f1ad171b6b6580b9d1df6f09b2d81bc7f352410d87730584e87836d8ab6dc6c62cfe59b2d73103367dbe81649481732f65b0e33d096b1a799124896415ec6b28f8f5f0d1fbae54406c94764114d466cc6cc524708a61f4a9a677cbafc03f404ca15963033345f94c7477fc922cfe3a5914cc367b664111dbd65c3c6e7d396d246147cb3a38e8a5d9f930287337c80b44cd92e9aadda42e2604bb66dad9e08930059432212a2a473ec2612029b203e565a48018918c11abfe27ddc20d8e6258e0cc10f7005f622ca0b221f0787220ccd1334393444a4ecd3ae4fd343238ba10004bb3e8d0fcd121d141cd9f56998f86b358b4c4eb073438ca1183ef185d08adf2b6cb00f9d43cefc8ba117515e4891e2629b8e071e7af81e7af810f7f0e1aa870fb359dfe9bb11d13577fc89bf073511c10f270ef692bfc91d4a6bfbaf3ceeddef879d0ef7511f827f7f66cbff513ac47b36115d570a71c75d378867beeec5261de215d6e1ff7850046584917fb3f7570ad1f5fe37c89fc4967c1cf00a4929da1e6594ad2d6b7b6a9b66b9e7ec0a5da1eddedeb619ec7003029aaf2d07714b427cd9f7af566f785f1d6e3ddbbda6cb5e04252a82f26fe742fea6335f2b70fbcbafea88b5fd2980d64829853e98df50aa220b75baa477b48e348daab2a6d43065746d643575b07317b723cd2935b84b4949b3b5d13843238cfccbe2b2af87d2767c7a357ce99daf1be39edf6d5f8d79595073f5783a5d49a9016f5f0f379bd2da91a8bbe88ebf6dfa3637566a5470d03e0b8c9324521d5d86fd4c005c5f4a6bb17dfbab18e3dfef625e3968ff66eca0c53c90b6cc11651fb5ada6699a66a709bae8d2c54c2f86bf70eec718a3bd3989fb6f75d3d7c1ea326a2f4681edc51ad8f4e963e93ae8220ed346ec924e4a3fd34d5f3edddba63d1cb11361ea113ab11577d521d5376e433fe40a9c247286a394524a235d7c8165a87770beb6af89357eb5224ff6749fb322537e946042bbfe4384b2274e927b9fe3715ffbf92b9cd6b2dcdbcd71b5b7e3561d3b74e030008d83f359f4d3ff3d9f9b5197b99541175d481c10c6f57758cd923bf06ce9a8a14fe3b9668b022c3510d73f8c42df01767070ca8f894412884a4a25fddf5487f42f141c9c00491698e08118886afc7d1ad1693ffa8e03c227574d20dced0884b91d81b01681f0dd11fff6d51811c16e84237197bbd8da7b4e9c91b90ab6e64c6ccd47b0b92460ffee0720dcb5bdf69f15b06f0e0893e2c601e1d38e37b607c241ede977e313c235cb3d3f1bbe3de6fba302de9680eb7f7f53c3aababecd8e6f7a5fb5c7aa80e55010f7da4bcd81c419f91e44bebcf4333330600420005aafac9876fdd0b4e5ae1f727bf4d998bba46384a92f75228cf6ae332ab2b527ede46cedb92360f9de67636e8f7d54c0dbdfd9d2b82538943e5be38c803d1d84f4e141020e6a8f811512627bd3ac15cbea4708588083dab3e27671507b9d4f8f74e83b5bf398c6694f8777faf071ef038ed9d2bef35e66bebad7bee77ec7f71cfd4fc7d9f2b4dfb4cc6c6daffd0fa10ce8adf87220b1a5bd1613d36ae5aca2522a815bfbab7d27f1d5a49083da5f2d831cd4b4e76a10b4b58f1f4b079d7f793c1b7445a44bc929c1f2a5943b2e43a706384a2d5f66c40856e0a9743601daf4083c9bfe489fb45aed6e5ce77d23122e994ea894ea42f9b08043fc32c56afca329b669fc93428e80dadad9f9d1aea63ea28b9b1463d52cab75e8f9f1a9a69aca0a449c2411ff7c1a738482e347804adb0406ff83f2de812eba842f3a33c688b9f25e8ee872d285c8458ad774d293cdd024a3a5a21d9a7c4cb2d97253ec878bfeea3e74d9f243962d43942cc96ca9c3faa149b6fd5d64f375d22eb3d9f237dd2bd32e2eb22c6b3697d97cb910e1d9f6f7cf117cd9f7b91c3a60cb30effb9c0bd17c794f7fa4c3eb42b49dfb2efbbc359cb6fa0607c1f9a2a0d7cc29a31458bee8ecd8c2ed2da20a38c00ebad5e18f26297fcc5ce57680ad7d9aebe51c5bf3bb3c9fe6e344c0d66ede13025b7b39b75b43ab74caf0607a220a12ec5927066484aed716c4c448289448998442cae80edd61514f8ff1877467fae4fc8412e86a50f0c0edca7d37583e4a997da9c4be944928e88e8c857877cf5a31c92a65f5b9ed69e6c683f4b05db715ddf69d8eb3cedd4928a40edccbb087d78f1f0258e8d0b7b7b335d755d2d7ead5efc666fbb6fa4ff0e868fd9eabcf85df86ebf61ff7610fbf3bdbab9ce671e97bff75ddd72c592b267a0092e4a466919efb0f8812ea7480fa528739eacb7fb9bd54227590bf75dff9c7fd48f390dffdc78253a14a717563c171de77a33e8f8da35fd228bde9b047953e95bb5f0dec913ccff33c52a7a5a7647feff9feccdaafc8f869260b8bcc559eb274785734a5992f15d24a850e572b57e910e394269548241ef54f2f4b506852fdcffef79a477dfcd2ea50ca27c5d777dc014ea447e950fa6c9266959ef4df03b15afdf7a49c5203ee41f7e9c31e74a3fe7beca3e5385b3dee77e3f43c503a941a0a854269d29fe49b307efbd5c052d65ae92e6129974828a40e72cbf7a13b5bd39d1d6a95cfe6bed6af66fcdfddec2d6b6077f8f3d9dfd34c2f8f74d4644ce2e450f9d995df90607e332b0b205d74b9f3b569556379dffdf635b312d0fdf62c4ffbd0fdf6f7ebb37cb85fff6696f79c8731776b6e8e35218e1d84cca62fedd7cc929f59b2bee6ea33688fdcdf6e3e52df66162a3ae8adf9da0c2701cba72c9099d3e79c734e992d7f4e697a228a126c19e984191594683fbbfe9d2f9bd1771f49cf7d9c826b3a2ecb1e5021275603c4df0a6ead7d67b3cc8182ed5389b38198afebe9f0e2ad0ac56c14848048acc6ca2a6b35026f7f3f8c423c52f6481da929d17ceaf6d66edb6fdd3684b70f3599f5babcb2912e10c39158cd11987edc725bf937bfcbeb584d6b4a1caccf436ad4524ae9f672d39a8f835593e5600d490f922b8ba154e2ed50ea506b3d9d223b22c0a1d4b901e4b1b2c7d6108a3054d3b4d4913b48e8c4140101963b5a11d85fa7eac41930ced45d65925d650b769527a02e55f3d07e2af5ce4029b5d4fa7d5a6b8ca07dabc5ad597fd73b3828ad94554ebd72f7177cedc214cc80a376dcfb8649d2ad5bb7d1eab0d6966b7f7bcfe1bd9ab557d38290995274d75dd1001a8da493ea1d6ee79ea57635e973523aa97caa69310ec6bf52a3d8d6efa6a4b6562cd0ff167953f013c35dd3566bb599b6c38b29bd4c95dbbef7808cd811c83e430cc38e71b6e35b20bec05981381341d29b728c2d52b5d9a38f5d29cb88610e37bc89b18e1161ece7510e7970c9f6bbfc11b4d7c6087fa8159c2f1db359a7e35e8c671f041e60bc5afd6799e3b70d23106e7ab0fd89b8b7684f4de7082343fd80edafe5b96d0ef386c0f6ff18ee9af47639b08290135e6edac5386365753a27f52aad47f5ca41c7236e0638beaf014a10a490142960c2e40536000e77919e52d4bff79d0e838833554e656eb6b9bf319b5ef918bf8a8c678bc6d9ba5f22455c2a3d2d919e923089e33cce3ea7e56fd9dfce38f3b26003262eac5e4abb102d0f58add5abefe17bb2dbc49e873d3c797874d8d3187f1ff779df77dd63d3e8c3528872558a8442b9ca53fe3d8a7b929f345b5f92a4a7c30dfc471ae9fbf3bb0c43bae03475f0af0e374e494d0839d8d901d871e613c5e7c99623d8718603a0dd91a20b8df2fbd3499e3ee6c4c323b42fff74d26438777cdfd301ee73753b000c1813ff89443a7d4f227da38f5b964ea7ef7bf8c625fca3ffd287a8975f186357152a48afe2e547bad271e2efa94a873ddcf45a4acb37952e0ca903f7da8f320ce9e2d3d4c1ec39d86d2ec77c96ffd530a40b4dd7bf3973daefe17b7673ce4f9baf69fbcb3c84b09942ccadddefe88dcd47c4d6be8f91fff1ec707ee691c3b9b51fc93db5a7329c3b5486f6c359644341b461ec388362090e7c3e1cf4e020f67ddf7fa85ff9b457a59e7e3778683a94a3d36b3a54752715dc63dd6d2a2c4dc32ced5754b4e7366da53a7d9742e9909eb22997f2487f5ec76d2b0ca337a3b9ed80ce223b9c6fc31c62f7aefcfb3152071da7e421844d8ddb6621e60ea59e7f83251b871d6737c8d95020d9e08e3328707637bffbd5b82f3fcfc1a8e2efc798fa10efab43d27f3ffa9f2f15da378d5ebcfa9518fb3eea5774a8a2c3d58e4cf6fd92de615f1df6a8261ddeed2a6a7a15aa5446e5185b261dd24dd29bee3eade990d2ef4678c3c3d31afd187b72ba87ef1e0e43bef6f6b5d8edaa43f954c3902ea6a637a6a9451153290dc2db78dea7fed2fe6a4ba1e0e9e2adaadf05587e101e06bc5be72481d74d1bc3cf4d87abfa574f4d7fd5b545d6198447addc35addd84f0fc10a3ea7755d3b4dcd45d96e2887bd6aa3be09bba14d43515e0c731c64b5da42c02132ea18cede91a7090086f010e23d19ef389a880cb98eff263d076b944479a246f7e96528db272f86b7fc35fb3dfd3fc7d737aa41d4c3df996c66b92ef3529b0edee1dfd066eb6f6a4fa5aeea216351dc6ef40cda3d7f2e8638e3778ebcacfe354803dc6d11398bedfe7eeec34167c349ec1d99289a9367c6bfa870823ad96395ac6c02d5f630253ed3a3aa84dcb05bfc210645340c2943ac434babb538fb58723b1d6ca39e79c567a0f0e4e497bd02d75cc8f924a81650f385427f1efb8ab7d35b69be376d764641cd43b383871f4a0837e356a95feb50374efe0e0dc73a274ec143eabc2091c0a6a30a28b3838ddf0b6bdf62d17cfd0656eeed25d1b9dfaeab8519385c6968cee9a4f6b1c05dbb599ea3b5db3879be938d227ad56bb1bd779df88844ba6132aa552b1525961b1ac60d1f259b77079b10100602b009e7cc25d2ead105da5087ac40fe3e3cbcc57430e5a221938bc700123b1dca51be8467176f8d0a7ccf8d0a510e0438ff22a00e5907071390e3a5d4159e87e4ae9efcce9d8f00520c08cbc438eb3150001e0a75a754429e321e0d297a4df7c2ac2a3978f5f0e3b7da64f09c708251c2737e6cb1fc9f99a153a7086b83ccb0f79f915374a402208ba024a9f1262cb554330de2a1ed5d96a47e1cda6f4bb4ef3e267d294527a3a514a2935851ee0d93c489fdf7e36287d165ed6f68acca2fff237352c99457fc5dfd4b012c0f22b7e07cbafd03649e8dbb83ccb53bd63c5bf689b975ff1733669cef63f15b5b4bcc04186256ad14a3d9f6a08a693aa86e0f95f11d0776314e36603781aa7df06064047f3430ee8062e028a30f5dbc07daa6da436fe3aa2debb9472e6eb652bc5e2cce8fd3190bbeee7f0e1dc2a3ec65711c60ce04330e6c30f57313ec42ed3cfccf22d56acbed9b7e32e2c808dfa185131fb049e628680a8d641873668d39fd1e1ed42cc418776c9908c0e6d0e2cd1d42e1d5a229bbe0c1dde183ab44560e8d03ab1e9bfd0e12a4687f6894ddf850e7f003ab448367d181d825609d1f4df8ae6cb6fd045db9fcb7117e8484497006204a0c39800e8106c713aa0dbe03ff2d9f45f7e367d170bb4e9d55487a452387774d6414cd994a9c8a1cd819d85d3881cba931c5a9c1d7240a51efaf657f65d00d115a33f68df3fc6bedb57e9f0da57d121b6dfc5a4b4fd151d82f63f1dc678f657d867b158fbcc4156a69ed775f1a3a1cd2cb499d9a05fa2d9fb1593496b1bdeb8367b4a481ca45f0dd27b99f45de9fb14eacba8a7a9ff56bf5a7915aad39b4cd9f4347bf34da65799ed808807fcf76ad6e8e99b58a32ffde96f2ebde9ef974e6fa261e937ef3b3a3abde9869c82c63dd648db9053ec92363d7dcff47865e54da7f75e33994c2be1e9b17e6de54d9ac7ca8f340f9537053165a7d57b2a6fe79b5456dd9b54af4295faee4ba53e93e93b954e6f7a9ad2e18ffdfdfd4ca7920ebb0fe5df7f2599bb3eeda451f7ddcd2559a9c741bf1f967ab6979038e87fbd278dde94498ff1cf9593e94f99ca53c65fcadfe95742eebb717aaa35e9ed1e691ea4f77290b4f734131f60dba3377dfc4cf33def4da7137d0e687b887f7b9a4d6fbf943b2073f8f65e7ef1cb617aef669be2367def994cdfc5d3d31cdacc5246c094da307ddca4103ff7a5941170e8019e1ddac7de7f6fe31ecd0f394054ea9925591053b63b20f7f47c3bad744e944ce5372b16060bd45dbe9c6901eb7065c0feb20a91014bfa378abfeea5de088776e746f1167dacc32b65d3274df174b8e13ca7c38d489c5b9198cd09994d6dfcb191da53df2129384618906e3cb488478f31c6fbd167dddcd141fb701aa17d3891d831c6f69b8710424eb149bf7d9771920c317366cb47f9fb9bedd69ef45da51fe9d36eaed3e91e711bc9fb346fc2685e8e3bc268d7fbf4916e7b2f6edaee6a9e6f736aafa4d44069cc35c841774b643b38e5a5aca26caf508a6c7790c8ccc9893373c6acce9d5b139d749f53d26aed5743ab433bfedca9d5da4bb5105f43a15642f85eaf8785e5875673e77ad7bd1b743d4fe28f13c2523fc9939885f42cf106cbee302e95a4c933554da3957ad4fe3473ca9b2b576a20a4695ab555bbd5d605b82b94d9f183bb687c621c19bbc10eff4eca43b41dcbf971c77b2284eb0f6d92f78db6f7c45bee72c65947f4c70baa5ed08fe6c5e7d680ad913d846f2f68ee0c61fb93cd6eaa37d92673979215fbf4b1e3ab9384dbcff6df7ee68ba5e3fed536b2c66a167753f35a501c01fea1ab71e48f2c0d5bd34194561d5eefc9ca0bf2849ce070ee4cff9949417146ea4418271179b553b8e6d5d63aa936a59c9b6f3e679c73ca1a2d03be83fe3646024241b82bac3fdf754c9aaa713808032c5fa6806a9fbeb187e00b3b5cc54954a3e0301061c1a84ab795491d74d125fcd8e683bb8e7e373aaa052e484cbfeb2a8d5152da04ac719ccb9a80b926604e0b382401750187a6a29feee75723be576b6c02be5c13b0dd5650118a3371df7025b6ef19f655d9c2beaf5a22be4e39b375ffa6001fb17a06fb3e9704b66f5fa5335f2a33a9bb9147b580a916b82c704dc074c7c86101cf54aed48956669584d6674b1d5509e2cb54642a6a62df97ddcf4efbeeadcc2ad972a2959180b82c6879355bf7e77704cfd67d0e0b3854c13f4cfc157feee7f4ec6e47d6609eddfd4927ce7cbb3b15d9aa1da68670e0596177da0e5566fbbe8c2f95596cddefbaf784e2cc6977df695b8509f1a5227455a4b0ef7350f029e6e07d539183377346b0cacfe6ac804312902ac79e72365984b99c14a6a27d5fe5be0a14952112509cf1febe6987044402daf7bdacd28930f7ef6743b52b7785fb414cd910dcf7b87b7b928ebbbe7d9ff4136762ced5aa1d07afaa4884b9bfa9968830f7554a441757ab74543a2a1d2754842ea55b6cc3b1322bb3322bb3322bb332faf5c499eeefd72277c9bf5fa7f88b4589b7ee3f7902054a9428e1ec51119a3d2a429e841e15a108736da4b6d42c32076f0e0af0f67705c55bf79f3c8102254a142952a6f894f0f7ddf4ca090e5584f6fd50a5b3af8ad0c7766c7153e5ca095d740935d19ee1f65c37d502a69ea6d51ae0d0f6ec69913868913838ad12397d24849cc2432bb33d11c609ed5f0605872c3d2c320d08b63d16899559254e809c554df75335473fdf2e09da7392bc20d3500cb69f6f5f10753049912ee66392d09e6ff2429c91f360e87ebe690b9100dd9014a9836a47ba98afda3149c9df56e5961fd5772c3e2c33882fe6ab324b9288c30ba28cf9a3cc22635162a3db52b3f4c8400f4d9c22be06a7085ca3faee59df22d4a2842863fe975b9eb404b5cc22ccfc9b5b9a38385f842d4fd8f33bd58ed4a1258a16234498f9a1ca047bfe6c49822d8bcc5df48fa8becb39b746a5e957e36a961e27c419d26e69e22efbf35b662d4eaa95e1980417f0ec5ad4121493d082a297ac6979b2a74f3a47ac1cbefd7d7b0e5e20703643f26341e2e064e9719045e632e67748f0f7db872c3d2d40aa1c15119df95387c775a8d2915995d3c5007f1faa729244718f72410b386c99d1ee3bdd02345b3ac85d724f969e28c5fedecbfe23aa05ec7d673dca05ecb1fc6ff6fd4efa9cd3a39452ead55a6bad9eb5d65a6b3d4dd3344dd33acd4bbd0afca1f7943e9445a60f25d0e943b983fa300eddbf5f8d0e06d8fb95d7be95cacbef066ba55b54567ff74a8743ece8a00a1d7ad0becf05dd68914598799f7e3a54af43a5d22c3db335ff48a7dd430f1ada012ada214b8ff7ec90a5279419e520e6cefeb2acf972dcaa1d9ebcbdfcbeeeb97ca47b2f1371558ebb3616242c3d27d5ce9eafca99af5b335fa5c369969e1760969ea0a9821db608edd90234a7dff014dbf335d08c4518d31407e7df967b5b80dc55f7fc9626447b7ecbcc5d2f7b7e4bd1e3f84b2ef1d3e2c45df1075618dab307cad09e2d447bb64c6909da533a4b8fbb42d3141624ee9259a83992678a9c9ffc962618d5326b017270fe1470d802b4e79b8adc154e9e3de71393a71259d7443bb680490e266fae6591849559595017b3bf1afed5d0d1f9f9b15f8dee080e7d36dbf10811d1cf0fe908961fef9eb45aed8ee88e9f8da9fdeff629ed09baf802cbb653db239da867facb162f5d5efedc99af7fd9f232f4988d9364a54a7d7eb982e5e5ff7cb17e659e722ab3f60a9e2deb5e2aabacb676af8add552f9555a99cda5b6cc3f15446edee7aa97cd2d9992defbae9335bf65dac90ca26d3d6b3f16cb12d87e35eb2ed99adb9c379a95cda355f2207a578cb4b3656945385e2dc72747668e5a93c1be3dd79a4fdf90ecd16a90e55a28a4ba5fb4d2195472f595f229c5be4325c68936a5125f2625e4e1572cc92a373b7ede959a5f297335b55a80e0df9bc3e24146752ef3b7667dbffa690cadedb540a7ba9dc05ed4f25476767b67866eba6f266f252f976272f95b55df32aabb287b27b45c649a2b510b0d8d62b7e25a586fadd4af52a5f0f37524618fb2c39d5a5eafedc15cd967f4bf656e42a8453875c86bf100db070b1152cb4531bcfb6afb2b2a2f2565935b4bd0fbd68fbafe46dc78bc599d3fb6b3fa71c23cc6af5a7d3e9f42c4eafe269e62aab54acb060b1e8ee5478a93cf72a1f51f9157963c91b2b6f2b2a95e7d48055ba95b3ac58a12257b060b1e2ad52a930f535f52afeb4ca2c6a55a9c82d55f52d2a5564d94f656ecbcf86f69666a2f2366db110dc76aa501502b7b7c53c9e581daa4241d8979267f60269653c489e594fbe5b566f54d8162e704ec0e1944dd994d9201fe0908bd9202e16e3d7031cdaa01f42eed006cd7964d370dbf2e309f283a028b3d22210ed698427f6944276cecd8ddeaa59abd54bb7c9b9c7fd41c1138aef05794a88de13fe9ab3599ce1dedfe371d7fc7924b67c03f29a6c67e22dd9ee29d9ee21d9be8541689b6d4eb62077ddf7df9eb86bfb10fc4e095107f9aec982087afc0924ba268f174d7929ab28188a13f75974cd8f3fafd0c7faf17ee4fc67f6a03c440f3c8fc4d73422825b9674f87346d2217e3267dc8776045b74e1dd8c8a30d7d39f94d1db94eaa943b5e083acb1b6562fc8c19bb9207cff860ded8f581bdbcc4157c20d29b77f37b65984f1af757eeabd26a56d60359adea6feed05b96b03badbef953f81e616f6638de4ecac7916d1d86ccd17ce5653c4d7249149501bc8eea4a7c43ead60b3e4c71fec20d9f1074b94617b6649ed62bb3606828a25ecceca68efca045bd85df5dc0845db6f36dd60779ae7d923c2eeaee7d9c484cda21f7fd0041658f4515bfb8ef33c732410da5de7c94cdfb3f65df4e2379a930cdf9639fea089336c9a8beadb8f33330c39bea618646b3e0d325b78c71d89582691bbee9e44f6c712ad26514dedf9948722f1d7694e294275e80e7d82c670b82b64314093158b6f6038d205fff954875968870a7d157d53b3e93007a5c280e7d3cbc46fd1942de62e1c15ef2a94098f7ebefa5729b5a84e71d7fd4b2ab9af74182323bfaab60a7d7f9878cb553abc52c29828dbffe445261d5e28db9f6c77b27d36d13491ac12e52aa516d52995e816cd57f4993304d7f9d5b0dcb6d52d6bf76faea65b24215dd4d7fe74f2a0a876058d675b895304aeb95fc4ad1122a7c889a9b95f04aed934f7df720eae997f334e11313553bbeec15b5970c25f57eec89ef9dabe7bfb042713eb4c59d6685d09656be247bb68b2299bb22a195b798b63b6ac7dfbb2675b5636fdcae957b9fbabe1ccd254e42fb5a170cc97049a2dfb768663be628db52a5d81aa8110f2baddf4dcfb307f24d9e13f358bfe986f327dac31ad2e8ee93b1c9b8ed27bef039764c7f69cf6fe07f725cda2ff251b61746410d9b2dfe5286584f2886ddf948bf89a2871086512124884b11fad158295fad7515fb32918a2be464f6f7a9cee4b5f352ba575709a559ffb9b1a56024ccffd0ed3739f9246c89894cd97bfb52f73e2ccdd5605db32d1554f4b039e7b881ee24c7dfb07882f0924b6acfdf0dbf6ab9631cad271df66fbab6d2e4b07f70a8835dcfbf0c23303224c5183faf8659b2429bda3f4286dd36996567a9b936669a6ed4defc3f6a64db3341fee97f40fffab599ac6c1e97ec3e1fed2b86665ce6c59d9335bf647596ef6493574581d38644c5a8dc761df8d53dca4aba11a82fd92b8201c7d03ae6da4b60b21a788db9fc64d59de883f5d7bfa43ba69c4e63ec616de1c935edb245602e89f7e07fd93de515fdb24936a08beef7d74f07e0d2e08cb1ba58f1166f4261dfffbf942c82936cee1cd267d47383d8dd06c9d37546cd714e6376e2b0cba9415b07caf8b2e331661beff4e4fcaa311093f29974ca34942bddc281bdf9727699467ce9c3a7916993b0e3a4784dfc6dcf5bd7b9ee7795efcbeffb2cdda77d3fbf2ddb8ef6ca7795f66e5f8f6e8e3aedf5d297d147a609b73ce51f801aed65ae928f4d1699aa6697514da789b1d853fbe4e1b85b0d1f77d77f46977c48344fabb493adcc01e696fca42cf9cfc794dcef8327b832ebaa06067c7d909785eec383b01943d95f86be5a917ce27aa0fa7934dc3d964f5e164a2f2e15cb2e98ab64abc455f65c9d08a09918a26459b7a2bb44e36a5fa49cea6dffd8a94f4533f38dc8436dd84dce53d05bf2f365bf4bfd453d28f48bf91fe923a92a4f253373e97c51c6bf7291b695b6d75ea4eac92ed3f04752da510720a3aface11e02c1eb4af5fbfefbeec79dffd2f6f9ca76954d3a64b8df472937468f3d9f8ac9096adf5b2f5b14bec8f83f3b76c9958200767ca0758fb09feaf5618d3b753a87e9c628794de1db278a06fdf6a1e5553bde9df4db99377425d740955b3589c79397528a53e9bfa4ca710505f87727756c7fb4624fcd309591d0dd474b8b23a2a1dfb23553d944e259b7ef5d9f42bf5ac0d553d9baa906c3a62e5d8b44ac7d349fde09044fa7197eae977aa6c4ba6138a7455b9bb2a1e2210a5c3972512d1a6279e940f7078e2d9f44d44db367f5e9e4d3f0f72903e097c6eb59a3adea2cffd0afd8ff37eb653cca37a62d3bfa49f4d5fcba13ba1df8e5fad29c0aa93ec86743244628c9ecbc45881715f77f966d9f8ddf5f3822eba849ad0a6177368c0d4258683f30b38a4322abb54168b304ed80722024251c8db81063bbe680d64aba9430a8452d421d5c1467f453f862c9bca220c957190feca5d77d3c75a8cbe26a3311ca4ce72a73277d54d9f2af171576ad3a742348abf5232bac45d310a2938d9f463489bcc36a5419b52289bd2192394d941e2502a8b6c1a43e677d0a45f1374d1a503c1bb6d370a2d004001cf496d08a2f565b5fa7f028e0e56ebc2628008e304ab794c5a4428f149741299e4c4bc8e8b89919169029edad54e7074f06e99095b74d7bf8c3095eb5a3c19d412f0ecbc150bca8b58bc62bcc88b2e385b4ac0d141ef73d764d9f16776790767787ef823122b8a8d6dc72481e44545908071c961da49c5114e28efba8bae1c6c82e7872b144e2a1633424a857229028e0eaa54783bc480a71837705dc781a0160556b172629acd80f04aa5342382ca0a885d7608eeed7aabd5fff6a2083384151609f5c302e4220416cbe886a0184c58564cf98a8a1c0cc20a165e1320b068e912a0aaf1a2d9fa016e79ce932e7ef00fdde083acbde8ae8bfa61e9816e3104e5018e0eb6707962838296609797abc1d9f27770072f36785076084aaa031c1db461c6c8a06ec8018e00b8f8c89d2d1f0c7aa064c1a8d50a07ad1f16ec81def28fdb875e88da21b85d1715755e14ddd50a404be7d6b7b058c1d262ada8ac5a2a54b8d54aa14ea652abd56a715bebb624a069aa63bd35820ee53fa7fb74edf24424bf674b9779cc7d3cc77f5c47ba9b24d16cc9974540b1594e908ed0f61d39b47d96e40fd0ce4cfed0964e3110f32575768678887a62512863dbc7dd9db481700f922fdddded08ec59ed4419a517e37cc5e9b31973d7b7a7cf562ce9a24b3889308e0bedf9383426a4cda1aff5356d53b9d7dec6d6bfa9991588f11730edfbcb7cb70ac8a0697fb6a613584626ce302087f86a800c17a2b8c20f547678f76c062ad8710111e606d856aa856fd2b9801f52269e28a21025160dd9319444f6f4f9d46518438261cf2cc4c42072d7929032223974d9d1ddfd699c1e81e3cba799324a57679d75d659e79c3adad473e62e27f39f3c993fe7fc395f31f47cff70f67455cb62e8b25d1c9473cb39e7bcf2082cbf1baa6dab3e02cbf7eab554efae9fc92b79e9434be495e64f0e7190f6448872d7653273e2ae207709b9f3b8cbfbea3e7d76da7d7b7578df3bafd325fd057d4e424b6489dc25c55d45ee8acdafafe16839ac39af7b9ee7b97b9eb7e2ddfb15bfc27bf9d9e8e437c3412dbebae4e8c071f916df859668fb71b0fe5783757f01f6f52f40fbff1f4976b4f8ff1f2e9a355fbf7dfdde42b3ae4e807efbaca977686d593b5efbd74d660eda6d81224c7d34e07b5958581ffe66f9f923066c81e2ccfdfa76365fdad7d50e22587d1cacafc2844dffcdb983e9e33a9c466cffc9539fe3c13ac42a4fe2f911cf7f3a04bfef47a3d1f77d9f8e0ee6b73aa5faa618f42d9a850eefdc347e921eed59d23506b977da6739abc8e1348287c59243272ba85fd1cdf9d538b9cfa987609fbdb4f7c9e32f8e67b6ea7b8b0856ff2e365b35f64407ca4e149e5d5fdb50edf95d17c34111466868d76fb1f2f5399efabf72314f6cbef013deaa5fb11359931e263c4b7694e820d9f5c32e67cf1f9b3b25b057bf1aac04fc6bbfe3f58ea9335bdec7d9ea307ee26015b238e89b75df75d2eba6fd6a98eebd1fcace6fb67ffac58874d1a9f82eab9e7e35548f85e60b27094b7dcce27bdcddf2f571509c71d66328441db6fa2a9668c5f667f12c5de59e722c38cfbd5c636cb120b280f98ad1fbeafd0a164ec77a96cb31c2b4e40edccd42c708fa66916384f17ef3bc15d97acfa28f689e67fa2f7f35bed277252d84cce1cce970dcbbeba6bff9663b49b74842ba307d677a9af9e5d59b72eafdab91f21ef5ac1c4e24565456a02aa7f228e3473dea84f375d07e7c6cb3e72d89fa78a01fded9d1993304735e67046f8f79fe572b8cef773120f8bf5ae15bb9d9c5e887d8c1f9f3e3aed2577f2cddb3441fc6a05d4d3a74275daca47de6a0eb2007ebe78466c66cef493904ffd396280c25915d7f7edcf5b6fc77017bc85dc3bf7e7d1977b98be5525faf1b82c3d92d81ed6b9f25c2415908f3cc9f6f96e3a5184cdeac607e23ed8b582cb57dd68299438f6acfc16833b7e0f2c352ba5bebeeee3a94327a37585cba0e23b0a710bd2e75f03ebe7defad90bba044894ef86bfe44b153ec9016d372b4229e96e7ee64baceb9806304e96cca68733683bc2f5ba16ca358a2d96ad99ab6432ef82d334e12ede5775eacd1f28ca0e6811c746b164a115f63b5165c197d347fd4af86d6b265b650bce5692bf4844718fb13c8fe9011c6bec326f582e24cd31348d32817703867b3f3f2103deef608c3bdf713686eee87976584e15e7e35bcf7cd793a84edfb1bf7fabecf265628015e63855880c3092444b5d6c45d55ce4d295705bc75def98034e5f42c4517e3c73873228d375242a0eb24ae2bb808c0b3e5af021ca1b038e84fc1bafd6ff08f7157b725e0af2d4664220bc28e2e7d4a1619c576dfc194d5ca5901cba7fed45dca2943c94a934767be56fc3422ba40a18913346526c5e7fc128d77254a4f277aa2a7533651ea9efed57c4d9fd50b20baa61122e8400efa5561955597fa7e25a7637979ef06cdd82ed8ac3aa894cc54c6a12075884804000080002314002030140c88c482a15840a8c982a40f14000c96a84a7c5a9a88490c53c818630c210460000000000082419000df26ca513cb64f586a3f29a24ead38ef62aee818d20b47f6f37261f716d591c3342ecafe03a432067c6c198e4e69ac35629eb22780be0cb4405c35724578b33dedb834a32d4f3f2dcab1236229d20ade5c9071d63671c304fe2775e24d949ef80f7951705fc8b5a8633c1177c18fcf8ad71446e6c23b60e843f50ef2a204b8032129934525ff9bc03d5ad27a76d0682525761863a422f9972b7111e4c1b443666345b6db3d7516993f2b7a44b266c5b0f0dae5246628b6a3de467adf2de888f2285af48609c68a88c0a1a3c061a9dfd14b8037f6f6ba50ab71ceedefb8148a0e4bb11cf4a13c2be1570564829a15738d11d34d285891bc3c1396c1c7be6e9a5b0a50c0f2e994460a4d9e2eb1f340b379b10affb8de898cec7ab7a328ef3cf54304d09bb435adf8807ceb6f2f4a23808cb67cf562dfb5d4059b400a3bc000421e2e29604feaaf34f8ddb3952983ac9c31ea15e24b951ebce3421bf7385ed8b1616df8c1664bccbc18b1dfae3e7fb5d7277f2045f3b10948a5d87ad664af17953de017aa55b3d9e1e88fcf3ccc1b44183842d8d59ac5ee1c39fdc00c798fe3fd9505e142b782a2ed9676d71b75d09071029c4f90bb532aaceeff9ec8e6409cb28e90d5aa801b86051cb043d7dfc7bf2a4854a3d4d0b28d4ee9e52b68b51bb68c16487f123272c70316354ae9a51aa8c1fd22e2a4b0de01a7b031531d741281fab679de9c79afc083e3e7ba3ce7ea0d6f04f94ba219ff6d1b3d829cbedcfe9c783839cc1be35e93c92f89c0861e6093529dc3076a547e49a1e1473d7c6b9cad0b4431acdb9cf2c5077a38da84659d69ed32955b71ff4dfd3cb10010e2720f22ebed84f25ec6f0230cc988e40749635bee255bdc6b60063aea10b6092312bad66530585905f151935e545b83d25e2a3207167d751712ae8becd64a0110f1516b2e3bc6af7c764afa588025b512c43ea396a0b6769505a60d9a2c32b43c74b0a46c930f2c6e6848932ea93873d9f9491c65443409c5dc7caf09859549e07951249084ef4c39cfc26af0154b8fbcc0a46c06eeb0ef5770011ed59b340b1e9d2f40b8d9602525407e44e5878e5e28848753d908206cdb88c5a9714e4488943090155c786d013d2d7559fc7aa4bcb6500af6325923e9e68a83f3c3a1b3ecc76920edcb85c88437f5798a60b0ff3f5d10d46ebbcb67b8bf1fd7ca2e4612710d29f6faba209863e2d206a82b3b866d5fdcc9f0d03b4e50ea37d23648b91d09ff87b10580f21d847931ce2453f1607b082458038d280fa2dc05332132476d808887d9e8d4fc54c363d9bfd454491dcbe7974523c6eb0d0cba0e802989db24eeba5dd3d0b5d09e7624efe7b3841b09c6d8d731c2172d22018274c47d00b0fb6a87d260b8719364ee0a68dca2ef08f5488ff1497b5f53f0d34c5150b73440a74639e6ce9258f47e61b3c4da289013611f02dc90ef5d6ae1857771fe5a9018f46402e5576a9f6bdb10f77edc6ae8fc2a59d27179b01fe4796c336d95d465a7eb2881891bd542072bceba1589b852cda0df41afdfdbc0a3a55ab99a162fc9dd86236bafb6341fbbd6af8009f517b8fe73d7554f969fbe840657f4e2ffca67162537af2252b3768de1f7a081ec4f7b680fd50f76e41c872903b4553a0fb29947fd5394b30fe5184830bcd32a8205185f094d7f58db5fd4d5d8905d3cbc89ecc2d06b16e65b0f3ed233b43c2576de3f7b354a6abc2455bf54090b5489f60bd6f0c5ce6bf97e51691376b299c4a0275520afeb02954517d052b0cbcaf26d699eaaf51c0a5d1db54bcb343fd732d9440cc3b50ca9d647a2f584e5a1c948e9445b56f705e1b3686fffa48c4368ab16b507114f68c763b79318ad9e65d0aabca9250bb4550a38e065be57d4ef5488f8f8003a6c69c21f39c1f2b853201e362d41f03ffee85d1b03650d6ffdefbcd72a25e549172eed5e396caee1956ef60446e544a9301e9b8ab552b206ab7984e9137708ee9697c8d17dba6f35352e61fd061870f6c654cbeb62becd841643cb29eeb22a76270eaaebc95788a95351709ad1c559f046b6072f9002d6e22f2e5125639e958ce192c019b1370861eda73b767d34b79952be2101a6d8d0a69b14552686503ab3285ee14411c2cd131e975b13ecead6b82b10c66893ae9631b87a03a2bc06728c2cd4ef2c1feefc8cd1c2c1852ab8b87cf05feb36a55e12cf913deacf6137ddd8bc9e3f6f7e48c24a3168060ebf3949307e0f94c8d513523d3a3afa7cbece9b71ccd162dceae396197a55aa3e8aa1e368e6ac9b7eca2c0af5388f0939bec1286550e67c9623ed873e83f7f65a9d28d4539b9b3024ac9f6e724c87131733e0f3570fdb64a1723f16eb1e53a06379c94207131a32b898cb4337d98c0bf658f3215aeb2b5c4fc850c7b48b9df4791deac469ab27b6fe2882f1517460ce223776defda4382baa4681d25cf775d775f32e8211f99ecf552d811765efddaa6af5ac508004d871a93bbb46aee7f6651e3570acea12773391c9b6c0f59beb97af83d11ffd983a0fbae953dd8d34a14a9de055c5c68977daf79283e69c3126477801541b944c9d2d7b4b8181aa54ff1af3e705036a0bd1490150cec1c408acb073c889d217bddd653d412c211434d0c19a16d094ae26dc205ea9ca7b7ab9ab4f9571c56bf00c029f454747a82f9f19481cfbf680de9f501cbfcd77c24ff8301ce5ee466dc000b33cad3d06e08b23370e9916acdbd3178b5ba3c65f5029b934c3a286ce5ff89698b4600bb1cf5dcd1203a3301189625d550b2a79fe4275b4f9163748ea985ae588f4732f5b1f760be59651594ac17fe4032a30e9d9eadd7f9b89eb794ca3aaecff8e815c790060d56f2d988de74b12d1821be24e239f2982bf5ea941874c41b8d472af2a295e48d50469f863b9c42c51bc237e8052d275ee154df7da61bacd206f1e59e47fa56a70b1b1fd662b17b64fd7424530de121842b6c353da91459c3baa8a747da6669cea904a4c3465cfb352023cc498ccab424019227ecef4ff5abe2360ae0872446416da4429a7c6152fc4121cfb23d08d25e8e93837224f33efbfb67d9a11165fc2edbe8526984714ef2a2a9333ef7bdec26356338aea77726f28daac675f08705e05704555a8adac3f778c9424e5209f2611d0f693d7abeb273f5a65102eb822c64ac23e65608b6aafa028a0b279529f1d708993c021510b41b3e4b3a8850d5db2e87b48171e75d1f26174a854e29069651b2672441878315ab35cad0aefa253dd23f3e166e01b136d2283c5399f9449224e8a6ac04e59231659560611e026f545e7064e19e9d63dfb451662731fa06a79c9a108523dd57053d6112d66983aeddb8a9c9464fb5b4904db1fecf6680cabea8fd02bd3aefa93b9ed31773c672ddde1a389b549e3f4eee00c15a2377e83e34f33bc0b32145dae16b1981488d057c2266d7b7522f54ba5884df9e6c29eb0647af735795979e50faceec757a82128c495b496ff436402e55a635c8c36c316b741d9ab3e11b3dae0af9100eb7f59b3e9dae03d4d91a3d7462a438e5e6f6054653d58844555a527ce2d6b5397a19b83c55f47d49885dfc40a49c8ff7483b64cd417604530886fdaef9510bf0045e0dbfcc1934af3b504cfe0153eea8957e372a290f74ab6b90e48b2e5b7fc93b528255c0d1e3864666f5568854b6b601b6a609d6449bc52a0bfc9271af6bc8a0defd2751c422cb8b6bdaae4361f1a8fdf04af5db59b8a9225c6ab0306e60a54eca2f27cf175657f3231f41f5877124a2ad9e06abb88545cb8a0d5b274e38edf9634f841f75a171366360468fd88545acbfe802cbe9091e9eba28f24f62982500f8dd796b532c6ac1598bbac579340559df0520af3df01ad62e55a868a3a50b5acd6b260cfc7c9a5c46ab6ff2bb0805066c409fcdc60c451bb1bafeb24caac4f471bf8d64a80860b6d56223ddd4f7a85332ea83314062ccb3f25c209a3cc8e3efaaab47c1bd186d9c81b70c09b1c8482631fb5ee36798dc08b2c382f5b8da02cbab50ce7e98f33b25a70645cefcd3fd5f8a214ae9b4e294f9aa960eb36a18977a9f87454f064d5d0ae03516570f25fee48aae300fb2fe52020f5f663074a80e3d81cfdedda277c52eddc90a7bc03d226582e534535504775a987a2c34a153090b455d6cb2544adf7860f37a533d0bda45b41ed7cd367ec3d3835f08e908156d94ee72e12f041e37235c607225631c6fa455665af99aae7a711941ed9bb77bf986bf7cedcb214a0bc2c74f55551939a010b2f4d4020d7d6a398a89c55a3af01eff640e96fca3e56321e0447f08c3362ef887644460b434925825af0d8b777b7639b316f49c6856883daa244bbe1c51e9c3591a5cc42b9d15fc5c350a2b1e826813a64258bd29e8a16a4a827108d52f98a423f9f81a345e5885008d96b7d2fe0166d2306c747d48d378b65f9650e3989aba550a8b8b6715b365495341e76e624c7066b1d3e437495454eb3180a4ed37548d5c0312d3a9ac1032292009e3c983111371a8fc5382e9c54d39937a484f60cb21201e470959761b83571006a50a4d3f70354a2713338b0aa3c068173211c4e88ea4e207930928605e19ba3eb63ed793b9b8277be7daed904b123b67c51f9ef480aef2a5d8f8d062e7e073990604d9ecca1e72bd5fe61cd87b9e87e24314a29e5addcc4126c17813b1f24d088e9d09e1f497cc918aa980c0fedd8fdb031dbdda7d5a13379ef868d78e48b59c87d581bf38631600d3590b91c0f0f8aaedf41d4240540216979e8540c6931a8920df7b7f63d33c8db151c4c35109b92d83afde5ce38383220d4f801103a793e5dceb331272a737264009b481234cc2bc41aa4a233fa95b8a7a137eaa82bec80741051daff2154bd6c7ebb147346da1a1bc54c0c74c81c97a21318ee9eb83f1f5818cf5d3aba41acbc68a54a7e48fd77e9112b88da888a96c719127a4aadf04a989ff38a8d146ddafdae6226638abc54b70025f95099a4e793360d581d7f9809af529155dfb77e564da2ba34b2878c8f192692173008fc64b2c5648bbc0b5be788f59e4b55d83b0c7bf71145a4fae760cf35095294db7ce1014e6aaf0658fcc8f3e30066616af89b6f55dd6f024ebda6e5e46c06a5558203870d1322e5866b500879a7d52dabb6aa596e563072821c7a4ebb9be598136ef47ee25179eb300be6b79a54ab44e8f6f4d755d598b8468d166d9c050c02ec0b895c15d281fb2c0b2fdc5e4c818ac063a446378d9fb5b7747d2e369295b3266a82825c1ca78411b29a54d57df9759f9e7f3e7a555fa60c5f82da205aa60e0f2d2bf845ff460cbb8a9b3530e270a1030250fe0b195728204ccdc3affca9083b9ae5b15f57afaa57661ed8af34fb83131c64bc06f033c60e55eb2b0d4c253933f1d5b1cd4d592e8e1f49d1b9021b5e346449a58a47462d663fc50340d54153a69d96099219d45d629b0f2b6b8c420b607031088a0018b11b4cd1816f8247b0aceb2ee9666f9e234015d646d95e258d33f901f508f2d010a25268848806ce85fd350c8d5c37dd7cdcb84e3c26682bc3e844427711c7ea642d5037ebbf9b3ad4e93aebe5a28b837ad313d3c64688bb1cc90376bd71be50ccd39b044b9e99b7ae91094ffb5bb28a112bddded1ed263acc8d198e2f566746562a436701521a6416e96628bb8294e37a568b8079c897ef22db1000374163f99f75d536326b14b79b2491592d2d9c0974f0f449a7ab97c41a1bd6845e935ff7d964035ac2584fe99981153f3d520badd7d93b8969fb2981ef50fc24711e4f27b26f66db33901c18a8ee0ab12a8c42fcbec3ce47a763edffc8dc3328af22294ac54a7b4c8b25a50b8f9025f5768a7b85fcfe062e294e111753dc2b808a950bc8727727943b528161fb28d63f9f9173e19ee6f333295a38dcb22424ab20b539a1f0ed7c5d0be48e86856bb562f5d4fc684ac953946ba9ee7cc1bc48aa6a0de286ee94af849f261c47f922e4614f39d19428bedec6b176b66ffb54d717d6ae343c35b79a2fc89bd1d92d7ff6057c62fdd6bd02405bd05f59d1ff97babb61e77dce5882ee94376992e48955e77460c8d42c3f227ac8da339e147f1dcda3a3d275003851ac9f44db70f56842b41de0fe9e9d15b792557eac178389cda3272441e285f6b61ddcb63391103635295c0c30dbbf18c6fc7192465c928229c7bee960853c33b5cd0e4027e4da325e3aeb1fd6628afb04d8589d5c5e5e07eb0a05ef036ed87121e3718ccfe60f83f6d25b7110b14946ca14d30fdf344598fbc03c0b1b56b8395aee869e2fb7079e5eca3b72ccc13392ba7fb834853f102add99afe702abf596bbe27e7696c4f6df93d72421577071500ead463c24c5b65f2eba49d9d43a7c6a92bcadb5541e0567e381dd0706a8ee953232278edd400a5930698448d68d456dec1dd176c555cd92ea4400c5994a322fffe29d008bd2686424f71a2109e431537db08bc1873323e34e2d3f91bf1ff44c206bb87a63428bfa7effcb996e1923bcaf661ff91d466dfc3e9ce8c83ed11ad91d1891ef6d8d003399aad3dafab40919104bcc3fd03920a26fed25b45f10e83ce613e7384a97eb4c08a3c5d9b01b27d4255edc6598bf645fc8a57727d8cec2f9062ff546c2ffa6303821e1d485644e74fbeed724d17e94f57dfe18776d3945849a34ed0e6911c1613eb117cd412cdb1048bd9241be97219590237fc69c9a002493d7526684d822747d488f9e8135f3ce19d878619f355124ccd7baa535909d592d9d701613f311ac8e2a8453a5b2ea3b5a31ef2e2edbf0b95ed1f72546e6f36399aa444ae1c2aa9be38762dc8aa4e127fb1f7629922f8fef581ff36b1b312728c31adb483c0743023817d1d4911ee1962890ec5902a611f7b95f03c217f351e5ed1032a0813a72d565ff444bd2ac56c40e8c128bcad4d534b7c44c86bb5c14c3fd2f050881a7e2388193019f2e8e394087513eda2916296a2f31255e8a3dd73b6edd32c08ac3b2fedc91d1afb1f3223fd7f4fc43b48e8d7f72ff8c5b530dd8c5a828b23eb68f242d0b03081774228e55a4cdb307c91cd3650cd32a433f55a153e60e2ce65633a5c15888df05844818fd9f532dbaad487b7201414643c875d28f1c0447f0252df961263fc4aa808133179a42b0eb325c074041fa03329088a873b5e953a37e75974c01082c059a20c3830a6a586ea44b1d971fa460a67f588f72a811cb65db0761e153926576b8505852c49ebb24bc6297bc0ec65a3c8de21d8cd514dabf429edf2bee932c31d6a7b9faf4370346652394b248a76edfd98be0a043906ba401298800ebd98af79679a9cbe56afb65811f70b113b714d981cdc10f2ddec6534bbc94016a83a771fa08bbd2216d1672b7f4fdb2fed9114c956fbe20cac65145cb1e06839685ab15d8e3317b99014b2428bba5f79cbcfade8a1e19dea27c22bdd933397eaa4ff680ca9cf6ea4ede54b5e324cf1fdcb5778e374929aadc9addcde1ed0aeef1a3cdaeda01cb3552bddaa928704371ea926bd55844df43436b8bc6ee2d2fbc5e9ee2423058bec9d6742f367c03bb7193c84027f0e76ed526e123619bac66b9eb7c7fa9aacf335a17608e29e7919175f1c75471b92dde7fa5b2cbc6f06c99814debb1504747c2b84d2820234bab8e560d4b41d9fcdbaf0cbe1d569289b8b950fa748ab9a9c700d86d63de020907b4c7eda3639783b7a808a8bf51f4a281fbb73274a57a5795581c7222d6294dea62590a059043487dc2b87312d6f0b7c03ae39d22b10e46805965a96c265e6b5ce1a5a338db4bced267490c4bd6bd37a59e6becf13367d48acf6ee1199e5b5379db09c56241645fd2a6f8b12aa19a38f84cb23634266dfaaa3a39656791b4f821ac6e9ba69ef033239c534f2ed69bc0830ed803d3364d6a13414f275ec6e9d2a7ad42afc0f1468961f3c28636c1b032237aa540f5ee5c9ac7708b9210bc0ade5f20c10760296419c7fc551ca54b87fd4826549ea7244f9d99ae159aae53b9c13d651264cb35ac6f1ddcf518d1a5874b6aee7558bc13f2bfc2ca432af0ea58b503a90b6771523afdc190158603037b431fcf96b488edbddd50fe450f503068c995168a47c5a3577bc73804e19296f2725f99e1ce1e87b437673b0bf7f427c8257137ca25d34cd5451bf5cf7c4a0de9a397dea77800a3084c370e271da2c70844640202ac5887dbb59fe58ca022ad6686da2e9c15d8a8f896d2490610c6a97fd0a50ec8f7141f1a13016eb61cb4ef397d4749160a7f95e139d1a02065f2c86f2539e88e3304b10adae983f52a875abd9ce8fc2f695b251e07583c0192368c4085c3b10150c6e633e76c00ab9e46b74e3bae48f509c7aaf652c2fed8344ee5de84cc022e8170a2238ced989f6b492a5a3ae617f782a813077680d6b7564c92873c5beb27dab498196f5a00f4ea768e18e0525676601f85555b2f2f7f49e7669189e10b7f731b757a8491fea27401aaa1cdba6f0ab2b02205089a545cac3867986d5ea36295c8066850e4e2a444b7d4a13d40af2e9e5a4404c4611f32fe08b830bb719706627339bf32573c2e1de407fa519fa782cb429741419c54f19b09803e10315dd3f558b1f4932af459161085c65e215c0ca2de94311058b6a782cfb4f117cbccababdc6051527c42628222d50e7028b57c042c3ca2311374e2cc31314757302b3977b226f731e8516cd1325d88078aa84164cab5d98b02462705e7912ad683e8f1e76641efc60ef9df07c0769d5b2ff6c005684d062795d8007aac8cc304d14be446ee08ffc17271bbc4f5a56ff1d017d313fb5586a115850de80e9491d2e257f65bbbddeec8b3bd83aecf9a845ca354dc842f168f82aa2e070f7636edaa692b7dadc63397fece3a93b788f8f816aaf7fbb10a8007db2f22136fe48d9808089104ce66fd9171b1b8042551472c0179dc15828e3d1631016621d7bf734453459e233e1a2e2d440317f039c2a73a3a29e61328cd7e90d93faf1e402771be8d952a2ff9101b285ac3c0f57d4f7de56c7c255f8ebe613a8bee636ebfe849d1e13c8e1a17a8ba14e94a84e6db52bb20006eeaac3d131c76725f7583259b5c654ecf0893eb63fd030feb4d3bb924af8f826b6ddf1d86ef9546122da9a4b50ddd067f82003adbf07d112ba6165cce6d6b50e2f6454e78932da5a0d15155746b5f051804623109626483148b034448f113886a062d2e8587362adf35559f3196d7262b49b933695a84263b7abd26f0698e799ea60ed30cc2656682e98a8b9fd5796f2677d263c012ca39253b42a481d39b98f5a548f855bc1a894fe68eb311c78a2a6fcb89cb05701370870e4fad58e96bc13b2e345a159869eed30679bf5209f1b394b429eb1a7476f959b5a1d4b306c707693f5ca9d5e3cecb1151434867ab4f2be7272a58167e46c982b1602c28aafed7d0eb9572a017270b564017ca4821da84ce834716a06905feaaf76f5680195fb74ee0d60ad022ad2cf4940216a2257417e794a0e17aecf76ceac4d1d12a321b077ae2d169d88333b9d6bc3a7d6c8b528c53d0f9edfeef47b2e3e2988ab7df6427436d0876e75258f10d918ff90e8a32b2cf0d33dfca004cc181a0a8b9bec6280714a804724b71c40230425c71202f76c941b6a26390630960e89ff1ae772033e7575397ba1c7663f84612d7f16cb85f96c546054dc84a6fd17212a66301a0db6e64a87b53376f346fc96575ef2bc7c22d24175069bae7c47116e434016fdcede90113c85ad7375df738765ad89d1aee3408ace28930e270259b9421ceee5baff074cd5757a2901bfb920f6ad7ba0e8ed0787c8a4050271699fbac07371aa3e39e305206182f57ee5eaa0b9d75be5c1eec240196f45917777f190b634189ccb2442f5cd807c29e0df0fb6aa7dd13b866b77233afbbb136d9fcfeee02efab4107a74327adddcfeabc1d3568a71109ae55c39be4ac632ec6344e2bd2b4e41a18248b62a9226a4c84dfbfda76a159a71a557a8d782ae35c79d46ba41c4413d0d741d5135890e9d59824b3e86fc862d6b0ce0a42454cd6bed369a5cb3af7a58a653fb959f121a54d2c633a583ce8288d33cb2436243693e3d0c59caea318042c5b37b42b2d3399fc90509dcd75516dd3b4b56330e14e9ad5646ad8e5d497cb6d146eac5bc15c68011f59c5be4120618f05771305d1d2f7379632abf780d40a0f2ea91cd6b1fbf3bd8e4b05a26583eaf5e4c8885eb3d79aa052db6857083c4f121f2f89e8531cfe0b3d26730ddf700f55e4833e06e1bac61184e263c9f98aca51abb437e72e7570c693bde49898c4ff623717506f2e569b590806f1c69c801bd6b59fb47e0e392dad465f994c5bf0d7d3f3008f2615824554774977681d4c41d3c8c84a9832a77326af35ec5455eed37d51284e3cb7af3e0845b902ce22a3e2dedea0de8bdbac4a999cc76082b33d9cbc70063d10d4eb21f96a8b87a9243f2b5a613ad820b802e9c1bf82576d43c69fd9cb4c4c4ccf334d07165d80c4770192e9648babd7c76f13b2142c6b24fdc0770e304284c647167d04f506664343cb4bb6e7a8cb90169c004bcb4a43cda6b10006193232d9a1f8b3a5115d66a820e05f1e5420641fb23279b0473848d118291ae42ed28f30481316ede91745f900b512fc3218297c8129a5eaf824fb3aaba1968baba990cd2925625104ac35b6125801ebd510b35f040de0e541234a3f3c502f247257489a739e2662726baee0d02d5266225352fbe15d5dd2042da2320a6478cc72ea4ec82a1ca98a9b7b31b7d8a5f23cdb184648d650cf728b2a16996ed640a8f08d193805b8a6247a79b9d9aa9ee79d5d2b6c86eca973ce9776a5c760a69337a1001fe2791df35e9fb7e0b51b6818a1fe8d9fd833ae8243288cb821e3edeba1da13973ab52d58d05d7ed465e8c12af41f8ca1364d2bef385d2834784562dd2a420a72f2d4f0e78fa3b50fb43611934bfd6286abd7b98494c7de6fd401303de4b67a0cef8b3a96398c8c68e7833407cd8d9071da49fea0962d76f5b40e8abe374e5bc34263acfb5b2c176824b06608b578039c335fee5c7a83e7a3cd028eaf09068a866729cc8c32b2bdabec923bebb9c2fb80b2295b54265bd01c0791d7325b350981e7c984e59c5e3ae36644d96c124e62cfb86acef6164d257e609534a8256d24315202b4376bc5f875e5e666a0f86421ba1ca841672e8388bc9707a7fd3cf7d2f212b50b180d9da0fd561aa8c28987933a6f5335836a89cda7c53aa64235490ee05cdd081b939fe39a885bd5d30e0d60a40a8288b8adf77a82db4e801d9a22433001ff61c3a2e6d9ca542c99676eaa8dd1e04f4380c3e518b111634626df484f91ba11c35cf5cd8102db102b08e29ac0b79967230cc1a7599a792e2440ae3172ab097278fcaa9b9125aaddb1c2228e29ec8ee27050070189ee31589638d4127de2080486530525c2c91ba9f85f53449d5b3653a09c711e9a522181513f34aa254203e468d42405cb96a626f3dc77063b325a9232cfcae62b33cf6e288ec8c8293471694a477721be88e2c2e499271a5735fa00630167d496848bec59a309eecb535e902c2f1c5ce9f0ee082d3a00b14b4cf0f6e7631e61a4ce5c27aac73c76c8b2872d76b9234b133c37888b3a5ae81fdcfb46a346ef985c45298e227b12979c2d9f1725804801ca2d79955519711afeef2aa77b7d7ccfa323799305deb23c4772f1a3746b20e6f9aea88525aea55588d1a5cb9d7e98024aafab79d80abd94694960446605eb4cecf92f54858f956f1f8d57ccf468e123a1cc5564aab1b49629fac8fb619b30f0a2b95adb30b35964091a382d33e25d59d18d03d964f0944906d2f08bdbffa4896745d4e9d773d28fdcba22c82af91b79ffdbcf46801299b30136923089313522096c413b2c9b67670bf08d7a7b8012c0c9c5371629b95420d7846637f43750baa24ce1dffe50596b8af4bc3125b7216e5dc01f898a799ecde04ae67f35d24c8a501ad720a457de2dc99b52d35e17e3fd0ac80e634c0a0eb34d606420bf6469c4d839c0766ed604aa7061c3ba64255ac739186ed9c108f74545cf3f689da1400eb8a623574cd204a29fb4deffd5ec53807089edb12980d6e3585fb788c412f7ecc72e4adce1d146f99af3663323d65e936346d6c9f8c0169dc5908f49f4814b45f4dffb34861c2170594a3ee6821803c265a494240a051141014b83043b5e37076e2042812da5108c9e00fd9b455936dfbcded95477f75325bbf0a53fb5c9800da0b718c65b2ededc6cdeb202ff37d4868b5277d3cae182dd77fb756c828437e57fb860c6dbc3448e287d501677524dd288816ed6458c1f300d17e09a386cd76edda65e7466a5d9fff3570589e2bb6a65bab0e51e24250c0480986aa9e9ee1c6330081150923c3a21654d1a19841f7dfa8c265b4c7841f919ffa8c9c39a5a5ff35e627e3fa2f8e9321fd8f3426a5c52fad7987308a231fd476e0c341fc0a43ea31d484931e992f097846a41363119a3314917ddab1937aef19e4bb658fd0f5a533f81ee4f320c0e8149981c66519d0ed9919176c624d886ed255a24c6d2042f0967119eb27c4b682332c2eaa6f8e0688ea01ff6be36775e092b764863d50b0cf373e8a99df89fd4f747bc51c0139c096555fbe49da8d21e632255be90b405ba53ac6e6a6fb17ae3243f31b224135bf8f88a5c8762c552e433c4fb092bd59aa97cb212172f5809ea6f738735a66685c934074a40df83221e4260696fa49c4965023f368437109d780f26863158080babfa0a7c36f0b390f3e000ec8c0e9a547034ae8b6a6a8727ec640e953206f4f8dad7a9c5fda56f2cb6b230fba071986c6b2a7fc6a67fc4b56a512d64f6d79b09ae6c522fd1c0226f7712e09027d02ddb40a37742efd740cfa1eb51f41f8cfebb35bb1d7e41bf1bf784c77c467384240c01547e8b5b8ae304045b1f1388ac1e509dd90a84d8e3a74a918399bf974bb3a8082a922254a27dd6c550623f2bb96e63154bd67a9d4aaaf58b2f69f6eacb498022a7d3f1e52bbe1c7433dd68067b12754f8ba0411f10d2bd19d3e7469b31ff2e88dcb9956d16b7fc38f8ad95144b9343ea282de497b2baa073211a995c65d1050f4887afb882f20fd1ab2e028b2ed99bda6afa6a3482151fb1de0100f24e00ff1689540a560692c89c96e9aeb329144800f5aa486291e362ae99e6e0d1e19f0ea4eb4f449b78c590bf761d1de3f6da1b9f32a7609854f7e651b5c11caa53de8e78afd425d52c045a8f23f5b871d2599eb860c05839ef81396227be186ef3883f1203877422435a189134652cb155c898174ff190895d71070beadcc4f2cb8d797b0d2095285bf2795b23ca36becb85c5dcb1a039a9479bf4253c0f74394f31d05e5bc67a8ca5b5ada98695e2793feb650f2dc3dd5d5e1478933293b15bce3133e5b3bafdee8972e27816f9c53fd084a56b825baff888d346463a0118df6249781ba63e6dee23621963346a54bca08de5c2658ba2f5909e4afd08201f302db65b861f719801ef0938f00ebd6a658f0737ff386e1ebc0208ed75befd6113612d0bdb46967f7e91c44cad7b041f6ca25949e8368acc4b1396b1704c7639a009104c99e9dd2b163c357faddfe9d68a92c856a61b0c58b96fc1718bc08334e5201f8abecae6383a28d8d19fed474356a4d2d6497d26b7891596d40671f7276b271e4ee8faced954dfa690e14f51bffe50851f2d565d5593a61ed350aff16a69066053ac7f10af6f4bbaa3a47d2f28da18b4f155ed18935ebb2e2627ae2b3fb9573ea7424ce48d0f11c61cfe5dbb0dbd077bc8ade1775220e1138f089fe6e8e85dd2bea6f438d818b12d094d9f216ae4a01ee32d81409f124d01e20a471cd2466392399d0f3386e8eea427add51b2c7ab64fa2b109ec63cf4b8e84395527b21982072b1adcf26ce5fafcb6ce38ae98ffb0970b154e3adeca9e48bb538874e021167004c7f63f2d51f422b827ddacb2f0976d6dd15d383c0c4fc6724a11e406980e83f4c145599b80e865a130220e912fbc8c67cddbe26202e7e5cfa7873c14aa04fe51deedf1e29602a2ba101887759fbea19a4fc779d6878095ced63869b90974735fae090250597d1115d6d664e315b8dc0037a0df55832a6351b21d43813af0c716ebbdb8831e3096a8306a5c10a12bc731212c16220135109089e397fc62711bc47d3a35744a2faf46459dd43c19c34a2001b6291bd626ef07d09b7ecad1319736a737b7610831d1f3c2b842017666415cd6085e091d4a398262719bc2c524a4e91282ef88f451a5834989736dd657020c4598a10c25a5d05991b7e00909af3d651302949ad8b68085c611163c4a05931b39069d4ef1e60c7bf09d9a31b8f75db622bfdf58ef6b07f8fa125b473a85c6fbbc2d0391b24e692c7c81d34e977e4b1fb40499d1e911566feb2033ebbd7526ff94ad7dc09d8e539e70642a31c4f1d0c34bc7531ed75854baec110f158a0e8deac3344c1a551a0ff1299f50d875bb73678d16d30cbf8db08a7c1e07104da8232770a268b8f35c700fb80d3da52b20b2dc0c8cfa0d779942cd5bcadb532cc5201884e9bfa97d0510a24fc60dcffb66e52ad284d9b1ff3cf8afbb303d40ed3ec9bc9f8eb14139bc6b9859909b4ba898c99bee71306cd2182c6aedb70e60dba3496d8f108161708751d8b3b9275018e8623b2de13213b4ca3c4a2cfc634c9bbdd7f4fba314baf3f40e4bf3e15d5e6e68a7e6dbf2c40057d7df03261385ea748b702087df913a6f51a9c8a9effa5d7425c6804a59f418f71db09f160bc416629558105bedeb25f23191c3ddc48c30f01c1b150c6860202390b8ab7303bae5b3978582a82dedca993f5f516d062a8eb208d03a231b25767ef5336b0870835b8eeec591b92eae5da1cc02fd5d1e42917b348fad691d4c56cbc2d9a52c22b2c87d8e3cc3ad96895f798815862d5b583a96ccfd4a8a4b0652acd367cd4aaea1a079d870d5fd43282d62fa5a461831e9bdbd3c6faee266475933f875516457b57ebc1a34b0850b2d880bcb750e5340f2948f79f019731e2ec796289ed3b7fdfbd19a12aa3add1c2f18524ae9973c7f0f88b6575d13ac78de9ff4ab70d33bc6ea3ab68e3143ad4ff8645daf69b8d45c7b47856e7663c4154b3e7f3922f9ac54c1448ca8e6ea69d7cc25febb9303fc2ff55209e35fc3ad4953656d130daf369ecca15f442c70fb0570bb03f73f60558af69daf941692d5ef038615632610c1d93747f427047a6c7d147f903b4096c765670b4877598a7502cbff6b4261a02ab72af31e49417c1b2244f33164496e1ea25899a2ee785b77518c53719d0850a64be98eff8964020e3efb1ff671a7337aadc8dae3c37312bc17d8a447b56d16438dae9e5e0705631df8e4d769e5039e91803e40b3897f1ae7b3643520e6a4d213f43eb8e3bc35b5683fcafca381fad29fd94698e11c77c416ded155fe07911d9c71700170fc4708a2c60302503b22353422970c3447bfedc95e6af2ed49c6ebade9dedf890014f6b90a3621114ce1b239039938038d980d1122cbba00d8b2a0d8d56078ac5204e367a39c2d73e04d14fa75b1bc3df454c16c10d9e69590698b42b8e8966e71435d39d345951f69972b8a7b4c8f45243f824d83423060526dca9178a486148caa2a3ff9701114430ebd401e67828cd9c3c80250fb859bad24743a41aed4749d5b6eafacae23220714eed4ee21c7046c4ff356254f619365ccc5882e66721a6f8ee89ca06059b82c77dd18c4708b6e0662de39b4ff5150c173cbe1cecaa005c9936f4edd351e2458ee79f2cf395b6de32d968ca3d627028542cac0c669d9f36af612d0aca42aa983290e1f9342368ec4b02e4ff5a98e3032e2c44cd33ddcf9820a2c666ee058a394c7e226480c31894d4cb74f0472af0a5ee38883337ec69236b825df5c2bf231c8b71776c640706c2bd435d03081bb007265d0482f08ea1dd6c1224422af0f2d0f125abca8f070be269a1c6a1a69e6300fd90e9ed53044bd3264298a7b3810cce8400340f4c0bcbeb133f89e6f3673b21037d1109b4cddb2a26afbb0900b9b7324406d83b9db2c68a95a652420f199b8c2d894ea17bff7128a1ef3fd0b2188c6fb2b29c9c213c4403804421e70bf44f75f02508786909705192a41bc88f552248976a57f2def2b90a159af464c4126c5fafe14f62eef8994b01945644a19fc1e6666afb426a1a075da470c6bc3116a012d4f7d5172c0294328266fc4b5bbcc49ed876cedf17c0023aacf740c110f596fa3f1f8136c5a6ea7aa00266c27494fe47f6948ba3702e09c844cff05a4af4057309cf3ef94defbba68b740724a4cc5f38e97737c50054b5a2c75817d4e2937ecdd27d9a692e481f8233b5c28e71b02203ca9212642bc94fe88656bc25f2b5482e8e60da67081c41e6955a50784c9c3f08c54dcd85aa89e05a4acfe4e94df0b1273b40eac9e5ad80daba898499c77f244fa6bfb4c0c81e2d81bcb578d868e293d1a14466cd074a8e7757795129d69711ae0b58773af4ddde6de4854d76d99133dceec56c05bb01173b96b27cb4142cd637d6a002c15ea76b50c397263d2fd42da7a6b8b0b038dd2dab0727b55fc421ff0da20c54ef1c8639b9c9047144a57861b8acc5013668346fcaf57d62967dac4924c69ac899b60933ffd46eef6e3fa30837eb92a5a9bbbfa163ea55a7c98c3f7529a7534057d0f9a2d1f4371873485bd6fc93645c5d5d4a0a40415918001b6ede6aff768d0194a8d84e0d2b6c0b2bf2b6c96ecc2a83771b54e4b1e66042fefa0b440df04c5983b774ee6d6b8e53db8ea6a139d2c6c3b65266143b069a700f627957251f254d9763159a7f13d9b813a2eb7ad2a1770f197242d645bce653e6e7e31dcadf4b1d93a814c9fdc602efcee456d2a9b888a96e8fbd8ef463501d01bdedb75ec52989d003e964f67a9c22f1f99ed6ef8863e18668fa7765d99768eab203cb11a938d2935bd489c0017f9bbaee663e6150c8e0570c2543e43c859c569fd045393b9c173045112a0045c40c11f8318723e7ac833c0907cc19c2bca3e850e07eb249b085c27d8b8fccc452fbc52c20aaed78992d59884e5161bdf5fdff84405d5c0150cf27ea4bd2610931569b45511841f01f3faaa97b6ed178c2e6a231476e3f41b2e02cb52b9ca10641d4f64b4dbfefdfd55243922ea60d4060930eff046402365a8003f53b02c1084e089069d347ce5deb7f446ea5e8f35ad8c0944724ba089f48f38649bee9e51aaac884c76112ab8b56898843e392adf2cb1221ab6ab8b3df8d3e57c0b90cb34a0c2d294c26a85d0c1e79b1b764e87e4acca0dd4edb1e6ffa6dcd01dfef8db6c3ae213b69d416c360fadebf516e581ae87f96f5b098a00aeaf0bf0555072fe341003e4fb3f4cc4cd43444fdb0c68af07e702b4401ad0a5b6e91bf94f74357adf370b0250c06b531abf1463d5bc0f640ae59123682598b4bee05525b158555af7e3508b148d210d1e58f7e01201aedc2bce3fd1aa824e773d85b7eef2d4410b1f4efc978415433c6562a1a86e892179f1661c588e13f00e5b14699417b4f018fdc395fbfff1bc5225bec9ca4f82adfa3552cec6aa7af73800b2e0adcf105847d55b07c96a6f5ed23caa7aa6810ef153306e35a63cd9d2994cbb2a413b271224e9fd6d30ec42e5cb19eae401ad037f48c432621dd064e54783dd895e5bac3ae5aa51a0ba2ad556ad3af5aa5fa57aaaaaa956f52b5a11eee2976c1f3217c2e8a231b2f672988142747be0b226e793cbb72475971fe1f94ee4bc6e1d93c5f086eaec1795f0ce65e8219ef9c054feec91b8ef090c3851908e62a6e907a40187445efac18e2df5d9128a9bf51804f0da3235ad19256a83b8c8eff77b9710034aef864cecb7cff62012146578f71575df8af2a95cdee6627bf102102871ad8195939bf3d8e0fc563cd5ed7bd784b9fcfe93c1b979242dd62753b7e9bfbbe09a51251a81fa8a7489f4db2ab9fcbf00a4bf7bdc2e360542c707d2501c1ea8c763ffd058a31839a8db571a04a39ca5d284c171ea2f8582eaaaf073756166872334c24dd9a17a33a0cf9aaec039d4cc7eb6c021e5919eec804eb9bf36c29f9678c6497f1ce1190c83a9959ffd423c908a9081bce08940ebc6081db2ff7d31e07a9a4bc383ac0b4efd4a10b1e3b3f26a7a95c51325802468bff11c8a93bf660c2b632134d2f5c3db191c280339530dbb7b9eb71a5195d3b2130cf02cf63369032c97e1e2bb1ac0487c287089de6bbe5ba3d81454bacbc226cdc519566d1bb05812099d4caf3bc9b72e1a927cab727152f9cd26cfc6a6375f5ea02d572d7aff499885a497b2fb906bb12aab8b1d060b81ae49ef8a07889444a279fa12115a6b6d119c1899b95e529169b503fb9390f95866eba0c77d8d05901f6ee7fb88e0fbc56c829172776d2dd8be05f4c78ccfdce84f96374b6bac60b77dbd97b54f66a4dd9e56148ce77472a8b830beb74c555c9bd912907a8e871a749aab5954e828a26634d1e750b184a4cce754de4b72a6fd58fb10dc0300a635bc65450f63938b75c571c019d1426ee3f5279e0503f40c2a2c394bfd6953e3e980ae3c89ee9cafc16b9cc2434b5246270bc32d272797c3e809e963e0e025755fe68003bb24bb0c690cff55cd43fabfe797a038363ab6f78e8740d81593e5ff22d49eebc9209cb4e78dcc8e8eae1c7b0e5438ad1e5f293fef8dde9b42bdef86c75c2570a05610502a74dfe0c749f781c52f11f99c1ffa58192b3a5407b093ae963c4ac9e18b272e3d8720453954213c210dc93f8ab54b756e8b7b62c562142219fbb79f115aa18d92da15f8689aa226de30f588d2078f3aa23aea51d47552f96a4ad07c7cef4946a16a44e4108ec0b0fd68e4bc1b23e40f7857adcf7b550ec19d648103f7b9d3d41eaaa6ed8cf81a7f0ce6878be3da31b7921ef83aae9fd862463970542cb64918b54bce8a4554fa02705103fa150402955478cccb41c458bcbf256d325161b0e529142aed6f7a7b3bd4b2da267c19aed945f45186be6d733b35e7002e2a39ae25d2b9865d9d54562c45b70badf2fbc5bfe90d80f598cca81763f8049e16a895874f4fffaf8c31e019392ca8ca7004aae3a7ad5b5af8bcf3e2034580029dc89180c166ca22d2645cec12d0c39373937d11064ebe749bc21df7188f5b62930818ea982559fef2ee4ee16d5f8302b4d743026cbb9e51990029fbdc2dcad3160913c966c14a6801c5a85a7843a581b27ef5d121204417e480de2cbdef3e5144ea511b1d1c0819e4a8cfc2a6c5bae6b234ba70f861f61c4c8ab904a9455bd877796a6c2c448a1f1d1a21702611b88c2cbcd814314daf0b07e12c15602486c70bcffc52bc569b061c31a64a018493bc064f790324b34a500fb7a870aba0aab53e10e43aecadb2661003269e551a36df234e03072ca4a88a5bc8e77e378d564edb1d14e3f944f06d2bd6809e2907f5dfd67c8a430d3c4fade1ce084449604dc5ab92812eef153942ecc130522882f26ff72a48aee68c1da84663f1872cd7feed55c5de0e4a22dc1b4dc7cc330e7875596c4712c9afbda64ef9684194db4430d743e9bc3ef26297a5abef543d01a7b21e86ea99c6057ff2d351667159910c3dfd56ff9fa8d76fc40bef17f2257052a02f81e0f1cff8ca1099ecc90c07273e649a7958fa987b21bae3b81e5752cc6877bb1a07801bc2a3a232254822bde0e7add8c6b300b1be3727aedcc78365b82fc01e3973462bc70c72511f8f028a4962dc8527d80ddb765a6c7e45c414400379846b37b1715893d8b9e26301f0a85032b00e0706deed2fcf2e7c617b10ae56131adb4ae12d22c8956240efbfc41ce12917d17f68160c17abb3e1759f3de6185ba4b78b62894e11ccd39af9f4ff3636216f7eb20dee7e4542cbcab73ab9775dd5088ca09355680627d9b53b9ee3fe790bd3b162431b8e1395a7bb6b2a70c2a7d7c00ecf7c63ddfd683703ab4d46ae2989982c02ebe8a6a3b927dd4054f6f179f57e8453878a18208b877a9b9f28f12b291983fc286b84da48576e7aab12692fbaf8d691020dc41e96a2ef3e973470954272240bdafd257fb9464bfe39e6dcf18befc7299fcac179b130090e09389d107ac2cd53740225d9c16bc9ac815c7c50ed20767430689d554be79653f222b9226257d4708a9d2d99223114a4d1db768449c86473aa0fc3c5a0abfc32c548ac66ca881f7f0a1f8aacef0f75b7b40750bbf8c66e6449bbb9f27a3ef5d7d69614d3103272fb487ee95b628f5e74f7909e08de93857711a1d19a9118bc8fdb9106444234d472c3fef66440b0d67fb7dc900a5e1a72697157cdd4674bdf5cf2aee5a5ce530ff0dc713a36999a923cf32ee4a0f7e5ea1c0f8344c561eb5244172bf2e6a6ff7b964f32d63041434129c2a58f36efcfdf5ac01259e91555442806e52cd04a74678275a144341d73dff69487e3d4c06cbcec21d4473b19d3c712b52b7ea2ba015e71f780a31c835ec2bbfdad545a6a2cae72276c6d2b1af0a8a008b861d8338d565fcc32518bf9f363cc396a313741b504c6b52c0925e7d488a4f37c1e852cdace3d2a111711c5f5bee4c58b6c704b89accc629d6fe644e62ad7bdca529d4516ed2fb9fb64ac27b390dc0292e8a50501cb37cf87ead06d6f09c178135d6622ee6d66b89e1eec36221e9f89a156e182884921653e520754a19b237993923361ca10769b950c88e73a6ef14b5f5dc7e8d19f57cea028ae8df2380dc76ff7376d57ce2dae50fc36e789d8a25a88220e2e337fe37f951ab6bd1653902b5fa73f34dede4b00e95900e91f89250dc4ef2d7e7a72f181178b80d871e41794438cdaf85b8b1adb385470087818406800a266823f11ecaf023745a98e0fc0af658b9c3bd7587e4c190cff6fdda39c57b7c30b91a55b7d7fb42e9e5d350337d1825de54a281fb12fa0c2875ae048bd0047ca232099c45df5c70f3169cb368e923cbf285264fe04eddc2c185e9bc4f78bb68cc2c2149530437e3608d6714e9b2c9ff4ed0ad6b4c05aabe613cdb740b0fc85aee84707744707baa0133ae8867e74407774a31b3aa013ddd08bced0fb4fbcbfcd0c146d4a1685a2ce17907465ed053676ea1c5410df5d26e13f07ff9bdf4401bc333317c0ca5a18db8ad339ba328d9482eb5a511e001d3191dc2f469e87acf2912a045d1e3afec98bdc896b315c0d9cb4746f5b2bf27a102bdb52d876502ff209a14f65b806de7fe9e2488ac1e32af9e5002ade464df621b768226f9cc7f58d33fc42b3910828395ff51af6c82e881727d6ce82b9638ae2a00ff9c65bc05957352c22f923a899f4e71d1acb01653ec8aad8300a25ae9289d48a6eca0922b713d3dff285bc4dc6107d0d80e87985b291f1b7e8451b9bce2b1c3880ca4a82fb1ef6de33f796b3da077abd6a868d261c44c4593d4633ba4828ccec2fa11d937124ced292e4a11ea8b6f0186d52562aa159e8dce420a29d35d1c44632ef2d5518e001c7a6a3d0de34fbad8a82b8c783597f716bfc4dac0c4771c8094253b3301440b6ca787cec24df88537e52daac2ce4fb43b20c641de9dbf9bdee86c4bb0069ed1320993a394b6a387a59b2643d908e1945539f887a60cdf3debe4626c8936b33f613810c2e9c442e49aa49acff351b43d01cdbe5453110c7bfd78ba201940eca61b8b721384d7f3bd2032319376c9cd7db2c831b9b9d4f1c17582a9bc59fe923b1cc65bfde65446080f69821aaa29991abfa2400fcc0c79a4d9649ae24f268a135a84d88a2d0966f981506cb5da97a871492dc5e43ad3a54b90305ddf2ba099b491a93baca1d614bbcc60e0bf8ed3deb80ec871d34ac3a2d99bab216126e8432912598cdf0f2a3700eb8454325b59e450dbb9c29858dbd58b9db9ae646ac6ab6ca96aea63f5f65485ea5ac0012a1e1a9fc8868a75c587edd3a52c1dec93d08a62e97bd61a5f40148d1b1f8d68e40c67c87e6200ab984991301cde148f3e3cb951ea61b6be67bedfc1a54773c91177d524f2668ce73130eb483b2f57626c90310f0b295fcb17ce7870a74e48cf9faff12942740f481275914c4dc3782c07f8f4eac5a6f1cfe78f4e6ff34f68e163fa69b33e501884edbe61e2d6589b53e9535d2e116b74f4411bfc6836059fd0ee9e52f694a5f7a6e8318f2e8702b6def72013b2bd179a3e0c15ca40b10985ab8cbfe60701740a01dda026d9a28ac1a85c2b3ab293d2d56da034d992b48c79f356d062f664a97508f467216141b2a6c7116f910b2f37df73126feccd54ee4ad0a6250d3b474b162cd981ba8dae0400730d4b59ad775e9a069f309c19d60d0a2335406bb41c788b8ff6c8925bedb0ddfc7a8dec08d92a9ea232a18fb340b7231fd5883461f589b8db919647906ec468a4f7887bf557cac36be541dd3a43f077d275ba1608598a89b2bd31cbe9b77b22a014d44ce30593e776bd8a833bdafd574fb7dc30b39b0c83cd94d1cd77a9025ee28817af4dfb799270fe9dc0c67d448e8ccd251ed12483d12d4d71a390a1ca07bb42cf6d78b8f43356161de45d7438f8749396a7d9e14e6d837e2262c90ef0ebc9e4b58e417c355f2961e2889a73c0115ce4e908e1e42edd3f7404735f70af078d3cc6742f492c69c2970cb9804b339f30a21410044c24faf6b61af42f8d098a0af9efe0023b6672e6445ddd30a54c81c58602f9cad9be3d75734f42a144f56d6ec9ea0e5a3f1d09d01cbefa704f9e60440bcd09853cdfd8ef1f4c347866acc852d33fce697c2cda38315f2d3776481c91fe48023fef732cdbfe4e8258d48693116a76ea7d092ca4a7570f898b36e639d2cc976d3cd0f1cb943d506b3e6a5df1d51c8d90b5f057c7a99c80824cce530ffa61e3e31464c7f798027a788a5e107c95dfc8a0237ab88eb947f810ccf573bf031e7086aca14b7930b92042fd731b36a0a8fc1cb41db15865879417799910708685c39f4904760c433e5793ab96dd4ad7ab34139ae4497ccb44f4087eef8613b00fed248a800f590fc36d0f7f5b1cb0fdbfff7f23d38f82f89d2278330717cb743592342ce5cb2d2f790e5386a5c7fb321cf95fe283b82b726c145bd85e41729e458dc4c5e2bd6593fb4982bd425dca9615810e42536e4ab168d582de047ed902ee77289f500d9a02e9d4b58f91975ae957a5f41170dc925e985fe70ce341d5f3b3da4a1a5576a84416271375a89644a710c7523026a60d8c4bc473014aaa22757e65464efbffbace8a64963cf1bde87cbda51edc756f79b6786b49e1e1b17fd106c6434ce52fcd2f4c957eb7181b5d3a5e29aaf20bee5e890b98e69d35062918b2d4d463274fc713a8918e05ee33000edb05c063b10935425e15785dfa1cfe48cafec33a501b4e2c9f757ee04b5ccc1953e6bb8d294ffc4258cd871d526ce3325793f8bf21559d4783e4a636f9d6c6f589eb8b365cba68a4930034bc895c3c34224137e283106c4431f4308537acdcd983c2feef6c6fb18c464535363f2952957e6bfe9c0e38050c47fc3e2aecd06534463a019bd823094e3df40de3efdbaa50ce2d5d6143986c8e1ad7d823e240265cbdf6bb8d3ac506a1d93cefc7edfc4a5071c68f5d3e93cd8e09a4cb7cc4dbc6e632286915120f646550771c700d57a0f984560881321d231fac775cebfe3d878cfa215212630c39f7c2d11c6ebedcd1cc75c19709db518c78c13f21706943f25aec7cac105e3f0076cebb2f06d19f16239f59ba6800f5260ba2cf0e0849fc69c43d2d78f87694a65854ac871b972957341afd13108143b65e3937aa2b8c16fbab41dfbeedfaab6c0316dce4f75f861047a7ff3d30b9c8a4c9720157599e5335f6597b84edc49f02b19ef66952faa5927233838bb7f2c3f500f7765893a1fa25af2aa8f04fb198df64e084c01b3a5dbec6f90eaccc215c8072bbf1848936e3a35e307a424b1ef265fc27ed71d4010ad82baf3975aa98df287986eec2880b436a64cd8306a0c2bad5732f742a0f81ba163c20a7f6ad72f9c3c430be7a7a086f6615b9c7ef9dae8210d281b45d436521359f0110839b876fb7925864e6173fe721877348df8492df5e6d2a3e8294391ad07910b7405e19e12816eae118edb49499412eb8b804061ee122393224f22ceba35a340154e66b6fb9dcafb68f2d897535f2f4973abe6d61c413a0bd1647a6d5f788c291366549623e7948bbcb1108a45c6c1dd2afeb66d8442141616e69a00f43595f82679673c1e82acb598d2fe2cf6e2c9ad31389566d45999ed639ce1c004d1051a60f387f8cbf1659e8a0c3e8d3a04b56ebb95c09331ae31f453a7c4bdae693f1d58d55773bb4843824cc722040485b93fbc8b7c666988265a96ff66c196e2975625519f13c44aaf9ebb9fe2d7df3013358a8e03fb00456f92c33318172e330f7c518c8519009146c6548a3fd61bc76b90c3d2a53418afa2d916d314a64cdb593441299fd151e882d376a63e0597a09224c6fc7083f02134d769acbf09953b0fecca0c6d57e5b398b05af2a243a67491a677139c12fae14820d986f4c14d89d47b87909b207d9f03b1dcf32c128c0b64a535a97b4b5c5fc1ce59495f2ee43008554c61ed34aef3f9a7136d679e940864c3b6a492d42bf2ea7c84e1d5c5756838a3addaea7cf6d21a04f97fb91d6115e177ad937fb71423a44b9c4f91bb6e7441b9946258c47abc43058cf353fcf9f8d59ab30a72d653d3954295e703d494adfefdd1a3cf90f16f936048140a3831afbd007ee05408648dcaf5d9836fee5133581e3cda5c37a18b822662d7230ee7092fbd4dec5d18c5dce90d7a014e63404bd48e65409b1644eaa3978852dbed79598c75cac3da6783a0bafa6b224731045070ede08eb8f02b72ceb0ca153438a1829e58a0e9098839d8d87b9c771f694830f21929db30dcc8e24eaec5e081d97e819bada9333c3d9c6faf1082256548066b01cd23e55b9a3e5dd89fe642a5ce9496cbd6d5aa1cc341dea400a7d8a100258fd8623bca3dcf616e480921bf6cc7730b64876335ff9036c2592508a77211c701c8cf9c8614a6a51b9a402507b937075ce24b939db4eb598d49a1128c60963b8887dd270c26410fd97049806c08d17c98e772c82a8b2d6e59bcb350cfd4a9f2d1813f582ed9fa916447ce0288a17700486330fc2ed824b16d9da3a36e978ca97c80cc80f130f2bc8b17022370879d25f61b71da831ac50e3c172a7c78bdf9d8b27a62c32f81130319d0bed0250372ac1a6e7fbb98c5fab6e8bd5bff44567303c910ada5814d0a36735f9e0621c7ded6ff939736658cd4f74eca98a1f1eae484113c482dd2fc5e0050e9aa41a857cdcb598d555ab123519a71bb4a7bb65ea031807ab1451b8dabc75324feecc62c3069a4b536a0873af122fe40524d17a5078d6269b037b96eafff97a6a5dcaadd7239f1d4d5b35552f4a608cc7c5fe9f0ecda05e17d5a8841606b6f374d504e3e2a9d4acc1fc0c8b4f3c3ce3eecda1668389d75150eccdffb9c5d3d20d937acd8418e608505dadb606c5b80f946e2d0cb7e66704f6c41db7f99743a17c1f712e0094969fccb6fe9f28abaf00d6c8df50e5dfa3732ec3651dc667005b3fa3e02966c34082d98aecb50bdfceab2394c0ba940e8360875f3723c909014a396b6b8827c39bfe38df15fef3afffb980cec7ccc737da22b80f3e535319ac46b812f17dfdfd8d3bdf59f61168d3318969adcf828a440bcbbbe7f4b250d2c6dcef6d5426bd011da7f115d45b7b95c8c055af02711f7425f7858983536dd512a7a8c903392062038105a15aa761affcec008ac81f112982c82d1128c2f001815dc451c06c602a80fff9a98886daa0526ad0fec3e057ee4e5ec17a04f93124448768961a4e063b0888221fcf3801b770ba41738a4d259f75bdfc5d2d6f37989ae21a082c73d07e99fb9d15b3df4f8b645b819592d187bc0b96a084d7877fd2fcc285862463118f907b05a999aa29951436d94cbc9206ed38e2fdd9cf0d5a06b96e9b6198c1a4587289208930375656fce0e6b6e8668502e3a7494ce7a7c63592a606671c366ab008675d319ebeb0199b14ca2b610598a205bbe3805a5397b42d5d0d58d45920462d95b70c479b50ce57d9919117541d2e24edde26991143648997fbd9d07957618c950e9832048145d5f1ee55835a305b0fbc87b4f4d7e2a463262c5da2d7826e263fe54de0727e223490038c447c92559939aaea23f057ecab1b64e6d64fc8397fa9ad1dc5ef29aec00cbce24288282efdefd2d57f4f6100311b15b63131e06ae3241b213cd0e60331b46135e0ba13bce6a3cf9287b905883e0438f74832bef0d200a9213f9778264326a64e5832c704496ff13ad513f5ff69957ff7706b912db63f9d76970ebd89a4367501c5d77ddb3295489622df26b64e15160bb349ceed01a13a023df3cc5f83d8303df29d3e86ccad5500b5a2d459b0aa38c41e8831c57f94894e8a4e794ae9019a5320c05523a82e480b49baffcfed924480642b1296658453a8ea71d1496fc368fa1b45bebbe43c65806c69b8af9dbc04d7a507db4bb1c36b1a00652632538e7640d7426421973f8a1184e2ca143386a6e89c1ce30414b48e762fdbb4a5b2a940d5568eb46b30771b99e5056ce991d684b597d821971923bd0809342d9415235e0c051057ea38850b6f228e296992a1fba953908ca44ccceb4c7eb82a6cc2bdf5c82943a503dcc000c36de778ecc390fb131644aa420ffdc4200e8220986f11bad906deca691f3eb33d478c8e7cf753fc7df49f00826603a09e18d4df497a140af33f9e136516739302f04fa6e81003cf7bf6065289e0ea54b6f1f84bbb826db4952fc6e1a34773d89e2ca96de043b90c95f3a5c6540d9f5b3d4275f0cc5584b809f2d68f3008e3c153527ad625e00fde44e6e532f2809f5d093f59bcad84852a16c9c03806ad5eca8c1a6b99f4241bb9395da11e859ee1b26d063e7cae9b25f95796262f2583edc25ad719a7ae033612bcebcaa09601294c8b2998081c92a8ecd10b937463301859b67f6771adc67458ea5eaca33309281c6dc2d457e80d6994023078c89c1facce29462840607c534628c99ce1c7e2138f34e6b7f3bf0abda2214fcb4c94a9029a3a147539d8146c713aa71862a9db0323899f06701a66d3779d59adcd03701630693c1ce6ac67496a5587200facdc8ab831f2893f5b4480ae82dcb997202c8ab7c608f95cb538dc0ec46019669e96a38fcecccbd2482b69ca37914f64917c19d9ef19afa66f2c1431af44de04afb54064a8b816d1a7b6576c9086c312242d3a4bad9ac8365f399c53e7bab500e0bd0aabb29e6de59dbb2ad6febe4c45643a5c81aef9051250317289ee918bdfff036b5f4304c76d22f84f85522b2b269c442e613f2168dd440221d08b120e38c10724562386318b3e67eac71d96ab929d5b8d52112bed0b83f9cf32f5b2baf542a7acd2f0d8b5e932a5f21a92284895c7137f2e8a9887cb75ef0888c4bd8f66678cd888e60030b27d201381e661ae839ed415716d899f11bf453a9715a45bfa6bfde09350a779146cb375a7317adc3fc9a530dafa5d2eb69fd41416149067e6d5ec6bad4ab9e4fee46a7b41a6152df12506ee00ce542a68fd6ea1796734af6b012b6d3b8e787532103555f7b536bc477b056d8db717ab06c08d73c1f8c48fe06ae04caedafdf758cd17c429e497593a962997e14de3c0b0704f7afef8deb80213300b348cf6ff327dde2e5cd3a0913e7cc79bb58734c707ae636fbc3cc14a865d67d3bc086a74cd38a232a4934cf5ab4988bb0a135df77d6965fe912d27f8d0c386fb9bf3e7ad30c04446c165ec5da9d79a125eae5fea124bfca412e257620e045e4ae0aa7e1270e7756e0274a894c3183e8cc6e524cec4e9e91c9246a6adca62505376fc287fb4212919e7c6c73d5fd2a08b9cd9a3e4647514b15b99c718d510cd434c194a394a4976f3ebab4f9fc282d80f01735c27f5a5ca81a7d049f46cde242481ec4fdc7c44b1ea07cf91eb281b020d7ac6a067afca3e71dd55bab9b9b3d89f2c10984d74fb4b764cebd77a67063364b28686e2c9cea6bb65506ac288d1cd17d2c7916fe463a1ec50af87d8569696eed33252f101aa34c352bd2429ba16aab667f273fe779e22e7c5b023ad65c734367d62009fc5b4d5a1416f771458ed80440f3d764ddd3ccd0bb3ca9bf1aa639dbd5930e8f0553bf8a371ca6453397e5695f236efb4eda8148c807224164cdb38b5a4be3e790adf71da60997b150316bc6de3362c24058508581a630a17bdd1a4ce9e6699a3e4bf454ef6c7b677b364ca500ea0b49c28461951dd4446d1255909aa09878e8a6fdc676c79d0445cb14fd77a7d2c8fe2f1d90474d7af93ce024ce39334f2e3cce94e79f09b74d133c23454606bb720b43ef8ff896988f8819dccf4ed8022dd53cde3db0bab057dfe14421e18e9e2f80fb6d02f1244c65860e2926f063bc77d60e6e06b2e32f32baaa004cdc75c557c2dc24459322330421eb984bd9c998b3b315948536823ea4cbb2206b7872c4c90e2fa931bde1379405273b322eb70a23631698559499776a12331624e1daa821277c321bc7428d5806d424afc2c4fcd5f8c67344f7605993937d9a3b8b48b0c20db08558c0f9024a9c1b5fe3b404f9caa7068937046479aa014fbe1e1dc84b73acc77e3c063cebfb66dd96dd373cc0c43c808566b37f3959cbeea251cf1d736085784b1e38834240a1e733558040dd8689fe95dd3167b226dc0ec75afe83e1834e407593eaabde73ed13936a60a2b307c611499dfea00c575f1246bdeafbb41bfe9c4aadc4aeccb887b4df4766f9ceb30f653323771a933d1814f8d6d28cf14d2332430c38fc67ca27bac4f37c6be76c3f2d7ca27a7200e6120960ea17a9ff6c3171a5466771efe504ba374b9dc1766a1697f01f722f189c8232a50c618e2685dba92e690938540a4d46eba8b6e2feb4eac2e9020364cd9db777b23bea58dbaf8dd6a29db2078e4a1968f135241af5a42e0fae650ce74f1153f2e3ef66bd4616bdeb2cd5857c7cc0a20ddd8f92f4e91e5ef7735a85afa79d7b8f43d1a3bf821d11825a5e56e1ec23501520c2643424835dc70017ef0ada0a771618c498f2fcb099dce43ecc2f0166e5aa8337a244e4f17b4015f353fcd154ac9a320ccb3776e43e4562fa79eb017f1cdfb3d1b0e74047f0cc15a7470360b72818eb1cf846f46d90fa38c53436d424258d6030f4ff27c095117a643222c42ec6cc39cc563c3be1bc34df1f51693faf60e5a56ea99a2dc55708ad2c132936503ee1361ce63dfb6c68adabbbdc5a93e834511a93fa0982b90561aa47055e96e13cbea4d070ac0e3f5f7c7a3421de7e6d480d1dae8da5f283c924c3403407d5f6684f714c8a13cf986a9f8300f5c303508bad7b40cfab5f58f1cc0a796f61831d75b3c9a76995a21dd4edae595b2b77c60f66ea393208d89edcdef442d6c0e4dba59890f6a80e9e40d5547b2c69f09ec374f58a67c416129c700fa831044d68be144395e27201ca1bdf660bc9fa507ddd9dfbb0d7d1f10cb452c203770731ee16b19a2c009280fc0592c0b793d9327b772adbcc3abb6b00b149f29e41fb8120e830156f318d6e247064a5fb4c113e3010b29943b7101f332295f7f85ca3a56938cf3e95efa0a953e832346ead4f5869a1a683a2f7f09e6d81341f458566f56fe2a217c5e1199825310db6288ebd7024f545fd94b9a8397f10cbc8a4134132e9740875d1945387f105d745353d132f9ac477f1a17faec79812e9e886a17d7018b0828508a2390c74bd6aec5bf91e469423c4c0b3599038d921c6fedfb47dc2fa1bafdf01293ef81ca4258e4e6c367237742adff3173a391ec09983b468134c07eb6712cb012395380b4027b88b76c730fc9ac923a0a77a1d6f001b4f175c7025d7e5252ab2b114bed27a94860f70f536040da32c99338de356556b5c93e29c9b137b06797d59e57ad2cab72e9dcd784459534593b499e7ec701441cb39348f01ce0360ede423255066142bdb4cd2df320e910119a464dcc831aedfefa8b1b3ed2072e01e010b3be09cbb2f107d5e34d04dfb6a8e59a08a3716d085670769d009094c856d84ecc62c6ba82f24c8d895aaa7783b247cdfac5b5b04196dbb864f9e6e5d75c17a85fea0ac1905c6d46f163b48552db19c7d522ea3301b058b994fc90d9f09781881c7a9e40d6e3ffd8fb168cf4a1e141f914a4af392d953868cb88a1bc263ed029f53edda45c3e26cff7c39a3d1f4f6c87a327ec61dbe1f9c07dc080afc1290eb35d3adfb2f7c6fbad493745d0a4a1792131cb6ee4ae5384cbb625cd602af165da3c881a2e4018ef0e8c052fd35461b75ea90aa1e48ab55873b1d0a63e4dd9a2574459932e0d31efcd3fb72e0232d745b16bfaa4fc57bd84c494833c26093e7e6e66bd6f1bcce9ad7aa5a8c06cf5523e84f15644c47d68183eafc905d38761ae1fd3fbd4765ed467b042c938dce3283247ae2c98e5c0ef4bd0f0c255e8134f8c8200e5134e6e5abc82837c147be78015600bb8617b3a2cca4201ddbf1e8d8b89948dc40778b18b8e884413a2507ac4ddf1c47f895854b8dcd310cd9b3c186c10c3b37280e1c13d7fc111dff53465bbc106e60a7adc8cdeb57a4a51000ff2849b56db8452a40a7e3b1d205bc71c2b7c5418ed1f98459b04f6acbcad2647fcc4ef71312e45c4774a8d0822ccae7474f80594790ce9c4574ec57d0dec3d7210a9cd2d75fafcd9243613ad9ce43183e2b7ef13c5ff9a0f2e322e3900ffa08fe7b42eded2219d422dc766e39b62ae02d3fe1b06b40a3c6d7e0bcf11205152a9be7831e787598877c1bbbdfa93ba3170c28c3033b358eedf1aa73f13ce8e69b9a765a95fa93b7048f5c6952912b03e8fecf2fbef235b1458c5fe9e30575b073ebea555289f0c4c93d32490cd390c672109445f046982cd43d8366da32affc057fe061030f677e39618bc4376d99898c63526bc967f4213256d3903d6b4ea1c8e211d1fb09ae91d200a3a1506dbdd316db25307652ac5de78414bece1a5cd53010eaeccf59dccd1c8494603d44824c1103a5f63c27da94a651a1f9d1f2cf1cbb4cd3b3b62dbceb978bcdf81af5bad2c5ee391a4bbc2e6dfe567aebe9499c9bf205a48119120d7f95e29b5ab7ac65153f66950b4c2a423a4ee213e7bdcf2a4c52f75cebf1911a22920af7972710ce913a578b87886b16f17372331627e99d7c52a3a036f883a72b26937c38937e3a102dbbb1a6d7ad2e49c843b1f13d982ab9c9982676866768b18fdb35bbd0b00d1c20b09e25f70fabee2b930426b6dab367f10666b476841752d195c3b73f06127f8d8a39182b56d5718646484ee8c3628a63fd2828fcf0971d37bde492e65e3debd5e09a7f079477c8eb11e95d3e06b447a3813d6f825142bd50cd4233787d0db0ed75fe2a5c6423376546288349abcaf0961ba09604655cc65005cb32ed1c59147e72d47c4f74fc14733dbacfe06528d25a357a382372b1c2a2ad0d253f30914d68f2991d26a281df5dc7cd9acbe85bdda8f70e50c81f2a7bd525ac2e255bfa92b0b807c02bbf9dcf07b48d5badf918ce347983f4d707c0cdb6214f1b91620b27290874a8a812cde8a1d60ef2cf81a0d3c3c0fc8d6a7f222e6d31c0fbad9766c259a817eeadc3709ed71d12c4649e6f3b931d689e0f2765c946ade1e61e015c95694f1efc9b1d0ab5d4c0315b9d54c9135b0e3b28159634ef6cd935e291f6a225aba1171fd1281cf041e2e4e7c06dab4e7415573719b3dd73adfa4493331cae794ca617107d2f81f669ecffea963366d61732ee2ed8a709e989f52b0477f2887b2a785d266fadfc434641d173a109426725ed2ea02d252700f21f6ed1a125f6428cbea5e06ae054e738fc501c8cba7305e9c415b82ffa725b7c6d82dc613d82cb26d9246c62d9a23ba6e2e505af2e29584890726d3fa6704d2447df8688a7067d8433bf57640cbd0015304e8018108cb9ca37cf5212d5e7429e3b0ed7c774d59e3e3a1e392304dad5cba44b73ed426a91b6c95855db79386b93d9e8db897900533dfe35ee78137d1de99345ba4a0d52c92f9470258efff288618a759ae252cf27b42fe90463cff6427c8f7798651e50ee472d69789836f5b5cad2c1a8d78b4c0b283a58345e5a3e8f7338f4ecee8dbd7ad5b0cb91aed3434783247d803c64931155b3a39ed2233e2c3861792ea32e521e2937e53c2dbce5dc7f8460ba1a47666c8b025a70e66ec668b3b14208dc91f1a091cfbcf41258ff0e2aa5d2252a5b34ae6d41edec0e0ef2714585961c25c008650b83e47023936544bb0e372f5d8598fccb2ed236ae949587d64806003bf6bd744bb1c98bc987fdd0616c0dab9b5341a2acb1377648d26f24a9c4d5cc1e637f4c612f317dc36f02883b394d948484b7785cf8469e417fbd639b40153d487ae253592eaf380b7e2c25faa0032925c303cc5407e17a0ee9bac1ccb09bc91e34e6320bf15cf5658f33c65510d233e6f90d8d7974ccb7a3f6e21c35932616e38a317da00c05d903aaa197248a595415c8881194ee04dd75683cb01fd0e0e35d7ed2a182d79251602cc714b4602a897d2e054fed14841b02c8bd6e22d457e4eca9c64283c9b483bbb510ce18ddc8102e8259a2884bf9a2954d1062177313bb92fd81f99a9ed037355e80f94632039d112da022f88fe3cb4e24ba98631a6a7c5771e61891989cddbf824c01d90366659ae833952ac6e51983b40d68dacaa9f320767ac3c635e19ec4a0133733a22ea24ca47ad089c6795566c8dc693c2e7d215859deba0c3a70bd70d6eca5e755001e8213ee2e8079a8a92ede4f53e8d046914bde64a613d064e064b5802e1990384d8c997fc334377497f3d96906caa24b3d0521ed05f44306418f966a08188f06ca982d3360d61e2b8c198036ab9f9704773e9de25d793003870e3a2ba7d3529881f690c40e34004d4edf1cebb2c135b6d78a5d65e245bc95eda79562f217a300e5c1095f299d678270c25a68e542ad511661f2065d540701b413fc64446b1a8282daeb04e10bad3b0937bdd615bf418f8aa7ae58b84974b0f1187d9c6ce3010df12963311a2857666834ee1bc038ff07093759e8b9d180d390d6dc3ab1b1f02b8319f00b43ebe58464ccb21819fef70f1ce5678594c7fe788fe80513b404f5d0ac40f3d396ff48a44b1005f64f8a04aaeebe0ad043a056ad950b4379240b49e94e1ef6c1932e84fc1976c0978729f02be8be0ff338e795d84910778c2e418ba18618c26683079f5da4e689770d78ccd9d53ddc66c760bd4a50d5b4651fcf798f2d2687b77bc6684c0b21e73a83726167c8c9c7c52c0fd84bd2a004e60b88621cc82d88186eb79c4b38c7b95f807d6dbfde1460bd2dea27bcd1db77c3326f705f86421d6d6a6a324070eb82d0ec7dcdaf3940a7996b5df003bc1af4dd9a1fcbbfca3975fba759a89ef341b18138c99f5b299c30aa76a683a7404637a5da41b270d55f75ad250f5a4ca0d1c94d325ddfb58a9c4ddd43e73d6ab65f14d1e98136d62c150343107720535d32c7b387eefbe3b21c8dde38c8fb0d6a9d5f3bf3b8e973817d45fcbb30fe1da1c9158782994f462fbd7b7f9a02256a7581fa2548121ac51c434c620ee5b79dc96acddd4e62e7bcb4b66593b2b6293154032318206b509509d8c63bddfce84ef2547408dd98971e1ed5612310db89a2b0d987d5f0b816a1b136b6b72ec4af1ff4c31b71b5fd5f7f5f72e805b0ebd8d67fa89f525a5d2778e4da1f41d18b0ac5b28bf35f28ad8161c0d19608ae6adda7ec8a0dfe3c4138a7b4507333b7395ba0fb5d0aeaff5b9c36f6e6833478a229b60ed77a334f4f26818fa329cefb130197ca8234327a17e9381362ff30850575c3db325f75ca94a874882016a4c7e2ef6bc39a5d8c8e82e0d97cf2786db728a6426c4950d74b9860f6618f663ea35719cb793759841cb5045d4aedc0890caf600dec648fd276258980e69daf8640327b8ed6914790455dcd07ac21bd8c258c9c2b189a71d9f3edc3cbb18822ffdeaa0c5bb7cc9a47f9c70bf05703028cf700109881f9281d53290072102b543d6d269ccc9101487b1fbc9a7cd6a6ba3598fac7c287f41e786aac8aadf0231d1d4ed79ebb5c0ffdaaea2469dfba6e56498c26e03bd4a33ada13b215b98c840a7dea4fffeabbf6d6b73507c1261a37cf1880e1bcaa075b6903606d8603fc436b82aa510f3a9a6138ed5c5ba2cf7de747983394a1d167c6b06cb0ea132a6490b59ea8a56a1f7fefff7a2daaeffdd792b84b626ebc0ec6ddc9a972b157af20d75b6c6641e5185b6399ea21b84a59d55b33d9d41def24f093e974ea183829bab6e34d9f50af5c1e007c7cc0cda44ada796f63947e1e207445dacfdee0caea075acf47dc353bf17bbbeb64c01e84ab351f09f1c7ddda8130dc268ef75af1b698b8714c57a40544ac4e46be2cf9425739998a15c99ca8660efc3ed1b8f15fcddba9f12880e8bf0aa694c683b6382096af8aee7ddbc62dca51b4e64a231ea8173f6c3f56b05b7d33bd2c04d6f0241613d439be489f58fb45da45b8dffa1e0585698e2cc26b37e53181ecfceb698f2de9ec281fab7f3fb827191ae4d80d9ac8ca9417c421a2ef2e65cdfcbcac8b2b30d332abeb4f543bd5368072f7a8f0388a55b493c44016e0be779a46ac57be620ec37853e1bbb151dff0088481916889cdbcc19d840a9c0268089304ad769fcc1b4c12812a2f37fa14d86881f68018af6a8682e7756f4638885d6214b8596123719a227b983c3260bf474ba35ecba975943724ddaa03d10f108c3ee68fb7cb0480421869c6d5b0421d8df911285434b7028b3bbef75a09ebcabbd7f6a34943e8f42de8955e3b989e3e5c25a5c179f91eadee5188fde6bdf850a07319f78f0300e531b2d773092bf4b41d99f814062393441f9d9d6d4c7c7a35fb7547612b0c484d6a54026594facecdc6b8e483820fbbb5556eb5ca8a59fd649b821426b88ab07fe5d78d96a95f1cf91c2eac0008f27362f7ed18f5e10b6688ac67967eb488fadf0656e42e2b879848588e526374c5ce37b19e8f4c3c1318a561826c4e67317a10a38a1fe53a157127802e8aee78c1f3fa0d7c7e87b8fc81f8840a27aabf9ba3272adf5e3a69592ffa9b7ff2413cc3b1f3944f74c3306a3c5027213730114c9f1643fd1dd6af043821c3f034fad4dd0a28b0130a7408bca4d366df383fdef4cb1663ba729a8d2488964186029b5788f8213139203ea6923186e28b000b642b1ee524e60b25f26323c2fac6ea8d235793fd48a93c61c3bdaa1501152e630db02727c37d7ed685d1052b01a66d6701654edc7f1f1c54e7ac71ea672f81dab5bfd39eb93dbba63dfbfcc589c4f9947580797057c515bbc48a55733e6f3752c1cc7773145165fb8d37e5003c8fc277976cd7c152b7c3013ffdd1a473f3137696b521830a0cc8109bd522141de012c6335d03209b3c188b1026ea79bb7240df018800e6d3f1890bbb7fcc9e49c4dc5e3bc65272ec3b61b5bac7449b577b864926d9a31abc02783627a0ea4d456af23e80d479ab2da266443a7182561c0450450902a72c095e00b5b27431b66b2fed79d8e54d056547e630aaa33a2fd67c6d99de3fbd4bd5af4cc1ef1943bf73157c8e4fe1cbd3c044d6c007700491f64b20ed5459556280c3ae715229c4acefac029f9868c82968e2e314348d1b3c529895957bcb9addbaf5512977371d24d67a3a3a76c0e9900423a5175c4b60123edc0a3ac772b957ebf633736a43d83851addfb9b9ecb613e5164b2a0dcd073cf1462e19961e3c7c6203788f71eec75d6258a966b82dc6ea955929b10ecfbe6df37245636195f2ec62a27a9b31f6f4469625fe989390e7ee36fb90caac067aceec76bb2e6229ac2e556c008935dce7ae9840364292e293afc162f6c60aabcc95654b049e4e6d9a25f99fad24c349ccef8467f3d58e784782f4af63aac0270d13ebf921a3907f9d93c9544762892a45a5743f8a04b35a6274b5be74c08cc1e3cac3ab3498d90cc17d2eb06e52115700e30425677b6835cb879865146000f98111254cc7469ea4fdbe43a18e2aa5a31666853ed50cb8225660b031bcf15e635eb48a03ff5a9e6e4103bc521bf826118f535aa2c1d7a9d1ec17a435a7e05a5807c24e68f8c1200beb6d524b97d493ff013f312488e0812cfa95bcfa309f5d31f3d8fafd6f0d6a5c7203082ba7e0e3a4a3fe01cbd04a4c0eb88302e6b62b2f42a5f388cb882c831347fd16c99e3131ad1b7ea4f48f66bed71b9506713f0a1a599625d7dff1ed5c0131ad46e2d0b8e44affa1d42d941430cc3f028cf7e3b2d4ad55af56548d7de838bed90d9d30c602dfaac854ec31b8c0ce861d6a45f7544818b34887028b6ae12d5e73369657337220a409c97ca8c662547e1ce7cd53f50a645c435ac87e7287c6a9f9764c1dc1f9fb03009f7aa39151262a6f0963031e06e01d554f7552fe02a082a1f9209df0f8ac0d075ba3f85959f15364c107ee7fd90540964f208d5462fc033fbedba35872587943520d3ec24b9f20fb1da346380a202b91bfb784e3da0182a858b8eef0c3ec66e15320858874417713f7ccfada448cb95094a39d5698d346a10ffa4c1e0be82486c2f16809d323471e72e37c37984c01e69bee7fd8080195a4c300b022a8ba8e1f327e63a514ff851f5dfe425d188a1359a0001a7edbc7ba4c8e0212a91f6c3ef92a8cfa9bdc3216853a4882a9bef18ba05284c3ba8cb818469422c53ad2309b3129a0d3d81fbc270ba305a1c9f7b7e17f01890510e2663a9504cb96ca3c6a8ac7d0bce03132b9bbae507fd8047268fa6ca3a8412534349d134dea0c99b7c7c8f180806feb60af98481c085ad40be52ccb76335ca6de477ce9fc49d5c159808d0e761336c8b89222f5acb725346353f42ef684f7bb040f49a884743982723b757b851c0c70cb974687d327757efe9b8f259eeed798b7579733928715df632874dd2e0b7676461036d9af29e148c0211d562720dbabdf3c2c03cd3b7ab7c2ecee9e020a48388978892c370a20fffa7ffe119f1418bc77dc54fc776103ebbea761ef3e98d414e8b46274fc2515caf23f61f940b6674500fbd0f1ff7baf830abf255ef016a5abc511cc4dfeb2ecd79324115a07038b8808e5fc82a19ae43c176c2d8db55bcf1362b764abfcece5bd3ea5d25b9b9d8482a65135be276991b4ea9cd81c928d712d4160c6061ed78591ae65a835e42b8a9bc7a91ecf7f33a22ff5d4ddd3c9f02b6f0b7f210eb51a7833c365240ac15e743c8b1953314e9cb88ba2bad386a71a5d42f99a8321506df9425cc4269663e2271c0663ce9b2290f2727613233e2e1e36208230a821d9c020861df7d46362e274a0dd33bdc61744d200a23a70cdc3e9cb2f883770fe10fd0515f28d7742394eb8c8eb977c8049b30e6e69b78b29937c4ace9df3dbb5f468060f4f9fdd4510e8312cb9af29a42650bf291bd6f4c7ccdca042942102b83d80ac10f30f89198aee441b7b82ebc0e644b812c6a181635c8326819bd02e4e15aea1ec24fac588f19f11484ef4f678b91f163577f9434b41734fffecade3db1dc7b9cc4745102c9d729b3c347bf204eac5f43861fda175f81f30801fae33a2e54b9ba0991266796aab9ef01bd5e40f3975d15e2b8d3c1d6d8326ccb5c19c0d0c86ad25df396c88268be96ce35c3bab0e749a94ba36b8a474b17c42eaafc55c7b0a8672c0acb1443365978803a5ae87393fb48cca481707d51c8854afadec02bf2e05c640a48a2e92d0a25ed7a440a26c6da0fafcd930d5e7806a0b109379a9c95566867151ad493174d0aa17dde74d0a9ae032e9024148aeaa7e7a931c299d86e98cfc3409a44b21758d8ed5918717a9280a28d8f364ed7c79ac0f49c952f05fec9293845a36f1292f41e9b42dd09be75132f29a7338934b90fa91e8473789579d186c9773e2a0518c9dc619753b354473dc8e7f0ca84862250301f27036570d981c0f60711642460c945a294aa2946addbf161c8c51a5f260e92534c42296c17d5997d292970f0a5b28e95cd91652bc50f774ec49318916a265ebb7d861d658fee365848a7168a8d317c63002207ce397baa973d9239dc39ae6cf634acdb1e9305fa76bb89f80e143e5bec1ee2b9e02e426a8caf1ad8f6e46423c3635dab729294b4a9dd61094d45c435c6ad0e329919eeed5d13b42f3a7854cdb7b482866d368de29b5594f2eb5fb82a50434659415f3354b335f1d9326015a7455fc570023959c0a48713e7d5079b8fedc21a3524dd36c61e5dab034ee00a3a07b87b7ba0ddc716e36fbdeb181d4ec2fc5fa8ebc58760e90e50cdf9176ebb372bbf0f063666a784b2f7f0092691faeaa06e5c889ca65f75398150dcb662c7997a0a0d2c2ff414849cb8532113fe1fd915233be7ccf17878fcce2207920ef17c4412c98877020a69756298c03f22defbc53e76e894f25e0f0536cd3d0e3885420e0d96ec76d04be72cdf88faa97c8d23ad60b4eaf38e3a06e3fb8e1f6dffbfbdb800109e6f51618a1ccf12e54dedc9dab1a276610c717de206d94ebcba843b448101c51c0bca79ea4f4305a2506975953a15e48768751106a3f3e3c64208711a7548e237c461205302694d544aa7fd1ac88da2e0c9ec40b6c204ccc17ecdfb64fcd9883418f14089477f1f15445c4755b83508b362d35959c9b178cbd0bb79203d6a430f58f227a0cf49cf04926e7eb60c508501d5bb18ce27c4600011ec01713a618da42825f9fee8d663ac3cacaf4b0843b2cde68c18e2e8cab7d246a049f273d1a3cd5fbcded16d3162150992acd389cee943861b1a7969dfdf7f943174a69ea36982d44bf339662e079b1ef426256649da02c6df171a49892aaecc41081af46c0f874855e3f4d3f63394587c7b44c866e097e3571c54fdcf85eb7767aa8b05ac9e78043f13209ae339aeb7cb46e9c62e2d05867fdc32dda7b95874cf871e6c9af4b72a04da6a543fb473a72416b25d1915c40eb9e0b0067c569e203426750ba5f8df54d9f0625dbd9326bf6a3f1dba7d573028deb2000f89987cadf48959698aabae198241702240ebbc0ffe1185e704dc68bfd020f811d5787d4951300d185e2a865832a87b3d1bb79ef335c3ec156ce4b9418b7e65e2f35eb970c3eb1ad18c648155c0d845342d23ea890700d5ff14fe1e5a606396e11d427e40f8e389d5ad6396166fee7734bc5dd7f9bd13d7fc813d323bb8747fe053554f50258760ebad3c4983d62f57e5b86030d808f199fb9619770d8e0c4d0b0a911caef87cdd7ff4c716a35fd2b2ae79bbea62931cadf97bec825e1f36433f47660814ce41c824b3ce634345d3c7a568596e7b9a0b8ad06a88b4f3c8403cecf07e4989eca4a0d98c9cdfed2aa7f6d1f50076009e807a9e88b53b1db55fe34d5414cf9ce40b5834cc0521c234cb523f1646c6164bf854c7b2479259b0a895fa453dc866ba6ceb14a241360928a5b19d10437073e595d97af5bf06ab13157642f49443a43a7cdec68b2a20cfc666a94f26475128ab1ec4a8bc1e358790abb75901e5b08567bf2107fdbabb0d900fb268469d6baacfea9a5b96d3c80f74f1b2830e0fd19a73bdf0483f34b701877163f0984b1b84a75d982ec9dc7761ab158566c51277e1d9b64b650b5801a3c7040272c49316dc015e2e1bb065b986bfe5ef463046a18039a532020554d070913f4335d43e4351c6e8e8fa0abe398a0aa6c1574b979e289bd8d75a302ea64957892b70e5c00815d129c3d8701f514a6fc0544a12bbfdea1011be5223eb7f75329480b697befbde59652a6946466098d09ae094d79c49c86913b595723afeb348c8f86f9d130bed33072243d2787f380f2f4d25b69ed742a0631fdf64435fd8c4b293d0f78ce4dc2f4a4dfdcfb408b3bfaadb991c7d73b1adb35bd0bafc37155fc16d372ab54ea1f85aa958e7e7ba2762ea7b45614ea3f55fa6f15472f7f1a66f4d1c8c833d9f82a79a7175448e49a9e337925a136795f1b09b5ee174fd764437a69a76bfe348cc98d2b7fbad333b92aded795cc9d200da37d14d23024fbd195959f5dcdca8f9ee43efae991dced47bf1cbc718d35f5351cee519cc9739e09f7d27e292f922b8ff2d27e270ce01ef5fef37d94bdab702f4b3fdfbdd29794c0ae06e9e57b0ae94d3fbfc433bde9fd4bde34df4ddffd2625497aa3771bcee29a3e8564677016d7e42f47fe25ef333db6f2a495773bfacdbd92bb575af9f9256bd2437db749ac3cc926a1f2ee29e139df5cb123951ad9ab5898629970b71fb4f1c432e117f527ee250ac5b9e4bec6375f9ab8f9fe12e338ce64bf13274db83f894ecf59d2cbd36f9ca79d3ceda65351bbb9274fa4e3e106eaff40f7ea974a8f3279a2a0c869eb63d58e7ec64bd049feb0f36c03fed2fb7c4a59faeea5f729e13926ff51f623ff91bb97fc68449a2f7554294d5efad09ba0095ef7c3be34fa4f09cfb9258fd59abde81bc187e3c8c55ebbd170b44daaa00a1fdc2cf39c9b7535a40aaae881e96698cb55b3f8333021da0d5fea79ced56e9c156ab92a3ea5b5a250ff9890f8d2abc15c3a8f17c09f22d42fd4baf143431a868a86f97c47a8d53093474ec3e8fc08ed845c0d93221f8684348c0777340cac3f286dc3092f212ae6d2c3e5d26362d8866dbf6118c536ac8e2609ab230cc3309237aa352e3d5c5a2e3db08e012e3d4871f4f15dd848bb357636f5e76f317ead711e27d213450e9411bd79dd47c3541dffe16d5c573392314a7e117f285ec8fde61e85d7d7a38030d2759c9523f2422e3e5c726a5c7a4476e9e192937535588ca2bae470175facbd81d686e1228dd108c3b0ef62646cd4dc45282e0b0e0b142c50705c1c6d8f91ecc7119bbf5dcd75fc47a77c47fe6683daf573b17d3e161e2c2d162818466318d6d560d3839d8af7a3dc9653595a9bcf226cceeacffbe997459a057ddecc89d3d330261f4f25d2f41b8fb247169158dc1865921ba34472639457dcf82269c58d511ab931c60435169e53cf7534c71c258e79f0e968e84b31cbb26cbe9744f42cc3a6fbd3870d83fd8cd22716a302e4c79f699756f61a8f5c9633fb31d7d5d0f8b7ce26f4917e967df4e8655eec14b529fe5d8dbb601fbdd9fdf0ee47c873e070a2042e3c2275f9713f265a7a4970f44594bab4e84b171ff7cb22e7d28365e267fff1d757bae4dcecb324b77f7b4e3ef75f96d914eeb19f4fedc757fe4c534a9fb1cfde85478c58175feb30fef99867d243a53614a35f494766a9fd4230650fc771715a7ee9d517c5a87d4ac410c76a244b12bad1bea4a31a19856e6e4f2398cb6ea1af11e26c4aa7bd74dc761dee23ed6c429f84a80b89fed35eb7bf8a4421fb85407b97d6ec6ab48d4e4a29a5115d7ab00c5ffa913e756945ca755743a391dbfc32c9ed6777c11fd7f9e13b1e24c8ed3977b818b32ca3fc71e6b833fa4be792884db0e0ccec7e0365c46f7823f7a083861d4c779f21adc61c2333f3538dbefd78738e39669f5db7500b95febcf919a720887ca18562e3ea15c254770b6ba9060f1449c04385b5554a803096c75943a00cec725b2a2ef34f234018154ce968d6aa55fcfcd3356fa0eab24f90d78f1e1f9779cc1d972704e847dbc41453e7c287407cfad436e11f67ce853f5bce6ae2bd5750a94db9315bae825b7b2e7e17c29b236916cb0dec11838fcb0f99fd75d97d2efb15d8e495cfb62910e826fc3b87116e678fabe0b79d3cae82cf9e83a37c43ff602e39d2a5e5c243bae4642e3998fdb077974bd35c0977652e971e2e3d5c7a300cb7f327de61a38ffd13f3e9637f835a0cfe8d69a5b5e168d3b43b1bafded9c4930b5c103b1b79bd3bc7959dcddc449c85759c4d47e58f39bc5d072e3d5c78b8b45c7ab8b45c72b66669316deee34bf9dbb2e0b0ec68dacdd28291a5d5fddc7125eaac50b6599c6f7b0f511aa2a2e794709c5aedc7714cc4cc33e9a1629689f9d9bb67d243ddacf6f33d092d46c761162858a070dee2e4c10205cb0e161cf99b280908b9dbddc6638c514a29656723e79c73dacc3b7f136118866118d6d960777aaf97b4a657ed6a70f3fd6da6954faff41c973be96f233d45fefc694320ad64ec0ceeeeeeee22ee6c6aec0cd36ddbafa987251811793ef753c2715876b0e0bc969084a5c5d21ac2065b5c47da39f82c382cad4e7516762ac270584ee6a1ea4157751dc775f66322a29c5ea0b37df71fddb6cdfb5876b0e0b0409111e9b999cb55fe21fb6543ae571628e846b78f74a81f763d72ef8f4119313ef530f7ae26140a7d7fd7fdb6c5ec9d65c7d5b298bdb8c6aa805f776cd81b75900b7fd43f489144f26652eb740a7e1016495a47e3f44d92a0202c9200f5142162c4e745a4a7a708111efea1c33c3827c297ece3c297cc835bdc9d2408085e018f2081571c11d30d895cf8ee316a60cc85435c1863c639bd79b65d85385157d385422291a8d63a1a8d48a4caf188442a2929e1b85432994ef174f2e6d3099a98785fa9c6866fed143cb161149492c9743a9d4c4c4c5028d4c90944d1d0b39589c1e6bfa514016fbf0dbc6d53e027614f4fd4141a7713798c52ca39e7c4300cc328dd44af57ebb40e10100f4f664d456a578383b73b1b1a3ddfca19a61b7f86e946dbaf2c6e7b3924634dd860cbfc1c34d2739f16474afc7755e34889160437e44fc701edbbc531c50df9cc6c9d58b9b4559583e674b3728b440fa05fd56fca02d218e1aaeee0a5b1d130700a2810610db75f0996e92146386b8b36761e36f8109aba9bb6c7d53fb6fb6b8b482abfd7746c66fe0260946259ecc1a3153ef8f8e8a1ba60946258d43c6034d3b64dcb2886078c1ab1afd71d6a90fc38ed50996214ab439dcc74a89ca4ce61faf3a418c5e4509de35019080e15a399a665147b831b906094626d6861438a4a28c61a2aabac60d1051da96a48031aae3883196a1918c3f8870c3e00c0c750314c0c15c3aca018c5c2203987ec141a98bfd940e18b4b88bb7a000d7ff3210d73d35f8d310f2ab0468599a3c543fddc35e33107b5dfa968982131c6182dc4c0859d6a8f9959832ffdd1dbe08b906c93475c085be6a41a8634ccbbab53d5552ea453281fe2821ea243d875a0e73b64a8f0794449d8600b6d94eb2daaa431b6cfe7e8c9e7e82e5dd28649f1f87da3fd347067fb0a5cc343a52943759faf3d04b297b609f9d96b5913d9cf411dce75af71709a471c1ac6e56c4c05d5a2ae4f2c1b222606abfc5c9510a6d872093ad50f6d64a2531d63e5998601d54944abba26e69861e79a65c35591da4f09d49d314325c286b396786ddca94894fc0f95814e751fd1f2ddcbae06ed14478f31cae8d3be40ddd8294f6d9c2c55ae8b1ced60282301f518aae4431ae2b8259680438ddc1baa3f5f8982cf349a4ddf923021db983615549865a391e3603fa8fd2060bf994ee8cfe12fff86bf7cf8d2e29802da1bf2dbe29038dca640f7968c4921dbe682ca0f1f7b8263d31aaff4629c583ffbf7dbb8759cb68e33d34670995ab6a5ed08b9fda31d6f4a297dcafd4743a39dd14e6ab4d3d28c74aa7dba97d633dad1a6fc66410cc378b417a39dda33dae9824a4a3eaeeaf79e928f7bc9c74b3e5ef2f1924fa9e4432af98c76b49e9220eded37da315d2d8ba9cf6296f5672f9e2bae66e38f36d2ec28c88ecafff51703d37a6ed0ed97dfbce2f6bba9a5c21a175a3ed2ebd42f9cc99a73ce39ed97fcff913a54ecbf99b3dda0761fda86348c077b2e29870e393db79f6bce647292b2c2c305f1b87c15fb5114fb5594fd5026f664bf37d992e57838cbf1645cd066b91b8a7d345d6ff9535a2b0af5a5389d6c87f69c7354329b6edb9328ddbe6e2fda5edb3e0b65df6536d36c36c4664232d7cdc56c8bccbed465d24bb4018132b68d08478ec09729ea377d8edce6b6fb651d13ea378f1c39c269ad156cecdd841042283f62211d5374597d081fe5ac4de445ea719df2ede6bec8ab3aea4d13ea8db3a07b3624da6cc86cdd7e4ccb6cd5d19a95ccc1be210fc8c86643bc8c8a666d1f5fc78d0849abfab74d94e4f66f9d8dca150175ca464a74c459282a3a2237adf26855ab533a3a5b6f444790888044491aa67efcdacaa91d49a4efa0fbbdab8ebc2375bb210fc8e83bab79d5559997ddade3445ebc5bc7651e76b7ca558f3d9117816ccfd953b4a22354d42f131db9fdd9908c0a22a4cea68414db50bf7a735bbbf1e3911aea66a8dc68b321f085fb715dee7ae3acc8e174258c4e195dcbb6e6904a087beea29c5ec0ad72b167cf3fdaaae344e7a031b487cd73e61fa9f0b17e3a1f52f8937e0c3ca7abd0c982e778b7bbbbbbbbbb4b0b3ba55dff8e70b8b9fdad3cc53d03ca92683a5a900c8bf9a3edc880b49696a3fdb8fd3e79fecc2b36f7663ac58a0f241ed9983d870644c3e568896855bfec6a668aa03f5f4a14313384ea33291b1c0069e68fab3a039a19500c106d67ee6a74153aaf141a9ce7dc213ad51fbf1f763717b2b453186cb0658b0ffbe743803fda266c1353dc6802a23ef5e3ac14f8130967a5409bd280863605e2e08734f173d0d890d90c8c36323bd3584a0af6379e6f0afc26a690df44fffc26a6c8ec8df8fc4dcc14685330db80fef937faa7bdc11fbf896857aef251fb5713065bffd6de0ceebc015e2aa9a8d44e312cdd289a11e10bfc4d6443c7134f5057c1df44359de2b86e0b95bb1910d22c247fc6b4d04a8e4836173d4bdd33506eb4b5a7e100e609ae3f63f251aedb2a850be9cdd1bd8a56d329d40f855269d60bfa6ea7bb94eeeef169aa533d7f9bde2ac62a957a81fd17e3e74a3b5d4ff849bd583533d60203b7c5355497d4bf12ad1ee5b06fe7c142e50741bc94ab347ac05d7002b90f36b602262942e5872fd2515e46a8fc5b3b77a8d3b0759c548a1f64d8852f297c74b7bb1446b6920b5f40c0c39c13c382ece0a23a057fc02124451238f6a420524342187117be82f880a45df80a4284ca89442251ad41869c2e7c0d010910769c48793091220626dce9743a9998bca4c0c274e14b8a349cfc30038ae8c257902a52b20b5f40e8810aca85af20af95d1901627547081baf00504337c170398a184ba6382fb0f7af00d12d87ccd4b65abc7a2db8fee547e4800a8eaafe2484d0c7c69d52fe6e708248a88a1f38be0570c8c9153d83a0899837815a4f0713fae74d2174261083d36285dd8600b0d87a501fbb8d330f1394748462369566a411a1e273db43872d094fc4c6f4c9048966f3ac5383d80486a712be5638c3e2691e746eeb9f1857d8a37e9a3b43f79dd8f3cce37239cc53e46c09f1649b69a66931e10ec4d5ec4e6b4b055389506b31468557c21f543993cd6a101abe2679e8e1ddcf838f08e67005f624ba7f29326863d4ea5991fbb9a0fa4943e40fa55c3986cf618c9a694ac8db629a41f7d0e9af8286795d829441fff8b689b427a12fdf938b257c94f6ff4b5a328b9f13907cac06eec8f46b8310837f6a04b6900f6257f03fb128b630ad2e3f0c79e646fcc1f591c1d02be2936bc5f5a07409a0969543847c3e267db6cb92a3eaa1531d7852c4e6039ba6977858c0381a432d83be7f987bae738e7ba90e74ab28344e78a56c7719cdf64defce8cd2b993bdb1ec35efec47196f76330881cf53b3d085f24f5e095de65cf1d6674ba7cf9b263e61899d985477469d1676676c96166fe5aaeb32811e728641861063908b187db0f715bbab768ada8677a9b5227b26196fa74aa77f0643a8660e14ab28384871399adb96366385086f4ff26ceed97ee8f753512936ea3cd39e77c27e29493d2e92c38eed1a3d1a77b2c2d2973788cdfa96853fcf9e19de117668ebae2e7c6d7ce503dc7bd2f9413e2f1861a6af5a0a6cccf215368cc37bdc97e1a114da753719a5e23d2a9f8a3433ca4e606975ef5091dda941a575a1af22362867fa7a2f427a253b1a553f46a6fa8f1638db4847ad3c76f49bd6898925109aa24a5e4e13d7d7c8fdcef2871f5e4c15be27299bc59e4e37b5a71afc46432ad3cec7afa9c9b4bcb858794f35da6277fe49594b8b45c7a605d8d347928ebdecabb94bc0b8f1e25bff2b4ab59293199bc5fee2fb10d0aca71e7a8975ec9cbae06f53e743a15274fa722911ba5dda4fc19776992deca4fef032dee7cd273af4eed68756ade27a64ecb5536330a984ac5970e98514055fcce0550155f56ffabf2f5636723652a157f744aca99035fe24bdbe1c0976945e9514e2f7023a79e8659b19f7cd2c69dcda9c78a5b9acfa4d913bdd3959ec9f4d3ce1e784fa5ea021e220d13faf8b3a748c3986c2c912e392e97cbf50abd487643c2eb457a690a019bec860492cbe5728d485f473f5f2e9748708d5c2e24b8462412698ea6bbcb47239bc47c1289e473ce59f224d2e8850457bf694342fd4ca0e31a913e1100bdb238862340a02edad58863382245e8083b8ce07279c773a5943b8c30e569e551cf1a0e6b3a741a46c66d85e63c368578f2a737294d234992255965264da49426592d9146fe4720b262dd9372e5e5afb8982d26e9dd755c93c9d448aec964d24cdf264b7a5fb11f5f1203b64bba715647694551fba1fe5d299327e59b4c52763592e4d5917c162846dec97e7c4f2c2bcfb2a354fa952fbdd6d5945646a3199f09cf9bd526161da6f6437ef18b8d74cac72dbf5e21d7e1eab031b3e6f3c52a26c6488c981b0ca31f158361f4479a7dc7deb9a062f406cb4480c660311330925923262a868d11a39c9994726294e7c428065f4018f919c45c425c17431ef4389e99c52c4f2cf5a21b6b8ed2520623a313a31946f969092684211f9b276805f89d8f7535e665deb2e81bc7715bd30c859a5cd77535f2bbcea66f770cc02ecd68c66d1f31ff9e67941854a8ab911f8a6ebb16740cc0ee4619be50ecbafd72d0e94750c0591940b14c04208cfe24b7914c0015ad11dd9669ed39b44e01b209a0523a3d52d9a272059904bc7474767e74904e00cb740f208c7e2a5a48ffa0888e8ea4b39ff0a893da3ab07f005936a2f06a2634127a082ce78fea58f59f03ca5573a83246770a5fafdb3aade3713e53317074f7886118d61780bda23cdbcc28362586519a61a8932f83efbdc86b897182d17f67ad5633faae70bcd99edc44f3d2a96db66b417dc96e0804376a7352c83d4f70237c91928eb0c9d3cd4046296763dfb17bd57dc491d410403c154dd1c72082b68844df2151688a44dfa2104f1bbb1411a9226c24e0060d4b690b26bd8886a1afb550a0362b5537d43c42f3328fe71237466b23019dba41e38a54aa062d62be389f9f234514814d09e41b151bcb40ee8c4a4cce39e7c4a8c468efe051285adfb0aa1faefcbff6c1ed0fe57e7dc3f76bd6eed7377455a57b1625fd872c83390c8cced691874ab1156518747593ba4952a35cd1d5e5b1a2f2b5c929149d9161341745fd56b7fba66f38461dbd2305bd82be812cc3fe2af131a391adaba21069945111f92f7ff4948044b853e72c130da9a4545252523295944a5d4dfc1289864bd91663881733e6e51ca9723fce099203d36974823258c2f820629a2583a4166eaf4019f99a81ac00fc4a88ffe02b009e102b0c7b7f181e07e1719d8fea6ae4a3baabe1e262255b0257b10006398b7fbc5886a36021411ce48673205f393c3a6ed14a03bfe421813ae20926960042392b44b3e31ac251a033a253fd27dd4c0c4a4ccc0d1b281c0d7c9ac2416795827848033f08ef4b2820a895b3341af8db0a57ca6820a4a24bba1a8c7fc33c39844a9eee0970a3105075e37b90255fac20feab17c63f0c2f080fba6a44447a92470e893e7288a4e23537ad5a9175e1a28493addf5ab1a5d9234a3a1a7f41c02439445221792429245f24ea6a885a10853260f4e3535b2252d2b5e01c9a760164f14b44f918c98d91b1b871e5bfd671e3739166b58b8ddcc856dca8f2f1a40a28d3458a4401ca40b1fa07d6e11fac0328d3487870e3b30f28c3c46a20dec13c6e7c1c7c630228e33b184609a08c92231e00653c08c3e88fb048cb10cd72971114b80165843e6eff09e0c6bf37be1050c68baca08c8ee5af5aeaa08c2361184d392803fbf8a1ae46e73290b31c288a5ed84f74a30e9689318030fa63c00297b3e40b085791fe9422ce8a41414057b67e78a91a09cbc424491a49ca02a08176b04c04028a2f1f5a2ead202c1391200972dbb2d8af166199588461f417297263cb91b04c0cc2307062cb7324d7856dd1382bf6fb5b4f7fea6a4cfe7482ba272a2fb943bee42bc57efd10158382828254a0e94be2a2be74531e45c57e7c4f3e05bea06c3439b592f0d0d99113eb70fb4da611490e019243806effa944545f4848afd10bc9ed37096d9cab88cb55e4f6a3baff64d0bc9158c496b3a68e188465e41d268fbad96feeb82df31083dcfe936ec6bc9895411e90d2773a6a94412b1d90d2bbbb3b7df6bc64a3915ee96a687cf940222cd91ae2c6efc58d316e54b9b174e373cd92439ca14c74318cfefc7ecf954f7de2ab471d125d2c03218cecfb65cb5932c855fd9534e476f6a3e86a05c94eb6b872bfd2d56cbf0283e08b0e19248d78d2675ecdca177ce9efe4eb4a2b6e7f265fb753ba1af3e5c7974f8bba1a5abb22e0a55609d85323e463481c6e4cc12ce701d8b3d2ad7435a675c139a99c1cf892e444037f1355d1d43971827390228b6359aad9cfb4c71ba3d656340be5df3e900813f4624db4b72e0a85da50574349d4365bb3355bad6ff2b0b79cb521c949a2b361a183db31a4c86df164aded67051576ea45bed3c8ce677c4f4906c84e763598d734cee3ac8cd2cad31086fcace52c09a1e97e594bda0a60eca149bd3b34bf5fb0c73a1b7886192a8c528ea1f94e48199da32cd332f3b928ea3779260f08a2eabacd5a71a8de040c89b10c673d9a59598b552dc3177e4603664d1e18d8a9c98383db3c9d0a6a84906524d7c27c9484a835c7cebd635c8ccc9e125ca41a109ca7c9a2147dfd989f954feaf5c19e5028157ac8bd0bb9fcce734721fb714c5ca634228d30c5bd770af01be2de3ffa771c631e90eda507a4057b2cc56dcfa5fe5b362f06665714a3d87f4b0a732f71d503923df786185d43ed0aeb50a8897534e2c52626331fce12a6e48cddcd410c1451fc6f80ee57a9e52057f57729008ad13a90e499375f85d5a977aea3c31375beb873bb6f9c25795cd54f716a4bea74d06d497b78e24ff489afd88342d5fa53c57ca9d91f49ed0ff7c00932f0f0f0f0700a9cc842ea481da92375601978206f50a85a61154f883f8f42d5ea5de0faf37c799305f58b317a82e23ed3be13cda31ecaa4a10cec25ccccba99cd63b78c73531deba7dccaa2e503939673727eccf0cb9675f6e0b12b243bcb3b0d709acc328f1e2a77e24c5d172add12002d112a11892a89c53eecd3292ce8a8a561f8b391cb043c9892cfcf3e9bfd5098f52e70e33ba9449487ba0365844c0c65701cf8005f24e00b1e8e9c4cb60c1cf183d228d02923502776f813388259c67940cda1b6e176efc097fede413902b7143250c86180ac6e3ec3ed9d4ef51d762894f101181b9dba015f82aaff075f2d5ab8f0999898186765f0352ff5ffb625f5a2881773ff8a59bde302655a0500f0813e230874e2b18f8f1dfcc78ade71165fd1372cc35f8030fa93ec2009830ad8b20f778272129acf27404058e4585cf48ad9cd290ee58ef04da7dac6f377af74bf78fb3709e1cb47af7399f729e18f59d6d1a93a54760a812e0d7e50214a08143bc867d8604b77cfaeebbe256e47a3decea7c464540133a53a37465c52ca89c5258e2071335fd2cc5ff4ca06f4699d217c0081ba39fd37394674406c603a3e747498dee460f66323b7a7fdb8c84d0ed6313cae9d549601f99998981d4a69a6716a7559876fb48c3b20940eccc35474aa89f00dcbb012208c7eca3a1813f88687f09019e21fcc4944b68d257d86c1184632eab932267b522fc297397144cca3cb0865380761e26f4fe77fd8851f39a55528a14c0bc3e887cf36c6e81696514118dd98fd2a10f0a55be4759b822f49a444412ace295f1a63537853d8c00be7509939d29c0036fdec212ce9c08d0f5f481eb81a6b7704373e54c9d9d3c6eeaef1a5106a7ce8388dd372a8ce019167a433b28df005c32446659c1e639411cac882286f20e513318ea07d6224f8224b3a705d832a9207ae7fd44640a36c21549f4c391d2ba8fc39321b22c6abbb8c4cb0a442658caa804e2c462da3736a9a86040a35d3a9ee545019854f4411d365ec5299264b55db2247a98c5c27abc05dc8ca08e18b7c8cdba514f5fb3931779a699d86c2b22a43a22c7b2945ed1cd03499c5c19caf59d8a989cd38eb8842526c18ded8e31360256aa82e6564f72bdac84dbf3e04e4ace9a355fd56cca02bb01befc1bc07cb668e1313fb4cca9d6a8a5225e3047220d7df77aef774b4aebdc07be2885442b9048209364c536abdc7765154feef72aa0927a5a8a88e87f76839951b06d3e9110eb6e87332e7786167d941dc1ee5c468a611f1c12a1a87fb06d2efec3a1e22a2244c360e0b7951e7bfb97452c9c4d1954047a8e39b9b1d8cc33a40b8c5417887774afc86d8309d42c2e4d949063a75040efd50d12114eed738b747114066e8d0b98ce1696539ad230319c6d73b8d83035f6cc0751da525aeab9e8558b0c1960fbe7cd648bd47793156ab1b43c48c775704e6ec51685a820853f25570f88d11cba807aff428dd763c2a6372c68939a6c214f3a83d7c1820f0559a63cec2cd965ad54fbf0a81689a57ca3a2a3115280363ca826d724b5cc5a04e62be22ee8c015334c60aa6e86bde4315fdcc8b2b1b0a105dff23bcf38f3ea10c283f898f5944ca41c72857aa95629a64bf94b264e6ba9af8333dd2e35cad3278726dd01a1b35a8ecdd30a2ab716ba30655ebfc371fc08d35ae0b0153f1b7106b9e07a3103732e057abcad2ae68cd8abb1a54fe6fc53493cf0dc15b542d4a64bb51cc82555c1742e5baab200bd5928232266bc61916b928d611a1cad91f1eff913f40c0071f24e07204fc9980cce6a45dcf2a36da139310e3664f6fff48b17eb831d6b15b4a6e98c6bc0853d87b3fbbbcde0c53de22d830306a32a0414154751509187bd8cd671923f76ccddddcc4065b3ee6f62a0a7543c458614b8c6262eeb79a2f82a18e5bcd67fabc84b3b85608e4ffc38d10b8ee03f54102d72d4cc54b9f5dae6881ebcfdfb1a3ac7462975fa4309ac996ff2c8332321546b501229cd10392596794bfb679a9d6ad6f8cb614cac868269f5f98777208b5302c3ad5f2b1ed2d9d8ff18e8e4c422d25a1969e2b07c41cdda3bb3b6b914bb2a24aacb8a04e0155229d5abd0c690f446d5c7ef7be7857b0c37874caebd0eafe599e0b127dd71129ba4a3c2bf2b8a028862ae282a2cb595d8b643f6aab75116955b33cd6d5785ce779ccd371dc19e48da48ff653c2fb8df3b8c7f398870b43e5fe631e223fd3f00c2854b788784a0ff05f9df90f75ff7b9aff5208f86f458487000f42158d07a1eace7807e099c1448f75fef5e52c4abb172a5a0bdcfaded92779f1c217d16f1bc71d039ae33a1a7f45bf7511728c215267bf76e256ee6a44a1eeb9be7f17ab9de9d979df3d9dd75689f6bc7847475a285022faae45b7d299742d51f7fe58e72cff8f719136f3bfffdbd2aa02c95eab5d8de4df4e2e9e772c8b5d31c6de6916f3b415fdd357f48f86a91f2d7d6977b82f546a79c7e5aca8135d6e3dcef2849827248a475c781f5f175fbb9a6a3321047891fd56323e64bf94cc77f6fb219eb31faa000678e98a3a3f7cb43ab7ffbf76af6e06954bd2d5fcc7866979fe8d0b12e2baeaba37caae3f43fb5cd07b1c10e7c3017149ba96b36abc27fde8eb8b3ef4dd772f67d5580889b010aa560f9d85000be3a1b3686c100f9d75edcb4367cd5808552f1e3aeb001608fbc3433ae2dce39270ccf2d663abb1d82f87d52807c425e1825aeccb2a443f4f48c17bccbd3f6755aa103d8c10df0f9b9501c1369962fc87baa6d6c3fee83d9d50accea49afc35495d1393986ba2a1522894f672559f9ca0ee090b8505c5a2a0a4d49bd2da5caeea883240018668f1322d5e86fd5277a5c513c07eab16bff2b5ab11c2762f1a54e68002603f1a0000742d67753f90ec5747ad2042adcee52c0e00a957d9afb6b85ecee25c2e2f1f5e312f67712d6b3fcaa201b1b496b33618fbd101d8afd2d6f67255c7c8b84c939b2bbadceadcf8a300174002000a00901040ed44f7a2abee05a37b7da917fbfd8bee0544f7faa17b3901795eaa57ea058017eb38f1c3b97ce05c2e9cab8573f1cd0dd7d258b896e55a1ed7823f3974b8df809c52afb6ed8cf6db4bb4bd42dbab8fa85fbbf88ee3a384b7850782d8bfe2a960ad0f13f261463e2cc94779dc1672fb4fde47937c198ffe51a3d4648c5a0a8d92975f625b3cd04948dd7b40b29f1e63d1aafe5357837150dfc45cafcdc25aae8aefafbee9545006148405d68a8919d96f55b1ef4358abc35a18e4f966bced74cafe44214f8c9b85ed998da6ae86da78a49b413c224bec3162af13875a036021815ffc85472022f3ff7061abb29c2a2c855100d0cc874c73d1b6968d63e13adb85bc18127d15551730aa62ac75d462445a2195a8c07f01aa6442319d4e4e2628139409eae4748262424929a5a894a8ac90565a8c5ab8a82e5ef45ea854bdee646059389696adc54573f121f301001400292ca59aaa1fe40f4044205ef88b977e09228897205e00f183f5de458b9517d9a81d1b6c98ebcd50badfd8309277640f05948c1a00487fb8f02dcdeae8c4a356a85b08c3fd335cf80880384ebf2a7dfe7b3aed572b2adaef1f070ac9127bad52d1e8e163de0d1b1430c22703d9114bd4a006388dc82241bda62179e076343886ed21fe99ceb84e6bc58067e63baab368e2e0304e28b48946248cb7256050770cd6c13aa0cb855123565c81e4c24f40b31867623e3a7c7c78e3e1821fae9b995a47a4197a54c7bda73a8e8f6c241949242e2945cee8e6e362185e8afe7f6b878fb398878b65d8053f6effe6e3e38761c02e1c9c0cd2641a892b0d751d9df01c339e4861e3e69aeb12a50eb9ab80dde0b90c6d446cd24c2c9e1e5e898293c727914fe28ca7df649fece744e62c098b107931448cdb2f9a8675a355fd980dfed11bd130b5663464c2d24ceff6636276de11be55cf081b7408b5fe076fc868e18fdb0f75f9475763f2db0ed5de5757bec9731ebbbc90075d7532774c3cd611c23f328d5f8f623fd4896bba6e779c7bfca3535defc9f34be595f242799d4c7859877ff00eca625d8d898555feeafad3ae8649085c1082c9e9fd4f56c503ab88427db451fd86c65f19e14c67366e1811b1c9c4bcfeb3ab21ca228b2cae53d1fb8b6ccbd4bcfbdb518d0b314dc8b30158c08d24a892bf79d6025ae671f442e51a8672b14a1854fe2d349dc0724c39a2c1065b62c6ccbc8ac19c4518714098dab4906d49bd58c58869982ef4f24ce451c82f67a1383b82a7dc1aab25944a2ae4b18fdbe0ee0515768a6f36a596a180f318a6b2aa7ea8140d786541e9d4cc00000000d314000028100c874422b16840a8ea92aa0714001085a246705c1da96114a31442c618430c0100002022002234920614a309542894cae6db3e44ea29d42f7982489882049940c91a69c05a1a1da7951a02431dbd91eea15ef29033f34c883a9ff8ba3075d0c34382b012badfbd64bc9d98803973c37d9010ea2ab231dbfb068afa5cfd1b4dfc7b874e8cbaca9eacfffd1825a8e2f289bace38eaf93b9eab53258c20a161b01496a71b059f4b903aed7c7e109f9484edbd01a31c3b5dd46471d4410d0f2f95adde44d5a0d9f2a3f33defcca7b946467bf9422918f7a4a7ec2e307d5ad9981b9f948990119c4dc122cb5f970755ad4a767840658b3ca251ee5896732b5aae77c109323ca6c8075783c2bceabe56238f0aa7acffb88babf76764aba1e4c0248d72ac18745e0cfaf5eb20622f88c210120a6bc7a4ee2aa3fd194ed4c19fb8b935101f4f68c71014d4bfe8ed0bca79b2571af3013e1b74168d8ff1be1a1ee8edc893278200b20efeb032ee0818d8ad82fba9f06e5ad0a3fb1388b4a11cc3cece55048a43f831d586ce985a95a71a3724235e7702e0062a22e671405ad33981aac3638e4540edf4d9532b0299269ca1f696b827aab2946861920084eceabb27e2d2b5c39a3acbc523d5b2dd5ef8e6f2d989894223838ec0d507e3838bf723811b031fa2f482d08736b2cbe1abb9615839ae490c9e6af6b54fd35b9930a3ca6b831de5c30ebf2f20002525952810e0163adff7ba458bf7f15ce96a161b5cf2059a9df0bf3b4da6d4138a15e4db46669b4828f1b352b3ae80a3f362ac26e164c0abdf1012962a43a583a5dd60a8069a3ded7036da02e87ccccb975fbc51f0385a4fad35aa27d23f0bdb712121a21cdf5c87b08cd5266db4f457de20262989b7bb0e8c49aee41ebb5213ecb87aa165c8e540eb76c70a3a171f7103520a634d33f19cd9a05c123f0eea2f9209d936532a0f8a711d163bb44897521ed51028b8800a41c34b48327b43696e85e5ad8cfb708bbced0dac0ba804ee2db56b931c9c024c786fd8c6302ace3a7b787b0c31a43e0087220f220056d3b4ae9fd03558b5fc021d2b8a666ecef01226922c3dfc278a3505a324eb46c6a309d71658482da4e0b2aa21ee997efcfb0835b1b9745107517a0434892c166e6b4ca0c0f57d3edfe6503a12669b611ebb239102ddde6459a72ace095e74630a2792ba3253ae2f45f4e2373d6122691c63841b527906bc37aa229ebf3915ff8d423fd7018097e63bd152d6f96e073beb77160ac824b428199ad202ef81007b0a76c3b436a3d4cf200b3b04569b290f35b95336b58f49fc04e000f5f4b9810c7b079c2146af97e144e39fe3fe9d1ca21458d9d1ec9a68b488ece900df5ab6c682f544fd09a21e23ce3af8f7013b3e0479448ecd92a6d69b5b769e2359af96dcfbbd5c2e9d901475b365ac165169935a8d88c483e6caec78507462f17ee7038701d45089e616c48db3934ccc747d5fc08d576b37498513a574a819b124fbcc90634d0f2f18508ee4a5d35626921b492952993618e9bf7f430ac1ab393f87ba0283663e343d0551b001c885fb62666221ef3d8fdb892d575d4b0ac720d7bf9cb1427109d343900b399db90b0c571962beb0e49d47cf272d114c3fbe26ee4ed680a60a2b03a91028af877beaf140b349716303382dc69e8bbb48c403df8fd7aa9c39e160fa954533a90dc4d21b36e76e7f5cdee4ee5bf5eef631ca664a5f3b35cb42972c6c82b5fa5b58acba068de47fa40c7deeae5cefe19d2e128aca8ad8bd04ce698b9f7e44297de39fad1336fabdd927b7a42e6029e095202b56045a13b00e87d49c4b84862b60faed3818c31d461307a8a83e56e250ae22f7f8ba848b1187ceca9d5486e9af9613f3a182fa3870ca08cab6390c26bc02d6d4767c95c15816328f14d197074227cf3460f9813bdb114f59030a114449c591f55e16cb40e796c3363a493a6104237bfe2dd891fdbecd0d4d6b9ffd141a848313917567bde65a0ddcd9e07c5854ca01e8a9ebe088a507ad0c0fa60e82289c4b7c5c2b023f9a4fe5797ec0f274323ca3a292568bb9a6b6ee0f2de6a04fcbc099bf6a08eae9ac50132eb76121576b325f4c4c1a560571183cc0ad88f7b7003e8b388b33a6cf6d20b92540cf8879b415282e1681341c0499ac917004e5467742837979eeb0c1ad0a01d0418e7c363a1b179cd64aa53d31477bd1c1f49da5a1b6235831e8035fb130eeb29f86b2117f4065f89f7241d09187dbdc12e52581f887c88d7628c8ccf30bb3b70765849f976bb9185a4b68142d1a16ea62063957e7f4aa964cc5f3655ac5da7a231fb6e5b8d3d8915b912306f98f3edc0831f69f728a559289deff24fccbc2e6aa3ee3c8ff01a122dfd48dbf8a169e7d5c42851d8a0782afff74926664348d706a6fda2255fb7b8886ffc81e9733348e6df6e3a7609529ea0a6f080ec03cb939e08e7a447a186c8817b40b5ba6dc8c6e10af5b0333da60d7d5bc595a5c99abe557b45a32048d2e53d3f29e5afcda977353d4c3802a98ad361748dd3bc81f64a9f46598a9d32f173e26f40457af7a81fe00df52cb48651367b9399a63ec12426c5c5aa2cfbf354b8eef180b053ff7d5e278f16de1bb37672557c9563f051e493d16975633c3c062193fac8423a34e3448ab02ffac93b530392aec0ed47dec49e8bd47dc9317bd23cecc62c819d917c641222746b83f1cb82b1887c1abf81dea08ac751b58363a9be62b1d868a75c28103475e38cc208445da5e7895bff874831b8115ff6cdb6a9f76bfe414949bc865b0bf6f6aab23a224a9e71ec7254b94f6df7d14257b4da9a8b3178a906177061d786e325a464402f0349ca21308e972c33fb111e0ade0b6e7ce8ef03f4985f7291687a00e3cd326c126dd6bf52b2365fc58a7de084808e2e868faba4b8e6050703b535f927afc93a365e56a87ac68d41de8d509692863420de0952e65c64990b1db66647bf1f9def2bd4acffb68b1388be64f5d0c2288220f438d0c15bca46ef9e88415d0e9c8e51e15d7c33abe4059c35e5f91ffe3a1dd280bd2e57c7f4bdd16d4178f6fc12067bcd9add6cec2f86d358bdcc8bb24ab657f0eab41b66febd6f2e5869205609361ec9a441cd30dfee6f88ba6d4b2782d76265075fca3463c8748c748dd2ca6a6597547d03fc6b23fa1499fdb239bc29a4497f1075bb616a68c940aeaef04c0212f260046a19fc13b8e87360ac902b87ffde7026b39b3330170b760e343dca42798c45b3ee565d841f39c1cd93caa88554a910e8645c0dea52c0a9c50391bdee7b819cfcc82a34c7512cc9a0184698ec45f75e94487009acd0f71c9efb35cb462e78953864922917889ca9e43880e149c8f834b9430c61182868b798b4beb40cf87643a702c1939e49a4228eaec6e9c6916173aaeb907335268e627b8682eea2549b4832b8489a335606cabb9b3be8ce1c24909a3a175cc662777a49249e02e1d1d019a2640dad8b45e2df021de2bdc33fa9485c1f599903e481a7db9ff64f6694f20f3518d767a1f21f1b453b032f497fde26c5362ea2db5aec84cc832d6bf1a2522d019fbc75de8dbf0870b099dbd3e0c50a32325c3203b17fcc008dadce1dc005ac67b26afc42470f4694259650ac877f6180584c0debdbc10d6e4325b792f69ea1831e92444f8f8e294dbe86616a941673ae388334d684a2b05e31e125afb8664faadab271e75cd5f5c1ed947039b784d26cd4ece9ab0a286b7b360051a2aef1c79a85a7b6693e90b2c3c0907e4f12ba73bc898a9afc7f8d18342277fda9bbcf5b4f89201b8546b8b0a2ae0fe7ae822a6dd3958b487692961e1f7873d645b1dafb0842ec155257d1bf239650ca0a57453777d66ce419254f0139d6a7b772d50141c0a999c661f96f54ae5658b18ec84f8b16d6217e8ebc7cf84f84df4f8372c4c6742f926b6f93e84f36dc236640b22ec30d45c9c93f2404d5c118b5257e8339cb222746ff059396542aca0d4ce1ed099d360c8021bd67fe39963bb27ac81a8b591c85da08ef9817a36227ddff3bafa43ab6207c181a616b5e6b7fc79b836a1b1165bca35e095fba3388f2888e7ca5ce87928a407b08f08190a6d2949755f0a49ccfc84375d378ce5e9dcbccca686825a65cdc67d2891f4a43392e393346fa4db6dbf55168a47cf9e66f449e2a797411085c54d3599c7a4060bc7f442896fae3bbd2a8ba6e652d5f408c3490c72bf6815ed8491cf5161883899082b155f5c255aa65434815f3d1ee1b7eeda794303f3f42aa4431b8067ff5d5005bc1c87ea640be0861b68897281d66ad9b636039773eafd8d18541957c6151c951044362788d6dc404cf3d724cd694ac10b0702c9129eb7f1f273656fed19985bab6678f4be78f4b97700fb3674c80fa0a88928864a8c1647288264a31023e075a5ac9ae5fa4999c924d1016e44bcdf57ef8c894e33c5a876002063b402d6b84884bffee2f038e2c461d5cbf4443865959caba20390f86c66c14f349fb595efad02697c1e5407112dcba2f27627f0c53dc13a6b64d291e81243063f5ce1698572b9f729dc010f6c03c078029810d01623825ddff29cd666190e5988a9a95b35c8bb2d38743d38f61594674ebc4f491ac38076ca2dcea7c7662e91f285fabe270b3798a3c8594d2d872c57136ded32950a85c3ded424b5e43b7c3d5d5e27dfb1f7e91ebc042935dbbdbe51f89b3bfd934025ae1d99168c4aa8db5840a0a324d1564260855facf3947606e3c6a936b5ae85cafa4d10eb2181d14385650a0e032520284df0a087535e73607eb448c111a73209e0de42b056fca83d30f38d64d4c5b7ca0c1d4e7715f51845b35c8b630e0fa43ec41e0d86483444e9454a84fffa3fe5199e98b92f55c316b60ce362b16d4347f14020f21c5d2372a000227a848d3af76c2a7b54ecb450069a24abd52a7e4169f6de06f134dc6713eb15606345418c601a37551c2936905af896b2b7cfe75f88111ddc50a9f6c546e5165527d9187a396deba072f7830934277574c047ec3c26a8735a6c3ec7e89f03ce1bd5ae526a60566fadeaf95ee8e646ce5c1456ef83b54e1503232c467eaee0a2b59135a463b1088eabe724a8b793843fd3c1be8525a25e10eb3fd3eaad345177ac2cf281257fa01c05bbeababdd8c66ec4022101d8b9bdaf7bd5815cacc4dceadba8945cb698ca83126650288b1fcd262477fbeb4e17546662e6d2fa89827f966f48cfce948950a1bf4a01bfa7948b6ed43797074df13bafdf990d6333c869a5f48802e81f0dd1029c2465f8d2825510f84be49b4129a96e1a6f11fa9379833eb6765215bc1b0a4fa0c5278cca85c9afb281eda18a7ebbffadaf727fa71a9033ae2b877a9b8e711974a0e056723136a207342d785307b5c3f497317088abd911fcb13fbfeacc7e5ea5a975737c5a4f3f762cb8f23d21cd1c3b9f822b93fbb7fd3b7d762c081db5167f459203942020d3adaa9b7bb0aab9b56eaa24e059348b782890ee4b1159ccce391dea25d8c9601461f923e4fbcef52ef704fb50f87bc1aaa1cbf7bbda041dd67bd581ca97189118b1fe0266e41d11cf691644188bbc7a39cea4af87840f2bef2370976babf9ecebc3a67333c6b287ae16acf35fb5cb9a680768d84fb4948e36c671efaa411165f38bd75d53da5a08d4872aea4d689785b45e2239b2448b6ec84b112dc9710191776779c582179d44e9a9734ac73da5083db1a4132e69a73b6b4ea3bbfa58a942b60d74133ff50c9b56c8c636f38e75623d493ac012414967a087a6e3c282d50777111debf068be1fb530b49cb688a932a2a640a5988899d4a07205956b1ff7bdaf9c697a0fe8ddde06ceaa99ce1c91a918baa0ff51977e1e2f37d26e6d3dfce6bab8bba40f712a20f70a5cc6a7e1d3dab4ae23f819ffe5e2fad6833e217ab40be5e835ece9eb8676d02d07d66a28baf512caede28da25cdc66534ab7e32de4a6586160986eb433c4728f4cf5d4880c00b089b23fcbc3e7cfea00343515f5071a40bb6d764d01cb6c7ff14b0ada3282cf1d7b50823f93e1444272cdc925d2799d71fbdf1868f8b01c8cd7369115e6c67555a39e4636b05475a952005267b5a221bed1c7e91828847b125964518fa50aa46f4f0c77412ab57e4b82c52056ff91565df743d7c829f2ad8f5d19afe53e663f4ea4ea3eaa62b4098ea49b4911a2d40fb50ba6865cf0fb20ca76ad45da7c0de53ec89a1ce85a1a665896c1eca3a13070cc6464935606ce21846c57d3c0d1bbc7162545df3373ecb51e2ae0881b61644db46a8efe76516527d8e9018e4a44701baaa12c1961bd37a88775c1900741b0510e21105e31fec78f4feded906f17c6f9a42cba78fc7f30fa76378bcb27d3b07097f583ad67f57ec374552193d84e26d2e30411d353caea9535f6da53c8a992185f1aaf48edae5928d8ae5a442a84672c2a35e407290d4ba55966d652c2a0e7e35275658861e2d802ce9b020bcf797170e678966ed7e91877af88d30fdaca158a6128cea250ba1b0c25831853c309b9ad2d039e035c7db1ea9c5e6d072c1f96912419192647ca94410f4e25864095c2af47db346926723f7505945d5009362b99a41a03cfc13b729072e2128b9fc0fc0be071f0e3e471d6c203b01c76194f27afd9205524ca68b4afc2782916be64d053106f2fb450b076769af78623f3aef0e27234f8e93322ff1ceab9cec33c499e7863481db4cd4c3ece5c34f27ecf40c8f3e88cde29821a9a490a6ffd4dfd37ef6623b82ec940960cf964724385efbf1616893609a1107a735b6b455d4944c539f1e9dbaa040af59304c420105f7776b5b174f4e7c547879ed6f1b3bbd336d05c96864a9072ed64d4b73e37033eba7f466d1cc04a5ed212998e6e5c8f1cdfe6fe9c396f1b03f69407a1939199c3b284f072d73d998f6929412f55e03228fe7803c08f0070614b92dd3884ae7a37c7bea5f6f6c1b87bb26364dd2eb9c8251bf0c96372861431bf7de0a301dd6de8aef499348e0e162fadad8b8351bb33398497d0754b71b3d38cc40d9c6d0af3ec58f0a5804b085f49f3012bf0b9abe7a146a281ed4fb0fa4d460487c4b401693b08bf2f9a2424280a39e87e9d4091a97826184437baf2441b60799cc48ef5fed14c318697627c6bdc5ed0aa602bdd5ff4105f16ded72047789c84eb102d05fc7318000c1dd60e5a0d1419a93387bb5b8c15c428c0ce1d91a5e07414cb84c752af3cee1fe32888d1f597cb9b65b0822c28cf8ceb009384059aa57760d5ee0278a85d5213c8be0d221c7276382757458b9354718a0ddb5dccc39ce80a7b13189cb9d995db9483cfb01cf787029c3f08a3fe5080fec712ee3f4830ff2c85e58f0d2047c6202b62241c36b8fefaf05cba147d680ae7262c02771a82ac3078380301daffd88b049f7f7ea09f8470c28207d0b76ac38db2fa880393b5ec5585ecb2226eb701a48f1320fe4e84e83831b2e30c313ecec07b3923c6efc418a73340389c19e7e90c6cff9dc83bc65bc5871c71dcb1b94ec2c1e59cfa013ebcb5c886d455031db436ea67fc74da53114e46452119f7a5e4b01024835e2c1936e2e4dc0893854248862bc964688b93c39b200200bf8ba0959a784a00a48487cf915d9c047108985fb389a1e7691cfceeee3ffb8743a288c6be2754f36544050fb7bcfd795492a7524bee07a5131417a2cc241082bb1c1d8a795875885525db41556d873b9f1de4753ca72818f75baaeb570f6a678b4d4347e403bc52c3f49cd1aa0502e87c6fb4f3f0ff879f4fc483a9697d4695928b7527843bfd09c9c8f824168107a10afc4cb05f03555fbde3b204db8313b31802cf599a4e84470847f9ab474584a3e6fb6e14e736bf122c9420c8cbd6fa7b4857a949b077bf88805af251226103917506d118fb9bcfb9f6e34893b6f0e458a241e7d22f47a764d94f407bb5e75661806a1c4f58557ebc258c8a2c8acd35830380dde45ddfc3a8b08d1dacb2338fae52a31bbbfa4f2b81195bb60c1fece88d12bb6c995ef6b857950ab785e88a2f7463f6b08f4d9061bf33627d3de97c0d56944be5c21625c2ad20f715c5c0f0a25be2accb2c9de4a42584206ed403fc546bacd58e853d6d7285b82ae66f8db923a4ca919398ec9b0bef1dcca77279e66f7faf4bc201547d59a997efedc61e3c78f28193f7d83459596e8f73ad78529f03608ace7eaa284054bf3718e6d53024c33ef47d0f8fbbc69cb76b7821eb3679e9f70e58df631108499ad34c0ca8f835858c25a025c654e227a4e4cb2d089713a9dbed6b3466de78a1dba996faed1d3f13affcb45d53c7fdebed88cafbb6cf689967194de0e01238282388eb481457091ac1065c80625e72d508428d74a180a93a34f03a46ac1534759758f0c101b7a7710d01393dc79ef16e1aa8c76856af4e4a1ae0955b87dfa74976ddae7dfc7df31f87cc0aa20334269212ac97d5867adadd0c55a32835996f42eb19dad35ccd6b97118e107051902ecfbd67f4da58975d25fdfad5c3af721e7b05c88dc07a4832e8c7e93de6c4171e6f43fc5e21b71c915e83efe4c10745b47d4a3fbbd6ec9a3183a4be805e0b031e855a5e9e9e4eddd1349e487e2c03973549538aa76eb012d02578f5a3361f4df1b047276ebe05d48cbac971abf2b2b4517a54e562d1c076d1eff6ce97c146ee97321da0e0c923e755567e92f888b8f7b8980c44f0f9d646aff5463203f1d34608d2d97725672925ccf40f14148275b8dd0b44417c670f5e9b803ee29e0a13ae664f37b5051cc5928333b657cb2e27da8761d61ecbcfc134a7871c9d56f3e051c176843dc7e8a1710375190afc1ca64659fa8e68c8d835d5c44a9045368575043f3ff1e00a56058ea380c1633ead0ec9c4079eaa9b64c8db0f983074578b349dc979800780a7a6cd42977f9df8f4a430346ec49a5c54b9d2d46397fed1e396e46d500eb5a98d00aa09bedf7979ae782d361a5edacdcd5b5cfbb857062284dbb86735d517858d094d3541173e3618275a0678dd780b5022b2e6d7bba40e5bd0b493fc36161899e0287c01d9155383d32c9e263a130045aeb6e447520f77a4e497a1bbc9b3c78dcad19d3c2199460d8e7fbb64a981d31e54403df403692a13fe0ea4ab5717b6a2d52db6ed54248e2e10e1b477e5573ca53409a5d4b80a278911f10180f66555a536cdd21915ee97d95a2b3aa3f5eb8bafd96bf3f3b356805868a9011265de4036a50e4f4430d9a4c799fccc75420538ea2ed1a3cc97ba347aa35c20fab98b31da3a20943a4a03aaa87317f840aece8247dea2714e8086768e01472ed4ef8de8b736d4bf8108bf878a2e396e3934745921c64723b53f2ae85fbc090eb2f33854991f33390bae56be89bfae7e1599d70192b882ab0f9848e9122e5786dbf90075dfc16f8d092874428dd9a2b1b13a68c150b5161081159daa844dac8f6f6e3ad234d678731eae747d0dd5abd6fbf3bcad5e7f682b38f04c21661751d6dac454cdefa1465230c37ad61d94faa2d5a1b03dbf655222801482c50ef066d710a64c4f1dd13a873e0e302b001200b7b9477e00fc50b2245d8685b5fbe86910a05cd042a9ec080795c4bb02d9b537db880ae1d018a56b3b891ff116098592a1c050f1a43b9435963b09ea966f11c7792c50c5414d48d5cb6088e33b371d98bfe57c8a8513179da735a3a52ad219f237c1a1171cedf94095c30b8bb46ed6eb646f3a75205dc3e4ac2d268773f178908280b7f4e6f67f71e75d657ff82aefb680a50af5dde5c2a6c72967a43ab87d8f3337740ba9dce085eeb4eb30d438ec9554d624ac96fe9efa9fc547767151f9c831b4259083a92c60b2b8aa39c5a3b3a22a0b8a0e550914b6161b505c7dc172e6d14a801df7876a201375194d6b6fb6ae97a1a0c2eb8245f8e604486b03e700fc73abc7f63604c71b1b8ec9330ae274623aa1c5026ba0a9cf60ae5aa8e53caf47d5004bcf71a62f60de38bb1b65128fff8c4e8fbb2e6fc91aa5a434738f5214827e99a1f95eca3e466da9b86ebde3558834256da58e6f9e820ed7e070550385b78dcecddd6f6737c440625e6cefc6c842115102ee684115daf8681dd9aaeb756afd2fe89883aa442e2051e56c5cb4002b673dd3ec0b29e91390abcbc340dc549fa55cf5ec4571f835158ceca5ecfd7c17af2d0d88ab35296cd1cbd72d1aee092ce93c7adb366a06d5bcc35d1d198105b9f581fe58c72526728ff1d14ccc8339d1c054b4b55a31952cc8a0fc8ae032ac99ef13d5ea2da45d7431dc0b940611c82700dde5bdde20cd25cc68234c919d961ca9612c50bf9fb9d4892e7e78d7f2a21068c75c7d2eedc1f835013ef007455b3bae2b42729fc03b0bd1b4468260447e08b06e5bc4c8503c785722cc03066c8c66207462aa40a07ede3a93315fc9bdc5295d9e42e6dd1aeb7f877c808f5d0a9c026de42925b543971d4f098c818df4986eb102a794fe88a64d38354e4101f3c80accf06558440a8aacc28faca0a4d6f1d0173cb4cc810a431e7c518ba5c1aa5614d7e2c77c389f4d06cf0b2e183c442ac3dd84d0ae3639e9e9ff13b71dc0f2758d6b3fca1a2a383df8e3c94c2252401a71b3040d006cc5c5a739fb164fc309a2cb8af90fdb108c6160350e722ed8d5a5636d1e600a5b78c6afd896c07f787b1c2022aba7c500888725ab5aac316a35c15b2d95aa945257264efe6cd3341e725b2fb901f0dd99ec16ed4a2bd705a9b9fb2d3cffef84d14672ce81574a8a000ccca55c888437d48e664ec9c754b4a9542a740c51ed77004af563c6d35a9ab52dc0098127938d674a82d3cd4cb2d0c06b223d3c25405f1ac1c95efd83f0d02c191d6a3b889837495426d98787b7d2624963ff06fce3e961ec5ac083db4a7b93cbb141435855e88362a6c81d04402c66981550f1607278bbc8687c5308547580702f0550a60ffc3eba0573e3a5d3b8dace48b4f208c94f8d03d1515ed0e60547bde3fa0e4857f53b173e7d26673084fb256f74f487e1ff6a340827c8ba440e4f732d7f5d7245f04d3880f581e99d8e9485fd93cdd858ff5c4dfd62410d0492d02c81cc147d8862bc719179c6c1648454046bcbb5a30c1c2eb91630cc58ab976c20865154125a725cd0d39dc37eb25055ae3d4b8b1904a5502be9abe1433c7bc3ae4690100373bfb0eaa0e6dd87201afa7e5fe500daf40321ab99c5f6ecd0b20fae214fb13312f645e28cb5c6f0dae2d292bb975bedb0160216bb3c0f4aa5afb0d27d9ca5a9915cbb880253524e04b80e28669d1df2b54de57c0a03662cc4868bbe0a412bfb4a6c5cc781393f0b4fee36107a27f2f62ac8010e12bdd8ad78147f1344f36dd0525102c850c6eb6094393bbc8d70cc762e0ac7a3c73b8513e326078cc144e374c6c4ce2194eda6d965c56a9d11931a88e2411a4167dc9d86ff81f97ee676fe21734ba1080b45c58e6cdadb079259f043fa2995db3f7db7ceeb9c87e3857e48da264d87c465789384053bf7ccbae6a00985a7d08630a468f367e6e2afadde75a7ed3d1c607e28bc5ee7ed4d6ff89568f21fd65116013b9bfa7fc802c80e4324d1067257630003324ce8d95d40c15c138641883a447142b1ac31cb5a914c8e3c667c0fce6a2c844bc84d6d7c82554108c7855078731f0875344f6c12a9bbeed42c6baa2f56dae7ba0b94f5967758ff449f276a473554e7ddf4288cf5d9571f812276cf8c893cfe671813ee763da92f4051e0138f24a3de455bd454372a035d17a11380bca2a4a75bf90b99e4aa25d1026c0998d951b04e98e96094d9de6f3630c7fda92de8e58774e4515bcc4a0a7f1ad0e053190d83f5d61fb5447beacd3fce4e0919791d05e7b47f43bdc11af11a58207b14c170e865920c6345806078b27b56289389c930c1b48e9946b45c79795d2219c295b512461eb2207d1022b821d081637af4826d24ae069d22ab3b496d14e912a30b2aa11fe1d17ea63dcaee6b843853d106ecab9db31b661b8adf89873b7daed39320b67d4933174ee1ada27576234be812fc524ff2947002599db7a4f3d462414bb750fd9cd917197b88f43f1c65dba48a5d3ef9c5ce36d75f56109554c94f55e116137d611d4137392ee2b2ab2ade4922adedb162e534953b88c06f29150e05a211de39985053ce6c6dd1577fbd58f69df9feeec18fc58ce567dec7ab825a3167cbfcfd1d97a832bd494ffc15777dacc88b0b45bbad274b8f227a85468f44790ef97f035624fd5482fa6e94c0e538fd4c9b40a34c09823fa85d47e66c4fa8413d075c188305187b1cf554a898aae177ead7a4fb0caeb66853535082cb61a111a80930c18d8907bbb66d3f657332b4cadd70da1b27f6dd43ad497e6342ce0b641102ffea1f413fbd45b6b8801cd2fce584ae0514e78964439783266c4b1175c76c506f7ee0c711d35d7583da1373766886f47bf732c42d2fdd907eea5ed68dd2cafce9051ef0c8e267be3814f0fbcfd98563cb341e22a21137e0081932290d3f70f24bb1861151d34a90ddbec01d03795c3c537dc53e4a45f8d6ca5060ec1cee95cb9c2f7f99a936df89ba818ea4744ce5a34cb13503b77d075586d26b4c4b8503d73e2fb2c1a8a02a342df279946f05433c013f8c487a64105295a8cd1d23c793900fbec4db5bbc522be09615d88cd590dc1366c05d7e422d9180b8593b9c1f637b6e6334263eb7a263f1e760682f678810f4f9d235eb12b65309d7db1d8055130555c62909365e92a8b66f3c0722963d77a9c9751e3a847a6ad9e59b5f236d5a26403d9945ba710f84d72a009679365cf1516ae0feea1b44a8a82676eb8180721aa01c92ad9f4bf36f190f8260c0e8081ea4d79ace6222dad1532d73f216098ff7c5ade22e5c33e5998d45b25a062bfd650fb3c380e659f03cf535700aa91c00db396c5471db4f3eacb238cd970c5debb1f5f49530330bdcfb1c3d80d2e84ba64b3786d9b01bf993dd877d7b6a3d44d7fbe97f58f90718680c51d8d2cbd29509f36969382b4291490afcb4fff91c7c6ac0a47df45b2288c7540e4cb4e9851dd6b68e37a4630decd0473f82a4bc77d27b182a88691d4ec317a0850fb665389ab4500828014b1b4466f7a83068fc3f630864afe5bf69878d7105499e0d8cb792cd571f661e84b62b91146c1b0a7746d0c0b75a819a03cbd97e173c14c3ac214710717da9f0451493ea0b8b950eb68e768cffb49d1875d4010c7a0552e34277ebac2fd51497a5581a794d48948c6b041fcf2c917f12ee54f6aa7c64fc29da331df832b5f6d026b6a56a50a275edc5f2d24522d55f6d46803899c63693b0152356cc4d05a209c045516f0cd8524916628ce8162b2686cfe3721029341ebc8442cee85d955d2affdae0194596e7af3025f1ef9e2b3e1bc81c247f09cd48bdd0327b49a1c00f1e638cfff4f0f057c5f6931042c80dea92f8a5c2a0e608aa63f4ab4a0836d759132a70274f149298e0178eb3e99bedde6b224f693b2e5832bb19ee94e8411369170c43044889bd8648c17f810bf2629961618aa61cd3ba0ec55f903d0e9e63dffde5bd12759c004b4c9180910c50dc2f7314a8fd27845845017edc05e2e052afcb758d152ae3520c269ec194be963cd35464c46992b542891e29d8d5ff5eaf131501ac42d3712a5ecabb8c1df0c612301e88e67eaa5267fd79c55e60d51dbb4b6111705e8757ac8b43745baba80e711ad86c2c588f57c030a93dabb0c01a5249a8d57190c024a4b031a9327ad0e4c668163d48aad53126f97a287307b45d2ce905222cc111dc8635f1195303c9e69a9e4fdc998997f3089dcc18228986fad0e30ef120c2ea42217cd728bec2972232d0e97a8c1937259dafe68aeeedade85eccd9fb0b1d4d83f70e147cdd554a176bdf448e6370017b2870f42750b2a5a915cd33e05209272f23878327205b81343792486e5b271509ad87aec1e1680b66683e2eb86cc7c1870a91548834e0b24ca1219fe36f0407297231cddc30cafe824d2a64692a0afcdc12c3a69a0fedb3c5413ce4e1255b00a19979a97c4d0b12bfdd0b006f5543b5dcea351373ff9027ce6f8ea5d84049c2d25457e2e1a0512c3fff733000e96778eebb8c2b2c252490101ce546247aad8a95f6eb8ea17b71354817e554c28d49b4a00d840a75e4d1d794de1ec6e68f9d08c5b971b18618259453193076a1841ce0883ceb859266f53937d13fc7522c0cdd97a4db36ae596111c6bc5fced8db0d6c5a57fa34002a2d7d3762436f19619f81c17713996b9e5f333477216427ca97b1ea717ea321e7b6bde8ade368299c218fe02df8a83630430a8bed3566c5111e9c8dae60088994570611f9114ce074165f310f427e8a3597a018c096d1c451e1fbaf1bc0b2dd46d583c8929f0985aacc26ca0ea046a07d082ba057832786ff2c735876b4d7b08c83829fc758d2a6a8b048ff97bb82609234bdb559998b7df84af9dab310e5e0de2cce0217a6c2646797a90a20b463fa2772eb45823858ebaefafad2ff450f17fe5e043a63ae4f27fa878ec78c8dadfc32e823df6637a88f25c7fe3df10e7ed46c0202e055b94a60c3c39a119c2310a881332402b072af42f6a5a73c5ccc3f0ffa2e9b77e811994d505526f2600806cbd56d55f31c70943a136466b224162d0f031bf1d7b23c70457fb4709d8b17628d40fb54e12dc9505c337095704d8bbab40ec036be5745655597f81913323aa742c665001f445e7d595b4b6c784fd05db9c497e1b50e2472b92735f77a04a486a42d0369e4ded20dfab22ee7a01cac1904fec8dd17c79deecf59a41701e82eb212d5b3b67bfa53afb8fac0ad3c85df546e8cbece2355749971121df873422ce4ad102d0fa99c996d56927a75a969c6472755ab30a84247a7e7edf0d4aac39d770f5136c950961cb470efb693c45cbe6bcd7de54b539680c623910acee054c44f9d4f5cbd4693b6f316a101d23942364ce31b8727205cfea7339094249d01945da6a37e67aab7b3ff066790755c3d3c057362d14956e681e949928639bdc19cae1e0685dba2f35195cf47fe45bd8140d38b58854247d3c50926f88b84d58af36355b66d25291a86403e59f56437e3c148151c699acc9461474e4b60ddb7ba842955cd547fe91c1610b6af6ea0bebb8bfd06f8d72adc4865d622ba6250bdec5dc3ac5dd6df07cbd5bba4d07796a2717d69085eab12bca10cb1f703f70f9b3f62d37f3e444583ca92efbe91253b0210ec40fb2fdd6197b5878c15374a04d193cfbb0b8b35951ad61785853db8792bad1f3fa400ecc2cbe91946e2c1cd599210f5f2c745a3efc4aed2f58b3222f99496c39254bf5b31c70772180573663396eacc8d195065a1b4cefeffbec914a036e632c88a05e6d86fe510c90a5529c4e8e93e880ca24e2e8158628b6086e40fd58bb0d8132d6bbcb8763247d707417f0279e203fca724b4d202592e51684392339ddc74e960ca3e94082f039c1cf81309ecdc85a145e3a254d48e3e3239b00c3189907b2f92a415cac0b8a20a57e508a44a01e0f754a531a23683d4c7733139c1dc3d0387e279a90c73def63dcacb4150cfed302a05f15e92748853dd0e087a11fe3c65907c47a9cb07b7d9a334a848ed982d083ba60ac3fd2de50913bbb8022c915bb609caeb718c5bae88d2a994a04c3639e60c4631baad2a984807eae6f0c0129c2784977c4a93de82170a84aff53c8a11a33206ed97039dd8a0699180f91f947615326425f29b839d3b926c69f8d4eb5ba7acbceb1ed1c5701e5a3bb584363dac62441754543d76cca3e77671d69306a09142ae8bf20c6de09625f5b7d1e17aa69dbd6f0019c350a4ea0e1ce957105b8e0201c1f122048e4764293643a3487db20c482671e00820be24ca9b27cfd95cdcabe5e0d72066346d8946c24d648205302a9605e61fa181a02c9b9cf6f578071e99adcc0e24d90b137d964e0728ac7cc8991a0dd2387263ebbc7f8f0eb29dfb4d06d986e8206c20487c8287b9220c250a4b0899743ec37436eb20380e1f2f769d5b67ac6f93bc4fc8a8c5521f0599f1530a3c9a4ac2183a0d94695b43d8ed51cab4f2854d5318c613503640545072c54d478df058337daf3ae9a5716962e83f1e417ddc1df464743e000ddc240c001038697ab1bd5da774b7b8256c36023c3cc30d67745b2649b00406319a7cfcb94fc60a640829a3f06e9d3e9a6ef4aa80ec12126e355ab2392bb6fbbe0f9419042f4c18545dcc5ee6f1d99c49f27ccc278748bcfebcd2c33139b079915e2a943bda449cff8923a6795bbb8da53779bb8dc2d2d5c8e2cbf22eb2c44e2c0137c4c8c615ebb939bd0ca4419ee811973e2c91a058c54d2e32ea8d6708754083727439000e2278b6e0af804816d84eb7300ddd7b840611c126b2e5cb92c4aa6e4115213e4bda4671f54f4ad37b0efe4723afd712ffe8593954a406256761a10557affccd8c5d3dabd9e916788c6ea256b48a846afb53a133f17cae72433a3bb431095ec1d85aede4ed84f98a92e5118875f2fb0a6ab6749049b9f0652137f77b18819ad6609e72278085a9cba116c2b5343046005b5bc0b78005f3f9ca8f918ea3a748b99040a204262d2772b19cf87b6c444ea30a2d1ba082e2c6014865f1aa4229a9493f88e605f98e02bbca08603351ebbf610cfe12d7a37977cef1f0b0834534b9594dc957469e99210775cb4a41136278e92b388055b6ab659cc34bdcc7d31c69ca048fabd26f5b4200e0b1e469db6d902481e0c19c4a8e90084e4c47b38d21906c4a5326b311d43e861863e5d897784c448f647c785dd39ca8289062b9fca21f7ccfd9b05fe7b2f15f0d51b4d759bf6187723ef519881e89c0b6daf729e7bd2bfd90f9e791cb880d757f20f364e24f05a1fa634a8ea1ddd42f7d84aed087c98d4ec3a51180280f0e7cec1536cd357e586b2069da3d1d7457efa94f38e6e65e825e24c27d51e3e09a566e1e52ee0d1210beb600eda726938ca4b701b2088f0c89c6f66175f1918ddc22f7716ffdfa2222c8b2ccebf1d604cd13bce43db4dd4eed4bd4dfb908f67b8c0afa6a4be4e64cb26508eb625acbdd3d060eb3552e112e531f93747b4a3a9da124f6f365e7c9c5c302b66faf31a4f25525fd94a0268ba69fda3df4992685203ab90039c019a198ee3dfef3bf39603d1b22e423e2bc540d5d3a52bcec3edaa455eb2d761a5272f8ca6bcb709ea80942809af3cc45f531450ccc81a9b0eb930fe81326bbaf07a5d1567b194c655671aedbfc8e4723862131a8254eae28ed7b7c6fed074423da05eedac881abaf511fa2e9921b4aed1b1c8616a2a3e02825230e92dfca765e1e4af58a37b8568d10224fb4858027543e590e3a31a369f5e2339599075e0d8b4e62b851449fa46f04ed68b6ee95428718119510f55c006dcb47eed57870156824c1aedb6de02018b035d9ddda99bcf9a0b830c84149eccc715dfbba32e8348fa000cc1a3da0bf3e2d30ef6ddd94693657bd11761833f21d547b5e88cab3f37e17c89efe1343edcd21706996726ec739f20d9d9ed3db61dafe3f8b79c4fcb160dec0000d8a590938999a212023685aacdf33106f0da23b3bf068627915c895422606f259fbe580c9716fd99ef258ec0a0c24ad97eacbb3d696989a224e4c5b10a092a1604fd4e4ef09011b15b2614f48ffefe2dce557ee441d3dec8476094a698763ee1fc32e0f8568c63d50f9f5d1f65b23e19f5eb396d8c950d5c53dcaa9c1c57108265f8c0eeefc806542e21fb565df4b209c6930de68eb2376104970843264fafa0cfbe0569402f00d5f16ccffb4ed5496608abe1706fed32310cf879e66fb93b337c9512b7676e4c344140fd7878780809dbed8405a2a1a7dea86dd9528f14ee7643db4946edd409238153d75fb5a5969c95d5486dcb5f9364ddcbe6f595b98023fc1736eb2bf360db9d6af8818d311f88787bedb049dbc2d48eae35eec5331b8492fa283bc38788c7be468a76f881009be1173b0c28dba88d0f36ada8f66e79cf3beb790bd16cfc1620089091fd1d3a76f41eebda9e876280e6db7077d5570b76e84254548692b4bdad22df1209b1577d7e2177d6f40881767d956b9b99c82e04a4e163534b8c3ddfb03afdae16789880104df2bb578156076c7a2ad8cc55605be6b43dc0724bd0ebcd0936db8a973d2d816631be4595b0ecfbb79ee4f5b5a93454c3d085b5cc2c63d6f01ca5fd609e23656dc8f74393dd3166540eab2b79158d38241aad61d108c1685937e89da344a965dbc0011a893e9fa3a69f4055d9227f35bb4c56c148530cd4227e1772cab96f31fdc3d04112eb5ecffbdda4274a4b60a322789d8c22611bb66880d8a91603d8e3b18fe9cc2aa1c2180a22954e59733c404c4fdcf72608269b7e67c518f4e1d1457c900ebb7a2a7e18b87702661727ca6a56e94378c81dd406dd29f23008883e563f83f68496727cd556827885958b459fa3bf1ea3ede0266423ba611e26ef4e234d1b243cbedcdf3425e89e06adb782d7ce1928ffc86455ff8cccf593688058988f7fc9fc153381e72d987f089143a7e9f73814a131932c338bb1a43a22ab4f291445b059e3767c53b140087adfc2d0bff41b2ae216e3adaa54d285e6ed1eee1177487689b1b095526f07c18ef84b11d353df36f597eba7269c6313bb7bd663272e70bea11fa40400a24f6c460a550e2f09ae517eeaa9e1530cc3454058093949990e3c4d7de4bbcb810acd0279902a506218e8f32e8991a4f3d5f585d5d5a2aa62d30b342109c010c310d4dd919356057c117b49bb3d07f04d3fb35e84fec8bcb0571d507c938daa1a96b19226f8cdb1c7bd782e47039cfeefa3dc78b06c863fe182ee3403d2a78ca7c2992a78f2d371f36ab0e89ef0f141a9f2fa80ea64626ade87995dd18c6637ccfaa0de003f4ce41c54bbb95dc6a28a384f0a6e7786f2ec6c9c51ec4c5868b08d7d0a341f0c6fb7a2bb5f532d6b53fad2a5e95c76ae80d4b5bf8cca78232b5a5ec2c38c802e57a9e9d175c8400b31c0efa286d6db575b22fb003147ad0d8e373aa85b0d81289c1c98db0be8c442fec566fd22e914aada6553e620005761fd7c1eed7603abfd840903da8330f0df2cd9a6c9786513eae558ca486190d00c4dbaafbefe48f9f180ac880ead5cf0ebb29df6771838bcf0a5a10477231ac8667bfd367f197f80a287511ee07942555a610fa48102db633d05709a86ad8826d1694cbf60a3d707a8a5506fa4df66c2eb9b4a2b5a57b34a606d6c2efd44b8fcc3c5c99afbb0ab7e4664e308b0610b28a52211e8b6125fdcbe852b5ddc3feb3301bc26824da96ed14c8cb9d090c6832ad980fa25f075667da098eaee0dfdf9f32f206293df52bd89adbe240107b17db0b26a18d78f90cda20682af7c72b6a681839fecc19ebb39d9a210c1a37d43ef33a68dff2c0e780c17da18f2e07a0c9eafcf8b61111affe42ebb947bc9960567aec74c264e11cbb20850c73195c60aec7265149ffa61873d42322882c498ed820c018ae5390b68f0ae05e1e39c1e59ac8c813381d1029ea50a2c728e226a2d418b36f959fee3ab9985729a09110a1d12088bac1e5628b2a8453f7842f350a1c19421d0b5dc85545765050f33c5b91ebd798d322fb31663e36fea0eef7a3c279581a4d3e6d8d5160daf57eb1fece8c4aa4345ba1002460173eb0c80b61c28a8aea33a34fb80daf02f0b6a598c490e584ff705635b1f5b85088d470e2765bb79e45a9ab65821bfdedc0fdfee3fb6e18ebb5b2e004912682dd2a673bfbe25b27930739329bade0fa2c2b6c4ea31ed9e81fe1a90f648d6b10f0fd22a33b02ad002be99761bb2fb83fe09e01d1db9ff41b25cd41d5902685a5b25dbfa6e2dbb0c8577c633d99da6be40153c00002fbbdff5b8dd4cacf8c4b25cfa92acf134dbd1c3a20570206bd2f3ae38f2e4f23d41e84512449d9e6deea1ebc012241a2c9d226d6bfc65806b9f8c14a4cb696dce0ce85e51ba1543368a5dcda3ec1e1d713444273251e44a1e2db34b6e48e171db5d44446d8cac4ffbafc013aa553a02365090c1faa7313e160d8b0a1548199b62088df3176d5fb400b3535da03c76c9d68ae5dcecd5973fce1ac2b98b055d58e2be314285cba9802849298bea59e47a2c8d463520790f78b77c0d6ca62a4c3500cad76ce1afd50d71269b837cc96446c74505885ff85a015cf4bb674d97b0173e5b36944abe758419c0b500a20203a6f2bed6b07bed5acac802f7149d10edf35ed5011ba4e60c0baf2e03e3f0b0cf90ab4454e154dd0ed62f45605988f7c3ea808933a8cf720802680a7765dc7b78276edb85bb09c163659c82c41350bfa4ef348c23e7770a97ba66a32d4e44d29e2377cf8214207fdfa591c29eaf079906a5bfab58ffa880e642c72bd9405250a49517497a86f2c6b14c25f5fb7c2aec3a042eb11dae43457e8aeef69865324b53d76cbbdec9e87c547e1461195b44c7cb0ea0ab2152aecb9014b45f3eaccbfd50d1f98a8ba582fc73dbcb962a95d69d3723e70cf0473e9235cd77f37b7ac5b8d5fc1a44bb7e3eb9edf1dd437b20c18610f81407432b6823c2494d949ce830c2638725ba678346a8a231184985402fa7df184964deeaa99b968f8ac993f4a07ca6b3f031c98a8556e48f34b35502db5f6d83286be9190654809e1d45f100f2b247e1935f99596515c0940694991ed218c879e6222af8ced25a06f62ff4ab8c4faa61a82c8b46ca7cfe75b5642df8353390ceca4932f0c6cdbd68113b575bf2c8dd3c3439cc631e37f9491ed0c88151622a8020697139bbfc353b685a53286282372c951b634840c099229fd67619cd559389c841bdeda24b36d6696ab5c6ea6765bd12b6744e4beae33c9fe8c4aebd60a702093b96a9e3ae44dd38758642699bdb52554810359e41820ca20e308578c0fcdfaf95728f079508577bbd33fdb4964967339a3b0f3a2a8046de1295b40887c88fdc0201eb3796fac851d22a08451ac196ec287deeec24fe44b3adcd21621f7f1338c570650f78d14d140991b0b545778743a592679640160a22cbd65512a5d8976b13936bd2f792c3c8f5c12c6b575f5566fc67406ccbf0ba9fa2d20b6aa6082df473e60040334b7d0f7857544afcf4c2123d8ee6411717af326b0e2288012ee36d084399aa88be29d3e1165a7e917f3c18d06a730fb9c26ea0ccf83f9dae3cb33e913f5229500d408efca894eb65c127800305c720fec471e1a4506e9b726d55d50d3f2e5bada9b136788b4f0a16dc2403c344ee8510353d8c3ce068ec97b12052634f25ac88538e4a5a6f31096ec7e5088bc097392c2e127683146e106f4eb9f63845c02810d7c390d57b7a60d3fdba0efac3b1cf52611580bc7dd93c2bdf77840622d21043fa1922e41292c6b12bf2fde1f1858421444d97cc02c3238e9a92430e9fe31bb94fbfe8a5aab6086a93ff923eacadf7314de071ff5e32d049c7f7bc4bffa0aaef1b289760802852780fe525c929aec1127661729995ff66f6f37d7520d0d25cdb7e1bb5d5d6c4dddaf371a652f4c09a9490349b88f515ab50fbe5565369cd3602973067c1a3c391d07d7567722a82a0bdb45e4c90402b4b6506330701f44dd6a5e6e66468a5b31929b87d3fd83927a72adbb5e2eea119fdd693a0a95529611476566885d7ef1f1bb3324adac26705ee7f49ec4ecbaaa491284dbca2166aa0ed38fc3bc5321b355561af9664528c3d585cfd8632350e97138d19f86a5cd33fbb1da32c5833440a73aa99e78db4fe6b645b47cc3b4f43e4fda1702daefb1a24285a521e6687c0d9e3df0ef9195342a97adfa08c48c6b5dd15f2de071e506d640efddb4dbde2fb59a5e758ab79c05b75d7abd4257e69bc16c4458fe1930c6892b0f777aec155f92abfc613a4ba7da873eb77afb6257097b8923860078361acf42031ccadeb116d35f1f2db17b0ab08bd28362d336e001bed191620549f2ba1b74190437053246d3e88ef7e625eaa0dd00a33858e400d048bcb20a271ae94ac56394edad9a0e78322f4714627e0c8b21d7a3cc8d4598af18279f24eb335a1eddcddc4359d3166e8a11333827ef2254fc66318fff760de871268dfbddf602f20572ce70dba0446309a227e437c18b3e7f8d0c31338c5a62e199f1f7d83545880d1a4e348601df98feaf7af08a307a65bd423c7511610b5e6e642c35b292c86da90a5ad1feb80821dd19a6638c536a26afaeef3b7dc435b1765b9cb02488f021d6f7cbf8139ebc2048b45949b5ba62c4852915c05c05e25c3aeb5566cce13304952ee65fbb50ce3206f32a28340860923013493982d114b613616756feaa5be93465f3b76443f181efbac6be970b36cd8e0adce97e6f60a9c24b05425c9dd50b8a7c7ae5714fbd4e6193bbef1f524cc38ac228467fe347a72ef8bdcb95a384a9f8db1f5861686afffcf0f6edd7b23e9debf233b22a8a8db939fc92c01c3e3755d8055ef8b7b51856d58238a477c10ca87d63117deb70227406456df70f33399a2c88169445c809ed9f1b53ab013dcaed0e040010767eb34586447e20656179bdfb21696633211b4c7b7307d4330c61a5a09f640ce05c6a87686991bb89f5b69fb3a8a36129d79125d731051c8e86f5faa95695599a31137064fcdd82e38a692788049cf897727b328a811a6ab013c02266dd6a60f24f7214a522df41fa2e0bfece4ce097ea4c044e6f14eec181d236e198a861d9abaa146a8eb7bd493a51a9c7d5fb2642a1c28759b1ba5c4cf6ae8b980eb73133470c6e30e2c4c44ee57b70b9dea0848cc0b63d31a9eec3d8cb9a57276a4b3251784f4ca65d5762c01ddac62d00f168ab3ced0726e0f1b9ed116fc41cad46f4534658c4fe4066eddc2a678241c506812b53c97f9e848578009de1b7b6e2426bf92e3e8cea98489435aedca9222cce0f0137ee8e6a963ed5fe790410e055332b0e0db72091ebd061eab61866b80fa0896e18e6fc28abd8f02163c36876bd23b6dac9ce91c718109d2b73e8a76aa31989228763904953693d53490ee782531d73dd943ff289ba5a8c13ac3644f3be984e654f9e12991f5f6c32ac1e696e2217d48bd21e9329b5f2e114af374f4e31fcfee7f1786bffdcdb2cb68a843e7504bde029867e1f7b550e70add80b24532e49ce9310133cad6dc9a3c34b61fa7164272d164627e0a50dce17644cc4a809bb24d50e46e5ae2039d9d9b436bb0d92717648a593c7d0bc8c370b8775d31167c963565f371d1c0c3d4e54ca70822daf008a7d06a4479ec8192422ce881e293f47c46764203741b1bf118121f4968395ba88b9bc7f49f4dd978c8caa08c5a1db86d307ae2ee8f0b136fcf087002a56e2c49b9f9cb311cf3eb652400d176136ba2a31d0a0028e8433805b1b525fe83436781e603da603d967fec2828ca396774876c6033a55cbf80172fa3b8efefe8c6a490f08c7d911795380aef57191b92f23cc96ab6ea387b4e060d55ea46e3107877ceedfd3cea968256dc2634517b64c86f98d33e73f0faf2a0fbe97c9a41e752fbe6df5484e25859ca719d4fdc5bd593d398ad464cad89e73b9e8b24d0ad7b786f8e716d1622a05d032c1ac849fe621cc3e04c8d0f762eeca3ae9404a07575a220d10fe782264d3c3d95557093c6a71483b94458a05a7721fa810030feeaf83f71836e450c80ddd190a952aa3545051c4fcb5d25c336bca07c58759fe99f22a2f47807b6425876034ca4b778d7ea8e29841fa70e116b91638012154597525f90a29a705a94926d8e2b6c8a59f2c748a08c9e4a0b6e0a13962c98c7861601d657aad14d47a7615317047c44c00b0de20b22fab6f7d52da797d72da246930540ce723a1a79ad6ab73b9ac1a968693faf854c60e7d0956052dc022945680cf4f19c22da7b2687677b914c943305ce5e3066a43c07b8d22d9ce032bfeb1564cf36070379ed71503a966e8a1cfc1c4c41a44b236a1699f43ec69623cc0353b2e823f0515fcb88e135c810dda6beaa3a3ac510ea4d9942612057b4b4da3555ea875283830f3b30336cd430a888b13dd625717e78d6215f5b32f9e7b81e3ad44781d3844ad95717b4c1230ce9031c953f09f280ed1a920cd591991a5c3fc1798af725d621963087973409e9a1dd26183e23008031c851e68848edc69dcb914838e12b9e6cf82ee7be0b9d73ed2ec2dde4074f4f4179b07611cf2510ae9940c507a70cd7ce04d29b38672fdea1519b3ed0233826970562e3d31942ac331d73e4e2cb2c757f9cb5724b5ed7662c29c122c0ae2c20c4153a4a71cd8d14d4eb0cea4f6b4cf2d6edadce8e0ec56b9ba6d68638dbafbdd23fc6c37443bf13b4a8c6651cad802a1c65e2edfcd8d952faeba4d7f4bad20d548c900bdc4259d933bce1ce86d22985d738c6fe6901da184fff51aba809b1b9ed7d6dd29dcf9d12ea62202838a3946a916d28d2d1078ec89a6ee9c94394fd6174c3ade6f044a784e6c4718d88f0cb75616a43122c0c625ada5ef96e7d2ce05d72d09639605311e71cc035b4c041698e0106623306210bd21c212de16aaca5c9a65a15516150f641f97c3bca3f9ed4298d1cb28999354114468062ef6b7ce38598443138b29609ec56b448a2e141f4648a7c0da95a6a24aa114aba1424d36967cb396d7aa79935899fe25b308786b7095fcb1c111a6450c466537a8de4655902edb92d28bb35a6f5cb5f5289be25180b1ef436d169ffb08753be56aca1bf0bec0e7e35c50cbca494d7c266cd23990ad240301e26d64cd84c3545035b396de12a376a8cd171cbdf0a9dafbee52702472377c8e277799e519cf23ec2120df5b96dc70ce633497158a7a46ea8869fce1bfd92136d20274775a31050f8774b79f9fc185d37d8ae0def2db5177d324d8c72119496308e86bf4a192a371b2dc8a7514d03660c6e5758b168707985254f6c7902786372d28547def14c8d1f10b74dfc3894a4e83ee03968589fc1280b08fc71b95685e0a9122271d8fd9bd0145d659456fecb83f50926f9b79f3dab8a7371e2f05b20e7ae3510b7ba3aa6547e322112c08138693c54e4c002b7ad0f18af4362c65ec139ddb49682ef817072bc228b7ee1c61a7481890effecc9e92f65c2e0579d460846e1a2b7f0f068ecb654b134fbce1f1f0f5f85b3b1eab6874108770a601d04c8d5408213a6bd809c7fa1c059c7206f48c7ddf9e889de90ef9eda3f3bda2ff3b76c85ed3a9e12bf4e290a8f08249d8ee5046b7eca9d2c127f0a567eac464e522e38406387d26b11b2e1751cf5cd8d73d742678e1e42910ed9a5ead445e9070952ca7fed0ee2c9093ff23e7b7d5bab089eeecc7a5f2edf57cb3ad3720f5054e78c4a8b6df450bbcc27ff5c7c075c0b112c2f55460d1bde86374c23081351107f40e5dd43b1e4a39b902cb368d0eea6e6b01724dad405a42d023c1e5de0bb225d0069ef4ce681cf78d876e658429087d45170e15ef90d0030a7dfa85f79be0e4c3b8163e61ad3ad154263434b0a47987e11e05833d55c6eedce24258bdbfa27719c3db9b2038e1fd8a4384fb01ddec4bafb08467379de8d5fc6301645ed309bdcfb0495575c0fe28fe03b8a3dafd7875338c89c29b62de6a72efe2b363d9bd1f3b089148aad561fbf60e69d6988b01e1abc1b01a4443e448cf0264fa48c62025c2193a8ee1db967dac8e0108240a879860aba3c3f975eb3af54810ea9a842e4b9098708e60508ff33e9bed56346d8efc01f665926bf554aec0419ad92b90b8c2ca1fa97249a8d1c68be3dfd8babf8a504ff5ad5dc3251b8deb58096e52bc335a0c22866536f4b2260122ed2e728a06831eb221e067fd3e3c366373cb73ab5cb2af662f7c0fc80ced43e89759ab03dbd1f708806c8e7c5b81e595757abbb7744fc798446d94e7b0620ec02ad9c3489a17786b09f0543a8568842080b9c6b50b9ab3c8fb353931efbcd1e7c43eac7808bdd3915713b09d2a409b24657885c25dec7713a7eca27c59ee9f3dd1c2807c30465c769e1b2d5c613b4286318d1880e125a03c268b5933226aa26698eb9be9f166831dfdb4160dd311b2d714815e7148d43f09e93bbfedadeab5ce5955d908477d74ecb309b5acc8d9eb4c6bc64a505cf1903ae6bd25a30d0ab785b43ec8b8017ed98612a23740708a69a8c0d86fd01b460d3f1325d3ea024ce1310e5b04f29cde45b9bdc133066d86dd5e60702fb0dc0b44f702b57b81f02edbacd2e7cfe5cd61b0ee3a1524ae8e9894114158204441c2e313aa09ff1c248a4051a67a524130b93242f996e56b6acc75b09b448b41af734685578f3e9ea762f7718204e11038958336c9aa697cd4386d2bd60388d8e420d906aa9e25afb70d82827ee4d490abcec6d0aa9c86721c4315f16e5e5644431fd106302a76ddd621be740ff884cc5a37a92211c1651ab21913d4cde5cf2bbea3bd105a3a12d2da50e48f2927f0658a31b4b09fb5e506cd02d6b8a078105b8110d88258b2f737b2615eed278d85a591201d9cc625a4745883136a5afe3f3811b25ede4ade7f6766d71d753d5a449fe7eb6c1347d7455412025b7fac33825e6812d51daf55e291ea8fc4c7053dd038da226949284b5f382f8884cf845acb44f4413a19ee735c0f32a76e6eb38d7ebccb74a629a702f0a8bd4f6178035740325c54e0f5eed897a0367698170425afd6ba33833dfee21ff75559ba4079f07f11e780e8ea4200a54ae56cab74e087f4bc1044326407a7bfbc3d761a3c66c4bb1a848aac7444a8af2c90b73c3349c3eb05e558ed56df97c4687fe337902c94f82166e85c082690fb39fe3e23af1c37f495960ad717db58fc903b17b645456234e0590c80d090bd0bb259894a9d9ed6f4e34f2321c0494b10fba7191d0105ef3bfd48cc151c8420568ef607c0ca8d00713ca57cbd5fba1f221a7f48788839ae643b99f306db9fd00922685d2722f3af4efc2181548a4b10cd00f65d18eef61b804a441d39fc45e0b7415ab93e1cd03ef952bfe88f761c2f6fad589d6af82b35221f0eed318198efbc235599f0954a755f0f9184a910d0a5545be10f66fee1063b3e552f1a69ac1abe38eebb2c5e70bfb051e35bd0373fb00643ea6f22240f828bd33d620978f192d43aa9e08416a987ccccf162c09b90ab3dfb08a56d95c21bedae124969bd9118a37aaec15cd6d38db1872b23b18783a40d8d2e1d8b878d5644322114860a02c4051d7917e3a796262e9d4c7ef78ea0b1aa32149583f9858f549ce67808c463661385279361e0b3227e0236ffc88cf84767b491c3698730553d7eded40904593dbdd7a8d3824e4510632f69ae004b0614e844b2fa93964fef84c38355df2c2c0dc649073dc4edf71fb403f3818f14c391fdf6402d4f6aef0fea15ae8c732603245945f5059bbad666d7a2a22e6c5fedf1e6550cab389688fe3337e68aff0564031cbf210c3e1c6f44ff72c76589f7c66c7dd4f8235122478bb049a5038c6e5822ce49ecd5a40ec43556cad39c291daba11f1c8286109dfd0102a0c132c38689f41b8b0321b63e41a06582634ff66956bed23c36e18f0de7810979108c5bc3db20ac4b85d90b5c9dd4ab261ea4b9e81d3f441a27911d8c6e0a00b061a944a4cd3d54165d533fe54f0c768f93583c3ca1c02741bcb838bb0920a0baeccda8e86a42bf913bcc04fc06f9e467a06c5231812aca4eaa8ccc9d638027bf1171a904ea41b6505cce5bd8c60ad8475b3d941bccab37acafeeb5a443f9be85611a6632ca69a999d5a99d4c69c3013ebe651d0960d7891521360c1a43ec3dd8b419d01924c5f21e9feee69bbd0fdcec646c3693982cf0e665a55cbcf1d4dd79de60fe3f4eac8b9296de74c4810e53f663708a95bccb495810090d4da2d210b7a7c407a7220b245f38bfaf002ca61c98bb99278c6f4a764fb7d0394a11dee548fb6e65253bcdcdf87464384f8cb664c695636c45dd6a8d1cd23586c6261a0986448fcc63c0dedb19a6d7912379f91d3dcb44cbd5c37fc538acccf9e3d52dc96bc5f151bb495e0e01c203301a481aa0e38d78b100242097b088397406e296997158e1d8ab40e643c5a53a0e540675aa01882c5d1d116b1f9c7d08672a22b3bc3438a33fa9950a3016ad3fd6834d9d28314b8c086d402f0b4046773d4a04e053635813859b67b8b8c965ec27d98a07d7dc006960c89325c347c231a5fb76401cbcbece406a8cfe4dd443778239a299f7e557acbc8deec0f3bd7099618f3814e8b0a51de0b8827206e693a62d1fe75caf46808d3df98f122b49894a001525b011c5a347e4d475f4f51d0cc45111af6086e9ec1f2716555f429c2b84af8dea84fb3e668a06b2893ab68556d930c540b87f50babdc840840582ba0c7c08e82dc7169f391c4fa53434ce5bac167ad6ea42f70f30bd2146e0f30536fdb4f4e55c2eace3baf41580b2f1cdeda5fbb0aaff115918c692f6da615c1ff202df3f283040082e9426cd52c8b2b24d3212a924fe65825a5f384fb94582ee26c8e7ebc1d97d4a9d54e61454388acf9e351dc110ebbc836f405a8773caf19f395d980894fc370925e2d2390ccd074943ae704795a54a5ec3809031dd0165cbf1422dd930ccdac999182e11a6e9d099c0c4ac51b073c38b3ef0d535261c36451c38fb74473a670df14f62d438000b3bd87152c2dd625aea4bec0f97d1f8e1e280f23a64382f34b8779dcf46d06d50bbc66c23a9a86c14f261a76c764f64b4432b7b83894b451d6cbe849ea323d6763d696346ab55645a538c5defe638732d06569caeb56f55521ff84d7b9e83e8deb32b1854bd1120f1a96ee345ffab11e28eefe68a0b63e0d5b9e8b552d191b85b7fe5877f30cfd5f46f4545c8afa280ae3632f2307973fd0c950c0b72effc21c8fd6982c5a118f07b499aff1b15adfe2b539a320c90ed80feab4bac1b150d2687baeb902d55e55b2f3c286150059ff1defeaaa57828b328f90527f8799fac7a69b29acb44cb2bb8254a3031dc4a4f69bb28626236e001527f623d03d3da6c4a209a15bf1f0dcd6daf2ef025e63adc17d4872eca51e1b86019822796b97d69b57e85741b055480a00a02f469efeffb703418d85258821a837c3da980e59c929dc992c208fc51706d6a26cc418a3812c255f58f84ca06155c547e004c48247da4d5058ae3e9d594c9cf55d1a4dfd6be8cfcb4ad416a8ca4b9576b0bb6707802b3441979bb8efe06fae0385735665f6f924af143b4e9461dc83d51a1f9d409fb2d6605bfb51c9f734263ff3775e2cdf2d1c48ec08d81ec070dce3a5bedcdbd573ea4f285442f26ecdd37e7d0a87e1f6849c97790bc1be92bdbdd163e10a93413c52223900d1a044611af5196d489cf8b16106fdd5cb63efcd4892a351afcfac17ab971390fddf4a3519a5913ce7be04b10e513916894b0308e0241f6b610ad484cf3a3083282a279eef0864fffff8bb73903049d76174a27d2e388099ead131e9adeae8f1c6a9c640b3e5f09c627e9e953bc997c0b23699dc84870f652f1925564096176a3f669cc87b2ba4cd0e7c4c4413953f1f3b975ad06aa1e2c6a3ca5382f5a8e1ac71997b0c81551f8ec03e159f884778776e446692b47a43858d090d5c2f1b045c37f6056f2b4383f4832e81d803641b0d856a4344303b71824499fa7535026f6f06bd440d77582d7dfdfb14309c653bc288a99c6e3f6066b4c1a83626501676f6ad0ce64bdc8dc2bdcc3f71c1cd6d0a37de02885ab19253a8398da470081004ab7ed93fa661bf8c27522a9cbeab8a1344d03c856a2888242586b4899504eb50cb2ddf621b7f1b905fb34a636ca27502f447e3b280e58e901d14b35d2ee92e0996a69c3fd4d988fd80517031cf1b61d352cd72863b886019a072d9049aa05cb7c8d5417e377af5dfc57f73c22febde0522504b59b531a31f6366d41c0c93a5369061960d6cadc8d9575d6563012b9ede70ba741a84ff067d783777a694f08a211732b26a342546d5c8646aa8b1fabfe7e062ac2080a6a368627c98e5987bafe7e1ddf7474201b9c94017c4dfd9b14e9a9335a02f7448a90ba9b41aad218bc0043e85db84b30d4f2aa50e051e9ba9578fafd1a0a30d80e826c68dd763190bc6af199a305b2716123d37c44dc11f25c7d34feba2b26d4ee7c1cccdefcc4e2479181abb528c57ee57acdad3a1d7857de3e06031a800419e85fe3100d0d40c741565b9e6937f9f478e4dcfd0e76c63f069f185cc27d5b4c5c706b870e0df5e41a676d9c23639c280768a4973214f43ef1915b03a96474c8288931b83c833ceef070a1417180a1b98580857e732e9fb2b38104ed891024cac43c3e2bafb61ef7057454b968c819b7d55a500aca4ceba840cb311b62dedcefd7b83e0538f333612fbe4ac285f97dde20a82e50a88429b9a44db05753d4fdc41b4de0fefcc1c36b11c2231c22df32c30313103cf6fca9869f8f4fa4bc4d25918c7f439840862694f9c4127f8b861e2402550752f18b2d39f1a33f44679c4af2571c83266648831b3f014b38a576b67787442322f00dfd3a318de5eda86db1e084e566f643bf88e0ca13c41fcb70c143847d9b05c0720886c89747f2c52ff7a777c0c481278449dc64ba37e3d856411019abebba275687eb9ecfbb7c5f957f43349afd838799e1d739bb786ad1792dd72097b59b169ead1976ea52b9e7e1b8c0bd8839c383892ce871904c804c9f17c07b19efe52c8da907b33d9f26761e4d097104f82bec8fbe23da732a9b6632531a87f78f8b44a596a8410fd4611137154ae033fcc78da8187921039ff18b7c5e7cc5ea6eac0e90dc9c95482325457d7b88aa14167c5c815d6a758c7685f80b9d6ab2dd39d5ad4d3421142502b04383dd9e6e661cfbc33460dd272e48be05bdc3e9b0f5ed62ea471843cc2bcbcd805dae3c8b12a8538c743dbf1abd37dc7abef46933f9599b85ec2186e4bdaa74005ad14242b7c83873176ff55fc42ab03e75327c8c6e2db87329b936c78b84d00be2cd59fef90cee9fdcd0f54d5913aa8499a04d9840f24437387128de18ca795f5ace30b42fde208ec804abc39cfcc68f92b99d01316d5a945f983b965fe982307f6395e67fb6ad776f89f31b2a9eff2a250bab03fa69c2f69cd5cac00f8e97ef96cffdcba6faaa5f3e92023a4dff193b4da7afc0b67fd2549201607f0253f737cc889016486f213073d6123a282bf0bc4cfd03e37f032fe5779c6c823faedb64b7104a1009ed19836277e924c1dded92663c58f174bd2328cd54e840ac361a8015ef0d5c5322b4976dee1399bc4c263cdd8fde45690b94aafcb10e89c787b7123734b3cb5082150f4ae1d1189857febffdb997891213a35a3c1be8cd2b8e97d8b1f76f6d2ea2579aafdc8b5dd3ef64ed2bd0d1c819b4e41880e9c2207f3cab887a1aebb525d0c2b624795aa296d03c4b085c8917dcbd80f6bff9d06f40b2c505659e204a183f58fe37c079ae17d6d4c6cf0e685d82a6b618d4a7606a100b8734078fb8f367edc9cb4f129405ba32cb84f365a85bc887fc8bccce9727917a2c93dc00203b5f6ab04c54a31609fd74bef4f75d7a2b11ad4e85004babff9351157ff47830c0d2e05c017a68dd7dd933c052f9db485c94e8135e4bf5317c743e80b98683d7e41a2c88425fbc1083b8a8bec812c6d84b677c87e146335b51b7eea4ad719f8c9cb598b580318a57f39e5a4cc6acd4eaa3b0b1fe364e6d70632da6376a8dc48a1001d0bf034a0bad00127d56f21f60939963125db3c27a6ddbf4b4c2256d6438489ef4ad76a46a0621d18a81b87316e964d460036a8369b1001de2cd306e8d1ba6239f0b714246eae82d8dfc664f996c059ce8ddd980b5bf999ea66af6ca8365c5c1e4dd12b8c9bf8541e159a3dea718a42c868566ad466afe1c9c06e4420a06b826207aaf563359e3aaea70661f478f3e668dd1572d53dfbd3498cef4bea691c195bf29e0e0f487a110026e5aa57a74d17cf0be9b05f671b2232e05e3c4e3d2ac096f181129e6d02ffa398fc251eb5f8dc142443179543ce71b33c250a5d6c992a2d965bb96ed7c1f3e6c80c92c39765efac82c4578b5ae1af599a98094f310568ba7070e4a8c1c6d74e5d8a0bc6a4e74945e0d39c0751410daea6fa72264c12236c412a854b3047a54ade19545027a082f6fe3db330747e4996bfb631e83d28b907cd261f9b97d78e2c3f31a85e40ef550e710b1047ed3a96bb544e1f04b56956af75c4779922b59c917a81fc24e40a23d03215a9ed16fa8ec78fb803099a6f8e5cdfb8ec5064986900daa9c43d58d0c49dbb374b306d7de5400eb200f15f9d1f62f52753ee0868da4db6ff6653e7ea4a8d164e1c725e36bda371ebb902bc0b4966bb9ccf840808b4b4442bd5507e01fe45fe5d1861767eaf69e7d406e3e7395df97ec50cdbb27236980a97d9938df33c0e709f6cc1467198122b58b0a9eb03c248d43d58872aad17423d8a1de9664d720fc1e36e0084e3c5cff995d24441460b90ec1e819241f2403f9afea80f18681f6202c642b6ea7ed0bdb6e0c505d1d3ff03cc2e26fc8a217dd918fb94c44330ea44a787fb52a5af02c90802902021c85ecf9b3544224d732a6151bd7c3fdce6349f36fb69047c59ceb238a081236345711599038ccd6c43ec8a9ff10d9986911d29bf8fcb7934dbe1469719800998f617e9e06ef61df7b9ada07820d232a2c7905b5fb1380ee501b28318778d0de700326e854c4fad839c04520eea29f9d2e372ac0ad6152159ab647f52fa887e5daf6eeaccef61d238eb74a1fc7036081807dbf161656c8477c69e6cb7f561aa3a067a7b7794099e6becfb8a82881f1e0db44744fa5c1cc8b3c3a0eba796f478f76d27d7717ca9a0041cf2a4213072592e3a44092a756dfe22971a01522c0e405366244007373fa8a054b55d6d1900ba2204d6b6132fbd18b51904a85c784d9cb98e6a672892b96a8e4e5ffb67026459d07a3be3618518ec272d42e90fa5416445a372b071f261cccfb52da940bfa2c62f9f89f92b30d539fadcff2d57f4140ff7d4cafac7e86fe2551e6435ef6b9f63840cdef167322082099a156000801bb4967a9dd00ea22079680bb2b55c3f61b601818459edb67708d4fdcd54b75e7e5231300c3bcf9aff6b6be68571a6c2538966be7ccf73e53fdaa6cb533ac671080f0e9b0ba242c08606ce51e5313c68fb77824d3d7df091ac82ddee30642e1e0bce724e9a6ba8bd210be4712677051b8e8344775623a0027cf6e3bded6b062ef29b5f84d842c8d36c2ee8925e42fcb017c6acc4f205a9ea24851035f86d88b0ed94790c189e17da912502eae27887f949427cc6319d568bd27f8236dfc5a112ad2224384645957255852a7c8d40109c8b2fb836333c10e1061889ae2423d8eb1a31fd4679c438fb9aaea581daad1ab7caddfd63bb184d0a341eff2cd419f7b3091ae0a9e4d5d419e906e9ea6c6d12b14d6de8b03baece94eae4be4feb4e40f4dc06ac2cef53aba9ee6628f58cfed90214c569e1b5d2581b0a50c1d6a91ee6ebaecc45d4281cf5c0e244a3b9d86c090ebbca7aa7caa052bf988ff55c654e5b0f557ffc8603edb33872977c38cb8976966913cd28951e57779d1346ea7e034e3a3f1e0743da57d5d3715bb3a560c9d88d4fa4650dc3d0020c00b37d73fb750fafdbaeb925fd7a70238a8bdc9082a9d8360b3eb003876275ac2e23c32c57e30b6f0312cc916b424b9e645afaca5fa789dd55e7de053e630867250fc180effbb0d8f0bd7e9d83fc8fac5baaa2b7c8584184ff3bd62c6c53f90f8903797f35a6ed661f3c167e4062c7c5397b6db02d81f9f64b81b41147cf4519f7c3c721323d43ac1dfe3cbc73eed834f96ccd74ea728a76b01e64ac956ece837b768b9db90a80f6ae31ebdc6ad96c359c346f12181e3f523c71a0be50d0d4cab471bfbf754f4d7b74a5cd53c1d13ec5afad9c7c81e8e605ac0797a279e4cb2f29b5eef46b5d70cdc4f9806b125dac494e928f8550d629eab0e46944c222e4badd22a650951c280ac806b9083f461cc106363cbc9783970ccd3dfffc0a71c8d630d44221f5c16362539d7bd518e46e7b3239a73db943665c60d2789a36447609105983b8f033518c73cb88e57277ca011ffbeff1968bffc3d40d1d3c08d065eaef4deefe787bee44ff35e3fb61286ef631dcc43481fe76aefd099e7b253451256fcb7376f13b30b3acf8ac2bbfdc85904a9ea97dbfe7586912170a04d432ba8ccbf2f9c789a3dce0ab83bb46315c465b856ce9d4c51ad5a9ba5291f09dff6f762b5eec3bea135e54dd9d755ddbe51f465fd245d7697b4556ead5ef0dc33b253e12f39416aee1d8d9472df70c1e29e8e15acecb2d9eadcaa6eb13f27a180b3ef5debfd5657e2fad9b4d7adea079f93ec2dca42847516b42da2ac95c34601e65efb464a851187ca641b67a0a0b6b39d2fa837c6b97a4baffb5b7632b814d5e655fd7ccc3b8f0d4776cb0747f9aade3e79cb6efc80958a57f5d610d258d153c8bc127422fe98897e24199c576abead09fa980616e0fefbf496125990524da7823172065d2c4ad22cc1ac4c22348e2440e5668a7ca1e1fb3fa381469cfcd5648df97b2aba6054c87efe594772761452b3a33591b980d503b44446e5268b8b54eb8d83bd3f30f0e8d339f7ab0efc6f7f819002b2d7c5e9d666c44726d78a20ab2e4c5d1d86c834d6331f7e28fd2b80bf68fc1f5b11dec73ad97fecd43ce96130975b19a1a3c4c66885eaed4e9945ee3f521e15bf54d85619fb5621dfc29512beaff47ff93c9f2f594792cbe5b3f17daff06fab7e5608869938e22d88cdc150e1904f832be5d76c0fcf45d408758fdfa15680053ac728faabab93a8021281dd56feb1ebb47ee8c1a5da25737405b75c31b6b327998a3b3d31653924140aa7b8e22631af4e6aed4693dd9f6fdacddebd134e020113f5ecb7e16b37cf8a52b2a61b52df54819062c4682d02b2220606c2cfc52367a2c70822f2487e5b713d9c1968a1dc083fc6bd6ce0a49402a9621e4fba3bc1b17f72772b83519018bf145f23e371793ef401644c97cd471f7c3e65fa96e1b30f7cc087914571e11086090cb6ed9273ed77ca5d71628e6431789f0165ace4dd81ab36a1bb4319feae6f9f67e8893167c6e74513518a79f0b4a2acf5972a1320b8b781b48926438aa4902864ea10359e5cea7e9345d9c6b852a093924fe67f6338153874c7bfd1617c71281a44b5b02e04ec42bb3e7912f52407450187d20376da48a1d763a65a6980d6de624cf64b9629b358b8ca8bbaa258ac310bde7426013ce0b5cc39ca96be26597829a68d5c4d2d30c8d5f9b99dba644b5304506b4588a4ae7ffa3f9c165d31f01052f19c036125c406eff32a7338f088cd897c882c134506b6c151a813e841b2bcfb851192f1eabfb7b94e763514b174d87357a97e51e7e73cf2e574a82d3bac19ce0f8034613bbe776f6a86b25c3aa28e1bae384079c7ce6386324e1ab61ce18a30ee9e95cfc253bca8e145945966fd705744cf574df1eb5b41ed661fa188d615b209d22ff137ce53a0ba6d30d1b0392d88d4b0cd83cdc912063ed27dc9349e75606ffeb8aef9f18d68df6d8d162bc71933fb795e64c073a020b4658c2029a5330873587ccadd44f1e5596925ba845ca6698112ea0d222414ec73ea031b6b7c63dfe89db13b6886efadcc2f180a3eb238cf76a6cb8ef4a4677846852661b53aa16a49e965f418d2650fb49eb157a2caf804c4fc972a8af619ba7929aaaa492fe00d605c37e43c0f7aadaee146800615d72d1cf747345318caa3bb05c3cd3468f4869ba53c734780e55ad72d8dd358a3cfdc77d3bac9e1bea8ef96465ae6c8d0f02e9ac81f24f844ec0208c66f04ded1dbbea7f2449ba077eb983f763c68cbd83e3ffadb2e53d976296ec1bdbe587505c17a613428dfd955d3c34fa9df783b19e6e5d56f3d1ad3abfda70f60f9f34abb067a9323590ea4e8994a83281abd6ea5ad4c772cae41236815c6346449a0922f3a289982053082334b4a53adcb741aee5675ecf3c798040d1c4ea86dfd55fbd542feed7199411c96c9b8cce75d81bc23d2f053513f799443cf00c75c13980be7c806ea5435dfdd8325c01fc4b30515e513d48423753d434ec7d122bd445d2bef19820f6d3cfa94ca62e605d486c8e7cb3a31c183546dd23f86424792a5034c82149e5dc16f815fbb52e19943b3b05deb2499c19f921afb2fc5458a7330d983b78b6b2a06ea9c793c7114bde1fadbaed16dc5d7b197a718d0b377301f6d778f32a88e3563331d54e7826e5ebbcc0a96338a20e359b9854d7d617d846f73b030f3a24b52aedff7c78971c74643238955c48fc84f62ec6fe287e0009062c62db851a6c5d88c7cda4b01ff27c9ead15fb792bb3271dc7e47833668679bed8f1e1992a0c2d696f99d7716a6440271319d1928987ea80657029a7390c2033095b9aa2f6afb3b1517d9039c8782b8b3028d65bd25ac94150d07054b059bb72843a801a0b726a71b5037e6801bb8fbb12ee250df16534188b01c4b56c307655a32c8895f8081cceea1b5f51709df434742f1637d53ebd87dda09c144cdc2faa0ad991e0ab062b1f1499125c97cb4db4e613bb2669afabe845803085649da118e007d9698939d32ba53346fb01909815d37e8f2c0e8e0ec6d5969c99ecf3490935555581e7913da15e0020de6756bd805c0afeeea9dc729887d5770863b329cdf69ce3726d2114942a47c470646e96f24342c55c74e7ce07e2b959c5f29b9a38dee2e71015b78e1576aa110a55ee36fa7f91eb23ca4b8de93650a197235d1920405f72f1b5a4b7867a13e6a9217fedec5610fdaa44903ba509e7657405c113707f27fd5f7c19dd95aa827ebcf9dfa4e7dc72835bc4e81f13a3094ecaf401c7b951a177ea17ad5f585772367755d5400d77df5d193e0551444770c02a3ddc79e37c35740dfccd0c8b6f4d2d226524a29934c32ba06690788072b5528592bd4aa8950b2563c423194ac950ac22d94ac27e4849db1380ae51782f9594f076bad348b5c2f878dae2c53793bd9665803b94d853f99cafdf3c2fee2d8f3c1f4d3ddb0655729bdea452d083bb5179669606559d04b99c724cd4db5a95a36959c6165538849e85e13d0eb84ce854d253726c81216839daa78c16286b06daa28b6d06e4f08e76331395988c540913b35fb7421229ee10a841c72316dbdc04da50921f7a672d2058a682890856daa06cc1cf7db54fde2a612c9b0dc9a4a5417a921f3aedd730db3a7d36a2fd6b6cea5fa914a792ef67cae5da95cb5350a553f9d3da2b379c03301123a46181c6332f9389d8cd0c04d112d4b01225a7569ab6cab6eab2cbd70ab9ec0330c60597a2fbcea1956dba8b420dc4d03e5c7e008c3d7b839f1046db2585a6f023cf4efdb9b10dbfdec526bbb3f0d95fbbd5a6aafd3b6b631d6f268245564723fb5d45a2ca8bb0d09da9fefad48d00602ec5f3bed74f777a748d024c51a28674aa9756a35776a2f4cedd580602f10ec63bb8304ed5b4be9bdf75a4a2f8b2ffc1a1030d56432a75ca7c3e9c02eba6959c517876f3967a3d1f7898c00fe6448955a273069ade2566addd24b9f5eafd4babdd64aea2e2568dda753095a2badd7ea7ec1015f99a7b5df5da5b715b6becc1160cfd51264050858f354f0c1e989042d01dcd2cbfb24684f24602d304487f56ba962ab27725d8b69b5f6def05e5c4dfe9d84da8b2f8c6299b5369352c57e32ec28527286c821778f1fccd40c5a6586e643d381e6831d999c2c94dada94caea6da2d5a96b4ee4c62e5ab18b5627288639aff46a7b310f020c902c0a109181223adcf669c05aafa9a4d4b51ee4a6ed7dca4ddd44b1cb69c5ae6b2f0cbb2ac52ebf3667cfc74a9949ac9b525add69bd16bbaead14bb7c94e362da3992a0d604d69b52112876609751a0edd833ea15db5b6db5fd4e57f0b5955a9a43e3c1ca2847a6dfa13c2820f4cfe6a26af4334aaba5165f6d850db7a939a10d1b3c4dadda011df1cc96c0d7b562032422acdf18092a2976e10bdbac530e6ff56ef3ca6efdcebeb30b5f2cc3b86a69cd34ce3abd32ad6e5b0dafe65509de5a828b5dd875bbc6ba94f25e6fdaaf59b44ad69651cd09d631af145f5ba95f8bb126f26d6999400d11b45e6b83d26aaf5aabbdd85aeb175fc7b64cdbb4ac3116db73ce5a338cfdc5f0ad4d29b5de9d699a362dd6dd15b3bff902e81036c45f315aa9bd985bda967a7f1a0eb0a9726fd8d7add412815dd385152ac5268de7504f2003ecbd2a7827a980d6ae4dfdde34f5ab4aba52a554a94d4fd7b517e3eb527befbdd4dada96b6770e644cc093d3b3b4d29afd5e98c5416ebbbd841c08302c04a15b1bd26f155aaf9575e3416b9dd45e5aafed79d3e9e06f8cb1b5f8eea8d4e21d96be0431aedf185f7c2bc617df5aa9dd5153f3aab75abb62adbdb8e26e5ba704ede554b6cba56dbb7e94ba0b76600cc332adbbfb9b636da23f555c8b336ed3b28b336de3388eebe44aaf4e677ba9dff1ec715aaf4aafecf178543ee5c51cea50c3c6abe1e970a9a47c3abfbad3627253af9fcebb4eb341ee0ee42e6d7084b4848468a8f394944ee4a21175174117b9b3b5996bbe39e7a52e45e5c5d17d7f152fc5eb3a9e33c53877388d7e36317c15913d67901522dd347a467797f48b26e9916e528b5ae47bf4dd1dfa6eb0511af41df2ddfdf9ee9396d1f9bbf3ddedf98ed126dddd5e7fdddcf70dedfb6d4c16ecfb5bfa1b467767dffd19d4df4dbfbb9fc60c9248d420ca890c93189ff7304a5e908c74ddf612f2dd4764141a898842222222a3efd0b7e8935265243212853a04f4f97472ee749e8dcb1d9086310c679fc53014f4ab3932dd6893e9bebbbbfbbedf6e64ade6be79c739ffb8c73d3fc57e2fc51f4f87dbb49191ee6e4a33ecd26890bbc686d7575934c84df1f55a5d9b19b91819e98c9268253c946509bbf20a6a975ab797f6d4fd3cd523b7f51980f5bb41ff3c3587dcef27a8415f624782a75c8a2e810d2e419b41a613f495b591ee4e3129a5fbbdecbd30569ddbb66ddbb66d6bfa9d5fcb744382bbb4d0e7368487db66ab3746314cc3269305a34e9f528c6a32f8311dd1b6158f014f962ac14aeb9481ffc8a409d5704c4c8c0441c7d01cc4d0a6add9b307b45e2c2231dbb483b38df34afb6257a7b518e4e63698dcf4eb98ea30c8ad65d8d7a80bdf17e46e8116b2d18bf1ed3ad42f28dc53bab73f94521774f3c8ddddcd82dc2d680848158d098ae3627c9d567c59901bdf4a5dfa0809f8253622aceed49b7a53ef7e1187b831b6d66f6ab5f65ead6305f4258a8b2fbed8568aafad74c7c57d717f14df1d175f6c2bc5d756baa3527bb1ad94d64aed0e7c2bdd71f1c5d713f8eeb8f8625be9f504beb6d21ded8406032f5e2dcdb4059127438f66122fd4f4d1306e6dc8fb877c20df32feee0a52bdab75dd4c166bb5f15ed87573b5ec8b57eb0a6247ee8edb1d35c73ef3a6b5d45ead09e289d14fe331499a490ba6508657eb0a72ddb4ed4a32e256212267c846e4cb70e4879e61871347ed9e266877959438b211213c94efa1fcda43b9b50b08875c85dd2b4758dbc91eed729fede379b0676092e6bf9770604d8b4deb8b7df7086bb159a590491311af58ec7258cb3ad9d385803e5ae36cd7e8f3bdb02769a37e2f3cca852cdad30a03465efe8caaa455da38a4fca45b4c16110eca833e24c8f7b37e67f3e2e7db9ac9e2f94c85996cf5f9f9760afc73723fefcfb7a8c92233dffab0a73be325bc9a6296f08a85535684f36fca4bf854c23078f48b73472fdd9693e69f543050e0f184d323bc2d131a6aa415bed1ceb735c119e4e2dc2d461d303d4e3e523f30b6026ffe61561667581d616fcc90f2a10c6438b50419038c0d3184018f2b2d30e0a4b83bfe42eed7bc9045cc0232594423409101ecf0f3457efe0e229f89b870110a8d9094c0782f86898c13903483868a0eefffb54b8df737699715300cbdc86721110a861c0a3d8eb9e261b886f7c9d9c548c5fbfe6780200f2b24ef464b4b0e1cab030431e30006b02440840d068a68891ab801810770488084cc59621c9b09d3080c8c8b1709897c3287429f11a00815ca6004118f86ede2fd5d7cdd04e85bc7a47cbd222514127131425202e3bd1826324e40d2fb97b4cb8cf7ff76a1415f648359edc46986d74fa05052a4524b50a99a8ad51466663a0b2c5677a16dc4d06a75167dd337bd061c9c7e43e72c318e4c984c328081994dcc98192312d129f268d8d3c7364f32285faf40f1700d08141289b818212981f15e0c93f777d12e32de9fa45d4e9e7e4848ebc49b4fa06478538a943797305531bc49c55c79de9cc29c9933330b933559b30bd366da4c31ccd66ccd2ce6cdbc996b98381367be61e62c318e4c984c3d60604021215708e8fd419fd770f398097e5faff83050484824e26284a404c6fb87dae5df7fd42e1e4948bfebc2e079eec4e9e44fa060782e45aac4f325a89c0a5ff9caa73033e35960b1bc0b6ee3362e066f79cbb3f01bbff135388ec7c173ba8ec4e40a19f808b3eda5734a12d28d8e322f46ece940212191888bf7ffb4cbc8fb83da85e49d7efe8c6631907894099389ca000686e22026863a713ad12750282952a925a85454ac56740a7486ced01acaa2ac9ce7d4b46d7bc91e0d9b0219691bb5e97832a311373bf9fd6dbb78de1fb74bf7fe58bb80de5f6b9790f7e7da25f4feb95d44ef9f987d4633ff42a6228f8aa1d5a259dcdcd035e0e0d037d01c9a539718c7ca84c92483ae0103d3c404632638636a8633eafed95e3c1acecdab0f0e803a5b3dc97c3e1e9c953e5f5f6b17cfd74f3c028fe1e3e94881cf417b1d3b3e470a7c0e73c81145e777ace48822bfc7ab4fa050558a544dd525a85454aceaaa4ea16bcccc545665616c2b104a43cf566db66a13cedf3a6c83db457b7a2f0d0282237298bde65531b45a59dcd49bba868a53732ebd7376da67c3356d757c363bca5c206cd32e4738b6c12c20708d65a26b988098c21e16c6c2b070cd64a973521b6363702b9431284da2ef87050aec254a35157c06b2111c4a29dbc361d6c161267b4eda22c8289d4d5d76661fe1447b7ecd62f9a90459881c72cb173787cd517364ae558fe6c8a8566db654645144a0e79003896d01389c0f903354cec812c9825d24d42bb5d7ab21e6d1cbc39ee6a54cd22e52d6b03f2d4938ebe5e18af15b213016e24f544208aff109773fea7e4f36092cbb0608ae41b216a31a8770be8b71f65759b692a0e99bc2e93e5a0b3cfd5aaad48b334b7d5e184fcad90f03c19348551f994ecf8866b5676f5648df66eb612d0d589bf5ebd604dddfda660d41db30031b4bbf59a1a72093dfadc95648e8a5943d134a298b906f82c9b2fd16eec36c0e1b43e9a56e857c22ce61bff8440c764b588497e6aacb9ae49bad2cfac4d1f5896f3f11f411fbc949dd1a7d22fe4a5698e413f3c8278e7cb6bcbf5bab1e893e50b746ef96952c7bed139f7ee2687e6276f9b9218915849cd704e8eeeeeecdeb23482548e10858d020a42f934043381b2041faf3d28210241642fa92083b2c20bc6407a608428c045ed19bbfe040d0d00305204c3622842443683f0f3bfc15646158bf1d99f492ad39668e6c6ab5ede5e94038fd690e9f330957c267e340dee81f420609e79c9d804b816912da2c3e9669d844fbb2ef61cc1d1d566a82b3a62a3927d7ee18081a7a8c543a91651d2965e5ee5743256cf712702e19f898020e0ca59501b2548493e6affe7b1c715084bb4b972e7b34fa86a9ac1ab20150486775f74ae74ad7b6d556eaae834c7a290a0b01da03a5f86b49a222c830ad340921fa0341a5ef11618ae2032de1068ef0f03e182a91037fa0e7a003ff8e283ed02277f0a75389906e4028114e5bc5292611ceefc2ea21d67cf328fcba3baedcfd4230dd7e1ff0b07e943641dd3375ba04b53d6960227a2beccffa062794dfeafad3ad6c9cb64684f4a527821af79c9eb8bd54ea1407678239330e730b6d05382f4974bef46f9cd1484e6fd51f94befc4126df334196acd52a14b57006e3389e4ea7d3c94f38389e162834ea565ab35a36ad164cc7f429358ee3388e2c679d4ea79c394ed38499313895db52a91497da525a6a1cc7711c59ce7216eb743a85449ac8c8277345e09b542a358ee3388ece62b1f04c66d9b46e5aad96a7d5e1c05496c252a9546a1cc7711c9dc5624141a3228fbcf068b5f77af923f9454839922f4109ca1fb5843445324b743449d9fa946a186f7dad9f38b585153422f909da48f10fbfc82d78956746acb7095b20f83f1ae58c71f268ec548ab65a231d473a3ad6a8c88f5b402c6758b4757d1f6dd1146da57ed842da8282c4186328541821b010c1c8394d3da7d35aedc5789b3c2669db7ac288f6e4a51c3307b68919636ff0f2a2edf1c38b9607102f5a1d41bc58e320c48b758baa85005eb43103708a8332c0afbc13e053207bb0a4bce83a68cc2d0a504d4e9a1ee32597f71b1f0096171da6f43585d3e200789124e4e1860f35de1f7b297cffeca51ede7f34596cbc3fe8a51dec07b3ca96c784093dfb330792e58e4182f3b62678f2d2bd71d27c2cc427e21cc427e611109f38fae13bbd7c2218e2181c2f612a27a540b26058c871b260331334790933002ec027621daa89c6574d295f35653759e69ecc4a0f5edfb45a9de3328d83d36d03da649ac54a55c9d2b56a680856d44df1d2ad469d4a7637de193356334e9a1901bcceb1e2f58ccbf46a5522802773a4424f10d9644fbf3a5597ea4618303a9d4ea7d3919159d926ab722a005e3e4d12a9e4a4a4447c948e0e70436da9edc7a6da568d72993e9d642767b2947e7e46c91b2c3f4b70092ec125b8049788845eab444436994ea53e9d0b4fe622241a09d16c50df1723468c18316274a38989aa05c50809c98b121853eb544e9a29d4b8020346a7d3e9749e87b78324192179e1820b1f470e010c20fc3b86dbba37228811c0eb7056bc2e27d5a93a5477fae44c70ba70313232323242a2e3c54af523f436d4969a3d6ca89292929292920dd5c9d950a52662b61f46a11364703c8bd7a9ba5467c21112120a854221d1a7c70887975399e5a419275931c11ebcacbac1388f1edf9b708abc886340260278a0b16b75372a774ed539c3d85ef28f4fe594fca673e206c26e1cc027801a0dd3b54ab61f464e80a181405fc3c543c20325961a9f0f9f98436c3fff60ac786d82b1c9f458f242aa094e8fc7e3f17cace86e70b6c8018dd6a340112d23bc4d0337353e968d11a3468c1e3c520ef764567029a7de647bc929931527cd37d96440936d080f7df8141fbc962a296fb2bde8f0998c0dd5b542172f6473c30bb1782196542979a1d304312cb29f8fcd4c4d7cedc5d1dca0e05ecc6e3628e68d936a781b6a8233f523f7a7422d79a3f4b3f322eee08e08fad78d3955426d2135bc1c002f64e3a4997fb0306b8a182b9cd78b584e38bfc50b99a2a708b117b39b707e0f5ed7ea6e3a2d3a9c2ea7f485522c9e942a5674b2bd5034e4fb281b10246156857af0b20d2f03c0cb3c7879e5a4f93b7858e69497ba56d742d97e801176374018a16c32398bc011c93d9995b72b5f37637ba9f175ad8ec68828143202ea46543e45071adfaf92b2bdd098e1891d4b7414809ef8281b4acc32724aec6ec2f931beeec56ec1c81b2acf881f31a7a61b4231a7c49550ec5aa02894539d12c2f9a0ae258237a1d8b5ba905438c52e2415867c88212c84f3b14eec5ab32614bb9698a708e7344d1e13064f1d363547118c2be1ae840e97106710296a3aadf6e20bdb32cd4b99079c24a3018b44ce969b907bccd756b70c14d1f26c1f0404f1b9397bee36d06d13b7ddada32a50a84da71b48d2a42a1ee17cda842c51148afab8abbb9ae29a268b4ade70acc724cd07022448102db4b82baaaa1f067357288a0a6979c3e95dc9d50c324b0ec48368e15a6cd1a636f1701bf736b569cb4f50391364a979cc2a98b06d32ffa2d124198d46220dca99ded5e6a261d0a66e812cdd55cf20a42aaa5ac25d7989aa9c34a96af542552eb68d766ec8a48988ad90904589339d567bf185693d2a218b749437fa7910ce2c6c28aeb65d080802020c60d9649dc6d134a56ebe756b46784f2a52c542806d437888b1acd12cee49de5cc047383f03b2e4013a3a494b02ab08741ce9a82121af808e3405b2d4630bc2794ff9c23985737c697b7d8040a09009ca392424d45a687b71296f6422c97251a77bd28e707d5cd43d9db28cc35639062b2e73f70fb29461f6d23be9e57d64f999f7a8a209120addd252eb53115a27c895873f32f9525e12d71815f01a636ce9ad5f77c76e60a50579253b616f3172cb812c5d39a30fc29c1fe21663842c5fdc62c29e311b0fc2be72b2f0ca912afd9a1459be78e584ed32afe61659f768246fccbf5ae67ea049cab25e01ca57e039eb0c42c9fdd3569658816af7dde3983daeb5f4c2dcc6ee5750672f7ab13b5e1d2bb8e3d5714ddf1da9d685dc3d26896aa2ef18919f37d97dc67da22690d99a41a68f1b4abd8ea1b34fa32f957ddaec88eaf6c27d978f096a9f08669ff823949eac86841cea4d33c9e0e77e482ec5a9268bb5f4661bd7c9574bcbacc7a9308f4b7129ee87974cbef38919c6f689ef7df689e0f7f713579e7e628b66f292c917a3a5e55b59f140f0ff618c4625397ff79b7e73a917ee47f6dabc5c8afbc1a928c5aef7bf3eedf23159fc3d1f928fe7473e9e77f111f9783e1f2e7802a1fceca5160fe4e020618223644c4fc4cae89237ba6218660232026b19946599935c0350f0b30126687da0a17f5a151b0d37ac478fe6cd04eb777f92c5324182f32d0bca7b2041264816f721c1f9f3f3d3146eb8c9c8963dba62e54e74f7f68328a45f10db038cc38f324c8f094e871162baf7cd15a1708a4269636ccce844bbd6c0b23a6ce9a8769454d1a270946561a165a7b3df20d22a7125ac845413f42926e868c822a69595916f298004714cd0a93dcd78d1a242faa2ed11e345cbc3e445ab43065549f16478269e7412cae7d59b185fbdcf78c9c46f90dc785122e34f9eb6acac566c1440b2d82a24e8efab09da1927f9e39c517e468a362774bf7a780fb1c3112dfb2c23791d9693fc67781d9bce4c27a60a29a2699aa6699b96a3e1acbc845f380da964789deac4eb56f8baa8b66ddb8b0664963a9593dc7b11328d52c5ffbd0f6b829fcffbdb1907ff472206a5509dd7bde87884a69824ffaca3758284fe9dce4de8dfe9745a52c53f93add9947453d8a07e94a04abc4e05453745c967255ea7faff6e15529dfcc9271a51d2ad4abc4e45854ed54d2113de87f1655314dfa9a6982cabc9224b4a3e231c358f00c38612faffa5a040f085c98b1725df1fe3c58b9292d4133e1a3543de4094121d24af83e17526a9e26fabb02b6f04034429f9ef6353f27d22c6de278e6080e1954d1f930cefb3bdd04f6634b2b7ab169473a781b0cc54f285545884541f9bc952f2fe9d49dea0d71512f222185eaa924f2424412121219146d1d072343d3699c724957cd9f48351e8842c246f9d0a8b4c3b55a7921d54c7267f27777227777227775421db0f21e18b2f64a221219a4da8832a8544f84f3c4d86a7d9cc609cf368f4762626c4dec43f867f48e5a56c72923fcede27e69138ca26f1359bed450322a269f272d11dd404fdff23020c8f4a95125af2e2c5974da2ed8751f8b171421e7d3047f28d7832f4440f453eb17345e83ff2c48e05a1eb701e212155983f351d0a54b386f3441a8ad9d46922ec9157a1ff65d28264d38a8d166a5322adb7a424647e329911ca52d670734063b90370b20f29561258a17dd9696901c2fd0a217daf82743140d7f0a7215e0a3d057dc9f3a2a3a8206f889e7ee705e12477e1a6ec3054f426422a6d427feaf9aa65215b03b48b6b4106e125b7712dd8f84d1872f7e6ebf25cb6e5899c218bb6a581ac98a0b7aa114027cebb6e26786971e16c3149fe22dec56d3f74e1f66ee39e6d9e6dd920f6c649fe236fb36292409fcd881b16c2fcf913413313f40779db0a0b99beb8ad42b7e2beb86121e43e0c46aaf86b50e070fad2d9569b15dbcc6491a0cfb6206408fa8cf053483fdb86984c608116210551fa9dcfc604fdb432417fd197a50ac80321e89b74c30e4622048152dbf683166a57d8bc4fc879978d770199a0bf685b5de7e3c04d465341ad24a351ed6c2f1cc6a09c71de5e38cff622e3f97c6f5e27f41b2fc1f498247fcff6f2c9228bb6b56130acec188ce7c37db7bde4a667e0be3b9bb785d8dfe361304e72ad3541cf1ed66382fe1d0f8b99a07fb7bd701f063341cf401ce6b4b06d4bf4d3e5b5448cc1b4f880c359219d38680219425aa9b3c2ecdc058a02bde9a174c3c507010c8007000400c5468c4f46cb4a0d1d5254522b263b9cb0d078ff9197669040960108c007971b016891f1c5c0726a0a85060a0a4a05555250504e7ea0a09cfce8a107cf5ba9a1228136bcce81a26243850700b08c469aa6699af6c2064a8d151d4afe45252291480463436d29b0a49222baa22bbaa22bba229514964c7445577445577455341b940b172323232323235c0e689c24aa1614a22bbaa22bbaa2ab92428d131c8d344dd3349199150d941396efa1c4030058ae0bc3300cc3b00d94951a293aa880402121212121a1952a454345f45774455774455774554e7af814af5375a9ced443ce1e8fc7e3f964569e9941e3de7befed506cacd4c83200f070a2034aa7734f76005754524e3e11ef70b5ab5dedaaa4a0a86cdbb66ddc0d0e787272024241a141e34db69793af6bcdd821c60e3164acd448d14105e5ba300cc3321490744263460f2a3fff6a57bbdad5ae76554e7440b9f7de9b0af18b584ed7ea6e4095141a33480fa2a0a09ca0a09ca0a09c98c490f1f59bc4f83c4fec36d497bce86ebad68f44a19015d09351004e205a16f211c2c2df99445542c67d5159a1db401dd3a666a24b54a56a93152a2cb0c002c40429465eb237754f7d9de8121def89f2902a5560b158343535d8e6a9a9a9a909d5d4d4d4d48442a19a5028140a8542218e86a3e168381a8e86a3e168389a504d28140a8542a1108e86a3e168381a8e86a3e1686a42a15028140271341c0d47c3d170341c4d4d28140a853a8e86a3e168381a8ea626140a853e1c0d47c3d1703435a19087a3e168389a9a50e668389a5087a3e1589934a175e6f0119963e6987326914913b1c28c3d9dd66aeddd8068a7d5de8bf185510cf3d998bdf8c2b02cd3b6cd676f58a66d1cd7e9640ff5787cb627cb5ead9f7d7cc34fbdebbb0d089046b7faa00d880e4326cec959231559a4a990c8a9d538187f9aa899fab9026770724698711cc7713c9d4ea7d30907070767e2d8d8d84c9bd60d8efcc9ba36358ee3389e4ea7d3e9347126cec49938d366da4c9b8cd3f20704c2c999636a26954a8de3388ea3b34ea7d3c94f130767a252533557f2e7c9d6542a358e01a3a5a8840c1cca69c7460400002808f3160000200c0886434291244ba3492f3b1400115da0546a5e469607931c4641206594418a1802080004c888ccccd09000793503ddac1f0d4dccc299b95138043155e0fa644c6c3cd98d0557c04d8b7cd3bec809fb1775cc2f142572e610e33ccb66408203fd63cc419f23eccd3a33bf1cd99f9f59d229c7a1ab40e17338904a034a157655f7762bbb9c4542be1290f459de9e3591bb8b6738403b47d0f4504d59ad8c219313948d1a2c602c2be87d5969941e127119a7f242065d036a00cbd8373371c69bbe18748986dd3c627fccfc9fd91a5d4af225a8d0442f7ca7b2933fa4e15618a2fbdb7c95355fd1088a7ce0e1db74abf6bdcf04c306ea616701bb97d417ce87fcd5c39827d94edb3868e932c8ba744b54d76abb1aeec90702561a0ac56e9c6be0f167dbbbe301191ba8987f3aa3389674747c66be14be42590b7b7c67af32d89a5031b1794f361c542bb212a14b2c6f9f561b6f09a7ffa96717947610ddb06d0b41bdfe6fbd468849efe018c24ee3555dffd016270dc39eb32883552ea0116def4b6e567be67504f0f63a6d1d7f49f3d418d614e35ceaca874384d6bf203ef9c9d2a2bf701e5918ed2693d6b5e0c7f44136520d66b5ee350f3537fce2c3a1991168852b344ea8116b5d019a7095cf47f17f8de45fa25b2febeb762c3db25248e9af3518f64f59203fc02b574509af005ed72b4a8c6075d2cd8d17f085a8668b12d67e34c17a17252c7d6248546c0f2425138aefcba38e8e5c95b06c2eb143c1119ad8d42dbc5fc49055da8ac17baf04221398ee9981e570f8c4814062e674a5fc4e88208125ebacb68bbef7289586f15e1e13615b4706ad541fa6f01a570efba42f24bb629c725b60bc8cda8f4ebe3c1ca2f5117b206431320d167ae0fe7ae7e9bd7b3be3cdab7b6a97dad5a9155300ebb78d6617efd4ed33c242d800897f279086aeebcd7e4a55c389b11a551e6ada1632b4b3b8e64ecc71483183f615d731cd68270e995855b3cfc6067328b641454416e6e52b5ee413c900dacc64983ff76597157bfc304aaba88727eb32f039e124c517a2e574d735b49f2224915e9af302e6a75574feace3ee82da6f658722acaf5f42a9cfd2e95533b97349ac70b6f7b552c057d74c8041fa01e2421a290e874cfe4722f1c1eb28f0a38c8c1289c03759d26ecff74f640bb0f46c6f5616e068dc5ecc30abe51e6492616bc419486b230bfb701551d79986514ad9ff67abcbe291ef493271a4bdcd1f037ee038f9289185a97d1e6a6bb63532d8b27cd97464eb170429b56aad1d1e6bf0bf65bbbe232ce139c50156af4b081902b6b5eee1686ec685a625a1c8d9f94155c356bca4af1116e6235cb127e8de63912c3c3b3b178e30e7e554c22fddcb92a1379fb88acdedc670e2f80080088c11abcd13634e9c2a327ed7c830fc8fe18d448d6d0a371af40d02575675670dc657a01843652f794a5e812cdb6a9c6b5aeba9dccd4f4073245413679c7d7022ac639342a6bbdad5307e7c30dfc90533f71c81831de2c94a9382c2c42484f398fa2ba95fde5b07ff5ac1b5604a0ed8b757aba52f5eeef9ceb10276390c997eb46c129c8c06d9958448a01a55e949379cf2041ede2162f5dffac16a76e6da84da6efe5c2b8681d1226420c44f0c50e459cbc08d47a6b9109d0ece29b19d71d1346a41665806496e1ebf3b4672675cc2ab12c3a7419d415f5779770605e5255d4e6aafcd512d546d6ff1041154a63e0acb52c41d8600244e35c150fc3cc7066971537706a04b4d897e1621ac4ee0429fd7441045772aac7ccf86d2a4c5663cd47b6774bd63c7d6b3d26cccc57a822c4d7d763321b795d2e34e1bf888b0284e23d588b50129fb681223b7ca165d9af02055819622c02c60537bea92986a7b50b2c54b53cb22c51e2c7b8f4504b69c72a981048650172745b9cb225707e2a0b5361c6858dee7bede8f4ff55b655b5078e69bf337a457676229bb99d276ebbc09d1541dc94aa5d55b35871ba95b74403c871403c4f4da9046619bcd5db10ab0cde608ab5763c7be88d03c950066ae0aa735668f93ea1d9e575fdf818a17a6d271e72302c9029a23ade6cce174e609df6331dc8af8d1a39710a2ef94edc1a6d2b7aecff2062cf0e5c9fe71b92e023f928518fd6a8d347a9f400a6d72b28b517b24e1f83f1f80c149191b25124ee585e65a581ddc55bc33eb552e6ef70ce8855560b8603104bcb07c2cefbac5c2ed428d88b4bd6be88dba6cc10ebdb309069ba2ac8806d83be1601721d29c90875dad76259ce4f69a6dc8f9507a072bfcad0b6bbcec6aec277b9dd3271ab178c41396b27c968c71e100d446384649f6f286f33e56d92187d7a901e7a2d2230c7537f33842c4990806697d5d5260760998e8e2679f15c44a2fd05c64d8998477b5cda35164848d9dbf27a8466a8f00a9945120a49f9acc0cfd9fbf54b27cc5aa737cfc719a1fdfbe425d16d0fc81cbee375c8dd18a4e37a0c3da7c958106e4ad41f7d6a43bc8017bc82414fc95f240b114afb93f85dbe2281ef336e0fc124961d5b5d4210500d826a05ecd35b6cffb72f8712be4ab6d1aa866cb58c284397413759620e1678f262fbd2cdce70c26604db3ced8f737114663ad2505ee16ea23cf79a32670b63ffb25405bf4be112c258b58cac4e70eef2a263887cffdf13a8803d6fb7bc0465a5cdd3093e16a84d22523acac30988b308daff7b7fa939a364092e54304bdb95fce8b264ec4a26d546d7f9cea197272d61f5a668bbfad725e7521bf1a28b46ea0d98e0124e20a61fe436bb07912e3a74dd5d26becf58b045e276d67d65cad65d2cbf1cbaac42dc3f240caf1a907dd1c86e3c9a6821653ba4d3da22609a406a042ec3e8a5dee0697e39ff23c7eb024167f62276226bb60d599acd4e22cb7be228f7c62152bdcda81e2f10d42164f95a232dc9bd2686886bfa90789dd6c9a06916139bbf8b6a50e6a76d92b3aaa236c228b4787c7590cace9a62bda5ceac569c5be3fe95f608cf20e808a00607508609834d9ed34aad2579f1362d326876dc6855cf113befc5bd7530bcdb9917869a6432113d1189a63147a5d75e7bcdcade5b700795adbd881a2e4ff538a0ae23bf4980b8a01781c52f25ad5680a4ea296cfe04af652a4461a994a7519a9522c744e3757f6877431308912e1feb9b044b984d05be115991df65c564280204e425ba5c21a07127814a2fa8d2706bffe11832ba2d793bc481f62a165aa74116473e5931dbd73f572bb084297c1118ffb54378a97503d05614d503430e3988a3e0c9ffb61f5669ca412a341c8f1c582230e9ecdf9ee9e3040a448319bf2ed87c563291e441d6f4e480d32e290fb1cd480618026978639250ca247ccee7fb9b73fba3990247ef8bceaf925459204f126add66ad850c7f145eb38a47cb35d801c1919f1e6ffa36b5597aa820b8b072bd2812d0f9e6cb31066465d6ab83218f1640ca5f1e98df5b3f7a730d94bcde20ce2c50b00525bd3cd551f4e925ca44626c10909adc8bd9181d93acae2be14dfa622b2a56c5f139f983b17b975ec080342459b3c980e4f78b6ce3e23769723d7082e60ac6dece4932779c685164ede458280a5c3e363bbf1379a70c2fb59b583d25802086f6246b7d8eba0049660f985f02009973e48db0f6c27954e3fffd1b19143ef6675b88e31e6d87169a5269a6a9ec2fce7bb0a3d3cbbacfedf40352a692d94b8ab7f7c24cb641c6e6830c872adf92c3638d0a82e3edec30c6371b055fe5b1f448b6b0548e75343ee319d15eecb049a9616531d1727fa6d05d1effa24993a1672c99d81fa63018c994aff0593ab60f652061d44d9132d773f982825d7c0f48e340ffacd75a01f40842ef9a95a0400a227703b38dbc24e118eeff7c2480b2e7202402cb10fbe37b787cee88c4c05bbb719469c99a275544260896678ba8b5567895687066934f30cd1b2085e57127f51c270b5d26a9c48ca5cce0880d865c07f6302fd2915a4310cdd96061be6ac4411fc1a2a585ed2b3106b4408d7361fe638576d88fc85f21ad33f185e48d49f187b78ef6c00ca00310cb251804c25ec1df1d40d311fb0ec6f2e07bbe861e21866eb3a10183a6795941002ce5f0371c330fcc3e89d0c93c80d663cb7c0e00f8a68073146ac06c1f09a849ac1d8032a8bc557ea4ed50791d886d60255ee279ea300c5bf718dddb7a9bc090338cd8b0aa03f48eb2d09335dcc22fc80a474d01843977daab2530f5418a0bf5c7d4e8d9c0a964e2b29d98054bc8343272e0ffe8f585362860348bb0afd3010beec4527bc5aafea77b87e56754194172cc67c464930d595cc2ba37332ab0802806b534506596960a8a08543c77523c0100f186e003241d8d1c4cab45db8fa56223c2d5eeeda0952eb8d000836279f083ca773186fb0f32efb834e205b48f0cc26d0b0cb1a6011bd46c592c1a0b7287e2d4ad08b276847a3f8048e28cb03847a7fc69c834f80198f49519f6b00c9890ed7494329c0a2df1b5343036c035ab50a282ca557000c060ddc70955a00a85d2d2510c0d0804a1556ed17a0d632809fb4dbd119a81b2503bff1c3d20c78c38af703e319b864a7451643de14806b9ba0083c10274b311204959314f9b36f67f5604e6ff36e18e20a7c977ea0c7fc91019e608e6a7203f5c486c93ad7a13e5d12c8503646dff525763326159b447143e30dc72190ac98f429df28d31ba911404f8ca62a493cd2773d03462eaa4e950d6ba029d43ba85431eb92eb22c38146957085b80c6f237e2a54c12fb508d585a00c6f3bb8354683d23dee809c9ede9a03de981df076c1fc2c007f57dccc667cba28dd76fd89e13ad49efb50e48618d5a181db356e66013e5d717336c3ed5a70d351ea0bee7db98adc724175c07bb3018faeb89f85e17729b8cd45d01391640999d3be716878bb60fe6c06b76be9a6e802de4106c8ad1cbb03decc667c742ddd33c2997d2cbadbbc4ac1e9e58d310dac7575162137166a264b3d168a95782af5d2f360225276afcfe7a42685fd5c73b9d408502783d4ebae0725c16d210992a131a3f70a758c5a74a4c8d62059fd9642de070618320dec3067a0ccf585c035f80e606c687174d2b3b04346610684d21607826d088102b3801948cbda106eebf7db1631172cbcde0812a329dc50e1fe534f3600e563aed6c491fa8b931b9014e8fe1d3d7bdba63e6daa335b0f2ab5113f9acdd6ee9cdf6d0c7d54f592e2c4edb8805cc568b36140d2e4e0dae7dab0cc392db8115c22586504366491bae15ce59f2fb4e67c6026de478a451544963df97c74f69b77caad094b5f4e047f78f06098c82d5f9d99bd6c84ec2ffd268007175c70c98383ca0e3a80d641dce7408420cd41202fb4bd2ec502239f933dc3845752b821ee095909e876596be1aaecce633bfb44f0fd3a644a81066817f654e8f90c27582763079eb1f6c6bf6b94282d13e5680b6cabbadf3176e28726f4fa89775887e2809ebbae0babb7c8837d333cba02626ce2949fea295fc91f78da1e0d935c1a421ae0d8502c20b223243f43e4c0722a2376aca72d60826a02207dd3d3459f5eb9551b07e6b56ed9aa4d0d631e986189329f817d9390709150810b4ee161149e48cb31123b15a216c78d4003c4ac81e058e1cf8eec34ca683e87d0234c13a6091d6e443403da227751105887eb283cffbcc462be9da1a2411850641310fb77cdb3d6a7453452f2ddef4919b5d76d5905a6c8971352862852d403fe467573e52d088fbb5281d6f5ca2713766e66452c1ad8883819736fed8ae733680cc0c14ab3b7a5b12acf275b7c612ca809c9a831bbedd9b307b4e5d080ff3e9d476bd6410bcb74b3a4c2f28868f2a3a7ab5db8a4f5f80a88f9bb7204272bee7ad7489122fe15cc8be4da41261967c095b487534ae694e800d3895f51e3288c5a81bdfb096738740e057c5b28f8dcc60ceb2512bc5c09ac5cc59bc9241581d23dc589ec89d07cef2b1eac69b8bf1ec197e4b4601c0742f808ef1502f3be7817093e62cf2efbf6edb16b6797ef5faceac191627dd139b88235301c1ab42f40622e2c1f76e335a42b58f08afed915584227eb016cd9292741dd75b4c0891f4690f2771868f32b09e4302248b27847270d1028f5e67714af4939e3b2cbae413c933d15915196198e704c0fb590ebe83108f1f6a2bd500ffef84ad13f9352afe69ce6c8bdf56e74f8eaafe0d52c8929159a576df562df1d842c6d9d3a09c629690e3087158df8c9a345e428c153884fe82222b03bb56481582b5d41179b42942e20090ee1aa69112a6b67001e32c9767eb3f869a92303d8b45b29cd11cd70eb059c73a5b2d19060d5f14ca5aa6fcb051785b3b56a50eeabe0d214e876b149e5cc5f46f10d626ab6911f642ff38b1756cfc4605d89a087bee337eda1351ac098ae906790090222997b178935e750bd1194dcbefa7f0d31e2268c58f22a55aa0e6f7abafd0d6872d687a2fe761f8aadea76750ebb3d83cd7917485035fbb41166b41198a2b94e131975294f6c72ac1c2ac45925a7c4e3e22f834acadced56052c10e06db2508d43fa53b3eab05ab9630c66f6f0673b0ff9221aaad300db52be5a5be4438bd1ba50916b85809195d6ec2e3760f1d72c3be449cf14f91ce0222e11e18844979d4feba327e4d761e4b610071a04a20e1a3237bffd4e52c798a9c836511d984e1017b8784a1fdec58b23eda41d9ca255cbab02a1a1b0e52df300c47355786a0fbda6ec508e14df8c9ee27f5db1e24d9e56aa255818ba98b67b179e2e54393b20706581fed69ef9d397229c83aeea9252176e50645620875163883ecf4c54d462d05baeabd29e3979fbca957230b4945512ae29fb30a7977e934c88b35dfd078bf209bb0113ca601ff3c2983d4602827336b68013765e2370bc35f956d986a42fff7df6b6eedb3a808f28ec7519694937c95a1a02ef0a54a662064021ed9cf8f564f0a2e2eb7e1a9c040fb6964bc09c29ace593e102cfc24efb31856ffd2ec666c15c7424b2bec56457b8a01fdee2b21eac7401a055e36d25c1cd8376e0ee6f2284656f9e4819185a8b81ebde104f01cc95ad1973519fc8607b838a7e74f8967090faa08f3f8da8d36e1c6b40780aac831162fe67b9f09968d912896ffec1130356b66024f4ab8df13cc653376618ea05e832f7cae36fd9863d61a16389e78f050a64ce052070ad53e467931a010479c5c458b7dadd0c9d116033ad790409236eb90df037ee3ff51e8d5db223270427c1860a890c53bef3b4e0114c8d5bc042c3548c3f8d23b9470b7a8f0d92ec8c4a359b2883743f8e348cf6da2045a7ff9414a705beb0cc5fb327faac3539681496cd396b01c416845164f07593141a61ab59fe8e77fc2549b80d199ddfa60860c206fb91a55c134126e581ce032b1e3cca4b7852fbed58ecbde80904d6e435a4e1d8484e25c52c219135dd4445a59bf7b6cd3e4891a8f9608650516d5b1ffeda2b617b3773b427042422dda0bae53d717546cfd85f6972c6151591edd1f85a3504c67ffa4addf594f5139b5d0765bce7a8869cd7c86c36c901373abc5169fc95449fb1ef332b468a4a6ac090186847eba001ae62219c70647449e18dd624cf346f2bc6ab7012c04b4a01bd9ff77591f74bd481dd5b701042e7d73c4ae7a7761eb5cebfd279eb9ca7012a67fe4c304b839e293a468b34c0ad77e372074e3928135227000eb55c37174153232519820fe95e92d12119756c6f6c59e0665285cb3fe6eb8bcd679c9b44291bc5a03a34b75172509e4458f2294fd57dda78bb3817b6f07cbf52da55750add51bb1ace0d6e02c9526e0cee980207126704aadc2d970ab23aa31dcd4fcf18495888a9cab2aef970fa3480f66e855fab13d735b844bfbffbf846d2efb4fea59f5c2bcec5472e074f098484a8c7f2420638213b13e2dd02fe2e029739a2606c221b548e2c7c4b03211164a8213aa4dda4aa9b2c24c04ac83e79429493a9baf8eaa18e8c58c1955e5d35c95db01d7ec2ba318405141a4a325738dee6666d1e9ccd5c83cb2bb57891554849f192644f0b50e0483d990f6f4ea4df34d011478c6bb33759453431037051a751858dba2e4edb0453898f0534c9f9f700c8f5a03a2b940c50f77d0617c30b190e980dc18641d118e4cf4857e130dd0e89016437a20b515744df8a8946aa0c3b18b7cf03f29433f41f9c58e5b947cc0676b3472d5d1a2c2e13ba97a7c8ab33161dd8c412f7138def5b0afd2bdc9fc271bca1ff312506c41fa8c4f5a2fe821328ca4daef56c155e2598c359185570606f7877369d3cc12007cbe1338b0fceb73eba509451ddba17cacbb6efc77186b3a8aba24073e9fcb051765ae6301c82e76d8293565d3b5f1dcbc1821db50bb3b75c99a3607b174e16a60add7d91957b03132acab85b82ae467a8606a926140787ae8eeeb8d42e617e593eda0fef0be1f32f63a0478b70956231d1985395b3a898ba9442667429c857a6b3c6d5bb9b84f8f3386218de074ed57dc2ce0895a1cb026ad8bd30768098d24355ed69448c1d0daf147870078f0667a4cedef6b40237b5c576aaa6165368f4dc708ff9b401991c6125bb5e1c1fa95c928bbac5b12d00ef329478baeb0f6122022b3b1718e5dc81ea1a63d018c11e93508a6c576eee21bb2f74c47dd7d617c54f8deb00be3cdbbdc10577b5254d7539016e7b65a155a19da5f1b5b6dc1d1829bdab8ca1703255a4afdf5508f019d72fcc3c03a4e3b43abdc7719aa6018cc5c77a66d60735c44640a68dde509ef734a35a3bf6d7f89d3875b39d1010998364662e385a110240c4f2c2532cc3fa8f9ad488d9d941c709cc0994519a6213131dff8ea4f45f3413b0f2a51f7f96b816a309c1cf82354155dece726b3cf3b18ccfbc96074ba6ebccde3d48014ca3bda9efc36a78d29f9788af96e4025c62452e567100d7b2f9255e9767ef012153acb90d34b7a7e6bfdf7b2d17dc525484045216ddaac52cdac941b340253e45a3dd81f91fecba4305eeee012bd79afa3021be724d8419ee92005cc7102a2c0beac1f2682e1512546741f550c3e02c826db86f86009c4d49004b14933f3231cced6af0bca82333282a9aded56da1e52983a422c47f4ad29d5d0070fe65ab96da7fdd7f0c45da66ff34148ab1122d555e94d8da5f9b566e48a9f649c3af9c63a16727ea1d82853d53b69bbaad6f1f90c0631c583871a37302bd42dbbbed63dadfd296c45b2162f993b6a2b600d5ee5b924b61a608ce53f4b2e53058083080b8f054c2b71722c710874171a73b686d482da1660883b4981827d12e86a258653f2a17a521cef4478f584e7c315a8701a537479eb43a0cd67bb2193bd551443c12ea0e6e276f2bd73a8d8405b4a0667a027eaa9c7f2621333b1a31e1caadded9f232c593cc1acdf52ce844f124b31b370bf255beea7819c51b9816a82dfe0e3e1063949cb48a5ff01b8dd16004438d41ab79d00023e45a751b961dba0ec24f27922c60281b15c02617c1934148a44632f80bf80c401f47663aa620473a0906d8e58cac2c44ff951fc9f4853d29240bf6dca6d2fe13bf71248559fa14eef117b55ebfa8b7d9c6817d618f85ba0448b1edbcd8e2b0d99bbd161ef5741528c1e1485f98297943ffec347cd662f2fe6f78701aea8cd70d53d4408bd1e9a1f0aed6d357360aeae26f6814ffedbe119a01b01e26fac729aa99e4ac20df95ddd80c544496fd74f00e945e0bf594b68e8ab3e44387758a3c88a1759ecb368133e93de5809d49fab9bc0a65e7bf0b4411ffccdb0dbc711f2dcf793d9732136451bd0dc0bc9d111902d8cb2be280d48f368f8768b9a978a9d7967ba69d0079a410bf77f1086206181a172e8d2eb8180b7f668a2b5b361fdf9f7fc9111adc1ed31fffc14121836b73d57583ce82549fe02d9851edd9f6ab238031f70565288a5a5626461ce1fcfe93b33716a1d6865e68299f16abb6c25cf36473ac5fe325a11718e2824b32d6b12aac4cfdafbe60a0b807672ade5b68eaa32a6e35027f7018520f42860a27bb6f354317c0ec9fb57d734d9402a07936de3fac7cb102536fc63b8777feecea3ce1cbe627b4da455582961b8f151e9aec9e42a8be1a712dc6674b3288f13c7957f2f2be87a3a551a8caba260586422c82696140914365caea8a19496d6d6ac536fe559472e90082fa7d1142eecec58b15eb90f723d6af382eb4b7252c5c7e3f84f97dc0addcca2e46645a5d9429efc500d3bcc0e35512b306d1b24973de423f5c90f5b2ecfa9fbd082e15284ede98f2ab00e45a72bcad74218ca251e49f767f7bd8f3f635e2f5cc0968b94e24c3d2c0e4f33fb2c9e4c07ade5d3036a2e250d584b6252b6cbfb11baf23467f587a02ac497989988f9552b1937c673e6885b7258cde0f9b61aadb61b79b06695b4ba7615d5c369516e996a89b90aac545ac1a82cf88cd577dc382166c9659de2d4b77f1f05b67bb29fb107c459ba1d84b1b0b235fb52905449221d246491fa987714d893718968d7bca3791546eb98b22eb7f50b030454b43cf8781048cc189ba0399a364f614c822b4cb06725c55e9f8662811f38b5cd4fd0bc62348601576ab89059e669b5f2127bc9081a1a35e09247c48c88fe9f6254d402d5091f577953e562170020b66f7dd449f51937cca6e4d5f57c9f4068ad7f6056b5f35db31049c8c113fabc6628184539c787c53a1821b1677c774be9c86046d99aaeebd577f14f9b11ac608aff93588e920a1dedfb000c7ed9c399cfc6e9371b5c220b1636831a4b4cf8c2ae85722747d9f077a1928fbb17883e5f9248666cb2bfef4a2dc98ec8b6d119381c4492893971ab4fa1c717070b3b17c5228a9c8b81464ac356e1cac10bb2e156d14017b7f1a22ff091cec1e3d03422da55df821c377361a85e4462f777034f38eaeed9104c9126de00aa3fc70e49e6e60ace88343c74c45bfdaba47164c21f3daa87ae8df013ad023e5037d3c82a0578f786e8fcf3514e5b91885406cea42a465bf7d376ede5fed7811a9509484e78ca1690b1e9085eab38e4ca52e8b912149d3dd4f46d8d3f7ca553e8293d1a44fb1dc92759cce277a5972bdb9432ed0a635513bf7a6eb37fb14a1a2fe8f488788b6a1109728a3a9549c1aa67e2eccd640f8cdd31931ed4fb14f01aef03fc59ba9bcb57c46512d17b72a12d021d5119415c90ac65730bf817fe0b1e3f7366210ae36cfbeaa443cff3e95f587881f9702a300cfd35498772b16df103dfe6866d211f857ee009a6574c661df137f74e9ba51440a841793a376300315a471902bbeab6b072bcd96e079416f1d0a4edf3ab7da1a15f4889a78db96e3b43ec17fa029e49c35576e8c422eddcb4752c16986241c887c604af94c9e1c38ec20541a156e259f71cdbe5d90aaba14ad461fba112acba324117c917c14485efb0f7112e74b2682ce1a678983017f3126f991baaecd3407ad353e40a91281505453527c0d1ef321cb05b8ab8a565c3a1d0521c1646afbccdd9d234542b990875edb1a62a7d7a4ae6565744c41039f5e77485c3959e405c191e6da8bbed751babec7289dc177563ed903f1c4876a482968659bdfcc79860f7ed8bd585828f3e1038e5777c9cecfc3b8691e841a2ba460cb1ac85718e1fd58acb722f6e17040de4325cd9e32e2ff21dbcdba48410b1745b7b25b195c2c7be99bf058868b95b2678f61b090d581610a1800a0e958b1e61305350cff1ae9dfbe39739579a48189ed1bf2b1ab56d1462652a1725cbd5d675ab1b86dcf373977ea6e587b110c092d02939c2d1947a7071f187cda328f9405ef622ddce222f511731920853259d84cf180277c8f6d4d3371d95dce2de1902804ea5851909da11b1a270499ba34e0def168560c39a2068b2dd143d9d857de3c8aa73974cb87eacd49b27943908cc539003a2db396b60696031ad18f001c1c37081981d27aedc95c2cdb45823dc2731ac721460c7dea449fa71a914ce3fa4597a763bffd8ae4b4be05b37fc4719886e275273db852e28570817d251ed4d9b68f3aa16394466824574fc2d2ef270f45461ef819a5df01c2aa33ceb731c78d481e5441076a493452fde3e0a67750be93d82f6c7aa73686fe500a453e5fe44f1aee2f2c3ead45ba0d9524171527a16b5dc4327822d63aae2ea79b4b862dcb48972498993b43eb2973223437cb65fe1d824c99e25a8aa4a02a9adb06506d72549d130b8151ce7df72b06d60773b065e4aa306550553efa62cb7f514e82472161776c9606c14460462bfc1c131164d462d8857bc37d2a6ddb81d0df648e0dc02e1e618e6e825d1a3ff9846123c1c2278e8721e0a106b8b0cd4d30fe278c7ddc34ebb20520da34e8af891fda15aec49f20c5c536c40e0a339c48f576387a26cb5cf958376abf84b832512300a20bd82f9e295ce40216c7bda3311f6acc62fa6681701e2137e85cf0c51be50bda250425efc024aea1ab4a087eeac959ca103ced62c384ee0c057631b4b528b03e4edbcde8bf58a00315478a09840da71ae8f377452c69b7ecfe0d8865864e1b091bc6ea8fbef17bda1de48f95f281135c38b76e86e18f2e88b160422f150f28470f7c9ce0501c9f933647b1e081dadda0c092ef8adcf1b4bf7b9c81d3c38252d96c88535b525fd887cf3cfd1625a7490731a00a979208ae72c98474ccd4d65def894e5ae01630b3315f66e080a16c047bcf73d79b7e4b42b0dce1fdc2e67c56f04aee0e1c127b4ae534c029ee972c5511351e382db50ef60f87e161ee218fbaf766e8ebdc4d7253e8b83835320eb18bcef8c8bd3e2e85da466eef91c77729751f2eedbc487899fab4a12904042133461c0bf6aa95f8eed488afb2457919488cd7c1f3b5dca0e13321093dadf61108c02e7b5597da8510cd7142845dafc1841864544749bf2fb7dd6d0b89ab2692291751116140860bbf2bec42c4b3536212c983c521cdad44e319fce62e62709e380c4c947d9c096ea142c59ca9782d18b1e68b49c366c188d797d55a0837727c95af713b3ec77d1e56afe95adc865189f63744bf69ad42edadbdbaffa356ee3dfc9d568c74b7681bbb2a406ceec80bff7588a0f4b1c777e9ac116fd7d17a0f4b8ef8e5d14401de5d8a347338838ee3ee4113fc122618945d3b966595bed061879841db7c040fe74b3e1986cb1a51ab0c5f59180b7fcb27644d78c54c9643ad66b5d9a1806efd0d9a88c14dda764a09a70affc6b5c64e1efa9889ea5be7d16a22f8bc388bb9156a2cb81d548b8d191d80f9a01e0b59c4865c0645eed8a830e4d8d3011bad2473cfb248d365cd18dc1d7197f9ba2848748252e851901892783eda91f1b560e68c8a4bd56f783aa48d207d0bdd93d46e9a690930741a181eff49f143ab0ccb60062e4c3bc3807f819fa429ad55950ccc03432c333ec9adced2a483959fd1b96248d1a06fb9595b8a04b022f8672018f69a54fbb1af9eb8cdb68f50a90845b1c89a8e653744f96e94e4d06b42bcb2f4f10fd6ee8ff1f509715496865e9415864bef12a1857158ecb00d0d21304cd68e68c62173b3b1e45130831707f5fb157e2e3f1be06fc4f52b9ddee9bffd7d6b2910a1b04f37be3874e021a33eca1b4effedb6765770c9af6b2180ca38e23d7f21d3c291c3b593d71fdeac9d4a8730a9e5ef3bcd9c342b38dcbf29dc777e07c899ae0db09685bc56683f32b7e1d6a9efe7fe871fa7bcfda9856973f10885ab30dde9fee9e6a0677903cdaaaa9d1af7b1e94d8c18f5d95464d861536d66f433166490fab1a4f68e3c6396cbc827e52418058bff7aee86e98fa4983e7f7652e0610c34adee2e4a139915c4a04d65ad792a76718932aafea929ba44f2ac9f8283f4939472c2d3b3aa38cb05067ec62e7aef684dd10a2d47a4dc07bc915d844b44cb5fed9099ca9acdcfb8c19ff142f72fa114308a5b77f0922d5afd59a0a1d247cf3cf563918ec1623c1e98582915f347ba6e48573ddf282f5a0a22d0bef4568a50dd94e32dd3681be8300938ef68044090bd508f30356fb5cffac48a60503247501cc9cd2669a09abcd7cd0604a83450ae567f58b4146feb08c3f71132dcad2c38028f4cf96f78f946f05afee52066e9c0db269af6e86d47263a598fabd412c53e58e15695a8485507a9f60dc6921b258001db0c3fd5784634601c4bd83cf83bd6537cf0de1994980f92b57c201db4466d9a63bc31ba0b8faf4999551fbb68d178576d2af00509530e6eb3506d57de8cae509e855ce2a950ee67ee805cd45518572915d8eb3571f8a1b5ea18c5fb2da0632c922941e847843bc88e41a02a9d2d3be42bba8b22b5bc0d4b6037d4c288f4de014743c7f7d7ff36864ebae4bb81b2bd7ed33663ed82fbd411a8a8a10c53aef3b78c6ffdcd655dbd741266191cd8cb9ee2b672ed2f3bacb4fe809a6a6c31e1f92b5da71d1be63bd9e6599aef50768a20282466770ab1963d95fbebb384ba8f5b09136f8c6c6a060920be0268d93f94d93af0f1c1d50a79b598afb15a7896950a11487210f45dd8522a8a5de0b9c6336d7af79cce531f3f8576be6bcf514dd9d4890ce3b8d671c75df0de655ae4f4edc22bbf2b0f7131873e7c1829e5a9b045a61b5fceee803cefa75b8ed24dcc8a2722c573cc61092b67ac5c26b81f3b73d00ba8162b97e7e967f0d1ff1a70d39129e4bf44fcd1840d102a41f466d95dd06a0d11a6f8eafa98c2aa43b0f924d77778721e2ac20dbed11a27abb7f82ace24216f3ccd7c963fedfdac13fd7f42d99b71723029fb9fd08457be86da29362df298e45bf88094fda8502061bac7edffd678248567a39fdf3b39831a5cfaee4873f406d0447153d2218f22a7c41b4f654c3db49adc5b3321e29169ecbe501d5c0385b5a7187633b99e36fda278c1c8001166317729baeecb4d9a41d5d1c261b743a133c0e67df75e1552d439aa50ec00544d7fd31b47b2c93e1e9c023d3c102f71efb568d54ba4e5de6768fd78d45fa01c115158fc4ae82d730098a7fde39f1871aa13bd30d2d7e64d16c32af11c25a0b495f6274f7f7ab9a874270f7c308783c28029357235a00f06680479a458d9d7263beacc88ef92cc84b69d690a970f0becc6b28f692582fd6049c597318ee210f3985e2e30d06c5907a445f49a20f51f5801e5b976c7e85b24a246baedbce41852ed6fff5d74314ec4b240048800e13c3bd926fa4644216c1ac04ae98b941f849384a83866224e492dc6d4e0728377d316f27a3bc4f269aa5e9115d0ab9bee2ce489bcc077b1f71fce18253374276eafd5e516f12b33d636878061c73a7cb35f62e654dcbf74c4689437537285f9ef94f2cb3056fbf943d169874c7e0189d945d33e74686bbe7fd22220453578ce55e6f790f7f6c532308381ca9eb580a64c750445139371948894863810c077d55fdab0b59d6ebd2af789251cda1acc48cc08dfc1cebdd5088fa3b8698823bc828552838ff0f2124a49afb2849c1bbd08da26b2e0435f9aa4d25c5c6304dbe31a12492cc79d0c04abdb6869445da4a1342b826deb634a33df7d07ae3864223876378c62892ae41100dbb687b2efa316ff5db7c6764d22340d1edb8fb8ed764ab6d16803f7224f3b338b867c947aef82bbe2ec1eb7bbf0652c0f1c86ed7f99e57919950a2f29f0025e80fbe00ad19c83627ee1b9d4b81a39b010df839040ff4b74c697cf0f08be3081f613b182674f15f43f6f550a382a420b0aa51cfaf0168a90527a568d821f26e36b84f78bd6aa970c52ce15a3d7c3fa79a5dca2f772e3cb305537e3d4d0dce1f72bb5ae55027b6fe96d6d3411c22b5b46c7328f5241686d77a1f1fabf69c589dcf9bcc549164282320d3eb9e85cb404bae7ad80a76103367466f6bf931620c83450f66af6c17640ac8f058979d5ae60cdbaf4269c22bbe1ea4156c9ab4a3b8ed826f5aa25e6ad7e528b987b732326f4cd9f98fc6887c4c11f789554bf6801f80d7f3eba596ed23d486c75d2147eeeb5261a92ee7169b390ffc696600f8601b3501775411575ef8d81ca97b31c9ea7908b63427a6b95c25e13601e452dcc4d118ddd340517311644d132119061aab929a2397abe8b7e5f1369a101028529124e40dec1a98e0c08b4f0f58107847a6c32a0049255940a2c4126f11f39cf383a095db77fca09c475bfc5b91e080544f07702008c8b1274b3776b60058710a5859727ca05d237dd8ef360ef6d53eda55c1a96030936357bf89dcd20f82b75bcad5df34316c7300f0806c34b3cffcbfec9d2d340e93d729317287e5b8b57a872919e289291156bf23ff971fc819d193ec679b65c308c7bc73950780ce79e0488c01f3cf12ffae0690d9283a7fcffc5d4d9a65976aaa5dfc7d0001e3d598d2ef93c49da1eadcd9d70a03d0bc218dc7a61a67f287c4f4a99b1620bb0c31ed17852829a84e473afb090ef2d25c8a0f49b2888a6a9d100a50f35f6a22c35689ff4c6c450d4a74cd793e6e61acaad7c21fae72962c16e0f0f855d11434d23df35dbc382d3e88af6571bb636f2b226ec20aad74f6a1e195f319a84035692d16682b454f59fd46d35d5c2a91d2c24d9b2094cb1e7ee1dd6ea2617b1afd1c2d6184ea7d44193426a0cdd53eae54ead3486669d8e229f4263b8d9f2fa208bb7ed39c879b275a60629629e1ad06f4a9fb0ac8e8e69e301701b9d5ffe576604be4e32b28f24083a09176ad28de59259724f7c743431966412c222bd0a552b23211668b20c558e58b80a3f29aac463f282bbb6f966990cee144508146600171d023e9438107eb98a1bd6b9a7996c0d212bdef0c9224804417039a7755eac6567c97ae568791815193765188c3d4ee2b31dac4609accadbcbb64af05c521aa68eeb56c729df72c6d3e9e9ac1e00e9afe24b4b16c714807f902169ebd95ad850ec42192897b32288d9ac8c9f298c0bc1fe77b30d84e05d714424eb99934bee9f66315e3ba7171d668ac78bbff7902f7aa9ae60bdbff690db90288120d00db74d938ada1b6216df89d6c42145893a54aeec12780c7e5d539a2f71ac0edb00f22cf9e4d5ea71f858709def5747cafec02bb6a2506583b7eb4da8b3232642ba30049fb770446ea78bbc9c3a70881d15a55494017b43fa2352c0b0b55741134ae200d6dd5a80de2fe5e91e0a10aa9fc9b119921ef3f85797754322869e4ecb75341e934c9dc2f9ae91a33a9d2c9f78fec2b6dc5cfe54fe909286387d65afe1402f6080424a2adb43b24b0a19dac6b0c2c44b626d9152c70b15a5bcb5f04a08db50b5eac39ba7bf021bab5170cd22ac69be40b715fae68b25e22bbaab097377832be65b7ab15762d04f7f83cce0ce6970bc426442d66ca30f2c3aec89ee384e9b25d72c2531ba4ddc6ca30f9dc6ad939949393c5081213b5b78fc0127433272b5d20762e6d540b98876ddd1f61a668285296c5683e83485a0402077bfb9d61c313b8fa825355fd9b6492a6fe1228f3e1ccd845e6bb9b7dc7dcfedb89850830cbba76a6ce921efce880a5eea54957970869d235e2dbb82f42980e83868342b2737431e6e2a76e2891c6beac2277c75343eabf9d7238d3e1bc6f1e931615756b007e3b0cddaebc2c640774f881dd7a2b30b2ec90b8719bef574717e8ba0118ec64e730b14cc155aa7bae9c9aeb2abad20a0752d41f6fa36cfb3d4b521cd8d87cc41760fe4f4bf8a4e7d72898e4eb9fa6e565056a37c0824779b0559dead45fb1327839f4099e2cb91b18a4b6f7b133eb60ab4d13951a16f4f41184b4693a88cae8834b56cb2e767aee36bda66b0a46c40b947d168394648cd5319d255afbc760d043cb70a18162c866d8fe5feb5edfe43257e3751682a5fb666b0feb0b144b03783a3d06820b82c4a92dd9ef07d8e66e924ad58bdaf38df9b6721c49c0938fd7163e40d28c182c673d35c34a06ef1c909b0a13855450073dd2f2e03bdac0c1f923a31a3094f2e7ef12ccfc5e4eae79a766b2218909e3c916a6f0f28251c11d88f1a287e10ea79b45aa5c3a7a455bb71acfe7f5b5492a1c088bdb9b02654b2c462e48fbed8c4e6ff8d8657a7ea9f24c5da0ed7e25f79d5e663c31678077ab600b2d3cd042c72be0ea09b8b8491d331f906803f4f4c1f30719655fb6942679f4473356792cca028b81669a810eb1811a180c8d9d9532a1980621aa0fe74ea569f0820baa030bd99bb9754800be2ccc5a3a6823f2d08ac99ecde21c0f4432b5887c446b9a26082b67910035483e261e1f188432da3420a330cbbf69555006c5814b57622d07f4ae9d51b8e376aefed8811db58a142d697a641757023b5f3e772cf159f1a21bada6f25c82a425f16f9f2155b2594304420139fa88fe4ad59122e3edd6d0195008ddc67a8981622bc741127a83ac70856d7ac8a340cd40355c38c22523966ca991d40885db6876ac425584e861a9f0b6393e7b9d648fffac684de80843156f11ad13a721640eb94a27d8dfab88a67a35e8c914abb6c4086c8e004ef09a86762c29730fcc524dd44493d6151806dab41a6bb9ceb5238ad88fe5f615de8d02d5c963edf8b00071824258f2e8b3e6a77653b0ebfac2b57145cc66502d90c7c218366ca2b19d4ef60260672c4ad8aa392743a2a1370a19404d1db00a7965470e668aca9c00c5f0ad9d282d077b90269f3afb4e8413fbd3b5a212e175d1286390fabf8469e476b4850b34676dbad33e815ba8689e62a654b0ab573bd4a30d7679868d4eb3d521b9238701d7f05d65a74263e0dc3cb09792f6ca55271455faf8a0c30d4f26c502c2bdabb05cef0bd3facf3b73fe54e63bf44bedb84378051cac73890325d11029685f08ee7c1babc59dc91c45ed2071ac94bf848e2731fe362ddc7d33ca47082e33ebe159ba83cf43e1ffe5651bb86e8ad1a1fed7e1ff5ff9c002754fddf47c0aa7de4fd3e7acc66e249781cce092617310e9a09dec6a4839ba3b1077af93f46627a3c4b00903194387e020c199c40e6be79b73f9051a87f30e6987cfd02be4aec9040a69e639d1b8b8f08dbccb0e6d0c2f816b8ef0ad4b093a4b19d151a15161c261f8d8c7373f19ba9bfaa23f6ec48c0ba8bf25d2217cb2330b4d96d1c3d3d014e464190a8a1f8b29afb98148e428392bb496863a7aa6bd408184eb36ed02777bf1e330546b892d888ece88b05a6877118816de100c06038c4e6e6861b62b1f694aa8afd67b5b0cc03b6c450e981c83ca445c44f183704fb5d6cebd63f3d8bcec4ce188cf5551c7256c692f2448459411c058ed8363a462543d0b309d004735d2b2e0a88dcea240d0c50cb97162ca942cabe13ff3b548bfe4924be538bf0019e42f7fe9fae4c81d340769a721eec7a5f94132f26c1ecd6d4303df8d494ec04708cdb7d2cca338ca59f66ecc8a4382fc2c9680e56f29ea0b2557a8b813558359f14262ffed218eaec1025b88ceec01288242d3d7a6d998f2b2381c8b862b681d1715aab76d3dcc55f6566ee3834d1c708804b8ff0d32e7265c4354d0761f142357a7a9fc5aacbc33a178a9b875e7d8e658cc281aa17532e2e0a59460f1719af517f5e3b9a1259465693ea97bc2c2360d7eaf6f069961f7fb38c87e8a7cdb7c6d5f1002b5c35cbb8f38c8cf89d5ca82359c6f707e802fafe71a659aabc586d8d778f4e285001b809c932e28b7ade795a32a0934ef9a2a49b2c236b7aaeff160b6bcd315e7035670a88a72deec6c700a6655c578da42d2d235ac02fe9658398f190e0b552bb4a7d127b9f5522146df795c6a6cbe8735135445c4bde17cb85672213791f21b0c3ce66ce16c3af019609369223fda6cb2e2ad71216aadb14a4896388eee3b6640759815891fb2203f930233a6ba48b62d43164b021c6fa5f8465c6bd0224b78c4520aac64d46c9385b28f4668434bec330efab0b53a62a7056238d4cb594f333d1a91ac94e0fd3d9493402159b7a51f70cc6963863acc549b9ea3e7ddb4836f668e5b376477d59291a67a40594e9dcf5f46a243bb293e176da350dc290b1c718a9baddaa4dd5b0845c991294af2eea48903487925e1c1972fa7af9f5b3c73def5e6c034fa16ff1a855371120257b171677ccc584e93bd915de6580076f02de438f769043e6c4c42047f9f0db43444d1e60973dc49ca32e5dd716a980a158812d611268f4f966e472c8642732584356cf8eb63e847b5bc6d43192e4e89ffaa2781d91ac2e7fe09efc1c896ffc5424125adaa5cbc07504bb8486e73070a07438ed6860452da10161eb78c99c5f86b3d684e62fa12b74da11b53a09df2b57223a1d2a1d0bf094c34a700d0e940ab90e3add82a66c5cdaf15d22b561a3814638e1374d3b0e29ed38ea9606618dc0b08ea97988c1ccc0cfb2cc167c7a574c332c3b8f4cacf06947441da4816930a5c718ebe8047743a0b0a28ed1867554286685e64465d275c4cee542a04ed5519bc91cb461da318e90cfc8273909f2606cb5e059c39d99a51d65da279723a3a66edb4e296acbafac4621ab4925732507679ba95c283f343b4c2663ded7d12c6c1472112145dc0a5e1a78cd8e07d8fb219e3b8e111b564c16c6643fde804124b43d5248786814e8d1583a03164478ec22282dc51c7513b8d7e06881eb64095a7f1c15517ccbea406f031b40732407a0c9b68ce76ed43f4b1aecc1f602ef8a3599eced150f709a7e46896c1a1af437599e62cadfce4bf1ef91418aa44ee7c943b6974554623ca06a6498f6850edbd68f5758b4e12b7141f8ef378e12fe1817f304ee12790bd53afc35bbbff3c013cf9f1f15d18a406dd3f4b66f5578678b1a6f40d9a1ca186f7732f4992f2d5abd7fb8c1461e9a4c72c4e906e042f1a4a953f05c5d0e7c4845445c9578a5367f3c0c9f448a5ebc12e20322f289d620d9a83055879fa2307f24dd5665c5d719d46c1ff3c7a385e9ad5f72624c505d605abaa81313712457f037f78f8a43b461b07171bebe112182376350bb4bec4f506cca212680ad7660ff1f3bf0929d9d96f94a3ff9faccba793f05dca5d2aa894110494632a1d70abfe6fb23765f1ae3f19db916beb4ff1b8a46ced16d6809478e5168a15e0319e1a0ebc01570e87aff9814eabb5e5443608bd3b0583b1f2043701d99e2b3f352e91391c26f5842fecd4d137041a5169189f49fa129bf1ed2fb09aed418ffbf83db231c0f336c00a5890ce02d4892e4983c0e15e67ccea6e6e948af270fec13212a44c968ba96d76cd083e4969d556a3ed660a55b1e2c1365e04e051ac314bb2a20067a2268fb2670dd024a6eedbe114d835b8d97d86da27c1d45002d94244edf8fe7707b7432de1c038c04a7f3edbbac6be16cc6c647abc8e4a705332ff9d043255d228da326dd2f1f802088ec563ecf923b597a08120496ff306a64508686091925d5979a6eb5328fa32054e5a7c5ea182bc0fa4bd652b60a9b27c8723ad134e8cd567861d12444105fe0ab8c083dfe99837e6b501965930225941d1cf18f77b734203b94c7ce7e51e585b1d1032d9d9382f3a5fd441ea04f47f33ae8d23254c5008120ceb911d9c8420b218d7387fc46d6be9bd91d2f5e0d7ff82c46951519f81988db5ca94fae9fcaad26ce29c92d115d8ecce8bb9b8a4e5bb17e5200c9ed900ffd0a2539927acb912997a17a239a471fe404a9b1db48a6965b0c294e3bf221778a6253630e3e6e67c43e10f1d1070f40a36263c78dcdb87a64f576acd0c7304829e9ad1ef9c509b7504fab96b850e757b6257fc01c99e3a162f32482b1f03f9c0fd913aa69662bba1ed9eb6613a1c1e231dfc84128575b323db270baa86917d53b434b816c5ed721474f2c819658f991a10d8b0d38caa761e8cd8f1cd1b3633fffa8c7fff824bf85851eb42ddd4843c2c4920678bb2fce1cf801498ffffcde39e2a30802ebb58092a19d15633f729312ee38f87d9e0ac1ffc6ae5ee23f40b8c373c3c2b3df2866dd8e562c806a5839b2645251adfcd0865653caec478e102e3c1ce0308f28e0c897993d72977d4a4974636ec38c5eadd114ee566dca0dc43c0d8e3b1d5a681f0240900c3daac3cae9ab08d609622da7f67df9aa02a9dd4304c968e6d34060fd2c74b39e3b5d00450dbd7ab4ed70854a7dfa97cc86ffa03a1d50fb0f9929adb8ca00273b4332f648108a4d82ad75caf6943fdde9cf23f962729cb92338898439f31d0c82b4e6e1352d7cb51f441ad47dce5f48d6ba6ad4d09007e92767a374af069c99706489b994b8c9568f604043d308c4c5d3677f38378c3718ca86ae2f89f66d085128c558030aa1aaff0a796649914a6d500686f57f066fcee0bd6ff90b741f07dcb85cd53a390c510e04bf08a28d5948ecb6dead8b2ed9def0cc9a1ea5609d4573b322492386051eac43e7210237516c326dbba53fbf13ed1f80e3b92170cb73a3f1a3749bc9c7862c761f055d14ddc63d90e794200d774047d38a639387a7ac5e9a109bea46aacedfbd1ec6b5055b8cc50f556760f11eb0960f51b41c04e2de01bd38529fbf13a08d2c01b627ff2724199fff839d811fc2ed0b2d6dc03f9fb46c53b173da1b73a745631d69f70950e46816b41e73d2f941314ff3a62fa764f1637e319d4dc8024552cb685fe90b94b800daa9f61c1d1d7fd466144f3cd2528528ad28ec07d86ff088e5654fce8da1e3dc5c449ad1330edbc2cb0c4c10b86459ea11cd0f3a528932ef091c81013f4a3fce0b4d787460dc258e475c54658de9594bb2aaaf687f4d5fab9877f6a11c3cecb25b336140a96357a4998e651be99f8c2dd6f9ce2fb3b74f420c3c5770c18dd4aac0cbd3d4e2e6bd678fb2ed47ed4bfa1f9d9280b61a2547ebc15bc423d73e2b3e6b9bd21458b28de4680fea4e4aaf56dc1334bd6c1281bf3c2a14ae84642a774acd2bb129abd7fd246bf1e07c866a0b3f48f479574b9e59caf42844ce7bfc627f036c65a1d7947b8862b4c271872b1d83de0da61a7d866d7a2b5cee672c5bf4c38f309efaeee44197f8a1fffede63bc7eb9c591aa27a5b5389cde7c9f18a30f1a437be229a305d2c06747d4d8464e558466bc8f05f43ed36a49743400608b49de8daf09ea683cf3200bfa3e83575c75060814b807670a63540d77f9909379ad8c6f9f03f23b973032d1506f9fb596ea071cbd019ec3ba1c12ef7ff3edb34e2bbc146b61611dac97c3dc9e1a30fdc51b7c4480635c9e8b04b77e41bb9786b2b995459a83b2110ea264cd3b49d6f4022cde2840f325e6b059793fabbf4de96e505172d8c5553d1a11fa9a4a57d8af572a76d32a9a6d14d4d91aea5caa6c89fe21dff2257c073c6160645c290d3f20d2e408cdec73938f024a9bd1638c443fe9958332da552c3de5571401dd268a107e020cd07d43b53168498a175eeeb00d1d271898593a0cf41367f5a30a997af0e801049223b3a07928ef47cede249192fe04861676a02577794b53ab6b46bbe26125d380fb1ee8862a9761752707ed5441833d4a2fef586ae9b5e9d27ed40c710c1b4fc7ed971a048d39d0671e053137700aaaa0efa177a9f418bca0a3b838f7eaf1d9b70074c17ca741c37cfc13216d14378b36e8e343e50f44d64023a21cf5624d86d04da9d039e5a09d47539abfd63828050f2f99fb174b25d572bbb813fa87ed54e53c6f145a2344ab03902b3c1851a189f4abc69f6ea7e733d48a21749878978f364e0b8044fc20201a3a6d8264f5581bd194c362def7095de62c874cd14e4cc581f69812d84c506315ddafcddfc022d892e4bf22fe14bd6ae3f1b17b99d4268ca5ef836c0e3f51e178987bfe0300ae05b9394640e94aefd7f02020bf2b84cc1353d16e8bee828e0a5a46f95032ea5d5c8a15ee0e0b58eec96361bc58e3ff5422dcc42aad30c253e1bec0c4d18589f999f51372446d817fb3b864ce292ca619b6a2c93d8cd940a89a8d3bb11f4f606e45d359976cb87762584606e16e04ec0d95297ca8ccdd54ca68cbf227f992e965e2e039d0f356f4a6921a3b4e739f161f0f0be09698c9776c377c2c6cf16e64811a959677e233a3b031c0429dc3076bd90b5202c56c44d46c5ebcc3dddb63a4cdfa1f8931241c41a7992457e54da643b8a05a80553a26ae0211f5ea3c3c7aa53a9db8c132fea006d755f347312b8b2c5a63ebe9e100425e6a466fbcccb4b40d8ac7a4395d741f2179a25dcda28b154335f4852b0ed8cf1348541eb785ad9f9c06b979545df44d54cdf198bdf6071e8701b6f3118c949a348b4e6c74a0f9fd38dab0a9c226700cfc184481ee0e3ecf75d1bb49ae08e92f42fba2675265422f40833704a3fdc5a5bad28077c3eb255a99d530a766317fcdbbed81a14449fb7c45333afef498c46246477746b9cf6898cfef1ceadb807697f256052a2f214e80845956ddf64d73e209c1fe50ca89cb5a8f018b1b0d15619e76e8a9707474b532d11a1e55c19d646f67a594a3038976d6b6cc7825a46b2d51b0dc11f9d11e8f8ae4b734cf4d73a8486f5834d0936c06759efd20d9201df4bcd30fe9c0ceaa55225d8f6e69db1c6d9301422a2841e58bf4ad62aea91097cc668d5d9b5fa659c0aaff5cf7a2af9c876a983eb41ab592fc6dc1a889b8fab2a4136f33b83c3a544394567c144e68bca5c5ba87f9ef16247f13ce132d507d087f18504b3e4c58e4e06807e3fffe570ab07002ba4161e392d3dcdaaa21f465dc7afb7ef4eac58a8c4dac69ca52efada5ed86d42903e269b757c5fc3bbe1e7e3b955af0d43392dad22e30d84bd9e2301617cb3a9e705f25112d1099e81435d572b7e8f4401ab4fb5b70f03da023a8875a1f084bf633a006c448fd1392f0f1801d031149099b7f01cdd980fa29446c3ae3e79a37ec58483ddbbaf38360e67292059603f519f2bb70887c972464448f5aebbe6731b3f1c5ad2fd785197e7f99696965d6d8fbb48f84d72d671f68fa2c4eb3527945157d9a0a0595ae916001c28c5699c794b76f669c264fb1dec634a72eb75fd9f3183ff04d61dfe02c024d137fd391ffbb10340da53dec8f0151e68e794fc02fde6d80a6eb30a9d0b6f6a0db37250179d6b40a8049d3fa03ac879b96359da9085f34375dae0dafdccfaf17f8b26357e5db7489da872b34b86b239975632b9077b0b9f03acf730c407b452fa03992321e405b456e00ba6d084842b260d5c0dc8f7fbcc169d94aebc6c6a3036c0f32225b09218c7316d238812b384de9aceb748bc9311db8b8a7b2a0a92229189f6235f68efb05d7712b4683fd4c972d39deadd458a0830405189c26938a13a1c4d335d009046b842782d9df6318fe08a316b9342a0e4eb377cfaea36df6aea58f0a887995fd705ab1ed7d638d8a4f400da7bd583470cb8dd88fc086d33930b95f4a63ec9d6638fdfa16ba06b7af1afbe0e5709a79867f426b6bdee2a6e9244ab8ad6191d41e0b1d17b529c9f0682f91d384d673c061a80e4f2b622598df4d7e67cd3e80ec34c994c3e5e21cd86dd915fbd87f023de992ee9b4f5873188227022521183a2c542c4d34698a969d8ea29cec4fa109617de649586a78be4e246da82e1638d261ea89cd8cf029548ee9c3aa144a6316c166fccf04ed58f94a3b0d61393c17cfb878bb299a4a7b66afd2720525e40beb95becf771a95dffa02c72c8d8cd0baea27058204f612acce60f60f4104c3708283e945490c717d72d118bfc31b0120cbb4d2f3cf98b8f38816bff653ab5ca04c615e0c1a7c46ece5f532bd504b1442bcb54c0ffed9ea40cb67d2d06890b32bb60f11292c92cb9e4ba8cb5a21cbba6064d0b4af0430e75068d458726ed3da761c1f49103c36bc1211f6dbf089fa8bd05c3080ec12ee9b11b4c62aa763492d6671da6d8c5666b2b03021cdca199b27bed8b2ccf65e9b6066cbcc5c898f78eeb66236ed842d4ea0ee29074819ada6cf4642dd6d6d35b9fc7ba14e096351e40917ead940162b4bc4cc46d0484b94afdc13c5896a4c481c73b9ef028ca432c399930e43b503077dcb505349fec1e09c12a8eca3610b010aa8c43ace7fea19bd32d6f4a28b671210360d44271da0fa5d96d5747a4b827bbb5e41899e12b4a4ed1fa385bbe4f08e2b47efbd1468aa8875ed0d9845835635804acfd1f2ac9de956de9ead18ec96a789c49544d703a96eaee9eeca9210bf1b26dc6d1fe2379f7a37048343f6ef86a7cc608c34787fb0240446ee398487499c2fb6fdad929e83c0b2b8004e7e73e241e5696a2de8925522367f62c889bca90863954dba22a2fdfa699b2cb5c812949b7219a9b83f69046521d138ae0d85d648f211c59a03181d67d24725967ce36f83d5322a3dd63a6fc34dbc7e5e1710e8596f3bf5ecf508ddfd8e9b9724e03a5b30f5d8b2bc21dc8c80ae7dc49a1eb1d8c046fbf7e19cf97e55f7f10c297274a4dfbc7e94ece31458d281513144183ff8ba6bba53ad11f0f181d9e78eff3f9ace6ed406ef2f209cc8e081387985a09838dc2ff0c64c7a41c408de32d0af8a4349a2ab27299496ea169fa314b7ec5e50b3e065f6810404bdf4033f68c95ad2ade9f00be75784fdcb1a11c81812e1ed7efec7255a558a3bb3aaa12108b80c2212b8540f71a9f3af47403e21e81f47c3b3db18c1fc7d5e72791e7124ed6fdeb6128420e87f24e0bfd34777be49ee95e427998c9644075f7eab7e24a46fbeefbb201dd17d0d2c555ec6fb00959a799a54aea93d5399e1d935f90d4fad8c948c8e12b532f3b1ed9aa9a68eb842ac02fe45cb322e1d9686748717b2025734636f8310fe4a571ae8098449ff18662cdb1f46b91ffbbbdb52cbd286dfb16e2b3df16e977e3a1b4fa4e5e6177f68b61e854c1df5e3bcdd57ff9608c22434832e384c7d758885c2c55912ae39f5da43498bbed5831b7b069efc4b47ca13bd817d5cbd345c4d1dc6567a98cc7d69684599cb8e49253a1afe5f1769915a84a726270d7bdd49a589fd8b2f570fbe483efcb739498e85cefa816f2caf8e054db8307578ef9ddf07c0a556bc7f2b57ef9c3e98c24bbdb84f27d877456fdd4e91373605408d1312e6a33700f0e7a67ef37c5ac03057d8e2dff33acf136f65d60c5b6bd93eb63e8ddcb4c0c97beef552270d695cf02a02815a52d37979c0aba7dfc35c27720d8c78fef473efc5a226e80ccaef8efa6d643f61e415cedab34ed24c5a7620b58938505c5defa0fee47f7e8003d4afd8f97a45ae2be93645229f74836e24b13e8e720bc481a2bbbd696df62d54a82fd053b1b3ba187c8072035c0bf62c7026767648dc3132f4c58066178d835e66cb3ea966fa482b5ecd81c385dcb53781fad3a3234315ef21046219a774032d32a82729eff088047f02fafff5675c405811750e81ac9f90ffe8bab195376bb7b8f2d2c77e7bdeac346bba0584caa8b8320d1aacbd1de876af993ad1a6e3229fdc33b64fd0bfafff275445a572432ee00d34e12ba7b521b48fbd5cffff16eb7757dacaeeee2da59452e40e7106550685062915638c716cb4a2143afd1608158c31d6dfa771ed64c05ae78cf10af1633ac618eb9c31c65ae79c9f09585fad8510cec63ac3207f40869bafbd19e37b6fc618ff17448a9820d27b6fc63963ad2b969131c63ae38c73bdbecd68674f3806a10893f519e349f56bdd69dd69dd69ed116daaebf0edb8aea5e6babafa154beb1d9e870e2f01f517576db2271a7d8dde7cf1b5426e71716fa7b37d5d8ea05b7ced6320aaad33d05a671cf06ab55aa5fbf7a94f7cefcd9a854df17efcd608157b41054fa8352df271136e4423f47727f7c1ef6ed40c0f71a3d3e9743a9d968e8ab4d3214fdbddb04c780dd16ab954d0f0e26ad9214a484c23e8f92511d248140a3141258c564bc6e5b22eeca93584eb5e2c846559d68ba482b56ea642c5090bbd916859172bbbb2ac9fa1aa46febe8aaa32adf013ba368da0e7974448235128c404951f4f87e4f4cdc8c51cb5da0e9b8dc7ede603870392cbad6c2a7feae6cc040b5d53d31aa9e0095490244992640c4b4aba7054581f00c9e56a54e7df77a92a54454d6e470e087a7e4984341285424c50f9f174484edf8c5cb4319be1a0d172d46a3b6cb61eb75b0e488d0a2554e0cefa11c18585e5c445e77adc6eb81858aaea5d703728dc7a7c4984341285424c50f9f174484edf8c5ca4118bd590c96ccc663868341db5daad072e09179b2d57aa9f0858381c0e8763e2a05029272625b52c76e6a6a356b33d8aaa2289b0d86a49d474889046a25088092a3f9e0ec9e99b1146ab25e372c578bd66c0603462b11a32d98dd9aca6c38604161aed46aade0f50292927a85cbb319bd14e2829553542d1665198dd1889422126a8fc783a24a76f465e5fb058305a2d19972bc6eb3503063322169bdda0a19040c9643551dd6048e9bdf76e4a7bdfa458ab82598d857a7b1f188a7cdc740ed9f17c4a90f9f74baa2ae4ef9faa2af455664f580ab586424c50f9f174484edf8c5c3c6b8bd5ea050b46ab2553575cdbd6984d19516529a018407080ab0d52d22042ea3e22ec5af08afae129fd7e83d38dc837a37463dafcc83d2731b8fb1effcb15e550d3fc35cd8fd1efd626c2aeaa6ed5270b8b835da515cdf5646173089b68228d01c16a955a10dc263a5c8743a1d2faafff6dcaeb9b933892fbcdf3f7c798a3d3eda887f6604fecf8a10f36b577d785dbcdc0193fdca70f14d8bbebc2ec9ed8374df333993bf903fa18540be82c4fcf49ee8d53aff7afbff1fa879ed7fb6d76ad676f9ebdddfbb56fbe724e9c7abd73d0daa95c9b5e2042f16e365dfa62296053e37d0e33de1e2ee67f9fe3d27bb7f737d06834fdf873c6ab6e45225820d80211c2e61684169d1098803fbd59389c7a33de5ef8600ae776630e37edcfe99b0d4741dccd882f7a22f8f990eefefd3e7fc0e9ce17876118a2f83b67c4dfe29fb0675bc4ff7415fa16418fedd2f0fb40b0a69ee914821fbfa14b37faa123163835595cc416a81978bd1d84dd8b1f537135576b56302fd665e6ec69a71aca16536f6957592d574c7d7d5d5d795dcc09d575f3655d9ebef1558a8158dd5efa05c46db5ba05f1f2f00b0f58ac9b08250851448b8b12fc0afca21ceeeb1fc1a689269a98adc87f831f6e8ac37d8db2b8e94c464ba057e47fb133fa63ea6db5caa8a7e3e8313674cfe2a6b75ef4ed0df4378a700053fbd608e3388e231fc5311cc1f11bbd718f631e372308839acc0fac507bf9e0045978c97440e3bb89220e71ad9c6baf2eebb6e89bbe5dd1476781fa25b4f767e23a1b2add61874e054757a1bd7cf2c03f70836167c3b7d4c63ce20ea2773b87df4026ec00257633d86e862eedfe04b0235a40603568eca03b3b53d7f29292be8c66a659b7dd376fce055a6a77f26de07ab94be9bdbdde791b63a1acbd2c573689247af46e6fb553b15726ec6c2ac40495d8f374484edf8c9beebdad33beb6864421bc0a3b531762d1dbbb777b7b9f24f4d2fbbdf90a8c1ffe062d49d04754664f9d3dd9f1ace359376fad0d571ccf7b6fe636e0748331c69adb90d3cd87591ccf9c73cee9e6432d8ea7d65a6bed7d6a5dfcaf665ff995cbcd66b5855be9fe98ee16736f7b443fb5eefde663f8366cc6f7d2118dd140ca3f0c5f0329f841a4388c1fbe0d231a4b3b950f22ad3c148dbf7951f841a41b5403235ac327e5a85ed5f0f9d058baefc5de1d2b18868b592a0aa5c2c5a5da6bbaff29a7913d995e9775be31bdf3dd5aef1d837251c1628e5246a6e96d6fdb4bc4c516dbd329c5e489238c8a1ebed55a7b230c6bb5d6dedb9d31b87a3020a845a8965f8c71be2e2ef64404971b2ed9e574033c6edfedf381fb70df8fdc97fb8274f857f3d5802d56e00a7cc10259208c16d802655ca00b8cf1025fe00c18080369d49518180391e8705006ca9ef42f96fcd297d0ae974a680fa812e9ed9350f006aac3c199167096d66f2939cc883422894424d257ac3d501c3be929cdd048e401f096e5ad0c6f536f493ffa903492422791401cb4fa329c608e5a2dadcf72823b6cb6b43e004e90c7ed96d64f71823e70200efc9103736090928335604dd86215aec217ac9015c26885ad50c615bac218aff015ce8085b090462c8c853564a12cb4310b67210e5a480b73d4c25ab8a3aed8425bd88387377baab7b476e98734228dd0ae8f46680f2923d1db17a1a11229250f713331d48f2184c384442191698ad08ab5078a63273da5191aa178bbf216f536c55bd1873e1485f014ba48f42f36c519fec8e5d2faa8330c12d6843569fd95536cb15aa5f5519ce20b56fd945384d1125ba28c4b7489315ee24b9c011361228d9818136bc84499686326ce441c349126e6a8893571874db4893c6ee24df4811371e28fba9213732213e28b354521512884f6700a996fdf44b98b5308e7ab1915be4aebab8c380cc804996559b1f64071eca4a7e4adc9db93b7286f4fbc4d796b3ee843135475d04df35f6ccac95fb05869fd132787d16aa5f5514e2ee33a39798cd78bcf807118a711e3315e43c665dcc68ccf380e1aa7f11c355ee33b6cdcc679dcf88dfbc0711cff91e3391e64c4790daf7131e2e36a5c992213648240d6da2fd15108d3888fac99d3c84aeb9f4a1ce6537e4a922c4b9019128d48a53f5113c9db0f555589494ecbcfad9726e708a3d54aeb979ca38cab3ec939c678bdd2faa6739c0183a5f5d173a4111b63630dd9281b6dccc6d9888336d2c61cb5b136eeb08db691c76dbc8d3e70236efc515772636e6462acb1a73ad6a4f545ca4ff9f9d80ff9f64974e382452ef1cdaa9f3323abb4fe8887f49024f929416648342295feed975575a2a390f450a193e4e6058bb581d16aa5f5ffdcc8b85c69fdd2b989f17a6d66c0603462b14d0dd946b6b1319b6d70d036396a9b1d7565b3e981f2cd6d73234fd24392a4f56c9418a17c839b11a92fc2e11c5ed22ad61e2886de8ade8ede92def2e77cc8393c3ae79b1fb95c5a7f746e826c6a3635697dd1d95bac56fd050b46ab25e372c578bd66c06034ea4aac3e599f8477993d55595adfc4399c3fb79cfef63bda6f9824bccf84f4595a3fe4c46136e24614d1aa223d6f1facaacfdb17abaa7cfb635581de7eaf2af32d1ad38347dc5c2974d13c3b0e1aade7a8d5fa0e9badf3b8ddba0f1caeffc8f55c0f72e2bda6d7b8e09c552a9a6c4411ed61c3df3e473942784e9cc39ae9b0d2fa9d131c261443516bde79f1c5aa225f44637e08abd011379df3e4c981d16a71645caeb47e3f39315e2fce0c188c465d89c5d2fafce4207182736432143114c30fad15e1a03937f009ce99cd8cb3b4fe8882c37c9f7efd5e55f1d768ccf7e11e19c0c0fda17370d068697df1e4e4a8d576d415dbc9e98182736e37954f6bfb7194b08088827370e08b5ac09537ec49fd141c667fa84bda879e256d664ff56f0abafd987296d61bdec9f951577275a53eaf91e3a4e09c1a4e8ddd28fde5acbc515a9b4917e44a0b9d5c95b5b41bf93e04335862892e779d97bbd3ad39e3af5508f7decb85def11cbc8e88ad3dadb5d6fade8cbf08399f4020638c31de18ef8c75c618e38df1c63a638cf1c678639dcf9c628cf1c6787bffdd2f731cf0ceb90632b80c2e83cba84a88b1f6ea9cafbe7937639c7157e3e5792608eaed5edccdddffeb0204a5c4a9c72761ea98996629335b6badb5d65d57b7c57a5eefa6f97f3aad562e33cfebddf32a0ff6ffffffc16002fef64663842344b483e81147b033bb727141a14e275df9fd6a6fb7e5ae50bdf7de55dfaff5a675bde97afb2ce7025b6f20bd5ea7823980efad578b7c608cf1101863ac5170d3b08a5863d6d69eb6fbdec7b6ba60639cb1d6efe9eda1f82c47d0b5cef733be39d426428fc65ae7fc6d70877b8719e71d82dfddd8fe904bfaf36b546491d39ade2018d7aa80ad75ccddfa5ed317f2bdf7fe8bcd5546de7b6fac734622963df88cf1a4f86badb8565c2bae158db91eb6a9aea53fee96b3d9930ea87ed621c20f75f171d3d2553bb7427e76dec8343dfb797affaa8c33032ccc743f068058a5a3087ae05fefc19bf6d34585f5dfc08c687d7558bcb68aa2d87d63f838f544f0ef871e8875c6189bb60f5daecb6d1d6ab55a6bad75de35b6d65aebec69ad75f6b4d63a7b3b03b1734d419fdd7bb90b780b7811fa350b3aadb5e94363ea07f3f990eafe034eb527b2d894eeb83bf5ad412e8623e73bf0b11643b293dda9a39d3dcd8ca8089e33fc452d70310545b0f2d7276afab416b9de9a8328eaf5f7311dfc103cbbb4b3a918fc7d87627bfa6aca73f0fe4d27fbedea8df43e718ab989a2c41c0a7b6010b720bad7aeb015885a43dcc2fd9b5e0184f73b534c594b6bf63e1cea8dc8e19efe214165c81c894aa4f33fb4265b4262f296c3a4cc5288f93b22ddfdfeb765e4ef7731242bed3e84c46775e3b3b2a791f3bb137b1283889dd0633eabb4869cbd638e67d79dd8074fdd53eb03120ff8faa5ccd2f080954d651736e5b140216cea6bd9141e6274d95458844de95747864d6d603625da202466531c236c8acb4490b029cfcca6fa8d119a4d7d90605364eda4c3a640369b2abffe270995afffb9d954e8eb7f7a7c70317cfd8f123635fafa9f9c4d89befe0748cbd7ffd4d854e9eb7f98b029d24ac5d72f5dd8d4f9f585485b36651ac2a6acab86226caae46553243272f8fa25cca64cbe7e69039b4af9fa654c87af5f1a6153275fff012727274e60ed81e2d8494f698646228f9a4a4e2829285031b0a45c16f028031e6dc0a30e7814e54f4e6c0e3841af0127d9197086cc059ce82be044399d6240a166707159f1d2cd0c70434763800e5d2d023b74b609f0d0dd6228d0e132e04397f30007ba9ada625557f505abb22a8c566d55195775d518affaaa3360155669c46aacd6905559b531abb38a8356693547ad5677d8aaadf2b8d55bf581fb91abb91a04f35a536bac0bccedcaae504efc8bbd2827282768d74f4ed093138ffe09d40ad1ddb0ac947346071d4c504c504e4e5050be62ed81e2d8494f698646228f9a4a4e2829285031b01ce051043c9a804715f028ca9b7c8862f2848e82f22f5601a785d14ac069655c08386d8cd7014e3b036680d3d288d998ad21b3326b6366671607cdd26c8e9aadd91d366bb33c6ef6667de02ccefec8e56c105b636b6e8bd55ddd17accbba305ab775655cd77563bc5e77060c7669c46eecd6905dd9b531bbb38b8376693747edd6ee0edbb55d1eb77bbb3e7017777fd495dccd5d266ecdad4139f917ab514c504cd0ae9b98a03f68939347ff04c52e5868bc9ac9a17e0e208729312931212131313979f47155a13cfabaaa4e3cfa5e55a53cfa6055a178f4c5aa5a79f4c7aa423dfabdaa523cfa645501e0d1f75415cba35f56950c8fbe5955a9473f54552e8ffea8aa02f0e88b54d50c8ffe5795ead147ab4a008fbea9aa6878f44baa6a008ffea9aa5e1e7d94aa5af1e8a75415011e7d14555580471f5555308f7e0c5565c3a3cf5255373cfaa9aac2e1d177a92a033c8ac6f4a02235f9920f4d4a767413937fb10638f10b162bad8fc38961b4eadf706219577d1b4e1ce3551fe6c43360188669c4700cd7906119b631c3338c83866938470dd7f00e1bb6611e377cc33e7018877fe4700e070139aec135b9c52aaff20b56666518addcca32aeecca315ef99567c0322cd388e558ae21cbb26c63966719072dd3728e5aaee51d75c5966db947bee59b09c9bfd8cfa404352941bb5ef2b6047d8b96a0a8080792479f04cd4aa0a80554803ce3ec395343fd1a388731919848509484e42bd61e288e9df494666824f2a8a9e48492b2e22d01de16e02dcc5b92377d486282422721f9170b73e61fb9fa053873905c936bd2fa0438758bd58a53bf60d57f39358c966e69199776e9182ffdd233601aa669c4744cd7906999b631d3338d83a6693a474dd7f40e9bb6691e377dd33e701aa77fe4744e07d135ba66b758edd57ec1da305abbb5655cdbb563bcf66bcf806dd8a65157623bb691e07ccbb68ce4ec5291c444627a6bb26f4de8db47d16d01973d93eeb47398133dd17f14fd8ab5078a63273da5191a893c6a2a3909e02d0d6f07f0f6e52dfae787e8994447d17fb12fe7c641a3a5f50770ee1cb5fa349c7b87cd96d617c0b979dc6e697dd5b97de0366effc8eddc0eb26b768dd762e5adbc172c8fe5c168792d4fc6e5b9bc182fefe5cd8079308f46cc8b7935649eccb331f3661e0e1a2dcd51f36ade0e9b67f378dcbc9be703e7e1bc1f392fe705e9dcabf16a3e179d7fab6f856ed0133dd1ae9f27da03cb69ffd14f0896ce3fd68c8afa2a3a1ca6f4a52791fe4fd44452627282722205c50a2a0500586448b904e0eda354d50c6f3fa5aa546fff4b1f7e290afdff5faceafc60b466383f1957fd009c5f8c577d97f39b014b9d1f8dd817fb6ac83ed96763f6cd3e1cb48ff6e5a87db56f87edb37d01596bef3b7cb1cedafb3e0f77e1667bd3d7055b6fcd77b035a771677059f7de7befcdf86bbd9c46bff92cedce32f8fde933240daba84f33057dd20d0652bcbb939cd6f7a49d34dca23ec934f4447d72d29e86a0a8cf4d1a8a631a8a2117f529a6e128ea334cc38da84f300d39a2f7a52147d4a7b7d3b023ea53a7a147d4674ec34f58862053d4674d435168d4bf3ba092b5076c274328ddfb7a9a75efe531ba1104d8def5ae35018b8ed1883e9f2814eae2ac4722917e5d12d1229148341a7de903c3f04b7cdc6cbec4e170384884faf5d9917da9f45ac38cd0307d7ee9f57dcd35d7f84b680aec742269d2d93b95ee83e9f4f0882e711d741ca27f963c49a3255c3a4b9ea4b1c626ce9d8b3dbd7fa0c7d368a94b21ac12498f9a1cb9114f92e4a60b09d5123a828e9ff4f84fdca990488f4190961e93d0ce9678ac7ba3084984a44528161714d916b88c00d7d67ad063f0e7d32574b917f31a406619d2f97c3a1b0e397e42ddd3d9f473ec7c421c86e48c63ef7c4261c86148ce38f6ce27c46f6c91438e9fd0a6774f27a4e47cfd90338e6459be76d063f097ff727179f2990d61cac123e74b0ec861caaffc4afc234a0b1df3f2313f7ba7527ec761ba0fe9f8f8cdd3eb4ecaef3802362ec71e74dc4f32e5901fce61c6ce121d7fccdf3b32cd4b8e1cad3dbd6b72e4783a9e4ee72fe8784690cbf0c7789c888e5132ec74380cc981197b871c39fc05a2376e5e4cc7cdd9752a23da59180e637fbba878c9b9f7fd19423642ebfb02ad51b48c33e63319f319789ef77d1ebe586b9327764f0f5867ec65ec2d91b1c618eb8d3597012823c7d82a297aefbdf34e51d92814ca933d9fbc4b1e03100804cafbc489b2048140209019d232801633efffde7befbdc40405a564522a954aa793142b4a5fe92b7da5aff4955a526958fa4a5fe92b7da5af25ef911193c96432993c2424ffbdf7de4fb4f495bed257fa4a5f4b48241a9144f2feefbdf77ea2798b22e79c731e8a44a3d168342289c8f05fe92b7da5aff495be969551de650902814020334486effbbeef0ba106a09a61b3a141002b2491006cd4e7f3a9d83985aa25a5e2eb5ffffad7bf96142a6f922449b2e3c1e580a4585959c99bc3f9110ed363a81195bf297f557ec494b72872ce391f375ffffad7bffef5af657fdff77d6098a2254552e27d49fe1428146a05855a41a1565450a4a8a49c4039399994909846d0f34b2226a8fc783afd132b652ce1ebad2391b3cee1081ce05a831ad4400530c0b57a33f60b068365dc99b071ce3039d439eb7b31bef7de54a35a07377b4a41d95a6f66c5d4cfd7566cadce594c357a673df0c49eefcdf74a41c770bd358e1c2677db34a2f7de3bef1153de3792cfd45cde354ffe4e293df6c9bbe42e008140a0bc5194c3214992243bb15207bdb32733ef9010ce39e75ca4749e66c9344df34f2d3ca692629aa6699a66eaac32d3e4333516e390213d0cf994214fde22d168341a8d461b1229248473ce79482524128d482279878470ce390ff19728241a85e40d8261188661f87d3e65599625e8848a699aa669aa1431ca9bc3214992243b9ee7799ee711451191d29f319490784c24efdebd143b7f3ee4545252a0315ecb4633e722dbe4ac22227ca6aef21ec7711c37fb94c00e3c3ca7800efb54e1e25280971bf21e79949111d3df91bfa61f316513107c1b8661188aa793921328327017a870ce39e7311513c9f63ccff3be9db233872929c9bb2bc9814909c8c43ce58da27f9bfe8e98460e33829e5f12218d44a11013547e3c1d92d3372317652ce1c59c6d70e17d9f777980eb0dd9c837bfc1d560ebe66bbbf77ec6d5e336f01e64da91699a21d5d3b911fcc53d4d0057f75e74bf8ad8b8e28bab578fe8d782bafee634e044f4ce9e3ab7e5fb6ecd7f4faeb984c7f3b19ede3f9fb28a5ec96172adf7823a9c2f9775dce58bf90bf45f9d392bd0a143870e1d6559ea28cbb22ccbb21c69469a9166a41969469a9166a429759465599665f91969469a9166a41969469a914647599665597a469a9166a41969469a914647599665d91969469a9166a41969749465599223cd4833d28c343aca9233d28c34238d8eb28f34234db91969461d7aebad97c8dd8ada02df7b2fe62fcb5f80fa01fece14f375196bec6110e3fdf8adcda6ee6354573f5cd598d30880b8abfaf52b90b43291d615ead588e8f76fceddfd56decd57086d9ada0082106addb8040095e264637b85b075f6b4d65a6badb3a7759bd5a804ea1fec69a584000000000812a3180000433210c5a114c57124d75c0f14801352826654444296c8858118c7a11083819c41c41803000086103243346015000a5c0af9d15a61ba210ba6e796417fc8c3054d6ba4d7604d6aff3fcf645864153cf7d0488f4b3c1bb919542cd24ff26a3b7d88e8483215197ea1f6164ab77ce612e98ec4bcfbac3b7160be1a9713c10fe18b9e39806bf9822cef964c041cd28b72c93026a6ad63b26a458a2f87742a01e500389d1c576128ae902e83600c0a60bbdf8c759afb68a9d24520f1953f8c3eeb58914cd4b490889ae194f85fe527fd159e2fc7c0c767df7ff0bebfe027fd6e953f613c95b9f99e4142aa0cdc547e05fc3dbf93cb65e48ba450edf1d7a7527e47b0f6ac529cfcebf79c26a8e323c059fdb9b2f89a6f9bf1111f5999e0b172e811093145d46c5a63b0af094ac14cb1f3453642aa956479c8afd6c25dad29002b2088d1bdcb4537f16dd9c23f401664afce1be548e19c5e5f2797de20d71521c45a6c157c96d75598ed6aac941b753f25afbd922fe13b668f72621b079ff034130ced03ffcf0100416cec3f62a51f8492418910a07e74407747d31d9d1c291e65330b3773ad7d9599b19cbfc4e3a7f6259ec81b30c4c6fc02d6cde17b412e5faa21033780897cab118d5bfea8099145786c4a5e6556d4265995c855977cd1c3ab96ef91d189f16be643daa08e44fc0acb0734993aea2b43ea573cd000f6f8f91ec1d7f231eeb98e7c15357e86e8c57406d5e899bd69531ea3cf095a48faaa2f670d411f520a2467bd643720140865ad44f71a37c09d7cfe952bdcd8507bdad09ab2fecbd79ed8dc31577ba54933e1963f288d4c9060638a8d99f0ce67d4c9b7ff690f6a6c9c7c41f9015a0fdbe6f05cf27b67ca68d0095a6c82261b3ef2d7dec41261240b6eb3035bd880f74b2b1546b0e6e8b9c3101440921f2d7569df947c1b1542094d071b790456c61368623ef01364d7af2ec5a1b745953b99eb2944222bb6912fe4f23466d9d1f846ac296fe47faff7f4a95acf10a905f8261121f1235216f9312d5c5bbadfc1d41db918318bfccc2a3a02da1be07757778a6c495b63a5e03efed8e4312a97e4a62684867a0f361e163b141ac6e62d8fcb9ba3887c086228fe3cac76eb17d1006486bdadec31e46b305815fd31d585a88681c861bad754f34e4852093e7e6762e27b86c775664ba9aed2de685c3d929c63553707f9c8eb3014ec7e4791ed413b715118904cf7c08d2b24c817437352933ab4e34f6bde4ef49e99191aaf4748c19064b9e18d5cf2c72789834734934561e88ceb253c71479df2b1697d9284f537d23a2a28bee7f1915980057d3720c3b10a1304f5595db568247ef97584aa23af65fc13deabb221cbb007bbc1d771702dc960334c8ea38f0a9210b03d7cf377a1dda7357a00257f6d11ae20f30f75ffc725419912d1a25da0e42fcf083525546f2e12a946c97f0303beba84c1a8d3c74736a033fcd9f2f91c38b1ccd9f9f1120c53828201b8959fb1eaa320b45bbb95df667b8c0983400633c885b70a81b00dbcd29bdbb0a053d07492bf7602355c1af101f1eaebdc6837f22555a456cc3b6c4a52482c785b0e24433e33257a88d7122ff8fa047363d01903b0dee02994d426010f99bd5fa09200affa8a03e82f4c5a28b4e61c61f00ffb51a81e6906dd93176f84fcb8d3b04fdd792d9b091675d38090dfae8227a2b59bd70e697407f2b7ed7a62f4ce38940dfba2fcf1b3e334873393ed8f4f4790a6580c01fcf127a503d39caa883f7e733b98d6b3f66f2c7497ce69d73d7d157bc5b554e6fbc5947a3a0262cc95bee7b92c1f3fac863defb2f94350659577f6f870d97df3406c17e4d4a34e6190ffec7f25ffe3f98eafabc36088c727be1b3f30d8118ab90d4502ff132205ae499e4e6ae3670a1142b217a8b5c7781a96345334be7252c2776cf9b1860548b6793420a12121ce4eb53eec63d9fffbdbf19f53c5b31f795fbd03b9d06e8cd17576a8b5e345b07f01697bfba7146617fbd6f332f38d1a457449412a5473e629d8b19b867d26bbda62c92352985cb8b3e328e9c4ea2745c62fc0511aa1f430982a217b28b6509598d82fd4698bc16548e4a7c8d780d60357d8cf262ff29f72051997cec55268701fff9be727c8c766d4bf38b8b8760642dede1a88fd5785f5ddb24330ce6552edcc357df8f022f31ef73bbe3082ccaeb66da1cb83bc80a15934c505a532aaac511263aff42ef3981424bf0f64a00365583f4ae46022f205d3d84026559f5f491e7c881db93b39013673a7b147eb627b4f9468ef0ec97dda706e0ec52a511300c5ab67fa3a4f1bd6740134f934adc5986557dc44b9580095e3c8751958d12a70057db931a1639da75682339aea8f3a81c975195ca5ba9e1a55b22da8547754bd236d4ae5a60fae4f9fdf6819e5a629de99bc1e75f262d2d2673ae806717a7e3b70ac191cac9ca4ec54ff89000920b939eaed2b30c8d9f8475dd1f4eb10a5e9a66dff626e74bde3db141f3732738f08454f5e46be69c139908fda1d9caab8159e1af791c18f7e3fd86fcc1d55f7e806c0cc6eb959e4fccd687c511774dd7508b56a9adb35aaebc97bdfc64d3c12771bc6197c73131609b95462c36754cd3c470449424e83bcdbb9eb576e8afc3fe98027ce7d689d5ef12b5c713312bd9726722ffdd45ec66aa169aee83a57223e7f6df8b961d738c0da850b8f21f14bff8c43f7119fe84f5db55174507680ed4d310bf4057c23a3220c81f67427536524520eb00338e46ca41231be41dc1cf1e115885b24dc989732ae62bc13ef9f96d4a5b173af4d073a92db30a5dfa6801adb5862c1f7ba88328798d3b0d7db2c99fa2bdd8e467547498c45a02593ec11df4638e8afeac48b94fdea7961d0710fe0badb846c489a0b4a6262adbb4d0ff984bdf2292ec8b2b6a5e2741bc68738cfd352f6786f9620a5843defd11fead5a2eda9c6a6bfde12c6f9eaf6327fba3b0f25bb1976ceaa9de08a59fc369b3784721b87b5b574adb2701b724f16764f01482b45f26dd31e2e4c1b3408f2b58d7a0d4821a2ad6d4eff0b35f804b58d3a57502f74e9f8cb93582119c3eca1bda00e5ee2fe40cf4028e259865ea083e7bd6fa36ff253dfd7446d73b7819406de6306cb3c6e2c77cc7b4c9c8c6d3e35ee2099934276c7dbb04fb82ea25f6741ec91d7f5dcd7cd3b5cbf769e664e7c27344519ad4db22fd6937e534cf38aedc2355a1ab0c963a6cb8b19cc146425c937bc8d047f7263f5e96cd58a727169c733c87f3dc3d024fe94d2911faf20ad7359bf16c46202863b6f6280a25a0aba98bcf5028a419bbb36e5175a79c033932b7b0e6955ccf5703c406e7d1b09742f0923b65646701f1815c112974a7d95d2056f176f849386526ec2fe97072651f9b1945c50f03817a7b94872e169c803dbeb48564adc164cb9cc858e115b27df3d19ae6e5f579a86865c5c4860e171c8370e95c9b1220567f76f35c8253e779a416590eea5ae86da71b90b2af8953f2bb462de1028745c7e1d5cd36334bfbd798284dea9cbe7c99a8a37ad24bde342112d0feb831f7c93ed3134acd01ad9ce23d9c9e7e30e4a4704d8cfd72bac6ded6b2022d1de1cdc93b627eb42230ae1c912d81993d6bc4675b2f1e663b484f527bf00e840d424a7d22a0875c58e077753aa1c1932b61855b802cdaab8779626b0632f651e1887ae1344771ed3b87726a7697e632e685d1f959a6c36a0640c7f7fb87a261bd174ae4980e06e4888bd52dc764333df7d684d7735bdeadcb6a1d1ee68fa3bf625bb1f343219f8a2aaaebe30a872047b31619b913019e21dafe32feebb0325cda17ca5b968fd8a62b409aca9414770387c754293ef36bc4a773d15eb3669269e46d75f01e224c9b686a528d236bcd5c7b2e057521cc6a5e65d68f0e3ef27fb1b7745d339eaf80aef8d583f20becba43074fe3e66b80ea9d47df37e8de6ca2905c97690cbff030685cd2df8ddc4ec179681c5db7121f39423d30c4057466f1e98f09aa59240cce61f7145d53fb2ad8f35d50525c17be3258b4eb765231b4e3e06746f372dc33011cac75986d2c0cf64e84c9c3a46e9ecf2daf88a7f57646fdf0f00383c813df774610b12a5c18e2404680d9082805722702e8323ee1230a72c52f263cace8e065277ba32a8004540ecdea45fa7b36276c8ca2a6289970ab1035f0680f0c1fa2e63d66f4621ebbd8205a011b272a132dad46925761931d07c17ce652e985f8b20eb92290394af2107c802d9c906e118cb1a4b4dda37690c2c1f9d328019a17f4fa29177ccaa8716f3c72afce980e296d3ba10456f6b54575aa9afbd2c0bb63c87fd4174f623f24b35c50c3cba3a804e30a40c33e4cdd0cadabdbd96d3e3093020292e28242091cc3b11f2ee96a4f94a7dda973553f28caf598a16bd45853a434137358677644c92f308bd6347c31ae507d59f16336e602e08cabbe6aae56e6b633c44613c803734400cc71a3b6477be7e6c62469682245f3b364cc813de33c9566dcc09f5b6c7cef7f54cecfb7727cb55c73e079b2163cdb14b259b81e7a5bb33a63714b5d88c16784ff5a2b1b593357051e894a819f28870ebc79e660caf6c02ae5e2aa9fa30531a425194a78179030e0d701b155a3f47fdd2c22a2841cb620e494ff50f69904df4497a4d5211a466f4021d78ec791b352f3f5a09f62dc567634b62184cac0a4939ea5e340834310a3348537f3180313a9b201926445095e823685ffbc2597bb915cc4856eda512a487721a29e492b5aae4aada98bcd08f5a228142b0a2608e910639c87edf0033f6279001280da491e5fc73eeb27c4ce6b07fcebd92da228f118120babe0c8267be2c2228f732b0c03ea0a87da1b626d48a202f03ae3b8a6cb153ec41a618a6c70f80e415dc305cfe4860b90c2da5b7817aa0ad673644072ccf3258f62a3eeaa367efe05263bedc7ff90548a4b26507b813b986b7bdd908cef3f5d51b8f1b8978d7ac36175bbed711df7b0eb773743e0f8afa87a28cbe3cee7b979f35b14294915cc283421d802209c1f296b85006b95150463bde9016d0363b8d9352e02528a3cde12d305d988fa25da8d4192be7da4a3ca6a7875b82b225281206220bcbe7fb1a8c9a1448e5cc3ad5a6335f84fa7a0d8ed6074f46ad80e9f911869220b86f25056cea22e31ee0c655633c1f5f64c00687c8cb5727034378f3cb866e5e7f2799907a38cc8672a5a28a42a54c37ea2ad6f58dd7ce4c4574d56ba46bcfd5755d57c5eaa511795709a8e7715916e05d635fc9a0e74bb1973f89cedc4ed3e49839311aa2811363bb20e0bfc65d2583ce97627671bd531425c7ccb9d011795f09a8e53129cbf8ae4bb7e576e8baf7294cacbdf31bea794c9265fcebc29d1eefda341356ca6dfc7cef66d4f3853832e7f681e9f66455447fa1e359bdae4baf87524a3597dda29739893f82ef4fb50a3f419b36f9000e18659e8a2df68b79c41e057b9c94b88f8f3fc56e6125e0b1280ad7541f551cd6ccd66382200f0d22b3c5c19a4172cc1986c8c194d2a8eb74b573a0234ae3a212d315501f0046a6dd66fba1895bdfb8b8305bebe74cff1647ca89ea711646e53c025a1d0ae1ffaf63da2ad642783e50c4fbf74542071aa139782962b41dfa034801d9f19905c373737e176b781c1012acd3f83b93d53c323caa200cfc65f253607759ad2f3420c2df15bc77ae86069e91cd503087be690769bedc1fcd312ea479f0d21b9a3026529b236f2d553868348701668b6372b6591de1e191aa2569281e4ebf0ef92a3e50e4384c4a3597cd414ec361a060f080fbf4a95270b7166c1009781204faa3d916f133893539949cfcc8fd726a707b82f648fbfb240ec1568eb6dc061ea7f6e04658e4f09b057c7986c09a24d25e471525b8699d8e8294cb97d4fbd2620b3441d68d4053be4d303ea551badf696d25f4769925a07d5955b3573388994d452b962fe1ba95895b10b7287267c6719715b3286a51f4b61f04cdb52fa0fb7b10e8c66510384fbdf7c9c82e2702afe0e2c52d8e65ac7539d1817310c8d57641f1bafccbca743635abc99a8a548269e30d026d9207a0e06b00c91c9878dcb3a91904ec0179a15c69dcd9b8c330ef238935787341a05843035b6895575d420b561c89d7e310e42276c24d33270e07864b20b4339268cb882a0e0896061009478e23c2b7b36ffb3f27013f7b0c4923037024e51820a3d6f02920a1070ec018933eea39988583b57a51b085254e2df43459183e1e35fd7c1324f347a6f9d8646be32614905e946e4aec10e15e5a5855d28c0164758dc96bdfb4aae0c361b4e5df0f494848886676552519c6572556952dbe14250756d55e80fea10cbd604aa4e9b2aa265064248f483527d0e2bc798a9633c4d6dbf0a9e9d02f0e7624d8f8091546a1f7cdb60a549c604a938ff49439f4ecc604c856cb2a966aaca7b915bb97e663f1c01c87e032011430df6cf76117d114020357400320a28f2bbd070583b6b319f79bc2175100ccd52004b790c499e497b665d8e057f50632785fc72e0e402ff0af5765ee1a8879ca549054b68baebbff2c23509419aeb9ea344a61bde82d20c98614d3133cc6f30578c9de78ab09fc2f446a6441f42074fa8330e380af772407f83d35ec033c7d3c084a4d0ca2a80c784a1f13aa42c06018216c2fe60634ebce89c197b794352f839e21d141104a1189327e1026d6976aee50a11c0429945bae5cd0ff861849c3994e92f14c2bc93cd3493a9f692599ce7849e6cb6ebd1ead0b03a39c4c5bf80b224f06f126c3a334ebd2d0698face52dc290515a8c410c44c9add7b3018529c9b1e375c710e43867d926fe3a710aecd5d35efd0e3d07a994704a91d70b2087363a776127b6aaca139e213bfbc2e3d901c84409ecd80339e47f6b99297c8347c639fee0016f7cbea99954da9be282a33c3e8df20efece673edae370b14d106e31de3fbe5ee6db8cd922a88a8702f4288c4f1535fed20f3ed1afdb058c5fdfffc614c2ff4608aa947c9ba085b789135bbeb6f7ece8812eff5f196d1147b35cfd19ce035cec4ac62348304582d8b2b5befb88debbfe73922781c18bb7ec923859188d19d58832891a5c6e5293d54dbb19b37d42bbe21a5d1d8bd07c97161e8c106675ef4148afc03c5127bf09c1906b4324a6bb4f3e8934dfd9a8e7affbf768b3ee5916b44332e5e73c8d84c7c7baab24767dcdcf49f87e4ffba5c49e6ffc5a091f8fbf534b6cfc8cef97f062a27bf298580bce8d1893f9803d9131250d3f668a894510a35d31190a5ea78c299550dcb431b10c3c5b1f93d94132f931250de90d3226d61fa44d3101350e0d8e296d7869fc98d80ff2cd1993e140ce3fda9b8a318d697f216b7c9152158b4985ec71bb50ad77a16a515ddd88d3abe79d9c56513e523ef0c7325afe4b1b4936ebcfaaaec8a525ca2625eb7aefde7aefbdb5eeadf7de5bebdebcf35212513e3c165df93060c60c3075350f61132d091dca0cf06ce5e1b2a79a8265c856724bb90a6825564eea10d8ace5300c86b5b71cc3c163fae5a41a0a4dbf1c96817f2bcb313bc824554e929f8681ca510e0c935a8e19666820b21c5f0259d6ca49117a9ba01cb6837c639463d20e3d08f5652b3034b39c792401e2e5b009ee36578ef9417a9ae5240acf4c560e2b41b815ca311ad427514eda61dc50e5300cc8b7af1c33c1dd7496933ecc3064390ca9a3c2acd6a1d5f54d15e576b0f985b128b22125bd3ea1c706bf29aa5479ef8741cf2311b374ae072e435ab96d896922dbf39da06ad845c1259d062d0a75cd375c514836c41ced265e82baa436492b0c1be2260c028276d8c46c709fca26e98719636dc22838d1d226a604d1596e9224ac6ee8266c07c1fc307e10b949fa90990137611afcdb6a131341741e3749143e186113560379ab6c6232f0c9b4495a6186a1366112d06ee026a602f05c3749180e9aff268c83c7e6b789a90095cb4d12ad83804c5557850b76a7ea35d9a9c099314b33455e6a1f3ce9cde8402e1141cc09af71892b2c0e0a44bd93eea477d68be976564eded211e5231e75d1e4619fc7910cb4bccee42a881dd075a052bf9bdcdd8cd0c942bb41709a51240969991a05db415a63a3301a50263e8ad421d0eca360188cb767148683975451a4124a982a0a1681ef16a3302b484f368aa421a5c147c13a00b67d140683f17c4691d8ff66fa5130fd185b1f857ebbfdbf871ce4a9c2034306fe348962ef3033a828bc0434122a8ad410b36951d8503f4d37f2d4df438e9ad97dd1d39e2a4bd27068056926ddd53ae5eadb93727adb1cf867a79267060c1132af2fe08a62cd4878626267bd35ee9df7de3be7deb96d8293aa8c812e4b1b6c28b139e9f8e3f67c06280d43f4df22e55f720c436a8b3be05500c7e10132fa9264ac07d41a066dff80a7a132f207c81dc423f3808a2189bd0e78136e4475807c4176340fa8141eb7f580574330f60f90fa5546fe80fb8607ea903f21848c0c7a00d3e0d9f607980c22f37f40e2f0dd9807b01a4856d38825c301638e612c071a3d1a5883f7baec07640435410c51111a2ad0748884dbb1ddc02a80601d00ba77ac8b1ade26ad93149b63ce39078ee521def035ba8923254d35f859e9cc329ced6ec0b8db3d47201936e03350ce9975b69fce20d69cde4002ba54ec4d579865d9de5a436a03ed7d3b0052fbde14c341fb6ff971788fcddeb486125bf5d611fa982ebc5b27bd470d23a3ea7d25a841a1de7485d196ecad21243edede77834bcaef4d7f98b4fe7a6b845403d9bb2ac9b0abe0506359f2803077f02bcaa4119f7f5859289ce89ee9b80c58febd98123be7bd77ee9df7de8f1fc065533726965d41390f8f016afd2dd4904d5eabb2fa370ab93a7ce45b973780b4c95c80c1882b8da9f530f76e704f1973e90ff3d69aab393c3fdadc5b8258aa9b4b35ac6ee15cbdc2d8a0cdbd10105387b974c37b6bccd53fcc0f6beee5e03cd5e6d212c6daceb95a438961cebd4ad597ad652a0bf1f93b59586b1dfeab401594ce281c77d1fdbe7fdd99e2c18df55e8ae6e925749ff81a40c2bfe7de1a7bec1e73ce39a3b7253b74741760e2947f24b3875268dbcb5de1742f1640d4f12ccd7b5238c5bb9414c3717b49a9397c192ae52d810455a5a411fab631a55e61fa60535e0d28297c4ada21d0ee536a0cc7c733e5e5e08552296909256c955247e87bc452de0d605032258b8674ebfb1472fdaf01f5822e8884fd51736f8fd0fd04a57815f976a317795f164c6266eb764fe49205e6f314ee1eb16a22f7c638eb497331a01ceb40edd0315f37e4bb195ba511e638d4cd22571da913643a0b692001522c439ff0c69a6ffa85b9c3fc76293845d56fb48661b6fda635ac1cfcb7bb8320c5ff463124b7cf6f7ac39ba1bedd176450d6374ae1697141e5697ce35d67f7b2bfd910b619f68e6d7c0aece08e17cc121f1116c190e9e154a76037dd285f95d94e93ec24679483b45836ce3e18d8cced615a244363926feb69c859d5f547107a4abbce484baae8e516f01112ae62ae12fd90b9052b69097f6356e946104d1d2a510edfadd1cdab411e57956886fe6daba457983b382b5d0d26a8b212233565dd73c954b69df35de68bdfdd4f2e39d47f90f1c8fb428b09a678b81a20b28e0786ec6cc2e5e66a70759b8946ac3e77f43070b61ee22be0b80feb317a1c4d0c5d365deaa94a1eff928b304ac7e7a6f5bc1a809896501cc2b6b344f3fb710d58b229180e0a3c0db3a4839238873a3709ec0285fe499cff1b7b094775f521da5d42b1dd2ac52fe00efbfb105ddad760cdfc0724826347ad7e3e044ecb3b2ef0f45a3f69add4d52aedc3b44688c37527dea9d13f20c5a312c7a5c6da344ce16d2c9040703caf70cd0890d8ed2bbe9506cca401c687c7a101ee056f6a02500c0fcb1e40630816e93accb6d1a6b2ce0af353c0bfe943d01488d09e11ed3aaaa5c7b5a68a516906e1e9e98927ed23f718af3dc7198fc551b397007d082b8aba35eec002aefd1eaec510bfe41dea329cc0dda96ce994ba240d6a6b0f38ec154e61e5d38f833063db45510184e6cdf1915f12546485feacbc86e9dcde919620bd9bab44e25b3d6ab137d942f91f7763aa9400ccf30f5cd9926bd1433562a63f9003ebc73b64b3cecbeec9f27c7d3e71022fbb6f007a0492109b39661e58770c068c86bce634c36bf8fd495c0f4348fe8de1a0a4a37c3fc7a901d0d07b5c10f892ebd905f9a1047f169cafd57d667748961e184f3ab568e9cd9b739ef560ec61bbd0749d0d233414dc27df56d6e97445cade31e35ec21631df565da9193f9e2b061b6d0c32794959af660dc758dc0f3d749a39f5284e063bd782ad1a589e2d6d2f8c1e73aaae93a21cec2c9e2111f5b5410dff2056c123ace5389ef261a40567165c11c2ea9843741507de3a8299c1cc1c4732e03669c0e880092236880b535d2834cd509b5813c8eb276e1e0ac4ae1a6dab1e8a7408165621fc71e513a30990ed00b817d27055dfbac2b9ed7f74affb8366551eac27c436fbc0c35c9b19c005d6f2527a601e3ef0b345536ea1ecfe6dc43f641ad8a5634b4e5ad04dda2344a5671fa3dfed3c648a98d248f03b15f804c389eaa696ba45883ef0f7bd44e177a6ae1da1cda0ddf7cdf50c6bb471696007fc38ac0009e43ead7e4826d7131b16e2eb443bf3e79e7db7dfeb1b8a4ab02b376eb93d4267527da7b4a00bff667c423642d577d0932427bd2004e642db764097960297339a1655b31fdf0df614503a4d7b2fbdf6af726b7f4ae90feb3b05d79f31683d8f89fa5ea37fdf9fecfb61b2f4044cdf9579ce909ecd06592826a63b293427dbd128c89a47ae62374326055a0695d61a1acbab09db89b81efc35b108fd2cd9726cf76602acfe8b7cb008e2c91f3cac9312c2a58f57a20b97e1e4dba88357ff8e5715d8e2d62e7ec88b83ff3aa724b6e158d8d61240f00d5e60d2a5648bf575e23c68787275f86a7bc8635d9ff8071a965c6fbe53f407ff251094a47547b2736d653d42421fe05b52f8e8e87bdea1069bac1b6f15e4c47b09d28269a9676ed72fd6e99ef7a8c127ebc1bb25919bf58a9e922e0e04422574cb32d756d61112ea01be25854dc78a9e46270e024132b59aeffd62a0ee89361d1f89bbc8d6113f2e52195a7544dcd6768f30379ffd8c237534e6a9f4468c8ef28ac33b6ce7c07e17698e948d008a6e95689e4432ce6de3e76db6e585c6b3ce597ede96aaab93c915f167b6f040573f7c32f0f3a594ed735d67abddb62dd35cf9afcf608d2c359b15c5cbd567728ca26afaa2fc33fccf462fcb3780c1fd858f4cf2b9451f9ffd6033cdbd99cbee4839881652f0a64640335d6bc87b16a14d3e5ecf17d5c7237c99ba233c561e4778b16f93d0078d0641a0f6acdf999ccc8a877392f2eadbec659c4ff35c33764748efced4ec6bc07f7684ba380b7f6304d3d81aa608abc2aa8c30e02eba90247e674b8979249f0ec9d63bc3190107311fb35dde3e62076c08c09d3da24c83a648bd621595ced1fd6e014d809566f60f1f4be70649c1f666c8f814beb4c562f705f1b776b0c60dd4da09586c5246540435f9a8c46aeb85d9e2ce824c4b888fff6734d87c00f6faf2df6628176a25b7dfa9e1b39ad1279da7e65f7bba39684d2db35594e6b5ba2776108b1db13111decf6b581cfee1016298874846381ba964fd5803cd0e3c0755ae5e21f365c776ccab90e131001a8a0a75275810a975730606418974778d9cdbd1966896d369987e499e1cf0f23dac6483f0b4156a6b53faeddceb7ddd024e48f73ca0c52da59bff8096c61c3a534cd9db7ba1ab49bf2cf8ff2baf9d57f5e32440080f8389153c1189a11c46cf2f11cf9edc22ffcfb72b4351e89589bf0c79626e9bb4c27d84008a16f8fc3916ac7eec59b47562f4701e85c28445bd3a98a8a93c7998384ed9596532b9a24d60c07cf309460693fa51f90d457a6352ceb37b6d5cfa16b41f5f2e77a6ca32abb5cb74c722dc5f969c1a88d35e094746940a94974150b60bd6bf82b4987551d29af0214807b605099a3ac2c0b92bd9d25d613d5a599fa076324c34a08c51cb97b11a48dc4206a2baced0fe9345eb9245514e4bfdebbd10e9db781fb9e44c88e5360c1c00b6c87235681384e7d94fd6d40f92cf1eea8f2a5f00cf4f4684ce079390cd50a74ed312464c39ffe8dfa19f0f0af42ab5174d8f88fae477570b8abf511ab89d9be9d23c1295eea6f7f55ab078ff21d9a117a1ed22f88c4b8f9e1608cecd68dfbe77b7720e79114b26869bde2c98cb744b5ab8d70ed119c69293ad853eeb987544847055b5027181eb60055ccad683a88c26c8019f30a79e6c02136d60a5b33c581cd0adba17b268f612f1fe8b6fb26fa34809fbb8af41232c7d471aaa0b66715551d9deca5dbbd00c9cc0426bd7b62336d67776ed0417eae5b9eaba9a50006b847ab1530f37cb436d3641c16c0979149a99985ee46dcec913cf6111ce0558ac9ab260a152484c5e4dd6631d6ca365f46d7e917f308aad089960bec8de4af8129189f5182714d977425020e4b80da318476822dbd12288da6a207293002b84a89fa723a12cf0212bc118221f4d88a53bccd665c9828c81c123ec08f661d49140eb21aba52aa262be2537e1219742250bb61c295e26bf5082a375aa3a4c6d104106e679825ceef48b15e67ed5673db8d595ee988024e5ab543a9b49c3a0667d35823ecfbb1dcb5321cfb47fa69dc4c347a98008252e522c6cfdc13d50f0761e2bfd2e1f35c1e3231ef7cbb873b13b9398b675d555789c4948ce89e70e658a9c3a5790f59c028fec34e4a33999860d175a9727d57e50069947f444c47aaa07a266d36dd755f6210b4983619ccffd5e1f44e71b7f5eaeaefe0751d027feb8f8e665213848624ee4814da492a6702995156828960e6670595c4c41aeeb027b519ea02ac0a66d0154e610b88cbf5b8025f6a4643dbb9a3dc63486510acaa5d8a1ba6e6545d5c5054d88c986dc6ef94d806efc251d0c72c5e6e724738d268e300d64196aa9b402f5c58ceb51b882c7d6ae83b71054f2947143fae807fde4ed6a261488b408c50ed33e1899b26ec527d724a0b22448aa40d8d662a50e5a4b5aee259dd3a828d9d20d4a4d54fdd20d44762297936511b0251085bc657c2c6da3dc22839f4fad1a65d6338372dc497555ca1dffbba5ca8ab70e9d8209e5e05211dffaaaa817f62153a1ab16ae2cbc4a9c209700ba33e7fad740b8e5812bbb8d11bc9de40365c82e1dfb7f2b1b82d5db5df44f2e35220a8604407d2bd3baf31dc31ff3e5605c298090ddd83bd94b4d613a87ffa5b0366f65d72cb23b31ecd1667111e487db84bb95858cedc249491d1eafa9e6c271d51de74d6c9f9dff3ed47b5db666bafa7661fc67174bccb42f6d7df1a4080a0291b12ccbf9470a9b1052341d666b17eed2f4dec1218ead19e922844701952e0cf49aef262b9c0bb702ba87970e70b9b0991359f9c0212a857300fd61b8702b74e9cc30f6c1e16de6f9827c812af9f05d80f1b9ab50ba3cda6067b830d5f06b9d7cf6ff51f355d220d26cac5bbea9966c07e495716e419309bd30e1c2fc22649412b559f2d05db7f0119a4b997e64c716ce7d7ad19c759a234bbea450e3292ad6b4f07a43fd2970581a3d7e7eabd3e838e5f94390cbe36ef235104cfa00005f70a71b3d1e4e14adf14fbde8b28b9e81a2151a3fa0f88c3a30f8153c08b89753949f82843bfa37c21aff36baca12f6c24cd1a6876e2d9f41ba18f91b94e33df7fa15c6c8ab238f18bc4d0bae9f04633432a19269cbf0c47797adb074646496951b7c4708ffca75e7f64a9d5b754730e5f380b2da35cafa7f159acc77e6054a1d9b41e9822a94daaa06a878f3432463ad429d4553a488e352070731eea7098a806dd36260d6f2f2f6af5117eb1b7dfeabbbb74bed06642a2f47f97d07637de600bbe8d262bf8cbfd765daced7c994340e31dfde42fc63302e9bcbd5eac95cbc1fcf5dad9e6b3a79cfdc4b6c859ad3c137aa1e107cdcf057396a3b7295b33f40c09397fa55673c78067dd8e866e0fd143227e144e3a4d13ca87a797b503fcbd3632e1fe5639b8b1865cc7a61587818cb9118182ab9e9bc2eb0d4d5856800011daf76fd82a52c5653b38dc32d4c394276a3e1bd0deecebde27999057739815be40a6bf5ab9810699b36794692cfab8dfd24ec5aca02d32f79b9bb5ca57dabfce754d7eff78e9378b3ca64b7c0a0755d175ca41daecf10d0160c7ab81bf7766a1c14f6f13f3d699de2ae4a7633ceb25f014ce34cb2aaf4411285fa7bafd9a721772e808386193fbb03b24058346c9e16ce1568cf209aa7c20df6afb6329b54c3594e44cc7690f7aa8a4bccfcad4b1a19ea5227ea40ad8143eae4957c0579524a5776e7a51fb945b13b6330e29d34a0bea3c52b6645b0bf34065cd386371e9915e5aa4a0b244bb435393a7696caf3e4b9b48307d465bbb16b62ce1be527604ce9a698a55598dbaa95531efbae8125ac96162dd39c54ccf2c05110445884cab97da9ac310b22f949e754e1edb6917316e42ccc5998a3488bf04177071985449d07c383d18df9c8f4603a335d19de8c2f4c07f383e11e71f227edab7d077f5027fda927194412e220b2cf4b4db4708348d25fda780873c924682403ac1bce5971447f87f44ba73d2fbec09dbe76d79cb25c928336db4cc57fc77434787d4a3e7e2a1abcbd36f2b93abca25cc5b98b731573a6743de5eb295f47e93a51f758b7a9ab75a39e5febb7751aee15ad6df4f18cc44f47475ecbe5015ab91a49bec15c74a0885e329c2b1b4baa77931161767a49960f23d96acdf7bbe84b1da1e205db95127a63602bf766c17a65ddb2bbf9f0f3cd8f0f664b39ede2afdd56923915bc1dfe9c85398b721473a4742dc56b295f83d4f2649bf95e71dcffadf27a1f5f19813baf17f3e84c373e699efc0bc2ad74fdcd0f436e04a950a514a4682c7560347555e0ce5076d56be9984ee516d29e37f9d77e0b795e05d62e6fce821c859c053952bc96e23548119a6e135f6b86fabfd55eefe3ab668f7e02f20718dcc528397275269c280b607b52fa740492ac1aa88699b4183164e62485039c8ca8db06f953a133f3b3f8d05526274e3aeff5699bffecb5c9e7d4e1edf3e72aca2dce559c33532545f7d4979aa5de57f5d3bbb0fa001ac1a429a09081aa1fed463148cfc43a13f4d22fd77e47c28ffd96435b4705ee2c653b4c94131710a9d9a81c69c3afdd16e98c2aac5dde1c053985390a37a7a0fa45e39501a96d55c7bd572bb77661f180a42160c9557b9d6d06e949d099e0545d873d63888b75d40cc9570a16635a6d14e6f0fbddb44b9d387ab6d7b4217d52a5a669fcf34484b5286cddfb845e66ef9660d1998cdf91e4ce721099444e5a07e4a73eab1500a7672adc129df84d71293ee01b69cca9c2d96d279d41c0cf5994b398e93c8b0e33e6926b961eee4f6e6eee5702f72d9cb75593b94152e62c4a122ca85a5a280ccfa747dd8f643873c48aac63dcd024cc96fe9db87c4a5a8e7c20489412059377e94abd3d9172b6d1d40388066bc625ca324492432c4b8c503f869554a953d8e7a620332b78d369a14f056c4ec0cd92c60502e70cd6aee848454edce1cfcfd63bcf1e052b1a594d9e2070d54b2f961bbb386f9737d266b8770f85a1c014ae6293cea55dfed188146615fdc9cda8ce90aaa7e6364332b695196ae63e7a40bb4760c4ce82c357bc9c5ad800b78c9c6afcc4820a1a8d585e57e2fab6eb450147a7bb6db6fecbf3c2b254e1e515694f777f647ed76073080f32a9c7b345358c4b7845e67b53b48a8c56bd60ec89336b01535259b90294b3eda36f2a3440508206ef99700926a0985154fbcc22b98b5ae4d33db0bc746fe0cc6211675c1bd2e874d02ca590a4115ef90389c2099789f64eaf8014ae28c6d2354adc2acf80943089142a32a06bf6c5eb37a643e5d7d6fdcc2687b5ab056d5ef1a41f69eec743c8c083de6d67ed4c5136431db6e52b7b03a9d5cc7fc504d47fe4168b90329b68cc81541dd3a736b5eb40faf0a60d101d66786611a0ddc3c75d602d532c40ca0447b570321ec5fd0184699bfb6d6ecdca82fc56a06b427d588a61f87e48a8b39279d88fd67c3fe4cd5018a2f623943f7b8a26cca2faf6c66881e74c0dfb1d62271ef27762b761ac4e0cad3c4e0ee2476bd765f4e805ee6592653f88ac7788b30c32bbec03b62006d625615e470bbd8e6a18b3740f0229701d484bea9a0e14fc7d8b0fa4832efa5f188fcc60b268de99d2c45e57ec959e927467d65bee27d6a1841b4edd0f8e90f89e05ca564d7fef195e515ae9529b70810adf887be7869de2e943c499e4316d2aacea76244a29c01cf37b115d1a1ef1636ea304e2182ebb914514917bb9ed7f9cbb92391a153305680a84e8a7ad8aa721373d48add96a476788d63e1dd5bd480f4712ac6a10e20c8b8030d3327cf5da6c2760b2ad91f9b237001ff80226f28f4127a824c768a6f601c34a6c1b73afa305fef5b815ea0377b8fd5388fc6679e15f3d3caf12c60a8880b58d2c024c832de78aa374bfa4d6e58e18805de5f4c7660b9516444d9e465109d5685a7672f7491226242b82786b49c6cac244a910907291be75cc64e02a8622aca95e796d45ce13a021873e7f280e600d12aca265b0b968c2438cdd5df2d5e5d4e6639f308ee9851907e45db09a0cf5e423e82d99bc78dd08e3eb8492b10b120fb4bcf8293f189675555f56dde3f9a956aaf2cd2d3ec07085f56dd753a592171575f79bf6ca5c346691486e3e531c14c8fcc28357e853507272c8d62db1706e4ea64f364471e97d2cc11696c58566e24b509ae3d51171405f0b868d783cd5da52aafc6c641c5799a8ac9cc442ef40eca174d2fd7be8249ca8e927955b48d6be551714c09d93fcc840242a0d51ba59f3e42cec32f21a22c3dcdeb6ee2b22b915084d3fa4fdf0e52bf507918b7cde08509bed06e60e456d6b2998f31c796d7344ce690b64075e23c9ad77b6780ddeb5e74be5b5d1649ef773d54ac08475e922291d0cd09aa9f404e397f15f06293af3023633489b9be7e9667069b89357b2c9f20045567093e19aa30258069c01d787f74a548bd5240d518ef161b298fae9e952bec4d946ed198641662e362d1017cab80d27ca2f6352dfecb16eecdc4f60da804f2b8a731680c8ef03cc8b922c1c0b9ab89cb8552070128abec12f6c6d87e3a770dcc2f438c2775e1207bc15a09f4b4711039bb1a4932ca0dc70c747b20be78dd8476a4941df4b3588865dee1132eb3bda062435d567fcc6d9d43920fd6cf483f8096497e1cb2c5a4356aceb86264734b61a9425873bf0df1bb597e728fb37fc3dc785336be6d74041e1d6a17bddc4883b7fc975bad4e22badfa3f247b71d9c7df7d5a80eb69441a982f554cc314dac8141068bc3e51ebc6b47c60b7ac0dfa00642cfd8b89083c65fd54d85e106e36cb353a732edb2235b2b03a0b6dcf23390ff5d9f6fbb7aec90bcfb1fc332c902b6c728c7cb1ba1793198a54ac8d349a49856c640df93b13a449153ff1e6e1db988ea07f6873cb39bc3cfb0c90fc43a15c3e80fa5b2f18614155594b4576c0a769778491d0daa1acecb7265b93eaaf5c7cacc5cd3840a8af2ccf5e64bf8aac6936cf1c8c30544f41ac327c8545af3a27ef7423f9040e68a9560d46fc6152d97046566ca2ad41925dfaac38f71d023e8eeb4adeec0dc5cb7fe2b1ddec56095c2d7d4167dc90f2ed55d0d02459461d82b1f2bbc62a112b0a975045898d0ac2f773501bec895449f37ced5fdfb312aab2c4377bbaf8d888307abf10cecc0d5196a01816fa42bb8c5a0d566a917f0b33de052f3268ed167025b617b4932c5b43042f4b87186493088ab099e09c375266af6c74d2565854aa077d2d1202c14808c5fb3b85f24b872f8407ec3a288f904a0306c9de1a8e04f47685030c563bc2890cec78f94c19fbf77549867e2fb84c70b5cd1800e39ca6fca4bb2fea55ab7ae2e69020951bc8ca9409c44f1e3883e1fb7b5dcaeadcbde88edc9e4d42172855dccd29b0f67cd3b0c240fa960fcafc8521379b4337f27933036781e0c14ffecfa8a04133292ef4ebec03b225a633626a2ca01a43ce7b6f77ae22c76297f8b67e8262c9460d873e98063132fda51e37b86d6c2f375a769d3cf01d17917892b9b42587d0a890d31bd444f895a08895cac334e3364f30909c178fec6d2c6661d5f862e3be5923fac59ff75c7639753e09eafd1ac2387df15f2a173a536d7fb5d4f2279c4f85664838b3e517dfecbb701371ba70ea5c4e030e6721607bc3d9214212e44849ad8f5e854d0381a22f22ee6152265a3632028b863b2016b573b69be169d120436bd03228da8cf25a14e404cc4689f1d84709d0371c298247139b720e6019ad02c32d3be49478fa507fce849298ad93550a77409e1f642fcab150a249dbaef05fd91537de9dfb62a6fc50a96516bf61164d4944a281d85991d5ed04631c190ef3b83ff556ba5a09a7aeb87ac6f589c517793bd20482e7441629f53c25099d64f126d4e221de0629d9f2bdf1230e5eee611610e6f95ffcc70d4d63b8d74c8d403b9b78dc484ab61d8032ff816268a91ff26668ecc4b7697d293061c3879e917dc8dd238973eec3b425d82a16ee89442222984a2c9b66f9236853d150ff33b7a1827d134feaaa4d6e00d5c4bed7aa1a499d6b91ed9b36a7ea7d7b7ae2b7aac6f8ce15ccef1d20b1cdb8ba4aec732b00377971950773cd5c84ba63454d2e1f6b3804f64c279471d4b881f7b46bc219ef43cf81b6ccfeef7b4642fdf79f064792ba54b10936953c012e72a75c6f54e41e7027fe27875fc370c08e45364d66f8cc9cc69ea9e1f450bea9db69b7017d1a622b6ae05897c77a9111699fae4968e3af7480516f3f2230eef3163956a5e520f3e135ab6eec58491637165dc79318b758ab32f0668611558e29a6ccddec3c22bc5340d3ed75bc6484c37116bf38b64556f1a9cf51e501a4f50d3eea66cbc3696cde71d067c82b5676bb2f4c6090ae880746972f60205d8258a5cb51317bbc5d598192b94ea5f415193003a8dde758972fe039b62fb70d1d097d44353485891c8141264a545ae9be9dc66ae6c0612e40958774d859037a18e78ce2d7c14625b2614de8eab3fe5b63ac2f9deaacca8051e28312fbb6d081399eda6bd1b8020a3482645919acd3c6acc6552f7b1238d9778e246880affaa65905d69bd4f7cd7af35a9f75fbe91d41b702f6e19ee9657e51406e382a37f05598784b58251cea36d2696caf8d4a48fec58a7114a78b98167834e3d06d286f802489cf12ebcd290433a7a3d791a3ab3f8506141004fa0de3985a501a15a903f9f35fb31330bc4d564434fd352a0702d61801d815698dee5dd6cd91d84cae1971381615c0075ca26e9e0e050001820102654f75818047e04aa0a95ff89a426e82ae5b027bd0ca2fec09a591bdf7de724b295392325709f7094709275bd6c2233db09b5cb8947efc288a65ce935d73f903f32d7f744417da27891e80b503d03ebc9f57a3b2fc79c13cb57dffa725fcc07c5eb9ff13fbe868947d6ae914d95337b57025c59cd4609c0bb7bfbd054415510b106ef8797d5e8d9ab95f043eb559d83e44602db94d36399aa8d1de35bab3922442096230f5e5bb8df93204822c41f2061f22569627be3fe498ee3ce40dfd1694452c208e131d9547122f2dd95757d55b56187b8b87d441da8fc7dc8248aef84616d241a1e7070fc9f2c350f4c9092b906383316a61628c31c658637eeab7f6566bc19b5096efac8ab51e38b6cc35e6a90ec78b0e181e3149ccb8f4b0a15fd772c10d3b18dbc154c75224d71b4f79bd699791d22ce38435b24b2ed35e586ee8ac17191bcc1d180b04926a0b574aef450e2fc62865658931d22014488e4f7f5497a7441f471f9fd6342aa4d5309f8faea313f2467096b99b245c7ae36977ef85e73fa1ffe019fe0ae1bb6a30a436b89f4ff1cf6f9fd2f2f35bece09a7d25f31b6ec3da7b45a27f103c3979897067c66e1e19a23737a21c72593edcf7030810f985beb2f2d1ea4ac76d59663b98e690b59a08db9b5883ed02bee89eb4fce4f293e8ceec8534cd7bc1c5d87ddcb68debbc4f077b6e18b7f65e91e8840b92fb615e2f1aa44f4dbbee23234343f3e3c72be6f5e1705bc88b21ca9f1a63f61173cf7dbebb50e711b637d88660dbe2e1951d9b3df1d1a3470673486f6aabb2fc94a237cef2d25e2cb71593d599466534d4be34aa07bd797a436fe80dbdb9add0cc27c4759be7f3755e2120b93f3413aa09fd6814f7db73a1b557839a0eefc57975b650a75ae954a85b711cb461c06f188d870e0d86b5979f3abcdebf79289e08f64233fdb60bcd84d09b9856904e7574b48ccc17368d7dbd42dfab837caff695efd5c5bc62b497fc3a48b821bdd1ec5f1db9ffb63ce57dc7356afbec2fabbb9850a8bb2befe5aeae8dcfd67df0f62dbb8f277e4a0b2146161ecf7ff0f677756d7c3ebb2de9b9724abf5a5d4808dbecc1317f3e2f3fdb7ff004dc9565489c6d2f3f4ffe70fff9ba98eef35cfe843c878790a199dc33597ec847eff31b0ee537c35d5a4be5296d65436335ea46a3e82ba4373924c9373448a3549ef2568dea6cc0fc241f84bdc54ff243b0c7dcc55fa2e5940e9065cf67f97eb3c31724f2157696dff096b3f4882c4292acaa76872f709cbcf17b30657c8fdd4c8565199f9b35978649ca0f0731c9f573ddd92062fbd48b519267f661b5416e92ecf3eb6684704358d185f6fd9907c366edeb6a425899fea8c9722646c9576191858c2e4c2c1824304af22c31e5f926797e31b2909dcd28c682a7364baf53048f4522b1aaf7a2e3d928c20dbd96b70abd550ccfc693589145bf47625558bec92bcf6b4516fd2e37bcaa46859dcea6135d3c0c3a29e74bce7252d21e48c9d9975272d9da9715165d6496fb422987a8303b59b8d8b66940b7db27e5640d6b2b3fbd723b76b56e3a55575d59b2d6fa12d5dbb94f5ae976f33669e61596fb5fd5a6fb66889935578337fad41aab83614d1f319d4cb3bc5a6b8da95ded60b9bfd6ee155970360df68c5e8cfeba41a452a5e290ec3872d865cde5a7d78b9f66683f99d674ca5b7d92efb299fd2b2e278937ad329bd13921e0e2899014cbfd61edc1add94b1cbd1799566b8521631cf759ef08d7da4f699c7d4b5a6575896175c95d65a65ab67df7f622db289637114ede69336db9f5531c26cba85f38bd185a964f82d0616c96df8d451646b861c8c6a6513d7238a5072324cb2fc5535a0bd9e4aea4cc035c3c1186c0723fb5c175b56ebcd4ee3d9f4e121d974e0f1fa04c87a6f3a3abe96a3a9bae99b1564a6596799d393eeff87e9a8b955eecbedb7cb0d739fd72e1723346f718638cf3f329cdfa8497e55123600ed3d23d2771a7f2dcaea55be942947c0276373a1bb1cb7131bac71863ac2df2bbacd8ed7e74e10c87c9d9b3ba1b2d234343f3a37f00d162b1fb7e9fbaa0b65cacb96831961b7635b11a9b7dcd9d874e7c5780fc60c5287d652dd6d5b062643a55659aa67f04a92b9fdfcabf555de5ae5ea726b2e8ef24d1296de59d6c9bda93582b4f7592e8537fcb348d6babae465be5ce8fdc9f7da1d692bbabe9b45017dc50eb6ab458eeaf1a47319dbed11018a7bfe506ee7452da034a2911282502a59452ca59fb5d8c963acc619456da4f3201e3a2ae6b90c34899f2983c0d41a638df4fbb3e7152e1469f524a29d5384e47a57065be9e0fa542a0d46195f6a435b3dae671a2c7f16f0c1c17e39c31c618bfb0df63a69efd537a762d3b3a27ac91a76c1c2633de8319717aa9345f3e49068d23cecdd9853bf20113e3cd34d83499c381e57eef6048a437519a6594524abf90f4254f9a5142e77c91753d48a4a7f467cda59fe2243c83e2ee0b8991e15ae49d576ed277661a6c2ddc912edc11ed03cbfda2af994cee992c26374c839d8f067bd471e5fe2cd68cc3914a780224d2871e33018532abb914c8dd4bf81191a922242f24307e0a8d5a0d76c8655d8665a626dcb90493e0951d25cf8157f9b61618c77124aeafa4c45482bfc4e37c48e2ea624858e6cc842709c76cc234df0f3f37a3181eb5f8a95b3d6af5a8d5a3d667345a99c0e4ee3781f1d1a892ef378931916994e9b30f117d48e2ea7cc034d8329b70cc530bd7e4fdf0b1f1538f7c48e2127d386ae50a028140a0cf4deeceb3bc4466131db94d60b94d5e914593b84870986cecdb6cc2591691b92598c475557e0a495cd984652ec132735a67c29e3b1f8ac874315d8f4ef6a435669e71420ae4ecab0aba971ae4b0aa000649e90b494f3f2491422bea3aa31649cc4a0e45643a356e2387223224aed10b2887ddcb4bd8b1119111d98c62b95f0b3b3c84ccb3fb4c669a544b9d8e601020f17a4cfbf99acb9f8bf6b998d219cee1bda42ef4c6fe403991017d7c0f57c5b96579b597f7248b9ce5275f71ff36145c776557b5d66659d6592c354dd3627cda831bb5b72b3be473e057af323b1d709fd7aae13002465b66388cf6d25c9d63bed763f6740d87a685ebbdc8e14919bf94b678e6ecafcb886eb7aaaaecb55de7c9255c30f40043eed7ba97ae47a33a60882ea29591a1a1f9f1c3c22861d5c5ea4a9fbaaa3c35fb24bfbb975b258e2a16d7ac6189457e92cf79f40657fbc985ebc5e0b2fc341f684f611ae5a3531c90d65c344df3a37f68ae06a2b9549acba512541ab6f9761667d93d6b38fad49aabc1ee62aecee5faa99b937acb9ad9b8719dc721690275af74cee98d0487c3e1703c4ec7e1381b47e3584ec699b6fb206cd062039639a9878339e9a45446a1053db8410b600133b7ca7aa7035cdf13f3afbbfc62ff87fef3399fd53fd96fddbf26c0d015b3872cfb9965b5566bb3cf0027294fb8324441d911b66821b2420e3f08d7cf3586211b861763368eb9464bc9f272a15c203f68643cef42a1335fbb06d2608eeae17207b74d8d0da4c3d036df379eea4a9fc35aee70fd9e710f4cb739a3de5ffc1cdef2f51495f195af567705ae38d85dcec2bda23175e5ab4db3c1d51557575c5d7175c5b58b96b2bf9de40a7bed5adc4c6efa1d43296d1f9ce3d2cc349f74e6b866528b6c652ccdfd217a1a4363e64b0937b4313a9a7b35ca9f9301833c10d18f4b23e3eeb03cb1af220b69821bda98181b939b9bb12c70c172bf96446e58e551619fd18ccb061f97ef2077f41cc41bfae3472ed628974e8d3ed26f69719b9a2033d163a2bf74aa13faf81dc319c940efc1dd4d070477365d4b57e3a7f6545d127d6a6fd542632393bbf331d3f578d18200a16950abe92e733e6dc609331536f28fc7f3790f9ee1ae7b3d4f6f703d9fe2d2233d5f9fb3ddecc28cd564373b4e0ed18be01ca3bf7814b37a15d1475af9ea5546a339a281196161dd185996fc34d54a4c9679b29ddedc36d9dd6c44cbe7bdd6e9cd18966a758305878e11ef47f0f578e6f55ee4108d6458f41cdcc921dacc14618da64f2f463ead09f6599ac7db62f43eba5f0f2777f00efbfe62edbd2291cf2f1cd1e4f697111c23ac91d608cb08cb13f92a2ce4f3edbda815a6b634181206d68d466d2cfedef7878421ba9819d1b48ccc086b8435c2aab01116acb680b06e66a562c1a1430bd7e3f91892a3e3657ff1946603e6460ccb0c8edc3a7277750192612d35893eb5a6929df794305379f4a9bfda841b7aac15966c6be5fe6de5a9ee39bf51c36283e3c675e4e6ee8bbfbd4e60dd9807138b715db0133c38f49707d76f191286ce33c28ada36f2baefc1f56fac51d6c5f3360cb9a3a7ca23ac307cb0cd17c7ecf1783c13f0577ddd9f5e8c2e7bb60f475856f3c1f558d185e73d1b9e1942c6789bdc7e5658fd2e7b3847f61df6989fe473d85f341c3a8cfd4290046f8330d9b4bb210bdd231bfddb7d1c2853e2721c68f6bc41e7e779736299354f56d86f366e3738b19cd229ed6d3772372829a594ba8affcfa71894b59990ac7dce841b7a60b0e8427b692d1e62e6d03df4f36f849315868b2742934deee7b20ccfe7dc43ef7864c41d834446fcf39a137b9ecbe6c4222273e21293c8ecb83a1d1c0a753a187fa1daa91e4c7aaeeb80dfc1dfd7e9601429be4ed7f27830c61e0fae4105ae9e6af2178b885c6c2a11b1968447cf7d3c28de834b4a3c1e7cc349894763dd147fb1c9742fc62100a67a2b89844d4c4824dc2207134bb22318e391110caac0d9483632f1230c7a6e742f56a1e25e8c220015b7ae4801781206411209ebb0035849b5c58fe0152b46300f035861ed0897948cf00d389464590d1fc22626219c028589fbf7206ce2394cdae14918050ad23f0967151494e42ad5c8007e04a74831f2f911dcc38b14756435bae147b8861a46213fc230506ab0231bc2e14358858a90e84338860e2ab250063a7910064150f720cc83004007b9480e2f824b4a4472782f825b04a0648a4c13a63781bfe76ae85c4522e52791f2a73ce95308806207953c32d2c3c8480fa8115401520ce0450fa3118cd108868b918b540d37a0c00885628442316c08d9c042050e3ac400817800817838e1a01300004f04c0834897345a456a0bab6d9e364ba598d24ca96696e4108016cd99628da2dee7c190d9849783f326b0c9aff8de66263aee994c26930993c96432f1fd26938f4699682698ac691b67eb98d0b637c598664c359dcfb4c2a4143395622693c96432994c2ed185c9e4d2286c32994c2653ecc50463aa31996272bb98eecb7c3d1edcc1270d062159319b76c198f84c2b4c484a22253904a0c58906107822001e4e0040050e3ac4b081450d37a0c070914a3180173da00a802226cbdf4125ffcd5759b6aeee45f9dc8bf2497dee278552712200948c44d28144d2810589850b30003be8504746781819e101002300b061458b01f04047a31b46a31b68c846349c28c901871b66a83d9fb4866a0aaf643d2de42d77f9cb4d6a4091c2b952ac51d4c47359473d18b6cbbc1c9c0761fcd68b21b3c9c46b919b1ce72db9c99914a4550d0654f2d128ac956072295602bd568a29cd946aa689cf845d558a79a55829567a29c54a2f2597e8a2e4a3142bc51a95e552eca50453aa29c54a31259746897c7f29e679993d1d1709a24156cca65d20139f0993844c6a4091e2342ac1e18613232b5a0c80071b48600076d061c5ba2afaa523cb17000a8f14eac584d6ba1acbe3b921c4e3b921c486104f880d2c4a509cdcd0b917877b7138714f00c0942200387048a41624528b93259d6830a9218716de487b3e355a472ae891584f1ba9aefaaab00caf5001769cab1a453b8e077aee761c0f86a7bb5e0ece8fb0c87bbc18327fcf7d3a8f07fa8f1743e610d00481bc25c85d3572d6c86f344ac455ae1abde62d77f9cb41263e11cf55aef295ab7ce52bd185df7095aa5159d65eb5f2d4e62b8d0a7dbfab660d9d04d1202b66330299f8443e3f8257a800494a24931a726871a2e19a520400871300f000c9f24b6e82acf48a45b74e74ae91aed5e9a010753a284434883a221a4e7c600a14218fa7068fa78652f5944e78858a1a446e7b3e69bdd5a4b1b457a8c1b4162b62526202d5d5e8395117f260c84ce23c09874c3c47ea46dee8495e8c5157f2b848324948bc25495657a4da2255964685ea2aabaefaaab06c043211aa2b8de5d5555d55565d5556b5115d54969ae5ba62d556855557b5d1a8913cdd474e1a0c42b262a411c84428e473454c4a4c4fe2c12b54d4503a75be17f92950f8c8f245349ca8a1a1f32a71f989e344608da2ed651198086c8ac044784417f3359746955891581681352acb30111e222d22319117920f45604a1f8ac48898984a3e2f924e771dfce97cbe864c7cb8c46a14253d67d29578306467e2e5e0bc078ffc7b3164063d87bbf7488fbd1832db68629a30e12d4d58f738937ab456dd5c1e0d47a34634cd95356de36cd6a3692f0da6b558d20834d2b5349627bbe6b2d6f22ddf1bd185864363b11a95658dd5d25c5a8bd458da8d46dd7b124483d2431a814644219d90890f7f7e8ab064f926170e92520b8a0fecf31610553e2f3fb5787b3e355abd82bc10eb69ee857cac1d09898070d73ad199f03ccfd1d09940d1d1e0e5e0fcc4f751a4e850789e4fc1a1e8c0d33c9dbce5c9caae35bbd7ec7434ea6a5b9daf6ddfc1ba8b550f69745db26b755c9d0eaf6b75adced5b53a174b74d1e9e8581ad5e95a5dab51596eb9ba97ec5a1dac63e95a99b59d20a68734ba2f309126246d42708a4ea40585b780a82202f393ebd481de7cae860ef460a8e86af072703ec39d57f1dc8a4e85377f8517436616d18669830dded2060bf39454e14c9a69558365d96b3c1ad5d136ad933da7b5951dd3f31b5ed9713bf53baecfcbebb83aaeceabe3eabc7044171d1e1d57c7d571bd3ab0ce8becb81a47a35cf665b6b57a60be383c325c9fdb0f2e9e00719ecdedadc5f69d3488d239486b5f24badb3765842f3d05c8f864d0cf3e2429f9f0de3dfdd0886cbfe27076bf6119db4bef05f7f9307f7b6dc3fe44748e118736c7c8227e273d073699d6ec529badecd0b6b731f5f9ed0b71c3fad5ad43be7cfbb58e86dd98f2b76f636abefd42f9f537807b737c350c37abbbd539ac882e2436620710da7b9f11de6b6fc4e739eea39f32ed39df7b3fac7cf454f747ec00827bff23b49fd9f7dbefb79f114770ef7f4596f8eec3cbe9bae73c03bae770fe88cf771f87019c0ff990ef08ef392ace87811ffc449ff3dd77f29c949318a3ffe28795cf881d618e95c480f649d517849fe80be127eec368a37d54e1be52f631807bed3b62c7119fe73e8d01da739ef31de1bda6691f06248ca31f5542a9ca54fbc0ce41becb4f224b8454da23e1cfcdd71e88d97d5401c29ff351257befa3ca0773f2663f1a6c960fbb95a9a7f3258fe77ebfa2cb8d1f997ec7d0d06f1e2e974c1b46fb2553cfedb4ab51f41b075551e1600fdf78b27da341fa29dd2c4f695fabfc449fda68906694da4fda34489f7e86658d192e7d1973fa92521a610dd27e3548df0bc3ed97f4e309fac9689b1c4dcc593d2f70b1532b3b3c25738ed987fe7efac9c8be1a4474a62fe7d759199b97d21bc6974e41f1a502e24744e7f832e427ea1bb188621be38d0f6ab065ad9fe84a9518df045c3c114a9696a26e336b35ab65298d0a6f23c0003a6e046b976b05667f7f39a8d3cfff66520126821874ea03d1a07c033428b3ce329a51084839a34f52020d4a21ec67597daeb11012981141fa0d90dd807e40837256dade8b5abbd24abb073428df53dee25d3850410ec17b61f50a0d2383851308782959db8007ac6e402008693b048190ee349e6678814c676431bfa9b74af4766850be88e58315d886820f320fe2ccf684194021ce74c679f7d1da948f6f801f806854c9c76f80a74c3e7e34c12bdb9b3c02f00e92373179db42396985b6256a714634d8cfbd7dfa9c0997bec486543fbaf7d16f27b6a7fbb0ef77e42a635083a5fbc188d9a05bcdd2ae46dd968ea5563a1714f87041012bf7f7eb76ba958dced22b7db2a6495f8832fa4294d649b7bccfc7f9ba6db43c25adb5b7d6f42a0337942af922552d5f3af9923955a3ec9763fbe63e221aecdfbe19f6edf743836d009bebad6fb6ac612be7043add3dfc1ade3cc339e324c7f89d788c31caef2ec0f4f075764f77f73939aadb1f4be9c100b7e715cd9911ace4f0b3f51953821cda7cc2290adac523879fed0dfcab737e61fdd8607d591fa3645fdf7aad35fb329bbda4f68b2f3b7673fefcec8c8d31d0356c3b12aa944e29cd28a52e3f73ea99cb2aa5378a7fe144f90e9fd222d1bdf44b89285206d9da992160410a3bdc180be223c75810976c438eb1203732f730641edd951d32fe7c6bdd538067ff0a34aaf37cc7b2932f4248cce8fdfc94e8627bfa619442139090e797d27df6f3c44ff154c753fc49caf1b569e796e3675f9e610d211a55aa3fc457aa1f8dd84a2cc7d84a8f2f07fdf9332ad0a8288146cd8f784613d1a81833c34ccc0c33797ef767727d8a248b5a24387725c66244c597b7ff4a558b8d1c8a64ff0bb8eef07d190b410ec11caf3c49c1d388bd2cdcf0c64fbb2b93d5004f711f6362623217e297fe279eea17dd4db39edcef7d1263147d7d1b53f369f4ec9b9a1589ea971d8c2e156f304a15ed4c153bcf464d00945d0850f68f4b88e51bc4de3f191f82d9439ba5183afd63a264ee29aff153bfada9016baa48e6a6f41a4fb98d24668bc7644d96dcef3b784b16eb383929ca0c51b2bbfbb43146aa20228150a5889231a6b68f4f6b226ac614494c957c7cfa23a6425c405e34086ca5c546482c7bc84b04619b6374215bfed6de2b12fd83212d6f81a93a44b8e6bad2211f4ea7bbfbe445823f339e51494449f6e6636f381dcf8b21caf3fbbc90107209c92ff4951511ea82fb21ad95908fe7dda708d34c2249929c539248242a493077136bd05d80fc781f279ccb86e88af0cc2012499264c8d7902c8b5e3b11f64c61dc5ed183737e2127c8cb06e993933e7bd3a0877c3c2f234343f3e347100f092229d07bf56288328923616288e4f9dcab3b3a279491495ab8228e0473365c0b09099704f70346935dc6d523bbbdd15a1aeb46a7aced5e12736c1a74121cc212d26ad03b319d189946cd7468bae7bc3ff7d2a81ef6c6ded81b7b636f425a319267541251490af9c8fea158e825d42304d3bd1aec7434e81bd789b0cca48eaa410fc178aab3527164af2c5e6d64d28727e0e8c3a7301f0ad3f180752f957f28fa0fc113bfac0ddf1587af2a14f354c7de2b8a4d95bdc9fe9c9b46c9f7e704e9d447874ccb344dffe81f219e92887e5e0dbabdd17464ff9056882b0447c82b0788f4028970963941b277afaaa37b35e89c9b069370ed0d48f49af782f4a4dfbc1794f4129370c8ea43582e4b2f455c080e59bd84acb287d868d063d097b9f49eff9ee2e09226e0ae4cfae9c11861996569f4a15874512a7d32e67f64f68c3e61888d909056f690176199db7b11f26a893452cc130752723173f3239164e9c3ee35eac44416fea1987fa91393fd45531bcdecb5d8a9bc5bd96814e7fd3b5677a351dd88bd0941f6c6066994c83be8fdb5d5e75d8bdae8b33cfa422244eef2d01792e4f92108842dbe1e2cc2beead3fc0e761607bb87bdd5e0fc0e3b4b83f339ec306f718fb934381b9c5f27fdbacf7a660930021e50185018402104e6b30f6be4ec0ba7a84f5a3428921f8a48deab7f5eb541ae18f4547414fd38041a06dfc1678790b9e5e7b9220b192f0486850a14065498c2145c1dbb61637321c97a4aead9f474406a3a1b6b35cd356ddba8dce826e50eb69798a32e61e5c1ddb29f9ff6d2a0f7c25758f3a470d3a8d0b76d756f5c96dc28b7552abdcbe1f16c1ee9799eccb46dcb7ec3331cc6f33a957b26d7791e49e7949452cf966959b6791d373777996976b5e58a73789e6290c5d392dbcb2d0a33ab74b359a59bcdb4cee370b7c3c9bcda516ed3ecccb0c6e9326cb3ec7419ceb2acf4a492e19a2bcee14f5dfac8a14671dcae66a5539c96e6703672df1320b8aad05f5d6cab2a2d47751d3419c42ee6934accc91cdcbd3cce6737648ce374d2199896d84bffcce1f4496bc7661ded75733669ed625987e5c9294df2e8609dce06c84d102da6bdc0786a739606731b127b309d1e1d98ce4b64e19d4b17ebb02ae5512787b7efb0549195aaba58f75283a38b713eda4aa77cd5a77e1b366edc08a7bfaa0a77b2875776d0ecb1b7c47004f58990597ea03982ebcf29c18d4ac0627254020693398ed3450f468986ccdb1731b3a7d1c9d957c4cca0a7d1c9a0cf7b0ed3f01200fa8ae03c05dccf3ecff3e1f3de174a7a22081c33e7751de6481c521f4ee42e36c8c19f6f704583fe9f4f86870899ef078150e772e66abfba742ec6ca291da066f9334f99c55ca3f7317a5ef63da0c1fad2c6ccc3f9a8040d6e72ad35ac9295ebd750dec8f5ebcb99fa55d4f90ac243c85a5f084f89dc469483a8f5353c7f906f4fd44f46c33a8dc1c045b9ba51891d2d797bad9ffbee51d63ef464a9a1f8499328de89240a4a74d159fb07342a66ed25d0287fed05a0bda6bda6691fc626644dd3b4150d6a2ff14983daa368da5b8dd3e4f779db24163183f46d8b36f404dbf6dcf61cd7714e06f7db87a06ee6b86d1bf79bf40e903d7dd0fe4dadece0b6f79a2c7b342a4b40fff64dfa576e5f38a5176ad27e34aaad2d30c9f4a361227316c44ce73d98ac7dd6a363ec3819de77be71e8499bdcdfe9fcf4bef3d13bc95efb18042cd708c858ae3674182c837efd8b43eaf9206510cb9d80fe3abd03d0af9e8f0d7abe9024d32fcc29eee11c9cef64ff13e08a93567dbe9feb87767a09a85fa9bee7ebfe5a5b44a78369f8124be4fad31d46a6a651adb2d1c2014be2c5c7ccfc316f1ab5d2a8cefe1c07db771fbeac7958662e46e046257eb0caf4b5246e72d79d903d5a783eb84b086ad09f7efed2a06f1e870437f4987deabdd8be6292bcc17ff344aadb39d43ab7a7000c64edfd650b3b6bbf793e745f11727a3e74b2970ae8cf68c84c3f95c3f286a093e947a393e95b2cb3e7c5b89986b481f199869cd94236ebd93abb619941d6ca8f771b96d95699430d0319c8f6b9b0b39f21dbef50c44b00b514fb124be40cb70672f462b42ad325b2f685f43d05f40f32c7e9601020d38f0601328d2e7b7228d0b9889ae9c71ae54f599c8790c071f29e34d84ff106e8db975184e71c16a01ff30ff49b47a8729d1ba8a18ab958ab150d6440a582440d95fee29c8d04e703b7bfbbe59c9ea374778e0ab878229c368da28dc21dcbf18796c3f8a3f702df9f9ce6717a6e83ddfd9a145cfcf76b70734a0f468dfb29de4288a96f24784aee633c9368b0a4a57eb36504dd73b14602338490f15412b51e1e1fa9928ed54e08f37b7ed3d82021cf26e4f91fb614f29cd51b22f42fb6c7383628717d0f8e21bfc290f7ab87801a597ecc3797dcef4483259fd25c166556f2b3c3fdd2b17611c1ed9efb50ae5a255f8c9eaec1ee3f7a6e83defb7708cb3c5b8d6a9646f94bc774491447ce972dc9225b3c3794c8812347254ee0e3e6a8c4095cb24bf6974278e1c8fee291fd4b2f01a903f7f3431911857fdad4f7e17521f231a6b278922ff2187b8cf106199a64f9df88ac01e795f5dd7f6a1cd7d5eaf90e875d125daca525ec58774df790699a86691fdc5f2f896f86e0b65c996b3ad7f3267f5bde2f6266f9343a597e617f454818ddc347a3aa093ff771d101372a418398ec7f9fbb5347839f386179ce979fe6c7f90ac1f57e7b4e0bf7a9efe74f9819d3a8cecf9f338d726954bf8f3ca74c7ee9cc793eb365b6cc24662c46674fa98899efd3e8e4fbfdfd8a90597ee17d895966082e9046fdcff71b4f99fcc84bc34a1e7fad3cffc393e5a7f95c6783717f86e08671be8890d95f46f744c83c75cc97a71af6c506679edf2eb35b442d77b6cc9796d9d2e293b6a49cd20166c63f33fec22332f78fa7099e2b7d9aaf1cfa50e2f6d1e07cd903e6a6d8e4be69e3d697a527e15066d2772c165dc81c4bf68a48b0b4d1e0e446d9b5ec248fb976923be62909f869be8d7d9f5c35383d5d839c5f2121baa0216de4c71ad55201fef263edd2a897e822fae02f8bf0784538167639ec586c88cc867ce1fd7c0d7840a3fc513a9c98bbede7b798dcadd4b31d8e996a9aa6bdc5e1ac91b3ac54bf9bf3b4294d1424f0d3f4cea9c88ae8476361ec91e7f68527d985f2b9874e49973e4d196b70a2a074fdc2eb747e9792c2f9c09d5946bd17291eb83387d2e51f7be4d9de0bf9f5d03de7e4d0904be4d20168a62197e861bec4c1f1c0952fe9b238e68752e5ff614c4595e9a2042b4f9549129e481830b8d8bb433c490e35c0fc1e1a15a9bc55fbb49b7df3e47395ae044f79603e1274d2f79305eff440f648d4cf2af580480589f9f4f3805541020331e66506247cd03ce10c3b5490d8d13f3febb90dbaf5740dfad72f6f9c3fc8d86854a95f7ec73c1b159550814b961f65a3624ca5ca3fc8d86830e6c98a37b93f1133dcd81fa703170c62f6c084569f62a6b80726b81a8cd9e2f694107e9a4f7f86609e2f12dd3b5be4b9435b974fbb2bb7e6657ef685af442c56bf10cc1c0edc30dad08fd9e531d24615b32cf32e82f273ccff7b9fa4a30267032b62cc00dfb4a9f5ee24d8d8802b66052ee0feff44a7381f391808ef850684770d68d476b38f9e5d4f65334eb84d933ceeb6795f8723a577e527e50bab65efdb966559e6892afd1494195c574b4a835045f345de7765c70c65487f7eb67b4abfdb60dbbfbd022eda1978400343e8704bf0efeef6eefe468944d692f41782f2c36c4e77cf669df32bf59fddfd51324497de0b10dc5074c2a94fcd66d64f9ed1d99cfe0a822b2a89292d8e226a4e8107388c9065d7c594880349faa2d82892f985a015d92ccb70b75624f2b79fc87186493efb48668099fe7c16dc7045a69ffcf98d920f4a51a55346cae94ff4b6b91878e63235557ab2aaf085172e9e08e3cc8927c30dff2407a5df756f891b9e64ef0c17c5533be2cb3ff96ccef93d3bf75f115c99670efa33fb8a65b4adb5da1a39a3a04ed13fd127795de437f77378d237682520caff138d2a1d80f6d73518733f66094ae9938ed90e38f95e8c99e547ae946535c618638c31c698550a449c99933d34183f477f8aa7fa3bf1538c31c6287a6ba56b0c3d230b7a019b8516b5ab0a4974849934eda001da8abc6970e423c418ae093d68c598f913c76c1b0d4d5693d54426b02213583504ae1a02217858019f4796d9b6105b9e000f2bb1ecdf320644c70a1d2e2884122d961553841b35f304661676a872260496fd5062348a7ff69d9c440edb5a4f501a3ce9df21b39f490f013588706badb5b67b90823abd20d77ad6a2c1ec433939f194548959f50329f895513a27ace195e1a674f40e10761fe650a9741f06547608312336a1036650e52dcb88f01c0b70b7f7edb70f89f0eccfbaddcd1959b8f742c2988f65f867cf39f6c87d251fe2db8f613f7ea17f115f23a7744683085fc62782e65af28f2a2dfad42763b827ef4a410e03a67fa8046d37463decd4cc080000006315000020100c888462a15098c56126cd1d14800c8aa64e625a2289410ec3206508320800830021000066044468060d00790af094653fcd02aa4d45416640ffaa35353da3b61f598250776a7af7474aa6f3198119e297ea246642bab19b5dd56939afb922f24031db0e7e3e63e778130d7ba8fa6f1c8da32da1927e4a4367c7c2406f3a64cabdae21ffb735d0d77f5d825f19370ed7e1bb694205cc831256de7e9f5e04766a17065076ba61d2d6e40d188d3a76a18423e7d11cdd255db54dfaf856f01eb49c31962a81e90f3816c0af0b96227cd057c8ca3ba53d7a8d321d0d1dd3454895db2803b31f4b4f6f06adbd26acfb01c48bbd2d8d971a27b5a90c584202ccf9671a11609a6b79c00f2db1f356683dae77c56e6c2e13fc87f9d643a08fa99507cde6aaac4f9ce618cb18ad21332ba6d5634d511acdfa48b5aef5c0d09f5266745a6c3423a15ded2d9dabcd64831bc9012cf2e9d3687d24ab40cee2c8e9a7755f0f1b3e2569f732de74e1c760e42c70f3ce08cbfd632d396141f41c86eadd639a302d1256f229645d80b1c3ffe3baf7323159e401cf1c541e7b70a4be6b58c766a1288f8834e45dd43e57fa68908e11a4caecb3a593bdf3f485f56c9ebe03baeef1a238cc6d58d3e39e68196b739b01a27745bc79b97ada34f1f314690f27667e7fdf2c7fb4ad80c9298d4eb4507d747d2f25d47dc800a962bc1e7b7f77ba104b240de8aa7cf4b30d511d7cfe31fd841035b72c3dcedf396f23ec2bbb09bb46c2fde5f22aa29084dabeee1ca19fc591f6a3df5d186e392a30033cb891f59d9d03a6ddd0ac891acc498da4a233d9cd16f4bf444bb7b3a5a956965c12dd05175afe7316ee860fff82bb7ebcbacbc78d3895893d2be45316735b5e4187b7c533b1b6494f3e0d133409ffe7a90a8ab91d81bb3f9b95e366fa5e4be193d1db060640da45bc9f99b78c078d56570fc3c70586ee669d8db88e8c37e9b0614324f636cb28131704c407302b47f188e5dbdd10dfad9e01f6bbe1b7ee03dc6c2c1745490c07cca6de0ef8d2159fd0eaf0b714e04cfa5a862c3403c661fd8dac69098cbdba049588b5ac88b0a4267d506c27a29aba099b12f19393a076919e9d55d864079eeb55fdb8ff871bafe50d139ec1c3042719042f28b24180af2e8758796b20e3c06ad643cf42bf19ab90185aa3061ebb5803078d991fa6a98ec84a58737141a6349e4e0991e5450470bafaf9bac39bdd809e2bddf34be418693de38078a28b58b8e1908e418473c9dd932f7118139eefa73b88866f07c3074fcfb00c6d274f338f68f0a56db28089dfffc13e22ea76875939a343fa3db8939f787a4b7ac869eb32b27014db7ed4e0734a4532488ae2c5532ae72e147cca1d48e2f563534bd16ac3fe3cc7f6db632a10dd74484e41a16aea713eacc1d7e2fdcbd5a1cc18222f47cae62c4c966d0d21bcb46b526b20907fdd4a9f0b2229cb8711f1623178474280400c034cf50da28e7e52dbef4ff013bb47234b2228dda972e78a739855e1e986fd3e4944c4d5912978dcadeb8629ce7f222a518b090abd8d000c7e8d9a9aae58fef4f01fceabffaf65b00f886484366637568da66599b364b9bb8d3614af31b69a555a0cbb6b68a52bff47424b4d9b0f3e7d168c7eaa82b6495256ce69cfc46e3f58ff50a1a570ac6cfb9ce10d2aa4d5e8238393e4582a710fa18fc5bf4ff96c7d5dda61cb9002d99d1f1936ac595c4464607ec3d48dc931c40eed287613bf468c33e96162808bfafb155910cc81cac9fe087e676c3ffa3c258010dbbef06e83b3feac73f4c097670ea33ee2e5d732b15e6362348cded011438b35a2180cb3de65d1fa65555a79f9245d7f63360bfd2d787ea07c2183d41f4d1496c991b4c1cae74545aba1dbd49f660dd5dcd7eb706b42c9c35b1970845834c6c1487980bb6c492866c61a977b73c08231153b2554d415007a9af57749432367755350105e19e40c8bb1b5b920e8ced15658ddc5d561e37b94c3d64f3268d4018f15ebc809f1b0f425270eb69508a9ae9e9b81905de5501f9741e10c13fe0cc05389a036cc2c3fe4f62e0fc6725ca9d479a8b38cf8e17d1a40e8f372d3064f444454ec48fd57c5c449af33dfc552cc290e32ef31b90ae21e088a458ecc2efd570a5e843ac2a7380f240c1cafe60125c39345439e9cb610db4aa8b94f60eb15d4a2268d53eef9bf33f859124d6c28fc7d0444ab4fc4c2cfad816e0e319ecd7ba4ee58e7b895c4b52fc1c3cf90cc6b56accd3d4e3e3e01fb4240d445c13366c7e19f2221fd5001457cd0c200c0cf7fd0141c5121f5a8279d1eb4bc553323316de3ad854ba9dd8967c0f9d3227024e93a5de99c4826bdd158197fdf9b9b0e1e1c02408943cfa87a7d192ad6c83ed11e02eea24b51abbf3a629d02409790c34a8fa8950018b434b00d10af1f6cb90423468add4e797261a49a86f8d08270b7f58432ba6b411860bb838d6f315cb46c8c6f5d089ab64846f89841c8eb1457b9d8bfd3c78fa1cc71c03aa170bbbd5eec303c376ee2583f9966a8cc8ea0323a5d6695f533816bb25324ac498fae19fb10139c57367d0cfded5ba193acc2f19a08dfdac038ee8203a9bf80c7014b9addaa23c6c004142f4e8f47b25e56d131927bf389b8896af60c1fecd5094e0bc2a342585a34e29d62cbf3483cfdf250c9d589c2162508d93d864747c52a12384bb53e3452dae484b6b6e5d29c0ee347396558cf83b8698fbf7331752444d817407ab3c00d45edcf4f03ebe613b77178f6bf4022ef5be0164a1f1fc6e1d6b2cbae09c38af525cc01654c70de7c0f2bffc815286196a22c297ed6add30cf4027eb4f24abc8f37219ba38ccab0ebb9af9bc40664618efb1cc90309697e8429b1b2baa06e443a247c6b0818d9c94fac7f599df86589f06fc1802a1fbfd240a4e81d654fe060a14271c63737cf5033baa48e3861ef298ced16035eb73d407c529a88cc251c51c40cf8e083ffe74144d5deb5b0bd5b32fb4364dd86283b22b8bc92b8f307e35515bf0b4a140d01cd1df0f9c397f09783fa01c913e117206a05039bc869e3c6c7db6c7e2727a03f2ad81d702582ed0bcdb092fef53cd05b0fbcce12d1bddc7346d74e0351bb49b4d2de7fdc1e2e3f99826c33e58780a2cd33562df3a4ca9eb746230041a47a272e81c083620594181b95410d58548f41050ba8c9c5f6e3ef6b4b100ec82b697223bdd7cf7ef7340d5d610360dd5e0154cfd8658f467aa9a4402b3ae265fde450518b3feceff14b82c942ce111e10d5bb68711a6d6200c18322f50f99963abee3a00fa160148b07122087a2afa01e0be41bf93c17759f7c43becc8a7f48fcf665bf21ae0ee1e2bfbb04cd77f48459d938cb154f29d4d305a871d7bd940d1e4a2bba1cfba221925f52b23def4985f6a4b86b3387256b7fb10281c99d76062206d409122d2d1d8cc81d4655155a0ba4821f68405d0b9511f5bbb4a3ad651f7decf472929d1222d21f9b90d9b6d0104fdb4892fea555d06342013975464e20840df5f7bd8e81ac185292eea951c5cc206971ee553a319927d9b29b35dcae9cc7145f075f77648675336a7f622d94e13f88bf3fa730c72d1a38fd742d319739c235fd596f24ac670132d681456da63f5735d272ecbb21d74dbd9faad6a4fa195a37daa1c1b4021ddfc304740a293f281e2a1710713171715b4168a3982607c989c1a44cb67deaa7b9ea948d3c9a21f963b3be27c6fcb4df4621ca1c53ee1197e6affee3845a2e503d51686f503b3d70a3e4fa0d1ce40b61d8a577b60db441a08b0b1f12afd41513b0393b74df3725b039a5ea78c50e0cbecc9086fbfed93d294b0502e402becb366c4a6bdb60399f9fe1c86a9ac0a5a799840a3433a9b280a72f541b595c3df6e4fe84649e93c8e796434b263652a5d9a7f225791c6a4dffd5d3771b3cb7494f46836486e75f2ea7501a8eb68b19e037a103a30a8137f624bd290a205490a32750c537ed4a09cf39c443baa7e4c3fe0d3e833c6069dd8c1f4b98d9c08e0fa28c489fb69cd2762048ec9c9f008acc97a56fe443760dc68b5469ae86ab597be89bda65f945ec9df628472450e0e6de91376f992c419870538ddc8a001d60fa79a06f3bd0cc4da0e88436a885656e4d8e280b795ace704f3a82d00b92a574ed306905c91a1eb6cf4814c5a290f3d3683f351ead3c393955483e4f822d2e13e3eec7269af2effbfffe1f2511e8daabd43d0236f0767b53396adfd8a08200fc346e5e1982f6554ba4f2e14434fe55991a41a8e9be14ea1a82790d42942ff307331b528cb66701c1696a8b6bfb111c5d99eebe28185f22a7368eddd486eb216798ff72ca2e368080be4c18ab624f380550588789678632ce070094d5201da4a5d65baac9958deaffb297141c53ff771b08cf8d978d6f5f534ca4226213649d1bf4621360abb685066b8e17c9afac430be0bf4f5393ebb8117788b988192b91fb290cff3628ae9e08e0f3521cde3a0134fce0dffc9297a9b938022ade394f7cd2dc6920f4d1e3bc47d11d6beec6c77d7b5ef3819b57272d30eab5a588cb65b19782d84ea8cf486b3390968fd7cc55bf048cb0d09ba184deafd15fba77b0a482cb74dc4477b66914d4ddf0889739d9e9c38fb6b5d992083e0ca6ffeb05a7826403e800bd47156c3f25b5e9cacfe1724ca70f150478953a02efaa272bf1384ea991c3e2327f35812226931686f126f840bfc6a6e53b3ec549ff81dead0384b90783bb58ba2452df357eaf0e4dbb7716c375a981dbe1abce6cb19970e79a4b99eda643e80b1d2e55fb757e7ca3ddd634376e2478199671d180b1554a89e428aaf1da9598a83fe4cd3322b6d1d5c86b6ed5b43a4e29293458e4078db440cd97994eebb7d607d75279ae11760bd253e39054adacef3e4ea0adb71137543d92a410ddac7343d936e9ddf04942ab970d6d46b090144d225eb1164e7ab70118960c01a3aaefe7958ec01c9b9b28684ebd2a36e2025750fc4da6af63976286b75ea416db5722017f5b9ef449839e0ea2f72bdbc26e6e840406b6d8dd71744f807001605296fb97e28af279e7350d61894a7041d3c07965738aa89b17af8771fc38359dc49c8710120db35678a33fae7abe58453ab82775cbeec396e13ad5e1b6b84b92453cabc3395d2449994472589acda7ee83152a980178aa449b950f1271832d25ab7d83018eb19cfe6b05af1a6073b63c728abe68a47f027b00879462733fc180ca702085f33894cb8e50baf2e47355a72792e9e31690774d0e91a03b75c8a4f0a846af4b1ff0bdea5ab2299b401e8302aca5a3b8ad258976b9a38ee4a6bf18892b793a39a09abf92b0664c2847660e37efba2c8378e4d33d0b09e5b891c6b1de3a4acdcb70193dac9a5578cb91424d810ffe6408c53f6cb53d407c660b4fc13ac4f2d26b3451f6d373035bb3045c4bd1f54286ccb732409d0ba9d9db64e23ecc53cb3402e59c01a713c9c951e93a7c9c93a5f1647f96c865fad20a277d432a019bb2502363861514222620688db552f8e6114d8c1389a5b893c5345ed4a87b7718d478a60849ba69f0773d6c1e1ea763bf4d452f4b056522d69c1280bfcafa821e7096055b8125260a8a3e69b0692faeb5940e8e7eff48554f2731f21d03c1be59d90672e356998866b0dfb1fa18e2a1e89a268b736202ded4a885cf6817154c48f38806b5a815e5ac2298cdc80951044016e810a20b45dcdf5f2b0973ca199aa05f216c4797a66c3a6ee96024b4e769a4fa21bfb295eaaf50b6d712fb7c5e7820a88cc7276bc1f3463dcb5ff46037bcfdf8a69d9694284363ad4b61b7eaa84ef94bca96dff99701adadac3acc36d7a85dbdcb87e996cb25425daf0d9500e0f550b901b5452605f1bd82964bf75212c37b12871250db85504bf54cf94b37e905d8deaaed8337638ff45dee746cc2e06b930284d386a950844804947221b410dec0e5d57c1d4309fb578512a6a435ae65a4984277aab3ea6d1398a897aeef5565a2abb96f4de783c000a84098b3307314ce2a7367f3701ed8bbf0d40d98d62d1c57d7874ebcd8d3cb251a5598aa82f37730ad0a56ea242fac84dec4173ef751f3685888454466064a467220c97790aa6ae74f8fbaf1d5599b14f6d9734bd7a4ca447de4af7db51a6685597b4cb8513eb1f92da8357cf454afb32b23743ad7a207fc4df31f4b4ba0ebc57b4e84708621fdf72715adb90f64e8b333a30c0f32850b76d28df14af6be8526421c31784268c952f1a2886f69170f2715d1bbcae896587580d1163874f841eba3375bcc091d11af9135d74d1c4e9931873609c239bc947caad67ea3ceb916dfb43e5287c7fb48f4449d8c257f9235abc5450c74fa2bf0a779cbf875b61808c50509999dbe23c3ef53b2c1088d09d1b3f2a4da73afa50f3264f0d062618078c95f08dd7cd3dc232627b0e0236d8bad897da64d74c7634a40332b99f2597fe977e52b206ec632ca35b52889c5428cb2dc75add8dfaa7c6a9b29515990c4faacb57c8491ad77cd45fa9116b9a9a78fb346cec2e75d1384d6e6108f703937416e181d8dd3350478918871a4ee849f1c94bf06597673be6ccfb15b749c7018e3ecad4758d0fe616826adb12aa043d30374ea88d6bba4556babafde6beeb8420a5c19c27f92b0121b0c5f990c8487c60158dc8a8f85044979a6a21b6f4b0b25d8f79547cb6f127a2c4f2994ebbc6abb3da9e9903c71330cb5cf92a046bbb83d143535d0def2bc3099f1f608a23f6fe906d5f6b3040a38ede52720f1a8049a4587890bc5504b0c8d85c104d6dec42f47e32c3c3672840acaa6d3f64f5f5fc53f93bc5277e02c2c0f573be02761ac51922fbd2be3758a6359c5b6023e51703f5bd393d407d309ed135c4541361693761002542ff77803f16c6389c55f6639f6f22bd72c9ba89aaa2e950a6ebb6ce31cea21f982b8e2e3ef8b7de35842b995732dcf1d900e5624608ab840ee6b9c4fff00f0c476cf0ba97cdf3415295470879f9073617db7e69cd19d714e8b561f43af08027c92afa6de12d8ccb0028e6aacd2632b18842edac5a852e0ecc2299a045a48cd3097e1cd7cfa4b1e00a8acbac86ef62f57f984e35e1e3e431b64f5653ac231ddd89b3969a11722314108dff1c2a7e196fb6ad8ed52fdfcb9254d7243899d1346503a2bd2e4c63266ea33efa2584e0d998bbcb79dd9ec669d09b6333bb82c0231927a55f1e3fc82365acb2dd23900f8baa0ab8c3b9782fd70c6ea79b6b0e64f264caf8c2602b35b267aae8fd2ced1845360ef0846be55e6fa975b363d21a02eae3ee1fa7733a5446863d085010d3a7c62176b5b3e79c6100928fac48fa4507032e3cf24bf209cb33a07db9a80631064b44f76b38a15bbf895086b33c4616b4323659f3b3143e2387eab98e5775a84460c940855b7cc99dfd0e3f1d5ddf671fe9c273cb710c1835fa2bc859e71087c41feadd0935d902f8fc0bd3e1fa01d3b73b6a6bbabf0374ba3f0223dc3c4580130c4692ab31354723342645b3afa804029ee112d44be6916441b33e6b5d06c5c2a22d0099904d823d654222f0ee0ac0172e72ad59075320fb1cfff1aba616ef0afa16144a6728837f048c9b64bc62b2da31236c6afef1189b8f683f66e632fffcd2c257d9601030845810bb9beee174da1795c9c182ed4a4f9f555496798a08f7cffc8d63d2d71a39367a2513d3f14ef75c1f3e6bb2b8f59431fe8f4aa37ebdd4794d09cb01e6cc9df831cab850c4d4b78d4a24cdad4886a896f175e1d46ff06bf99b893c3f292e492436f8dc7bff60ff2f507d485a18909a74b5b83ecf97789ab1f752a576f4a679820b4397281b4e1a44d7eb2ac1eee070769eb2a512c7508cf4733bec7b46638ae79e58df965f310c8c3d07a48d44bcd3af815b2f99fc490c928cda43afa54b8b26fd7b0bcfb17c185a68c2068138e5590bfa5786d84abdfb908cc9dcd6f9c3973fc02ef4af7c8b91359eeef400c4707a90d8502737eee0eddd9d7e80bcf3e06ebd21a91d5c986a015ab352ea7726997a1a161778b229beaed53fd966e2bf7ba6b354c1741f7a788a0a526022c0782b3c6e5b26045da44bbc6615485b9b73b03d88f8c54d2d6e6a4ba81b269646e12ba4594ac01e2f7cf293a1cf4aaf94cd9b9172be1bd8cb045c521d2502b17d21f70bc7a75fb4dd8c23032f1d8dfc2ef7e7e07b020544a734f15894c8fb28c3a9e5b0a1f6271f3f34e3aa05a3d08af0a18853b8d1e279ea544442a820465dff474c67a37f82e61b399ac68a42e89748f530e3ac22f8504f4883528f723052c2a9d9a5a30352e83e810c9984acce5c14d51175477699a36f52abfbb9c13691d45423fc6c718e9fc7717957a67ff97edd86fca6d5c258a98b56bfdf2bb71e483e270448e862dd51fd4045cb291853a2e1fa8772e706866677a4c8a8700636e06ee81735bb54e9710fe994f4190187b4927fe5329f64f88d466bfb07b8215dfb75934fb9f9a7217672773fff0aedf496e0e509fe46b99d604b51538c934302f092bca4106e7af95fad3d6b9c6374c957a7808d18b53ddb2a891f70dfcfbd18d7075fd65b707cef0f2378e4433a813b078d09969d624aa18d17df604fbbf039dbc5dd1fc048eda9ede4998da793da4dd734d9c0723c8cb5afae9bd403c5263312984275894889024ff675764ac8509e2d23f761adcb561edc392ac210e0608bcd33ac9712cb48465d8d9a01c70c74c1f9af5291ba6d8d681d68abcf00fead68b30a130416302bbc0b27529607ceaabcf3aeffbb0c5e6116bacc683e1c82360698539c32813b0ae2c01cba98c9caf4b41ee79c94d393be712a68353120a4a84cd1b9ba29e087a4db9d4b0ac06dd61a5ca5817434fbe40ec9604c261f051498f5b59b3da95d4c200afd84c1ef6b9fd7bc3bd43b382833ab48391783ded13e0da563d9070e63a8e6587322576c89632a8ae6e5b92e9be80744b554288c914110f71cb485799b9383ff152ec30278eb60178ee700a920f8a9b67d45932cd16b272047e5b31a45d4bf5008cce8d2c504860c41978baf545a720f61151559d954bbbac92a4e61c77a9f7ea7d44c8e57c30b2e9ee2c0bb5e0f38c244c7d16cca6fb875c9e01c3230ad08673c03359bbeb8631e3277ae39273ebc752b76ea763c1968a10ed9f631040477e26999d71b8d830f25a095a5bf4251075fa06415613a295a00064c0800b6c9ba8794cad84520421b15282708529715586cad12d3e726f9f50a02fa870dcfef97944a035a71657b330613277363c4e4d17d5a23021c6c2a3d07ea5e5e6426b25c63ac2e4f55e8c3514f321e94030b01b8b3f839ca0eb6ce7cb15689a1df64d56db0fff54f03f1630e699e4eaffe013c8c870dd6b6230b414122e0684c2563d05dd7726160e91a94311cbc05a66ac76a719cbcb80095dae950ec1bdb8ea141f55d6a794bb914708eedf60c6fe6b6785941b41ae3978e4b1dba65aadca6cc0d99645af64f5df9bfd380e0b6ee310ada444d100550b6f66b122637ccfc24c7ff3f966cf6809a5874d88bb18dd0f431538a0254a96b953699ec4aaead20a1eb2fc105db5c4b45c7dba0078158b8c86f68c76b48b033208f757883314475c2f7ec698f1da42ae971b10818ae2ecb8c11dbe0a9437fad58c33909b666d249841fb1032a0f267049e1f7bbe0aa61ae0c76fb0ba66c817af18e2e1b1173e0a939aa16c808b4f9c7dcba98b3210ef8a469cbffeb99034c3eee78ab1095b178ae7c7244d654a20df2cc67558cd2c98c925cfef916c8570305486d8ebeb130e05345e22a8df39cb1aa6f71124bfc51ab8700cc9d0b06926072abce076c85ebb801f28042d6e65f78a1eb5804d4a6312fc40f7e5705f9bc3bc24d6a34381b7cd045326eb3083c87023f2d625be0b397898ac023f319582c0a5b225589f30d82f804aa7671db0bf0488bb847248686869c49bb56f681d14b3877d9cec3bfe6c3e4de77286cfca81897d70c3c4764dc0f2c3853ea7f17fbf4ee909c1a5ae89f590eae3c6155ab711e2cc038e3c2772a7aa42818a7c10c9557d6b4161a1aca4bc3841fa41299906fdff93f09cdd4ba0b3328ea2a17874999260a718f80f71ecb9b7c7ab478e8ee8b2bc097b44e72e1fa1919e298bad33099304aad1e064e2a3cbdf4b32c3938ceee5e6692173fc01309504d0d173e51a1d9a206d4f616ef6025729dd03aa0fbc7a3235cd0df9f51871f4a6a487a083ecb43e4f4aa62d790303ed325f24383d41897c5ac47db20fb5a3a25f92c2b0f1ecdfc94347d485add943a2d0f105e28ad5c510c816d4196a6d81bd227f0b76e23e3f0f6e461099668fae3bd778f05d2bea0985bda0bb8ce961780e7062c8b22d413c75da6df0fb9c3ee2acbc3bec1b4dbf667c6551de0d1fc3f3aa718cf2945aa98fb94bc5289773573d15a384c585a6fc608cadefe41e068cccf5d48d4ad1f0ce3bc4a5e508d5ccb6d4251d50ce923f8d89764ef28914b5e3d0701cc85747ae07054d8e62f9bb7a588fc1bd6170df400b7448e54fe85a1429ac6a5246e9ffb0a0944056e925bfa0b1f3ac76ba3d048289cd58a89b65940b86783c61da270d2102ea5995245be0def46033f0fd83d98101a5ce3960fb0184484560753d8c9e80e542031960db19f9e1555106f6a3a8158225c19de969f6193478e4d366d5ae30677312dc5a4fd737f388a27c95e9038b6cd7208f55d445390878bafcf2d31b5550bad816fe8b38473148b5681a76557aefde9574ea0527800096ad59d70fb47d7cc333f49ea4dca7d7e040222adeed703523b522aee1d7a9fcfef10c3e9c3bc85031fb968374d103b740553cc1d8dad642c18911a77b2fda2179593cfca912809d6c1f6eb21e57900abd5d340005925e2c4a970853723b84c4c20081fc763060c62c0d2852258521bb75ccdd3c48627ce0638ecc18f725c93c8f9b675041bde7626dca06da00f93139b301c82995156c6cc060ca0638460ebd5fd981a212dbc27cf1509c7d4274f468aadf5f8b6465db280ece8cdcfbf90ba2448064544402db90137c0a107a46301777b12bf427a1df4a6b99c5929798ec0e866696d38d0945473a90270dc66ca1f236bf68199f42ede065d8af8801931b462edf602336ee59a0fdd560e5611745c454eb1e2e4554df38c3eb23fa744fb7b1fff71c43d3e75972d4837ea18219af68e248d89caf0da59278f5f1e95536a950a6b51201ae2510efaa410b3815b6adc0588f302815ae9902a20c9f5fb0478302c0dcaaaaa15100a87a175eb5b6397c7715e78aacedc05f533135c02548962dbcb6dce9b1db0de020f5f5a0c458cec73baa01acfb5aebceaddb4a093818654ae307e39620464287c8014013766625516e7c0d76b0c8f73165ebb630dd149563357d23d3a95a05fda4613c0d1285bf887534bb65244703e9c3e973f799170d2e500020abb48bf16c4b7f1e457a68cab86623cae9592a9f5f53b740364a06278bf5a184e6683741411909898b90239e2b888905a61ba9ac09f4d41cacceb96a555769560ea5d53866fa0020de75d905da05026071f03a2450ac129badfb01ab74761b9dec743f48a0dcc0f564b73810aa82de4bca0d8a5de7f4cac948e6f7e390c03c51a012ef9d2ae42c5d0a9e9001313462f72f50e63f09a1041b55b5ced4632a1d03438412e2715265bc102bb6ddb710cc7d4b95fa9182cfb5dd3fdb0362e9e0ffa42053f4671542070b36dba63149564a4302b10f446d23ecc1ad1b773a3148f1236960ac5a080b4eb150036f720f6d597eaf08a14c1b3ea4b0070dc685ff00ba0910fdfb9b709e30f2d46e9a4280061e1eb67a23f0d00f797a408129521bb355362951bea6773709326167a960cec1c2d06fb49837ee4b4ebeac2bb0cb1d4c45ad5320f760256aa949dc3f1cebba7f3b5cd262801413585cded4945858e70a273b8fe12cc91e3165eb64859514be47d6d1ece0ab1a5bb43e4d0cf47574ccc4c287718ab5356f0257cbd08e01e9b27f68c628991b3a4ac649df8729978224e05471218f68080421708cd8cce788f7df5840c96801a707acc56751943f6716e1b82f134eec189848ac013c286a4d0bf5e0c695d515e0d11f41882af48cf5ded1f177526f7b7c204ff1152830593e2ea80f6564f8ac2657c73c71338210037f7335e234ed35a1c31cfbdd8042055e19a6bb4e49112c413a6288732d5c9283325e524d2cad55797dc82a925bc9d78706c3765bef907c5252cf95c9266d3dbb7247839e5fa65313aab400f962b043b8c8cfc8950f82d35c604ee05539bcbb6c0a402de26f584a2d23d30a76c26b9a1af3f0672e7e45da8f77fdd957414250ada10f60ea8b2d023d730c85699945b4f59936a6ab43aca9640dcc13b28cc461d79bbfe82101a2923d305c79ebf990cd13c08251a1fd13ad3a21ac7d727778b0ac1b3aca7e8dbc46d9f4b010805ec71ac9f32b311a59895a5928e98b35e0b9b49eebdd45f709ecb0f48e30d92fd40a2ddc2772149cd1ee601eec25e12683224c20a79129c5f92a6bac62eb1b133caca5afb055db467fbfd312c2c1ef61bfa4531acd5e1f0b953a01673546cb007bfa081364c3062206baf563f081cd3e02c0c440f0fddb3a999b352307bf761d78c39ddf521043b19651fcf9aed9effc528d3082d56bbac8f45dc5dabdda887ae360540fb02d9760ce82f80326e54b74357e34ae576795ae97ede31dba87f1c01b6ec3bf577aff0426d6f0fa259719f85cc9054399f2935237486f1862505c215d79a66c560386a63abe81bb2533639f59a565bb67289f09a18337c0ee73d17e0d66dc88bdc8b6b7380733338d3dc52320cab1dce102417f1fa5fc3674003b8aa30ecbfb938d6076511aabaa8b4da1cf3911995bdbd297c0dc6d16331814fa3011c120fb6155a0711aa6dee01e0f7a89c64e8473ddcae721f4c0ae53be4b8c1e360a3d11ab89d2a67d52a24c41a499fd56e21375e80e13533c600ffbd2d150a76c70fd92263baaf534c5dd86aa43f4557c59b34d5c05bf2ed3c204b617f85e4f3d44622b6163e2d174be56b2e615975dc1a1d6eb265ec354aa8842aa4f8f3e0d8813451b4cb517b914a9b036e384af892d330261f4fac49d863d05b453c2ef718e6c50a5b50e8d07c2d5c25548c31ec5de59d5a74cd196eff5f2a5797a98a6bdce36b08df9cbf3289d78f7e4db0d801a81426b3d9dbc9a39cbd59bde3c89d0a749f806642b612021413db53c3699eb2bca006979fc5d124e8330326c628055fc68dc8d834c7123c4ad25d9591476ab4089ed2be99e81276780e09c84fd5d2705e93a948208a9205208a57971c0a8cf25bfa6f274ec84fb1d22d60cfd7458424d37781854386c16f671e410de6e016061d10163d94c58ed2e7406020af13379c3aa5c938af9869dbe24987a6a0a91b1468844cafc49b91fd111f6d6e5a88623193f4865d2e8261d1fa9768aee5dbbcd355e9ea7c0dbc0afba4870632d035e5d3a431c94dafbc223bc4bcec35ef19a19e9b13be4edf84d7d275b1ff0e6e92c3c19fb1317668dc36df939ed05b2c4c8b9bde9147dd6ec9640d45400180447edafc8a55913811efcc3da810e52bf5c36d457065924b0f7023d94f95f1b0c9ba4b630381e3adb833e7fae375b13ec2b72a2d25a8aa8c530517cecc143a8262eab0e0ccc792c4287f0b0841406a04787482a459f609f292c8b00d0fb67f79a9779ec1bc04c98be4cff8907bef7a6a5e0ffd32986382238f59c6b6cb6979243c45e4e188950f6373eac0083daac8c0e6107182a1ff62305b7c5d52beed014a78a710f0e91496a1c26d12e03a534bcfab9cd6f45cb8df1ebf6d4d5956829195ce3ef6930204bae21bdd91c8e261d0701e6c7537c8b8799440d11501c0f4ba151c31008009a511208918b2312afb2ce5182e3fdb676191518bc0eaae8449f29eef6fa31a0c3b4178c258d2ea1efcbd642482b73055f05a85ad6a18f66fa86fcc3820011bb26535968ecda24eea7ba5184f988d757d2fb71bb4cf3f59278aa3d29f311910359c7c87441f20610f99abc788997b494fe53579b158749067f64663e27a433a69716df45a604f63d490c0efb7ca24c87d0d2c14203a2796997a22270ddcd420d344dafaaf42b2ccc731e5541a48698aaebe9aaf97fc35f1f8b5dce964c55fd3b5b23f5c16a955fb23f856ffb3912ebc86743a8e8a6f262f6b316cb9c17454cb5a25e665cf98e56b34335e08db06d4ef73a533186e53e3bf23fe8adfcd4632307401c00c627cddac3e2eaaecafe6ed12cee268c02ba8f6b905cb2b8bafb258215a49d3395e332b592af08595c5a8f5c122fc6a07ac896d1ed65130595c51525e51e0bf93dd0826b71ddacc03b7d8b563e0c48f693bc9a4880bbb4505c43d67533921554c54b634b39b8c49642170cbcdf4d55a98c6b1327b0145ad50cb81a858873ad0d2e7ca7c0e45af76b04cbfba964fd1b74e5c9be1a29f181fecf1edc9dcce871b147284c6b062f9d4bcc8ac5c10d72c6324d4b8f7cc86d717ff0b15f26a24a4d73cfa31802c0b5dcd0cee2be310e7b70753ec24cb44981e8adeed261a1c39fe08ad9f265fb4404e30317ae862453cdcae15fe6d8ff08672b5806575b3022a79f67eafc9af2ac3935b98c6aca4b988dfc725785522def6708d14c30b917bbe5eef2440b2b0a0f098c28b6e9b16c55929de69ae0b0bba5f0720cd89c05798d104735f451c8d3cb701f564e91ebd8258c785345993fc191cc77d62516f0782f81ec85d1dcf01e954d73b37f63aeb7592fae4eabaea6bdb56bb089392f0c5e9f9cd0dc54c091d281f91b340a20ab5b61136ba43113ed081fe6f49845efe4c0c544ced216dc8b95155a6e8f257311b672a73260626ba19a177bc96e955c8d639e6bdacb2b2579df3f13860adbd92bc934baf486c95095d4c097c72da2b10303929cec775384bda2ebd1ed3b28922704d0051320f80bf1eeed1e12892e82a68f3fab38464bd079dd7ec26b6e3dff60435d263656fdf4b7818362313bd9117130dc58ea8353ac92cce064107e7930e46a0c5cc8ae67310b76a8f6a1bfef77aa9d304b12fc858e73f6eab017547854f8c261d388bff8f91f785bef055d401efbd9eaf5aef84e54b212109b6f3a93130f9720c372342f1df03db22b4d256613b90cc4d0aa9ce93dae9808c934992546b4ab3d8f01754fb74386bcb75d166412b98f76bf71719795a5233ab5f165edca48954ac260f1255ef115ff45ebdfbbf7aba14f0475e27594a53a45505a66652e856c0973e63257ef5e6ba970c7b9d1387de91bdfc0890c108791e130ff2b4a52c4bb973c601aeefea3747a17520828e37762dbbed051f838035eb6bcb5ee5e7babd1a1bedfe102e8abd793a80897745c598329ec5f2c7c725671a792ccfcf581b8c0c9cb1748ca55934fbe3a8e60167f32d6ddbbafa8f45303f8dccded6e9a13948556edccb86b40aba9c4cc17a48aeffc10e30bd7828c821994545c73f3a81f47c71874976d7e9bfce029f9e1eb42fd1621e0e2059a4af8d47a87f47f5a96ed4bdabf4df6c41f8723dfbf15f12c601d31c8ebc6a7c06411bd6c0a5998f3d3e29f1a94c30ecc1727b2ffcd3189871bf942398337d0c12437f589ea4cbe17c239bc6b77ab30c9d7729f10c01738235241e6ba570029a5032c005202bfed10cfd4f5b6fec8ca915cc238a9151cf59e9cbe976c7a3d01944033e6958f4d8787bf612f9fddb415f6e1293551d6b8f0b3709d16e2edd02b78c857ff2949cf8f502a5601398a0388057f047375044a8a22a5635ef5ce4dd85997c6e81c882d9f9d769a458b18ca184802a37b6bb8ae79461fa6f94bbae88482fd3fa22c8bfdfc952f0449cac87cb551018b3cd734eb7fbe9700c0194762fc38fdef116672fd2fe29064f7ae3b251c68d2e52a856e7ead0988f748093a635953cb6e5c6f3d03c907f175846090e238903341cd7f04c2e6d1787c4e2694b0888982052a2420e239b49e271a3450f21ac12f1357e5160d1389676ea5e6cb15de6e4cffcfe3e7f170a733f18e3a0f7114364131bffee23e16986864731aca700923d4eebcb4c884db88cb5df89f0b375439e576ad4e4c3b8655a26889d30d21bf417043a02c16e3f81a8e30aa990e04821e99aca44546283442d8bd7f5b4700b027dd29cc8bd39834260d3f274ae9b1b8584183bc9f0ce59df1351110394d2a328e2cffb0ef1e478f39cc977db70dbda3e61e4166c2e50aaaece04f553d70349375ccf78829ab3866052d27d08f965f4f412b823e78414cb08af2d48520a7da608d1619ed5e6dc58c3e124840c223fa96aba05f66ef06d8ffd4d542dee95a40c740a07e6ac470206c848e1aa66ee504988126c3b19941fdf0df98ebd6c29324d0ece922ed4216b4145d65e5b8900dda19a8033290b519ac8211092032f7918ab68887f26f7df47b6f0ec1fb2db3e6f15d36fc2f8f21b288e03e8710d3f148d1ecbd17ba9a0fd578c074fed7f9b0529efa18292776f62e6c2b3d42f0ab78c10d0c9ea2d8cdc722b06d681cd0cf6e9eacad95ec1a8d5c7986ec72523b79db2613f50d8b0473019847b7d0f9a0c04a623dca0dc4ce3c3f44f6fc7933238f3933c2c57e06a4a02061ea072e9c4288135a2674c1717a5a4b9c454ef6007dbe9c73baf7b2d42a45d087c1485962f26f5168801fe1b440faa81fd3b033fd51c116161d6d3ef70b365af479133b3e569e1932fed321c119b3ca2b652fcf4c4041a98862a76facbcaa140d7c0c8be6c3688657934cf1f4d441e4d787da30e9354370fe108f84c0cecd8e14bf80f7a5688a1a6ac7771b80ca5dcb6cdc124ba6326839eff28addeec685ab30cf33c5daf3f42c4c3aa23e9c59a640bdc9e5cffbbf6e1622c042255fd7417aab1e4f61407adbfb9d59af256958a5eb59ce83c57abd96f689d231594072864b3c35a628dae8b38fc31cae3a0759c8a262c53126bcf3e4bef4115d996c59785a6bf76a6d120dd0d89db090fbc883ca85c45d8107d7f5a0d7e6415fb6304029bad3914ea070cf2d3657701a7b178f512e30a1ba9617c414a228c3f07b33d0b91ae85f34fe2d09345ededc17c9eb9945908cf69e45a720da99890ae7d5b9a73b0d7e82fb7c7a6f6ce851dc4f2b96c7231eedbb2af4399d12de580baaf27673e845a8223f4eab418017ca3f9c864370a11f6b942c5ae8e3e8c23dbdf610a026cf94db5f77f652e0d56224121b0a202ebd776c4bbb515a922603f09a2311c9e820ca4eb0b05751882761b01eabff50f664bfd4bba1ced1325dcda7b053e12bc87ed385ab7f3b254aae62fb9c3977245a9e171481eaeb768f9a8ae0358838166e6e1e40426ad7b848f3924402dc707b8061aea8119cb7f9d4eff219e825009b9fb3057420ab35aaac8931ed55795dd655dc3b30fae8091a39dde8792abba9246efb5e2c60876919ca9a3c338f59fc9b152397f337c28926c19d0afc81d894ab6ed986a2a1c6095987036cf0049a166cf7a06f1fd361f392886508d143a14d363749d6d8fc4ae3f15dc603dd1aca68fef09792cae72991af81ff2ea30672364aede6f4d61e4ca767f34d98a077a175737b8b06e93f2d3e4adeb0ceb2a849436fc07698c76d88c14bb4bb8bdde631158509997ce4d471e6d7894702d86d9a2afa3f701028b1229fedc173f90380dba18acf3f3b0e3a34b066a201a7a9816425428d151507397ea29623699b7889fa1006c7cc3add86c15accde739af141ee3bb0fd5d6245e51e57d380c2288128bd697443e4db129a7c400a2feb1a90a2dc27c99068ad204b10526d919bbfc3527a4ed748fba514f5be34792b966e0386a5d8feb925a98825a47f18846c7af2f1f501fff320fbb5bf14d58e31cd98d00e1b96b3bb9ea21933fb2df13905565795acf1673413bfa1c2390b6bbd37dd7a6fb25fb885e137927dbba932e974059817287f0e212d09e4065f8f510f68f2033c4e0564f1b4fcfb0c10e239f5720482daf4673afa08987b07cfe8cffd14163411ddfcc56af6194a299d2f1092530c5e7282b6ce24b8cd34d5cefb195c6f10ea7a9be9819e11d45597503540f25e40b6849efe83f68639132e5f910dbb4fd0f6600698b7c576c92b36d196475c4a44a4e31a9d2ec1033734b6d142e5ab528414bcbb89c459fab1e32e2170184655ba0a3e2f24a0282c008069ff5ed723292ddf3ab2062803966533b28e4a903d036005a3e32f041af4f32f36756ee4919d26fdc95391c26c882c893dc829b38c41e148a0249d3052482ed5ace66f9ee8800984b6b0f56a8e3be806c53b90f47a1405006114759fa4804ead4172cb0b6a11f76ccfac1276f74887f904f9ab134d3e6d79850332fec20866b65d8de2c6e068a97959bcb2720c8de980dd29946fdfeb3b50c8dcc69cf2e8839695d0cac7f8742c23df4de4c2a8f38ae069ad0181b5d42cbe4c56fb88207b9f66f1bf80b577721d200be101bc2371faa09be85be946cf53f800050811896024eac652b3dba48f6507e0ad6be6f065c0fce6e24b145d41207df0df8ad71699d7ea5b42315d5bf4d89e7874aceaa642e8eeeff910d7bd54f4a9fb764102dd34f8e4145bab28c51c951918fafaf144253589be08f69bd9b3e5fb159c63720045d86de03395c459efe6a09894f133edbf74c3e00e550e9d3647b926898b2465fd0ef2a32f9eee754a7325bc0c6c2163e68fef28a7e4cdb95fd8a2ce342b49bf7aca33cf41ad438905df9b1ab31bd9697596f78b0988368d69f1c6e2e071c960edafd31334af2c43fdd26f4ecf7b766c4bfdebe9973de637153435cec7b64c6429387e830e67ed9b7c6321548a7c30a7b7e2a875124276367843280030ccc19e9dc09c747dc4335fabdcd43008ca0c765a2585850dca6c89036aca0cdc29fe26b1268cb4c088c2d66c7f5847169066ee6bc014f85ec635975953e3bd5ad2165387f321a2000770c560345653e32ddcc4e35ac59bf3905949cb0601be8405c3ed7807bcdca26dac46a0eae25cba7b4af0df9654a1884ba7e2b2faa7fd344d9f6e52820d95f7bd481c8b2636438db8824b34e77cce1b8409fd0a7450e44f983ff1739ca99df99fa0c5376b5bae6cc0229c5fed5bb3db46c7748d4777d237ee5b4b36873948290b978ffa4532bc8e1fac9dfbfa27fbb6d061d0d1a439288d806c347db6f38f2bc190238b00dd1d8f3853dfd8e181a08e2ad5f347586d815f837279888a1ccc718a4db8e036299248509c353afd9905b23412bf009cf771fec6e4e3a15dfb9d122bc32c29046175c8b695483f25faeeb4d372f8065c584551190bcb8f3c5e3cbd21ec3332401af811105800ee7df88637cb1753f823a9a609c11d81175d624eb6d02721d182251e392dfd6a05d454d1b1f8f9b68d3d9c1cdd66f7e25d8a7b5faccc68ae3b20daa0a33be35fde82faeda9f5158cbc88dad47f4dd64b5ae816d7bc9258ab684746384d806bc9209d3cf56d2522bc4c5991c611791379fa1c11405a71a950106c8712342f242c800bf3883afede188144875d0dc46492291b0b5bfd9fd98a8a04a69008f938a47e080d9f4fc0292beaa1e9171e9222fb2d7554b445d47d9fd49e15c286190ff874815b5514e0e2395c0b86ad90be50c53ee8ca38014c333f50b931eaa86b1a0299cad79740c3a71944bf2231170572d918ef82f842751f16f92604455779373a36106e74d1b9b59020bf4771f6afdef5f2db100c4baf3b6d7095601d2b2608e481cb0d039b5e5c8c2df8b1fe0544b8ed3303d94720772db088e99c42fe0958c27c63c01d117455a8553c1018b5469f9829fe5e5ee5b0fcd61404aaa896a0232aff0e281d71736ae1951d1e4f320f2251eeef716e4538007698fc78a67b888be2cea9c077b67c3ca41c4462b9cfe36611ead82febd40f255af9e544b96fdf7985d837a697104c5a4690d86fdaeebc5898d30fa6108641d45957d8329737e6fa3df053fc69f3e0a46d1e33e62e7720886ea479e30261892ba9cf6b142d1f9ad10abf5c9ae082c8e4638c315646738877ee0853ba54e0060139f3df23d764843bf514e3e730610f0d72227043c0f1375536c88ed1e0543feaee7b6a29aaa810fc2ec36fbc1a3215d8b0d9b6ca6944e18c7ffa67292921bfad1392466ef7a2ccc82c098ae112798d0bc21b3723e632f643d68f00a944b5305fbe438545c06d241c9ebb0f31cbdc0fb57407b024d2c2fc94df15d900b59151f8de6dc5b0cc3ed6d203c0e58816e55756af7403b84606c335b72de632f32984c9a81affb392588c15ed9911f22b48178b11cd65a4328174113d9e54713d9797db0d96c9bce7f16e0562ab0993ec76043f91747a4a965fcc5009920a2f41205dad71c852b233500c8e61c223c8c1e0d84125711763e515285012f610c854d4b7fee2962c69dca0af2582a15fab814e82087dcf2183a798033a0a35f162110334e185077b4a30ae4a921f21ae60a1d4fb56c2d737436c921ce55ea73ee719beb2cfee3731c869a6add807b8a734e3cb7b7c0890956a8ae6934a2d618108b0027e23918bf53271aedc459019a80d1e43ca35c96cb9986a27f3511110996318cf9c985f4ef43510ebf679c58ee06d2074de004a6d28daf9e2db2ecfc8b0418a29ecdf10a28cce639c2a82ecd57d40d879f371ba57a91c26a052b4bddec1c25455c3e31f3c48114cedfadb0b3054a788b02c116af838d4ef1f1086b02f3d40d27876b0e7c15466e57a6172c90e3a5e002fc0c7e807fd8d38129ad1d4b100b3cdf7e86aa68d8403ffe89ba5a5947c1b4e206dd9d60bf223195491bf5ff95536e8cdb67ce5518a92fba116e70017025a98bff2b33275d460603873bbc52f633e66f1108072540bf2236354be8e1b8885b76ea79865ff474a924139f04f4ab6512ad92ee92e581550f919c8600144c3097e0ce905f5ab40db80da1e22b6dd00941ce34f35cc67a133b3ad26eeb7484229080d8c269d8565ec784beec0f475100275411172c10c3b09deaaef213937dd6a6f91de03f78c7e78fd2463d578416861c172a8710908977814e1aa942b89a74548497e26502c6eccd2bb4676a6b1a93b94c08c5110b5980718d1ad05af1997fd0a43d7c655b5ddf5260b3f5f6bacfe21e368993872165c9dbcf7825f2bf261632caec6a5562ba1b861cecc421b172c35e8fad886d1199a51974cdcf2fcde05d7f95fa59d2e78d71ccd618c9118d1a6c3fad13af923273d145257a28aa27108ba3e191ee4e5cd2b3765e781293cbcd47e917430e59cd90f580ff23d41dc34ce5fc00f56eac27cfc4c9cd7bfc8abc5f50a7dc14c2f58c757e0ddd08009240e368de2bd06e7f0e808ee6ba6bdc9b6c9b7c17f83575b6d45733f0bc33dedff628819f73611c9cd4c1ddb9cede45ffda7644a9868cb04a631d7bf500783eb955e925f2d650e8d6f8bad98a5a5741fdefa00906a540bf26f2755b2ee368a87eb6e438c65f6531492bd3ef2474a14d72b1d36ed8c1e7968b559c53cecf57fc87d0ca682621b0e16263de76fe9661ea8e189f143e8cc6cd784db769210c3b8f656d2e19e8c1ab3a41d4cbe0f4652572842448f2194c0999b43a497d21c0abb0da05d703cb3afcee8e1a5f625e02cc12a85ae5058d59f59703c4b2a78c2e702105794a62be897ba71881e2306b77811c38125e111d1d1f3911e1406913ce7b818d3d1b1c43daf08926f71f8797264336e1d808d646ca3c7569106fd53748d9630d5c7bd865d3c8a088a9e5710b5e35bd339c6599f849b9a17c4c4a257d75fe127ed227a7b9f43e600846922debd2380b1eefb481892bcb7a048e97886d3fcf81dfdd11ba7c3f6934231179e741743b4d53e302cab21d289f171d15b363d219278a7d9cec6d18f1f8e7bd0760ca26d4b5a54bd291996844595db026b915a55b5492979cd76080f576393d6a26df4d995f6a6aafe27d53d20bede4f03f8f8da2fc30aa3cec7534f8908177fd43f4ba2d4699b98204d938d8b7a13345259269fb8a57c6858b6dc8a532225f633c493ad32f85325b4ce95484b762eb3b2286eec63c997d4c1c983352f3a163e8876e2b5b5350a0e8014d7f3b5fbfb31d1c17b5e3e116b068419712ee39b712f908a29619786a41010f5d34a9bbaef7d99bd0caf8653f9c8188a0f4c76ae433c00bf34b937ef798f80f72790f67ff8829bd40149e620231ec2a6f635e02cc1aa84ae5218f58759703fcb2a7cc2e702325390c6da5f067e65b70fec1a0ed6d22f6248b0242c22be8c2574a2300447260956b9ee7ba0abcd9d8211a2f1aea211fc216eb39046e70bbc6400fc65e4213223730aedfa525345e8ecb13643280ae3a1f9cf91df858a382bf17992cc160f61e4c53a16e391f765bc9f697dfeb1d59f5c571477303a95b3cee5b108c992c15097f194d55047b17666671a6427c6c46901432caca77c9f3b16d9c8cd6518513cb1f86921933964b5855a835ae27381a8aca24dbe1788daaa9a221ee38e2ff9deb9f616836cfe7b41df9b35473db298898e36e7d78e3678f228bfc926d26c5894575f975ee03c9e3e7cc78891838d1fa9b9d0ea4b0a48388474579c4f07d6b9501aea31400b3edad082756d84707b60659015c7a8786d93faebf2e3735e9ac999a218d5090a981a81db2bae739322263ed85f1753595dbbe3688295e905dfc4578ca3eb275437011ea79aa41629fb30f5c5957a79e05ab6cd19ed4a1f823cfe641440ae310045accfd37a20997d07e5ef074892dc48f3c4e0367a259b0443b1b56b5dc9c331de13e5ee5b8a9e3732821474b61f1704c776efc32b58fc9b71b29692112bda1389103486b232cee9fc5c514a6b28dbee6bec509cd2c7ba90088cdd5b2a2a2b886e28665a0590a43330fbe687b2976742bb2fb0821d0f334f64c811d73572f25985946d910fc158681a2df51acdb29c8615c33ab3714e620db97679a6e45ea3fb1173acf37ec227e9506bcfaeefa9f318ad6b94cce7b2dac0bbd19b8175d43fc32bc220640a0ee8fa960291c3433d180de26af08eb981c8598030ea11460654f705d2cbf762568c0a7841d7b78eb9bc9739c07a613a28c27d5435fe0350c0d430c3fe5507a9e0f0689332c3ac79cf3e4c755d7b885edc7b6204de65cae64c875cc982dc2f2852499951d3f7d61df74bab176fb44c25f330238a93eac6ab26094181344ecbe8b655f7937464d2dec486b604cdb6ce96cce4f67db5ac4cb62f59a7231c96bea1b82067e71dbf8c04aa577be5f37f16f73cfac9e0c2249ca5c4ebd339ea0f802bd14bbd5d009144320bda46493da0096d7cae604bf2cf4856502bbd6c82ff759fbdd2a8c5969e119b74325730465877e05d6ac3961b2e723b50611350fa5a181ed2a3b0c1cfcfcc00b9d942e6aa8c9e564aec05af347bcf2aa846a54df5e0ba61174fe28257ba0ad4042795f8cf8ed40068da2cee95467f09e955578a60bee25413c3e8de2ca7b0c08d860442bf0472e3351e1fb7cdd8233bf213e67f865e60e93a0886422a8587989596aa4c9b6c49d126973c49b8022fdd74e9423385c270c8b6ee325d4780b3cee170dee8c0794876c1e8508019e83b026d0649bdabbaa4338b19a9ae04c7ccf84b838ee61af57b5804eca55338bd36a692e3642efe77eeffaf4fb94d0f19c0cd46898785f879e2f06fcfa01bf71fe38e062df551018709362ff487024a0b8dfd26273e2b1e4b7255da4f640939d1617377901e9dc5ba977231306f73626144ac0e719155d718415c42fb9e872fc5061db310268cba783909a4f16be3a3b23e4fb944fdf263826e92ef0f2db074294ed7cca61227bc569eefa418cc1f5413444e76b5e26a5c6ab218c23de6c610b5111454a1cb2697f667334a25f95c41a5277c7d14507f5f4835bcc9399a5ab2a2b2b1588f4181768fdb84a018e0b571508c5804f5f9861b9ddadb8542adb7709da72543ba1541a5956704ae70f604ea05dbb0603d63ffd51044f38b62b393f5de5f30c3b94858bd79c5024eb192767742246fb88851ca84f6758e101c26ea1305faa5eccffc8ad6cd9945d7a884672396e57c58b1c3e2356d80b07b5caf12ea5ea6483c1bb5ccce71ca2c9f84edaf5d6e0ab3cb39b111e83f4f3bd5be7f2ecc5a9635bd022262986ee3f4e8f2a8ce1c3a1a69aa85f88ac1e5f241ad2c0ac838ae02bf0b2aa00d2a34afbae7ecf4af4c176c205c25bb30d4d7b378b58ccea5ff3f062dc0945ae678016d7b52908ccc2d2e741f807eee2691f60f7e71e4fafd644893db2594788f4c6a25a95e349ee4207ea48e6cf9867d7e685830dc16cbd22ce22ac495f3f8edfb2b027b05b8d428e8e4f0fb0e8d1d845afc43eeb52c474c5bd5110868562218214ea56c4d0327af6a6757bdf1223179ebe6fbc11000c26bc854d947cab1e31752fa393ef09a6dc3ef0d4f8c5c3ba6399a666d59c3f7dbc4ed9484481350212c7799e11ba655651449d001bfe297a5e25a7f6a29c4b7c2bb3e14b9991b79434ecd144934022225bf88c0806890d7764f108862e6e3470a44b56a855df4e749a1c3d06dffde5f806860e684376e97314ec11fe45926e56bc5a5bd479451ae2e57000ce37c545b0d471df75f053c8622ce1dfc21a7998129070f530851ee5c1c468097224e81afc52f102ec0ba0b127fdf78f7b6c20f85cc6c4a8657359256d712de13cd50c9b033d1119696e34bc0c0ca0a9a645281cef3e619420549d617386f95ceeca07bf23701571d8b19836567f0c17a1b1c84c70486e31845c203fd1042197bf87cff08f7dee4ade404c9d22d033d394923d9be2611dbfedc06d8adfebd3ea404431d5cde02f7f4034212637b20c53a15522cc1c9e026d52f790f7e9bf266cc6f33c03898f036909a159f0ff468f8de70382ce8926014be11ecd28cc16291e4f15b2e33c4efd3b4cf9c3832ea34a5dc4a78454ff1ef8c103f916782410e09a75f7646775f4566f03b2de9a725c91c56d8857a096c975d0c0a06ff3c55a2c5d37038507f62298ccb907a4e04104807740a518fd41cd9655c754d0a7f45a66662f4fa2373dc2cccd70c0558cd68b3e3a525f4e0ae6ecbd298c633e67210f02fcf3c8b6d221713cc5736c6b5014a29e60ffa02315db9db733a5aabcafe14425d69f4c26aa5f1f39c8f8c88b5658e81408b966351f83f609f18e3eba130c03864d4b6ab1b89c4b36fec99299e4a362ded9336c7638577cee338d8069d7ee3f8a8c5a350b0aca6782e56b0cea857ef2090db4ab924ebcd281a7e983fa971a4830b5dfd9ad818697d1bd48a6035716c4f423b4942dd2af8caa4251525999589f63294ac878a1776bf6a252dc6fa3e67949872d34a8725a9b13a428514adfa0869242413170150036c5886a307e28026ec3bd2d9ac8de39a477ab3b366382a572aacb6b3b2dd06f90308029e604f3265272aa01789b22a6b68e72834d1a2bd67a2519d884aa173a854fb80019227e8cef7e75a07ddd23e7539fd5a38f50fbf0a7ea78a4ad909437a03aa61ddf29113f2ee51c915511cd4dd3a846ad1f417b854c61bc33fc7eb8969a49feab2335f084b9ce918ccc258832d44a119c6d6fbcb13469832e1d75bd474819eeafe90c32ec88e530407fd01117f0d8eb1f17bc9c6616953e0f136a873400b6941f71eea73caecaab50d9a134d2401710adeacde4f4b6a800784b14ba25221fb9622a9a653492fe23558c1e10719633240c16c3e6d1f43872e713c1c03dbd242e32544663a9a060563214534d42f9516b90d8eaff64e7d085423dbd9b8f299b0eefa58441312f1279c27837ac3eca085983e599dd596bcae6e0a5ccf712aba28dbbca8febe7b4af5e6037b5b5678f4739b8a181c6c6b269e591c28f7d60c176c6876a0847f3fd3b271642d635f33a7b5960be46605bbd552215b18d353c27541603021e154fe9390ff38591226116beab5cf89cf4a60cf3d81ee529c0a1d611c1892977f11f04e2b9debd6965d64979484751ccd12bb29745df43ebdba8e832a9ea583850b299a86daad9f658a1e002fc2e1b48c7efe15f2603f82382d8c9b895e7950015f7084fe46efefaeb9c12cbd6a39e4a11ae7f7031aad6cf9b70c8bd704b5c7b186f3418a6552405863aebc84f3236258e1cf5a7125e3079540d7ac81693d12cc2d9800aeee0d8e21cf5d29706f4b20d4ffea3290ee385d6dfe8dbf0f9880f87a60382587d68b03cf849ab33565094a037fcd182217042269cc98195fc602f63715f2589ea41ff126303ab3cd32f9bb9249037ed12c6af34f62204bbdbddbb00e2514dac3ced312df4ad47f890326eb14613c867e9412b75eb1a18b5ac6b5344a71e208cb52a7953fbda6ab0aed9a482ce522fdb8d52967fb8f600a4a1b8fa346a252ae6230596c81c91ba7537e6ba189bf8e2a6ae6b745b8faf17e5c82df1c75c083abf5f2e1e12d4ef1bce3b8d827934be221b1d58ce212a12864aa0442e87e4c75b3ac38f304c94d31a1d429b8f6db81a32ec4e1ab94bcbd03aaa27678f3c22eceeee749fd35c34c97ab9cb45821f89021647216220c378be80e4673bf8489df891708c2670f31dd04cb768f60360f5e2904865016099a240b854b455820988315dab93ee1c8270e3f6bdef2adf80dffdd31e8de94ce53dc60a70982c91d8f4a377508293ffa69bf01d7025420a547d049e5aa1b5652cd92121699e9732334461ba02c1ea15379ec9c326c31029527f811f39b3971b397a8bd62617416adc64ba125d3784d84bcfdd07d7e30a17b3a2d446542db460c02dc6c6483cffa25d0e2be79a29a80e7cebb1627b80bab23cd6a0276e0ac445ca97f2c811056574961ed90922082b80599955737680bd04ac2bf1df8e770ab53a27660806e5c728c2669af97e21907a6645066c62ed094e3460d6a33be0d689b2c898c218b0810f971437ebe71b6696cc44419bedfee84efb3e4e46a4e761cbed74e926dd1910b8aee14aa7746399c30b775fa522dcaa2bc79899a99b34e9ebb705b3cb4cf6582a5dc1d6348da371682c36f64733c027446c03266c08765c9dd5c6535645c6654891232e1af94fa400195367a5371844d2a4a2ca98ee2583a2534244088d8817d675e491bfda921da97cc78f0edf6319a25067c1142f7e1265dc106a3de74ed223448ca35883ad81806ae743fe7297c31a9309d0c41797f87f7d44d882b446b2e21466e98adae466af03a009e5826fe32fb10a31d38ba88142697a3b1ebe5fd3ddc56de47c8bde7f95502731fdc1aa9a7705165ea6bbfbe8f60c91a8abc084bc4fa1afbeea024311dd943df58b9f3c887819dc408045133b07091502102c0496c121735ccc0fd24ea53948d638a89ac7a214121fc0b24df730a9e4486311638f6da0d9cf801f3b22f756b3062eb5bc689dd4c6607c963b92b0d09bf55074385c70e025664a7fceff0d6717797b2b5796447b47a31bc6ec0f002efc7679401b81244d751739c8729d24854ba09449c29ed09e4dca40754bd8e4462196c0eadf7eaa806994831adbfadf65ef5c2c10d868deeb756d5551be5b484382a373633459ad87ff7d89de7153dd0ac4ae8e401c24b5da15c01a06528f0d63d49e5e3525bc22e8c0333dad55bb021cfa290e1606feca181f7190aa3df3222cb1ac407d28db93631a38c9b4efb3a5e68fa30412c83671da3b1a293adebfb2452c988e61085c398182272e0e95673e8e46dc9b9d32bc3187d1d794877a5950653783d0b728fb97c4a4b1d418f2a3b8418d57ac06bb599d3faca4e84c083486fc55d398b539375b52e5374df4ac8fbb4152d6cc53d167525e41a01ccb700a6d175f161fd90e8df71506a2f97d564b41ba41b96dabe6d3200f6fd5ee5b80db30e560263617f4f0a8047d119fb727fdebd920a7060538eac591a1e4aa3118c8b4fa1a63207beb6bc660a0576a178278b764bec78ab300904b9ecbdf012e06ebe63f1409ce82705588aed1831cd2ca6f0a8451d0bfe03aa3e8c95c789ef508a61ad449db0ff7e140defaa1aed3fc95cce3f365349170c723d5cc8aa951e8ce0d50ed263e29d3739db7232390309fdd06922756145a24091bced5065dd2d36049af595ed616cf2142b3149a475d87c8e969152d07f8fd3a1f08bd44f45af5905ead2cde32156e487d0b3b98cca415a64366e3de19512442f40177a1d6e54cae81d3213a438fa9659dd0219048e715f1715739b5be1f88063a185fa7245bc22cf19f8369b8955a08f95b83d55642b9b155b4c5d25fc0a89a039b54d8ee29ba71507de4372f9911e8458b667caf5283091d95718df2989a258e592db3a8a2a0264b6a2378aa8ea846be218319ea95622a79211a97d110288f47095ace8c4f446da8027b4229445ddef71e15fda22f7a5ee47511b536ab6b861ee6eecadd9c9c5acedfc10304ef54384fc36433853c00cd476f63a82ca25f24bbd468ee501ab9984f77a0ed5dad1e6ba90f910bd440fef0d1aa6b7ec75654108e951aaf5c2d8e98f1343d9c9f976d80b2fbaff708d427723311c70ac23969402ca1cbf94d0daadf831dea2813496a41cdc87329c36dd5b7b7dca15b6751efa721aa988b2a5b104fe878ca076e033821fd3d161b4360414f2deae1da26ea536b6504f362c57999159731df3117ea5f85e77839203c2058b4e845ac9374726ab71af65cf25c4496fb8824678c039d88ff624ff61880ea85d18bf6248ffe3900eff47edf24aacc7d4a843e51c17bd59c1e03720619b415882e5d05b3a5e2a6e87066573e1f75a0b8c4868ee211d175b8d0f42c4b520f66a49961240d3af4984ba7848a3b05609cea208130e62e0c5d059b87d81455318afc869047b91f32566dc7d33a87d6248ac5ea9fdda15e9d5f6e518d6ee2a140a538fb6e1c278104a11d85ccb6fbe3624661d4119ae265d2aa707670444ecd4593ba88c14de13f6fbfcebeadec71d67ab2ef371b9ed5f3cb972be0e6d29c13f95451c3fbb2cbd5792756ea6b3d6de8faa1d12d247fbd10293b51aaf3b10ce494d72f3dc66fd2c6ae1a561e47f78b3736936fbf8fb1e1f786dd0895e97afc6df3696184dbfb13ce06cf2e77a024ee9afb13a7699e12d44df99d91c454818e94725a59f29b83a04a7e00329684d8fd22519ae6f15fe743cdbae72c3a6b6a72aa178a2f3956eacea4541918de6cd989d33e52c9ba867e3ca35597f0be55bd67b1445bad87e22c454d84698b152995472617b59a24ba52d2e96a8f8ea3c0b191c5628831de4b3674b4caed9f43d3e1d89c01d6048bc9ed40c3051ea0d6fb9ad3044604f415c76be40dcb91048d3c5490529b5a0b5b6ff610a87e6003e627b676633f98ffaa32a2adaaf81097d3521d2e9728b26cf1f092f0c2bdc2ceb2d48c5f6d643b4c18abf7314915802a4ac9a4e7c434ade92f9fb6234ef7d679c63af5e727820c831ce6b2ddde7e62831941dc04061f2ea51f5c94377842a046395752c77841885e95789d1eb6c546a154fe738155b6fcd7f5550dc5d6964acc8257396cca6ca13482b4005daf2c209c556c4e2194a3f7f469cc01a402dac99f897a46ec70de9492a3397c5b0a4659d4bc876f3c32818421a61947f90e7d6f949705f048a85205232b5c8c1cde1285a7878b20ed867ad1440a0468e2db5bcbf77629eac11f95957f36c63cd4e885544af491951bd3cb513a96c8c89a3f29c8d49908205d3e46ef9baf815ba66a5224215f25411ec241144fdddeaf9712fae2b4091b5036a209b54b5204da49e0a049ceb14af69729604b36e5dc47b2bb78277173a2d7fac0371ba95c7d81df083753243e59a5913e1328c3f57e49a1ae74f8d3eddc17d72bef48cf1478b398f18c4c67df3d0e35c215f6d1c043cb5703e810f1d7d29adf66837ade3ac0182388cef87b9d2ae89f7a842371fd4913197dcb14212b0cb057c90873bc17ea2fcda35366ae6533ea9668696d27b86e57c87d8970bf5883c5c60761f467f26925894509344a6a33655d78e6b748faad1ce46132726e363233a10c5e78f28345b16d34e38644dfa19b3d53f9aa0308fdae360e3168052cc0b9b8285dbc2bb1342171f1b19d73da65a6a258b78c10a27da6f6b8c53245d7920fd3630fde21f219b14751669e3ed216ed3b6323757ee61ae55735f58e2b4b06e282fcf1b4783c0a42ebcb5f70be24d28d48f89f3a7b389b274e004f3506e809ffe86e516f8d16ef40076a9ffedd247d6064cf00785db46d0687150d9f5c26022c960bee7c048be06bcfc6823779241306c005cfeff31b673be4b3a4c76471badc2c893e93761908202eae2bc4351f2d7e7be61afbf4be8a642b12765ec05760df567bfe5123cc44d7550571131a297072080b09d9afe859976d16b4169d6fa7d431c1487d0c67441b3a329b8d60e2e42b8493d022bdca960c9af3e69bf5b7dc4b713b461e52449682e3dff37ca19eb36f2d9a90da48553d1597d2120f93d2b39325a615454c0553c640a88dad4864d4eb855d94b8d8d64739b99274512ad4c4fa1ba3fd569c373bf3eb1b0361aa19f62f65b322b89b12cf7d050d86413f252d976a535e1eec3b5ea9b4133882459a24423494f2be53f68f0b791ab70b0777e77d6d35a1b24a08c8eb524938933b55f5a6b1e72a94084b4c00216b362a5da998ac3444f13161afa7da2ad4e7b228049a724e6a619cdb83b064f34a1e37279e593ce54fba57fb948ff653d6d55e3ce639f0d6aa180e8655bfe3903d09dc0c854f8eb4f11e3c19289858dc1d3a890d7a429b604d7b5650cfa33d43ec3f890a9f3bff364b7795c8f18c231ccdfc010297ed91be0387ef6a2288479f39922bc0f055a1190b1f39ed9bb5ae0baea6071d0d8050c00fd2822ebddcdff978e082f4e4656962237028e38002f83f3a8e57da55a9a9cb0c94013c35212c90a53ec2eb3159ca54757ef1d68911e5b98ca08063ae51f274b89e5cd8b87fedfe2a25d6796726f7cd9d9e66a6dbe0e752d2440ebfaefbe9af3f0fa9cc8daf6f110988cc30fb9ae216f042cdedd3c35773bdaff217097102382034fac13b371880287176b16be1ec8270872f43bcfb9a27060cd464b6718c63066dde0f9909c93294b5bf629e2e28009c899443b1dd0ec383a0f72d5de25352e1314b292030a1a05dd93fbc236b435d0a63e20776bf2b117ad29c87a679f65856d8503c63db713585e31abff105d48138b7fffbf8bcbc4456329bbaa7720715b7a5e6896efa143fa6a5fd30b6230a34095bf7f81cdc62f1674ce1476fd2c982362a479c05180e3f133e5a96ac019f518839c5745e3a94beef322345aa91d94261e405f7740349457f030277c72aacd82eb3bd728a79cea588a644784fe935c4f22772ff5930642b33fec3017bb91b13490479ebea52486454668c3def73da897f28f04d27ba03247c4f39461be6da89302cad1415fd4a135acf2cac63aa292cb0ff424638186bc691a231ea684c455739687e22c344781c5bf0420445575fbf4c1ef35edabb4a3bce4ec8909d31f202d3100bfaa9a61f7c9b048115a24f2ad4a02fa4ab79c0781e19ea755a37570a51f5214a25e6ab158b753451aaa4e31412afb210fa16afe88aaca92c85dfd6510fec2969fbae2d267d45ea5e13047c8da945110e382e85826e5243972d0ad5cd0c6819974258b085df217bea1c50a5988af493f289f52ad4710fa68bdcfe7b2d5ea3d26ef0b1317706af491933d8e2faac3207b5c12f421903d74fe4aa74645db25d3ff7e2d7d2c80f199d4dc58f798b0f02002f6f5bb5382d108027aa49f5525a3676c34dd04908685f8e42a5449991c222fef37af02293c8f445dfe69b10e276a026c3f974a5ac50ee37a25a76c0ddc65c8f0c063c5645799ed46b44bf74cce84be8e91ddc107809bb963405a055764b8d9b804936c45d27bd9553db922537596ad8013f500918716e97292d0ec8431508a131e17989cdd3f59693374491cb75b403cf3b69c8293231466c8ebd9b3dad965413735f91865cdd1d2d7fae6e6ca60a4709dc4567c90514fc91e32c7f266274cdcbfa192db5e7db54a2953577e9ffec3507d2a764ad907d60f1de0665d2bf391bd52cc8502d4c8626dd08cc133cad13a60543522229513d012338e6fb28606acfe2905cff4667e5a512f01eaf08fa9525679bd876ff9ce7e6875927fb6a3dd10845d67e7a91a28959b38a37c98363d2310abf006d85a383685112114adf013622adaeafd3382139214f59aa914a1c9fa5863c89b83cb72c89ad29951cda0f7e619db2b551fb6c932d8835b771a940b790977b783a649266321f1efb425add41b837dfa1d785def0ef3b95504d553eb36a087b09ecc48542b5e38bb03e86b05ed8891fcb3153818943e97b4099daf6003aaa1703896562cc9b719c6cdd9427ccdd804c41f287f9f868900d14576066d563b398594bba23ff90067e42ddf941232201380c2779ebc75d5cb137188e31c33d70acfc668877e0582cfb514d8ca87abfb35258c89bfe3500bfd49e856b49685ef138bf7fc6336b106b559e59f76b66f3e23f7b0604c70c9012988fccfe14dc92949091403374531fbba6b72baa92aa3cb8d0cdc5551fdb776d97027e54d91e02acf885b010a262880bf5fc515f6e3479fe89350b0b1b1cbea8bfd9ebf66486c32c0281a0d9e30038c2d9422b21a8281f4359121db2b06739a9d5e11d8170f9f1a3c2eaf884595488830359c84721f047578e71e3ec5665aa84020adf0f41131a01e27ea26f350bc50fad9c1c768a0bc8ee0ebe77dbe4503ae90e078e252a2c1b87521b7d055e636700f65d49ac0fd005f6cd7e804f9dbe4a04e79fd32b5aafd27b320f13f189564ebb461df4e0b2951eac35d6ef77c46fbf061641ac559a410dd5f4d753f0f9b58c166aca8033a872731d52b51322b8f0e6a24386ef2e0ffee42e55c4e312e988c4bf5dd5eaaf3992aced57558ebbf2b3f0abd3a7bb94f7dc0dcb81f944ad02b1fb1bfe198f752a1b3a8440b8497ca8f115d131358f4fef8dcf39ba055775945d9e02f2bef87f28324a69ff2a184ca89f49846edf13275d6c6e3db5f531e2db9c0785c6759d18059ab875e4962e1a0103996b7ac95d123d0d110876c2670e630dca17683e711f66df57dcabc960e05b0dc5712f1e8c1a1a30367af90a072c72eeae4e8b901f8a6ab8362c1c7ebd921fcf91c46ff7ff93011ceef0fe5603e29a78c05050e1a84830c55301e19251d290c81f013a9b765722110de7186fa00d88e353218c38de4c634a7cac532e4a72300a2ad840720d0426b562e6028d2e6afee02e9c2acc04b98b491d8448eb1edb7b6df5a6ba4114248237befbdf7963b620c470ca00ca8d29b74eb35efc0f16540ccf75d6db7b8d576edd6e8aeb65be3e11312dbb5d7c76b55fbf56b5e2fb3317a4febf5e69de31eaafa39efea84c4f6f81197b5d311363ddef91029568e544fba3cd3f478754c1f5d1dd4e3cca62b61273acada40dd073bd163eaaa2b619762f9a96f694e4eda88b8c495deb54b0df1a9d4834b3fdd06c4a597e6e5cda7db40600785b060eb20b7835ef6119777e0d1633623fbf5de36ad9b7b26d773ce05d839b9d12d4ef4f7acf758e6adb5a59bc2737ed2ec5a76356aaf6535b3d7b4ede69ee3d19c37b320f5cd2c7858a162a56a49a14e2ca61269b489b40cbb42169e6d325d12e9b9a29efa7b3e909e27eeb3a46ea6288ebe99cc529a29dd2c31c9265ba7ef936e1e8d389e89e3adadd6ab13a3e89a4ebdf66bc773ffd038d7c71a391ded10d35b976762ed5494d9635cee31b2a385d87840d6ce1e13ebccdb5bbf7a9b4d7f5996c866ff62e7dce8d158dede1e13d7abd3ef162800303ccb974a4517bc451f31e09cc2af04b8d730053538a9425015ac1451809e50c628e16caae51f63b87ee85fa21ffa8dfde2ac87b8ccd9b84238c489b06fbf362b05ee871ee543dc767147e0798bd3b1daaf6b61773d6636220e7de3727643bbd695b0bb4257c7be2ffa25dab48738d1dd3a9b91b3d35bdb8dcdbaf987f6eb669707866e71d6433810bb3fd8f769d8eb1667a36d3cd885fe60775d9c68bd713d02bffc03f3c0eca3871e51cf1a481840f15ecb8ef1f43c19a6bfe0cb6cf4edd359d9e8cf7977eaedf34c3caf06e67b8cf0bc1ae8f364f0a661ce4725444d70c74009ce6e4c7a795abefec14a6fcd6e503a1b47f8573f6fe48178dee8f76aa7b18d28e385f21ad1385e9ec6b087768c22c7f36147033d385efe41b1166af9450d78d3c9d861b19ad5cbe2306bebb5d96a9fbdfeaeeb125f7775bd075f1667aadbf676e48ec4f117b703dacc99af10b52ad8a60ad8c194b40e2f785d9707e2e9023b18fa311863e3023bac0276bd03b1fc0ec4f121ee612af1c63d1c7ad7863260c0686c5dc638b91dd006661fd8ce6f9c8e21d8b0adec7bb0e5013b781dbf3819d8fd6c1a8689184207b63eb3199b6669daac2cd86a702f44871d8cb1d7892802dabc1c8137af0b46788a049150a6a00623d34813888400da4b9bbfa206339c9f2d3f273582c0a1ad413444bc115d226ca553467871f97a86697772b935d0835f768dd3d1be53f1955d222e8f276470bf9b82230b1b11f166881803cf05013b4c7b62db692caf16846da6ff5c60164d52ae958dfefbbb2b1b7d759e1110d3d30bc4bb19887805c4ed1171b63383fe87965c65c1362b0bb6ca828dfe6959d8e85b5e4c7b626bdbdd86dfe8d874e21fcef1468700bf9b5bfe713d241022fca4bc3b22fcf2bb82738405b0c2d55c8c2d5bcb3d3160780c3c939c533eeef900f690ebb9cc3f20213469fca66005200de780376d25680a539c780103c3f764cadea04dc6fa0d185e70a00294f3d270a44a1f0531a63004a09cabb756f180e8b7c302c037575570a58a290f3bd8a960eb204903084513a7cf31a67ac20a67cebb85307e081db186c42d037652ca90720c5090516cc892564b6bef7b2f24ad0d3d6b6f1d073e7425029e7529175f6ff10a18b481b5d6f81c11c7142a5334dc14b0515a037641741f868c1b048ed8b4fb3064c496014306ec628d2070c429fbb257366440530fa16368202947e8182fb739ef36a78df100f83901bfc329b4ec1865bf7833534aea425219d8bdf86bce19b92e9e5e382fa3140fc7270a6440411746103482eb1160dbe81f771ac166df5770a6afb797de9d23707dbdb9627a91ccbfecc792f8257065034b2ca5943d2e907b70062aeec17de5ca952b57c18f0002044808f0d59bce8e0ef687730fce487e2ca15f921dbb3625befa87d9d72ceb3bd7edd1824dcff2d6adcb922629a5bcfd8735eb3d19ad0a405560c21368c3721397716013cb2fd4a53cd657f0e9d77541cc92f61717b1b510cbbf7bfdbad635eba6cc030796c76e7138f07b3e5cf2b2b7b23c867d673e1f81596e8f167cfdf49d790de85867b98e7589c9bb339fed45a2797bec92cbd272d6a5c83a7677ae8bc404a98b52a98b44a9eda212e9486c2924de9160f9c3d8515ce6e1026ba007b31cfbcb683410fcdecce966962b8fddc4612f7196db5297ea74828d1e7bb6f458bcf111e4dde14a8ee82310527390e8c911dd77b33d6659d7521b154bfba865f419978a315866693ad85640d8bb10a247e33acfa3e21efd668fdc8840086fc681df1f9ef33bf4f9089c65b07c076d74fa1dece4e5edd182abb5d65a7b77eae93dec545a0e36f96ca7f1cd82e891c9efeed0e7f640a4e7b2b5f8de9d7a91c4cfbf5b9355e1e262ce20d78b37adc245c6241a007e29fc720bbe7060cc7aae3087eef5ebf457bd3bd6ab351b467889c40f29e791ebb9e060cb8f4a11f1e6411ff63473306340e34767e0d08c6cf901c9e3c414bd0bd8bd5317293b5ae15afd6570e73d5bef113112f917b911c4fbe8c989979c07b2bdd9627b0b07093a27f450fc087cfcb8c28430b0410e75b0c3959c7891980fddbbf30e330e4caf0b921f9d3382772547484b4ebc268847425ec678f9e491b83e4237c0411164f0022648c148ce43e2dd2dc6bc23918a31ef47b79442aefe021ed66cb0c5bf18e37b6c21d76c0be184105e17d9021ec66007351b6cf24188844b536283bfdea33db8b421dbbbfa55c1509e28492285c8205282809a442562112b559e80e2a3042601854c91e204501b6925a6b0825f9427f00b178f836f2e4b27f8bd6394efd28854620a2b519e60e21387c424a498e2c48923d00804320514517e9834911e4285c77b52e3eaf75cdeccbb26839b5fb87833d8e3685c1b2f98f6481965d4faf16afa22ac53f4868c0a0b1416e12ae3df3bfe75cf2055e04dfc9154729422a712584e118182442749108982a194c2428116caa1b5505ecebc39156f3e1499d1b038de0cc84289c106254a3fd1c720277f78539122e4f322e2cdce5b6bbb7e2a8182e30fa060f96ae3054b27b0d3802614294e308c16d013385e3e8137d64f944e401b27d7fa8957caea08ed16fbb5d6d93176c755bcd566b06998a4026de859ecb0492a29225b1241f0bb9c02de5853624c1568d37f11483ab176db52a95b3f946b6c4d89d646e94406c928978d9813e9443ab9d61664c9dcae5136a357f1a23f2c3a0eec9e73fed4cf96d5fab19a585268ad1a7659a1996559569fad865d212835ec0a4929af74229f50ab61977d683e6ca593696570f01469d24141923c793e400c9f0f1043f17c80479e0f30f7130b84e7cd2e78c618121263a04d162374a46b60d464b06957db8958bbf342e28d35e548c70825e91a98b2425648c8110c7f655cfcbc3525de583fa1241d23a4a46ba035c59a9204432dffc0d60a29c1ac1f78593f30a404b765ad7422a518c224ca9cc28813744a123e4f542b4a5829cf07e8e22facddb69413f866e03301f03b0c78b3c5b05e4d912d6321111663a4f1a02350f06342075570b6a6607801e05785240cc1d7868de48e0f9caf7ae5ca952a18835dcb21db6aa7717c0f499fa5931bf2f5f688f3eac4f334964e9e3c1f1e95158e378300f713d8f5433edc10ae4780cdbab42e2f7a2e36d51d8e3e40b1a3dc197d7ceab5186c2c76d83a0ace7d0476f0f6b9adae2d3b769c314a947961f827c580b31bd6654301a5c549ae47637bf3831d566f0c72c3a5c160b3dadaf7a2a4026daa8541df98600c3c74815fd6327e3ae17a3d6c7d98c210fe41130d26700005cfc75f109e5a58614ddf2c4fed7daf8bd90d1f728200cb5b20e6710084634f7d843d60b57f3b11d77b7a9f14a26bc712e40b377c3d5c8d5d5b0a3ffb6af080360f5fd76dbc9bd47b56e8b880af27067cfdd9ab0abea6c0d7eb2a00c1097e52e057852550e0ab337b1fec6615dcd209dc97cd5d54c2a68fda4b6c6ffe81eb95542e0c76d75f1d99aab0c4099e9b0c68f3eb35fee7d4f554bc912fa67f61a6eb6a43b67a7bf8526d0f6decaf3f97ebea34108ac407d35f6f6e1f5d3e8821e9b1c7546b8c2d8677b3c518fad419de064cbb3960fa1763fc887b12762e620cfd465d749347da6092d4499c84ddbb6a2d121f9091e72449a4af9b8b146c2f88a75b4af3400ade5ea560eca65fd72c71a6dba33194d6753dac8878833ac5424771fd624691a3bf48a421d80aae37fd9a73b449294e9ec827241452cac98913402c2c5d6bbda90e39ed9b1b9b5e4fbf03da8c4e5f0168d3a73e53709ff48b521246e2ba09ece85d44faa752f467f4033b7a6d05db759325042ad97a4aa467393d240295803632ab279dd2b745a111160e478ca13771af8bc49b0e0add6c45b7c8e8a6e8afd7bd2039058e0f3225093c89e0488faa55707c6f26f270217d478449f7a3bb0376f4469f747bd49bae4e1885421d853a0eac9cc42fdd71e00c27f312d758421bd565649ee21e9639c7351e653364eedb5ee0ab331a1a9abf70b907bfbcccd879770584eaa7d350fd744ff244d3c1c0703c1077b787aea1390b2e4b4c933a0d37f397cd9839ec5ac4dc25a6e5a74575096d62aebad98709b5475d0b63eaafebc25e4603754f2aacba1975d44e11988787b21f7ed15f1673e5efcf993ec33d5c7a98e31e16713c70b9085c2b2aa22aaad6bb325d336c6590525c27eec12e0653d9a1b697773643660c5b8bbfc870b20aec5eaeb44255f52dae7a9609d85abcc55be4975f2f9ca412c5d662ce6c8649e62dea55a7e174ea55bf2a4769604e43731aa7d3dc07bb9beb7b34a6f9cb7b708bd3702d5a2069b9acf272fa9616dcc3928ab4525f802af589b4562a842da3bea2f9c3f4a7fb8ae6521fcaa43a6153550d0cb24ac7e5c62d7ef54683d1a854da17b67a1a186e4e29bd9ec29ce5990756391a2eaa612bbdead477c78157c7216979e55a4e694edf22f10c8a3732877e4ee9683280e1cc8361ae8561535d69455281623bfde2c1502a8e078669feb21934c78157e572cf115c7f0456bd72282ea394e07a05e0d0816b7d8d282b0f0accc272d48df704a6e1762a46dddc380318ae37f36098cb03c3a5974dd58242bdd65aabea28d4a53ef4e7e5065bbd174d0b3702514bf7162ec81254541d86abef8de66a140773152743c3a968507fb95e2593692e8fc4d655efba5f1df7b6dad5da711257184ec7ca687ed1706f43d1c0fc65281e89616e617e4daca5e52f83b9485a80a8f7aeea5f8ef555a53e36d85adc39e5e5cea0500db6d3ab08b61c819c2eba969d9e522db7a450710476f4150c1b25c173e6145800fa15d796d88c9098ce9f266ffecc1fd3d590b065ea53b9fb8bfa409b876d4ea85f1003823632a7a74e409bd3e9293d7df26206f5d03527196e36811d65026d1ef7b8ec742710ec68d0f316f39cc23cbc456734581ca672307fe172e39713eaa7cbc8c8a87ea954a7f1b0eaaade83555cae3ffd82188a9b390d8aebc1957b9886e39978e6d2ae391d27ca7000f88973e92e801b80cbfd7537f34cfcf214f5b9f1bff4158c6ac1edd4193037f78878a7ad60d5cd8d51af2e1c2542effcc91b3ec782cb3d2256bdf270d4553c703b15ab7ecd9f784399c0187ada0408d39f0954836dc5a52a2e35a21d619b408ce4d37b447c9254620cd58cb065ead36475d5e929138880d55da1fe7256a7aa53d55da1de18756710ece8e957dc940263a88f6aa552a1e8293da5a7f494cea02798522898d22898528aaa53a04d965426fda4530a4c9fa2026dde932721c0f4c554026712d85126750e1b455dea3393607aad08dbca05ece81f7e013b9a5d00a180e87b439dfa448aca169f6a08b61c81c023b0eb9b4aa4d1d604f7b50ceb872c0b9b3c1850c09b3ef262faa68328016f2af062fa0f06ee243a890c0357a932c5143ee08d029e0e78e3f262eadf8381e92b562acd095091b22774120f674f2760f7e461cb3871e00f7e7f9f415b3fcb2aed13500a7cf2625e6db9839803cf2c63edab56ad907bd0b2d4b6fd059f85f2f55e48391e32186689ede32183e13c4243e6f3c12ebe672343ef7171aac0f185e4abcfe22183e5a3956bc29b9743e371e0a051e8103a2e332022ce01bbbe3a263744bd8d6122624cc39b79c8e03a447d7e5174b8bc0e9e0878b5c5fd7550878bf51cd0c63a7c18c7c501bba6b046087d2c1bae1f280ddde22aa51462cbe5cdba96862cf627e2ecebf311d8ead06fdf60b7d3b8c2184bbe198b2d0b3bebead011b0b872e5ca959cec79c31ab51af784101dbbe5b49b8f787086cdd8e36326848808acdd5e6642882e128dfe5db7ee8331af5a1aba3fd0b78d0ed5cbda32c21e6b4ea0f7628c3171050486c3a5048c30c228638410ca49df33e83bbb1163c48172040f4208210c1c218c07630b5bee707c2629651083c4602509b479d5c58b1d3c64c4243062a53309b4c9362a7951fa2291f0bad82458f439820f18aac0852723fb55282a016d32a4826392201108b411128d449fc824368949409bd704128230cc810f5dd60ab489700a2a182a811dfc4a05b431c1ae8b374160d0168230b1852018feddc58b2c9801c3cbc0ac55b1da32c624acd7fa876128610755314209c1ba83ebb9e46944095482a10fbc9150c09879293f520055710225489424f08ba249d9e633f48187afdbf101e75731421f68f3036d4a4152c01b6d48131805cf432650f0bc80908c6142203ce7a38440540c8d481a5c16dae48eaf3f27f7a45411e34dc12e0c5bbf473664c20757306c3132819dbcd10776f20716401ef51ab44509a7c002c8478e08b5280cb2aceb4eb1af37ec75eaa7409bebf58253601094a224bed6d8d2ba32c91d023b23b03322250e89f246fbba6fb0c12029a04d9647b0bc84591ac1469660094507582601815cf50bdb268236dae575c518b30bb6d66e3a70bcd97edeb05e836ab1c61a6bac1916aaf52fbbe102bb7a6ddb2f4edb4c50caf698cd10bde5178bea19a73ac6b5eaf22bbe227515cf12af56d95bac5fb7a2767bca1eb1bb0abd9eae429fbf2c6b59cb5ad6d281afd74c4faa5caca1d7ca456b9e3e5a7b57a16b635af45bea3375fbf811662d0e4b1d075e97c50e9b756fa46eaf4eeaf3ea9c6e2b97adcbc305a71eaf3dadb037abb81276ab9b4d8f2d2d5cfe81b31a336bc51613cb31eb66535499b2c329f22f9ae014130783b05f6779d0b31ccb435cd681438fd90c965fa9da5255b566171cb33fd875f6837d21e346f61aa7bfcc468d115e155b5237bba0380963b2fbb6abc3f2ebe61e1e2ed802a1592c9cfdcbec75dd4e2ebbe049eb3315a9b7dca7b807bbece694aac654453d75e9b76747710f6e3c5c42967575ecafcbfeaa359e5eb99c59dc95af6ba007d75b31ebb061dd583fcfc2652f7d72f907be7a7e70de9e5d1e2ef8ba0b3e7d3bb1b01c27b270da4d9cc4252ef710d181b7c3203865c651a4916a50c44129b03b9c22adb5d6deccc3056b3028491094023b69adb5d7e335023ba9d1b0306c99b0a5025bdd4370f4c92e0ce223cb7a9c88645355316c51ca01820061092f1f7f629408450c8236d15ebecb08c52ac147b8fc84a82490366c5106819d7c104e8c50b04a020912a1e01c7d2004b2b87254342a5b8643b234022f2594f07c8046a24c7259969502d2568dd2c811782389c01829eb1cb6781804a5d46fd1a71bcb907ce7eaa30f9034020e70e8e614f689d6cd5648156c84c446482bbfb2b64a29a5ca889441584a2965ac710ab4c9700896978f09224c11b1ecbf295cf9c1f29008b40900968f9507dbb3d2073f0094e24c1391155fc85a6bbdc9718fc668add5ddb353adb64d4436bdaf6bec2317e3a3f208cb4522b093d1d69e17bed7867826567001f083c20408cf73978b8e61bdbe1d32a838f124cb8008bd63198dd0ad87adfbee8ef852a8d3af2bb32ccbd2b1afc5b2b26c458beaf1389066b7ab1baad5cd70c5cd3cd0baef59d6caaf3eca1e1fef345210e0779ae579a08ef51ff871b208cd647623d2cb6cff6ea85e9e9b439707627b79208eb163c7b6fe9eab8cef75d6f5f4781f67d11df106470576d9887f37e25f3dbd168b1db6d5657d88136534e8dfd579b7aed1d24874995777c5b35c3dbfc02bb28c46bc0ebddab1ec0686e377b48a9b5737be6bd609fc5e9665c781cf7a5d63331af1a14bee9d72f22a4e7b0bf7ee3bea27968b1363fab97176cb54ba399522dd17b76b5dd6baaece7bb832f36457e7d9afce8478f1de1322bb3d748d757b3347adbbc28941404140d6e5552ffbf59e79667e81ab45e35d27bbd7fb8e68edcd3cf3e6ebf6d035f275460d7174524aa9acb787171feca163347e91087e99dc1a88fd0145558585ebb95468db889d8ae5778ec03a3c116f2062797337bd855df70c797a22eae963e8319b11afa65c0f8be989300202c1f2eed05448277b33f044d4c36cc64e5fc1f5d6db675b29b554c0d4087b9e8867d8bb5375e62d96f395a38f97575ebe0048101536552972f3f39ee82c45edf1b5d65aebab9f959bd7b853eec116672f572abda5a5546a79a954e25a2c2b8ee6364973cec77969d7441cd236b2628cf52c37a7367a5baefa8bd89c425a89552095c6f35e3825c329a55b9f71f2f0b9628ebef170ed8afb624caa81dcd5734a843afd0a6e92aee8a650f7c4c262876d7479261e952c1a3af1128fae4ee9e6c6a48fb6e7edea681f0131bab46bac3bba86637663e27869d7f4855368d7b4d8fac935be205667dcacf8cdead93e15ab4a49a54d1b757737a594520a698b0ae2e6720ba6b7a5e50f4ec1d7f5324b2b6da31cb31d3b82b05a24994c25d216477fb8dad35befea8d96ce92bd85b4942efa533d4b9c4a1d66374a67d1a9b75e391b4ab2560542c1dd27a24751d4a7d405857104ff0071e84e2566b0e507c5cab093e01cadf475eca893361520640e5820c43695a0229801e75b3b83342440c1ca408419bc191c05d40802dad47777374dcff4ccf301e29ed8f3214a29658cf185aebc52468b33dc1276d086b0772e9e61c0285dd93eedf35e4cbc7d6bc4947d028af6b1165a8b6143811dec24466007836cf91531d2591a3622228c376753e2b1e703d6542e4842034f943c116e81e527ce343a9d85dba9f895382358764abf485cea17cc589e62e1782e1287ba85a946951e1d85286a470a46a69c8f9701bb781817ed18638c31c6481bcea8630e01bba803c6c42176ec18228a8e1a41d4b04241d4a811441043e8d8416b85100b22d68837f2315a781768d3db910dde48ac4cd86eabbb61f3407b258fc4108ae1eae680a004ddc01c28ad90e4651d743d2d14796b818add0290dd522a30196d94212e2e12e86a23b05dda09529a780210e612873860977882eb3d485f210ac48213b9a50e07ccca3824c6d476059c5de41353606331b6dc610803280b4930bc0cbc8939d0628f8370c05905ee1a82213fec22a534070c2b4306842103c7dec8379463d8a0e4828031f1357810257ed1f705ce847dd92d257e01bb78ec0247a90253420c50e8a024442aff43e308a31226f01d36017272e4e709f8e4dd409f1803b3fe25437d1d3b22e3deebb02430094c122f6aa79840a4952c1821719656a4167c622ab56d3eb1b987a58cb30d574bdad97bef08533471042add0da112591252ca399b34f1a3a4d65aad6de2674a133f4f6448845f133f562e137e4d20a104581348a0014e3dcd0e013ba6d76c6a5d1387ae592307ec3019441e0247e838109e7210eb783358635d65b0c5c38bf67b30e51a87ae871eb4914f528cdeb87ebdab082c456f0ee28c5b6215b15d324acb9271ca2a5a89b855bc0de4e5741018835d33832c83f5686537acd33f0ea33ab01a1962cf371771a010f26a3af40ff360fbc961c7c103c3f651bbc6699fdc2a9e46ec1a76c9b510d861af4ed8e8d5c0206f8e0eb284c2ec06bdfc8cd866821df619852d37108ce5771015b0c38e6151b6fc8861971dec30eca11a6cf057c4706057bdb02900bb9eb81e016aadd2c6596bb551c6f46226ad9ff775ed6ec2d60ab02c0821841042ab5a0ec220f224788efc25b92536db5b3a12cb206c7e4e6a401b7a91c8431930e28dbc9d4d23619357b0225822880c49300c3f11b0c1cf59716295981cc4408668825aad65c125e012af096c9285abd2d3cfebf3b2425b064408d787fea08d25e112b009b4b96e85ae1b6fc10e8542a1e674eccb42a1eed5af5076751a2ed13142bffa56c326f8aa11e2095977f6f8b07e49e8046779ab5af8d331ea27505ffd50e835c32638cb4b7bce6edd0c9b60799b79644bd3e99cdd79cbba99c7c38195b377d688374fcbaccba6e28d0b12cbafcb46bd75cbba0e7f42c789a1265946e3ba855df354aad757acae8a557d0dedc66b7d457655d45595025fdddddd36742df883e53c4e4ca5dee8a28e5d1756281442d990a5d1ecd4a2dad509dd9e5e5ba263b8c073ce14b6a14ffa797942d9ce537bb3b49e5dca6977751770091e3c52d87e7415153d4b1af43af6e6a6d90d0cd3d7b03c522e44549b7f339b31af50160a854299955d60cbbab16460eb0161f95cc0253a46e326f865d2bac4d6316e65fde560afdceafac3755e9c8bea840986205cbc08c386e3d6809d168afdeb34fad77bb00f6cd1cbf6608b834b748dcc292c61f784aa4a040de5052d4be673c25b10420bb3857b4a7967cbf7a473cecbe3c510ae263ff775923c86eddd659336635981e1e77bc1ef57c3289f0f3ddf4cf70e72b2c44b2001064d60b8bde026d773c97108a648849020e634105800fa8c043a08c10f900d549013c2520a7102cb22d026634692409b2804da541b89291584148939f4d9d44730ad82b3090b111b48bc2182082d8aedc7278a92234fccd7b71415182eb1c9ec8484131864856b3c1f5a066f869edec6bbe919740c3d6d2104f9800b98760e30a545de0c7d07811d92ad855c1e42e2ad5fc76a21df30ddac2d7603815d10d8511b40a08d2d0276f444dc004807a151480c82e9e90e70dc5ab6205b1739c2d253c01b18e4c5cc272105912a508929a098a7ef265da4a7a852450a29a927fa493b212d8d8765e44ef88a58e44658728de1ed09890d09f6abb7d0b33570c002d05bd7c4b0e5e7a4060e13bcc14eaf02daacaef7607a1778f33668935d860ca6cfb89e2208184363d05669174922a555444a2c0e11e560be120dd44d3f71a6b370a5bb538d78df19bdf41d0eb0fc072edd88d1e561b96f5cbaa75f246ea7e2d11fb7d3b8c77b33b6b33abab97129f49dd2aaf4874bcf943a0bcaf4d369e9a3db14b753b1e96696bb5371e966d2dda998f41e1193489c14a2af60d21f773a9c553623586efaf6f71337e2b2c4a39348a692c9944295fe7029758b4da852e92993c984facb4a287aeb2b5b4faf7df46c7f00c18d9d3816ce889bce63318b113d762a3eeda07856368e4d7fd874756e0f8b51b798e5309b51facb4e262ef760d3511c6662e176549c7e35c672ba29d8c51e3b15676f267e077b33f1efcd94fe32d3dd4a9cada355e8d957d8db0ab8ab80af872e7a941f190181e0d045dc2aa4712b9a712becba4684426d712b7b7fb0b85e295de2a9ad0f1edea2c86256c9d6b886de3b4842bf1a9be9e91ccaedd0bfcc4a1d76f1cdb9701da70276d1ba6571d408cbb22c781c6871f316db207cbc83c47666d8ffd0981e9bb66297365f775d56f64b622aa00d6c0835edca3773fd5d1fc0d6fb7abcee8b57562a2dcc1a96e1daa0f06e7bf64579db352e6cf2b087b8400bfdba9370c5cb2a45d0c3cfdb54b8dccfc0bc8e7c6fb056f8caf1c0201128700b7e4d2cf1c1309b97deb6a251619337ea603b0422e110266ec0190ac1b1a9c868311c1273f042be78e232323ba62f2b9d39b2798748d23582d8a87801e7d483f2071507c24bd8592910eb77c8c5f786d3837304516ff0fdbdf7266482df256c82df233cd253805024848241c1f410c63782ed1dfb552b9020d026747a4b08b449e207770becb53609d543621dd4616094c08ec8916924096a07d4084d026d9e8a4271993f0c009dd5e9fe001fceea45cffa7b01489d63d1e234af5cc6d1202852a69b59e0d44537b3e0e1e614164000528ff9cd9673b9332d5e684e75069bead2224366ae979d4e332c5e5e822c61d1e2f566d455a7a8d33cabfea2e2e80fea2ad475541775693894ea1975ea033bfa83425dc5cd1cc5d11f1ae499cf1f680333b31928162d9cbc46487cba3c12c3cca099c4859b4abae91664492d9d83390e6cf119d53b2e7797e17263191f6803735f2ea1cde92fb7f0a6e52f37b3f805c34d16dc4c02a30476f430517598fd80facb506f21c33ddc3decf2167716815d11d8e553491268c3e2f4d307c5e2170bee6d2e2c5ca48b6cc1cd22e7a612497ca61ab6129107bb1fd8cd2298c21cf5abb716456c2a8e47e2aaa2a15169526cf52dde6204762d88d02254a6858a0e19926a712bf1d598ea12762d8e419b16456047afe230d8b5b815b4a9fe321a2dae6a4143e60f762d702e0267d55ba4281178d372d511184325a6436811d56d71a98f119a54cbafde5cb42dc8129716af0fb22455ef7239046c2d5edfe23adca54c60475b9c9efed8c83c778a5b7134092c00bd7664a3f929a483176326e91afa19ed57c5e9293d95f27c684c6750f6f700f0f74c7fefc5b25801b8001ef39012db0f96f97b54ba100db61657bdf44b528954e2cdcbb15bdeae829b4966eecd10cfb4e02814b0a3df381af4f372ea1363b89b5300b879c32f77b9794b5dd1e5e1e68dc5ad1924809b0370f371cccd1d6e2ae5cdd05a67b0492b928a0c369a7a14e91d6784c4f4094cff32c3e58a04a697e156291533b6a3328fc4db49a73a4801b1b8f4096cef6cb195d3c8b0492960475f56af8dc396e2322503a69f44a04d9652605a2f4fe319b28ab4923afd143287409b95cc1fe64e4f2854ad9a141baae5b444f5b2d30c824856dcc3d427dec89cf7605030bfae10d6190dd1cf438ccb5bdc2c718b5f27954aa53a713aaa97d389e6303030a739bd5c9da73aea749a5fcf2c5e690ef3eeaa5e9f59dcee5763f5aae7e632cced2ec8dddcb8743ae5175846621999a7382d032224f32ca3c1e2a99919199999cb9c94cd90a9374b1497370c03838241e50784557fe174baffc0a800c0dcdc83615eeea263a0fe7261e0cc72154c00aececb3b011c057315caba21809b21eef20bacca2cb77b79f7f2dabda8eeaafbe934a8d79b6da05e6fa05e55375ba7797e814f5a4603e6f56630d9ba30584603751d0be6170a05f3a4e0eba5ebb8875f5e5e5e5e3ad5ad7fa1b90038ee01e04ec7892cb0ee342cbad7b3f8cb6e7447b1a8a8bfbc3bcc5f06c44b7773c3dcd5cb4fa7790f1da39ee62a98b3388b5f190d98eb04e076b7b21b1886790f1d03e6e6d3e92cd98c136a52fcc2bd955215b4140a854aab5029142a9556944aa5d4ad13a782072ebf35607915ab15299e0985c5931ab0eb96cb922a7eddac025fdfb4d95548894cd82dc66d18763791c949bce91f6dda90954098364fa254a99d601ffdc2b806ea9f493a0e2c89b8543bd166e9efe6896f50374be27ba470f62bc344411e14d2ed27a38ba46fd0493a067d824641af00c7b7908e7192f2441271f775cdea44fae83b44c846c20ea7e72641c7a03152ab6b5654208ee17981f4fca43cbf273c2848c17afc0571ee27d6e9c4bdae49dd1d101b00bbe09798d399b0b508fbccb8f83aec1b575f0cf613f75e0d761207df0c36e228d035f23013827475748dc4320a8b46584da148db08d3449c04ba463ede6c5776cc85e1ebd084afd71297ea9aabe52b2e3f34bc32e01086733be1f160d7c25d18c6c3edbb260000b07831f2b9e218b3c79b54c63284688455fcbdfbb23d3d819d4c3d77863d1e1797e44fb79d2c619318072be9caec13f9d731688b05de9433a8a1c5b22cbbc2d47299565c2d1869656a59719956d78a168c345ad1b21aad56b4a4b48d72a4ca9948180fe7320f2c78e05cac545cdcc381f6adb876b3096ba28c9465d9f52ccb32a0ecca6ecab22ccb2eca28c944df94d27393a091b0031cde19d480e32d909d4657662f8b956e96ddfcd25fc7b0522c0ae818a7c7f78407852785543d9d4e2d1b4b4d61194bf62d7b0bf7de0cc6c5d7654f71f0cd64afdc7b3559f63221321129b5956a0ba9654b550ebe19ca9538da35da33ce768df61017ea1aed270eeb1aed16a7758d76cb6d5da3c9aed1ae8bb8fca6f030e1f8958c8a15e7d292352e718d49a3c6d06a4c1b73af6e228cc505c652fa63291d7b7e4f08fd8de179e16101c7fca010af0014c9b48d301286228d366e498f143e5dc2d05dd978bc72056b376bb7fe3a867691087191b33d260ca07a1e000e3dba682aca590ebe194dd35e26842632591789902d67d34426ad44e2b0aec98040b25d0963b08b3b97dab0548a6bfcb2960b6217f666e4b336448c91a26b2fbd1bd3535d237f9176d310f1465ea569bf34d2eb3113c945033d58f4fc9a784ca00660737a7ed99e6370fcdd50a3d1332046ffbb72058b2e5448748780cf8793f516828788d8dd5e171fe2deab893f71f0cd441237e26cd7643bf1ca152de352afdcc35e36a385c36047ebb3bb919e0580b503006b5fbd1b2d6b583bd63144d72e7a36a36b17719da46b7cf066e44bef66bb76a9fd411b1e3293db42120cdb7cb6349cc49b5409eb241da37fbac607cf07f98e11af5cc191058e281c2f7a372c8f8fcfe6f4f8fa6e50d7ea8bd17ee2e2ebb4b3683771da4b2cb09621d648d73221b43fd8c98b47572afe740cfb6a623cc642c69b79c0905d935deb3831cb10e7fe9178da1cf94dc221d68fee8158a87d80c44ad1ed1bfb86757e21c4fe415bc4decc337b90b7071a2a17dd4efcba4e1a852ccbb2ec5b595628c4c34ac5a50d5db4e2ad42f415f63c5c913559224bf6f8e85b695b5ec792226b2fe573d131e4372bba3aa11e3a863df6eb59148960ecf0db85970766d1d509dd6aecefddbc50bfc0a41e75477b79dbb277256a20f166c7a549d9b7dd2b8e6d5771dacdb21bd8863ab15c1ef20a1eb08c86bc8e2d456b575c786529140a854221ecf65fd7a8e04a5fa954a45134c51eb45883442393687475e4b5770fa26b7b6b57475ef47ee69978d362bc4296155d6a315e21cb6ab787ae11dd74738f6e7eb11d7b7c2a15e33191e9a4ab58ec60baf692c49848f452a954ba9967f6d03144db9f94524a293a0e8c2d63770f1d63465f9d61cf5d0447ec212ef7e0d0b66d1b90e66c1f13597262d1eda16bb06b5c7e81b1ecbe2dded4c706d2415ac8ed21f4be18934d6b3b6e3f604f9c2b4c70f50d115322d6455a8976d24ff49137a599b491fe69a04a89e0d1b5f2808121ec22f29043a263881d8d1de64d1ec65f3412116fbac8550353181d8611b9216057b1776663846f270163fa2d24055b7e42fe62607de3eb39a0cd758b845e8e1823a516461f47bc916fd9c9a4800ce10838dfc2a00ae4f2f9bf54875fc0b07f94524b6dbb80362face5a113dbebe2cd5803c0d60d11f717635de3ac0eda401c19b761a91d30e6852e036d42f09d753b2ba36f9061e0799144f8782d84329e0f131ef731ac540497bc15fc60374f84aa031bc489bd3941810109319842053682368d5330090821c4a03631181487609908131dc3326c94376bca4352c9c472eb7d16538984693dba304ccbb0d882d882d882d8820dd6185ccfe526fbcb23fc5ab28b23c6c06351acebbea06c5b2601decd751ff070441bab54c2d9050e5df8c2d985091b21fb2f8c98b1d3b86f57b0c1b82e60270209057379c78c09bc1bece1e818fd6ae4e11df07c78c0b3a9878fc0b3a1f2d2de0d9bddaf218536fd309c268036d69a1042083fe274327dfc0f4945a24b297f4111add9b4d6ad38bae8f2b944c789226bc4e9844422eb23d147d6353a0ec442a18b48d7af290fafdb7863fa75338fbc897bb17459170fe9f2403cba39f4dc99f58ea263d447d135405cf3e211a470e8a0ae425b8adc537a4a47d15198daa7834c22928974538b5abbe8b934459eaeddc61bd435958984e234adb766a2b1987adb6e1635f68ea2a3e8283a0a12ac3f999d99dc708f0f9a75952bcb3aa8a5c8b2aca764592665f60c93dbb36b2443a39bcd5b5926f115e29a89a51d454781c9da85396b4f9910cb8d6d6d1f681354ebacb1a788326ddb6ee69122ede6669261f4f2484c236d263a51ca8ea2a3e8283a8aae812238b9c02315802cf8400ba98a6bd5b47aedc242a2677bad76631dbaef71557bef692f8b4570ad7fd90b590f552eb7551fb28e88456067fdd5db83b38a71591e76cfbaba8ea15f35d4b5ded2d9b56bcf68fd903d1d2b12aeb899b6be837dbdb987b39cc8045b86914ac148c1d0ae6c3af213e7146e9c630bbaa6a6a00d9df8bddef90ce341218212185e460d1da9d46156efeb9a1c87bc0b819058f671a21d42bd49ec66d9d849a4263d0ec14e3aa293e7eb7f60ac2746318cd68f686cc1b1283a49d3489a463a4e2461e774b23fd21f89845d44ba083b0fc4a247acfd07d6113d231d07fedb73e92ddfa8f7cd3c9374ecfd14873a717db1911d3db7e9f2c01ed2d5de1f89aec5acd882aec1ae9075f3bcad954e7947b076e182709e07c20b4f696312fdc390d65f92d42791482412a94f82e7813a921efb35a463d0c7ce51099c21e9ee44dc91f4f7479acf11924824ce743ac15649275d357fd27528466f692a5a4c29b51f715bbc199dd26b4b970762eca41bfa88dbb8f7e2cdd9e59918bb42964d6d8d495b83ab5658e39cf0f371c88cd346ec9d88e7b46aadf536de90cef27a337678ddd6932ee9f5a5d263bca62dc63cd14df1a5573fb38bddd0e7e16de834a3917b7068424b0a96878f2de818f5ead0296f6e41d7c0fb63f688205502fa606989e8e373d0476a5d1fdb95ede5cc67f0fa5892c33e7e498ed1ed63fc7c8ef839e1b68d4e5f35ebf439ac5378eb7d73d46fd7077dbd45c4fb589283de5e1f4b560db08fcf61fb3e86b890f4fa00e26349bc3eb4c3eb4374a0eda49c97f3a8b8785048409e1b80506589233500021366c81982e571a2f57272b6193882c0d3fb5892a31efefa5892237e5e1f0d94a3e985e2e3fa6823f20d25c6587f39f1b97d20fdcb89f7c59855e834740f7b4a4f69299a0ab4a9279faed230081402874025da0a96c7ae50f78bb70e8178eb82c0de25392e085e84003cbd2098779b3df1c7ec691972f2a4bcf9bdf766bdef86422ed8b27defbdf7ee9499b37b6ea9ae9c7cf455523a25a553461aa514a89ca09f0f1a7e31a6e4cd215faf0f2262cc0c1225663ef26093a12fc9617d2c81f5c29ba33e747dd8dbc597539f6d4e655496686189240c010224e7e5ace005c11210bcd89303816aefd6807afa1cf5f4fa5862dd877573d4d3d3ebe37705eb21406febe95dc17a7b5bef0af6e4bc9cdce10822df4c603787e076c498d93fb09b87b77d6007034f2b890dbe61e0f921801ac8a3affb5db8b8718bdfce8073eaad410a96675a68f31a8a77f8a03703830a4f4079e2c409a0263f4c60f7eea3a46d771f31a24411224392101244c6db40e0b33e6077848c3c526e22f8d9bd9b79783751113c60f76e89a8c00e1d43e4c011448deea800d83d8913212a0d4f90009546f83ddb00e08c3d410205be9b35396c9d947f77bb1c7f97ae793415fc3629a5b491044d45e6800526682a7d11340bfc9a00328253404c8829fc9a6062064053c8f85e54ade000f835c1c410261930fcf16b820936c8c0af89267af028168326ee50494cf0a0832680a468821af0e1b3d7042ce094d5043aa8c0af09274cb0c2af092776d08413401bec2c0d3368da296412c94406815088e09640641169442a8150ba83a0130c8130fc2122c604ac99a8a44c16e54d4d99a211080000007314000028140c07c442a16034248c5a2e1f14800c94ae52705499a6490cc31452c618438c911100000000204d0000faa49c07f8b595bce49f5e59d943d1c8df7802ea777f5689a64c3114367d5d7d7f4208a22f4180474b4401d64e16e66ed42c34648e288930f2d2f5da057f1803a9f21870e5b2a18bc6252924cfa260d0a593c50a258f8152bb73a6a1aac6d64cbe378fb3d8ea95cc4101dec04531a65514b7f902f4b55ad9390dde0587e8d77f8697502fa5f1032c1a79a4c9e230331c2bb1ca495b42869b312fdcbc9fa6c48bae0be603d805d25412aea4fe1e27728b17401d0965ae57af33851ac0f9bbc05c8e19acff69b9efdea4a3215fb77b26787be87499fe11781d742b803ebc92401d69a6cc21d4313265f6f7025586c842ac531f3cf563ace8107660597b977d73bb4dd5d40c21bc4b3fd8d5b3336e83c967e160006e58fa04091ec7fe7aa5390438680257e3873ea02ad4d70a9a5ea21e90cba4467e96e3e504a0098bd1c6bc982a05d0d231944d25d60bcaba97f3a6417e1331cfddb942e1ad8c01b23f08f84e016a1a3a1441aa020a4e9806a8bdd1e38707da88fbfc40a6e12d1d7dc577650b80af89136ab74b3871c551ae08cb8bb920c872ce8df841dd3925bf9fd4fdb0186e6742dee645a7a79ce183004a4fe87b47ff4a49511a0e8b95b5aca327a4be8f44b7c119fc316fe32f92753b1364701eae2340df6befdff76501f094db4ba79f4af5067649661d3e751f26338a5b278dd461f7a31c592f45deee0fbc2bb526a0bb5b5207254d97cb36a3f27032e64c04519f2a8caca3a062b695bced3eb816d2b4c8ce4037aa39a23eea9c715456cc406db45982412e716126e5983d3f2b60affe4af33f5207a194a97624467c4e195bc34188090a0174a8ff8e7d6868d087136d9b429ac7a8690bcdc4f93cb09e64fa83106f4b12047a27c9ec887e0a22acfb1ea97c62501916b5ad9400fa268c818367974680f967e5ad27b8a620610f11ead442de4f31cc33e86decffb6c88554097f59283b3162826a9d5408a08e5b6ed9c33a0ce17ed86f83a050f89b9b7cb88f6c267f521f631bcdd24f0782a05c3030bd33e4a42fac864a030357d4a28593446e5d0cf15b9ccc7a8714b9d5c262c201fd822dafa9a02d7eef3b9d2f88fcfd44397cdca1ec57ea3c4f6ca088701a32c45c133896292dc5436c2aa7cdcf62de694f76c8a7c67fe8b44a972c1af73fca28b64acaabe62d87f398b0fb865b5861d30aa9e97d49b24304e38f293e2c3b7cd9a54a0534ff96c2f5cbb2b661a1a4c36c6926955ba78e623f8cfb70b045ff4dfc2da98de9b9fb253e642ed209888cf571b936258e00554d5099cfcf87f2f488508861ba3b4f0ce62b61a5380ede8164c4a286601eb315f158152ffd96c37cc0db43c8b8f40713f2910f71e8ca9434a4da071634fd3ebe64ab633d8320f68dcbef29968d4c0c65a097205c39066950820639ac4c841598b4931e4d7eb13b45aa42757efbe0513b126a92787d04e21d7111fb8fed87e67d13755cce850de155ef023e4a81f0918ab085029a2439a82049981682e5bce280326cbf9eed210ce0cf5742bee432a0a39ee19844e15e7d04f336ada1419dedc02550509c5b5351fc6efcdd9714b4d7d989c1d11f47ee633857ad6b330f1457d7ecef8c88cd6654ba14e60cfc5a0ec223a10a536449dd4c7563a80cddd37e3fe87ae59094b6eceb5a8ed6838d0d49362b238952d20a9df16be2951534816c83fe2771ae63e179800d4001166bed891b211b0520297d979ab206960b30f3186c2ab898238695ed9dcf89623762a2cabb398898d4e4688269dd8dd43e4804ffd3d4b880e8639a3a4e65ff1e3c44793890df3331e6cb5d078a9e6f12c38435224fa3e0cb88ca8a00eb271800fd7f11bc703b6a7d9c6fa361bc65f82207c46494359c94b3b8ba899e1124a4fdb80fb958730ec72830bcdd5e89d0c5287b34ab46bd862d108e0f37bcfd0ff954c5e9ea10317108ac11d68e1e5d2702f31ec4f81816bf83543b9536a637b7990455a291841733dac4e141833b030fc924e2df376df5a0d8c52f4b2eb2c2aa4d1b7a195050c5a969cb417e7b2c74c6d0e01e7658c0c3a4346a30d18d1346d50a640e635936f5299c4d28dbc236d9a9a8bb61d384b8ab5b17bf93acb90613fcf89dda80fa82f803523e166e13ec46b28d8c03a4d89d78d079971d3ad1ee9ed681fd5d449f612a4cc34690c8484229b67f457802232c93eb55dc908095b9b81ef25833f2a80adde864def4cd9a3878a44e3e0fa329f3e4487de01326989fbc55f49012b259a211981f4576ad4196e4b5f2bc66c7424264451ca265cf48b406b1ba28b7d3d0497b5dbbb97eb044fbad6519488c22edab7364404983a3546d2f6916a93401898eca0b9dd6157708e8a3d58451b4def54537bc5e872942d94ce4a2787649284cca166c2543f7a992ac2ce1afc00a450f8e3ee5aa46e3ec54231b1dd4af310deb5e0579f011c8599b298efbe01fc50628764f3b9cf3e423aad1815090a15f935a2db56c11c59c65dc7f3f15ebe0dc223a3257adc3544d0be58b8b890860fb12cccb5614516899d84f1ce64ddee0b287d9dd23a3d66685785af6cbe72d40f1801df5ec2e92c3523ca126b52891377fc03ad265cb0a0c77c6bfc16502860c507dcc339b34b04361f2774631cfc6633896e444f300cb8f0cfeec4647270efe5401c7025133bbaa2ea9d5084c95f14637d50dfe6c731c854ab1e392c19f8aa03148f4e42412253a0568b6f8539b9cd6ce5fb504e3fedc1ea940e731186692bc159ef2c04547e1686d18b4f9bb51153d3a1dfd88161d7e38c9efda56c65a56cadf455dbc693388baaee58fdccc1c6c0dfedc3ebdf2e49c8bcbb639ca35fe59a57ee1702087551696f15dca786d4850243832e8f1fdb4f82bf0f32d1e540195aa5c781553447d3a61714aa915360fae9924eba6f16ffb49601580d78b4d5f2fb277040bba6f59c34c01e4d598d0b0f4ccaf06986c48731aba649e5ffb0809cec3d5d6a5d3c14aedcf11e24dcab3a9a97159f5d958c747018192855175faf5c2d2ac50f50ef773cb05fd68d3187839285e562c128dd1f66e98f00013a41d66f61a3f64f8beaba1c46277b3001ba08e68ff7310560bf8c0048ee4089dbc6881b4adbca8d5cf78988c5be0e7049cfa4c412ece03dad8cf2fd32b007849dd7e84a942183c53c3fab51f76fb39efefa7f4c4ef110afc9ef56b9fee4c086a25f15694bdc790d1d1fa05df846ebab47e59438c86416d89a854151a9dbceb5b6dd0e78c2eb12d1e3e50c30a861fbc793e27e80a740dfec13be5a1c8787b3ab63cb92d4737c27834aa19c248802c9c0e28951983208f213b23ddfe8df615e549af870c0338994acf6cfd12d49f4f7dc4a5f56efd5a8c3f0a149bd80c034f56c0f3a5dbe86c723fcdb6aa661ce1fd804a52d451e769b5d4892f53990024a41a3fcb5ef2c1ba7e351ffe3c1181862866307e53b554c3cfd6d8975dbf6c4adbff152ad3d01e9d8e055ebf64fed4f419cecc479beecf4fdf48381cc0e548d01c0e947f2e664fe7739e64ea6c53cd4fcd29052f71e139f9e20486107ecb36441fd1eafadca9dd14286b317389e86e86b13a7f03fc874a7702866eac564c6e5408a77cf8063b8b29fd470d4959e7ef6e682cb4fb33170b250265fc14d8e72df58021ab5cc34d21f98db18bee68d8487f533b523d3bf825d83e8f67ae418a775f435c573a974706f7b4f37d47a69944fb135fc7abe54113cef0b2c5200c6df74d3c8e2e3d871b210d9d3c2bae45b179ad5e23d8cdf2c277e59c1edfec0fcabe4771518f3161482fe9ab4cdc6eb6c207812d32221dbcaeb5d7c259f188f1ae15df647cd21897f831c686b111926829142db3ac03c858f4905820f53a8048008543a59ea585d846cbeb61558fc4d93a4e4b3b112a9cd576ea83ed288ee748ac357cc5d4e431a0faee26689848dc8e14714eb32d744d9c64ebcaf5a5b91645bf34579d0c7d225f0ef801fd81d4c19c2934568f3810c72c7d73dc5d13adb1e2d53fd509f02d00b446af872a7368617aee90e545bdb5db82070bb5110c3ca180cebee94401b095606e421789ef27404180851d3062c1a7e46f40ec2f56d846a6d2622781f0674c7cb2f22d55daee233030c52ad22e61646272a098d4aa803efd82e47fdef4306ea26b3ab46146a9f073d4539cebba1119f985efc564dc57f18e6410c387829f24a9a14c48de6cf362b5c2e47bcd85c45726c9a1805f4d3cba940992fbfbe2722915af708feb1d04e45ff870163a94a787911d40480e9ad0d2fa8b5cb932f9725eb91eb4d22b9a842497963211947b2ad358c6d5cc81c528536e99612659af34a7dcaabc45455d4864322c1eb311f5ea5a2c860e9e16013b478fa5a49272609b7d9d17d5ae920b607f3ccada7d501b854a3accaf3e2bc772e2cee335482507f0ebc6ced993458a5f6e07bff748d0dc5d9ad1f8429c9e23676115f6013a6a52d787d2dd2c73a045c8399bf283e6fe878b01cc96c3b30e9d8850b3e90ee860562f0401debf6ed875a23a325b7674f7796766a8a519e25a6e4bcac078a007f3c114966fd520697da26369bd502e2ec7e7070c1696036283ec9709a3a5e5006cd3f1d9de618c718525dff2b223bdfb687b4aed906fbf9286e263626dc07e93b895d94473717570923f6f28d411b45f6fb684a82f5607bad8c2d532217427b3cd9f9a625a7528aeed8457fc4c50bfdde4b31fcc87301979e30e4ac433d612997e3f054f2c8ff684679ac56462f153bb53e12e260e761999ec135d5fba27183f463fdad8975dd26fd813b9a97614db05fbc139efd4a5e78ed0d11ac318eb98ac44756e3f073cdaa3bd5c7066e7fc47abd222fb52a0259618f5a3a55e7fc275dd21d7d1171b1468f1c576c164d7c8e613c87abdbd15cdb46b214d830fb5a984c429be456689e94b83450894f82e66afc4cd0accb2069b311164580867e17fb5d9f732333006dc7c783def5f1dd130b6827b62feb2dfc4e0ff67d191cce552f42c11826cf0c29abfe428322cc664582cb2a4436205a37969ad234c36e1beb7d289cffa61978abbdde2f10808907845862ff91adf9d80188909086a8f6129b703318d9a020a2c5094caf5774555d787453b44fe240d537f4487a03a6bbd43aa51337907401b13282ad5af6b4ec73d7659467196e7124749472e218ab01a98b0efddc7f6aea0d3e1d90650397873379d64b47089d1371b1504bb858f1f4c1f0c736e9ff0845575300c7a8c35a08532737dcf18042dba4529d3dc33d0365af143228a0e9f15e386afab61e711e1b2ef975b78fe8540c315d645aa1b22a46856b62b65d23fbc9a5d6921999cf84813840941f55946f4eb2b0f33a207c5a6dc2afaca4ba37e6f17f4aa5c715de2b825c5701c3c0844b3ff4e2fcae3794efc17e9a4dcf5c1ad38f5a9965a9e6a65bd9d53570d098abde0eef16b6bf30b648b953e142b1361b118874dece27f227037a4b4ea6d3891993545bf489a7eefb338a88eaae648c15a5e1547a4d213b511072623746c1f195a2213ec45426d781addc12c0ea3d3dcd9fc893a0e3b194f1661b8b30dc5b00eeaf4ecaf4c706e867d2f6164084526468828c3238c311e9474ed823fe796b6fdf7d9bf35f951d9b62a6ccd37aa33fb5c919f2686f5b55a5d2b4dc8d9eeb28f29b68d15038b94b6e42d39c5105ffbfe26ef823d1f9a06ef5dd6ebf73de45cf9939880ef4b73d528b03e360da83e25bb0aace47aace74602026ebc266f62352bca81a67517966736e01a798057035c83c41ea7010df89bc66dac83275b71e35b029f85cbcc2677b43ba611988f169bcd966e0378d2983074d47c8ef02180bc953d08e931bcd3bc77e9b164bd79a59df76836b6988838a013872743c9f9867e5a64736b0f9a1ebb7ed1fff00a336cdd589fd17789c35575e934122c77f258639c74201197c2a407b38688b821aa1f83f37887d130a72a0127405ed256c65c9e28cc221211ef52d1358e0d345c30f7b4dd2c601120813be4d86a3a2b9b45f453f7ee31d332924850598ebedc0617dc0a0b12d58ac1708102e5a77579cc7b8830e15fe8ca90769bb4d0bada5e4bcd0444867c6161409dd73f1317603d87383bd6f65075f3f50c13806691ac58bd97d29bc0cbd338a87a7b07ba66d29bc9a17d1033a11cbc2e008743a2309c6b7f192c3f18a4220b72a40d8111a817f2cb973b6d4161d8762ca8074303260073599e010be9335b06e4c2273a1ccb0b5671fe29d4b352d11dec4f30fef7c87a6c547bef4708fd6ab8c335b6a92ac80bbff1901bfb0e5251b38c287b375eda8e903542be1230a34c2ec5635ac6b4a924cc755611cbae93298aeac47ecd99490b1e86804ecc8cd22c5bc5aa528f324e3f3aef4c0147f4609b26db6e6badb035c9136b2045cb8ad1124856e2d02f8fd7b711fefe85a82849056d3101427c8db7e21e72bd480c3ea095d7eec4a7420b00fb35884d61839e0878975211d8d8fa42945711a57df556e0c6d028c7dae637fab36d7245b560425a92e48a044c60079a3c6634ad34f751c3a15c1922c3c20246503fed9b2618868cdec3af4e6d18980ac1dedc8be65eb4e67e4a1292fe4d799350e20939dde39e0ede3dba5a02667e21cb2644a9e8b754cbda03721565ba290b192cc40115c113b226c0060c5571c0623c885e11d261828906c7410195a6f5c8bc0cce34cb643abdf673440a382bcbd7fc6c072ffd1c954e09523d304fb05b244479e4a440c0adb9d99192a2677474f51ab18d4c256ecb6bae6e2eae3560cb0c1e6a87ae0eb163985f0735e8ec12d3081a6533e1e1ec23a1bf5571e81b7f05632ddb22aef991fabfb279eb03e3ed2d4a56705fa01bbb3c04bf5002c97c85202b90c2fa552c99abe7fb3d132271c59a49b7685223950d19c9dff4b2758d4e429cece5bc175c5f39efc913134858cea96a6832c012a66f96d47c25e0af98604388e804e7e4a101b64c38116e69c236f380ed33d8cc3d8af5c4f978ed581ab89919255a94e145201f739a5c2a84e338932836b303b6ccc85f0d23328ee342cf945808d1aebf013c17ee43831770568b00dfdb0e484b40ae888831a560b5aac185309ace6da15e0801aede3626304da763e569bca57d886191081a6e24dcdc015351dc55102379cba03b814c45d1d17a192fac5e514e1932ad7913bb0bfb397ce4af1c987d87f196c4de54b0b1050d3c1a6d18f6a9c61112db2701ac321aa2e65f00c839a1ef3a56123676c92ec8d73c51924e3a60ec65892c50dc3086a0a24be315fae88f8b111022c9659486086099347d8d264442175f42487f320f56322d4854f816ba70c06a6dac66eff657f2be66bdaa7549abb616954ce97855d8dabd938560ee6f0212065a3eb0235e332ff1e32b2ef964e8b47a0da7c2ce8803140e0ffe422cbc23faa925548cbf9f76ec2f09c64f46c56317800a0a242df89bd20284c3fa5059ec68ba3bc1c0e7fbe96b95223aff63a8a0d4bdfd422e9c1e618f2acfadd7ad90bcc4296afab212e8dda127b00747e56e8b3bd2d7618414eb9e8c661269ca578308416b5a677a2e383dd2823af4bc3630ef8758f4f056e525a580c295daf39588b0df23c2308f1d4b0c11e7cfc00a29f8c46aa5805b7c7366d5191d13ce56b49c7627a352afb75461255a4ae33e523750f5d0c280260529730a33e64345cd5b66ef8f31b9422111b3e4bef2c186581d356f573aa01ed1fe46bc41389dce6f9c56fc4516bb4122ea313032828462cdd74f9eda989cdd8a8b8f071915443665bc47a33b0415e1d79a7133d2eb94ce958a5cc7903eb1ba4bb2f9bcd14e73920f87c0652e63ba7f281ce5560832ad86ffefb0e0d8cd5385f6d3cc24f916f1bb2ae50283fd84a81464355cb83ffb92ab11eefe7740ea50f1cf3d7a49660ac9460cee48b5bbc0436f43b7b200e644ca1116c54a79f46a500d2e28a763a0d68e496838c0b4ac8038841e2dbbdb8b8f46d4c60471d32a8f865e79a4c44f95a87334ecf3c4a4a30259279e3bbd5e4adabb770b2667eadb6f7811c5af1c7e15e79db46544a74f17c90fbe3f2c1afa4eca157b6e87ebb146a5cfa12641a4a072456427fd1b50dd2f766dca6862a5900837625a2062a83411e12735d2e0fdf0094be146dff4eadffac5fec54eebe07b02594da3e8b1ca3a84387a1b834e083425b63ad9488ab7accba8e4ae86efae98a540babc8c7ca0cfe4d1835abeb4bc53c2b6224fa3b64f54938443eaca5118a81f2654b7876612f28ada79292f2f9411e2ad6f708877a313e52cf8df3005c49de30cc7179370593528b83cd2e69556c841ae9b5717c93e338d101db9e8cc13a02ba9927dba115de0918af1d88c0f0d612584083a17d65da7d20a160aeb6bf94aaeb1b87d3e09d5527e6643c5c772a38aaf8588b52194626265f96289c0f4cfa864dcbc847c5e1a4f198a4b1c225dc963ebc914c0a98c0d4ae545dfc3711db69ba9777b23dfda06359efa2b09fcd3e4e529c1fe283beee031e900a5e2c6dc679404b2462afbe1a9586d03312d9dd3a41d2769857690b4b0ef5a23122969ac5d6bab766eaf9551427ca94a9b289c4e6d563c840fe22afd155abd1f3d6e5b097a14750b7d08cd0f29e26c586e632a4cde7dc73dfdc67c1eb5c44b7cfb655e783b4416ee4ac38786586cd198fe9f5968be3c67cc14927fcb882d2ec3250a566209b21e53ac390c758c1d1f6b4a422cafadc6e169cb0e10d638bcdf40c16aca0ac19eddf77e043a1b7ad4fe34834978d0c0b092cbdd233e7ae70d2ece43a23d6b8a8c82aec14c5dbec436bce48545c2235e6d84219eeee0b6cc75fe8e9d35d084e7322153214df759e376bd58fd8ac7dc82191f5a5b9240bdec1c9f227d7312c6fed5ee98eee63bc02b0e0b3af9c0ccd6a8e5d013131a2f7f59aa5a648030805623dc53f98ad14a6e10f622378c7bb11bc55e9c37aef06e2f59fac355311b707a91079b7158d17a6e10c0b40776be7c93f2b958a4e21a6c89692ae4093494f9dce6cc35b361153af6542f416f72e300bd8828378ee1e53e7990629988078b05aad1d5edf5b112fbd5f5b7d7ec54681bfddb78c7bc1c328b60ca2f019917b0f8a8d0c018266bd30400cea8b03206e79767c3208fe53952c1dd3d1c662634d149d66115536d30ef72806a05ce2a156a747517713f7de306d8cbbe01ea75dc00f7b27e83a1f82713283cbf749285e08a5cc1e1da34098085f97d6493a81e965fb49e558a8948fb8fd169c3ea0c4d8c97939da2499f8b7181e013be0f251714dba898301836631118c4e2a1c9c707e1d1fd393974a30080503c4f54968d817253b74c3a4f1d1ea69b1149a4c50ed8d5ef48f86d9a738d7bfd2549d475a05a7cd4d67476e99f51f201e7fa7b4751ce71f482a103c4d21fa4bb39f0955a71b2f7ed64a9d8c813551868b7363a9e9c71480658ec86701fdabc248024b2a5490d18646229174ff82e299055922cfa7b18dce0a268508b2987553767108c9a011aa0ab82741ee7b50d143a658123d04e41cc377b41f09c84fd7253f06a0d9944467a0fa512dc65f6b170d7e7269f67bd76b218e61f55789a21e4ded1481ae32c346328b0814dad420356f9d3666d14b38a5a53544912bece63895a13119d771014375195c436c16bcea444d6002cf6f9071e9981e8702b96e4afdaaac194d11b75a4f6fdff6d95b6bfd613ceb1765852ad171969fddb8d26a06048aa50bf0bc30c2d374989b362efb5144907c86a1e98fd8908ceab9b0fb8073e91540f2c011770eb790f496f92ed7dbda8930478270b55d903aa6cc7f86d6b6530ab432af408c7ca2512ba9aedc5fbec476886e6e5f35e7dfedb214a32b953343743970569e7ff561062015424c1230ad28c93b4f7cd7408285f7b8e489a7b0861161991dcdf9905045e0e6b78723942bdafc485cba6df0466ffc481964dd1a5aaa6ddb9e13eb2d75453fa709d3eb29a3f9dda4e928f17cc39be544867cd42da375d805bf87a3812298582c219981a86f5ade5b15d63180b6426a2aee3404132f10952746506c91e65a992e5d33da1c6426a0fcccc688ca7dda1484b6ba5df8a898be6ee0955f413ea989fad8a503b7004fe74bd426b40b540bedc1b2e6d183604954f066296e21fec8051e5f33b3dfc6af442e170ca28be639b27c060103db6cca7cff39cbd830f74d7e71d10cfdf48141117bec3d2d6bac8784d62c18217d98030a6a238cfb14afaff9adc521382eae020b5eba42583f47f2d6a1fef59d69596ca620becafa78771125e454867f0dcef97b9e6c5396196346f26cfbfd674fc6215a7ceabc30f83a808a9a1c757ad601eb6fa432edf4820b81676b7b6185051d80c473a91f16e9208a400fbd3b7a90dd8db3553ec7949d7b6f9eea5149d3cc154b3e701e1e7f758e90e3ca11b600abafb453dd1256ac756f5ddde43d8ec6957a65b5603720db9ddbbea39081131a184ea96c73b64297e80913d58fe51981b56e83adc06b098351b770e05c8da0417c3d0a0ca7137e3821c3716812a2d59b0d7073634f5e21c10716b0cdd401d6e3122739cf1bd47f777ac7c4ce3473a473e546ab9793de0dff287f03110bd69d6e9fe484bf702286847cc1edcc2a3fe6de4c3e40d54cf5f20c016a84a5998463a0efc0cad3cfc06ea492d77597e22caebe5278064fb7704b08a98aa4208d8961b77de3938bb4824025fa1e564e60ad5c8fa83326de97e3dfb2ce954035d0991afefd8bafe93a7cce7b27b3074e38b6a9c49809581d6ba17c698b327a6a404f43aa8b794944c1e4cbc7d0c7eff3191169517f5db8661e8883ad81bbcd96388d7201e26a8504063e7f26c0f104b4bc7c07646601bb0fc5262636962696262ac3e017c4dab6770e8a69d54aea1d4d85535e3feef543620ff6a0691021f869ef95091a62f4b860dff3f804b01508bc040ebbdaf113fa8eb89264fff5a4b7ca28e83b82fc794e9decacebf9678b4f9993b33371bea70aca61ffee6368f8721c9b25c1a4c8587c658029a2e4573fca74ee9ea7e1600cb00fc0f47d16ae79441e5e1aaa0cc238862506d17710082d3e562d5e813c6465541630e592092c501e503be328266ce1896c57b03a72a7eaf9ee4efa976cc82d47760ad0e053f08d32a6384d03490b8d72093a0f94bfcd2c381ee77622ec543471b669ca32080f974bcbc421a4b1f70e139bae8b1b5ad7d434aa02326948befb3215628046475f618be95bc69dd83df5c6fcb2c4557907b522f28e990dbc4517296b2afd2e1cdeceff6b1f36a647c9228d26c2ef4abf2862c184f6e50c6f5c1c6c5d366e018cf4ce26e7813ddf3fefae6a975874266dcb158209902a016908e7dfef44b87545f1e0a8447a051c200e440d231a2cc5069e415219fc7355562be55fe8cfdaa5ad92f9b6e74007b12bfaeef8358fa827cfede530517446ced8335a30f2caa64036063890d83d6995545dcdca11fbad1a1cf183447a9dd60ae7a1faea3ca8f296454beddaabb12e405c894dde2025c0eace0a3e481ed003bf848e630e4b0c313afad2ed242341d67a2fa75b6d580589a4fcee80a7ceee0518a5a9e33ea95d860e832012117425175e4ef524d3967e69d116b504188e8e7dbf0530d3ec5e0b8530e8fff2f167ced97f2ae91a10e3fb9eddc301aee907f3234df8e154f236e72828e139a2257fda1a395352813c6b383b425184511c48d7cce24bc944da0b0dfc7748428f4811818599a16a1b8cf1c4cc2a8d609ba56bc5fbb457ba28d39f1c75ddfe415e3a3aae55ac69e902d8cbb5bdd2b90d017b880948868028e0ba65caa7de823736f53e1e83e87436dd1bf3438d3b1839a610bc56626678c56415ee71996a32c2b05516cf28b3e2b3a58fe4c72a103f6caf3805e6e89d390fdf9035c63818a6ced574395ea72475ddb67bc077b904759753517523494d5f4610921658937652eee3c3b03f1a82e1a14d5eddd5f160c1c8e312f7090dafbd9edf00e8a35b98ab802ce4cdc5f04f79c2a831b1083358c5e9bb99f39e278c477e36562cf914907762fafdfc296f7e999d498657299f6efbc7d9db2cea902b2aa3021748d1083ea7b0b0bf6de126e24b6f78fc92d9b6a211e59e5e7081ac645a26187c150ece456c2a185fdd4bec3436116c7e8d013a80fc7713bd0e6626e8fa5993d3148e49fe7cee270f1b0ccd3388958c057eda9ac65025961bde045ecce7866532744ea24fdc07ed4a2d6c61482ed1f324425928141cc548a85377144b2eb16b3b252defcfbc8f2a11e5f3d9213c12377c88beff7eeaf011fba3f5f688385e24902bb3fce7e35556280de4222f42dd7074098ed1c64fb9b71520111d079bc33de7247d0bad19cbb0a46bc17f44e6f1d7c10d0a33e14b54cf0d5ba1ae7540522412ce83bd10f80b8580800e1a08dedc9d8c396b02364f186390ebbfaeb5b27cdeb038a3bdfd8ad526298c6a9535900edc70f068a2f7c0edf5082e0b25def630d18ddf616792215a7da38b7b2e915f14649725524e70b0958b5588134d323e7c8394c6fe6a5d74c37a3dafec309ee5ec27407aebd02cfab087a0766db8bb18cb93df1650b91c9cf37b8a4538c68adf7338b568a0ca8c35f5d936f361bd2546fd4d43670a166337c1727b37a4e19e2926ec27ddd2075855dd096c6184386be24e1cc45a85318c4464c7c75bc95a93f856571514c089ab974e65b62c66313afc8938a9ebe7fe636034dbffbfd8cd1621fbe284662764e2c9308f661e54c4a4114552e5b4e3842e562e5d20796c0e8b3e1a5666a88457a0d65731b4db2bbc523e63c369f686e277784020331a18efe7d0574806fc48894863bc3c90db76481a2c79eb5a8efa0464104b3f2d7bbd289906a2de40c2b35436ab64688b2c88967b247db0f2fd90650a0d5c873c618f741aef518a53001db8d22d571d421b713dd786592e24405218a75051192b3a030f60dda3990d03b132121219d06c2279224005eb11d645642971421c07e00dd90f0a00359f056a6e130aded25636bc28058bc886c2572b3188469058e709b77794f7d61ef354d1576e010a6d5ce2b4492eb1625b2795369464681a58befa66c16b041f7d3561ded46dfc1bbace6eb74c68db14d43d55cadfa80ab9bdfe1f1a3f79e68000379b3f1d3fdd132bd16e5e70162fc74e740289f74acb16886fece5dc6fcdb69228d350f1eb2611d60b014ed20a73e3905d4a6da55c4c700c6ba9c7d73ea63909b9ab5eb74cfac60464e679c3722326c94832e331b940f1d2f3b4fcc9f3102e66cf13936c6f2d754d9dc5b120d1c479922b6f9e90adb7cf6b0457df9c101f45d524e84e14f467c352dca346ae218307fbfd36562e6ab3937f10883988c77da42af9651beaf2ab1496b9a08787a108d23c3b98b9123727db84e9b607470d7b027d2adb861c2764ac314d3cacedc8efdbd77b257c9b9731f3d6d991ef0f1bd8988f7a26127bbddd153b516c715f2fb62afe9d25aa01841b679ad3e2a84a3e43179f5d0c84f5593d5513d5058d73281a81eb16ff079dd62b1a3b5d2d1f21581ab64ae2007a5bb885fc8592a2ca824ac3bcc653c8fc770a8a4b23565aec6668695294802e974a6b2f1323bc32a70c6d4adea83eda4d7e4418c82a0db0d25ea102c72c96cb0d1902af9fb3a22427facd2240d03ad90811fd7c30b545ef903aad21ba7aab6deb86aaae8f1ad701c565ca9ba57606c4626c6c0a9ece7ffbb01a59a0ff3a4f2fa31a254acbedc430f02fa86f2851814ac27ac66ca51c8a70e618ae561a06359ff0402cebfbc50b3acd5c1e3139c12339e7888acf1f06d42fd1a8ce9f1d06cba6d860fa8ab5b2f87d81c555ad6370ceb4c71bc24d37a8a3eb9d052c0df4592aeedcb432ca1b3e1791f824f5717342d37286d8c6c182cbc20422a2932d465335d3f013bc7262d59594a25e8be7226310ae24bdfa3bdc7cd129505e11329772c7f08c3642e54d911b6151e90ca4d88c1355e46fb299a14f122f6b3fc4b4348d518cae7d12327c020168ab6949551c8eb5209b62259579992c7fdc96101526c493771dda2e2a3a83a678d7335a547803d2401aecd8eaad914852bd787a08a889463167f09da9d31c8224a72856945a700bb380a5fe4c53b7a1fc4c2e4f2f9d380a98e58e3110fc92f4215c2fd93de9d1096c8dab374b0c793398c312cb5fbf039e47b9bc6072e0629050026809614e68bc08294e5a17a7c94c2b3d9ef20812a23c14e85049f9c4669960cb97a11c0ca9cfc35212144a1104fe93cfaba3b975ae77d8b36367b0899eaf06944af3b21e0246deb0cbcaf325ea6336bb273015dd93127ef64edf7e725734045d2b291b041633138565473b4a848b81d0ea3613233d0dddff2369ffa50bc6740b07927868e7b72b948221275d2a1eea10f33ea47a64220ca588a0715972d2f560c1649e275531790a0f0b593c10dc7f8eb88cef1811e944dd1699ad4b246a7c19f98b674e3c7a5053cd821d76f3eb5981307ae669b7bef1cd093360b3eda11d2bcee774641778c2a40c0dc17ddf966c924875235bc1dccaccadfd0fe6f1391e9e71046a21fad001485a7a8229675578b26390397bb49870c1af998418331a6b6505e4b295813a4d4fe5ba3529ec53943a635d6ce08d7987677baf5d8a58c40ecdbf1e9986bacd4777eb853c59fff4d717260965aee4849491c3b217431e703a7f71ebb408560aaf527dd031554fb27cfe67210a21a455e88157874cca52a485412a21de229071d4406c19d5dc870c6dca5789d054faac569542a00afcfc7b3c0089641adb322b52737dc3b1a7136d70dda4d2acb817353a96b48e270f62cc1c929c56f224d3dcb7af0507cad100842e0ef65340da48a3282ac62a1c1565c9f6998d5adc14328f42b43731c4c64d2d956e45ac5a444762e5ed0d985944808b24cca93d1b0b39cb03ee151d25448c47a2ccabd56b6aaff47e69102a9c6bdf52e14f52708b67de15c00fde3e2415fa9204edaa7607c4a1641440fea3fecc859090b1c8e42d1ebbe542e367f59c2b191301fbb882867ec44e6c0c5d721cd9df42fec4e14e3ffb16790dfb66d9daa57b7f2f4938bbb1944dbe86da9695289e0be861aa29c2b020f1be027629f1ebed18575d15d6e41c66191ba3c84705c8f7c342da41ecdee6e6447a5584d7db7d3fb90c7f103510a7046f6a8264872cafce6da873ac8f31ce9c924075d4a678939393097517c3b35e18314bc747e388b020ee5e703fa68c7216419195bbe9c959ce21686b293a3e89aff42e8f74c9d63a8b46aba712e3233e90b10383d4ec2cc4a4f2617cd09869634a88da1c76c69d072526b9f208416f4682d3903f3f7b3c006bbe495282c9a4cb72cf73e6b572342720288ab10c33dad4be0b9fe2170a353333e55e90af002f4d40632b582cb977a8aabf10e578ae3f2496dc2647aece810289ed9faac3fb62dc6ec6bdf5bfae91104b35a9daf6d697bbd9cbb4746864304ca640b48f2958e991f805540879e6a46c52b540b8c500acb0f49e9aef4f7c74656faa0959028526ac50c6354a5141819375dcc7a58f9ddbbb17a8d8f141507f9090140d268651265d2a724771d183c7cce1822eaee28759c83df206998f1cd5f93c8cbd7de99c3508008c66210c77677aff50ab40aee74afb20814bacc262162fe1afc7945488a392d6a6c6e9fe46c2855b3772069193bcc917ae426b581bfe04db488ee84a94fccc81691c30e3a12d433725a4b005fbdd341851798207dbb3555c04a9478bf4708f49950f0cdf8f630d7e7f3d56416a4b94756552ca9979755a81916b0e2754f76c09f4f084bd51943108ecf90f392c83c0998880a2e854202d817920fbe56d02729d4a12112ec6d2611ee21bdf9e9dfe558cc9cfa654320a046451c6a8e9527f16e54e79e7d1a227f723de45515e5b30aced86089c961c3f1948853171a1a11eb1049d6c40176dd21f33a2579a42b50f63accc011d4c37fd0fe8c1f5749f748fef48975c73c09264365d5c5341ff0411ce74611a50291618f290ea7f61b50d82b13c26ca0aa5e5fff21dfaa457ab70b8413dd75953b35db45def80f0ff9fd832d5a743bed1dc44304b4eb8008f949d303f9e6e5824d3a6652c2c5a7926a76db49c46042ed38a86fe0243b82381810fb89d7287ad2e5b1dfe6324a7a64fc34de04fb5c57a62b1da7bf46866fd6ee304504a0de4c9d33600b86931862cae1581095886502cf2f3d424335aa878b796d71e779b9374e1f0baead668041b02c2f34f19ea2bc890ce2a4b5c321d419e36840678f04f30db1a85960bc366d135af92ea3623b4779ec3079f0e365d6ece2d523e52b9b53bc5e3ecc10e07e28076328cd4a2b1c4f73a28a3d0846cc25a46a69567a6025ea30ac318ea83b354926218a17cb707050082dce157ff1243d3e4951c61d99708969b7c6b311cc2c6a6877e425324c9942ceedeb35e978a621bb9b6197245a775d3ee2bcfcd6c0385884d3f55e11fd7ac040b9581d5e7810299899cdccdb662d108ee3e1aa3ddd01fa9f9325eaffa2123e53de070c9582e856ef3db0a976f33f0f04db97db8746501531aefc0f8ffdee60ebc49f8ae0e8cf1cd4f328abf5c618b510c31ce353fa3bdd4f14d619044978f40e7ac85e0c3e37d7adec05987afeaa6e9b27f4740834c4b625c27ce0d16205d0b56c1a6164a089a12fb23e8f5a36b35d606b1a428c54b2a8dac8711af6d05629fef60060fd3da4207f5d95c255f487ef8cdc236f76c685cad3cbb955176129ab046bf70b1186bdb001d387712a692abdf009f0a58da14d05f63fbddda584fd4506e9f4880a6602b75242c336d47cefb395a254c14aa89cc82311461a23ae6c2b76d943efcb8434e545a210cd1312dae0c774c15ba18c44fe9bf63218194017023d291535adbfc6f256016ace36800e8a1f5d5b29ae3a5491f39ea38361fabd90caf6d3c5972444a42db6ce93bfc4cb1a5ee1601e6efda2f3de694ba10030b6c6b9dcf46b321cd297ba12deac0e1b454b0318f6b33e3f81990383789274bf4c1b0b1588fb1e3405a34a5dabc55c72ec2da1533139030601945deebb48dc32a8a33990d3a161df422bdd6dbfe2734621080fd083308c2415f445a0435940f3aed48ba1a45510a9c3805fc91eb8c720377395ca7eb3b2abf69e24cc1e9b87ef3977e0999e0d0833e6e66a06cc36b294049c1a094df440d711dc171a21971e51b95d87133add6681246600a4d10834b2583485f68d939b0e1b448efcc4d21a8bab06b3706308818bf11c9dd533939cc5fa5d75fef9802cd49d552eb47a440095e4730a8d9dcbd792fd90cbb07e48b19723e15ddb834fe2fb8fc629473ebe9be8aeb32e61a25e4bdacc111fe1fa89250a8579dbb5f1f749fc819dd4934e6202799f6bb35197e4e68b310cece282f12fd51924e35427b9b3be10417f652ccc1371a227253809d26d56275d835eab93ea27c12e2b544d2dfd534b629491bb46d50607c7fb0bc211c09c8373dc1c964c191862925ef571cf628bb38388bbb3bd64a4b8130e9c1df826bd13a11e9829488c1a044e99537e70037f1b54cab4eae33fa6bd7500f1d2453f57bf8fee41f59c7db7cf806100f8317dfc3d2130729d034f768a7841d3a1d1a09bf748daeee681962f2d8c226058a0e413cbb6104e48b29a6b0a1b77c3426a1c5006e2b004e87a4b0f73699c0137eaef4aefc200f80398288e7c3e0e24f0e6d9bcf67acc0f9040c7afc33c36534616920185b622d49f1136cf2e8f41ba585eea9ed5c7aecdbbdf313181ba8261b01f7002baae390cee1409654527b4295d07fbf2360fe089b1483a0b002dbdcee8332169a46f625e60fe96248a7f0f20ecdd377d7073ac634476e5bbe7555fea2c252213fca715b22741f6f79e51aade70e09fdcdb1a40c771d2867404fe207c17b31c0aed98904287801a88aa6d32e0433e80f223088014faeffb790eb10f676e652f49ebc43f44b19e3abb4296fa27a43efb21802e5c11c96c92a51c356a6d445a52e6c191108b0234ef9341ed5021eaf1e59510244d98a34c84d57c1ba8d027f8c5b9c2390bffbc96e8d7bd972dc82b9628b8f3f4ddb38674149bad65d03e82f2ace319124d60969c06ca9d9f15632110e4761fe9e8b37f4f747c9eee5fff6ce77a82a35a7bb13d9cdd2a4aaf5a669e81bd9dca75d231d1a3482789a1d02ec08117d5f2fef099783404080f5fe904560ea7dc10eeaf14fe386f7c609927796d0e2be4c683058d46381bae3e8f1fd35d64a026924df30a3e12650462ebd4825ed1e570a95062091c3b632f3f096f6d9a218440da221d593e86b94c0a2146b5ee27e2ce2de622a889132d96c72b78f75f14d621cc283ae1befcf1b26a0c62e289c472f8d0a0dad7fce465b2bd010a4f12d53de193faa42381499e189ac8af48896b802c92e0e85906cb52e0d73786dfac81cab9aa9811578117134af7e87e08f2200e51dfa9a8f1df91d7845bffa2a608b9d9d8ce99a6c83c4f451d7630a56898ac99f4f11da6714af2b229ce0e9a3ac1974974a036a4e5554e62a1ea7051b2a9b2f3c991cdc4bd3ddf4054c19a6eb80000c8abdad07f7929028a9b2025ff645d6dfa7c508a0f9abb338b96695c3c0332b7e1ab482fb79c47c0e549ea4c5d7d21ea92c86253a5af9f27d4028fca66c0c8266b3d86610ac2e5083ab8fe085604dcb34889b3ab3b349b926fd20eb3c4167d08dfdc1bd6fbf4dc7a26d1c97859d0c461b8f829135f7a747e808477549da4f3146961b50ce0fcbc5cc839bb6911ea6ee65af0a5bad1d6e4c0dcb9a457d12c0efb78ddc3f7615dfffa6bef83aef4cf5785d65d5961eefb9d83a7fa8c93023acbee7ae9b4e17281fe7f1ff2939480e575f93c83f55c67b85487ab9a091bb1476e3af741b0511b963b6cc69377b2f1dd7012eb7674ff7690a247af890f70a821ade712bb51c8528a2eef57707d9010280163673e20e7da9d775906a3c2548daad9cd5a188989d0a1e39d707fe6e364928f46c567be5b5ebe36d74cb43846cb2fde07341376410902dc0477be719aec3c1acfdfae4fe282fa4ead32610c79e043371250039764cfa0a993a027571e1e55e0a51f43727f3f67c736cf02c4c672582ec0143c65d7fe15eda026f2e7346824d499ee7118b80f9b51f59f7dd1a56c23bed2980384f181ba1cba95bc63300cafc81a4882477c0d11a8f0df8caa8e59c8355a80ba1336b37f29b54556b9e57975a0cddabf4161c001fec13fa00afccbc88f8bad37e577cc340048547c481ab38b3595c76423678153dcb7345601506c9390c43bd335e2a4d5158e260b0ccd2a96c3e60723b245c6134abd68b6cafa73002e5f4ba0828af3db8aaeb5185713c4e4ce9a2da366395cbf8b57821e04fa52b72be231505d8c470fa978d89bd81bffa2b501e8d0471798977d574da4ec12ce17832336c80e97b7028d4a133290f1a0ccda401b7050a6743d1019110263b653bb26f438ee9d3597d1833165452ca8a109f7ef2b80fd574ec26f2a307735604c35ca2fd54351aae1cc8bfe1b4c102f69b89559320086d802004bbf3079e85deca4fca929a16ae11e96530ff583e22c4464b6a3e43a3af5ea0430e284ff0712b6d8ea34035bcc6cdcb102b3ff81aba2a598f196044cff4456ffcd84f01620601364640d5a6cb66aa7706fe10bbcab7c1487996e872094397dcc3d8d3d230fe33795057e0cf938130ff7d3d087a6e363a1bdfb2416b89fe22c5eac8dceb0dec4162582a2adbfbf18924de5e5a3361f60715b6e06f1d647cbc89884e61d842f16f89fc5c979e839592ec4d81a860f15f33ac70f6e41f33250341e974d39dda9d11fca596328a79816ec4471356652f5c09527ca48d7b794578a1bcd0516ac9de572cd17cb404cb147162e5a473c1265589c30cc05de843801135a072e3736a8c704f81480d41b8c7abb045225f7610e37e249c13ac81ef22b8495c0a1db4464030810dbb168726aca49fb905ca3b45567a7e4f8a5a108dfdc57461d15877ad3c92bcacd1fb8111047f4ead65f0efa8f6ffecbdf2ff21e8662d4d246467d89716b12a60ccf43693e2554bc52b138e347935621aa78f062f76540fa4b019c0be331d0e4c64f5dc922bb0ac6398eff454af30e6676fc4d092caa6ed17a073c1488097d2cf60d9bdd68146b3d10a4631c017abfde9069e249e466de60a5982c2b13f1656e16e60379639dcd01758ca5b3bfcb7ea8ded5502db51a26d2d5895f459224228972ba5ac4484a4d2feae7854da026f344284c263680cce4c1a734da6548496022c89e32510ee864426425a4ecc8d1c606d7de5a20e84a2bd20d0bb3cb563c673c1e56057dbac8432be0007713d3cf7ad73e07c582a9144550ac74deac4ba2fb65c2a48bfc44651c13b04081701f3b37f65fb871183b4377355541fa87fab929096a247455a06bbca5be656e3f2995984b5a5ead11d6d674e7c7c96f60cc8833f394e78f0295825801d970e2ea7adff4f9f5cf71f9beb99e173f1dc69cb422491d79e7473fd3023781b7bbcbac55bbf75ce8cd09fe37c9312259305dc8b75f71527b319dff7389f1ddd4002a1a53086579af7920c8a7a23a01197ced8c56fb35fe36da50588477a9f073ed127b7803ff06d5f80528032305bbda865965b980b8105116fea07f1250fbfc0c2ba93c5251aac8da6829f9afd2f7443e821bc8cc573736ff952119bd2164c3cf2ac12ff613d40f304976d3bd936087e373fb9479d8a3bf3a2077160d1e399c95e2e5c4c550c2b9f66d26927a37712147de4deec7d0a69fed00954578300a14a5e0b8f06ce20e27e554c1fd29d63634fbd193867dffa9a72991b212f4db656e8f1d26a68fbbaaae6a3a6af9380126c8d57f7867902d76dc012a599b9a313052af652c027fd193975f9b8abb07577752a7a5fc96e085d5ef23bd30b7bead215a3acf727b2eb6b8c469575533aef882b7b3686c88976c6272b2dd20948c9e75d7e9eca9761ba7a956f8c2e5a3dfa7ac34aa09425c6c563f91f214919211dbdc2256418cea1e9360eebb4d41661545b854fa02d86001a269d7817a654890755ed323bf29ea49024ee91dd5adea87fdbeae488c17aafec5e74f3c0401ce20ea30c3abcf5011c228ed401b411e3505152eac3a4f07654e092e8e6b68ede986773501976ae9e64b0501a1124c2b8b16c90c85fc48d5f1afe588bb5411d45cc405fa0029d13bc8ea43071f758b875d94f4a5f824f89098dbe6bdaecf08915ca1d3b0a7f9c2dd31b4b988a67f04e1aa9b03b276898fd8c7ad2c6c3b5a4d866153f03d3adaf238ceb0c2c6c20039682a11e8b076d8be8e38c516d67a94916d09be31d87b62fe5d99e922c7ee9a51f46102455c939911b09c2dea82a1f20df245247c1f004766a3ceda53f93d8e9291bee79130c4264b93402d78b6a6313b5da4b70f0a492d44466b7beafc428203df5e1322e389263e0e78ac1210226368346ebc3b57b87c50d27db57cbc72d7a89bbdf00620b0ade0752d917adadd471971a1d2bce6d89b5d5355ba67be2742ca973ddb58ea2fde6c0c031925bd7a1c5a626ebd3d207870b39b5b3694e1482655b534c1df362a3495b71c3195ddeee7e98ca1b4c7d6421e6b66090a274e24d2966462bec2fe9e8c76dadcf592ad77b842a7374781820bd28e9d498ba741f69ec3c0faff3c5f22cb77bd6637ff03a1051a85672fd8ed7fddbff5bd6af674c835c4e195e3f4a058f0a4a758fe97b2fa6b3ffa8c03e2364491c6bc90c6d25860448f77cc752b2bae24bb848e7d49ac6aa726d799c2ed921096c57cc734c8ce4d1eef4c2cd6c978558affd08d370191c2d12409fe5e871597d1480fe0cd27fc25ebbc85c3f1d902bb76f92bc1aee92c0edb6fd755209cc7bb7a833a720b471fd818fd7548aba9a52d1ac2a55443650829bb1ec170ea5e97335fddfe64544f0ec0d89a0a706b1a6bd283feb1f40ba035391c1d3f400a4ac51b1196012d159ebdb9d67e2d7f5ec06debd3d8ea02ed89640a54179af703085e06e42d00d62a6338f0b3c405744da45505fe0dbc31e4bb218fe302160041e4261f5d3883d5f9b3e5193f9e2edf829467113114fe0201351efe9a8a5c99fd7fb105b3ea2d869d602abc311d7589d08cb7684b0e68e439f4ec5a02b743caafd13d364dc9e263f9c8b5a756079dec284934706f8300f1e624770c82eb49b1d42dba2ee8572324dd830ff9d7cd013a88c9398d30848b18ad3d2044211083aa127d6a12ce131008fed87bd642327e1fd12d2a3e7364a7e73b0747aae051e1f365fc7362ed7cd1a1f579aaa8e1b4be2e419200a5d61a3fab15a1be38d4e00d1bd2ab7a052a4736fb4d5c5eb218c0241d6dc7f142bcbf81e7001678836f4abb267af11fc3d0f5ab0f0e447099d4e5c8f0b25a1ecb32760371644c6d1f10d7f422f22ca6ebe90ad1f904221212270d596916906534dc1607f80a2ac6b2af2aaf9a17083d4e0d49fa91bb9c064ac3949459bf2b07c84bb5a08274633d0474e2f3950c1cb8944069386ede2425fa720975be305361a04cfe819ee3508964b9226545a6fd37033f126f5ea7105d06c8e77adb0a914476a6899ccbb218997115e48dd6f16c8d7b6e50b17870fb81fc20d67f44affa13aad8b5f351186e69958ff450236614b9f1b716f42a15e8ed03d2324d88d6f1098e53dbeed088f045966453a5537de2f22f83896acf4cfd824d4a6c8aa4a647ffb8c953a20905d70e8ae5fb1ef56e9614f83c0040559c11ce268c5526bcb234088e622765099287dccadc171f03f114f302e7883a33033247c9e2465e66201023020749acd56f16496e559aa0e46046894928046c06b5cbd6fa56107537a314ed27709e43e78f3437b05e4996272e28b4b79e843b67f1a25ecf6e06c02b2a515f7633429abfe6f14bc9cc68aeeae9c573cc5c12483df1c0ec1fd2ce466c2c2533e4bc5d8e7784589a202df77f1dae8ddd5f41285e6a96476ef0d486d85483a9246c8d110041a906de3e932d24f884923450e3e15fb7ec85e9cd5146c23d4fc24b9ec90664af4bf317c261488840798d19fdd1eeef8dc87712e203190b503519fd9e645baabcf3e81f036d834dea450cdb9a1aab52078750901d8d0b2c3bdef44290a9566dd9ea163bec991e2d13f9263a02dd0e8c014ef1e8556899e10d60d79b23c755ade75dabb93c973368d9822bd9a4c12093043484960930fb705fab1cef32ecb1c09edf3782a776f137ed39abe006d62f0d3d6fd9465c15049f5e2c52693dc9bf65026a1d78e1b3ccd5c06c261959269774c06c5cb935f8c6ed1174d7b9a1a98d441015d9038c85a24ed2ba2e5b2f43829f0f3e467443140d2ef65dc1a2eb652682e45ddaaf920f33a38d1ccfa7ecaf736e81d2d100bab8304006f68d6dc10c3c52f735729332be9f320344181ee48fb529f9a7368f2cbe8b9903f4c848835c39f9238b7e446decb812462f7a33023c1115520ce35db11bc6baba6ed52c7ad586db64ef0a831c5bf5173519bf338de83e85643dd701825a04d91770cf1183dcf55e59d56059a7f15c04ade342ef1eae2a078f735609e708cceda9a5227eabe2466a9960b2be211a3ef54d56a9a7097ede81ca8dcc6c4e95cfb30c2063b55bcc0d066fbaf3031da2553c3cab33cc0f4c8b05b344b3fa57af91d92d5dd92812373957b68e5abbb9cf197958096a327eb87c4f42f592768be41e9626ef6629ba6c31ac7ed3a0b03e6c3f0fd8bd173585574ed0ba5c1858d364fa71ef7a61d7d52c16244a8d9d02067df029887585b18bfba8d364c310b7f5379b84f250da2a96113458df64a2ef30a557499954951ee0ba4c5329fa100f1032d71e75143165b0284ae5825f5302ae89950cb1df640864a18427b05d79e7d37fc7517efb26a3c69e6ed84b4e96823a84ee1508529a9e3be50c0728de7e22d287183344a92af091b06f9e6a72b9514296f7b29ab64d1465e4c182379970bfa0ce9105c8901648648e58dc888232ab4e74736cf2c0e11b4b549f64fa327a93d17c2fca486744bd60d7edfd24c26ce9b842831a46ac8283bed2a7d0e40ac02f39f02c19b5c68bd86f1ef5103cbc4bf2c04b3c35f54dd2e386b5c3b45a1f47cf3a0ac2969781e97a854c3203e5d86bef3baee9613349536a6faa99c231ccedfb1bccf5d5f8a9b4252e66221174e1a3904eb6256932b7419a4c132dc7debe0603a76c43b2be27104c129e981931dba1aecd49f3537d669a793a6c66b556e66609141cac6288485c388d96736bc789887f7eda1a12d1e0f979064e059930a0d88b026c8699aa1f4bfb87d108bdbf14e5297ccd7dfa67c6cbc79aec5a2f8ecc9fffe1e8cc80c461e9c4fc86ca580a84b03fe14c70ce30c5a0c6d78363dba103477999d5407ad762e5a8b70a88236caa64b537e0976d628f3c416af7f0f296d9f6cae2a75b98d00fd1f53fc414bb8e23b965715f219d1b9126bcd9725bc09ea8f1005cfaa7b4172697dc538f7d385c044a6ffca70e50d37b1f10ad31be5da9da297f37626dc8165b077fc2dc3c4acad8cf7afe56bed3c21afc81a0740f9dffceb0c14d5e5b8a1a2c3c3fa7f55475baa510a16fe12b3cf767db805232257953357491f439f2c305092f5beb79fb0aaec483080e4a4352505f67ebd4e1f26351a74e68df039d10cb6609ebbd58d9415356ae07f24bf1c2824c6680edc53d6e04a1f408b0f3d56bf7572a916831fe3b97398c89ce48bc6d6b025746e87286cd4b2fd2744c8298d751058c07e338d1d55605765c2c51ebd921a73d3c62c270ad0e81365e219e016fd262205fb58b1fcac6394177f490b8decddfeb6cfbe21a15755ee2445216def2e305254d234b2d0c7c3b88f80229d64eff95345d37cf50d86229cc5d55d64bebee23aa95b317e79929ddedace4b4d3a4fd9a54dea760e854721f2798b14951bc16f2ea3315b0e7ac215058dfcc587ba3575071217420ce8e6c04e7287b8da370cb0a5efc9fa24e27813a5de2b56fe6456a17dae6241f3d8c61cdac67bb124818f58a08ff090deb35c6ccaf90caed993514f502ead345c482a363a63bd163e3d0a8a7032828936f18ab26a21122e0ba700fd998942b1d9e838e55355a02fa2dcd6f6f0f9e96c4ac15eae1d76870f7559646e93599a39508b0cc94d3b8169dc2f342054443274ee6c761a9f1564f82cc0c80158b969cc7067ebcb22eb107194a725ed570dc4986e732750248aef963a00bc64327a06c32d066e2172c258b76836ba5b04febc5b80bab71f11fca7918afbfa8fc908a01b756c0272704d601a6fd659a07677583f39516888604541bf84bcbf65c22bf7f6434aaf0b8b01829683dc4ab1e5e9654586b1502c9ccb10472505401959725e8972e60de37f0b6881bd46ca98aa7b312c0e2e3074824654acfa33f91ced426fdd840dfba527d673149e4c2cd675854673b94065d90ce00cf9878d093c1110fdf35f7ff019ece2285c955a98d74fe916d0ec5329ee13cd11f4eacf65308480d14cc65090ed84b659d0324224a167497e2eac9a3411c02c3099789b48598fe773c918feb01f7a849ec10a8af1b294ec51f53998f446ddacff3e9cc3b0acd3098f15d1afc75e7d4fa9c69f939d2540dba0bc9cc2a18483d5a9f796f8cae2c049776f08c5d461f238e391a1a9767fe8ba541fa80b9297090569a4b729275c42dc80e99fdd281904c3c5d51eee8106265504fff1ddf60eb199ba8e48d9eaa007727f50d9a0e9f678c9263ac3229041fa7b0284be9def7a6b6966e69cbc4512eed4e33d698aec04efc6785583ee9345ebf1829fb88387659ad30987dd85c60bbcd7240e9b9b46be12791a79fb799ba1870996d38c883a3002a470712cc331d5842517896d97e17966c22b3b2e3081f48b0da3234717d661bc900001ea79f69ce829774ff9505eea8e36e209465a0252717644597fb0fc28dc7b901b4f7455ebe2dec23f0431f41dc3aea05fcf9fefc16964b0415bebfcfa90bf301db8bf93aab78f2360c64024851922a0565dbfb332818bec4e7a7b62c8b0d6e76364e3c50444a9e938b5119403efef82bb1ec56169b8fd7943ca74ac7477df057c251946c64074457b15daeadd3c09ea4d07265ea7e98e154727e707c6ac14d435a891f2b6433a6017fe4c337db7a332a625d0bf6521d0f7113b85aeb980557cd6480202284805c5a4c22723018765ef12e829ed77b34055ad4162fe628d11f8f800e1e86982672b87e7637a4685b0202f2edf91905e76aecfd90db3414a0d05f22e1e5880eb7e89df77b74c2747f223106992d935b4e9bc2b48877805ce3c9247a351902132b08f082be453fe4f52d5791472e1bc1262e80dd2c2f0ecd2615d992438049011e0ebcd9ad6193fbe34ab342dc9bc5e733a0207f4280723a30c79ea2fd894c303c24b2b4c21c4cdbf7eeafd576f12ecc54fc99051ae00aec6e9c566d957a672378a2b13c5e1f55b3443e6dbadbbd6271f964f558dc8fe2b9daee44fa82147fd1191d1eb5ca4db641962fb547d5e6406ac7c24ca2804a4d7ba8ab8883106f260798936e54ece052c48a5b721053ada60f6293cd121331f4d68e46e98bc1b5a1842d16361711811e42c53c7bc0731cfd640919a6c8c15e21ae45a73754009e9c424c43a8f8375a6cc1f91e0d3d965223232334213e13319d47ab111e0400878f761ba0df336d7acaad3715286fcb1a518012c3458f82e746c87e7e9ca5cfd21378000bd9ed2fb2b86d4890fe1435c250712d40c5033fd80464ec901eff6f8f73fe88985dfcacb1bf097e1325aab5b9c5537c91c640e67de6aafd22a493ed67b90043cfe881a7d7610fe690d99e0848666f231e59069295d112c6c853cdfe1e8e0488b77dabf5d986d15f41c108ca40af1530c9d420c0a30f49a2b4e4f22d791e17c0007e05fb1742ae2cbc4ef12cfdff8747049ee180e6c4c4292da10d51ba491140df9aa151b583f63bafb9c7ed32560a269aede12d7bc3468b51821a1ae08974004f8cfcdd1d9e4651d0a7a1be19e031629131418bed0da4e8ff093d09a738ee0b4cc0ed563e142750fe36ecf107dc949fd168f3d11b8a7622e471c0d24db2a274760689b05f3c7061d3723c988a5a8d76c0d8055d0ed4e595a8607321b11ce7aeb4897478c713109a3a4deeb50363501e77e8c7dc1a32872b2f34b8a8762eb833c247ed9263f3e891a056b9db6e926113b78099013e493a9d93e1ba435d03f8c5ebec00e3161c008f60f453420b0d7c0fe27677d11363cd1f7da10e01556c3b9e9bef93c02dafee8e9a778e03af06f2a357e204a3e4236c8a1486303e60e5a79260611416524990230364e0f55104d9888fcca0206d9bd23b2a50bc8aa304ed27977bf1dbe9ce5c679f5e376137e507a5f3b9eac4f15dd27bbbdf17336f7fb955eb3f6439d3f7d7fd149420a4931ea1229be975eec1d19700c2da80bbe9c346492916876249fc697b1f0cff74722eeae4020e9b2b1bc10f48c0f9b348d97a81995ce0344350c331ed7dbaf4a47e89012e0f73024c319005a9b5499711936053352ae2f78553161dd3576901233916203f69457303e2a5b3528bc9f03bb7167b4f38c539427b88bc54277067479f5e3e77a897cf81dadedf78d95a123a318bdef2a513b115ecfdd0d44dc4e5281ef9a1cb85bae8ed49e532b809b1d1494c0561bb3b1b36962defcd75531717f40ef619243c39ebd1ea9a1540fe5ac120be92db825276a570c59c845330bf1d18dbd5c7d8fec18232d7269959b209236a9af9c505a43f07110e406527b5ef2e757e7cfc8cb1fee8adc758fa71c249da71c1969f4180b17e713e80382d1870ba6262e493fd9aab0e6cbd03842832b12701ba2cf84edaba010933ed2eb542019da88b092e980bf0da09bf5ed263b7143c83d56c03c41b22620ad6fcd24b501ea96edb34e87a2da405d477180ea629cd85a673c89f3301c1785f4fbe209300c07af293165ec1ac7fcf0c03f44202888bc69f1ce4249184a0424c786757d579f1ae78a7e0180702ad81a342028a1827b555edfde50fa2baffdf22c5ad6a9b83163898beaf9b155919382d6d5f4917f66dd8f25f76d9dbcd4f58b3f213744a626a4fd07c050db3d0b4dced4f778c5730d9287c01f0af038bd31ecb63e5669f360e6cee5ae635bd37b8841a411c658282caa00fa6c7c636bd82c4c21c4199f39c722143bad2d9c6c2a05caace8f796dce8853f8a24290c70d6eedff1c27b3d7a027e16fb8ad8780dd1613b6835993a0d96b04be5021141bba1120f9b9f92163a960fc6cb9922c3fcbbed9ba114477b6a142d73b78e78ce6e25ff170f6a74cd393cec6847f86328afc55e2bc7c96c299a021aedaa228bbed69823db499982af0ccfb08901421664f90aed6db8972a159a3ab11660ffb385afcf8763e67fa38d84918b8a4298ee760f0728da34c74832ed39884fc2c8dc67a3aac32e81d9878ea4ba8b4145a7d98146a66693ef60fd08320459058e616c102d63b340f5b29eafb2457aa71e9878806ca6370b372f25f90b3778c03b822330a5435ef6e9f4b9a70c89be04a5b69191a97e29500e0ca6f6ebdab55f585d2009fe8b2dcad0ec89bf8aac57569a5d532491e8dd17ee16677e6f04822328e07fa58537a853618e33951cb58be6860bf678a789186b8cab80ca292d4a55f3e74571ad6c417fbfa16018f6e68f4cd616f4fa2d8b7144f3e28b0d0eff8b18968eedaf568d873fa7b1f02d793eff463624f7efb42856cda96123a5b15983e65dc167abb3988a8cecd7139784baae215c7f0da7ba0cb93a65674ad95dfdfb4bab8cf916d43cb0eaedc11aa9751ec9385ed0c94bff1f5e77d1620598c44c6d09501665e5cb0a66c9bf5347c5fa20aee60ee2f71f4bb0ac79722bb3713228a7dadc79b2dc6d6088cf36201dc76bec1b7e8d82a46b14fd046630591b68b5f4f258aba6f48c1cd1e2376a806936aaf742322c2d47dd7b7ca2b6e0f8f01b6a71d63427e36986e3ab4c3d9d5bd548b638ac51374fa5654131fd87d39df489920a85770325835760f06593da260b1afb0b11cb48aae024fdb11078385e3f2f2e901fe5683a277f0804ec9d378807fb3908ac99761437e421a4eb7fea43bd493371dfcbf17c449774d9eab554d3230401b1c4d322f674f317e6905954d0c964120360a1bc17af39ca220e4bb6a9667d190590c05963f7aa0cd615fb8ccd1d657e30916fb88cf537a8886f295fc37a8e3eb146d1239fb64d2e09afaf7c984f2ce679117578e6cee02b87792087fe9bafcf7e9307aa1e1fec98c15d9ffebc2d82ec2c5c4bb93af3fcfa8c0de4ec82c6e46a5acfbb99ad0803fee60395377a086cf99aab736dd1bfe52edbb6795218b7d72d782186088d539f8464f5916c6f5f5a76a815725a5d6a9a58ade3a543686382e1f56e18618a1b423b44f74903395672a80d6e1f35f24990cda317441dcea5156efd3a8bf3b916975571cb3ef2f5a28e700ca06446903c098703ad724d0577e2d997701f22767b1e59fd03cbc3d4d7f3752981b43c7b5abf6c5f887f4da712d7b8bc8f3ab0808d79725b813e501c26040c1b3d710108e4478fd492b5913bbd377a0b7d7c19c4b5ce31085d1fe56fd57ab215333d77e965677a32efbdcb721b1bc9083372306e8b4fbec354533dcfffb30a0bfc9c13ba283b59eaf5b62d862e2d1618119347762cd701cb1cd6925e357171ab76e8bdcf2b362134d56161454114ea96423ae7970cdfbdb46886176e5eb9b33893cf85cf320a24f1b9fb8470204e1ada0648b1f49444d6931a601e745a44b88fd5bf61a8536b8689e437521002b9dd7038e491c3ad710a6cf1fdc7a52da7a8ed124f34b10c69adaa389514121a018c97bad31284451a2ff5189bbcfd64a5fae7b5717af396492ce38c143ec714e6694cadb7fe4105887b083ca6eb05940182f476ae5a551f4908486e0ad9dc42202689bc523211dbdf890ece939d3a0e97f502fbdf8eb5b552f87f3680d3539a179501ec099f9d4a2276c3fd5b07524f82784ff5918e377b13fd5ac68790398cd9bef4401081e44c5ef492ec4c1898950c1e671d5c875f180345f0759566ba91df56ac757b15a5a1330dbde8151485080c4db02219f9834f62150894140aed3661e1251b3b42601d64cd7602985691c8792418605c7e4fa07f0ae0cb48afe90689e46646acc881e33a541e4b27dc12d4b84656ba12b438445fbc25b86c8a5f6425786888bf6427716114bad05f72c1116ed85ae2c1116ed0bef192216db0b5f59222c5a0bdf994462776eb10f9a128ee872bb8d2b323a57121a7132e38c4314d7bb580f59e4fbecfb6a63aafb4ed76d4f77f04035fda337d9afef285eadb179ba7a5a9e312ebbf02d5f79f1816346f91e837ccda4baa561d3caa043de0cba7ae4474ed5af9aef45858feb6e537ee79b2989ff511e4f57c5f0a7556badc1f3814c550ceacef365555c38f6090a94bb97da6965a8620c0eb562a849e7b659ce240777d7b5b0dea7bb9488d449242d8a97f5c531d9d8879100f8f9d65250417d758ba83c6bfe0dcb6b0baf71d7370ea56d34dbefe99ede9d141ef6d64c894b8cc3021905d4f48dee820b6ad3a72a36a1c2a3557d14641bc5c233e1f75f785c67f848cdf1b1b2ce071478b93420e929be80ac7ff4086becf861c73f99a381ef2ddb5ce729f9861e53e1fff54b50afea605b853f4b4ddeb9b23e96568483ead60de98f55f926b97ac8de26ba8a89ad9eae07d1191fdde923d31e5b58012c9affdcd3328525fba978e1ced6133baff84d6e9f578c919840a55c94bf9cbd901cf75709ebf1e16f1e5cfa827aa0728f7641fbff9eca0094903bb049311a8a61e08383c7108c64e090054cb99c18863a946b59829dc902705917e95580806903d5e5d26a3dd5a2e553ba3b0c31dc07340281f7447ed63ecde0eeddeb20c8e28017281326c820bdeb7b1a031b6385f6716050eac714ed7a37106a6bc0bba962f43a0d35891d1a8736e7caf01034f9262532fa69509f28ca3756bb522a18f2606de3f651c5a9fe2f058a424dfd64ed06498388eae68d4283faf585c4bad344aabc2700ba2297a516848f158d036f5b723e2e9cfbf188f425f20180cce0395f1fee17d5bd848078f4b9d62e059523cdfe3f3f90d97c809a7925346a99646e9e0a6bb9ab1a5e1273f4dba60a8cdd2ab8d69e72eb76f7ff4173a487f8c4e4a421ac9708f277ba5eeb5e756fe186080a4c8fd7accaa2050a162df0980560038d51394395e90184d5465c2affc45a7ce00000912a9cfbcb56db7d342ffda3d30e55af8006b71891688895efe80177e020715b596cab2efc2c1e0623b554774e6be42230d83ac5eeaf0fd079e156c4893fa15230ad62478c073f6953348645f07a277943be2e416b4e0d5530d1dbae236c2a4b52063faebd588e7ad40d192224d042067592451dd45a7d6f4811a9a63cc4df4817a024ada3748bbd84c4703def4826639840d0bd4a783c60308eaf9e8457ce8be12176647c6260108b8db001912dfd70889ef6f44754b805d68964b48d5c309c9609722805c73d2864cf09a3f5009a48b3e62d6ec6eb50308c325a9d1d9005c276a353b9678344c03857c780c3fbb3bbb3df3e093e9dd056684a2abaf5d8617e6f0ae8cfc6a197931812151ba5b5cf2db5cb48eba7223113f3c2b59397d3611b608f6bf826cbbeab87e8379f66eb83519cf926e6e5ff438a663ea9c9893252daf7e370713bc69ac2dc9aad70f2f00429e1e676feea835393e7aacd591c08d24f289ca43b1f288c53b6d2edbf6f4309df4be74f94e2e8d7348c954e49066f6202c0b4e781a2734bff476169da322f936838d921795ab3f572dda4c896cecc43184c0130cafa2bcf5bb38fa4b5cec164a36b7c68100966d58fda47deb58b988b5848f1cd71fe23611d2157649113c1f583d0201d3dc0fdfc02c55758c0797694edbff7f517c5fc8cc7847c11b9aa35f6815258c0ada88291d6621a7b503b7ad5cf1ec768f3bc7712d0f719e4a90537598332304fa24ec87e8de781313f798b5cb31e54e6fe9a0e09ace9074f82e9ee4e60ef78386a6aba188eac69eb40e2e57714252e6d7c55569f6eeed13afc8023eabf629fe8b209ae219ab5079d677f3cebc8b415dbd814b86113b2043d81472f6dddd4b351c3b093ced03334dcf80ada02f1b49e6b372fd75d7e2da914062acd65e07db9d334c904269806bcaad7ecb02a4261648732672c5d79483472ad236c945202798457d3cb4bf266694d0aea1c1362eb9aba18f8b3edc9da0b8f43ae0b0f293fb0f36d7c72da2c9f1205423b1a411655906105a271d35b3fec60d4283f64c9880affe7726e2bacc47b31173304102ec75cd187a84cd449fd0b008cf7da1329350c35e10b344bb0d26b08915efdfa45d9dc98a51e2a74b16d9e43404ce7e36e9508c71fac0a9fcff5fda75287c401dbf167ef4a5a2ba644a1ba3d59e3c9f87c34aa5e9ca10e1c7ed45ad3d949f40504e540765df39cb0c3070c66adb1e1faef699f77bbcb21edeb022a280fa258c64652df658ffbdfc3d200c2ae72f4d7f516a177382e23259eef5e8d7937d3b2e5806428f98d33e0942988420128995ac77de1328e0570a2c315b57fcbeda67286d5842a3dd50df5c34b3c211867e18b888770a145954fc623e3f1def5187cd5686cd9bbc699543f8def9a75f87da575d62517f3daa37469135d7ea76f2f9b7a9e11c4b406a3140f9ca36655fbcf1720a61787256708be6e0283a55ef3d7b73c4be6c6df902391c8b10bc96668f38155f7a432163edd248143ed6c18bcd22725fd31400b3f410f8ce42dc5e9138a563a85adde714b5b8c143a4fbc5a7e2e5841b2ad33b69ae48053aaf883a49ec3843ec73fc93a038aa89e6b1b1997aff484ad77b5a79a10fec9bb24317b8ff730ca089854dc6b8a3bc905a7b3873e27a826c6755b9e363ca2f92eed7924c3854e57b46c65d58423c10d49c5a9706cf7652208d12d4af7c70e6490cb4ee5ff2debb2d4d64ccde00ffcfc6c2fad7f16cdba5b3dff90f871a0a0db09608d0437d9e7537b282a10c0b04f603f2f2a68e8eea73e3906dd850e1d4104276384f787f009a80300d6693dc552530d55957fb99b7909e87b17b383ff7c0ef37e29fcfd8ff4d4d89dba30c722e5eb3b1c9a64a0212352cec77d80918bd72752d1b80cc43fccf84d13ced2ce212b63cd198d197680f3c3f76677e7dc3f1344b75ffe560984d804019fef31842fcd0e3614cd1335063a641b846354c0af9f152814f9857ca975838704f73d65f2984104977f48a756a901278e00802c12d50d5319131c3e06610ef38ae6898d3ee7c046ae881a7dad9b7febd15eeb6d1561ab347529b654336fc4a17851050f38c79d5490d01a2d0f5856dd8a81be5d8563342fd91aa7bd03c1b1668138235928c0457fc6914d762bcf99e0e2168fbe816fd60f290c09388e3c6bcde06d926ab58af6cc43e3a48d884c9d4e71f4c79dc367a7e5b443b928a5a42658d0ef76642618f2e4c17ae6e311ff2ee71c8438ba39943aa974af2b870560486cd622967e9f73081f6a0512a9c0907ef468a1de92f76bdc3b859be7ee99bba0855cf2dcca628ad1af006be2f35626ee1ad8a19b9ca7303f9cd3d6d7d66ba9b205d27f47da6d42ba62d9ebdab7c9fb1db06fe832ade46f199ab67f785a3a97d1200ff3827a326188ec4b4857d7b6e2d5b26b0577e52e6fd9aa78b520cd3bbe2d57133e019681980594165699eaa4729c3d99f27be786693f234fc06e1717f0c063bdbb9e904184b18559b10887a56b86527b9e3d0137471e1485bb041a3201d7078191ca023379b23a4074b322d0a14563296d20d64ef86f78f0ec0e6d35f184ed26a5274b99707533e9384af7598efcef115ef96022398bdc8d1d46284ea051012160d86a7c58a651059f110ae42133e4ba998b3947ec8cccff7f750a1d3f1c83685074818828d40686e0001306f3f665e15d305f64326c4a9d0d5ace75291bd71fa31cfb89832ba177f29121916f4216c030e71c1db30c9f7cccecd3d622487d8db0879e2817d9320de1e568c479a3bccf44452080e90d258c0242992ae91d00297fe3d3e3e58459d62523afcc1fbeadbfd1caabd1f262e16e845c9198e2669c720213790379462916a71cf59a5b3063a10f625de475c9b7c40f854acef8c82ed3ad4dcb82251948b0ee5a24338727761bee50c2f338cc5c044d838d3383cf5df4c4a507bf72ef153ba626b21701598bd642a078ab286949b9b9bbfa26629f871fe07b6a80adc721cef3fdebde77b3ec704742c38b029f3374dff48a9d793a8f1e82f24a07dc48a6bc32e4820c574dfe26ca423ac81346dddfbd2142729bdc606acd004cc69ac1ae4749a9c887651cc8d38ae1f6aa5c9acf453b5d85a586c2594541810701b07912474ac1ee167a4faeef0aed9d364326ac116842fbdf95db7565f510868c696315d1b810c5b64307b0b4591a2b2a268630656dd8a73abb9f13d8ab6ed288ddf86a7d1b2bebb83e08beb88037a32bd9093d20513d99af15bb62eab206adf55485ac9eb297998d25883f553795a9343bbdd4c331860a9233498c5983abdfe8255820fb7e2b47522c59bb73dce3e4a1bc1b9ab1dcb8a17f1c34e8e1d750cc40f697beee2f142c92d95e7fb7045ab7f8fe711a6eeb0f41d7867f104290041eff6b3a627bc7dc269572028cbd879695d3d5eba75a7c03442f3ea4e00e9a84d817804e468b11fde78d50df3e9a60af599006130167b2a684c3b5f651f58e56d459103ec488690bb661a267516dd072122f916d20770ee833842d256e07c163a008771ccb583b5470f9505174eb5411ac0842d3061cd132721edfdd1e3dff0b212ab02f04b42add7f5e927a854153f58dd6b844ed5b735e5260093f8bdd2acc8c38146463f89c0266d35c50e4ff5f6787e71303a226ed6e9db5be94fca9894efae2dd59beca055d33cbd6c569c3e490476f9b4461d3f5d01e5545ac9cbcea118d44a6d9652412ef450b55a87533dacd8b914e09f4e741620f6cd469bfa70dd694b895cc11933efd9bed5f8a0c72ea4555e4417a1715e4b81c1668f6a789243425d135b1ca6f2f4a0ba35a954bd55796e75366dddf376ec8cc26ad1dae3fae9d5e7d8fe8e730f46a7194c63b10159b96785c1100b6defc50033faa212adf265ae676f29022b37e26303f66578e5fd8e668873ec71e05bfd509d57c039de74f76afd1a00a56668407a10290cb5e0abf326fd8c437250cecf1a3bdec27c53a69bb0a6db2fcf6938d18666820be51b56ea47eff443e0638f5d0e788abeb334ea05f6b7d32033b92912e1f97936061b2c4918df1323d4ad52980930a738752bfc84522dbc9d7983cf2e44fde00433e1be0264cd3e4206e8e9c2208282aa647e361aa31b9f8bea1664aa7a3c151f87d071818a30f39bffaff4ce0fa6d04ac21d216c48fb45f2263d301b314707b78de3e3f3e318584ed367dd8297d87be95e539830567ce5eb8f3879e385a824930ebd8ef4c1cc1dd40c72504735b2963fdfb75129f02a9dc4aeafed1f1f34a4c1d51c1c3b0e8281920cd91310d27ff1832aff76c3a20ef62555e9be8177219a7b4e2c83cb095e97ccb33c83c62b678e37b2373ee03c2c9b408f52577912009538d918ede41e87a8403dc7d72a0eab07fb67bd6c53166489016378c45033f218e8f1a6eb18c994de364ca8261512b4f655d1030731cd365d724b3ecc22ef9aaa8a0e8113b4f699132080cf2f792778e70b47f0b2206dfec6a31985b19f743839d63e50544f65916da4bda7d643638992bd57cbe38a3c7b9b8d01737936618991fa94f4824fa2707fa4e1ed45b59e3fd4b2c9bf8c85b1d1d7b07d766014bd9bbf75c96e7679bd50aba9337152b292d3728d5adb88f737be9714b29dd0afb985b978a1b949a9b9542abf9c3b8a5d4b9a954b5fa3f94dc3c538a66a25c28babf2eea3c26660232a3016669edfbb157eae1c602047bc07de60d80675084f596096af4874d448ca12746683a532989d8a14d6ce816fb944666434bacd026316cd008650e4d89c5144a548fcce935713784938c9e78877ff1e71491f4f4b1286ec9f6cfc1ae12ae01d42151353b0b5658ea1740123433a513b96a00e8f7dbf31445c4eb871ce2822a36c6a43794f21c51f2543eadfbd456e1c2270b4099010a80c20d34bf1b240ebd6ca971db4f27abd48adf036fe2f04289dcfcb1370c8f267f33c3c4e6133bd5e517fb069fcfe2b30e8de608ab3074ef39a484fc559a4548c08db0ea737ddccda8476ab2dc6cb7eeaf536181f50a5bf4c80775cb034e4bb83d61c0d645e60f2f34876cce48a517f0138f0e661f10c3c2225728770c808dc1c0dc57abbab673eca418d7ec505b99c22e79215b689086837101e7de7318717c8c80bfab9d6a5446ae659734a54744ade8a73cfb454dc59c04d4a41259f91b14238678db7bb4c588c0c12ad4c1b6e1220769c4c2e38c1a3fda3e0b2c1c527043afc0e18580260a2cede34663c7a13ca921c7db250f44b8ccb9019fd73bf6027ea88e58180e6af369243a342769fa74b28937750a9843c4375e6d2a88c869b5e767ed96ea417aa42174c4ebfeed96c091ebd2aadc3d1a8cb4f05c3f662eac4a34cec879604032a586bad2866aff89728fd63eb91ed4970ee55c247505fb2429cd718f3020a64132bb580a913765241b45bf5da0f7f9c8f48d3061b7cd0ae9ee73b1442dc5f89d2e5e0cf5459d8933c56d16c4fc5231d9a96693156d9d8842528aadbb790298006db7183a6f7548562fb608b0e360d0ab1b31ddd9e42f6dd5ccd8e0894a086d7c1b48b31a282bad6c748dda896b375a68575e9581fabe48faed8517b7e19403f32fa298a56fd9dc866ebfbad9ecfbd44267cc4c7ee071322d99f5fe86e76540c98dc46be378cf7441ff84d8df55b8f0d38c52bb70e2264d8b608ca770bce448c101a85b5118cb849a8c6364fa5cdc3aa15603d2d633256cf1949818e1174360482e6bf97129c4c0e517c82543bb7b44008817e97109bab1bfc1d782c2f210839c891710daf4bdf9297091bf8469cc4a7c1075d2ef557cdb6626060190c047c72e2f20fbb99d53782470d9c3e277f3578dadc30de7d29263236ee6ff8f7c4e44d3d0b2b78cdd3cb9edd660300066b20968ecb1640d6706a1103143000af3da47e6999cea0d9acf992df2ab718a9cc8ea0d980980e4fe9f6663425cfc5a31932bc738881b4df60f27af57fcc1c282ab9d835fcd061b756ddc88207921325a02389b0ea1e70801a0af819e70d0702361654ab3ae62fe3faa3dd31ab312bdd616f67822a248e134092d3b74b70fb18f8e5060e2b45d9c767ae847ee5b52466d556996e4672e6e6d6901a0ee3d1e0e60579ae4a39ed1aa16f28ec7caf2a3a5fc4a81411aee8c1ffface0701244ddb731c9c368a721e094cd6307a20837fc91a7adb26188ea1fba7cf28695376bf6634bbd84537b6df4fb884b6cc24bb0ed5d57ffe4993ee7bd01fb86b770a88148e204ffd634d38f832f0bac0d87693384cc6c8fdb6de1a90e1c576d29dffac82cc66206b64cb1e2957928bb617d51f0d79008b7a5e11caf3631786f076e45b7011d9e998b10912a81c8b82e0f298cee7a202cd2f8a0299345fa97f5a05e85f2e2e97f37cc3cc0fa45fe8ba3791b5fa702beb38c784f0544545a23011d37d619b21ee7a85dda5e26b956edd8dd8eaf2e635cbbc93ea3b08fe813311c250e42cfa7ce0b495e99063319bca98d68048c0faae7a9b96a7d2a94a89a6bfb6f747dbb41d50646fa9f45f0beb2915a40ca24197c8bd678423670a7d206da14993e74ce8734ea92f50e82bdde22b0487287f1d7e9f5d2ff91bbe860f69b83deea1c8997bac590231eb904ff70456dd0d77ecdfaf6808eedcde94b81407e09600c9d20fa5d2a978102bc7b934a2d0856e313e26b85b08935a8c712c6e86a06b2ab648b679a512439a617c349fcb37fa4d68ef1cb2a6a7e791586c4780c063d1ee9fce97e3ddce317d45a3369f4684e9cf160a98112657eae8dd40db0e65f491f2425c923263fef42b3751032f74427abfb9e37c875b8e6d36b468a1eb48ee0110471b308c8df1a982302fb5ab07fe95b5584aa39f51dd4990d33931da8c3963c4e35fe93f429f6d2ca5761cc973de520d12647c00b3bb6f7c2d8e860966c04e42016da9b8550ea42185a3ab1b7fc6a0c3e63cadcbcfce22187d9d2b1b4197bf3159e84ceef374724a96324c404677b63a71d7239e040134af070013c5aed30099152cb5aa49e8294a4b1b57b46349acf7be3154ff61ee867f722242252a4a63aefd1d23241ab739864e5127d35694d8dfb9156fb028c7c79abd6b21fe09e439b159eb05aff4ff3af21a8f645154ae5d23fff7e7f7c345b767b1f7595056aaf86608e9dcbec3532b6918c42c543d52cf6ae4093428d21d506aeb35672f54096248fc11c8cf96b9a3ff0552835caa6789cebd896c8d9276ee75cd7c77c2e64dbfb9362461a591d36e744e4e1a1ad68c1e3c295936350adccc17a15b46d32dd337b7ef1d4f3c2bf9835ce55e50dcf8900de88cea8452927ea190043444e2570eec2e6be47f9c2a2e7a4daa30eaf6283296f257e8c874d88425c9d8db7cbc33963142fb30f1bb20e9c82fb3b9e982d0fe662841ac60d5fc36bb0aa581ba13a6c6c797489139543f41205a00b9c646d89837ecbece9cb2dadcea8fd37c31fb448837adabb2f6260a84654716d9873c04f5a1aaf09555f499ba7989aec07a7d241261943b5e4463f04660c74680cb63801aa58b6062a65ab2f49e6d855a2c9ee8dfd1e52bb290ea27d2003bd6e1d5ca0ab6da0c791e7403868786c4d9e4d34b8828e86d940a97e493ef6cc05840d8c382fe748401607ff5a90a6fcfec541acbed579e3eacd81714889cb634ccc816bd4a921cc0b9473e8989e29dfb07b844e898699d31c6934e6d9e5a4711e045652298818879413c1fb38f6227d5a94b9a22faeca348aa60d9a6cd8f0c2c3e10c43d7f26a4db02f47c93e815f78411bdb90ccafdf60286cea77b469726dce578ac623ce2f17c2994101077aeddc24f9e7d388a04828a935f2169003b87db540abad15e03aba8748205dc0c06e979e20a10a90300f59622b178ae57e60c1076fb230456807a79194c921ee11deaf47d680b9a945bc4e19f9f3bd2c20af1180c743dfb42cf1a4f8d77a9363017ccf35fac6a86f629141c1bf0f7e9f049acb4d5d8123c339266d77a5ada4886d172dbbb0155688c69d02670a6c2776db39ac7fc62fa6b3c199f9dc5c0836d66c66c83b048bae6e50038a7332d0dcc236828c9fb33022433030823894a76a4d7614929ff6583b63baf58d11929e2a6d57425cfecacc4143a9a8adaf9cec1836bec040e2c1a87a44e5aa6dbe1879b52fbe4791283b10311556e3f0fb0611be696890a89734d2744587c7b429536d30359687b3714371c097ae0d19b81cd335e970d7042b012df52df60e6777146a891ec6db5bf25f7e6c410ca0f86d330707dd45b6ea530af26d79771aa7acc4c44f518e92a3e5a95cc015fa9d3fa9092575848c2f6777f805d1e06a03914700147d2d990298d693be0b2f79933c00153f107e6d83ceb71bf893b326f3761f50d10c976b75812da522e643aa0f74603b91bb80933829883e775345b7e8140a81e104b102bf547ec9ba2ed34522f5f007bc253448f6fa4b5e4dde5560b482802c2c3926bc2ec16df8a27ffab4662b3027ad9df245ef364233bf15688b061854580af74f0f2776a18dd0d5eed03984b2f0496c329c88b88d1cab25a08b1eacfc4504666d89cfdaecad588d300c28a8c29c6bd12c12877a9aa7a308f66643e19cf53b52210beb9fe24d59ef534d910bd8185a336401503701b041e85566f654fdf56d8bba4aeca2e91147edeb38e72f24073cdd044aeb8fcf5a20ce3a520785129ef1109ca186253dca11e8a8e01afdc6abd0988b47fcf40ad71b03359c62ad276725c21144cde8f53ba977f64c8d8e8f9afad1778efaaaeb8734f5eaf33cfe6772f90768a505d96642b8db6e22b7dc524a2903240c550cea0c4c959c79185e140d0a0a22c260e81c2fefce1235d525eed0d4606af932007f7de5962906f39dbb691cd89dc963e641ec0d9db13c95271d6319802fefae0c40ce58dea300fcace967da8f503d8290d362c997b4cccf7c87686a607f767de69336bd96dc5ff712f4f93b5079e6a75463e9f32a9d123dbb53558ec24d4120d1708ad6e97837756b673e45ab84fe48b98731c6d8f352389ee75926db53af92cb741237b8412c1eaf7bf7d271e67614535e95cc66299f79f686521e845f5de839d170497378596f8fbd0e559c71d61c9983e3699c36a746e6b16b996eb64d4d91ac167da8295a2fc9f56cd64c6dba3eab927d992a79615e5ea62f8f54eab43e8c89ee52e5ee73f6e080b11b6e896c4f067bd69c9863b067cdb16725c2d977076e940d8b89be7cd659acc6158bb5f64ce63872647e1a659e47d92e5f7e77b39957a19ff9b8efde651dfa99df58a61baf95e8672cd48dcc516eb355db48ec678eda377e637cb1a167347f796e8369b21b2f8dc41ee637d86d606eb3cb7af3feca761198cf7ce6d5c81cb68b607c65bbbc4cd505da838a4ec794c7c6d2fb50a2e83b321625e4a90f1d81cf17c1f76e9d4a4aa93d3b240c362b0cd65479882acfec603bb94b8d637cf91e516e89600e83c1e8ac1685632c75884a4b4464450eb0df7d99522ecebfae2f3da2f7a47c75d958fadfddcaab5f26bc6bcaab0bf487b8416a4f7d99dea32fded4d064b05411ebda733c8a3836a3b179bd6e6c6a686833590c8653a5ca51da350be558dc60558b7ad0da654e7bb96d928d37682ef39b99bb8d57f10132a769a7d46b647e3d1f4b21f883eb78d3608e5d7498a7dcb3d65a6b693051742a84de9463d1f1758b821b7f029f9c4bf26e1abe9e1a4bd151745f2a3a803e1d633e4507d09f598fed171bda6e233e2c9fe203664e779199a776911aa7467c9e6e233e7fe3b7c6515ec50fb4d7387519cd8354da58227919753ade51e6d75e1976ea9726bbb206d06d65f7864ce6b26d992a6961d0d7cb6cfbf2d4580af994df9b5b73ef4ef5b0d3f1e64c6dcabd91c667a5f9ac377cd6f1eeecb8f5ae99edd2a9ddd92d80be1c657791978b25ca27b65a740cdb25d0c33c35963e9fa23e623e76767474481207a7e6e9cc65b7743d8d5e9acc67a396c976e939ca639ec7546af4c65288dd45b08b4ec50fb48b228d8bfe2a625d14428382f62929f6dce5782c227a7da0db97467c9ec6515644a27b94b7c652c8a3dc32d9269c2d313c79fda1807e80b325861d5ebb153d78bd765aa998a9a465aa64b5655054e4a052a924137dd5e8f3396b6d8998be52c93ae63b3d77e756dc00b5a7a64b4fa592d6a89296a89252bc2595ac1ea4aaa2e8d2127d752aa51a598b34359894d2bbbb3b9b732fbe3b5a8302faace907c79dd107d3d0e4d57b3f7a3fa7340fb00b614025abe7db548b92786fefeeb577e72d21b940322416087b1f48124e9cf25b7aebf38454733fc36c4574d488f28f4e235d6aeb5a55451709dd43d5a5af92a93c1e457dba4ff781f950a0f7d190eeeaa52a559dd2adba2134f6aa5359d1f44b1d3a0e496b427ba0684343e8d7ae588de3905534d5ae588de390b42634275a49bbbc7aa94b558c16694d680f2fa409fdf520f53bcd7695bcf588ba446f35fad029ad4b6f694d688feb6549bfaf9c91f91b6e8197eeaef22c2123e4e496b177e7057937ebf9f3986a99204156ac42d3cb24a7cf5721a42fad93b7d6bd3135e62a692d93cda9a4c7984e3bdb6f0a5ddaa1d7efed9ad4f44237e8b2de9ddf5c0354deb6b19855aab9ca536b52e5a11bc7b5f6203528bc847116c3ea1510bc537954a81a6e97d634840e0eed2a7e1b554924744e6504785b5279a81daa3c2025a24454ca05e9fd3c6f0f62e9b77f2a691d359250491b099507e59eadf2606aab3cdaadab68c87ef2ee11ed71da5475c46c3242d377eba87b447b7c3be9a993309b843000849fca83df3a0db24e95581a74447b50dfb84bbd077831db23a4b5cbccdaa58e89fb4b61ff3cecd4f34f88b51f98f757b4a2a2957b4beb476a4829aea87c6f95c77af68bc337bcb97b453ff9cc36b4fbed9d4ab339b1bb44757de5ad172cbbcc6fc6ec36e3b435e3b4b471da99919d1dbb77496e9a5dba6b5fbd553bb57342613fedfc0dc39dd2c8ced37b748fee11ed619160a058cd34f8e4d18eb3962bfdbcefc31ff6a8ea2f141bab372c9fa74023dfdb43682faa5e94e5c0ee5c495a027a468b90d28734e2b3815a8fe0a71cb0be1acb11b20e2f634e3e09effa7997cb0130f218758c3937c629e45dbbbca82c8208459ae6cab9ab46fc668cd99c4a95f22e496f2b51256c75aee4159b9e12591c910846460092b3d6b6d66eb98f568b4eed72ed23f8eba67df075d3aa037d0854c9f6b8ea0675cfda93f5d6b62a547debdc8bea071d44014286549eaac26e3d84f0ab8f45ecd545d949e40074eda751fbb4b5d61b5eb7aea4cb6395c7e5948a76f9143b7079bd318e15e5f90d07aa8975d32070e3379cc88ddf20dfe57513b9f11b7e63ffb8cd39f9cd06aab95c8fa1abc26093c9d3d636bb71e37a9795aa7406aec25ec5d01f4b3508ca63f9cac591e5daf6b8575bdd230ebd5b2e6aadc594f69458bda5a7eb96e8ad9af29d72d183d4ca85eb1d0f7879cbcb7d59f3da5db5872a69adf5f6abc7523fd04f7591555df4bcacc622ee48beea94875ab37ca57de5257dc912ddb5cfca43b256ceaa5e662ff72cafb556af25ace5eed54bd83ee2bdf6b2e64577d51e6d75e5d9e162ada267dba3c3c55d8aceaaeef4ddf598f232e5d54b1daf1a03a7f99cdae79cb38cbdf67dc4d35eeab853f183577571ebb14c79ddb497af9ce522502519cab3d15e77e981f6fa00ed75e5a25731f4477531884dd592b5f20c5245aabb7671e5d5592c87957aeb68bf71e3a89987226867b94c6bad77b9da47c4ea33d6abe9c3166eb55aad3ade7ff9ae2d313bc699eb186f3c67bce1e4e82e5aa74418ec1c76741c5bb3637b4420b23d54c9697699f72ef3b889706c1b8a2e8f4dd70e435aca5c84c1603018ace5302f659be5721a8db3bcdccef2395b3c296ff99d3c2b6f799e3cda5b8e9a3cd55bde1771390e6f79b9f7118f8a1fe060f9deadb1a4f1719775f7ac4da37177d145b03d416c8e92eda9352eb3d9654cd36ccb45f7f1c58666794973d161decbbcb77116cc6f8cd3e6d0fc669cf6133b9079119b2df32034b734afd97ae622cded44d1dca3ed72b6591eca76790298c39c256e0073794fd31af1d38cf35d2e97cb759fa6e5d867c5b5e97125f358c7b8a03fe8e3ba847d669d7b6dd1133d954ad55dada3cbe55a748d2dd708f4759cdfda950bda4374d658d6dd8b1ec4d6d558b5ad2a17478cb29ead34b2b3ef5852af45272415888675940879264f26f233aa2707f9c653f0da148a9ba54e49e467b3369b8d46743e855241d1b306838db3a652796c2c813e366ba12a54a9626375d5a8f3ac67b9153990396bcb529e47a0f345b2ea663653dd801e56544ae5b36a95ea8a9e3598979369842395671596319797ba55430f2f8dd578cc6532d9cdcd8d7730ffc6817e3696feb3f2becdcd38f39a91e653a43663cc6b46a0a76d01d01e319f8da58f8f79102b1babc746d8386b41145079568e77e91e8bb1bcd4acd5981a4b9d57ed946717c732cfa4c71e8e449e6e233a2f6e8057f63405119dafb51ad1d1c0a552492229b886a1794b424382996a84090c41cc8a884e25248905a4b5e30385438a315425897c4ac788cedb3bd28fd51e7d6f5af36fb058f465a36ab502eb383fa441c96c643631d887041345f1b40a1d6b9666ad72f6d22748e853375902f972ea4e5b8ca59189448fb0a14694ca17fb6238830c30c020c70e901c387bd69ccf69a6ee087eeb5fd1d318d104b2e353c67eea803819aae184810fcd4d8101cd512e9409eac4ecc9b1bf9993a2bb1c3925ea0504db8333753e70667bd69cd8c73e4683688e6ee123b4e44693c3470e1c9c19b933d32175be8cf950428368929a6327070ece4c67b667cd99b81d6a334302a8e3e4c6c1f932a6530685f37ca11a2a7971b6ea4897530782c95364f6e0ec3b67985aa544cfbe522d51010b4c9eeb1a983db37d1d047a9d04faa3354bb528dd9409ed7189a8112542f9a544daa8a44c3a40e3d72913fa63fecb2fcc4b3de2d01ed6c5d776d5c42ccd58fa98e0aa565337cdf80b1a21e74e66370ec6dff75d0f3381b105192bba38114512c61f8e3c02fefcc53c2ff6e571d21e37be9cb3e79c6f6a30cdc6718ce52ce3afdff09b1a1a2e8de050304f7dd411b981dd4fa7160dc634f8695a34277069cb125c889032058828f447cbf35af8066c19f11ec45f2a4e6b426bb2b1b767256b8b7e59c289632d6de8545125fdbca3099d2ed0cfc96942279a94d98e264473723a9d68438fbda40d7d6e4f27a722ca558d703ef9097f6e433f89a0112b5ad1bffb25eaab6a4606b58d54a3071d7b59c38d9dd684d684d624663d1bfdd6f06ab8762b4fdd458ed84752816a3d4158e488fdba69767b50dd7a75eb765f204a7f8473a3c07e9159e61db5cb41e5424c5daa5cd4252fe7e58edc89bb52843e6a0fcda75f402701a18d0aa8393b9567da1da4925e904a2aa09255e52b0fe7cce12a2a672116c88f60edcbad2ea5c534742a3582ed1942b3cbd86c97dac54495fee5f6356d0fcdca2a40f31a2762e337fb678a759b6d37119ad778cdfec94edb4035bb4fe0965cd19ffc6477900a83c15e1ebe5edec1fc9703fd692cfd4fb2f135c67c8a7636d2b86c047a3b1ef13eb605407bd0d0cc4a862f3f8dafd1da20d60e59addcb5676b979ab595c6fc299cddba38ea4a8e3b73d4a964a52c2414085fd04a3871421c9cb9dd71a606556f7d3d8fd5789ee73a16732144706a7c6612e943bb96bedc7a9ab5d65a6ba5b448f6b092462a4f994920320484116c49945c2084d3972b8ff5eaa80b1019627b503b3f58330b421d9d591dd71e5495a2bd3be6495acfb36e6bdd25f8f95b92f0d5adb5d705e4bd18ce54020342bd19b8130c0819b038dc04f2e8a592432aba1ee1c19d4c6d25ddc8ce75eb791e3d0c4f27cf79c7c8a7c8c9f0e423bda9407fce9e4ff8731ec1ce7fbb1cf246768edcaf5f7e6cef151d9dec3c326f2a715ecc2e4258c50dac5351e679a444959ccd5c6389f32eb0276cf92a045bbb74b97b38ed2eefb7a8cef680de727054f276c95bbf51c35bb7a14ea8b8816b9c482f1be97ba829eb59d1a41ce5b1f106b57d09194a44a4ab944a5697f94d8dd881ca6dcbe572b95c1eb66abd615367f453a99c6f2c16b36e736c6a8a1ba0f68e6ca45fc597875e8a884a71f7cae372f7597bdc27bd7d904a8d6c76cc134fad96cb64a81d57396a1cc1d47d11eb2a0f6d0bb5cba9bb54cf76796733d9389fea74b22d1be9bb5c1b8a8dc691acbcd2a6ca33956620e2597da56204668d669f3064da9c27a2579bb439d5693e913624e61198b5d8aeb0fd3aa3b5b31cf410f4954f00f4d50442a7d9af3d2409e8a1a358236d88765a04664def9f29b5d5ca696db57fa6e80d82ad66578d656a1b99ba4779063273ac8bdb51a3cf38ed69f451c99d255425a9db6c812e920a94bf1698700e406f29daa27495fea6c62335934e9d66a44e13a4521aaaef8bc6298d672769f81a777848b5385a33e3b555f2bec652ff8b874a3b11966b166bffac542eff7ce5b3c6c3f7045abeb2f1d5d7e23181956b9742662d85c59493a20e0f52437f791537f852f43592ae83dcb6a907cdc345a7281ef97550d7567978ecab52f170d1b7e03c94ce68cd88a36df241f3f02a7660cd54f23a0fb724e9aa9d721e237ddb64cd88d43f3d712f3a3996a9b18a2ae7e1aa91a44ec3632c62c4c8d43d598474ea3c7cc758cea551fc908646b5c5d98b0d5d1a01227ad2e98e4dc51d4ececab36397404f43c992c6772af9dae1e4489f247790bb04fa119e4edd4e255f3b2f1a49277240bacae9a8dace72a09a8a86e55368fc47a57296d36c22ab158dca6d0ea571eaa106aac9f69024ac96e79c6342481f1c648c06894042d06c0221e6434edd6c9a3b1a4489281115a2429488eea88ee6763a6a94a3465937816a7a04aac5602c1a5739a521554e79ecd2e75ff3513749ed995709cfcb48f6a68bfb9b013d716528fd0e4fe5428af2440eb0e7b838e678ae3c2a95eb20fa94534abe5eeeb6e7e5ab516b1da7edf01b9f35164d67e5b41d9b0601ed363e0196df6c15ac9ce5365b055388ac9ce52a68b9a67497e4abdce6a89c356a9ba3f2d5a8c76955e42e63345efa786a848e291de3d6e141ac8e313bcd584e2faf5201fd145f23e99eb801e97493234de5a453b719692ab7f11b5f8d3495afbce5ac91a67296e3703dd2549b03fa25d09e4307cd031adfe11dd0ec1d7b567287037d6adc319629d7719ab19c3fc5d70ed71975f8143bd841bfc8cb01e03b769194ef702c7a90f21ddea3c748cfbc8ef718a76a571e0e00e7b12f5125798c774867a49f1a5fbbfcf9970e4fd1d8333bfc35ced7d9b1af908e71c8535ab358add6cd8d5621d91df4cded5bdedbbf6ed35fc7e19072e4c081c33ad1e52da2527b26ae1e40e5b71e60e52acf36ae72543d808dabfca4f5871495c3714460d692a0d0f295a370e3364e451a045abe7222376ee334233df36145d10c49a287244121c7d68e028e7dd39ab9922a4dbe8a9caa9f4fe5cca57f7540e3299551aea4cd6aa4914e53f98d03d5586e33d2c83d2449cb654e536d1a04b4af9c88f695ab549b08cb6ff68fcc595bb734cb6666636353e3b2fd436b7ce6b496cbbca44dcfc2c073e0700cdc7fa610c171965fd7da5b4e447babe5da559b48062edb3f32cf6057a3fd3385480ed7fba70ad99ceb391c839d63ff54228d63ff5c9c4d64e337638dd3c6d9ca6d9cc84ae53f387ce5aa4de4c66bf6cf8d6bd71bc7fea96ee336fb670a111b67ed9fbab339d76d7653adbb99b376cdd13c17340a6da35c5977aebb519bf66885c6d16fec1f5a5b6d1b6473ae07f9ca696c3ae630b7d92af89912815983794c05309fb51b1bda386b33d69024314781d6601ea4ca46ab1b5bfbc7e656abfd3385c8cac8e65c67f9cf1422da59fb27f7d7b5ff4c21c272bd7f2c6b5ff7d21af9acadf6b436b7b5cd79f9ac69ab83c0ac2589c12810d0a7c672ea3e95729ab13432753bff7a05a9af31bb6bcf9f4f95f7551eb22825badaeec6d719a01a50adb43ba01a506d3502d55823ade9d5aee29c3ce83e796a04c5323fb84fe3a4aeb4427902180a270e7872eb131ccbb9f4a08b406725e8217ca1a99773c95a10044110e4007470ef581f229f2e3d697b8484d001baf4e5649ab60f2b032a6941d088cf7f1fdd4336914a0ea9a68010a37b7e3684d21f74fa44660f79646a309ffa8ce6043d9166d3ab6efae4e5641a414feb2488daa58e3de8f9a904083873e6cc974047bc98edb935eb531c6fed9935a5fc24243da6e70e1ae1c42963b6e7cb199575cc4bf2a74feaa4921e9e9c16864647ecca20157931c2e99642f054448556710328338f31ad49779f1d6f1462732875106c0e1d62732851ddb406bb6910f5116a51972f675308d546710f952437b894b6ac981b98afa5ce595abd05e21068d0057c40a74a20d86a35a0beca051adc38928946e4fa17d482192bd47eeebe8ec442e16246edee292807aad13d7565f6f296be5aae172d6ab95cadea7ab5a851e5296b5011a5f2a1ace881e8ac5dd2dfb99f4c367ee31d43d4e93343a3a8a548d46e8aa3399faf3e31d72e358d6b97594fddcfe4513d66bde52d7f614fa75ce520541eda072d7f796bd3623e1fe6d3571e1bb5ab92389db553dd6ab5568e57b49683a93ce5d4d1d6e6a07e8bee90e8579a25ca44cb5033b56792c19444955a96827081ca43ab78b166f2f0925abe723bb636944b9170b6e76e9a0d400c6ed07af96bcf4abaaa530f7b4971acf99eafc6d4288e4736c88e2a51eff904b7e7a858e5a14def798d6731c5d91c0fe370a73cbdec47bc0f6ee44d8bd5c41ce35412a7e4198dd13dc579769f90d49a612d8443b2539df23b4e1abf5497f72fbe541453778a0fa82ed01e23757154f2d76f8a047a992a997251fc443c7a9746cfeb93a2f0dd1cd487b9c50237c6d0579f658d9db33accc3d75679ca29e6abeb69cddc24a5656ab2d5c34e350c06f3542ed0deded9cb64eba6110169447e26194265b068aa653ff969ff4c3272493934d5f2fe41129ec184ab4da1f11f243da638b2d5b2ff20f9d14410b8dac97f90782fb0e04a2d3b12efa8892f6a2707aa811ba8765539e8d232853076a012c08396dfd825fd1bfa26a4a80e748075773cbcd429776e3c448d45dc514e450e1cc9dd25696f104bc722357e1de561cd7831c6b8488da36a56d7cbeb25a93cf5fadd7981f4557fad25b14a4bbeba2754796a28fa0288afee39a93df38a222431725ffd36d91e5bab8ee9b5652acfe9ab5b3395877af1d56d7c773d54089587761de82f0896ea7b7d47fb904a56d008d74c2cba4b6df12cf32842ce23de6911a80d0b33550254cf26c060b7887b8ddf94b4013ed2af220735bba4ee28afd961153f78f9aca417bb4c32992c84d87b301ad0df7afb987b6379e463b251f4d89872d8785373c50d50db8e3c462ba59235c3a02fd3dd55b2de743977365e6d7cdc36be6d1c870d0d0a89ea5d62f2a8eef2f995124d1e330f29d3f45677676a409df4399b4ddb33abb5c9e65487d5266b6bb24f7578598b3ca1c98324dd63b1263034dee196c9da261d2f2d11146d73ea0a7b1543679f7585af07d633b3c419609648520257b3b585b7d67edb5a10dce5e776c8c9feb6e7f9597d3a8153d4a12958a4a4e905cce329669211bf9c65a699c7d84baa6409ad813ab1e24b2a85cb9794ca639f259d541efbc59e75ccc91d221ebb4f102143b2c8f2d84108018dc72ec208b6c74ec2520b362d580852224b164743448fb36861e6f1ccb2c5148f67163139e0ee87cbb07246d4330b162e600042992a4f9400860b6a1cd5c4325e744dc68beeaa3cdf8b8e438a54143dcb8e5c6f538bf99bb703517a10ea81051e9488a2240b2a19a98a931d845214ca350f8f42a19cb4288f55d4145390b628b63c89620b94285b884a8019ed84379b6f5119a75028bc599b69147f79fcbdf6d21b236cdea1d0deb2c30f38a4ed0175f48661681486611886476198108661e838a4edd9b1d96c27d442df9995e7e64b9f0f9d0857612c0c5dc7f0a1bb2a8ff8a187466496fede7b710b43370f212d71447e89f3f80b1c1e2f71f4c512184ec01843060a00986a1867295dbb2d3fde7a91e4ad175c621f54a33a718310d4d99ef0f6b15084c3946ad0c51526762e10000d288268c20b0c3b2f58a872c6890b2dba2882ca10d95a8b0549474c1a3c63a68c29838b212cd09317a6d0d024061b2914d5ec0a43cc8081d0f34b94abe6cb97385ad8308516658eb450e3680b268ec4e460ed6c4348e8049b92a13086a85915de1a21c6dbd65b6b6d1628beac395ac26141210b261e7ff3861ab2e0b00219b8a2304142e8108638ac050b227058a891bf498509649ce8c1282957450daf204c12abfc7d61ca60b9d96c36153e6bad4d6285b79f75e5983fbef4f12590c713098c0f37c034f1d8632c3c76bf8289c74eee5cc1f4d87dc2f4f0d883840923f74315d5078649cc628c3136a20a6b2dc618638bad38f317f6f7de6fce98cc3073c485991ab0a829143911fb8eac80f25697adb52498a10b2e572861c40c44d42c02de1e71e6adfddcfad3bc63ba66fd1bc325333cc0973a5896b892c563ec59bff0d863dee4b1ce0a2a5a704445181d8eaa10130a15753145d20b08862450ce6c89028c1cca9867ac28e55ac6f9e200475310bd15a269248501e68c2ed620830805238008c35b2814dec225a110cf748226f4dd1a981ba818b2610a191a6eb6108103f8ed5028bce5a717e3a32f45bcc29bedc942b71b5da264b3d950a879548c083650b18dd1c28b4dcc6ce34bdaf4c3972f6b92f0a6f3bca4548c12e0a54828cb0ab8312c24f992e694a498f02555fabea45e76948826a141ef39bdd91e1d528001060d25b8b06277c29754684a1325750236793304d79773c7c6979329e54d250ae66c0eb53bb66736fd700613183e80e10557f34cf8d2e73d1b42af8bee49d1982f3b4019a3e695f09eeb2ede7357680476f9d295f4654dcd973853d0d0e1c3900f62fc5004f94347fdf036458a3f8d7f3a69f180a3a29a338d6ace7c8c2bca1929e174b9071c2dd59cf96556da4d61e173ce25f69cf397b3cef6e421dd539742f4dff7b98dea7a30434726aa3c79a892b4e26cb60ff13862cf4e32d17dcc43996cb62ff1ce4479e889c09ced098dc05c0f42f860a2aeca026714e29ae87cb33de02edf1e48931dbc78f282368058aa362074e801866c421067c430eb4bd4db28446fa7781be58c6ec19335da60128612492051cb0121c68b5229a2c073b2f10519634469218999276af8cc1621ba60518a310fb6b752d0219bcdb682d5d663d6031fbea031c60a4dd848a366db789bc5116fed3532b2b6e6286b9ef812a7005feaf80012c5bf932e8fb7ccb0c311b727593cf61d9f268faf4009e3f11522dc54da62340418e29c0cbd65b2d96c2bb00af0b1b5166c5112c6d00e5fd8a85936de1e41c35bf7e1598ad2f2a5cbc797355fe230f1a5ce23e04b1f8fcd201f7bd6343cbee2022d1e6327995cd1218bc73e44556e9802460a475cb1461633473fd880efc556495b01a28b8802e64043cd3df2210bcc739f7a8f87a838fa4ea0c3181d8828c1881f6c48615e104323db9387bef0567966e57152ef5f195ae1ade7028a42c60f5e743873c484490d7b11f3c54915860e153d75a3f73c1cc460706d121a87256f95eecdd2f066002f54ecd0430b596af882bea04b78efdd20935119de9e7a5f3e5df7bae832341ab23db3463d34b2f3b4cb5c9477998d9e7ebbccb8a7398777199b69df3984240a319680028c9829bed45c5b869892da551264b220994ad2cf89a63e1f090020d3cc3dc63ec4c7f68446965e6d7b40208615a5303ba461d4440daff1d8ddf6e86843a88a132659aa8ca961272b0f5563226da1e4b1fba83cdf636f834cbb34f4fc12dc3df56f8c2e4323a59f94feac3cf3ca0d2bbc06e0cef6e41a75906a1cdb874b5e058279980913429c447bad3889cda165ad5e71b575c310a26858414bef9d3ca63dddead149f7bdd753a9a60618a7525303ef13c5a9c1cdf6148653830a823f35a0a85a45d32f4f273a79cc0fe3cfcb37571e7192d33dd4d37bed066b48c33967f844585793c7a4f4523d794c204bab18aaa4f6a81cfb751af4f9751296b098549b8e70b507a95feb73d2dadfd047e4f26f8c2ebfa1bf3e0209b6478633b205dda850498966a3ca6527878d198f289f22ad15a46223dc08aefd097db74a621bacb69e82ae7d5ea2c2908ad66309268f6b826fb6f1d727254039d7f83b82ca93644fb9b769ad3d84e5f36feddb34cf570e54ab7e559f7bfea57cb57fb2a7fce7e42a07aac552304720610806154a6082525d57ff3eb75fdd17a839d7437afd7b81fea6ee02f4470dfa0b81cf554ee47395f5cfbd4d047b6aff54c7a2a342074f9e3fc71ea4d654f2921044852c25b239f774fb2b8e30993e4c918040158752c25a4dd081fd4b7b50ef007c204a290ea187a3fce1cd1ed5bd6cad17c96e7de69ced3e415bb7f36d58a9f5aeb7636630714cb2c7aca13fbce7abdfb1fef5f9de8d8bdd2b9df77e18a4eef6c9a3ba4f0d262ed3d38ea2a0a2a07a70f309ec5bc75303f1037ae6e9c6b44769ede726a05fe2afbb83eb8df4f1d480fec0286ff4e0525b71691d6f9a07f7b15fd403b0a5d8fbe82e72bdf4beee0ee6ab11da6aabb5d73110ba7a4eb2736a2ba1fd11fabb7b4a434c29a51e9d3377d1d73d02e4f4f45a8396906e527456d85d55c24416bbc3192bd144a606f3a967287476ea3d392ba99ed0e5c40571f0a7c75c14455114c53c1ab1bb101c4977429f1c44553102b7863d8fe08754df530ec31ca23c57bff3ebee41302be08ed54f2394d0c1d0716a4fe8d61dac59274f3b798b1652ee505ffa6f97f9e76891268f2b62527cf552db26ee989fc9c364845748572a5e5bad1539a09387673d4a812ca55d84d68534755b2bca8a25a0673aa06f39b85e027ac6baa567ec2d91d03858fdfdd54f7b278ffa250ca99e73ceb92915e1569ee953ffbc22a4257b496a7d144e22d73df7f64fb63f34e88c0bb7da0f92f089da14eb48f01431b529d5816ad3ce4a319035a87302720a2dc6271fea40e818c4e72da573f4719f1b417c8200f10152c91ac407084fdd93ee5402580747b292d6c72767ad6b2a495620314be9c556c2195e2f6702b43de27d5e9203bd2a245deaea5a4fbd435108a7f841116fac8e7d6e1454f7c6796993251c1fd4af3dd9d3acbe830b62ef9d8ec379906ba394de5e60af9630463c768252ea28eaf3fb460554f27e2e24b772f6d7e81ac7310cc72095bce0bde5ce791b417976bb87d89e95ad9eaa6376ddc1cef5f72bc0921fba9f60cf9ca94d2947f0013d73e6473082daa0dbad536138c4e65c0f9dc6e65340d77b47cf9a3d73a66627c5fde797526fcc9f810d6ea73d3e37b2ff73ef4e260b14de8f8590d4b9615810bac7625a1bd95f5d9584ae3e77a62754543896fb4faee90f95537082bb24c1539ff487f63284a71b78ca81a72070cf436f0a0a622f5a0e5028518360a90a62f1d18b5ede786fbfe7f977720fbb276ee0554aedfc28c53ee90f9a07e5694fda236fdac3fa87c2f764710fbbd2f7e0e6851520ed1d6badf53ecf6379ce42696c5128bf3716ca835814e86391109542a14017512e8aac94884a79b97215a8ef1295cab2bc5ca544f073ecb9ad2bad4aa158bb0cebaaeaaaaaa92aeeeca87d748feed13dcab71d7197978aa27871aaebe5a5527daf9ba46adda37ba45faf7bbbb89718aa54a26b95ebd74b45592cb17597b05a4ba8972ed66a8b27ff287db92cbd2bd155f7e81edda37bb493a3b09fb576667d36f38b9be1d9eccef0bd5d1c9d95d7cb6c369bdddbec26618c3f8b31def9648e676e6733fbf97fe4f51be2cdcaa655f3a2c13e9f9547fcd32c1a9f31bf319bcdbc669c396d946d233b3b75c37649be768bf5f94a7faa94788f625a5641a195135c1b34fcc4b561846bc385177f761942e8a9ebb951e08490931d6bad6579d6490adb13e8200be867b643813e1609b58842b9d6a0b3b4b3c01258b1b5721488595ea250e08c0c0ad562855eaeb68802475a13ec551c8b7e2778368cf1a5095d4c1bba39e7cf2dca4f3925e61c86e5e974add531afe2807e684234291fcd096d8836446b22da17d0cf6c471312fdd5d2add6abe52faaa96b2f5dae12b17b27ffbe97ca55aa2dae662cff68f691faaf5db6f6ca59a3568901be5379e6162dd00869fb6636e352c30c0f667b44d24b070d4a3484618910930240131ba018c35a6b2d124fb0582cd62a8807fd825c9a2879260ace40100441101c62850741160bdc2c7046c59e55f89081e43203126f3dc6e42d17212e2d88c167c6b2376bad1525e1cdb276190a716122c683d9cb900a6792a8f265cc0d359b22de2677c60b6f6363e3a4edf18a6c365b0f351b1b1b0b002abe3061a79d591b850dad55b234095d62ad14d652a424ea05cc5b2ae6ad174bcdd8aaa42e795b6b7052a550a94754a4b7b67a1923e5ed98252e8278ebbec25b2777ba307aeb3e30bcf520bb2edeba902141bcb5392f92deba0838bcf5112a4f94b7b92fd6c8817174734168684a1119238c6eb83096724a4b744b5fbc75baab3c4c62d0a631b6d8c6382388a9891b19300891f1c550e599b93270444245465ede7ac5cd9c194b3357c6e86dd5a150b82f2dd1072825882a49529a7bea28a41a4521fd1437b051c00ded4609252950696ab2041311582cb17ce6216bc6baa1d1b2886942c6458c45632191446be621388ee08ec64509d38e1ba73470de5842662c11a5700616288cb640e37433a3bf446e0b320f82604e8c9207c11b647b3ca5a0a75ec03cf68995b0132c051b5161c397188785bc329e99c78e6d38e8852ff10d2f798c3da61c5e7a485eeeb17b4a9e8e8a12bef4963c318f7d7ade10f68874627ce91579541e7b418f71bcbc622ed36dd2d9f0a567f392649beef1120e2f2f15235cee882fafd2e3eb85e912e1f226b9418ffddeaed09712bebc43d7c952d3e8a5f5a25bdae5b02da3647394dc4bebc4123d765b84ad91144bbeb438249ccdc1b5cce3a6c76e6d36488b2fedcd2e29aa3b8cb157a5aaf3d2c2977549cc90d1d053ec65ad4350b800bbf077bb513194e96609abf067c39852a138dc45059cc29809d324342809c3305e5ac23618f39881890e312ca5c0a4a986b724cd805f182bd91cea38183341038ed91e8c7371617a8c3dbc658041063e417263b087ca3c94c1a63a0c7436db638081ce87cf9123478e1c39f6d415f533d7cf9cf899df99e7273f9bc2ccc7663f88f9d9accb97181e070767c6c444c5e3c081634f9d675c50b1d4450a27bff756522ae3c7719ccd66b30f87f352c3bb5ff7d96c56647bc05dd15307a7009d00419f433c08825058f16014413ce8a50492368198cb5cb67f44f083182d43b525aa34240515d600d6fae832460188de7acc0936deba2b7d79eb240bde3ec1858fedbbdd9e76e932c3dff07bc367b6f3b37d3696eb5935cff2b9c5b3582cd7b76735b1f31c4c4c7e73739324e56f7cea9ba3a1a5a5a7a8a7f97cf234bf3426d4789ad64a4a6cbc8d8d0dc6d12e5c94bea6a6664f9d99e0a5f7943cd6cddae9041757bc842163344318355badbc0de284b71604ad0531ce8d31c5962c5db6284dda2cc6821ace207a41855d90ae0e71c25bf771a3ed3214a2b359153f7c64796293e58a161bb4e81efb4e2e089f316808ba41cb1931364851b355de1671c65bd8db7c862e537b81b942e70a1251dc9076c052029630332b7b0b827666ed1554e0e80099484ae0702e74c18181d46509a52e4751ba5cb185208d2e8472b8a20a2492a042040f1a04415009220c8c509202411d493031802e49b4919b3b55a200230d5c0b443f08118495ecac0dee402610c453e8ca805e4e9c92133260acf182a12fc008e2881c522c6b67bb0c857017245478100441046021ca1581441314c200028819502cd608ee340b9a7a5de341d5832058648437db20d3b6209582368d50b2a38b1156947439020a13cd145cad56abd5ca43587959a556bbd56eb57272b55a295989ab15a85bad565a6cf1abf0575ac4b4e00738c5b8b41043cb1657acb746d390ad66ad1d6b74b2b07dc9e28b962cd2d0a2c5151ba6b8a1694575780620a404c104082c2f14b15838018b109619b000f3c30b4e2c7cb52c599123eb6c4fb6d14ccb6066ea424496e55ddee559ce4e7139a94c866530839995b3d31b134819cc3987e0f222833967c7c939d39073ce3967d76b7cce1ede56ab9a5ff964e157ab5513b85f7561e22bd40e39136cb5d56a0545bec2449707fd826052930793c83c08822008823a2e66fc6c36bbc265cab3585367d0af2eb7428f1c115b52b8b2250c8e414c0936cb94b77eadbda20588b7d6c6852dca20ca1403446c11c208263ba12f7c08a385b8c257e49cc584b7d6e2d590dd189c962d9090614a1641df0acc54dc5943f2e2092c45681ceeeded4a1155d859499cf1511a348c44d936408c1a4ca848210d256354292038234968892c425b90e8a184103b08629c73c6ac556e0011476cf4d044192316a260c1c48985593086bdd91b0c065b03e68259180c06f3697b2410e6054353c6d820854c0de6593f79180c06db4283106fa9009a8079ecd7eba2c15d2e0a856ccfcf94095031aa7091f98fcd6db28da4b271c42db69deac08d5b21e0b1fb0a48372939e7fc0575c45b6b5bb0c6db264a6ef38a8315504185ad0513baa0c0c3162d9860101cc19db5ab9590179f7316a2089505419daee969abd512a3756bad58cb73cbf515dfeac943ad9a2c43e8a0410bd4d1db0a4f8411e60724724f9a205aadf20dc44953c45860ce25518568891cc600a30550aeb0b15660962a39bc05739952399d4e277b727a3b9d725256389d7cda533e8570cac1ca093ce94eba13e8a7d3e954c5a9153b793eb996e14fab3f85383a3e785881161ebad010654c0f3fe47a3873a50647e749186fad8552f43607c58cb74455de12adb1834f8f31a8ca39e37cf6f9e473ceed40c667d731dbe7dc9328c8541628b8dc40d783350ffa64f220085ec942c6834ec0700ac31111638670e00edcb214c6a356072a383ae8985613a4c0145b64088309ca0c41f50902aa9870a60919949cb1c40e50e8ec270ff329e7db6a97a19006b4ee704194d95bcf391720bdcde9a082e755d6b1c18997256860d941c889185db83ae572d8bdcdd1effbecc75403199ff8edbe6ff5e13e2d2e84f95a9feed37d4e937c4e6f1f165feaa31ffda697109ab0f0adbeefe4dfe73bb3f4f9cff67d5fbe7ddfe79a87ffdc55796e37daf8ec37d700c5e79c5dd7a749185468a1218b182d4d6af8d56a65c5cc1225a4e431155a84c6686981064db8108139db9387b4cc50e541109cb92c6a2843e95686005587246670c17db6694511499c5062cbe10a157410428d1a196ad022c3188fb53069012c8a0b3b1fa878e9420617603103febe4c65da9e5983b304ca1229de7acc49300a2749464859a25381871c9ef82aea053a2d2c88e2fb808810434312453aa32d380c6d4106fc76725a62608286c6f51a4fd37a1a1a1a1a1a2529a2fca5a94343afd7961582fea5fff572f2f57ab9787c59135405101598a86085034dbd03ee4e79965921a90c34b234c10517387071418b14e6b9390b60055b60d912445457006281054b2d280951e4c20d4d5820d5d939b16505567028f494baccb4c0063698302377830d476471ed6d4b0a547c14d96c36164e3723a2b7f63bddeca9892c3a804ca499e4c5041472d263d73113a478ec7ec3e32d27809104882d49ace0610b0a657435c8f68437ea72b976b95c4eba6e2e972311b5f01863ec0a6f378fdd492cbca0beeffb4ea7d904c097354fc6f80205cb5bd750b0787bba591902f57ddf97730ec00e5d4cf12489cf7e738527df56a5b1c395fff2c41d710422edb0e4bf6f7660872f4a8c90e286312cd41044145103ea648b007c6094c0640c16e8c4f0c2051aaa4cf13e5519274ae080bb53057a78011835acfca024a9c963f735c664c9a79c91fe9be0e98913aae8c2c032646b41142cc82095c2860cbe13101e827410024c182a47d42c9620844ed409d997385164798cb940f25205498a24d80518bc38438b249088a242152ae20bb8c15d2541267c7da050c289285c38dd92d841fcbeefa314e7e4de76418282c9674f5f0ea81b3eed32149a51febbf9ef3bdd764b6becd4f04208159666b0320378fa909e60e12db8a34b369b2d859b25c2650561103186871f98d46c8fb7d6496bedf77ddfe9847be02abed441caddb6789c83410c53e5f9c0cf6fa71e493ce9e28a26345ca0a532a9416a3ae28727d238c38a0c5c5e484293c15d78d3fd0051f82ac57f7ebf0f3ccd1bf632068c19322859518608269688d9e20337c8743bddbe2ff7c20950b4b446aab9bfb7e26a1daa444024f1652daa54fede2b86ee98a62471fdde4ba9e06e0f4997752f787dd21b153ae35517ccdd5b71369b6dc9bd3edc8b73ef4de1914acfb67b5d8ff9ebaeca93faebac9b4d598bf356c75a9b3425cc5bbfd6330e6f5d67f1d663eec3186f9d9cf2d6777e08e3adfbf8f0164b11d35b2c4000f1d6ee76d9f539cce79ca5d4f0590a935b1cf8b97e26f9effba220fdd7c30a9e1ef1ab02fc6a55b1f010c3832068df5a0d768c05384000c44c3265ccd0243c5f52257409902f690d3998818309161728c51005161ddac0018b131d132c3b686101cb932c2c6081e2040a5888b80c79c9b66cc39283118fd0283c428701eeb4e7cae37aed7a8bd7fab5d65aa35c57a01800120a4849c4e6d542f880d2a1c7a46b585103e32b2bfcb524c89283d0132e496c94c102248cf0fdf6dd72e5848f06011111840b8aa86832c30c2935d6ab5c637955ec552a276d4f55b2d96c32d4545b15d618e04b1c1d95fed72413802f6799692689121d7592c482972f51929454094a6a018bd02ec98534561025e905254e48ba51094a82018ba418ac105195ad558001c42d4c12142c6248dd9bb5f913a23db7260130ca2859c9e18a2f52602802cb6a8742a08e29954ae554caa74da55259765352612a95721cd2eea4b448e554ca63299f29cfa930593ee5aecac3fa94e72ebef87be5f6602ec4786c80c75df4f058007fb920e22d01deda1c433fe474eaea30a692040a134c18620569e050c337199c7c780f4dd75b2c3784f1d67ad65cc010a315986206d2901a4db471c60b59bc904f79cc2e0763ec0121329408257d3981861a76e10a2fbc7be96f2123cb181c6c369b50b6d6daabc8a8242cb7d5492e95a9190100802200f314003028100c07c4a201793c0e54c9db0314800f82a05276541ae75194c328a59031c61843460400006000329b24002051d9e0dcf635cb6ad46f6775ddac09031e6c244db46cfbbb614f5036d3fb8883e87207817d8a7603286b307bea34927910535f13badaa3c649f790a0da23e7a60b473e5a4cc5904ff0fb0a0c7c26642fca1d766b0059e5c2c162faaa46f8e6e708325a02aa6f5ced22c68b06f411e65698560a5f4383df52aa5f66ddf6362b4b36a6af6b800e7ac5d9a963664c34baba7a4cea6a4bbb2c81e6c3a6ae92b898006f43631391ab0e004897fc668b1712af94a8c05adbbfc2017229c50e5786d130f2fec1cc12f11f5702a30fb3745121d2dce9a90ac321e8e378fa5f768965fda0f7e4a893ff274ed013128db1a4c0bd18886a82004bf84e978cb4bbb8f08079bd77e60f839136d38f0a953a965350404e9eae7c377ebde0ce869338cb5e57a7a8d531cd59a167832dc328d9e45bf336955d18861756bc81f6ef7d99e24f9fd06a80bdd87f593e3c4ab39cbc7c3ad3d4d6a68ae6a7c7ed894b2e02df478bb24f464680e85c56261d7a17d4e828c578f41bdd97fb58cf0efb77b96cee5fadcc2ecb9652c6eeac56ba509c5b2f72133e55dac9c383bfde7f21464ff3a6abdb003ebe98ec99542fc15b794784b8242a21336f9c29ce07b30a0f67442e13465695465a37417565dd3db2389d9e0920d6e3f07acff948807238a11379f994644b50a5e60be1ed8ec46c5599c8335d2702e1f3bef0f163b09dc0617c268a6491dfadb14317f62fd6c7e37fd7fbe3b0fca81d0e99fded1b6117b1a20f992de026af877d3dc4d77d5942d66ea9939f82a631f0209fc04dbbbaee7d373a4fce73bbf58deb05a6136154327b0b1f7c9966601557bfe9583d869943e77410c8c1b1a9a7d1388d53e893d5980c002c0dd81493e549042dcec6405070100c832e13e8b76c434e741fe181c2c0166066758dc40e24205880dfbfba90dc1d3d089158bc50c89368762f253fed0e8330b13020c503c940830d64fdb0874f107b6f08a41a1b40a6256dde5e79c473bf5d2189ed1e7a3570181848ec11ab6e9a9d6ed90800c9bbb30fdb46c0d31a9a2a692f737740589e0152e29ba2b570a51feb5c84bc6aa7a65b716d47aefe2ea706a304a62357db81e9e1ed69b55d773ad74be9120c16df21e9e56c169db7b759d9e9f641a74b47c229f24a0baadf8ec1980e32f55ddd8e75d2c74270314e3f0abe9207ba9161292bf5cf4bd265bbc12dc31cc59ec7ae833917184d0845701f320f627a992da406980c368e06b9fbd3e82d49898b3a4d39310bba602bf9360baa5f353d3c411f6378d145c3da5ad7e181eafeef67a0549f92ba39c8359e945aa2915d20f14404f69af3406811bfd33d56707476687b1c5b6e5c1451d76c33c344cf9484189407b67ad9fd27a2ae5b15fd00e42e3307025daf988492935881ac9e2c6a934483b54ca870ac522aaeb19a066de3abcd422e4994cfa6e2d00653317196c0eb8c2847ecb4203586113b151c5043177264ccefec6027d7344fc734d525bc6810264ea031bbc13b25adc556b20af699a787cf1e4f6b8eecc05d183497fdf4d96dc903a521e327fceb071632f48dc438d90494ee2fa67d6def9b2df460fb9caa7f7e4fb19c53ce1655baa94ceda638fe7960aeea2648285aa8c8185ed5cc2730809c396ce35a267df3a06c401fb34a96a78aa9fd08ef78505f004d47c971da565332948d77fc2df86603705f0f0a1319892f5a5a88103c973356f058184061b2e1b6baf81cd22b32ad295c9bdf0f568d3419cd14bef867af44baea36bbd76fed3191aec9446621690e4b497ad2c2d3d3612963492b34fe1b9cd1c86c46d52df9c98854f05b3f6a999b48938a07fc44c4804ea1166200775ecb61510ffe4526b402a8087cbf26d492efdbd4b6106ba67285d6d9b324f54d0650762e81e1dbb2a7d5865c55933e605c1b1b460a26e1119a570e51d54ed83625e70c1fe0b91b55399d1f24cf130d671131bc8cb25a9a2003d0263207f70375217c213cb5fa7a6ded4df5adae78d80bfaeb61297bdd067de90dfb4f33614e7c4579f91278c1894ce5d659f962d8e1f64c4a43fc5af9b8c7c69c4a621452249dcb7c3e24ffe4e9afc501fce805e05421ad0a0c8913839913b1a08913ed9878bbb8193385efc1d6d07fef5859f2fa496514bb2537ecc177fd290ebde7fb0b51189e550a04c9e66628616cd50b9c152578a8fd63ee17c9df40959a25648d4d8ca4c2bd063addf90dfd4f60f633922ff4844277bebf26308e695d6793db99f5a978caacb02e94faea949758f04053834710aba69dc99a462262e84bbd1a6e9efeaea8e189d904f875b91d166664a5fa5461cf26330e404c33ea777533689ac225662bf7456b4d373160797dd0d9a92f39f30fc8055ef723e84b3b0ffda4701d505b0d921ecfac3f37edf358b5de01ae39a89d486a96e9a4cc15c666b63ba2517f9871d9c65664461be3dee5bc1d31a133c529760ab7fb58729210d8440fad22487fa9ce461d9b13021778c0fbd24deef9cb79e488ce2b276368c96b1c45775e6d16c77572585b39e27aa34117612af43145d6163b828548f64f52fc7c72fb2032622b3ca6dcad0caadedcc05e2780c4e2b5502c4556f7f81f3603e07692dab7064804f72c32d2b1f011340a084074ad9a2a837e05bce0a571b2f9694a066f6169095cec2f0e87277027b07f2da59c7d00e9c5116cd878b72ca9fa3b1f9fb42bf4f354394a47a2168942d84957d16077a46ccd9383fc1121089d6325b3ff153b0e57a167c47b35ad7306094addfc7897345623cfe1370d738c385b78fb98464d505edffdab6bd4699165bea56fe6a3075950f930e40079d7bd602c19e016f121b809faac049f2e62d3d01f254089832331a4ef76cb8f3d7f6822b4747e45029b9876c1192d792edaf265ed0a9ac825870a04425119bcf95f41bb3029921725af02f68666588e1a29e022976244119f7b17cd61600f2b69e1459cdbfb4bb7b2d5ba62357200f846b2d2fa9c67b4c7c04e738c5210ad86f3ccd8df64cb940f416f859c61bd0a10392de700b7a398c52caf31a347db3cba0485923b181a3e555ae760e2344033967aaae513c8748d5b0f76209016390c42dc787e32e8a18f69aaa57dd03e0b018877cffe9b5b3dbd859b6b08e71e51d6618747b878803b304e7c6908f5826685f9cc357e5e76ec0b2c4f949819e24bd5ad4ff3b55c047a22fe2149568307c5b2192260c21708fa20fc15b669454c43f6166dc98489e9323bc73b26019e1dfe263538b5128e5940d2940bd21ef2d832a99ce08ae0e7ef6bcbad9f1b94aed8d5aaaee0bbda8e890d843979e5701a02fc1a3ec945e4dc0943fa8db833612c52e8fd475cedd42a56601c7ece7fd5187030dc3b74d4df0783ccf1d38d90fbc89be43337ff9df545b796111b9591b2fd3c82deb6ecbf9ceefcc1126d85f74bd6646c002d157e3f6c7aedd40d4681d5e408d1a34e72c12b6a07d5f9b04591a19fa9b8397b86e4d156723d38d34bb3f24c982644afc83c0db1202f26e6c80732de39f32bfd5f4f71a65f0e14754aa6306f9592e212525b2482025f5a5a16b70f2c94c906ff6f9dbfb9a0bb351087ca8bd6579d2486966b7828f2a25d38681cc6bbef29cf1dfe6b022b15837cc6fd4c487e403fcaf5aea59462c0187912a8c2c29ec05e6ef36d7c12b097f8c2cdd30a077eb01ed46f08d784252d143b691a769051314aad4f1e099f99b0f4cc545e5798d7ecb2853bf9db4c34487873075d82eabb5cc8153428c359601304a3bc5f1d99dbeb839e9fabdb24453004e2a202c2a0cb037a84faf21b2e68dbecd7a7c626ad0e1bb5aa956ca07864d64b8147937866d6bec62efa135cc70f9b992d4128a71d3b61b15ec5ca9588e8e5dc4c51c8a92124c302d3f58af7038aa604fa4e280311846fec08575898690859a9b80a7cb7a049af4773cd32ea796a7e32f74408b4b021d70b207fbe5e3870ec3cc9c1ecf22d9aaebe615517cb011bce4dce46f45c2fbe831e4332d8d353f5f596dc1af77dda51eb76e5917245738ff116765a5a9bb507eb503e62f1343a6616fd953c4f509bb586d20844410a6615f05f54b2b08829d136718895e5008a961fc302f2115bfefaa3c5b729241a053452178e1381c3710ea2077d11d5a50a0186cf71d77f167ec2d8ca89188f504e48d60c2635f26bbf62590c32352a16c1ce8cc2e332125fb0ffd8dc229e305a7afad96cfa7b346e49028d0162d1cf875c3310637ec44753fea6f1f901d9518e0f749201103ec9e43a615d0608ac9bcf87112a82215bba7ff032237b509ca23ed56914b2d5b1b445d77ae7c1707c1e40460647e29e9de6df9ce98abca785f2b520c8688f350f566e6623b28c688f8e43f5e148780aa058033f4620f4eead9579150c983a58446bf6464ea21c720a0be0c18faa2045dd514e3ecd74db7c36e448d47b289e487c60b7f22af001142f4bf66c5e34b13950664daa99e5f0147a5d1812d7659a12ef1123969c8e8ea5b0590808d9b738bfede39ff47b2257d5e6d4c8e29e035cbd8b857b9286fade121d84f6da15bb4cce49d2036f38f3a00dbb2e55f750e6d130a23f719ea26d84b0c2e715ce504e5c9fd77a415f0e1bf5c7953a9a9894763289a407fcffe8f59980f2e287e6de4db97e90dc3be90040cbe3d61b7d55da869188809a33893418b9e22d517ec660d5f441022a22787bea0c46802b4f7fea6bdeb5521d5bd89e3b6d4b0f1476097159845297012b14a2bacf7002f762b4c4147d8d0d0268c6d9a26515858b097c8bf56715d90ac8a83244f7e781fbd7f1ae633a47296d7dfc43e2d7ca63cbc60cfa92173b35d44389751977192bcfd6900f4d46e6ca9026a9f4edc1d7c6e583ef58d04a1d232d41367f09e9641cdf33f2d0a43d76c8be6ba4e6474933635864399423ae382d64b79fffbf34e71fb4d0cea4c6aa6023a94bfe645f76ffcfe7c33f9164af665911b33e004c9fa5228d058e1fb2c84f8a42bf62728cc06aad5db414bcb67ebb14e2945869b327e42527ad3c8ad7f6fa603d69eb8598ea1eb532b18440fccd99968a730743f5e799a5431347e45ac55dc876e1db2843211c6aa55ec590e8bea8d6e1a1697ca4b3e28e00f6cdfe9660c85d7956447a2df2b459f129522bb7238ff36d4dc83b4e0ad58a25d1381dd9b9b65a52bdfb3aad2464402987849c859a22fd132ada2b078135edf0522bc92945d3df1aa499c0edd0c106eed5389afd37bcc89f1d31e20d944203951f92143ba4999372c70074dbe67c5ec2c16e0e86675e824e071c2dfc8e7f7292cff61986872afb590ea0cc919fe3c0907c29a9e1fe6a515022d14ad945ea7ee999d183614fc22533d060b5dee30540f9add556416de93c41de4730b7a077b93d621d6f447f732ac55859fef1dd2d2924be84dee1bfe3e3c70de98c2aa123a66f0a80598815caa3de098e6f2e4e3a19da11b44615262b5c9666353e5ba0c868fa31c314b6782e0fcaee33bbd815cbd7d80507fc62e602aa1984ecaeacbebc5a4a23c0565dc51104754a709eebe0b1512ad6195ab79e298e4ad2d1da9ba1dd0a849aa6523944686054fc31b79d967de4ac9b26238db20fa04641629710a0a2ca712cde25dd44f9f7bed2385ad08f0f8a75ce99271eb0f9a47e15252c09521ae6d85ef5132d9423d5efe0494d8b61554ce4ec2b2a356b2bf2b558058d8d7ae68e448a830a1334dcae443d9e31377a925490e2a55a4452f55b0598ea0296e5b2fc70896a98993c74e7d08ccbb2e9bd00802cf21d1ac40f002c7e0336fd0519b9128d1c50eba303d1e305e1a9eb8928b097c517620a9295f691370ff8e38b07c9878bb400bbafcda5a24ab2f47fa994484bccd49bf35c31e3be8d60e86999a91a92f87afe631708fc6821a44876872ec1afab4b28ad1dc30a8bb8410f806991e5ece6be17f26f662cd4895b12cae6d6dde72b62a84cdb56739d003ffd30dd78a2eef8d0f0392992b23610031ac03cf47ff00d31ec26e62171bb05eff60e64969028577bc59c27d1d4b49908d4375fec4723e1f212806e76f180ac6966347e50da1cf15e0bd50af2470b178de51a5e1b6b5ab752182879f36ab5f3d4eff58d86fafa5ec557eff4091220e8b00ac2c31c6dc8ebaad43d8f8d84e178c35ba05564b7abe5a667b0e29d1a01bb79151bdb4e85cb941be123846c8b1815011ad6bcc20a97b797e60b1266df1b7554c5c230ee72416e392dc5f1b834581904050e93e10dc9190f88d918f14cf54fc09dca6977e0cbb816e3dfb8c69a2aee0c8668721e6896e1fe6e21948a9bbe58479bbd8157ea097594e9fc943efe02bd066251dab88deda0cb90673292c8c06f3bd582dc65deb0c418dd8d934574f71510fc0872e996d89a9024f44ad5cf6235a968d2a5235ec9de741d5b0f504081d5c86db87755e92509d3026acb7dace79ff613c293ea566d1a36b4b26ad8b02c41001c9de8d6ff7a5d39d8e4e6b325b79d66d1c68b6ba4ad56f62d117064e8533e4fed1e9845d1095f79d5321b6ed3f1d2168942de59286a1142564188881eefdf3790d3c4ca771d556e139e95407e37ad250b98450806416a5e939312e10dc0d15f9f8d1f3c6ebb1be7729ddb6cc882668e339f5f60797675a81a821dd1fe1dc18c75b38487219c553821052124508b98ee3f5dc5079514948da892aa3a6013a812916f7bc8461c18c48e0782070e08b079e68b1336d04374ae12f150ba6f001ce5ec22ec80e344f46cae44f24e6810b0a37e7c11c74d4627779321f9de044b55de34f547a02855b19004ce9f765c84021b347235f5857aa20d47d436acabb040945af72b2cc35274eba6e040b0f12952c6e451f6314a5c1aca41c2377eafaec5604366de8d98688c16b191eaba4504008298ebd6f343e80aa52e0eb43c358efb549daf2dccd1b0111075bfc5d2960961dddec0c8d8a46c732956c36346862ffd6cd310ecfe91900630c38948f0445d24a9e64f74fb8abdb48d28c0da2db55f881955d5c367ce6dcab800c1de5972e4f710ef39d15f933b43604ca4266cefa791f07c7cb9da7da9553e26b719e1d8f90447bc366cb08664b28f654baed937097b0f04ae2495b49a1d9f1de56575965fceaed990bc33fd450beb741973f5ea65a99faad2856c61d61f101546d23947264abe58723ade168279f1a910d13fb39ca8b9dad8facb447d7a6e449f101cbb037724b9a1cbebf456eaa576fb307dfbd1d4f3878863e658441d8be1edf6f1f46d69b7fc3d3fca769b4fe628585323eeacc587c7410efa9efc2dd8ddfe777e9b3dcf4205c3177a47d5dd8a1280314aa7190d33553b1730ec1c03dbe16339a94eeae87347d71b2efde5aef2eef57ff87c7afe79ed4736b5db53024ec7ed18124cf2738bea65a785a95fe4fe03679f0eb65b325e5933c1c5aee9d1d76cd0585921a658a97abdc4e5a4fa79d1a11eabf7a2c89662759e6ce5a6c6fb1fc763d6e9cc3f71889ab47f2a6ae37bb3f9408fad6c73fdd5268e4dd91700650dc8d80c0f3f9e90296925f16a565c1b00bf3166496a0b8107c3da44409dd01a566c0335a57415ecb222f3a1c05b92adfc570d7c3fc321533d145e1a027f10b27f26c99efa8ddcea07f57fc9c6365d11c8f73602c4024f97bbe733da0efdd5a25fc179e4078eb51cedb1823bc4629492e84c656100f2d522d4a87e15098b9940d9c29b6fd61de8162be4545ff0d39546d6302a37e551f08354356415bee1c234806ce92a34b98863969973174c3b254f6e3c97fed25845961593b5bfe444175d988459b0ecbe5df741e9bb40f2c70e5026fe02682b1673229cecaecb5818f6455c0b127effbf94248dd11255cb87bd9f7996b9be0f4570bcf9bdd0d4922d0946b69757302dad74afb4d9304c21929db997fbebb203d28a34c97273e697e41114a37d453678c390b596fafe74edba41f21539051a65f99e7f5acfab09fa8b196674973cf830c5adad87bb3a0b14c6b902ad3e4c72e21fd2aaf14c45d3ab0d06f9d533566637e28afc0e9ee3b4d335f3d88642a79b322194dfd1be709b756f8e9093f8aafd7a367f7850bd6247bcfd2cb05365e61f21a48579e49812747da5476b72d1ed89800fb9b2d8b9026fc6849ea4ba8019d6e280abeb14a1fef2f598a22792bba25d2b7adcd5daff4e687ef685d83e8134359cb9d8015ef34a1b6e9faffcab9cf7a69495765ceffae2e434349205e6d01ed30f1272c6eaf179167cda46b2304de778906e5a90db7331ce0f7a14d2fc797fdf1eaa6afc07bfc616c53c91f30e709500084d608cc1d7365203523a6bedd46cea2583c2867770b50cfb65179fa9d47e076ea9db6ee6b72e9fa9f58d6ded33c2ede88cd4c912a85ac81c20ae45e9769852f9cb30a2169af5e61a616260e1302937610be1d1612691bb39771310ab6e725aa73dbf200c0cccb4053d6c64e7c97d23f5164ad90b5a3c3c43a9370b97381a20a842ef8f87bee381162eba03613f1a5a6a21c78d1db859f3590fe41c0e8cfe9b73e0585a602bc22f54bef81af57f6392c97877e471bc36e41e48e02bacd742bfb77745ab8946f5f61ba0a47f2ee35eff89fbafe59a7888992c95ac39fa10a22507cb37dd38bbca7d45095aa52d0b821c0b705e0d404cb58c64100e80d3496659f2866fd8a327cf357eb5a914abb8076b1047b13e690fea5f4428a414b81bd7355a5efb6249563073aeea6f8697c4847cad8c176a3e301b1bb85901cc46628a8fd06c0f1ceb70e1767673bf5a48405dd338f73456574b51388872acc67bfdb244fdeba1c1e9b5f77ee6db5d2bbca79b323ac90ea1fe3520c3ea0c5d1caad443c33855442f5597bd4ad9a86c811a38d9674480cb9b8c9aaf45ca5c32fca416983a565b711f620adf264e60381a6525e295e14c40bd910a1a4acb6fd2a4a6cd78eb65099105ee58c50d1c1ddc24df4afa76d4b042cc1874a19442d1e6f07eb58444e7c76f9b2b676466406543d480643f0a270a4d2b983aa81af767a937635d2c199c93f672b7b640b05bb68eeef476546e95a6d5b1e247e047d624153d9787a7e983ee802533487aeda36cf407b1e25ba1ce82297583b5e58e8ec33bbe6f301dc35a048117ce744fcf52e1d7b8bbc5996aa00df62374e79e9dab0f224ee38070714f6f900981d6aa8dcce81e2de50750c20cc7e12558a0de22d6c762c5792ceeecdbd7d1f2466cd23556970999713948112a9d4ed8360b02d6c093bcadf11214d01ce31e05d77857a170d2b642c634d64a818aa0b30d1aeea5cc266e85a3b11839276288244d0224d287e68dfbacfa0aa69f971087b3fb117cf9f37b708b3cf47ed7373de7e10224a76ef7a3877b4faa9d61e1b66d1c3b863cd9ce018a48ed2481726f4c344055883bfe71e27427a93d082e3ecb7a5ea25aaf950893e0db283ca63841f020374e88c91576542c75280911c7ad7129902ec434aecdb50aaf71b384615a35bf47a146f47928c9fdae6179772186d680750b9a77eb91d1c77a7acfb69450098e8b7c13cdda76e22767c6b158c66c078a4aa71d7336f13f1110b7edec206367070f7d862fc3e5ade2d03a70e03192be9690d9663f068eb6139f0e7ca2ab27715de396d94b8c548b4899106f8c5bcb432f7ef59390945d1c52a84efba2e7101224807675962e1db3acf2e29cc3a5bc2b4692390faefae542e7721e2c1517061d945a219ca6969b8b535d1475cd4a0b19451b233f6555cff70b01548cbfa5105a25bf102c89f61d494a93fb9d9fb89fa683496cb200500cd0a639bdae28845aa80ca73199c4d4f676b04b199783fae443df9ae6779f075f6e25382ea439b3be22ef0736338ead488e9c6f4ed87c0c872830a31f326d71393656f03a197dfcb2559f00d759044e4546787c815ff27730294f7fc3cad236cfadea2bd3450ffd1d6a466faf3ad47151b490470fa703506436e52380e545675e845b078e8bfe7e59cd7c76bcd7187dcdb536665aa96c362e7893a0988a3739858ee588f5ded417fcbd74b19f84c2664cece944244b1d7170e8f7e9849e21199f4c6a1034d955901363687769050239395bcc9f3183fd686f1295130aedea8f3476829deb6f7877af10fe4dc6d28f228ea774700ce134829ab8baceabdeafd9421cc6744a1860473ea7808e1553bd6591a493a0cb138373af2fa7044e242f64fa201f0ac13df30d100294f541fb69e546cdf297de4a99feea5f80c6c40b0bdcca419111c912e1ca9618eda6dbba1520345858592bd85999a78f760b615975e827f7d1a787075cdf4edd6c211699549a2ec1d48437ae12c8a21a2f0c00cf093ddb01bb86aa6a0c51778d9cfb3126b611efb7f32a08172184d4972de354c4db1757a3128a9d08ac70de022c34388677b2a80ba85066817d4c9ec9b29e4170fceb24b450248d163c81835fed0b2782e494fc560fdd8c9b24a252eda8ffd2d8c4854bc095b48a83faac1d0d0b05e88e60a6cf8c9889be6584ce15dc247a079a22f272b60c2b558429bd912988a3930c6d7434a559fcdb2d34900852e7c7103b3131b044286ad057d086ffe1abed0eed17885dd29f110e618ada1d4c11354f9d3e58b8b56d784ab346c5e9225a7336dd02dd3bb4646ab5cb6aaf8decf631b8fe0503c0dc46da697b3b676bfcecc1cb6163356cdd921885698ef9c716037c1cdefdb7daa7d9d59d30335d7aa6c625e080ddc00fff9900f9b46898fdb85208eff89a70dad530a042c8c04b4057e7e958e3594352ef70789e66a003ba24015c47143fad93d834f6892defd6dbc32f69dd836588e844f077eba665a10ee11d75d7022b166dcd8edd6e16270f8747f4b4ed948bb3c474b2fc18276e72473580fe7c9f1ca9763e1fd6563ccff94f4c66dc71de1dbcda8210da3c766d0fbeb9116b4c128371e072d95b7af85c2c49c39f771a571c96bce5b9145ce1ed5cc63a0809f7b57bc76138b99cb5fb9275c8fd74b922e1b0817bb06dec5ce5e62b8ac0a0396b7259d46c0b66b24510e0195baac01ccf702c20a63c657d83dc4fad14a8ff8e6cd8dd5f7eafaa596d517c0a4e05665f5a32de0a4ec6bebc0ba07238d049f13bce33d1941ade4925795b28888f242b69ffad45ffece008e1fc216fffbfb4cb4622517e5d3f011b41a3d786a4b5dd7784418f5f23063661aa5e23a87aeb67ec1d6c12cf79314513085492f34d4024c312c36075f57e959b10962887690bbe10f8f4dbe1e6beebaa2541f394363e627cf88f645a26e8bfcaeaf82a9c8759763deaca8a3fe7db1c4beeb39edc9e2c2c83869477a506e2de1cf1cdd793be052a71e4ec4ffe62e8a208b92ba0196ac0a15d8c5d04b8338bf405b41584a17c9f0e121c931235d2ae0cb164eb3654bccc1fcce20de01e5da3db3a836efe3b36c32ae76a57767bc57ada7142804f7b6b97e8eb006d704f69aad33256a31af1c60ca897046353c13acd0ae588afa370f7288a7848149c2f8dbac7365ddb4b42707eabf891f6c2267608471bef71493186ce525209581b3dfedb4e0fe39d582a843016da3f42785e6d0dc4c18d50960d1c537404961c337c8e362e17ac64238b536a8bd0ccb054f3aa3daf7414dd1f5f7827efeb20af32c4f09458f1519864b539e5866ef1329d3ed69f1ec395004143fdf2b70fca6d97ec09766487b950474bc370aa28b08bac1e43b8cbd53cb0e27dc6fab84dbee772ebb992cae1891104f2db9627002d876d3dce9528e023ffea78545ea035b1ace49f5348ec41e9ea33610f2cd185c879aac43dbbe3e14915ce8dd74e7b0cd844e6257f3c8fbbb4e215f80c0697da306296617aaaf95d965b5582770e632480b2f7aaac5fb2cbcae6582b2da0c3721e0d58daef97450b89671ac53aca54fcde61a5b6c8511a262555b22849a6c23123f69e8f7d4a96437cac550521b3e41953997b71cf1ce8487390b9758797d5213c9b8fd93314ae9e8f3656471a8613a59a86852276c36d39adf06ec0c34ed83e1d8194a252047a8fef20f91e540f7fa34d095ab6b889dd905788bf11fbb6e87aedf6406a189c97d91de83fc920665c7847da96f9d2c2131bce03bfe10a65f36724095764b18528d05f655692d4a2200887ab24568e906b6c400f41411d007366d7f15255c33f8d9f147fab9ee28fccecf9b07a089683ff08c5ae90e0980e729d7bbe30d5049423d91f304274855978ae08941625c98762310b2d30936dcee9d1deade6039d0a2ed9ccb88e2732558e23b7cc75af2bd8b8d74ae9fcd81c6d8f55d08b01b636e21d43a48d5ec28277e9c0f03c7a39222aa8d466a46461695e7a1468d1f3e80298747fc877e0a5bc32daf9debaf44387170d172fd08f7740ff6aee68788ce59bd897a1972f673b1f90bd6663910dea9b29b39eed4a5901e447a072c1da6f39cfd9b8b53c6e160481e35fb12bab2c2f9ff0e10f5b3b1a918ea023df29a5677695e861962340fad2519313166368e457e2c92c7b806648cc87f1010166f2a890201e9a6ae32d0ed00fbf80a66746929b0ade9337a3a9dab036e87d4984aab4036aa1cec00b3d21088a0157ebebd46ca799f60ec17aad9299da72be023b9e4d02b5780ed0040ed1df6244061f75a9d510bf2d5e0cddb2ef591cbfcb4c8015f8fd332c2969deca922833f524c3dc03288cc2d1f48a1c2b36bf7bb87e7f71dc48decbbc21d51411d78f1cbf416c86bfb0ea4e2e38760d0e4dad1757475ea606ac0fcbe2c3c7d96d517970b530c0eae3968056cd68ef3b73cd9ba0d1b1679af90a35e3452aa103ebbcf3157c83de9ae2ecb97700f10b3bc74996a6eb8088c32ca04e7e8fed6748f33b13d2eb3103c2a4ce59d42e1a6ff14a880c8b4eef3e7231aa81bdcccd7f3d7a45b0729dfa931480d7290bdd32f283d7c97090697fe0b0ff5ba7c52c62c00cd49ee083db4108b1efe8c85b820fde788e87f9a55ea682729d58995fb5fed1460ee5494894ebc4d1aeaf3ab1de621afc582d863c6332a9d67c5be5799ce5e0fe03ec82461bc21b153f7443c5bae65ba7cc76648de0755adaf03a15a57dc7b62c326ea600f6c54e158a3f856c94c8508962275e23193b19f45d3bd33db3d68f01e6322583f67153f36cbe166750624436b61cf6ae59e2f19b115d02b213ea391acfd40ab253360942a270a6f5d28b8d9721412737379a91c8fee318b6dec024fd42d24a321b9a7aa964c63e6e95c72f2c848e98e1950061c6a187d8c9d873f3843bce8cfc0706231c4a7835b5a0d59933a1aa8c5e5a1b9d581d6c57a7318dcabd9bf68bd86986fc8b83da1a117bda801135ec11949a9a0c3b610eb04dcef691179567591efde629ac8a9e7e3984d486f0ebad19dc89f088ef2c01dc16834e4adf8647a12e8f6f23f0e42dd000bed0709918d16a299a965fba81609fa4ea535795d92b6d241b0e89d2e8b171d6dfd66fef2e60b49b9e8f2c40ee95b4979b119a6fb523c1e95a0266d5f43dec1c0560ae2009f4be8f6f98a8b033fc62bff192daefa135b11649221e098f51a2081a43d53e1dd3940d8f1b01c850336979ef27f91eae7458ce77b377d450c7543bda489948e99d431adb54d45c775b686fff8062a2b93da05ebf3f4ee943c50862fbb5c91d08a1767c14e3c5d891768d3e5910d59f7be55a9cba91c0788f8f0fea97ebffb99b5abb7b5d8b66b31237b1197dc2b7248555333dedc05431806c70ce206503b372b34cdffa889dc4d9d82190b68c906f59b4c6fcd113a0b2fe145faed8dd43ce5a6005c1a5cc7fcdffa1877c1919a8b782337684dabdf22d8148ee2695cf4e2f09db0fac3f05b95a300c988a231f44e90e4496b20bebee8a8275aef94fbdb2a1aaef6a1dcf53a4b75beb81abec1f8a33fba7ed9504dd9e2304441076ba7d47d13e77a94f96fc2ce6073c56eb7028a797bacf73c4c21a208991771feb2689b3791fa06ee61d3d430dbce2f0db43e9aa3c326ef7d2d86b423e16083faf67da8f14d47c32a4bacb90a807c509f3edea76b6ee6a0b5a1d3939ae211380c9984608182e41cb3a46d5ac524119e6495b33b2b35949b38fc69457de7d60a35bf7ec1c2870f56a5f32f5a6e5425478583c09a3915080a27beaba4ff926b9028d1fd26acbe6fc0c61c0b302982167cce5a53fe7950c423c739194299d462344806697f8d605cb1509d1272edf4925d2fc77de52c0a4baf748317aa57d4a64af72103440675e7fd05c06ed4090b48f6d88d8e0704bb0806b8ddd245bb52f567504959b9ea59cb70a8e65916a71e3b7d6c907a151477b1b57c4d6c04324ddd0064e54f7446e3be792992fa74a665bfb28b69d3f2d3f0cd642da73e2464740b3670d8e0ab1fb42f6180554f0a5af8d2232a906c1df22a3f1585ecaeef896d5c5ffbdc0414b40fca3168d02ff81d9c100bf3cc97d2b61c249ca479ec166ea1100a5841cfe72154682d24ad5b5ed140bfc1f5ccfe03989cea0cc5b47f283f66de99125174ad30b616994841de787bc1455564629a619394c558a8aa1af2cde9dfbacf86bd60f5e5e3da592dc365356f8bb3ab29c468a6615f6236361459c6e566e486dfcf4964c3e2ce480f81c1bd297d93955a27906664256a4f842f2e65a61d05c22586c183c4a7e14fec9ec686a8d59817489552c82610fa995239e670427db8f2dac074059ffe69f3515171d852283cc875f1d09a94717f685e5f689687eb1aada9cf3d2e51e27634568f7bf0a170d6bb3be92f19baac31e0dc0f638ecc2169bc281223244c6e9b59c81ab832d6a303e3aabd4d5c837c4d611dc014e5684fb5bc5089540bb9bc63b5b13e5f78ed643f30bfa7490f1240ee9d79e18367cfc38db36017a9ed01231948a9cafab77674c541745d958bde569ae0be79d36bff3ebf44a85d1f31c24a14d50effc2f9e3bf2c22e070d8a47e54ea7931bab7b0bcdcdb6cf1fd0f4ee184d3a4d9b6faf17151e295be8ee7b5a771df6d28aa06fa6818e6446aab243ac8026864a2e6cd33369d1a39e483d0d3261effa94b3a36b3145cb9799a0c5dfec3b1292de9b25961dd61548395dcd254ae327885747e39fa87296b737fbcbdbe83d93eb9077552ed2d1028702999ee392eb99827d44b887591962a97a849e4516642d079fb57a7a570fa5b3deb7bf2f48693f58c7e947aa2c9aaf5c35eaff70fb1b197a29fc8e076093602aab261103013f88d8924d21767b7521e18c6ccef3309176473a7a63a047548511d9ade8bac21574b20e5c2200f05623b00289fbf534022b13280b4554059ea2ae7707e791fe44c3280e9826321b9350caed545949bd2997bb06163fad4856911771a07bf38e774df4e72f835f40e9ab686b4a992f47e799eb0d5bb43888ae63b9d1d5109f36d5463b93d4bcb228a9e26e8622dc0eca09e941b833bc57e656f255963389642a16ad8fc90002b648befc773484392e39603fd1e326414d18851a70cb2b32d0927ecca958dfdad50ea5d213f68f834bbc6b59599a52e5980e02b6db7b46db91ed0c95c213d6ba0d0adce0a4b4b3e01540fd648ff4009221c8f023250702e58b53b32650419635538d7c3ff5951f8abf5f4724d212cf66eabaa8ec495b85b092a154797d5365531b3734e8eddf11d2cd894390285a7f50a79186bf693b0e46576678f115871d6fdfb5459c8d4a039ef3ce544d64416d03a5590af8c6ad95ca739c99005b63ed6c1580fdedb1dc9de8c99005688e61440d2359e97542d04b66b6a83785e3c4e92829ac7b2a12e84032537dc00b2a746dcbf3ea889757d4ce689c509e8e74dff3a4867b1a98bd9bc5c6d4cc016b88b23b9780d6ce9ec7278c262db4a1fb91203f0f3ed3ee4a6e296a27dc29606599bc0071b9fd66167321956b7149a71dcc862fe1b4ede666d077119afe940c6369b2af62abbcf9864685264ccba2252795847405b9e7965ee3ca8ef439b9ae113d9245dc503fe11b1d5bc91fb6437bd9f7010586090ef25a96e17015253d8001c15448b45b959a64a6b5e5f016f94322184814c6b2439950e740bd89117020c43d60c374dc90817fa28ccddc74986565137588b1bd8cc39b69339a453772f28b06a370745ad073ab0e8b2206614bc76ab995b04e2b02b0d5d41d390a454d5ad165f424d52721bb3e86156845ad78261ca807e5d8b3ece46bae01c543cac840980fbc8241c2a914c6a74d99ebdf2ef96919fcc780cbf57ab128d216a391b3b7f4a58ca5a176ad26e2e30d58cac80a2a1dc9a7c8e4fe39c9f9da3788f7c1aba3a4761d64dfc4c8e2c1674cf61ea4f6f7926c89b1f8eddb141b5bcfbe3dff5294e7947cbf4725bbaa4240f8a495b38946b03e6d3e508183f7dceb29fe8acc32e030451370b24c398aa7203e67070c18f4e6018c968245fc6a45a7e65488040fd96f7fe7c85d02e375ccb2995051aa93f8410e27007e30b3d96c2abb0d18929953ff8621428961455da8977d882d27f23c65fe5721f2d16f228c4f0205ca3fc0bb9aea643e93a7d9bdb0b5c7ed711a765c999b842f8bc2050d6bc7ff2039300c5a3d7b118feb4c036254367214c2b1055709373aea1a4e3d242adc1b26861bd66d1c0bad24993cd98decb022048c9da798d6e9412da52a0476357f817f31fdb793f7ca13be53857349896dfdf75088c775fdfc7c7312a11e44ca8c080fb08e134f21c6c9cc378b5823e9f69c1103d37a08c24c3c5ee3e42fbe719ade2af07ac058826cbe175798d3e9f0ca7b1698863a44412b1063fd19bd3815ea828758f1c989f8983332a74777583ce48e15c8b3c4c38e132c5567a8cb339145229e01ebb5f922d2d55236e9128dfb7308055ffce6861f34febd2616796d75fb0cb847e8a88e606752764004cf8b6ee21e9549e9e6756e887f1b416c965df13809c2466ce745d1dcd741f7cfc7825e48fe3c07af0289ff8fa65ebbcf196bd5b5c89ac0de80eb424189635f9d7cd3354041b19804cd03efad7fa18054ea58114b3e410b810cd0180e0d25378df42273ed6716b3156ad9511a2856923e4afff725e2bd366317354cd64ef7da3a8bd04482355a935890a3bfc365af4ad52a13b9a4b5c3734e14a0ae3b40f32720a0252c8a7afc789153e50f1cc91f095e070f72d07c7ce7180c8b72810c2a664ad3019de50e317fe4854b1e50396874f1bb5ad2edea7b1d30d0d30b9a9bfdf61343323a9da4fc49399246ad967ddfaad7a9d6ac126c77c8b4ab241ede9373f254ec8aafa1125e5cf7d37e12be2588d21b318abfa96c6e1877838c80088bfc9f6396656ea58ed5f1c0f7c6d4a2af6bd11f089538471999ea18ff9972f892f1d129514b1c04f02a2d9b079bd220e37a598deba1d3e9d89c797f48055db0ab25ccd55953b1db10fb9e2b021db5c5f6d5f8661455965a35b481fc62727cb3fbf3cf200c463f909e8ff74ad540ea7a3b1d52896d0ca41fa653f180185029320c56d9bb37b63601d3a99ea4fffb59a7e516f0333d19b9a8ed1fcc9edcdeea0e8ce5fba6a6a44cc2d51dcc8a851cfc740b9348c349582e3d0669e35eb8b76d92e24264fed906d3463fd13ca6e814fa89c6bd55e33de81e10a69d49c84fe40b0085f06389260e05133e510e8cf2dad1f8896580172911bcbba9fad5c801da6b89136d36ad70e8e6fb3e11dd03b468bc2766bb4fcf06681a7e551983b4c1319f66f37606a5d8ab72178a7a56fed6a6fbc496a8d6e606dba8f127877c0d9c0ebefa86a990f878421b8222621f5f7d020830eb3699cb53bd7dd58022af9a14c8d4b7f3c8533ca99d0f12922917bdcaef95bf6462c50e8152a205143dd7ee5bd6f68a5fb7a911020795ddb2e606904cdd746511e0678fa5ac06e7fe916eceaeb29c2012d43782fb52d4f746cc4a327a342fa73cbdfd08786d0014c97ff513d11de088bf0ad1ab3b90ede5620594eb015980f93175a0605021270359b27e3e913f854cbd1a2c01f7319d954507ca9df439690de02b4d564f2132b4deb7f752f9a1dff1e2d4fff6efc4b34cfb3fdee1461b5ce36c0949590bf732d1c4829babd431f98eb5343ddba243d186262e46f262ca48eaf05d2f343184447cd64c009f5f4b4be265139a58ec40d66395cc6f969e67e25add0327b30146e095db77029a88945d26ae34ff4c2cc3522dd4169a8ad131e55151e336b57612c5a963a985f354ce2dfe7e26a2db5c47465104777a5fdd36414478579f33b4459821621b8d3594eee3de30cf2d360bb2e93bd3c06c0e67519b62906e45df43edf520ab5e96427a6e299996a7e6c20589836c0488972cb49a38453eab89ee7209b8640769ec272d41ff34ffbebfb7e45fcc10746ec9045a7c290ea722af16a99a28396ddc145f7ea5c5a5f8c418edac964a9a678171f0c734382e5313bb40f0d9c9e2f15b2ee62b994475fad7dd2d6012bb877abd194e396b7940d4447e42bd93b57a68fa052fb754f0b49b43037e8c87a1f9424d24e5ac132f8a9702e89ca8b86309fc255424132113c3a53f7025c770e71ccc866dff747c9a98ec1b3b6abf89095114603275ec473b843a1487053ec07a95216202bfa2501224dcdea4dbd179325cd107824ed92a2a5f358b88723bb815f0a3061a01ee005108ed8850b57062eaf50541fc1fc82f70ce824fd125154cfe6d6ab07f1c3a8a2562201a7e819265c0cf2c0c374336468da337cc06d40f559d8604ae248c810aefebc939d01fdc0399371566f82007e17f2dcd3f9bacd825af742640f8f57658ea1dc23b2328ca885b3cd3e5e87f360a345174866f01e4fa596cbed5f4f7f25017af2da095f0caf5af0874eb94b8ec123be896e6ec4bf015e58ccdc485719c76d47a3936f64f4c2abd051ed50dade9c5df9b6f4b2c4917aaefe7864452f0d2d03a8f8e168d38edb4b4b8beb44eb7b67c0c31f5e5166e53a72aa00b75846eeded898677499fa3e39d8411f568b21a9720f7f4b0102159905dbc1f7346756be844c3838a931bf1b32f36ce294c031fff996791c031f3e4786c807e23ca89db5e33591da659bf82826337236cec941dcc67b56abaa64e1b37a28a748ef83df823c1ecdce2ee2ef195e9c8a2a8537ca63866492966626c160884de406c67a9bd03200059389296fdfead0a28cdb03624039d5e4ec5358a18185c004350b03060a788a6838896627b6a8f1f6b9ca8385228a7d992c74e777d4f7f0f1645494e4c790b4807392043bfdeecc107af8a7849e39956ad8743f80800777cd1b5247d5e66800a9ecc08c1d50ea55db8469bd8a1ba87b344066e635ecb318f3855197c3fb00c9fa8cfea40e935b9c2c8e5939cb38338c9a69186e4d2cafe66e862735be4f8e728dd418182c810601ae87e7028efb581eb3860216ba5331290cf97719b3ab31524da04fefd5cbbcc1087fe7ce2b4217b6159ac5ed5306e7e423013cb95c9470b15a1ef964617cc69ec5291ab43eabbace25bcc44ff92b7b22d715d434c7819273c9d08efd3933936e8cd1e2862ad735608e8e92dd94bafc36ef34909190542af5c416b03d9aabcd9f12d3bb4cf5f1230d6522084fc174ad092d8164f837c7a80cd931c295790d2ba3e02b9c0b90d3d1cddc740c6cddd4302d73d1cdd494c51c7c5cd086d26f8f789476b67790709f565646d161ed49db4489859cd8f21bd55f4165955595cf4880b1455975cd6596f4197f3ce84ab830a204214c20888c05fb5810c9bbf929b09d0749a45982046f633887ce3867f07df896021d4ef50f8f63b1051a34dfb682b91365849db7be19fd256b74b03bf03d20b4f1ceae4467da3df61109defd1615ca46864fdc6698278c5b9fd1d7e3f03f9be757dca4e5427112379fce8df77a80113434a6f11d27830903a7e078afc0e2468d16290ae691112c6b44484a5db83c291af3efce09a74f6e1852db08c2da172fb3d54eaa1a8352b3cfa1be02eb776b320441979700359507145ced8be00e8bd4966f36bf997a8aefae2812ec278a0c8b38119321e2edb39049b190f26f33b8bd778287c948d074a3e47ab584eb2115fb9c3cec12bafdf4279b41e9d178fe4a98c95504b297797a854e02047caf427fa127290615e247a4d8f921003f425df6a1cc44f2c350e2c8222c5dd6d4e32057bf817bcb952cef831e53079d1ebba2aaac710d11897634331937223302d62e2399ba639ec22edbe6e5f0bdb58badc1bc7c811a23f55eae744ec75a6409b0fe75b0e754072c79309ec093b0015e68b3f1999862b0325f66c6355cd1c3bd45f11ac0554e7c0ab6a06198e1366fbfceb6f778f4e900429e1193d18be1048132546d8afe19c36f66cd7689fa04dd96671f5549f1ce090e9a208d643fb893d5814d27426a3230467bbaf5dc4af330f369df5925bd044024265bbe7f84a4fd31e25fba9928453442388267c109825845e8ea3977387197ab59f5b5cd67f0d40c589f56320918613e584848b862813c20b63ac0f6898e73c08f548583008737f81124b6bc04065d4b7966a307c9a99ba3435679df6a538732c6ee4211dfc1fd2cddc594b87b170e8bb2e6ddeef978726a8c4d8a29d2e7b1eb83894ad42752f658f573e8fadc7b3d7fd24c6ff1ae399f2ce60d4f5004d57659a583aab5c3ab3e2fccf4588ca9f9b0d4e3361b9a44dfaf84ece2af5a2a9b57e91062c6e4dde3232abe2f0394f22742760dd86f0b41527a5832e31c8009274e8b56884251ccd37003f2b72f4713ceafaf5c2e61f9101944f57d8a7ebe5a11b306afac55918b81709ad3e7c6c07e3d79910d7aa8672214b306be0673ba28894c104fb82a177fd8ca27532bb336fc57f7de2d85bf564b468f63d4dfa795bd4e9ef63034419f503202c36e8974e5419800457702d99e242f7648151bbe465978a1d9eea2ddd3eaf6f8e02b6675d7f56c4182428efe951d30b22c2603d56e29e92e05344b1f695d6df8d96ea97e4d930e8779f40c833cb539e5e28df44881dc500a332d247f137e5e50fa4d5bc6152c200573316a0e6c566ef86b174fc744c89107730d1bc191b9576984d450f9c3c8e1469b20aefdf01d97715643ce6a15a5835e86dcf1a6a2fd8d6ed695f6f1ed18c13c808800c6a69b71de81415d3024a4b8019cad5e124d5bb8d04a02655d788b6c9d8857857991bcfce730868458d1cf6ddf95aab3ef5c038cf6162124de6e6029cb6c134b2514b4ef77cea12cfa3a9741d4cb3801b0e093369314f5668e25fb6da3a5be8453498aecdd3b0572a4a8dcc2a67cf18083696dad1ca1127fcd1b88731cda3751e9d6d962cf024da0d18a25529da1d6d0d416a60b6947905bcf601a1d57686515bc0fe71516715c49d1b4c0e8583cbee8357556fcee716390d05720979c3cfe7fffdb4fa880afa7ffc1352d18016c5003330deb407d5a32c423d95693b80fc3f7527e36e2ab4802277aeb0464844bd6b5229ddef0210626f8bd2e55c32a25607b846e7329f8bde23ce0bac41febd9f73607f259b3128b48df5a800b4a92e8c61587e6ddff6986cc7dd3e223fc3e55d576ba7c30e79d9593e6c5f201ec925ebcb89d5a56c86e6e4bf22a86dabc70b924d3892518e1c76b3193daa40142bf45a8680140566231ce4f76af791fcf2bd09a8e5bed5ef164320350ed996394c94c87e2a54d06917613f884ac7f496a35c9a50ede898bc698ea3f8c2adac8236a8d25cac3d5ed0ca35db5542fb8434192f42420ccbd806b9ba4de0ed0ebcdf4578b88506407320cc6b98aa4fc912407a943122b2305d9eb95347bb5c04c10d31ac8f90ebbe11c3e861a928795eaea2edd4f8453a87f3129000f20a86a21b6962dc3eda95e49d94a2ea1f773282f71a41f13c93b61ac8926e17cbe490ed387cf543c71e8887aa48cb3c1dfa7df9c54971271872e711198014b2290c5050604cc1ee034ca933efd5d451fd432afd1ddf04ce7e6ff6311bf20bf3ea8d0860bc2b47090dbe928466ea7b3d5b857fc010df6c126f4b428b396642174834f21faf30e4a37df9768c1228fe18563da2ffadbb9f04cecceecfc7508fb09d00336dc84dd1d7bd53ca59ad9f2a85900533863c2e83b0552aa530bac3a72df47a9674764050f34faba66665ac657054a2d358f2717142fc17bea5496f7a3ca7c33d8ca0cffd2460c1f12f2445b1217655734b853f842a6addefa5c27bfbe295fa58b8776d848cec64ec735eb60b50867957b0521043d68b3d95218a3e4393091a7aba275fa9e170db70076f282d1cc2a5573240677328d72110c281d2033d62ee7070f370085a5f3058d5e76fc4981eca44116a36f8d0c87fe8d8408c80081d173f27768327be7929babec58f76d62b7413facf468fd218dd9e041e38c43bbcc39b4e2a06263174808ac2c736543bc96c4610938a0dea99eed0a1462ca049e9938b20f83967a1472aa3ade0cfb3277ab599f0ad951949290f5421db05ea80871a854331e7d6087d3c9624aa73a96810dfea092fb124a463afc3bb69bf49477ff08104c38eb2072862e86a6c35c7ae5b248c53cf68564d2a38dd63ac958f1f4b96cf7d50772dff2c3d038cf116ea319c05af66f1f16cced476c63e8a6718aef4e1c25b0fc20419482fe252a1aa38b2d08595a1f0821384e55519b9a5d649a6f178eab83705df8e4e40a0233825d8cb4bf0a5c7ba011368fa67a00f9c267342273c13a52a031e3648296278734844512d256192028b43c0bba09eacf6f75bcee0c7a780cbec36656b825672c473d62c56dceef1eee60ddf9983cad985e88f68c37faea510b9ae2b3a258f60d7456f55e0d5262c85e3b9c2a34cafa2bdca1a61be86b122877303d858730f9066dc904e80f38517a990918fa75c9a878e4e8d34f9c75b28467e6bc0b9612c35292935b0410b2d829a8e8667a0697ac25058b770feb0bd5785102728457cdc0ed4e78c504d4f43012dbd6e478f2688df34ad51b3a8a18b00171949f6882ca5a5bbd0fd3c67a9ae5933f1c302cc179bda5b5a0747b930bc0ff4d64323e87f8fa52316e82e49e3a436d7f643bf69cec4720491432c8105f5dd0d122a9b685aa5b7265fa528b68da27e81b0f8ef80bb46a7d0762a6d20b715775f4097752ca3925f39275754c0d79eef13cc2dee40423b1cb1555cc0e6dac4a1a68db32bd30653fbb6e0e94cc3f2e56d952a5aab5fee220314a5f7c34ec705ff4391cc2d7e1829bb7f9b08a90fc2e83a3737c07663500e75c007b5213c96e9a2161ca386e796e4f10e72ba3ae3399d653ac5941f486ef61febfe341f7dfa3d96d801c94bbc71872b4d7228515714dd4bed4e64a810f33c9d1db12e377849bbcab12c696cc58fc4fbac9acb92b275b863c8d66d7c1278acd0e5137e8af50f05f9618d23a6892f2fe7f9aa1c4e9a738a915b7205dde5d0b7098b45be2c9abd5bc8c98ff23894594eb015b8c36c61d7a33118881bce6769bc4a7c54bb0809307ea0d2b9f2f1c969f6fa8a9581e751ae5084dbea1065f4c2d74a9f9c962d708ca96648d2d0dbaf88b40a4ffd5c2b1f903ccf78727e7cb75b4c5ed49a22c55788ed9e3bbd541a03e669b99178601539884d8067b9b72c0cd02cd6c974b47ff7c0e000303eba5fa49bdb969161ed7bbf021239c5a6e6317f447fa04d1ec918bbf0cf133a028855a45549fa8e03d9ed4bdea1832a3c79ddd661efc8827de117c15fbb70c100107cd3a23a9807898f6dd0427936739414179b549a0b94eaaa46ca38c97fb742ab3b281ccc50ac3d9ea687ad7977f4733f6951c466b013bf8742f77406a421c863ea0d58543c94402610d9891de3cbdadd46af71ba7daa34fd12dc1b7ddabae7b4a04b65456f4174ffa6d4893f961e867d4252357198effff091b4062d47b52f084bc1ac09645d549c223cd8d28aa72fcdd858a4d2567de3969670be2a53bf4d4bb687a74bf07fa1904e44ba6e96512e1c5e382d62bf805173f4ef41393058300640696ca13209ddd1044dfede6a16c3ec74850f7f097a4c3898a48b12878ce9be1d72bc7ebb54ea475155aa68724b85e5e2d49a4cc78977434cf711ef2443e7f285fec869c554a01d8bac7126afb8851d49cf940a073b548c9a8aca525a01a9a11f669930d7a6ba93fc76152f43c12950cef6fe697eaa6b04299ab43124838637f9445bf56fa9d2e6f74baecf2cf98f31bfc74eba030a1f1d96aee9f880688defbf0a54dea14bfca13e3d06c4bfd13cc2d06411cf44602fcb3af3415694fdcba4abe577b74ec6ac53b782a0e7960394bd0b2f65199cd820740f5fadd8fe20ad7c5f01c851983e3474c77fcbb4cd893b22139ab26fcce5c9540799b3ef8aa5de6bcd30198121cd015b6b931d626c82e3b0f0048bea1702f97e36f32094dc425727732269ef14a66b00b6e06a3d8e503368987c61e7f91a903e2c23253d43d04a7588494017fabb05158fb272f931f6d61e51a9b4b71cd717e1a009d68b18977a8ac6c850af2d0ab4433224a52d95f42131b968c06db87240e65adb80ef31003e1d97f4787416ffa9fa5820879bbb63bc1d124287ec6bd9249127aa5475b6670212eafaf4706ac8338501a9c2c3ec3146f16cbda3838db38f71dccce28d826d2044a47cc6baeea53ddef2bcccc0e61544911203e990e37b04560854b9745a0ed7f64c2516295055f1055f7340bc42c0778cc2d0b38409f745ce33c9d519bf56c49a3c940eab4f0049097695b354239b8c28c8410dcd9e3b939d4863724c70c5ace5ec3b779fe070b75e0a57acf62e3e3c87fc7a8a9c26712cf0744ca0bcccc87473ed971ef8677b21617fb04bfee269722942eb8ce0e1f8d172595bd2fc192164e358f65f02da9da40be3802f15e2a0c45f56cdd04d01ba5073e2200f56da975892cae359303e863ed4954bade1e7436f77cd6cf4fd6b3c4501ec1b1aa3fe1a9adb245a2dda7822db6c91dff03acd99e33873ac73296d0c17dbdf18f26db9d1a87c142847535aac016049f7015420b91491bb5d55a09c4801de56fbce2f8ee7e71cf4a02881f23d8b296f87a11ae28b31ddb8e0437463f019d75409d89b1d4bccc398013307d935f2d41a6174387a4107b1d4f2190ec959730d774331f745891db3b475a3a453719f546e13a3768b28d9852d182330389a5233c8a3b26eb9888a79b7bf613565851420badd7040be954dd005e6627db2146f849421eeb032618e395d5192168e61ba6abed93646e9ef866027b0e412259b889a38a31f370952c2778246d1a88867864b9e647d61931f1fe2d078323be864eafd03b0ccb15497ded7ad89dc09b1a4460b90da5ae1b66bc55b71dc7043e997bd0e3d02ac87e5a5fdb2e2ea99fe1c0eacf871706caaccf168c2751942ac835e6f09ce20d0565ac90bdc7269a1598d5c038845a5bec554f56536e5d336ecea26d5a97714d0e14044644727f16eb320d9cdb789156adb035a08336277200c1842395574f0f14ce63678fd9f15a3c43b87c841204b7b30d38e4be9a9fba920bb8db18fa8380f3a191b11166f301eaf246ff8720d0cc92c5353ec6adc8296d128627eb061254a2a20f9ea7d934dd2b2a2f8f90c7507a45f1a7ce419502df5b5219de89ed995f0a11923884841e546e5d586f680f38219f76349ca557ccac07c275206bfd0768b0c4e9224372807bb8ada61dc7d87c841caf9a9d665ad2a0b89a35d2476f4ad077d40c31aefcaf021191f701683c9207730c748a4783992c045f8df49de893de9035ce49fa01de14a25e7c1dca7ed059d808ccb1e9d739bec972e7e71e879cc1fc110451eb6dd1acc70da492c66e8e2a0a54080092bc2d29fe5cf75eb285725584b2f514edaa801e1657401d7c3f28429dbdebf715c533cada6da6b0bcb2cb563a80775c0eddb3bac24c801790e4a5fda067207174c10c11dbb6449f78f79fd95ec403fb45912289731cc3ce0c20b1e2c6a2b0fddb8e81912adf0002c7e8f245603d24ab6524e9c50592cb43eb5d6cf81593aae17b5bc8a307c657f1877f9cde032e9daf8bf871bbe1dc93f301dba87b37615c5413332566bedceb9a4fd5bed5b09df7620f3dc1254d2d7a65900cc758ce8a77b8f495b886ac63f5a9fea2c95c2f703146e802886b7725567e478410f02fcfa077524884a2e37519d15bdc1f4814b50558c4f0670c07b8c8cc4b1da4383c8f3bb73645e3bb1aeea0978d7ba0190978395387263a4c1a92217c38fdd7e73667433aae711b62cc88d4766a053af7ab41907275c28761a8416a44da785fbb39bfd50b0f6eed2c95029369d9623c2ed3a3f900b154cc514d550e3256a20f0ab86e7c15dacee9fa3d663c2cecbf9351086904b68c1604d4ec5cc7d51ea9231514b35a60fdd75a2c8c05eca9da7d5345b53788e2d580984578d78556289b1cbf78c487f770c694cc1de86f7f0e3df005cf33710f043ce110f69b440611943c197debd7b5c461fd6d8dafc65936b3c673268fdc3d48d11770da3d995c5c1e6a12a0158916cf93ae0401523bb3a2d1e8a62219115467ec01afe313bc402bf56b868a4eba25bd958279373709d91390b036a6f57385252b94e4454e5b8d5a7083e7470051c68a50d6295a2697e38c7e4c6112446708b688d39424fa64bf5aad232bcaa56fcbaa08ee9dac85c0d0b6623d195746914e2f4e95b7484ff3c5773ed7a27def08414ffe998f040cddfc8b8aa8d511d26d4b368871954f95d37e3c6d5583261f99c6e94f8699736bcfe2910f2eef881b8e6035451996e0521dc8aeb0a52452034e15b7a8411c541cfbb66890c8abf718e0092d9dc53031e4ab122b8460f8e99f2a0d344d5eb69e46bbab2cb2ca78bdbabbfc7685c3c6998f6dbbf28b97493c864e0ff2a1b9b798470cf35a8250abfa229523764160460d1e7dff4d58f83750f3bfeb1187f062ecf066d2110ba2bd6b231d7f26bfaab44efa1b7b6af2d02c56335fbf5c2929bc315c538a46b062fa2e6749589330c7aec751fc3bb5820e1ebe4fdfb49600471122847360e7efc87ea36d20830d46c3e0554fb30a2578641520212c520ff290cf8115cf978bb8ec8138231a07112bb8177e8e9ab28bc2e4951ed523b1f19157118ee673552512e3a405e104bcbb700ce174c23faf66b07df395212a3f25bdc5d5fd885faeb5d22783f87b61289b3e8d27d97b518be393cc7fb8c3d5698db7c4582c1b6c437df916ee24e303d68946d928490cb131973e5b4921b9843175064690fd1e43af398d716642bcb3967b90f2c0083e803384e6350ac8436215e60c187ce28f5f08acb83b251f91235b0517e7353866def154864b941bbf6ac2cfa41143dc6c4cbbf9e9763092ead42e6dea3a71095b820161d8c46fd8f56ebe7717befc27f0621e32a317bf85b0c2293460efcafea9f06ccdf0cbab6345a6d6c4948c4c743d8cea78d1d73226eae02eac0b50e8e0c86ea2975fe1623d9c289e713824a2692893d296e743e6fc025cd82516395f901b805c582d956507565f48ab8da24a5bfc30541e67a612a5db8eb0e617b440c60411366264b97e4699c269fc2f28bf9ea5c39b53e1b1f8f18afa4e6a705b4c4ae7eb330c0a7b54c88565c18271c2e3700e59d6235d2693d9f7c949a61b8a20e6b6c535ebb933d571a351c188b00ff8f0b2bc96ace46e1af63128fabf0b8d59ce2453c7a5a5366c7ae4b2992993699bb0e9bfc87552a1fca5150260c3eb50d1f4f51ecb52353871056c114ec8a64da6cb9b1b05cba2a8cccec50031d9a5773cb1811234f9f33440ec9fc51cd4862b0ec69da6cf162884d233566b9a71fc4f62a6df46221ad10a3ca8a718210066832c4cea22f3adc8e1ab90c2b1c7d353efd513d4bf02a05e89955553803220a2f559988434f67113df35094135919554e03026b6e06fc5d22ab1bd66a93559b7488234e80646d2b47376778c461f4f798359f112f356930419e763c14cbbfa25594f0cf776a8619c64d3a0e3686b77baf1fb82447d13dcb0664ae884ef3aa46b1d5de10362bf9287f486009a5a5b4f43612ad8af4933ba81d7252421c81fcf78dfa5ae3e9fa4b125c263c79b07e84c54fb433783d45f830fa8497d9cc27bdc6299814f6cddd19e5511449227722f2eb0070dda0acdfa305227d0702c392a034e6abfd9f763682ea04bbacd1a877ed09e7da42a2b1c3c8e3642211402d8475d696361d3d8f3fe0b543ac42ea033c1015f7e32d2df6b1af94a811eec2f9d2768cca28a04a6cc0ce37838ec8899f2afd32a5470a479ef8eb7d6bfeb80bb2edaf1df0c7f34c5338f9a4c13bd9e10d270c145e74e9b6a28b42543695fb713dbf997a426a0ee23d281ada44b6f20c126c163ae9151f553f1447bb672903096eec262946a1499e774c0059dbdccb964bcf77a4dee2ca20d93c91fae6f259ef5f898725d5fb932c7f565f9647baab442ece13f5376bc4ce7578e1bfefaf1942a452f8130821706994c849e19f16a9f22732239d33ce58f7280bea573e0181ee0b32e0b2f4ded549a17be537877cbf3dff8cd00448cbbaf0f67a9d5200993b2017c0a73b065a0092e901fc5a62f833366792948b02089075e1137bef9d388963deb884ebb36e9cc35fa5bae85af24be083b1c48baacd3a4d230ee6934a20706065d0e6c58e75f71e711c656297b2c1360e7da7a85a85e1a16554722d9aa382e5292a0608458fd72a714495cedc7fd91ffedc756b859a23aea69b2b45406990f10629f77888f94da0ce93c76de047c4c5ce9d6093f9391a5cd996fbc77b5b6b399c6bc0f2b22aa4391466acf0a619a73a04e5d181d4facac7d497a50aee9a9b874d2e962e13542c3d5174951288aaf33fe560309ea835026db0f186f1b6b88a7906ef780980689db4c34e7b833a03bafde712ef5fc74878827bbd5ca36a7465623bf72877028899f014c9aafeb895d7f66478dd2bdf620263d5b444dc40064d43c5d710e670d462bb34e35ca143fb380c1e9a919cdf0065ea622547ce0aee16764b0d86fcb215919e8d9ee8832cfba42eda40c82926d261d74232049c1a9d2bc53706182353ccf7219ddc429de584fda9c6cd8a0347d55a7dadadb29bc84808524504e32cf1cea1ab4241cb880f3cda3b4f5cf70c73928631ae7c000850dda080840ba0eb0840f8b7a695945dd94832ce63a597d874afc1ac541930276a12ee4ee9be1135baf2bbbe4c5a2cc757b2ea09d84c9e18a68c5146689cbdd0580194ffb9d15f2fda4990a404484410ced7272c380710edf78aa4d2ac3f2f6b3a52f93531eed87c487b56625bf654ed2a9446a4db63257127b169e6799e13734850d84eb02009496425d6426f974d4048878af2c65a7751193b06908c852cecc5f405d8fe779744795e109ff2f3648964fc901bcb33b735d04e793e40f294d722e88e65eb46c4d03eb63c10d714fa4be7e0eee6f9a5d50cc570e49bf4a25d769bfdb48670f548320580040aacc54674f1f44ad166bf2c24325dab9671e054fd61f94c6353b728d4f20d75edb3dd90c881094c08a67be7726d8001fa29271272e5174440d94ac8d5d0b5b645344c8a09387022eb9c555143a5cf27410995dc20d8fe545b1168f82ef48e36493154735e7508acb1da2e8fefc254159af3385bdf1fd139edd1eb55e7a802bb451572a033d9b0ae889f23752367ff00923a593ce97e55d805e517ade3e60f6f6c9f886306dfa878470cfb7239d15b52c0a045d5300069d7182d17a092fdbaa1d79572f30558e450832133d963303d3408d5b9b18b0cc0821ba957b9464a26db6760981fc609cd830203630f4682e6f15689cbd3518debc09f49821aa9f2bb48d0308db78034de8dfda6ba14152dfe19f587b89ecfdc1dd3ba17177484b5625f942c9ae5f8d4c08ad25530465a2b7c67295d6c05668f4550c38c34844b5c4b10a7fbec135d95c697721fd2c5d195bec4bf86e28d70e4312540ecf0a20fac63b23db6ebdf1b001826e6c39247a499cef2597af0a83b7b781e4f5196fcce87139696995f736c757215b13ad3dc11cd2e69ed4ee3b59e70365c71469f7836f9045efe6e7efa391aa2f4bfd50750402f0ed318ae871b8434e0fe35c0800ad2a0691551205117263cad08e370a4f5a405c831db60ca18346558547b092a49f74acb93802d629c332dfcf2cb8db821fcaf087705ea616a36c45da46379021ac55421bb268fc599d08848a0fe9c3d1028b4c603e5ecb675d2e9fcafed8763394f5cc75e9f3f921256d03b42f5b7165cb38734da936dd2a6efd0703ea463f2180fa8b741586a01d63091ee93e787ca9fab8aebf0ce236c1f436034a255b71c41639ca4219c5371088e7a81e45b0941cdf23df1f6e1b9ff818e9a899fd31cbe76a43b4065191a3770703be5a320b66b9b0d7e2bcd4bbacedddb95462613aa90182914559c4b927860fc61f642af649e40c8ad1ccd47b36066e5cd97a48f7532f115e063fbc16619908a8c3297e4b1607914d10ef6ff309be1f64a9cb39f174e2e33561d09c2a69844b0d25ad08f3327e52ddc6575d299301df46168423a1048a31360857f5374e193c2c465f8b72dd103951a166aacd880a73ce8efad57f831a63e3f29b24b6b4f93ed82ce03161bfd7cc0efb83a6d88a4ba9bd0c59a9ef0d42baf7c14845947789e4d058808033f217f0e99a9dccefc176dadc41d3271a4bfdb6828ffc76d48301e7000c0fedad0d95cae368f5cdcc0763ce3d9e3434fbf76564e42d5c6294563391b48adc9e16d0500000fc918b5a0e6d4585c51bcefcb350ffb37cb36701c34068c1decae5645b80d4f4190e2572839240a7c00ed9728904741b0be0295004fdcd7d60a9a1e32909352183d2c050ceae38b480391661e325798a1b3a8da31a149e1c609ef95c5416c737e291a8b4b8c0711401ebcf8a9e17344b6780889304d713df8901a5c671451a08b2ee9951facfe62a30abda25b9b24f65cf3d09167bcd8234e27377628168c5415b8ff4bf6e23d8ba75a95d938c517d74ed68291b2ca3005b8429ba61a28491c5f400c04edf30f98eafed427fdd9b03541899406bb262c3318eba5a2dd313b65701efe14c69035156ca0d7a2f3301fa27316fe14f45c9477e766bc140309d4c747717d5df977af74e3d911a3f41eab22097e6256baa92339e599facf01352d8265e6dd8d774e77673538f5ba8b98cbfeda034bc1299d4fa567c1c21bc7a17b427289a2a8df257e25dfe7b5e073d9a8a16c1cdad546e6f6b6248f82f6ecccaea508786cc9a47928da864b5220646439fecb5d2fcf6af208a9291dd3283a05dcfd4c1c25fd9cbfe5dc17d3ef9ff5f64aeae3f864e4a75dec0dd9a3edd83536f44d32cdc64757f1530196c30010df4b275cb71c1a8d7b7a83647d985828c6d9fb13001faf81f4f44b9a32d021ec95e2c9c2c3e5ca13a45681fcdbe2f817d9e90397c987fcbb0590357fbc82922265b6c8884836ee71e71337b045d2f416bd2f6cfd642e4151868157b9368d6c3e74a898a36e0304b14f636207b1328484fadb58912dc08dfeb6560395c38c45f1826b2b8e4d7729efc16d69471ce315c580b03e2bad8dfa0d616ef8925af5c536618f862930e837c7014cdb98e667d86442061ece29fc9332a0f46f65731b463232b0e3e15db9890c0e173b2e91358f5b253f19c6d02093e16a3758800684dd2545698bbaeb596e5c57ded46d4c9eb213d756d88c5884c34def79f42ae7d1bc70234450877121196561bc1d8f734e91aa2cdf62ecd04a863552fe8dc8cb1c9b0b6987881f781bd3f45c300ff3621bf741ec8e6a5e14cc80114aeaad166cc6eac1df7f505a4d2834641212853dd5dac5f2086004ef43850be8d28ac25a99a02460fc7a1d3e038812b6e5828381065f08d523965b01f24f21f79754eb59435b72012b2ea4c87050a62dcb7460f3a82833bbdb56cf58922b732d283af4d32371412d48f960f481ddeb9040024968b3c5ceef6505128502db0010ea15c81856b7927ff811c2ff9042ccba8aefe7cd4c24c9eca994a1638ed74e8c2877ad6d007625dabc1e280c2522ff40edc6eaf5eaab0d35102f39536103f4b818602df169501edf0061b4d7e742a85e94daa2f5660f1a8d6704a64c44663d7de10810b0d9c398838d37e70e58624749f919221505d159381b1ad4b19ef4c45541895d684f623a2565b8490c3f10ce157a4be2983db6c3bc8bd56b8154f4aa68859600d926f920446de522721b8335a0289c098640cf08a671c155fa0efa9353295b024553056f57cb4297097475b8d00f219c5ae3726151ec0a8f687c9a1661688a38164c0155a126966120fa95a7d7f9f1dfdf65fba2e9116492684c57302969ed664f96732b95fe31004692ba62961139140efff1043bbb9379e4f92526c6548a4604ab97d0b4804a18961024264e0246864a1f1efa9683a85d558b7518a564efc7e620fe67c979761728af2ce0910def04d2688e74c73887d1cb0b99c1493a8c8223a923b79b840c319d5a204a5afbaad6ce4afa10f36b9fe6f5888311c1eda4a6190359207b2eae31692e614d4652a5398ab6874fd3015ce675ec20a16a2ebd57755863281ff9195cd28cc57d46aa660e5e026ab894338695e10b21f922e1e56f96f298a47f732c1a2c4d97cb648fade39f69b758f574a983a70b335293eb4af36b6cdd3351126f8918a63f32dd6a011fb5f835fe2d6f81c5541d177f38b0297b16044a3b7c7adb04bfd7bf287437800f1949717594f7b1798c19bf3f77662def93c354e88e2187cfd01402e42c920ddee480bbdc0e2c5147df7d38f2050ad5a14b85570b714a9b6e8b9470f20a5c5852f8a3e6a6748ae04c140fe2305b74fe31433de8cfaa290e6c4e7edd6d5a3826ce928c54ae0a58786b51bf556a1019ed839208be0669635f646f27905e702e581f4466405b9734c86a3b1a5b0d6c3225a642b3105d9359237c3ae096e7c2b655d5875fc4cec2625e06ad9865c4aeee5583ff555a971e570cb84e136f12dbd524b10c91c629cfe63c57f59909ae83d1da654d953e4a57da104407d9583e8c6ccea87ed35929729bcac7c16a876fdf1cb8853b2e86c4609a39e60366dfaed63c56e803aba3dbd52391bd636caec2cea13383404c1d060dafebd6dbd4590a1cb5f260f5aa7c4dc2d28b4acf3f4ffe7160885ab13de42c29771e1b9847745b07a4fa5121e17e78600e643b88f2d4d62f7f5ddf560b87416bdf653e8e219c35a1198b8c762bd9c6692a1fe802b2fac122fab0d1c197de947409001131f6e8981772a5226e64aec76f3c10ac7aa28686f40eb571d0b929e9de04251b2c69a46e990fa581afbf427419995b172704e0fbbb629aafd1524cf85da5b1c3da42b40494f2219aa406a0f55c5a0010f01b9865bd4cdfd2a8f6b8b3621294b29799ec354ca3c61fd57ab4ec8a672d3d19053fea534b076392aadb78ac1517beb5cc856714b47b6f4b8122575fa709aca2aa4026f6d81e94a0eb814d7571ca0df8163aebbc7275685cd27d2c05d2eafca272171a75d382878b247907bae8448f0e168454137bc46fb9d6869dc3738526b7d369c8b26f92c14f1aba852eea60d832c8ec2105231997d619d5ee0644602a408719ce9d76c9ac9de680de16357870701c4d2902ef49dad62cee4961b3ac9b26aa70f437354eeaa6a74d9055a56b9ca38802f7081572dbba8901667f274902984c8dd13c9726d519ea2ac0ef1056bc16036981a61ef6463f0f8a2db00d3775a07f78dbf181fc490899340752521c1f1f5b7b7dfd7750b896615c91aab9b576e449efdeab009e7f476c980d72d6978b0cc6a01719df511b375df5876cbefc5cd186397dc6d08861ccf413c40905ef5d9e7bd895cee89b1ac3ced670b47bbe856b53360ba3ea1aee0e16ca13693ffe2c4f6d9e51e0cd96ce028760460cb3699238ee473ca6961ec60c3da9fac6c1241a7212e6de2f94491e2564d2b9947b9a6eb954c70d549e4f91f2cab47eb66e37d177f55c93e13ba568018304bd0786b88a6e83d1281b42b382e3fc5ea6c5fe183ee7321543541cfa619dc192289b1eae2159d8c4654ddaf8b080c2f9a9ef475706a1e5828797efb229df53c4c9e6c2a9d54cb43dad5429a8ccc8c1c4d0a062d99432b5e08705f07a51ba2919e0769bbff95b9d1bf9f11f5a6a225fed353a70a12a95920f08749f86f05f12f7b5db295e756a6ea2ab9b7d546e6aae4ca5b038b943859a47c997908c0a1be9541a41d93a7dd4671dca19454305a49d10dbe6e1664277bd12bc4badc94fcf89ae1c9ffc8840a1b8bb429f4313ec2e575433a7333d869f37d5d5fd98e750d74d6bc09647bcba9328761fbe2632e8fc62e399ffb924c02825172c4d834334065909aaaa3d19c8c5f54d53baa5886284423bc3a3f5a0ca129dace9f572cd4b86f6d592ddfe28d28afc2683d3e50807e78d2f6bc17cfb937d03a9fb3a20590ae400d252a6ed6d31cc55b581aa94a975de496439a388a7baf75549344a9a1a1599828f3197e10fa48afe211512e689842651dca3c5c29f1a4cf728fbd8ff802a03d3f2ac23b2a53b068f522586f814442342b471948f9ac00f72f1abb5623442d8181bb9a65a21ff744c14f6bd6786aba71f42a73b2a69da7f4a6d00cc6084ac36cd24f3bbcd0c1d584d3e4c50447de8e63a7c7e08d56062d0803104195e8f4c7dadf8321806abee97f045c00137c0d26e86ba88c59d9d274bc00826b1324d92a763d0649684ec334d37da8536ea75cf2169bf205276efaa2ef5132e3ee8125aa42658ca55de462c35b8089b63f9528b8776ce63b69a05a579523786020925928179b5194ccb0374a328d3d158eb54a8176f782c128981d628b1804f2f54de85163482d47a9594ef0c3f0826e5997d0a9d2c292c67e5c4b82bcced01332efa2cb7e838c166b3b99e809238fa98c2bdcd583ad297067dc3f9219d33684866fd908ec3069cfbdf3612c4831a60821471a6334b3ea809fd5f19d3b9382dfc99099491e80cff7caedc0aa9d212f86b405b7f23cb67fc2c180700fea8db74f7684b209714e1486c3f94e0a20086634867dccaf19c3c74f30ab7c769c21e18e60896285967a7f412d468c61161a41479e27a3aeced9db5f35eea9abf6193eb2beeed7b335da2b6db1fc9670bfb8166e38f76873b3de4b593c248ddcece0d91b001c0a031d2da8d2ed29b1d9bd153f5ab0069ca11259ff783e4dfb129643947502a8c258e5d6d4190a094f913a769d256e8d8fcc3bca2662d1fec7e1171a9af436cb92f6c6079210f08b560577322e5627f9860b4c443dbdfe4fe006d0e007275a9e0cbc9a625d685a86c201b64adc0c022b3217394810a761c1b710d068c831acf94c1f25b1854040740ea8e015b11d6eaff6d6118387e68d309f3f0ec4071a340f533fbb4a014618c1ba1185373ab104e288b1596f7dbfa20817acf169db1acb5eea3235443403c3a9f438d780d94102488c36f611c592936e230d6cb099be3cd8d504e5f5b919af806ef306d6fa1ec8659002c66af4fa9b3c79e48e1dbbb7d6ca89737e395f4c5aeccd8864f2160a953a66e5cddb8a39d696ae04b94f4062df500140f45ac5d7651708b824bfe416dd8d4f0b885b03b8499242a468ee7015c4471c046e7c99a158d523f913a5f809945957ce14cf2724830b22eb0fc97dc5ad59f976a3676a6110a0585d385072986290ee2c61ff5534a0b7717385c55897c44a0014818f3c81972db4f4d1f80dbc6fc9aa5ae06c5d9dd01c6052b4af94953786ba611552127e469b93059c0579285a91c25eb7b302bccc258087d185522bc94efc515d8ebb53895e2f930b85c8a1f3705b249edc5c676401f157218fbb2c3c4dd15a7327857e4c57686d2aa06719caeaaf7d0359bf754e5f46693b29369a48804b209ef18dd51d8bd9028c0636b5d7d58fe8bbfed80e2a38d97c06a27d1008cf12c890bbad2243b780f1214a580b6136db68d7682de4860dbaf6fbbf990e96be3206d0ebca08b1a741665a995513d4ec40b1a16212ddbeadaa521d9318670bac99d0e5370a0ad2220ea40b6d3d5f12c71d0245e4bc44b9940906c9d3058dc6ed927bdcdc820fef08f8709a8c0780e773ee2f0f7fdac1924bef82fef2fee3e6fa3aaffd886bdba2ba38399c83178d0f14f3891ea2b2e5bd4003f34bdf955318603276e72c8979e599384a58284580a6c5aaeebe0fea4e766564f67608c149b6bb0185f6c9d13a13756a53d50ba3f33f76cca06f568844cc144278924b040dd66b21da627baefe352f14731e0e34dfb92aa21dbabff1a1f47db29aa9b87fe8dfd5c88a8f0a95081cf4de69840a868b6aeb9288ac0ec2a898fe775153267c7d05fbf3a593ef0e52ca6f4ab5e38c0113ec52c34058e13b02362e426d4edc4bdef7668b184a7638cc435b7741df68d21fe0402339711676e7e012c07c0fd52f622df2027bd9dfede5931d42b4aaab13d8fe9fbcb8af1540738f3e398a91e32bc7ca970a77955b1740703a4cc592248f4a1c4079a52c6e0dfda7071dcbea877ccc511693582eee72581ccea64a60cc2c65627396f45fa1a835660ccf46fa67dd6d959fd4d7e3548e87ed7aa15857e572018b46afc6e9c7dd755e99bafcf3405dfde42460fecded37bfcecc7863f166fabb795dee9e71d6d5b8db42a790351458e44daf1a335c609075cae0f4e2a64da2294c19c62e12216df6ab833d998ac52355caffa37964fc36a1f86f5ae54de0c05a91b134cbffb19268a0cf3bbd47f81dd4afd97ead57d435b7b6399dafcece73dc7b82d75437a23b3eeb642e2a4f57afad52273f5c0081a6656b55dfebe81c5cafb53d2cb75c3f6bd12b3201d11f8ec161385a8aebdd1bb5c630b106cd7c20d59293b682bc361a395b29e9ea853da23d7614f731bdfe9918ded2b183bb6a51b376d0b96a5a1e7a4c215b16022986fdc229afa7a909b1d555c1ca9c0d99be0430e8e42730bcd68b9b71bf9934efd89466eefa654e36f22288aa1c546048a8421d59f2ed44bc67912b0953b0c6eba361b969086b1a9be7639131c39f9a748035f29701d8437105f6da6693c8b0a512aa86815ca80f74562396439a21421b731793fdcdef99720b243a71188f987c53f99b74c2a712109bfa0d21453455b61c1b8071a45a95fe5572873b1bb793442ac3d239cf9055b2ccb9f7ca4bd0f46463055c9a6d7b841f17f3a4859e032ae2c614046d7c009deedc01a48d6868129a6736ea49e076bfec7060b86323a68876defcb2185335d19596edfa8b2be27f8c84beec348bbd434fe1cce45bfea966cbeac842e755c590877828361443834f0cada8ae4a27271705bd9c82cd0f10d459ed9dc50be671806d87a83be63b3b069a53746fc2d96d0cb5dd812798b5b2f1651a84ecf4d3c2c69737a765044ab4e8bfeb3af52eec35ac5da0192caf29d28a982c01bffdad4596745f5b237d20ab7bd22abfb74ba9106486464ba763cb50658694ee45e2030d27dcc00051aab4fbe4a5c90ef4c83c2080f959a1130ef85fb4df495ae82aafc8c08b044640ab7b3196acd81be19e86f2c06e8ce256a1db1862f6a51ebaa66a504facc41af8d69352d2406033b984cdb4e4b3fef6bbf169b404c3c7a031a0fafb05430901853070c10858a402ad42c53c8d18c0243a311a6c2340448e8d91d56614c53512831ec2e0f50a93e70d2e9c0302cc4c6e5a1164ac516bbb5ee87378abbfcf4c4af019e907079b6d6a4b572b7bd9b6c29f70e2d0be00aa90a3cae023de7c4ea9e51f951834f2f67291af66246cef03045a25422911a005a6e2a9e731ebf0911d9a41b1199e3951c79a4030c05118a19655533b2ee91c8b01b3ce292f39313ad36ad572a955c89e444aa2d10a552be2a956c42cfb9165b1e51a94422b911899451242b954aa5eb66705fce91cf39cbc639b1efb9d69a0baee4284a9623798ce44463518725bc2718d3e9da8cb43eb24dea9148ce977cc8979c2351967d088444b65faf542adb3fe14825927324128944229d703c1279b2442a9d5a6a219e731eb36c95d879b237ca5eeebdc37270ede4de5bb9efb6c896b7bcf9de3b30698bec76a3ec8d83ec3b0bdd72746fc0bc0cc9df7ce844d1f127dc3d39393939b15a03a57eb95c2e974b59b67ba552a90cbe5289c3b9001e0d038c7a24b2e4fa3112aacdf8d764c0550724722987e20016ba44fb039a46fff258e8e25c809c2c974bbfb0e79c23973c6aaca8e443a415895c86f9051100b944b27b6f1ab71a20cab01b2dbe6098178bc562b1582c5a5914438ad6a2b588e4c562914e4731a4582c168bc5221f3a9562d69be731df7bcfb9d5834e862ec6deb23cb7f4c85de4531f5c6caea503248a1b8f62712bc564503d12892c16ab6c62cef910a954ca5624727b117d91bb451ee711914b651129a207f8a337226baa869e83ab06975cb9ec432024524ceee58bc5221c25cbb2cccab298cdf7f6f9f288ec27cbb2ac43069165b9c865590ecb933d645996c1f85e9639d275632b12e591c81dd632825858d6de1bccc417b95b2c6e170a2a17399215cb91a36ca7868b6b53cb48e34b2452fecaa2467bc4a22c67f784829e2d62b84a1069b91821429048ce3d58c47d9d78998802ec6519c9874564b148d245a28b4eccab4a8c850de76db1cd2a01c291ae9bc115eb8a39996e15d96a9d26933c2599bc924a0e93c96432994c86f1957d32994c5eb11c4076c17eabfcdedb48c6f27b2793459cbab83b401d384473b31ce796a3589c1b61533786fdc119cbc6cab181288cc450c8894585c5fc169372fb4d23361503478c2a4eac2a8598950e0b74abc8d423671e8fd163f1281f8fc623678f3c3e72a2cd1f8fc723aff921804c81061c8b074d0e06319a2ca2cb6286ae8785786cb70c90bf2fcac9f64dcd4a045a90178c186f50c1621199949365c49ad197c5669878b1c8a2b5c90c936232781560a7229bd3defbb877b148d602f372bc9149b99814131ab2b282080a848b6b222293c522194b357eca36d5e6756a37c6d2567d3985f5653999f458805e57d75e736cef05df0f528e31945cb66d32016419c5c6ce980dbabcae97c7f2f8f68ed16ad8bd7ccd22225d156e25bc3c28f9b878fbc29ab1c20f45146acacd4358bc917b2793ecd2762a215294308687f6720d1fd879dc3f7170c3d7288a2db981b5abacb6bbaaada03615f14e2689e08a688a6018e564d1a947c251969352a223e80e40551c1317d6141a74a67b7a4a1e8b7b7b20fd90f7f2d087a13e23cc72dc00081847030faee605dbcbb22ccbc723023a1041c24c8bdacc1a0d0f8d8a311abfb11a17c52214cce969f4a3c352b326a366a45894c9f1725389586c8b3158c8f2def2948585e54696d32b168b45d90d227708237425d9e45eba609e302160eea23a406378c662a03a208dc9c4598bc5bd77b50e274b08e6062a50ad4dc7a3cde5ea833117ba245a35c5d0adc5c4cb632d6cc58dfcbd74e5a32c27d9a9db50f1884c26499028184260a1611b6399ab0e99acc93974b04975a8497748b5c8641bd9f1783c1e91c9245aa0873469205d8eace3de237052124162ed1a3563de69bfa5a07e1f7f176d0063c228d06f8618a0a66a904a2b9bd2e35aa1a661b41551401665f9c8a6b0c3322960f5370e1c1c2b5eebbbf756e113723cb61e3572d4a43568244790a46ec268f4eeacd0d8fae462b1581c02259324781fb4a4786c32cba261b594c822433bebdbd71d95092615f4b1371285869194860ca91d543129cb504a2647d080a14cca9ecde999d1755959ac55753e7512d89c03d9ef7d2de6c802113345c37987639673e064b85940c12097c726836c8e493a07564d56dba2cc9972352fcb4b2794a408d103c00582c5f08a512713a72537b3dbe2ca730495918db6b3a797176f44db858b8660bdbe32c9548a87f764c24b6996cf9e136417c647083f5a403f40784038825e14a729904092450c6edf431841baf3c7a3d54323ed9193fa70497f8e5ea88989890947d12aee6cc24d4cb6096759951593cdae3cb5edf0a16e49cdcccd7c71597bdefb789416cb70a04c8da63492ed9119c30a927ccb9ec2b6053aecb8a4edf8f0acb9a0da5b4e93c7a84c329697b9912c8d1fc1e276788c8dedbc1ccb29b05e96453879411b93a6edbdf77e92d9fb44cce64cacba0282a7c919f36c428f5ab4dd309aa0ad698896500383014302fb0b3b4bcab22ccbb2ccb5045722e9ea81266f96cdd8b6e4b6b7b409695d5d375d7c5e2d583c7dd1fce6291a9ebfc7befe7eef0d5a8e0b846b4e0031a28ac7a3568e97c35e1edbfa7a798cebf9b2ccd26d5d69a9d93545244d9d62aa09906bf122abc66feb980a1854632bf2c6a068635a4aad0764cfa10f6829b0a0ba4c8eca43a9050956518b6bd696b178fc3e1d281f17958d354d16f7e541824c2145c5ba7999138ddc0e2e4408310402aeca5ebe0a346ef80adc0158c369a28cdd738b0aeeb61dbb1af1729c948f6837101bc339bbb32105622cce08e4e8f772bcf706cb829345b03166a5c2b85b0f58ad6df9dc28c23162ded2df557fbff71eab4a7a792c4e1ee5628c63030b69e94b6784dd512830e6c48ef3c88558d58f28cb482aa19765593a83ebe531aa2f5e64b5c48efa5e746e307985eda0095dece8189c88349039f127a5df9c0935222529cb72545eb1582cca48266a5d9396091f3213786427bacc86d8a0646cc1b0a30116c207fbed3bb244df92f4f7d21fcbbad5bd10f1726334022d7a1525e2910101238c88a253faa034468288c41419093bb21221a0c515a84019732cacb886527c51cd08b95aad76205fee468638632142884cc4db8d2e18167b39ae5f4456aab590a22caf8154c9404c7faf91212d25c5f09025ed5525f7de738b726a3b5a3bda9b378b13243cec64b72f165d70051412e2715add98654e941a7b5996e5560d040c2da20970f12275d1263db3795e58c1a615271d9146f582f34b627d11c92657a6e466f8010e09e904a1b15d6c5c64742cfad25874b9958d205b320f381f20931b70e2fcb49df5a1a960e320f0434544d365628987ab1a2701794c92dd4cbd2c5b834d159851b79e4dd0a81432acf24646a001561db323519485eeba847244f1d09098b7dc54df846211c3dad6180da22ae848716c06f468bdcad4ab73ef6df57b53d93e90962041952eb5547586e25266038bf492a2722196826679eb6559ae52a96cb2bcd1b6c7ded4ad94632255728ad191929851955bd95a15a2abf2c1e050d3d2c2d2f3a8528b2037884fbf2db3c4d3960bad5b859d85d72ea9504e6788126269e19956f180b65cc8a6552ab00861b40a2b64d119f4b74c49435ac8a3853651e8f7f879fd96fa56006a757a943951c63af1b25c2cca6c0130dc5dfd06bb6bc301c39b8b5211723cee215092cdab82058f476210d1984c9261a5d815650e384e7b3628a0c288a0523dee72175b303b9b94aaaa6f4b38b384a7949484894851525202656161b1292929619beed5987971038dce252bbe841399be24fe929212be5f6c93fd224d002cdb51d4110e10d3301035c290a24461497d446c58881ad52d871dd5bc2ccb25724931cac26fae615767464a4a5e208dca5462c29e6bc5922916b9e44308522f8a6d075a5ca7d21b55522296da58c4c9bd3482a1f0e4552168e3c4c3f3abe21252f10618a200a23d17455f56340b40c343b2fbba13bb66b1a1a50d69a9117d2066d138caf2765d1434c934653469a9f161b58d2829b12a93703c2a65eb76dd62b2c4250513519c07153b9e52fc0e4a2b07184675435b28d496e6aebc9e7d57fa01d2b190088b81a433f7a58befcbe612edfb7239b4a44c5b52b2bd562aa70c7825f4b532fa9a2b59b60a1bc3069a0a33bfa81d2be616df95cd1158b8e0ac751f7cb4e6ae34fbae5c393163c52675b5d3e162eecae977a59293324a59a54ce2499cdbed2de03bf77bcde55e73fedc2a231831bd129989f0732afbce957855cd128a321814532e73e764dfb99a8aef9c9f11f120223ef49adb70e7ebef1ce8356779dd7ccd4da05b65c584332aaacf59272563ecbb4974c64b538fe9862e8dc4dc4da4df4d56a4a8b07268009da278e66e22f6ddc47a35d933f133797d4c5e1f9323ef26264e237c37a97a6df27c6da2f49a27ab5b6565e84e0bc5d485e689c61cf63d69ed4be26a4279d1a09b7b12ec7b528a83b4a65667b773377793e87793a6d38447cde9bb0990c9104e320d27c9969426cf327c4f529d9250a764721ab374e3cc894a9abfbe27937077437c5880581fdee69e64f13da9e4948c4a5625b19a7fcd40bbbdd716fc5e5ba8beb660dd2a2b36714ed2b768d54cd5ebbb8517e6c687ba383d9e1873b7d0f5dd428ab8bf3e28a42e11d2b95be0fa6e213ab57066816a81ed6db110f4b65818b26063812784ef16809c16585ec3169a51aaf58adceb483f642020d20a10898564424619e03bb2eab5e6c7ea56a9c08caea697aaac17a6adefc73d2a312833bdb7a6d3dc8f5adf8f389ca666428828538a317724f43bb2e9e441020de91dd3f48e6c47e9f1ecf5f723f5f59165abc46e6a7a332a70a0a0e6bde2fbd1869619d85a0c4d14c7dc8f2abe1fc58870eac6a4662580e67eccfa7e54723a461dab8e58767f7681767b04f85ee2f7baa4fadafa9a973cb7cac80a103864dc89d07b99b1be97285545a76739be97504bd882324a8282324a864a6c4a7852be9700bdd625cdd7bc0274ab08a0ea03da9b95892fc5f70a516a05ebb5c25edef70a7e15dc2ab855c07a5d81a9821308df2b54bdd00acf5ea1ba55d8c0c0a927a928a025a1abef46152fba343faea722bdb91badbe1b593ea9a235271d56508bb957a8fa5ea159a157a83004664c0333b219a5c6b3017c3752a746e834da04322a3919a38c5546aca7bfa740bbbd0fbe53f0abaa56595f730acfad821c73f1837195e51c9ba9be5350aaca620127b474b5619a3b85a9ef14a2d3b3b4ef14a8af29b00551080aa23044c186020f86ef14809e14589e142640b7cac70e3d18a721152e4fa9ef1334d04605c32a7395ca9bfb84a8ef13c6664a2cb5f820e2fa36f70928be4fb05e27ec4df09b10186c9960156c9980358129ca83ef1382138213945e7309d5add21ea575e8da99d608417d9760f59bd0744ee099003461c8ad9390e6d6496093203d7b2de12ac195107dcd25b06c95159a1421fc5c9ecefccce6a7ef129a1280ba865e648050b2eabbce5d82d377094a4e515112b062fcc508b4db7bcd3b89dfd049c276c23b899c525534e93bc9548538779233178c24c805231922b121e1497e27019a92b07412e8565921d18cd9c3e172340573e2fb080826b6d4e0e4c26a44cd7dc4c4f711bda12bb91a784c45731f69fa3e62bdee057d1ff17b3d12f83462f5f42d1f1971b2f07da4aa6ae4e98e28bde6c5ea56a9a0f501c65b12150f8d99e97bd12a012814875b0a9b25a2b91797be17577a767a7ef4501c75bdcc7da4c4f791a693e7f508d0eb91a1a0625a5091ed75515a9c56f85ea4ba45a85b8cbee64596adb22245a3a88dc68a40107e24be176760d7d5024289afac69ee45a5ef45a01bdc40e98ededa6eaccdbd38e27b51c9a918058d7e2f5615b1dc16913fb74524f0b5881d0b0b8bcedc45aec6ef227e6e53a4aab9c873ab40a00dc98588a99fb89959c47711250d6ed1a3182ac2a276731771fa1de2bb4895d7cedd0a9fb71a70731749fa2e129d9ebd08f5b5085b9d4850ddd06b11110adf45ae2257112274aba08c71d13d896d9dd042fa4e44a9eb00b4431a036dc5dc8920be1359f8c8ecd042aacb023177e2d177a2f54adc23fa1103cd885666df72221371c277e2a61237951852dd2a2b25a68efa009d3a9a319edf43d0685e347590b9f435e71e62f43d444c6d4c0b040ba0e8d1dc8945df894d2771c82a24cd2a842d441a72f6ba8750a12150684808cb565929111828c57bc19183e87b48fcb717b433d7a61634f790a1ef214675552e263c9cd02b9a7bc887ef214a4e5176df43aa3e046b1f81fced239040103b90bd0ee2a75455b2bee620cfad52039a3e3d1962d5a9ab59e83b88120a70e0d8748c000ce1327790a0ef201f4b504a26b48872d8cd1d04e83b48740a724695fb0e420561db3320412043af416c409c24df4180b6138405a4f99a7f40b78a0cc8f64668cdb0b2b2faf9fe11833b1a3f3a7c329a6273fff0f9fe417d6de5828889c4119e74ee1f3ddf3fac1fd4b5ef1f1f81363eac6c7ccbfb0756ff60fa70fa8f2abf8fa74775abb077547c724050979f9c99e7bb07180b352e1336e0ec76ccdde3fa3bdf3dfc00af86a0d7bd991a5d73ff60799def1f4de7074fff00fa184af3484bfb96770fb6f7907a4c5ff3ee41ad7a40ab1e2c5bc558155a5361b3b4659d73400067d6327626632cc6dc3db6f3bb078fdd5b12de899b2ba0b97be07cf75072f28872f1dda3ca034beb4f2bb00fed8622df87d161f575f4b955567e9aa66a946418d51479f83e548ac19a91e305ecc41dd8dc874e7ff37d58c501a98912702dfa5688cd7d68f37d189d0ecfa862df87d421dbd530e86ae835ef439ba1f335ef43206be010e63597a15be524ae09ce8cc58c50d75cf35d8e7a00c433430415d30fcedce5e96f9aef32b547ec4eed058c0be7dce599efb2b5ebbb7c5581e72eef6914b24621cbb2c7775996e524abd04f6e52a1becb4e95e2dc659e20615a10dbeb2e940aa7af85d4a710eac10d12564c7d4656304b684cd617a0b6b599b90b9d32df85189e3e7363561b349ee62e7c7ecc77a1927085d277a1104bb7fce99638f03509efb1dd6bdd633fdd8cab7a856645a05314b02cad6777f81e9bc9099988cac1f5c4d190fab4343909d1e4cc3d86be7c8fa3d3f86ce97b4c8dd9eae2a0ba7828b689797a7c8dafcdd7acd65957073525351b44b3cb77387a03c62ce7cc861dd3dce169cb771806346f69541da4b89c7387abaf59bec3d6eb1eec07079ac156663016cc14f55a53f585967778084eb2fac14da1b9c33c566f9a15db6bde5fe9d9eb97fafa85f677057b2da6d0b524abe6dcdf1daff4be2f16d41f5430f075d02e787dcd83d40f3eb70adb26e6126205cd939cd2acf500bef49a6c968ce4d8e61e74fa1cdf83552b3ae00df580d9d9f1cc3d088df6e0347816140c0a1a7aed7cbdd21ce156e3b985e3e232e3f8ee46a9426a5b314352563624e6ee5601bfbbd6eb1eb5a9ddc0d72dae55db82f5dae9b56ebacf6d0d413aa3ab061e0ed4dedcf7f5ffbe6f3fb7e9e4e9d3eed009765addb77a4b3567dbadc2566b34e12091e5763536fb7ddfcd191b0f47305ef0ae4d73df375e6727d0a8a5ea32e662eefbf97ddfb79253149ede5817f863cdbed576dfb55f07aa3108043bf16c7a1b5a31f37dd7579c1a96a3962f1696b96ba7bdefba4a0a2a220f88e76866ee1afa7adf75747a46a7351b0258260286ba06fa0dfbc20a11149dd014b0266e68d65a5baf7b6e4225cb6c796fad94ad6eabb6e61e6033085966cb87b4e6acdaf7d66923b026c68c142a54e8589af55573126c150e475854c040a81d62b3e615e0a07907366c15a296b6f092c1f2d3b27337eb1aafab66b44a80d8a3835b9a35de6b566fabcb6a4d851dcbacef5ef3943218672725483136d3a2abbe39bb47ce2d3947c2fd0880b748a4b3ec0e871b7544746946d23892a0542a956c246f2b9e7397073582783b1412737cf0e383c1e0fee0cb87effbca2ffcc2effbc2373ec8a26198840d06697cd0e383c160908beb2e682469b931a8655461a146a29118a4fb609093a40085d97681701a892420cf768170f9e1b35d20d8be13b950d837dcbd5dbefc655baddd675dcd64597697b15e715321a5e91d8e96b97dc119e27cd1ad053dcdf8715d584ec4401708372c2766e08df5cfdcc3351ebe9961f87de3f88d95aedbe21637dd16b4d8e5b1cb8964efae58c5b8422ded7d2539e7949167b74ea4789067b74e34edb0db0d648126cd398905ce2e4b0a29dbeeddb61b8dc428eaecd97cba19eb78bc92407cdd683a9bf5def15a6b1d0c9a90208bae0c6064e3ea25018cd2f866b890a01ef6d5cf882bb37509c9a8c17909d1f8e0357434a447342d626a395c5525b06c403644085a32b63bb9834649ae0d2e4c6cde3bc7efc0a813319e5049713b104f4874dd65273289ec5e32f9007ef6ca80b8882e22f46cbc208b8123e9a3fd317bcd72e71f55b31c82acf585c76d6bad0b4a0420d2c8de1ae96363e6d3a65bdeea4011a435083c317a967adada192a2f2f05140b51cefe2372e07922c0e6408c7a1b097aec3cbddee943713642a273f55ac7cfb82293a7e38c7699e0d3b1fdd262ae134242dc7260c2fd80bc2aec570ed26bcde31c372207181734ac6fce1c7c3637aa6444d88df802f7af889d079d275e6b2fa71a31186723e442cece1a27c4160e9d517308eae90806b5d61ee05e6bad35f3465a8461f80b56000c8f0077009fd5b80840cd9f974dd94dcccdd8c33c4583079a87f906097080770befbdb7d1ca92585a8d87bd1d77bbefaab5d6ed54eb1de41c34b30d06971dd0804e410a3bdd1ba6c4ce4ea71be667b7318ea91dc03067e3629a9687612f9ab4876b5e52824c3638ad91cd17dd2c7b3d33e2b5d61c581768497e6d5545395db3e6d33c04ddb6681ec44833c8b8c85061b4d65aab60e11db07e73d7ab830baf1826a9976bd68c863968adb5d62dc068c4a0fb99d10635ebbdd75a6b58eb09646b218c70b68f7b00399ada74d0e87876e9c0ebda0106c28b4587574b5a90978b0da9d70b9d17cc966679958b6208814daf03ff8c3ae856c98835536b0fe0b6eadc41d5996293a1f71bdebb25613f20e14c1c6c66ee4b0caa604caa0e06e7051b8e9d6715246e150eef326846ecec94b322b45d38905eab4011c1f90c51e974d8369e34600b33fef7e1723f115e034219a1c688c43fa7e8931b7149b4463587bdf766e1c3e27dbfcb4fe9751cdc7b67117d7cf0f0e0ec3577358f4bbcbe91c3e8064ff04868596a571fccebd8d51ca056c49ca3b85d7c6aaf632d8227d95dd59a4e8f0a209aeb8d53cad233bd3a6251838600eae654ec9918f176c5ab001307430704c303d2ddca879aa650998d3fa831bbe50b1b3239228e6e28d15021a318cabc2f8bb5a57f5f192daa2a57c6fd00873ccb62ad062ff8c76c79dc7262cb790a0963db7262dbdaec9b215b00220bbd3a7dfbedf5f96ddbf2768b88e1591aeffecb5911da20975dcd0cf2258bd44cd7e544237739135ef27769e41eef02d1bdcb5d98d94561b64f44f6b78adb964dad102be16cbae0cd7bc6efdd7e3ca0d522becf6abd416fd0d56f5382396cd88b08ac243f3d9dae3a06a45878b68cc4cdcbcf96917809eabab7047d773e2fce31961d336c7d584826662a14d306b501758d20235ab39a5dbae5b3d320b9077976fa63159c316451b6eb0643603f7897dde35f19865956562eb7706f2e54c62f0ff2f70351f36030c80677f0655fd665df258c823d8318645f1ee47d6f36de33dea861908c380c6159966537ec0b2cd790c2dc17d82059db1a4560b526ee0b2cd7edd663d90c0cfb08cf76adc0acf9d6068362a76e9e7b9687c0dc1818be6c90b859add2ae04db360aaee50d9ad1f2d115b4f6b67c00cdb56fa4f06c5750d7139fed0a8a72ad40d3177976fa637d15cd3b060dcf469fa9e2ce2c67df1ba01cb7e6e76f58e4c6403dff02c1fccb91ef1bbb307761980bc8e661981b618eec30c3731b458c6f7ef0be33df9d1a9908becb8daebb75eb44f47896eb27c60f9fe5fa8141841ab22806789613804dc0b0aa05a1e5ec5c8d59d8dd1c321c89499e353efb81826158d526207ec64fbd952f6f895abbaeccdf0d440ce1357f792b745d57e8f2d6ddeed595e5ede2b5206cced91604ede2b520bc5cbb9b06efeea07b75575ef925f257a9951d80616130a87530a88339689ddfdf57196c695a10821ce6af32082b9bff76a0a569417839fc2a8b7cf8f615cd1a60ba13f80b7876ba83f543d6004458d9ab41e30783c120cc877c287b8c28dbfd814865d34c0854c51a7e5815c744a291535bb6b69a5cf6383e2e3b9168e423cbce64fe70d953527e488487ca1868180e0e9d84f1c758ec07414f9d21c80394a433b8bce543259dc1496738eee510e6e5e5502b65ab52b6bb2ae53da5eca7dc3dc4ef806fd04310a590bfc1dd438c370f42f785a001788f0bc05dad52a1004b0f7de1e5062089f5858eec46637c816f259283f498e95b650a988f81b71f0f4062e011b8c03df81846872fd804c851168496b714ba84d2ccac9e4c535bc6b77c28d5193ae02d1f4e75060cbce5c3335604f75b8e54ba1f066328a20cc21570979d030e5af0efd9062af17da36e4f819bf29c6fd0afcbb9e6034879ce834ace4594292f2b41e09de57a993f9b80f8c982d07299cb5ce632f7d019327059c955b8cc913a030af7e072082772132e73996bd0195e2ef3117406560426977f170000bc0500dfa053861c882f883e82285fa5ab34225f0fad5241c5c85f1e5758b645be63a72a68dc1547758658c845784b32c22b0831fc868dedc703444a8849d6e4c85d6567a3c4a0090f7e50c0062f4abc70fe719982943731e1ed875458f2a492fd218ab27d8ff86900de9ef05619c201f8063d54510e7b0c36e80dafdb83bc4fe02b7883415709426244ea0c1e283a4308df9c89416720e1ac08227cf32152b97b240cab8cc8964b6082285f90dd13f396c74a44e5fba17c636432e5e5224a96fda0fd80c004be616fd04325fb5b19009556c9851a867e02b7a0ec1af8041efc7840005e257f3f288003309d24a7d7b01cb61e2a4af603a05c4a20837204cd7cf904e506cd7cf901940ed0cc10961a34937d03284f94f15269d4cc971740c9f785970340c9d4cc97134019428a92830634f3e54c6507d80f5e9ea299d50fee0f405076eda1ecc601283b0acb033e58b2c40ad0c7a05c01f35170817bc0653b2defe921cc0a8a2c243da6169c1e9a2df72d1f7aa0dcbc03ff720f949df91ef0d6830bfc5576e6077bfbee05de12df0e947152074b017cb0b152d98190938b6bba335a60e84fc45e999c9a8a1826420c8753bab81437cc6e5ce1fee5c469d30b99057d23d070905ac8c8aa263a80b07dd336eb1ddf8d9fd4db8379acd454e555b9b8ee90c2e1d6f40612c7dbe517f8d0552add0dd517bc123d3f6acdddf6269c9ed8125f97ef9d02e60b971796f1338fb8d93e5ec2cb4e0c2ebbd1c4cebb6d363963793e3bfe6ecc6ffcecc7ce93d879726277b217f7fdc4eff549f5f5c9890b5c5e74ebc50d23bbb5ef277020f884aa44d480be98fb89daf713174d2670708c7989fdccfd24edfb49747a7276423d61b33a09b21a7a7d6273e2d4fa7e02f4fa84e5f549f3355f42b7ca8acb8e1b5a405536b4f866eaf76594a5a94495082a1754d4b92fa70fe3fb924a82999e271dcd568ddedc9768df97d6eb72efedfbd26f1908b5b4825a62bd5e322d9d5e43bf2fab5e2f9faf974aafb9b2ba5558aebcaca7a699111fd48bef011180b9a66ca1b8f278d8f4c2f230e9f570dff77d3dbc983ee6c3578e5f61fc52958849ded7f8be6f578ae7bf54493031fcbeeffbbe6f1cc73cafb0cad571ac65fd98c338f08b15c3b2841c5d603c1f73618cf39620e560a121c133830addf1b57784f1086198aa2b283b9fed52f1c4e1294362550afce1211cd20d5f19863d600f983a54dae0c86db2b0750099139695385dd2e9471cc763ce780aed10ec0a8bc28161188ee3ad363b59e4175d517e332e51334988ff56e3b8a5c68dc3fc6c3a3840ec99d3040aaa718034aa45d6c76378cc6318c7b0d46ecb1ec32759292107b1657916cc44f3e35888830b869a18f5c611b1b96b668c6c4c24313eabf5a28cc8e5ad57e5d94a5b2ff67cf4dce74703d4f2f96da18100826198efb92fb0f12cf3e4f11b257c9d4519d642e12be49d48624c628ac2f2d031532fd6c7712c9485b271eac3c3702cd517d8b3988d2867b4e37bcc6ba0be10db80d117622ec3501886e123ad29aa91388ebbf405561a9fe90beccf7a6cfa020baff83c0181f4589a6448add0930bd9d2d373cab25028944750977686c29a6337c255f152dcdaeb39d28232791cc9f0d0432a227c63a29144e69d4862b4f2db1ec3574616bec2a6b6210c4741a3a251d328aa30be6a8b61212c7ccf5eb51719b67abc24462b684e0a1737454c736f18746327960e6a4e1d5a2e25ccdcdcacab6bf08aefa669070597c4187d960b8a272af3caf0eb13cb3b8e6396ab0aeb6378eacabc72118896bac6293c04a747345e98de560a465f606d621ee290f165a924ceec627aa74930325a26a0e4ab687c2517bcaa93793aa7fbacd61c17851b29f087c7102e0e123593a4398ca3ae5466ee65cf3e5c3676e3690cbfc2307913498c4e72ece2e3d88618c7d0151fcb9a1399fc51984ebe65ee14c2e398c771ac75dd17d858e69dcbbce54c14323b122ea2ec92bc72cc31570710ae9d1b611c439f1f733796791cc7f116745f60854a14cd0c3bd184671662878f6b8eb13ee644bb8f636efcfb388ee1170ac451b6709cdf79ca908882bf5db2304390dbc09c24f8b0fca6b8c631108e4b62c48aee0b6c3c6267c76eac42695f60e32b2298c49835d517586a9c552512b70a0b43886708363ecc4564e361d8aa2fb0ffaeb8ea0b2a0d48e1b42fb01f0c1a892424cf6a85617df0d9e988a5ef441e0fc933744cd156e41d3da5805177a662e9caacaced2ac96c5b4e6c390fe152a5b44359c817d44423098931d6aa11a10657189b918e299f95553c353105c7c1f88563189e0b815198c4188699608e84e1f77ddfd7e8f579e1377ed9b77fb9fbbeef3b1702ae41e1cc3122a03cbdbeb117b7f9adfa17d023e68d638ec2bc6a4b21c2c658d58e4b35e7239c3605fa0c394af159adac182d1960df798a87521fcef0654ebeeef0a9d5f4bd78d4c03343013c1bc6a7f4139e0de3d381a388b19f0ce73253bd1bd6d478d498004b2eafc51657df88a915225322b89f2d230627b46be02219991e3f386b0c125d30404825c56255a61de18cebb2092550157bab567d3ed836ddf50bda435794a413f52c37ea0c28ff01341d1651532f0c1cd62704dbc8d8c029cc67c562a21f3f2b16032d2221718b619899a653b0a55964d47482b86419793c1b26e307388bb5c8dbdadbf17602050cf6bea24878f1e5d44061405357b0ee6a00b17a8864e43c6540c4c60bb5ab5f9a0c3ad709039aec8d6113431733f11b13617921cdd9306511b92750587da060417c760c2ab0caa2b542910adff2bd6c59115ab60db66d1d6b1700b31a2e442666ec9499d87b018de020b9c6c6bfaf0dfcbe5248ffbe40303c0634348ea1b0790acf8e454d75b82be14527e752d7c4e280ba43070d3485da10d38a8dd3ef49f6747991b77417f301b1d0bfa6a6b5399b24186e890e313cac83882f981d3623cf86c1d8b97847202df089e30bbb17268c71d154d688958d5082d669918809c4f1f910642c486f44524a4a322146c264aa86da9c98b590b098193a2dd72779362ce626ce815f68dde10885952043620163707cc834699e882d30524bcc1e0cf4e1cd0a45a0156d08060c19a3e258541a10ccccf3d1aa31c3e68bca1df1a22387bd0cf9c02b28523166d62602ebc5fcba6d45ddb11c396ee01816c31a2a0a8a21244562fd64745c32199f1912a71b755b4b413e4b164395ab6fecd412bfb10c9e7e6980436f734a2262b062b2982e9e003c4b1643f325cf9275b8b60d9530e2d943026abbe18688e11afc19c3e67d5e49b4e6a460905e2ac41cc118914a248d28397a23be1cb5f840ba0220c504bc0b3548432c9e306c8a406a5e105b3523485e704a6ab6b6645448d232d6f4148969126a905c58484a136176f2427594225d557801d19c2013738dc8c422f600108f0842893f42a0194738c5c447352ac43f1e2f5b5a42c69af8951e0dd5c4218e964939509e6214f0244841304d7879df1718863f1e7e191a3b7856fa3c7a9167a54fe79b32157956f8c1a0e6c1d60dbacb2387968b7cfb1bf48a6e6100cb4ce0fa42875c8ee8138bf94d9a63019b937976cda108ce207de732fa640dac9c8e3c209e1a33ae686697a7943c0b2683ed419e059341d64284cbe8845e9e8b14374080884b00c56f9c0228d7d50c0814575aee910e8e4ecf4dfc6c988ecc2ebb4ab079df9d17ff1effb5818d90299c3b622e5bdb1e758d6d6cc551cc93e9e9277e73a22f2a3126a06e72bc90a9ba463945c11ca4191886619bb01c9c375817c30f88e9018c89b3e63cb9453a52101db52a9db363844ce10ccb417b6598b0d109db098a61c370aa2f3f1ba6b365652ff0c64d3c31ebc66f0cc34f0fc33cbbc4be6a059b6f1c99308e45d38a07057f3b6646cc80d29be11265b95c2d7a3cd367cfc35c5b6a362c0b6b55f4cdeedd67a37152700f99df4e2c6386a366eb4ccc7a63873b4456b7e77143470fbcb5c36de6834b76a3cf1582c83b8b33aab9c2ebc2f02cd98db0273e4b76e3ea7dab289e34988a5690b0b133c3420f972d4179e04b500dadbbb5b4c278f26cd912ce12cb2eea92ab7b984513444e8ca6133954acbc172882c0a27eaf0d1cb96d468cd9600b5a464031e16806a1cd2fd01419fc024753c569fd3b0574c3474c91f8a97979daf19322e6aa99ba6a59b7e975ef62d86b66c74b142e67c5b17e398a66b62c7053f1f221edc6d78939e8fa7c908c26660ab930e1e5fbbefcea85d92e5db2a82acd51509e258be2f9e0b35c405bdf794a2c1d0ee3e1de7b7337c8b77697ba65ddffbdec39783206dcc0af1b9fb08687d7ad85704686a4a5a8cd854b0bad133d6e6bee97db9b8ff0cb8deb015530b6e252047e61f180a079a2c68d1239455073bbf32d27720fec19eca6bced5086e33896f1b1f0e3388e6579f9be711cef147d1cc7308cc29971cc89801fc7711cc3300c37c0c665afc3891d5c7e3a3b2e43319308c3acdac30ff39864e984da592f4ccd44e1cc0a0c359da0913547626686dd9c87e1a80e1e0f931b61260fef72122347d111fb8f67a33a2abef314a1508508d58ac0a29e1b283e6709b6a80f5332d21c1c0bd835a9494920b1c8f25080b4a61138d72d1a961b0f4681b011d58cd51185011372e995bdbc34cf171896893e816af2e0a8111fac25e3ec5d971b53b6caca07b16b58f30f06276f8e1acd3dc8b3d127cdfbbaa134591c01e6ccd9b4b8368132288c8af8aa4fb35b43d3aea05072c1d22107acecc69d61d96ccc9070aaddf89bc289e118e0518920d1a6e24acb6dfab981471e6cc021c81a8123c40e6875cf95c12192bf7046ace066df99ef6a78d79df0ecd78dcf7b3cfbe5c1eba9052489e116160f899ad65275a3a56b86dd191e53e164625bb1876276dd98778dc7ff78b62c2bfa6e2f0e65374d41332cee64dc0e2d0376f082e0d4dc707e5a1f7dc165dd67f7f2a897ec0bbf05311b847575ec7531e3b385e346e72d466e7e6140f810457c78dff76d81e1969ce0c8b35d4701a06ea814ab994d639619828868021004a31700002008068804d3380dc334a66714000f48ac547054421c85a3390ec3300a82188821c4006300218818a31053556630ead56ec9b36a36908b42a44a27902fff8a22b1c622be4d108a23e0801e188b2943599564f27f377658762039176eb5feb3cb3ab0c411234a48e42aadeaa99df0935f5db4c29bacb834963250b544dff6d0492462d48b5970103754686f38b5f680fc93ddd9ab61d5cf43080788cf61a5a35732a89f6b1d05e2f3463b598d6668981781c668c8420c4ca35bd996aea70612d3881d71fb5b1313f5e84281304d2122ea62b32e72d6a39a658f755f06e6d91f92215c3d4bcac1922d79caf54830731ccbb9d9bbd1ed689dc5089d96551dcbf9aab404a85c727387114abe5826dd01d053112570230d825aa4c23b79078f1da97aeca389595ba07a1fb30149502b0e4b1e50c401c5400f1e3bd6aecc57fae59d0309ab82acb29a2eb18c1427c2f830f523a08657fb4a8840667f941289962026a4e4b6cecb16612fb427928311021953dc631c30930a81c41f777766500dc8986bc0f5038ddb2a4c97bd1743466308225c412ef8ba17ca70ef38b94ccb0ae955c43fb73c3eb4ec3498245164aa74e39025044b235df74b3e200a3c66fa403b7c409c6a87e3fb67fae86596a8fc0c375a165bdc3814843f4df4f3441e55810b615dda3b797e418cc51e7fcfa34ec606f102fefb90812da611dcc8284bd05216cfc34b26b82f1d5d5af31163b007a1956d7bb634ffbe4c70a2d6792e4d006d55e5513f47a6dc50f09cbc806be61eb576e6bd2b9be26620b2310a8e0e4ea02bf530e99e157bae174422c89363138b51e2babc039a3b3ecba8069878c76cb1daab91c06fb2f2d54ab2444afca21a43cd867d4d673f58e5a2c1da06e6cb35fa22a47eab52bd12a3525de47300dcec30422842372f08686107260bab6c0296b6e5acd59e631aa655ee34dc8b44f007611ccef5e52001b2515ab3a134bf0e8cc69ebb8486dee92c8ad8c469676c3bae33b16cf1048a49e9893e51fdfe47bd449cc6b393153cf4a84263eebd223f1a78ea00e419221237d4c440ddb7c88c6793ed918aca229f0354f0a951fbffe10807c813a17508b6d5c0f34f769416a3db4ebd2c05dee78083dfe8e177d1c0cbfd5db56159141f66e970909d864a5bb303026744d5834965ca61fd51a418d316de362d00aab9db22b72335ec1cae8ffe9a161b9bc70f971bbcf5b9d4d680c7368b545a6863399468c862b7fd65121091381ff971e490e2845dbb59e7f76f729160c1739fc888ce117fc26a1684b706095bf46aa590b1dfa607322e2d1ca4078fa1eb12001071f244201779c2042cd2f7541f1001253451dd096d1891d9b811cd4b056b3697f96578083ed92364c9b5e215429faa40e029b045a47202c28318a4b5c8c879a943a3cac57721db5371d632e173f9694d98d2c6e855e846aa95048421d46d29b32a5a4d7b594310be4836c6744f31cbfbd51721221a427b83c2e4499d459f81d9d78fb791136cca5c2631a018d8130727852f5f182042e75cc6da437f7ef7f914128c2a340b5bffa2ecca25bce27c540648d61f452e0173b50631b934e620e609ae6199b86738919b3a615156b075b05b9b55f2ad2ad58f2dc46552328372e4898471774d5acd6b18f2efdb8a7ef42043538fad4c13de699372abd00e131d1cd403fa8a1a8af58a239797407515f78125f9d348008f8a119f4d4e724b14cf86d57e5528d3000f67a2a9ebefc3611d2939aec49368b34bcdf2be6eee8106acd9e8b2801777628030c40b38f8eb6661e1af568c8b397125f36d200aad2e11d561240f186ed6e5fcb3cac05f49291b488048b1ee9a41ff00a09f10e00db355d38c253767315a74cf98dceb9b5dab5a5c3888c49983a26be10df91713cae9f0042a18819fdc72988fc247964e7d1b0a40af0fca52e819873f95f41a6a3154135c996149e59ffa2d97427e04a8c20bd5b6a8cc96b955c7751b3c34119205ed5a4e168c42cc4cbd46bb5c48bbc95c5c2449fdae14b772cafdeaeb8d6b2081837ec248333dec310701ca24879ab7eb89354052a4501f6531a580aa496648d17e46f735c88acbea218aa690ae7e91964fd9f7cf9ee8a231a39cda147a59a3f5749eb6365a125a6e1a12cd48508845731f033e320251162d9e76f8704a322f8b4a9b55202d51f3be4fe2e3b8d1455d3223a1ed91d00c075a5482a6ebf83d83442b5505fb992c197790cf38e8578b678501790e2c0fcfc41755fe26e7ecb36de7b17d3085ee6494171be94ed267b8020de5a999f5d1591352507547530a906d519d0db919c774f1c9872e25e8d4ade5c6d3901e6c8f5d0e92258789aa853ca4630bd203d93eb209b7e8412e68dcc0831d6f4f14187e315339f858d02c313e7f08c3304094bd0d3ace9ffe6f07be3768299959062828c4e5268f7a91ca0ec4e1d045a8823316979fc2260a8c1720807220ca2744eca2cc61f4daf09fe8935e6e30274b492f82b3850736f2210a8605358f244971e09b9db25052e480bc1128d937e6e4d12a1e02c4b1e0116db8595b0fea52f7835fdf060998d138f6b6154214d94e604d21ba87b1af28468590e44079348afe0ae4a927bae9b53f9b1a58be9d91ec0e6bb49290f61f4a375fe9094b6ca279f88107536cbd34c0132993bd87937d0941fbd6f1a7405d8564e0bb054f57a9b022f604c79a48e3501169c2cc72d3d32132feb3b59ac794bd104d4b376bd01d6652a77dcb84bf427e20d54a62be0c4dc937b84be9fd82eebaf1582d5b9c8311489628190eb7407b885499e3f84cbb96ef4b549ba76523048844c0435936e21298946ceb8fb99dc28aaf3496a0bacedcdcd30524be8fece1c897af390b874641de34fbdeee4153993bcc0df94bdd5826aaeb13eb30b807c6375154e0edfb67269cbd4df9500d2a57fd81c1bbb2f67c00d732d94eb93f772cb163b64a79e57becd05d5b766fbcb35be2fd86996e2799472b43fdbd46b76074f110e493d956985ca6f934589cc51be07fc0c456f08349d3d8d74ce687312caf6e449cd0a474a20a11e6cbd5cb3786f4c945a55defc4adaa51812272890470cb3725c2300f3c25bde50eadb93db7dd7fcb47227b4b1540b38ff25cf804f48bc14268f4d5905adc2d086d9d873b0dc0cfe37744301199704217648795ae5bf2a84f0a89821f46ac22050b42ddd98dfd49023a1581cd3d230e3d80431b11f1a12bede615691a7fbf78192d3d2bbe6fcd9218474cc79618827cd74f8f5010513c3a1369c9c73ddb35c43934d3658dc5eebd32bd8b4be0601398c8f48d4888a7276ea675ed0e2eae7ec3886817c226ad49611cb9d473c71f21106e4a3a7ccc096f51da59621730e59407a2c5a5e7a41f31f7ec5070824ced347eeaa8dfc1c71a3071a649a0e20aa061df2e21d5cd51107291a888adeb3ac7720dbee4184984ba4bfa8db0d9fbb3047112ad8884b0e260a1ac01ab69e93f246bd6664b45278dd182a1d4c3cd8194dc5ea41bf58e1ebbde70892199ad36ace2f34e018ff00a4404b9fe94a2626a4a13d236a237b5418e4da8c0237ea4c20d6ac925ba33544c0ac81cb5f59e3aaa485946b3cf00ee3ce77e4cfc68b564f6c371488c3721bb7d61425857c44ba8513388cc480ad28521f1b09e7143364bbb1f4c8b7b22a6fc5b90f03ceb6249931e61dd8da1f1773c72d52d4dd56a1b7f31d515178577f6c71aac53764de2b94915eb16e475145676a81088f8a04e71fa0bf0470107712036c20b7079dc05179e702383b5a2bb172c4285db98a8ccc812d1978a4226e9c65e655f15eeeedcd2693c437685832790ce45b847e50f3880b927e88e18b8548b8cf1d809b7cb091db9cf14439975c13195a034a01e1dee94ccaab8a63390f42bc43680bda18d8f3b5582c5aae2961c964762621e6cf7886e5a6d393284b1dc7596d7c5b8a4c1f7e441bdd544be233c63eb31b3beb126e694d992bac2423a1588af01950233aa5ce231a69ea421e389a1329b003a1a03740037fe282b98df274c6417887d09a243568899b4188851c93eedc1e542979be91a716987da59889930fdfc2661afee89558c6b61dda0fc31923eae7f5093209b0f647a5cda55e4186479432b8cf2fc174813d82c1ce0982ac04d1d7053fb08b68f370f10f3f09b6b2da0404d408b2d47be13e27f8906e67a01243c9e8ab1dde755780f65fb2a39f6934852e5be6174b79a75cb03cff7bd18b57ee7dc7ee2226ff62c221c1dbaf6c1aa18b318ca800aad00b5b6d263df46c5def67b6bedd71e9a68b888936ba25112714b5c6905747c8051557a26f14899fdb567ce94a94a18201a8ce2c4dc319ad5920c8cb16e052bc3b89ca194b2a4e2f5083829359461d605e91a7b40ad4ca15ffc06e9e0d3271b8cd6820bf6eb1572579c1c1748884c9cfcc3ce4a3bceeedaf7a68418396a5dfe848b634862b70199e637ce16be91807680658d60ec0c63d7d0c9dd8f34112c5a644d4cb54b664823df7054ee846dd19fc7ddc42d37831bc04a7c7e5d6908143a2811f1be0a061c084cc9201f9e3ee588c2f5a0ccfd666c4f242fdc7a49a0bdc42575f8ea07c28cb6226e84a6b04cecb3de6c71ce85a6be21d80fcde1784d53f7edf1ff2545e461e9c3709c59fee6688891909a13f3fbf8c8e13eae8233f9d23339d8df0d8e1c8a616821a0ae7a11544a1c2bbfd2087c184456f43f949c6245ee233918cd0e5b977a16604dc12c56444951fe735c762211f785edf151687ceef1b07cb02df44398cef4df6802afebee54a97193d07f5914d190ab1770b78c32f138ff2c351aa0d37324555892583302e2591ad5c6edeed0bb4d137bbbadb59bf30d43a01291ebc08d725c99f3aa0734b897be618dfd476e499577d197d615b443a8fdd71c758ad0fc843b9fd3a96ea08792a80d446e20612ba6496f9bff03b1d9eab405f605e2148188c2bd8e1d8a92c329cabb5f02df8edc8f20222b80ee1cce7f90c769885902eb89f900ab6e7f2ef383446ad6f102b467018fac7bb10583d6a5e654b456997799141475d58f0f6249571752c54127d10077643db78e923bfbfa0898876d352adbf4f8f0de6ff4bcc14f11099252084f330b93fc2c86656529365fccb26057c71eb9ebc8108b36cf5cef6af496cc79389cb73e31e0a9cde86235d082993897bb426898093f992c554b02a1ca610de88b99262a874fbaa27cd734777ca3e7a52bcaa986fddd1af5be7263c58c606eb2fa096fec9488dcf1c7e8c8f8296035b3dd67b59257c5e471a15f40bf5033b2083faf5c5acc8442ffdb1e3d8ebf0d1cba0c5ce5f103885af87ff2baa29a2696a9ab8c1046df0cda835f1869eb8b1e3ff59dbd3b71a817842849d9adc1625ebd066c767c7831e32465af4eef58ff70a7e46575a540b4fbb7ca2f1ff278d1adb5b0d554525ed17f325274f8f912ae5dd640795a7617a299dbd51b785118e2236c07c50b46fd88f7549317e5672f6824912751a5775e383a803a01d43ded7a71148384c21d0a898d25bb328dc9775f835a1f4ead27987f417f823ffd7487e63f200716fa0ed64938aa0034f194e715fc9cf11479882190e4b96fc4705dc17cf2593bdaa7c326c3a05063374b4c614a27d09a1d0c58c5be4becb5f06cf24ff4104d9fb5ef8d35027723bf3d8b0b63caaa620dc5a69d135d77a20cdfd9c71a4247994a2295311ccd4552485e341ce236fc8561cc22c975867ca4c5bebfcc7d52fc6f9a17aa5410c13df0122760e329d6d0c99c47c5f1e63e12e9ec5b6a7412340705f472a33af45208adb72744e353ce9e35ce01d255b846fc96ae366d20b0653cfa2025418a6fbaf62a3b199904607fa5418336d9980580476e219dd078589189cec0150075baaa2f067c9728835512f978d0035e97c368b3824b4d94016bd44357c26a2dbdefa83640fab17d4b0aa7bdf1e9b8f94a053c162b6b05aea9c4198cb95932feed85b0a04c8900db58b4627023141314b13a02ab9eac798df866a69ed52cfcf0b89451ac6d320d2fa6a98f811fa878339f28b687afde3c8fa55ec02642a3085bb53030d749446de2c184716a3685883a3ab2498a47d5ebbac2c165e02fd33c000e613fc960155dd4143acf20a050ea7fc26a786287b2f5e4e58ee01a775ee8910ecd5ddad28bd2777ae31b4d288323ee709d6a45637ea400a592caf969714ef7c6aa08b29bd38250d5c354e49dbbea80cea583cc784d50a15e5aa95eb0f81c45983ed30e3db8916eeeabee9b3b5d5f351554eac9f5042e4084ce4db0c46d12d37105e037c464c8be271863ac704d9aa869f076330e588ace9ce1ac54c89dc9ab901ace691808280ba8ce622c43bdfb421fa7bf95691ac7fa45de45ae9dd718152a3c0429ca5a4d9a1e7a1d3ab437f2701f8918409b1353c9650164ec4880f7886c389baafeaa7bbbed11b3c41c9ef6269268a196fd0f3a723bc925bbdddf91c4b2d4705fdd43a204b6c523b9c641a943f80363cf5b5dc6c899083c7cc63a2aaa4a30ebca9f86ec2b5d7c85e099a38002ab256778228877a36126f6bc4550a422ae626fee7cc398e8da8a85ad89a9fa169d230894d25fee01bf50c3069b9e0586d024e1911ef9f2202251a81239584fe384fb035f3da8d4b030d5b6b6ee70eb24436a0840f652ac879b4983bd685503b19095aec19be7071ca9ac2e6c6d450354a661aae2abe7c1c099da91f87603279579798c3baee872967e9be5ed4165ae07e40b587ced61cd90f249f5bc7f3e7a0581637f5e0767c03b475c66f16b5f5a5141cdca7c689f15ec1270bd2f7202a00ad35d2e40690058e8de7c5550056d645515b40c1f0af3735455c055153c22178294a156a18e7786325aaa3281661629f13a70f223b5deebd3b23545ca4dec4c71b4da88b4848ca1004d1892a4a65a90e7a737d5f806d6b839433ff12e17f58860a8630e97a8f1703f7f41e4c9a6e83ed92d654383546896e0728976017a4407b055aa130a2568e850681bbbfa2b0ce6c94dca745d8734ead915de53a32106b52f2f0ec792f481d9d2652d073f37558d744ea7e2cabacdf0110c573fe5bb819644aa1c3e353e0de9d64cde8d43c4611ccba7ad8afa55c8cf6fbfd989113436663344a07a2040ccf09883535b81427e1d204679d79dd22586150a3b319a0d4a24276f1e1f0607e008489d378d9ab637772b2fbafc361ea5a086f4533b771e1191383111929f43d9522c76b1b5866fe5c2a5470ed6715b69d3fba2290c643849e4236377b1152c9382c8e7041c766667fda8322b5bbde36d19b4f3f08fdf0d06aebb00c8f6a994f4fb39767b5d61b129bca9df16efe9e2a193f76ab42bf61166349a5ad5b65479ed2a7ab21af2f1fb6b188c0797b1053b3e9b0025bdef58a4ded0819597b99ac59509a645309add208c4eb8c3984760114e6d9d9479953c03cc254cee9d6ffa0be344af6d7f7db233106ab58eb09a0a97a79e866be27e1a70d94064fb937b0936e11db41e881e00cf937cb7326257a234e1f2059d93bcafcddb08fc6987f98bbe147ab8b1aaf1d0570abbe69d15c3d53a9950dcb2fdd8656ded3668585fe2fbf68d9648ac67febad9712d9602cf35fed5b813fc34ed5d5abe1caea10de12a0fd1066ca909c8155b4f95f73e73e784fd6774da32d20ae5f6526146310100659c29249789ed72b174e103c21f1cc903d9b202f505084cf6342dbb9f6a81134c0301099509b084b7c14988a4ab1e3d142a8420862a63e3746d448078cfb102e164a7d2d048798824452b37e16d437a6538cee8b89f62b6410b713d7a5f78a72cf9942c089d6d0b1d8e74c82d86e5b2248a8a613bce9da56b5291538d4ae57c92997b0620d9357f5dbc06a39e8781feb3a8ed2d8116bb16993f3161a06b197112bc08bdcfac4e3519bf3f433ad51d66a7e216795a7c7001fca416256a12d2a5b0936697f85454ed420ad553fc916eb8e206ae8c081b20da1e26094aa7a9cc4cf7107af915061d85684c67938e56431d3e0d4f811d22ae4575d7e4c71ddd99e3e9a0764f85227e9ba56869c98a34ae85abbf7c0ec5e3fb14349060468a64cc8d2b20156f811026f43cb6ca5a2e8cd3bfdc7fc1569bce7116926d06b9230f4d1466a658241947937090fc941a5fa2176f35740e7cd05622b041422475043a8d983c52018684a92e8d19fd9a96ecf5f9a770031fbf515efce8017246819448dc050b1ca1ee862126309c3d914788d866805f0f89ea36eae8c1b7d379657660bf8aff8bf4f24ce5dfe511b1d2f39bbde8a42e35a1e223d161721e433902e70d36a7c7f443410502e5d6c79b3307b6dcf3af513de69e6f23ea4a41b1a278f3baca9956a043b59356ec69b901da55ca1f035dc285a821b42bb6a23a4192bb3ed0813e6d90d71469bf3063f91095d139f07e4dc4f9bf355001e8bd8e89d84048fb2e2920baf9ed4a0332faabfa5c3cf6a210c66110bca59d3fe630fe2c279fcfa301e604efc836ed5432783d3b0374096f3f189741b8608f3d595454c261907ed92d3b4b1ccee1f1cd3d9595e5cf8e136a0442037e27286b793320f42725666353070cccd0a41f73cd7791fe77313241b16a6dd4499f0f680e9738b78a62a2f510f2569afeb72f64e37816e8cf6956040a308d2ab05b25d47d3c38a063f064982e1c1533c21d2423aead602d9c6cc8958630ea42b517eb12a61fe5a330707d1473214b8fe17da68ea8243b6d8c2d5cb998bdb25ca23140a0b9cda01fd00a1d3526462e4988d8bfec9e4f1edd4142e25939f1541a77c02a09fd4276d7bd560ff8147597e8466fde9ea6416e033fe85e619a1b5fe5773591a4fdbb39030dbc71f8b535abbb5faeb29448ea15deec830d63fd66f53af752c214dd80ef5c10050c313be6a31fc3c948cb69d026077e57b54dd3c38a732c2ced61bc65a6c03ea5c2e277e82b73716b90dde1e0550a5a48862d1c02a8649432d78d99954145630657896743bb9a62ff8e798b79cd55dc5ba55166f972bbf84bf6f60d009943b5efad649e28e2c6c525d97de6d21df7e8cba34fff93ea83d1443f17d58645d99e38c4d9cececb061f8a7e4a18527b9a0ac5918eb90bfbdf6dfd8a41f63aeeec9cc77fdda8997b65b3c62693e22947f6754d31fd49314f782915f518de125805e96d6353457ac34b8925e7cbb1a988debb63beaa232b34f24539259cd232ebe0b43f97ea558e5f466e40454db80027c6319f503098fdcbad66f3460b719e72ed64b0a792c93c117711a27929fed67b821bb5d3d8f81647d340d94fcb0a82ab7ad2774804cb798a94e2831d4342c8911c44fe40ae1c706eda7561dcf24027c923d1c6dc1c051ce803bcfe0f42e57fa7965a9d767e16059f82b55080d48130082b62f84d91fa5348af9ab77e1a6cd5083e4e3087e25e7cff783c48d3dafc3b13e05da43877b880193e889313cffed02918f9c65119b009cce14899b1026b8684ba05ebbdc983b51397ca0f50fd72f06201e9f8340b6fd856da5f01b0b9748503241cfbed5554d9c1f10c799de60400d2bbcf707eeb194fb5604385c6791fbb67e5c76444529f079017b720ee02e407090b3efdc165e16cad4005bd0044450bafc69e8db3b312e2f67be9bed6b4b33f8ec27c5629ab099a64a1e6410d3d6b7684bdf387c1c74363c1429bb782cd425c971b68e7332fa1f80f11e8ecbe1a020faea29bf7069b85120a80613d5ced7b0bd79c4ba1d810e023d97cc542375ac0707f565c198bd11714b84356d9d02a52e622975ac254e2c62e32dd2fd672dcfb911ab3c6ed3d7866862264c9e447483e04bbb1e3ad79bf5db7ca892cebba784e12a47bec418dc9db6d30ca21a2fc8398cd0edc962f9cc7bb6a506a228c606d1ddbd4edace8198693dda8566285b19d6e13d138b22642859d8bf986bbfbd1d78c2e926cdf3d7447929237a10b96a66d2cb54c458132994f3ce364a3b4a506f1e175f92c1a86b2883fe346a42bdee3311ed13da1df4c65f58f4b28e82369c1bba02b6bb97a51cc9582b11cf7fb0936ae0f8ad34fdb145298e251d08a89dd9974d09dd6e4285a4adf42630364f085e5076b9dcaa898e76892da7948afcbab147b3d6096478c3cf3e3ea9a90ca7d6aa7fb21f6673968dca0b0e39cb6e5f0d0b3f86bd8ad880caa514d55099958bed28a9160fab4d485a450afdb63e004007f72828406312a8a33c2bcf97e4640b4d8b894e2f34f3800060ed46eea6a08bf6ca25226acc3ca12ae39e9973dc777af3fc5586f59809b9bc85adb21f95cac4eb5f04ad38c288e384cef14f12dd312511dcc797f0a3b4b3629530b7592f99c9332af3104fae10fd5c3d76df6a92c8c2bd93dd6d963f96ea0f5258940532d50cb8abd56ef378c0d323a3a24b01b92c78794634e2048d30a620fb83f328bc9d6385d6651ae282947a5ebc0443b3c909f5cfdcbe9a1ea14a392eb58a0a12872bba3fcca409648e458abb5da1791a7304641ceecaea55144e41b64ee860f26a87fb904901c6792f1ebc79648dc9e0049c9c241af1984aa5dcc4b49a17fd2b0ad88a45356204b1851e2b2d09ea187ead93c345cc2ed032672eb934881fb0f5be0ed9dd4118e3c1fbdaa0343f7d382ef5efe36ab9120c31ff4a818b4de36411bf1786f7572ec5b968160da5083baa4feebf1f91e67f38a8ed41e470533af11b727d4b116d4f83c62d50078ae7d427812ea44da9cd4b7f767b81c9b50941f8724ca2a58af19a506da0ce8c6719ff4c701a2be9c6290ebba532d17b4b146b38ad7eae0b3d67b95c166aea0f0f55cbb7dfca545cf2a239d221391314b83732c9bf1b94e3613a4be9e6985b6ef1989e79693ee87d9cd29084d5b84647dd061e3069fe514ebd0e2a4d01b69f00a9750c2a5f873b855048afe6a1972280738b01edfff4e5bd5069b1caf4cade4cc7e78157bf7e05b722eb9bcf7e2a1e309d8a634f2f8e7f24886d5361c9a50cb9349a24672f3798bc49a42655725a2657d764ad6cbf07f3b886877f05197713ae2f1db102989fc9b0601ce639de048dea4a63717d808e6653eb21dda828eff9ac38c629b5e6afde9d2e95d6f7a1507a1fa03f61dc3f8e34eb1078940f455e69700d5230fced13d8ac8ca32a0848d575c5c4893377b51b511433cd32b02ead5c274495abad22ba4619fae50b3999782f77ea124314086f1a7486b40b11ce9abbf4a8278cb1ad29df86f4c08a5b602b9fd8f2d3aff23ddce60a2b17c595e6f1ff7547bb024d796128145a1b560612b71b6a9bffd27f063858c8ba3b53d1277f03eb8e9e5f717b625388cafb7cb3f0143e928953e55c373cf6c84b826701c93197dd4704f011f50680e2525ede62f07b7759aa163dd17a07e132c601a94c2f7d09a93544a99e4622afc85ff9a5b3865b6e3cff3fbb0dc9ae2850d4fdd9bb114f17d43ef4783cc11852fd5c050f54855588ed2b0399283a36e1a44e5c6954c61f12407e11e9be47a8d09a63520982dfac939a25162900ca47870e4bc8b9321b2984d696a3192410e5ed859c482705426ef552161269fa9ad869540391358b1bbdaa9cdf743da2bb995fd96626ad1e29844a0734b93c598d0c2f33a6c371f29e121ec162d6e5d421b5b37134269efaecf1316036190ce00bc1e7b57c821454b591d6caab45f9b86641bf035a4335ba2582d77a03d7107aca2baaae965895e6c52b8f66be8dd8be2f60c811ac309cce1f57f7f13fb432078025118762f659673c7c18d8565ff4dd083e83a64bd10e4c1d68bf328bc217be47030bf1f7a6d79bce3bdcfa826a1181d17067a99711f1187c1645b1c7b37273fd393419398024b05039d80ab43c30f8f3486b6a6cd4bd36e9bc19f5f109a4754259dbd3ac3562e2539c5615bad3e6a90d51395aa3bf594cd2319da082e690d11a0974f1e45f30ec081d1bf2b8467e1b896560ab014ceac23901a112cf4ba2fbf4ef020a727eb190a401db4e96208ecf2a3cbc15228e552c3aa0d94ecd6341e0ecc1cb4bf94c56967fa9b63c13e008360aa6c7bde398d4a4ab6ebc24f898e29e87e1654908cb7337e817159094e3a13a99dcff87f5f5688eb01c38bbe90f11f9e429690a519e026881c0f6e35eaf33a96379dae89ad80630745de6291c0f9183074c221579720a619eb01452570c415dac3f75d527751e908dc9aa9245725144548afbf1f31df5f9c30b91b2426716386dc0a92261c2676c87f479d3bb661637382599a6cc6aec3fe161f01749f355ccb9dc0f105a16dd4a7091521502c7d5ff9930273ab50faa6776028e64c5d88e60b75e263d7ad53991392682c28b1fc190dd8667e56e4301d7af8b0a61af790a2d8364e2cf2424c0d90db7936a0dcf1555bc2b3f8122d0b5cd704dd0fc317fc6ff767d10f8538674998a0dc3aa20ca923baf0a7b102cc19be3da4d16796e1c52de93c05ab04f20720538800c11f1396873347fad769c93031785fcc9214012f112c6bccd3a47666f8cb00d60c475da92b79dafaf6711524fc8e52cb8d644450eea2945d90bb58e770dc475779839bb25eb5a736fb3aff723bdb77ca1cce0ba43c50afa821baa034f9925434d0dda1b2749245048b88cbcd75d1f107dbbec0dfdb80d60d5b07ff01c69a32b1b4e09a32e820a55ada1a850c331d1daeb69655e64b42177b167257f02d36f18bb3bfba637ee54245f9034f07d0b1b375698e3b5edfda2993978757ae0a0642ad2a4294e3cb1c1d989981c0a06459566a01efaeb53058d46d4f6eff7d9d0bc122d269b65853453a194635f7767ec11bc82c63bc2c8e0258886665acd17faacd29230d18037385ef693f6ac2468f908b3d61d04f52f095ab40a776ef4e2d5495b7d0e1e44c8f6919cd7ba9397944d2eac6b7a00e91f8bb53b50b667d724aa08831e54e3cb516b594d385bc42a33ede7fade36b0fc6c12116c26c7800fb66c3e0b0b6fdca1d8943b56e037a3a1870d76cd475fd3dca259e1918c30acb352236c11a99f12170f8dd9545abe04df02577e5e6c8ac5408693afd7632e7fb102176d5a0bb69fe031040cd1621fd7b3b2638efe4bc2b57b4fbad330856f45dfc7983d7cbe29f2052216babc60d77f6ed6daf0e211737d67f6fb69203e5bfa0233d236bea2d750d3dbf27be26e3d94379e7fbfb369891a71ec151903ce660cc08534acdea9387b720feb6ad7397798c813704f6cfc96d7dd3ab44c1f412b4c9bc07fa88a8c94587789c39530cf06c77dc03208ee7173883bc9bafb8ba574b0738bedec30d7cda9584cd7078fce085a9077a4fc89539dcc225fc03bcab15f03cb3268a9a140b499f914fdabcaeb9cf5b1de4f8853c4a6079b7c844de358155bf744635dd04cb05364e9f7e3c58a1ddca298f5b904ae7c79a5b52c9e1afba5a3fd3b8ad171cbf709fb9dc8a1b30d0543cf28328509072817a4975078ceb8e70c8a0cbaad0a00dfdeceeaf5a661142d89e0d10927f02457c458c87ac1e6a8a98ebd0a6759da4bcb881a35462b0db1ace508003260b7e564c06ad0066a79e8cb9bac9d0b97e6be7fe533e09e68386e65e2c15c96ab38189665e44db9c4a9086e2988cec332747de66e9cfe568ceb54cef672589c0118fb2d6cee3ec775345d965f322451f02992e50cc1a5797a47bfcbf8b866ea556ba00f9e43d5d3f90ba43840a994cfdc8b25ddbe17c981c10da2ab2891bf44c9a218adf2d283c87369d8c353426a86d3ceaffe7d8ab2e96f4c2ffc19d9f7e2a28e509bb8b1a025d58844bae09911ba41c76189e2f6a70905eb6aff6118a650204a2ce95cb08c735a01e0b956686ff325074965eabf2753566582f65d2ded2be9128671506b849a31e03fbfb03852f5935ff252d3ad830e64b8cc65a56c9fa6a503dcf0a1527a8ef86cbe186aad977238796e3aad2705baf1a7389843e8d9249d4648ae162ad02df6a84fbe28c5e44b55efa5be2b100d804ad56d39c88552ed05a1ad9665781650caf33d1f387abe7954a2a3f5dc3d479553f5d76735b49f3dd08bffdaf0df4c6ad5a3dfe80f0606e19efdfb9a8a80668c9d6133416210e113febab7a0a8e56756b24c7757681df1f9e4f6e186cef2c0764e59595d3f4f4262fdcd73814d285ede13ac8a59a1ff65c5a73ab9d61d45282087c0602bbb572cb740424a838ba80e306d99116f4f32006841b032bc0c20f3271a71f8fed95b89dcdf42da5de39f9f4e00611d71dd810771cb87d9a13ee7a00505fa7fc03ba3a13e06f9e9940991f4b0ea5cc288bec0fef25ccc308704e375878ab35b9267a2211485b7c2f25dda0d161845410aa35c3d23f79b9221bdfcc113f1626468ea0071a2cdcd9ec9a7049b794f31d9fbe4bde2e1df1076cdb119531ca73c04df6ba7798729f9e1e5373ec686ed9909982c5340fdb7767627beccc44680fe24688829eb7e8ba672e9dfdfffb4041de3e0e0956adb1555867e11d330efdcc9266c250aa7edbb5694f289c37d5ff820ad9ef93d6796eca16cc17a336ae920da1677af3528f0c5932f20feda273c60eeb84ef79ea8abf747250df695737a683d5f01dd9f9152a5209895b05012ac2835fc200d6d9c3b1df7b2f379efea0bd4c6df9db026f405257acd14b57ee701088c1ded1e7c1f97d15b752e599d6f09aacfc30f86fc503da2745a29663c357be2f26535ffca0271c2e37e8a2c82a8f1ed04de3b7fcac146f863b64860228d992513b0c022097d53e0a10fac51b8d3a1f5500c76c373d9eb34d977966458593afa621cda671bbabcd6bade6429177b448c8e4f56bad4b5cae018eed0354e66e1e2e78e1419708fb196908f47d80143d1f28df8ad4f668ffb4ee7c79348f7e2cec0b43ecbb3c3cab03fdde797e045c8c0b01e8cf5f42af57a36333b5ba56f6329d679702fd2e2eda89e3ff933eb09cf67a0f1cfe8be6d5596a90e19fc9d249817b924687b80871aabfd79084e53e3d79421eac879115c77b3fbac08f7e84f770886f9b050c85d1cb52387e7e341e98c5eb27238b86d10ab38b291cbc9eced26e661cf8aa2627d217b1be597afe95e1ecc1faf94ed728588f5ed791cb5ade1aa1e7081920e5fddc2c134de12c4efae995d1c66d765bcb161586ad2ced83ac03bf045d9ee5282b114dbec4f9aaa82fddb3f6d7a24ac73cf6585c1fedb160facf6e47ffa477c313cfb2affd768908e5c617cb84238db776a2d7149b63045c2d7145c6e8ccb03c6f8434662a397c633e9a87d20d39e30a71c9a177d7073b00e0bbd60c6b3938fcb9e50535fbaf17f007bb2912f81dc19a31dc075a8dcde00e11c6bdb7b339a2cf52071ac23663cde4a578d61933ff68758a73c39f798d0e06408f96d6b1efe7815fb0c6257cd5c2549816d46483438cec7fba7337e0564fddeec1c973a19f0847af1ecbabda25da602b5cdc3fe82fabada0fedf0455ccfdef757174132004f04f5193320903963f81ef3ea05d7f538555d47b8eb09cc326ff4b43eefa7451413f35b0cdbc7bbe7e54d5f5b5eff9614f575a21ed1fa0cd150df865c9a749db18821bdf01d0608a52d917b8d657a8d201efa6b481d0ab9bba6074dff2c9a5c1a855a08923e8e4343c466b76585b701f92e6b7830d062bf01be6cb0f7b266814a447a9e7c1b1e66514990399691acb3321e8e04beef778ebdd87da839820c4f7a2848ffa5d10730ba21af331fa2f336c3b773fe8039ac9fbef965848ed3ad8488602511a4184e27bb982266765cdfec76cdc25b3b2d0966958feefaae06b815b117922087980e1ccef5082347130620deb317662ae5ca99318342d07cdf6f51baadcc3e3ff58af6b8d0f374bc24280d3c00556fe31498715f986470210da7eab1fc60f409fd1a021e24e5020e6a9fbc9c22ea6ce1040a4c745e9c6614229e580e9157eba24616b7edfb1d712e0a73586df04f146fa14d2f6abf0aa408c9635f6866bc70c750180b5e90b1372e56d5ae6b0a71ad866c3933d59426ccaf6bb9c4b8cb02c2e1bd85c1eb119a65c7bde4cc73e1c871bd0ac939608ec04736a5fdbec8d3e553d198f6989dd6a7e50b8449a76e0545e7d9a20c60c4650086c4c59a47b97c1f60278dbb41e3665e53ec3b15798fcc9e4fba637b175ea60010d0e1b19af7f35cf77b1d8deb6d5fa065b0b7c17730d5ff0053268be369945fbcae63aead1e1a09e7f6cf5349ade869e74afdfe1f458491ce56d86d8c88e9567b95db612b3de8d417b574b2658af50cbcebdd621d7c55c9ef425600dd932896cb2ff7c7a3536297fecd6a9d13960d25eab73a5b59b63ef035f8f910e2b551e4764bf8bc36e79aad67347504e91c878360f6ae6f201d5072f4a949bc02c52a2ea71db2284cc3558493ce8bb640d3a114e9d4c2093670588c99e87d01ac7690fe83a468160436980e93d0382fdd9456fb9edb0fe138e9941ea87ddc285e38fad68ef32a54b7f500a2462c8055dd0b066d5bc3c3dcd709c52408b63b4a89f11556a14a0a5bdb1745c2cf633daa22cdacda91fa4a43be18f672bf6ca84bd0e7d82fbf3fa93d560d891e9cdded0a9410e12da19c74aea8b3f15e5e809e3958fa3f9a7db76a74aab3368e02c244f8713717bba511fb166d7e848d00122ba1f48c33c9c853c4b6e62a5a9e5609ca66860c707feed393aea0fe614b94fb857166f35a12b7aab6027e76e71946fc4a957b3970d65c30915dfb0c172c4b09c2457601ae90a6419a17dc8899856ed02b9315dd20cc7aa3a58e8e5b4262802dd992bc8024c34f3712f0ff624ea83c04531d1acc8d01278aa026fb3ecef7791422ff1b0f539b0507fd52af5ef64cb327b608e1fd93612ec3df4186fd2c6a6a3dcce32dfc1f376f59c13c2b1fedbb84e9c33c5dca4e47acd92505ca2da7d3dc070133dd679e3f62d1d8918c74d0128e8cb62571a4f80ed549c55bac21190d8106b828c4562608e4a169415d44596a44f329cdc6267b519db97478865a884a7ec2607d310db04c3e60712cf7236783c9de63bf1c1cb739d5c1cb42d27b8aff8f602e933d79180c082556cd18c2d51e827e19dd3ff59502bcfac1c160a0a3cff38c056f849900ce4c336cf93f3a934a91843fdf67510273eb6e4b4d076f89c5fbbc2bca642f7b793b1b0601ca6696a517fd1e624ebbe45da46d8d9b5cb8c003083b8322f8db83385cb6c0a1ef16ca4a528b610365b732c989d6f3b54f3412b6730b31fd2ea41ebc884334943aa292dac4bea8571c980aa3dda1e5ca3184cd9945fef1af1abff521bb2d6d17bf18adc89ab6e359cd68600a1a6d3aee11300a4d38dfd7d5e239333811c60e1a281433e0d5516b1bcc27abb141a22386bfc7f07dd174536fb69454f702af58cb2c1d4ef8a008465706af68a93c0112152517e4448f554eb67d4900d3dd3be1b15ad273e0dde3000c206fe61ef5a16d183af67030716f67f3bf3f32554d215abade2baff10974c40c13c526f1bbd6f8660c0fb972a1765c1c39c85cd4d92889a81c6e7092bc1b7d4949c537ec5d15b2e41ff33d054bb63364c457ab23241ce546f8ffb122ea28dbf14e8229333f262d53033756c330560eeaba261a2a32465e8cbfc8259844298aba3d72293400986302c91ba6d85841e4ccfdd8981929f227d25b6ce8dd517acd377d02968a2f023220378fe5b12c7539d492a6caced3348232e323a9befc6b153561f1000263178dcd10f28610855822107f8a90f9329ecb8c10f36220358f5d8d2eb239cb3a43c6753cb72809b95d16cb258c0147d3f07d03cea3603873defe6a5b237b43489de3d50af43bed7d6bec9b681cb72d0719f4ceb4d95c3d2fe2bcf968cc6c52cbbf18e434d10d89a524104865d36bb0ac038228ec62b97602f6831cf30792f3e033def893ba91eb46d54112cdad15d6d45d7ff1d4802e4de731de0d132507cdf323362b74893aa80be80c25393b092fb0909fa4dd47da5d25b0ec4045e7f47f5febdd8defbc1b83c35448b828f6eb6e0a25e5b43d58cb7f83cc168cc254811f17b954564cd2341477caa906a9d4e10f971bf6a1da2fcbc095819e04a7a4ba4bf8302867d43a2c2d0c514a6e23e7119cc2751456180a2e3f4fb58d2277e059b4b04feff15663f4ef7da11fd326603435fca942a1d6cf8cbd515748db053d4e115974d015220ebe2440580ab706f228e8653137784706ab48761e9332214b338ba7771aabee22cf0c36fdf3aef2593fd916926e77a71082008f9ce42ef11a6ae768bf0682ca84639802b79f580e83816a5f350889dc46ea5b9b3548143364672081fc74ff3b9fd0abd70cbce578b69bebd6b32e2ff9d83a8b9ec92aad521fbe3e2567ebcbef0a59b33afd0312a0fe5cd5d379c7442450865580402cc4a7a2529a9d3651b08f36e78c43ab98d3892c3ea89c7ebd3a8e18cce925a98d331097c6881b333f02d2f70962f162b3cd2446faee48d81c974c1929b81fe792d2dff241114da16c70c597f42c5f39ea6a2c5bfa94986531f8439f00c03ecbe1484ae9796c8275077a717723811300e7d766ca52206e2f096616a6a237a1b34030bd301d017e28d569625f71c3c1b315e71461992c8a423d3d2484a8ade5670a16c55ba9376c9790d4b7f1b930e8ef42d2b2e8b7df20fb5ec723e120eb49055eaa8b181500b305015d0c1965344a2f81056fa338fb5785c5ed00298e087073702dab5b47ba028dc4c2a6e4c9216b0a80fcb0ab8a604f64258bd53b6b25cc43d2842a121a46fc68eacf196b647c50886e6630a06cfe40ff3b703cdcc603799360abaf945b5eeaaf4312de7946028b4dea648a2a23ccff9c451d2159d3fbc994f007b6c4dafd35afe5faea8e129fd2f18da8ac3f7efc29efa6aa9fcfef6a95aee683be3af77958980227acdbfb19fe0df812c63b4d2bd8e97cb67c6fbc111c2f6a408df885225c60843f5a9830a42adb1e887ef20fd0f2507acde09cd2e547571c217d3630b29aa53b9e9aa94b07a4728c0de84c2b86e804046e9411ce6f1193e9dcf508f2f9e3cab1f1fed5f48bfd414ce0b717e17225498e101737c9ac94bcc5bb18f04c99f1bf4c8430d8619b95448a2cedc7120ec78c32d9af373f951c9ae0897ce770846a2e197e885744982f0734928526ce1167850ebc154e7ce96d12c92d07aeb7ad0f75867b92174eaa31610f4e791fde4c622ea330617394b0d08fdbc6cd64a4f76d6b45856053223d80398e0e15e9c1097ff4645291acfabc534b8eac19f60c9411238d86d4c62c727178cd38630299aa199eec7de4545a9a699c7b572e023eb03c83eb4e732061ba4ae02f7811bc25ce5b985f20cf1a28882826193b8215221f5af9d24c511f52f6020a49d4a336ee5425b297b52c6bce048e019d9eed2572b687d68670881873df66912af235e29cea44918ab3cccf15c91c63cbfa6911c69fee3f27a65959794fc99568c7fd4ae89c56f8c806088e7b4be293fff0c7a239fc2004a5cf3f0148c4c44ef73a116c88a8efbb34f485285dfef93c8e918a2c1f06d2fd939ba74c4994b0426d3086cd3942928add364517fb6064aa99e23c04e5006f123c6d33c14b0f09b026132815796f7bda60b308e494c3a2faaad40be7ce8b5fdd2412a56f99e4c41a5800f19d8e78289b7a290c75ef753073c0174dda4998d5a57816983748984ce6df829049c26d9d38d6c70af319c6e35535961a33b9583935a067e9953b248bd5ca101d846b0d1bc805bf1371da686909fd2298102c1bbd10a5895cf7328a2d64601bbc2daeda6a17532dcbca148a47997fb75d6a926b00814eb35c709ae80959d24d1061bfe56012db35bb43c76810bc6bfb48633c90d3bb5e0b3158a1649f4fff3a8774fa0ba7702f5a1f6eeb22668c4f792344c83a6b94e1c9f322fa181e20e99739c7b69e9a4b544d9ab27afac1bc6246dae760614cd18904494dd7ca1a479b425b64821d16fa9501c234bd54543b8c302e3bda15ecd830294538a04ea5071c7660b33fb6276f3acd29e3b45c5c88e9daf4dd40f0113734009c6a48208ccff1f98aa6f6366962d03d7a1549ca7a4e78a5f0a80cf994b3077aa8ad7dea621e02835a6e98e3974a82b440b388d2581f6226347b21226d431f184ceeb10d5eb001dedf10e897416f590a4308d5cc84a38d5ad8899d1121ced74d566b0eaf16d4b4010918fd29cb99c5588eb205f9a246c4c007d0959d2223c191bb9acd42a614a432b9d2ced3d8aea280c112013d1ec0f21966e338132626665114d960124ec6e795ee4ca32d6f0163d13eb4331a849a094666637def4e941feba8bd8e00aee3e9aef8c39d12c33c8c8ef9222e5d393e0e79b251923ded49c62e43924913d7c4df70925cab50b54ef0e69efcd05661c0863fa1f2232a5c69539431c515045688e6fce453f45211c38a2847c3b1c1b5a407faf51821a379279f0e784182f26484a8ee602add742e578c39d4cf17cf6bd2e63f902b89bce1f580465c82a429125a48184b0ad6ee492f417e7c21c36607e65eac59852c8005be85e3ed7baf352fda4c61b7de8a56d56bfb0a6e4b42c94ce9c3eb5d7a176321404b5212d82090de2beae5fc0dd889bf83da007546f500e72ed934f2552fe6b73b0eb4ecdf6b081ee5cf9968c2f58bdc32981cf35d44db2f86ae29dabb97fbba7570c765b0d1ef164d4d5f69ce95a2af08b4711c4f3d4c132ee387a7714598808cb66ef5e13e7d42b56669808fd529c7cfdfa3553c0e6fa58fa7d8bd8996ee83c49b69b6ae95498e1a2bbda303520c6c37556bb0eca0ac22059780c8bcc7d42bcccd1bf9c08e25010e2956f10906015cf0f319226c941c723b9563b107e93444d2cfaf7f2a1ee205a503e25f85b20e617387e8210f93ed1c344b908b59073478c58d2d5830a264b00e8db58d426f0687a220660edb596beb8d2512bad6e2620bc2707f13bdd7e1c4708fc3506512655f8f95ff134155b252b0ea8ff6bfdfeb4190afa1bda7e07302d07c919ee586aaaa936687bd953edf2cf10ca339319bcdf0aa7d56681e583c456ddfc00f899bec2cdf823ce5457e367179de423a172bd0f41c49506a39c1fec0c12b383d037e97fa01190a7ce571603d5832c6bad2e0f2fae31ee03a90c9c9c4a0512260125c353e7837150b361edb3470e77985d15019da1ec11eaab8581caa6e8fe4a14ba4af7438e1c0d6528a33858ee0e16dc97995c3965e216a8c0b24989a9f7534bf38985f0a4282b2ecec545ecda0c476bdbb792171946daf8440ddc59e7ec8d169b4a9c895562e17dae0b77a22e248536731b8e60e71848babb8d797e480fdb0d2b4a86ea10819d07d897642feb234ff5a3aee4c5bd2d5182cab605cfe9f57c0fed0a1ae848cffb5525964b8e44af7cb3a48713aada1002d6eaeca5fb292d2a91be4824d028d1bdf84348421e60159e344af77119714fd671e27353957a07445267b093a5c0e0834ae05e309f50f5efadad240062f6efe75b3da2f835bc14ce650acf73c5e25df51a21f534d4f8dc5a185b2a149fa856f9b23c7942e1df7299be302d0764653675a6fd614816c7208ca9b309dfb4e4a1750a079479a866fbfc86b3c52714db230f11fa2a42b9c84445629585291c54d704410a8cd95d0f809ee91c26d7ee888b8d9ff9de4d8651db4746bb9579200310d20f99e971113d18803b80b3bc6d293039e48500b6659e0eed4f89174a4cdc35c4e7f9f25098cd910650c54d6b1e88866e6894bde434639c61645a0c7ff7d6bbfabdb5d3d7fc0cc53b6a9fb7f79463508515cd9ac69402a1406626bcdca015acd5073ef93506575f75e0160f38c30958d174747812766925abef6491f782e11d6ed4959ce6dbbaec3cc80ed2a22263be69e0a4b47d1f3d8f1f0ae4ba5e5195205b2945fb332ac8bdaa2675683f80ba8bf42d17f22d99139e4477c00279529b45e9c12743fc1f3cbd2b01a512e2d6331a8c4886c592255b72d1e05e830f0dbb215de305e9ca23b2728fc9ea4e8ae3183ce7a5f031cf6d3d94c3e16f477c4c98fd94231c9a4c924447729022052fa9d4af46cd1630fb191f6cdaa99dc80ad1c90a8b48cace4ab24023e8fbacb26bf4d76942e5fcb235035e27d965c66485ea2512108cb0d7758d1448a574ab61de6de1cd3b5c3295b32203617768d696861f65b3869b0e937c6839012b445a2a257c8c81a68155d2ba6ed00343d4931fdd902192005330118eec64c7024c59e4cc841ed603cb9dd86e526f71c45c3dce631832c57b04bd1428cf177cccbb3da4971ff9d59b04179d826619d8c4d66b92984b64029947835d7276e94ea8622e9a0438b972df7b7ad0398687bf9ca3c0e541df268ff245b9e7d7c3974fd952ed188d59c8990673afb9414619678c1925cf5df5112b0bc53ffcfa1fa3f9eb863a4e634f7b8ba428667e7b5c4e6748c6cba295bba658b204626ce068a662c65edc014ab4040bc2c99c5425f69bbd5ca8a2b8428048a62a2f29a306a0f8b03288290ca49c962a2341845373107ea934127554cf96912849aaee3a9e26df8aed0ab57c5e89bec7fdd0695c005d71bac6fa788d74dabcc60f7e1d94f6e87b4bac89faae0729e9169f2a479bcad2dff7991bb1655229cc8de4ca896f2ecf8d621eb77578f6fdd2841b591a246ff0197b627b85727718a6a1992cf873b4eb7455a2601352929313942a84a028f4dea8f4e3000d08a35b74e1d19ed9e1cb33d70355a00287ca3af7e078b0fa14f6c801a73f49526d379a03463b276894739001b5a629834ac94b07e4e42b92a14eedbe08d4153e5ed68a7e9358c2a83d6ab7134d907913f90f409f1da60a662174231e574fb2993c2b3c908f03d8a3453ee5915a16934cb4ee91abf951f0daf529a7a6b546d45a5ed80e514ae98cfc50c107022f8580229fe5e2c178215b139f8ba60952842c41042ba89025d773cba1fed899a6375e3e2cb4208c38afa942bd1ecbd2b2fc657c5daf6879335621072047250893c7f10d55799290e375d4260d0d1b4dd7ff59ae7646476a43299eccde982995e089e09ffa6b9bf546acd7df5e6f6005d9130d7cd77852089cb85c9e11010370ff57552353f02e44297b8ad7e6d9e0ccf15d39dcfdc2168fa117e15404e383d97de3bfa4baf0142bf52355c226fb59e882ccea87dd80ef27c7650ee61bcaa1e0d6c99a8aa11158a029ff8a2dcf7b3620bfa3000ae77d714618d1ab2c97bd05a01a388b31ed10751e7c19d974b1212cd2a467834669c9aa22b92993798a2a7590c48a8f1c035afb4e8d1db59335a6845f957f507bdd7498e3db3748867e5ed9bd0da58a5748e9a2b4704d9317da632c42d8449691169873286000803068a3a049c479c010bc171176b5db6ef93d52bc14f4bec6f58ca542d9d7e1bef0e101a54dab0161e9bea99589b789ca35f94eb7d7efc60c618af4ad966eb52101ff35bdbe827b368f1dc21725c5d95badd6607fde901aa5ee749d60f3d1d583527adfb123ca1a235d016c0ee5f54dbd6d182de9b45234372a322754a04a7de954345c04e990783f5317a53e23a30fee932356723dfda1a87229601f675c7a07ecaf29ac1d88c2e962678d08e7c9a8daa6b6a3083b946acce513830c68126697a93398af13bd27c41a44bcf901f58f8e57a3811ba75302956d94197794611fa93b365074842b88b528644df748426d37fee2c02bfc133fc51252e26672981d9f87b74573cea974e228eaace2e0ab2b58c923b4a326b00abeb1657b6427bf2a60e16c6b5a4d5d71d3294b46de5c1c349f1c6c785ba99c9a645fca838540b8417f5de889938a9f85719194b238fe2d1f2610a43c06f9387e8c8cf2eb11811ccafd000bc091c9bdefcaf2a8f5e5affcab850643aa993cf26452f2ac3006ceaa02112157329684139694d6b399166f2f41576915109c67023605e12fceaadbf935d804d9ee599998797057a5fe52496cbb06034f3038843333ad2780c58c7c1bc92f60922ad4e3f314fc2c3596cefca912a76be8482324740ed2a1e1755aa3e01e03863cd7ce10907741959c1034f3d501b94a825235541cd207d5fbcccf9777e62154126af84e4e09beedd8ce660c9188cab831ba19aaf6e618574ba9b3891ea0bed0c031de4d34a776d7d739122811bdc32ce0bc15a2d475c96db0ab38e15bc0631242c72a84782dbc1f666df9c61f26fb28c520b5c7832c6673fbaa92fea9f2c1a82a08d181bb409b7597b47ed398cbce6620a93184ae7c7e89eaa107bb428b4b4f63cf3bd0f2a577360ccdb00964cf968c4d78221e32ae4c092e0499e5b44194010bbb90477d8904fcfa5a65ac6ebc3e8dfbbae473bf723605d4de011a79094d5d80ca5c5207ca453f7199547f03fd47f633c359c4b2105b315450162ed16508b2f289dc1f9643c6b951957dacd44ff700c23a6bec96b2769fc352a9fe93a7262ea5d341a9adcd35ba9cd37848310000c610f7faa322d932a5245b08db01c504eb047f046500cc53a44dc7604b54dff5bd353c6afeffffb7e0790b78b543197450059b58172e920a35e3578faa21889c1f500ed206255e3545efeeae810c1e70c028b1226629f882e3c0cb4ffaffeefeefe294fee370736f80c355061c76705e7aa8208fa61cb8c8c079eef9c80768e689a48be93c73f77ef79af708079b3ada2d5bfb7b440e60505cb97b2cc9bbbbbb1fa1e84a1ded761b04256bff5f170fb409892d586d24f1e52db4f59cc0974347773142c35614b371f736c8d18e8058b17c7b4346fa4b68e6398285d5c6768211c277c0d2b7efafdf3768357926f931c18feeebb69b9ac6c023bcd4927a908799d9090a131153476311a05df04089629e2c131bc55ab1586c16bbc57e91ea8b090ebe08bd309dcc34277d0a68ca3725346534c5341535657559023217cb81676666ae9105ab8d5b13d4f86a59733c3e9d809333c6c2415c244eba06bd5c856ff33cf2e2e99ee75b053e416118bcd4d15804c67e1b96a1e3910b9ef70558b02892e10144102a02278d52ef204c8cceddf1679208ab8d459e80d8a54e60c386a2dcfa399870ac4a0de18005d65355d5c6c717669e22ba743ce2b212d1c9448aaaaad2a0b87c45c6d3491f8f8a58a9a3df093881a17c91ac4c34823c9ac1933a0f12bf1ee6ef3f41656bfbdc1c040f1ccc594dfece746ae95a361b325b8e5bff909192b60bba004bfe99f9996db7ebd2fca499270662ac36de7e1aa9f3a33d4518ec6806de73d4ffed1dddddd9d1644c4cfa85dddf20b7cc3c75843a431d224da77865dce82f7526d113940c6dac36a68cde0c0388a13dbd9e9f524ec378d42ceee7a6f117211d424edbcdffccfcccb2b7b93b061c040c3a1abf3607797f0777438f25c39652a2088932270fdd7968058018ab8daec50200f3bce96e3b9a56aee681ce6d7dd12ac099395d09180756dc8a9b83191c93cde4461885438369b56edc94d8fcb486dc4862803323c59e0b331cf584859274766b69bd35bca999275d4687b53a841568b455c47550e372381e9ccfa9d6b079daa835375b0fef03040bed0f82ccefc80601a6d883c50c8418e201d291e8820f08186ada5d9cc943a82147ea6a87eb47d191ee1e6db815773666a49d3b2f071432cf2322bbae2001a366568e803270c424a21d1656823a01a4e3d0d485ff4183917677b7d5046cb0b262264dc77ad24c1acd3ccd73749a49b4f481865ece707fe8094849b3ecdeeb593cceea71d6efbac7dcbf7f05ab818a9991b67444a2e04b1ded769b53a5ee2dcdff0f8593fe3f6afeffffe75073d872e072e872ec72f0aebbcbba99b999dddd737d491e669e3fbade4b7d2fdb7be1de4bf710bc769cf2ffffffeeeeffffffcfccec41a720ce7dff85fa719399997907ab8dbcde0fc8b6103610b2d0ec2980f298e6fe2b8ee15455d511f2a08f61ea6c3ac62240811eae48488bab181544e02451ea4131152a90b901c4f8cee91f9d7cdbb08c3d0c77f384e98e799725074c93c992d99280c6528d3668e36461681d3a587970773333337377333333737733c93d7465e349fa2afc763f91babbbbbbc7e862b5d15fc4251dc6e664cc9577b7056977c3565cac367a777777f3dad5eeeeee45aedde397e6361cac3646b0e99cd66e10e27ff4bbd74772d17584171dd22a648644011bd38de281a699e7be23c32c6d871c5905a20a36cf1660d002e92c3ba14d04175cf06a831b9c7a4b03a87731b3330fa58849b94714825eb2a5cc280aede843d0aec8ff3ff1fb6f8b1d899454506ae76b7709a61bd2e6327431082d74be1fdddd0d258cd546a7e046e4497db295c88981f0f483e0246cb5ac78164c9176fb08930ad3accb5cdfa5d4bbd16683447e1199201549338a79124575f577904822635764b1b96f1e0afa707777bfac1256ea2877756e0899e3476a3189b12272dcdfde8d747361dd972d619436ca7de3ef66797eee9a7e249f919fca4fe544572be5babb59a621e42305a58d92dd9de207ab8d40b6150e892a298ac09e7bffde1c9a521aa0424a9012197b1f078d54716173778f41122bbabbcf3aaa2d81095bbef7a2e6e5e6bec2d97a2f0626fc222a533b2c56289cb151bd12152960f362660cb4bccf50b87fdf4ab203ca8cb468774b3033f36c618bba95c5193257c5e9b7c3f1bc9d0f57d55babb000de2cb0793a042a2d6f77830286805179221287702a51b8a71995a69e86ab1895b6780e456da13299a9826f0fed48fd2fca23b5c0d4d11ffa717b047d023eb14fed93f069f8447c2a7e8ebb2f0bcf2ac8c16a238f4f840a80eebd374634d325773082d546a6282bacac081db64647dd49a499132db11c7f6e84af797ed0b93b9106933fbb1b6905cfae63bc2c60047006918d6f0b07d902aac643157350d013f40445e9cea12728fb378fb83e54c440cb079d2a29df0e1d5021f8e6bb110991741759e564df4acd48acd58d2826bb35d113898cf4dff0cd5b735155d59c18264d226df8a58efeff52a80ea9fb7a4281f8db77f11663a4124ca9ff109110e70b334fa4a0dc27e0444d027a59714287063b4f5030333a5fe43263d29158f8bc4d9d448232f1d35c64610429384cfd3b170143d11b6094d223b3528883dbdd4dd546a012d2b21c388a795eedaedf7badeebdf7bcf7c250efbdf7decb4b2f6ade7bddddfda9eb7e13c965f3dcf58d4456c5069bb01885499a6755d78de7201601467b055482f404e47681c43cab74b155a62482d5cfbdd7580bd5f2458b829e9c048530d078eae7fec25622d5c3c9702171a1bb8d74e16ad4cc88b8ae99125761e69aa754d1c2fa6d069c4768b10b716bd2a380423453c225a956ca452f464c14cf862d6a586444659bea42aad961414a3d87a0a81e9042c153f2ec072b75b4e4cb6f41190b82306a7bb6724044b940f5806a9d7cafe2e6fb473ccc3c831f843dcdfc28528c34e9c1113c1f631150c0968f0e1655581a629a7c485e8f3b4b0fa16065415e2ef59fa0ba889a019101150e9205095c90c44d4f4a59e281e6fdff1fd46094fea3e67b4320511c7d245b165ac36a5470f7a4b56b1cc00e0c3a3d5c7070a0c134034c1291011b188ca470aa44a02097982afc4c970e0dbdb216b458c24627495fc1014d1543212ab04ba5c08b5462db69e7fe692375119a7b936e42131aa2e36ecc92703e6ee7e834b48936227c6bdd290089b9f562b5d17b48db6d919566f6b3917b67463d3675b40c9a22c0edf9d95d2bc48db90022a41b79c8a58e32bb97fcfc2c82ff674b829faf16093cac0f86f0700c11ddfcac490e8c8278225050d09319061c66f70db21de9937b89914edc99814930a2c75b45ba9b8415092c9a8f4fa6bb8512f886b4a6e1cd412f7310b96d14c327f5dbd00f84f308c168f4a2ab980e3fc85e4e9a49334f13a6431a0d7d5e50675ecb34a36da55c64d8daaa1919bd96982363d80e5967a8120c5ba735e547ba9c89f81ac0e5b35f8550c5500571f625b064bd3b55552fe004b6091be088d81ba89760f52dd712e6ee9eb114fc5246cb66dbf777df407d950ed9535595c38e79ead211e987aa7b0d346c2c2c6b55550561f4216594bc2223b3c388e988b485831199c845c785999999bb5d6c08f1d0aa3164c5944e092f65e67f66e69aef6f77162312269210f5f9fb5b6c2635a7874f61f2ff33bcf2c4fd408399e7dac5cc7cd3e9eefe7587d65744e5a6636666e6ee66e6ee66a86fa94a99b9bb79e56e76c5957746d8fd3bdb8db7f2f3b7b3b7de7ade743323bc73af806626f3f3d994158848b75b947a95d5e63d9b30c6d04605461743eba66b68b3a012c3bba0f2421c7ea85171d109d1d8d8e1124ec586db81ba03dc2d7f25ffdddd53c0f4d1f2ffffffdfddfdff3ff7ff9f7b46722b1f1e4ee5c037e9452f74adbbf7b38bc0e1cfe65914d54b1ded76779ff967e66726730f13d1e365455859e9a3ddcf632bfd67f9a2a367e6ffffff67e6ffffff67e6d712ea1c7b0f89105232337351f19732da8d93f1ff3333dffedff961528ea128e8150bab8dad70487c705544f9efe7ccdaffff6ff8c06a23904fc888e9c18da87777f76eee7f777777ef1e87279da84b19ed6665216effcffcffccc39572fcb2221e3ca93bf3f73f2ff9a8c260e8d5f37988c05d68c5d02ee45a29c78020293d322b69cceeffc095cff7c5bd5f649685b8053deef9b60f7bf0e31609a5f716f10892de7b9979a80794de7befed5bf4239beba8bc2fd2c5f4a02baabd744c1d46229686f4b8f10148042c5544e36a15ddbedd31be7d9b41902bdf22aedf08bbbb972d561beff34d002578649a7bee16c8b0796e8d58650fb86c2b48f3e421c93cf0f183223ee8a1ce7879b02564baa15eae3f724babfe199110a6d4d1b2e7eafb5baa61e61944973adafdb166e0032240ac467e2e3ddf5c42e425fa317477ef196921998d60706124f75ee6d9ed96b81474b1dae83672456a4f5642f08002eb4ea14dbd4cfd96e2324fc18593e13d505556c7471b1cfc1de9d6f9e90075ca17fef7d1603a9eabf3b93aa0abf3bdf4fd7b6454e222b47bfda60b561b551b4ea782b3fb94b45fee518b1dddddd9dd1ddedde9a1ecce0f038c86f12e972ff7bfa77d697e6f673308dddd5da54725995e50d01334c55308ad32c68073e7f9d9b0b60c3a9b7606436b0363cdd0dad870d921c240dd87b7dc60f66cc683c593c5b3c5f385a1a5bcf75e998dbddbc4933c586decfd80ecbd28f7dedbffffddc3deaed18c63bdff6fef666a49189681c8637777eeeebe39ac0768e367bae216211dc330561b596edfdedddd3db8eeee9e46f29c53ffffff8b2023825a5204dd58a292723992a41e1dcfdf6f2925baa36725cd03cdc156266da0409aa7caa3e4c6461fa1bbbb9fa0dffe4fbcffff2b1b8049333c38f070dd962278d4df0b45fa5f757bd41fa6e2603115e0c80a723bcf9fa461c82b3e5db76777e7c073965b005eda0c262a90bc13baf72c681012e5ac68c0d9567a8aba17b89dee02d459a4fcc82d59f0ffcf822bb65246cb0d2cfefe6f53c2ce8fc22aedbeb160d157da8debeefe716766f6eeee6ea7206e6f7e46b12365469d99998348b994d17f66262c6fba9132b3bb33b37b0a55c4832cb2520eb10ab8d04c807d403a1aadc09f5d5f7bc3746cade8f85a29b694df9ce4c5c3ef502962447e60c16a63d6d6ca8faf963507757493e48327651425e5fb821926ff1f85c87c7bcdee8ebafb107665487bd77e9ef3855160bb29b4a41285a899b5f9bb45d45df72aebf7764f12b24bdddddd7de8ee7e63fe7ffe97adcd2b4274292520d02bbbfc730fcaf49e60568214a96e2b5e44e2ccca1771a6bb81b4b0da28e41520c393c8f782ba0be12f7bd6ddcccc49c52ed586d34950daf5f5ff121466ffffffffd3c23feb4f8ef6c373fef8a03f40283fbe94173226b7119c910b3fa59c8b10475111700ca10e17ee70cf94b705cf9497f9422db9bb6d3409f131f1c3a101c415d70c0ca110072684938ffdc1c0070923050e5f5dbbbbbb2faa7d56edc36a5f560d7fb9f75e97f7b94ebad2949a3afa2f8371616f9a9f34f334c1c26a632b1c128b124c74dda01a7f2f01829b959c8823cfdd9de3b54d644a2adad4d17f96dc33972001802769ec57524bd29a944be249f271c0f2fddd2efdcc37669e4a414525214b5b81adbb3f97484adb6168d009ca1116ac36666d4938fa6a91105cc7efbede8d76f7091e586df471209aef1442259c3042f9049cc0e8ca2005efc6cf055256535732a5291a39cd4425a44825229c4ba7941000fa929863deffdf62cbeeeeb5bbdbd64d5c4b7ed275e0dcddf9f9ffd99588ea8c6f777717d55bb47d33732bd5f868666e0b2c64aedbb5469e7b8710ac361a49d8c174effaf72f7f0d77777762eb56302e7fafbe65a44bc801fc77777779f66f26b57c60b511c82764c484f2ccedcccccc346656c2c1c4cc6ce31c0d337737333333773733d5ca8de235a6fac28abf6e231a36d2eeee66e6eeeeee66e6e666966043fde70c5ab6da9599d9a5bf5f69cb05afdd36bbbb56d1dddda5bfff57d601307816983c74bfedf40eccc04998a1fb372950b1e851a2034dd74f045d95b6528d5dbfbbf0c681952e87e3c6c4aaa5a0860643bd955ca936122aa1cdcb0856d7859b997966d08a584b2a5eac36fa4d8a995b03574377c3ae1f63c75129b763f560b5f1e7401a7b4ac06a51940c9a7419bd586df41b1f35fc6218ab8dfe2223bdcaaa0a8b76a3430e579630ccd142e0782b245cb5ad050930da5582062a02d29108854f013a7c399392f16e2e1f97109711171357149715171657d68c4baabe521758206aeace0269736dc1f7d7cf8c83ec3c08cfdd63fca5a1bbbb875d305ba36ee3e76ff718d59a523e164b8348aa7c6d605481d309171b34562415fba583f114221341d04bbedc19974e0eb8df7b2f5514ac365a614da0cafa162632f7deeb5832edec3033f86f8cf42619bcd4516620feb18b608806e0ab16586d5c733c3e40be095742efee3a9cbf5e8100fc3427162710bb54db041bb8eeebc2020d1ce1d18edcee45089a8d1537cd31bb12776fd26008f3dd006a12382e4c7dd6744305a275a5f408973327f37e73734fd8eacdfa4b96be578583969927971aab8d266c9a9b247d47af4373cc3c7db0be3697ad83885bf758bb47ae7bf074a3edecc50c268ffa841e456677f7199affdb5424712d26586d8cb2c2ca9aa0b5d5c41562d6f2f7dddd6970b712e7aec16f9801a7f5e5a84b3443aa09596cd30538722a059c093a7a39341b143be84cc0d1c36067420e5cd38feac284629975a8d46a7729a7340848a31a0414408071204792d652470014000a22bc5494bc70ac4c2a0d848140381c0862280882280a81108082110642294cb9a301e0bd95a5f20b59cf1ab6d9fdf3dfd4ca6c6f8c2611847c7436c9ded0a835fbba49ea18bf22a4a351058b03314a43c6cfc6ca6f690bc0b7a5da3e11efae71ceb957b7f6739f1af0eb860ea21f8babc3c3651b91112dadb00c29ba5eac5004a75232c1e196eb2d719525815f5780ed7f8387b843b37b6200dac1f61007fa9092026e02e25b41461588334417d98704100895a4210e8d595e45fe2a7005696d49150cd4f38b40b1cb199651c38b01b5c07e1d0677e2111d2d07d4d85c649975966c3e38ce653a99e48db694433674d89f5b277f5c9b3f1447ab5a8d48504533020f901050537c33b90ef1f76bd5e1a1a8183963a59aa7a504bbc05639dc5081ed3aa86a291e162589e134ce70c2697931395c5c1201d1d97bafae36776ef0229b0a293dc6739171250e4c05437d608a7a3e764a590c9d694d830c5ab2649a75cd7f9e1a84e401ed056504ff3d93927941b135c19c29e5f03adb38c333cdc7f4f825a25438b41a86a20c7df882050dfb814c5c61679eb9237a2770c2060f76d307a5225b9692285657a118c4c6508d01b18ed514503360de05b79981445faf13a6d600c6dde7960e3730bfb04b916128c10e483b5ff4d024882eb5854f5b7ce0694f12d159c9750f6302d92ae2376e64d30e9bf4f59eb4836190131c92d2a7988cfa03f4d036d08349a620bd9c581a0fd2fa254e0190aa31b88c69e04f4bdc5746f0515fa081e06ecca4df342a517f38b3d88f1c6d34b2e0fd3105d863f227584b524b554cf4ea04ea5ae9401b6abe46f2d99a4e53441f42733576b54142088f98b4df2d29ff03f88ab0d15d7fdf36306f85c9dd38eeb73556adf69a73ea3cd5f764d43a3eb8d93c91645afed8e9fe5712e0d60470ceb7d49cb07810282d8d1b9a25b6e818555170f634d2e451c8233bfcfc348f224ce9bd4a38c3e2c02db16714a70b841947234d8fce2f8a289bc29e18f04f00ef42487c516191e7f85eed8cf64d535719055948f8a43b93e9d402e1970277a1ac84f38c397b11675029d2d550e07824440550a51cf056e7b3f7f89b1c040c282ac628f365d4785ff73b10a56bd21b0a7a1a0089297ac60d7708b5c7efa99a304c994a30c44ac5c76506cddb1642a8fdae0b626433a40606be29966dfacb438e804d71250dec8c62e2aba863a780d7740e4768635112204e2a155775394df69760834c1a554c489bb747845ea11fba370bbdb51e43ebba1eb72806482dd01a90034e6a1dd3faa288a1c544bb75d87baf13914567241db805ba71cc28face039a354b6c60a3aee5cdcafd23fb3e5fa3286fc5a65f216245cd58acf25448cc842b7e1ee9ce6560b5b224a727fe0490a3095eb3b34be1fd680e0080223d8d4dbb81e1bf5ad2289609e5390d08ceae6931bc6150d55f4a239689454a32122171df6afe6a614911b216fc9c7d340eb936f46a715b2ca72fa473da0ea20218a0aa8de2082924a1d739ccf0af128d7e1f244096e205f8f39a19be6534ae4a5a38d4c15c36c41e8ecd44ff02a0fd0dd6cfdf67ff72c91eb4ddc6b583209c3f0c761d16c525c8fb1a7101dd72277311d4ab89022050c5dfd2e69ddfb441070b7c210ba6cfaff5b2db32d5f7cba63bfcab3b1eab92828d311c3bb3030a1b37b9983b8c38a2e614716e132ba1379ad3763d357bbc72763d9986da6f557519bd4c1fee5f135c6cb3433497e5596e5365dfd77521ab104f38ba2a6e139e9d904f02ece465826604a22a4b31c42b1c5bde595181f51c328861267a59de96c2b2dd87a59f9e4203edc3b216e5b40a509c107674b0ce1010785395fdf81eeec776f49c14eef927df388cc429f4cee899c3fa08e7e9e9a65562d92bb7a9b05627c7ff5cd4489aae323a917042213c9b2ec79a41d0f8fc8a4c561cfaa74597354048e9fce50ee437e83da1f3aa941e4bdb9b791f8778d1f451684468ee371744002be1b8e7fb4ec3ba77d12ebe9472a7789df150f678092d9f04381b53215a8c9d66e2c0f04170bdd4da4d3a9b54c35446275c2097f286c938352c8ad15d6641e7f581d63e6d9efb16d02c32c48d4cb92ac60e13f160f867b80b59cb4d789dad934e9779385fb1b70d02fe544816c99b5c3c3bc8e73154ac514caeff60817b02232abbc767aa17f909736ac5774b49852a77e308f8fc1372eb3e00ac0789b99a8e85c24a4f60824ac0fcdc3382a51bad99ef35789b6c7b942c015cdaa3868506812c70a635d353067da8d5b6e228a9cd3875686e3277791aca736f4042cdc4ed2b0c6810521b1eead9760ec4e1dea69984152c3339e46146fba12fd15e79cc523824c71ae022a13ba984b49aeead6278262a533f90468d19d746dc6222bbcf74b0c6718b7d8e97fea667721f85cd1b9498f41fbc82fabd689c41919eef09b99199ca10160b7bea3aaada848e9743f58fb9607e50f73616af19e76c29972d1ab0a9eefc35e6d1ea57c71bc05a8a3a542424f188333b003c5eaee76f94c9679e9bcab1910490e33eb7c10c42c1d5345188600e22ed7bc57951412f058d17340329dc07c08a7143ef1cc3cbdc841b78c191f6259d07bc64c6b31c4f10205fb387045b5390bf5604b127fcc9897558ebbf811fd62c7626e9e228a6056c1914e37ebffadd4d3ce470eebc7763a2e249afeec3d3a9000cbdfbcb1d8af8ca4a7bac8eb743300081b7c378518a015a42f5b8b081637a359e48ca11dbb351aa4ddca2d251e86bf202009f475bc4812456c44f5639cac1248fcf980572d0ab3a3559e8719ebde9aaf9ef02d39b1b15f89ff5c64112cce23d6e0db32766d2d0a09f09215bb24209fb482324511e1a78bb44fc09fa4597b2d036479b4d75c49503ad165534dcbbed070db27c08e4646f59fefd5d07ca84811e28e424e0f3db1b0f58e21ec583605eef1c6a8e8b156af6e29fb966f0156581eb9d7e511a17a10780b8a3b37ddcee9407bcd6076654558c8bb98367f44ce57111ea1c184c11592082e816e99e5c73e69d405434ecd7b255132e99d958314c45ec88e1258a59eab50ca4ab8a423d3106a98d135eca9d7c731bdb783dc3b3cc86d2bc2000066a6316f51a21c7dbbec8ef41bfa40828169670d801e4f5df0091edd5984f1967100f8fb06e659c594c5852d9a6ec7cf4c04d335cbfc7970256affe41b6223344d64f433f1ec6a2b0acf8ff8f6a11753f3e054012bd124f554c88ba9f5128d388633a577202ee4faa1d40806c2216ec6b970142d16f2c956c453c16e111b8c22633ddac267015a8d01ca07ce40c798bb5d70a71d7a874924d41095e256d6547acc47112ba933480c1f2d9bfc4d8f807b81c0dbb25c49f0b03e466d721060079a0a512de6993a9fc5a7347f5889e65f11426c641156d6c94b29580eb8807af252e9cb485f255f4a0cbca7f780d6765bdc86c6ab04ad36da18291196356609fa649f3a8b47f4ed3b677cae4fee748391e35ba786ab3d7feb4435071e06be6c607241ea5dc0a0c869c70f243f89466feb771287f777b42646f467957a07ed22c900d453557d42ddbc46465f5a21032b2598d5d494157fbd2090e89f7f8c34833eba1d017ff4839003b21a12427110d835c7725a5c3a4e6759be3fa72a37ab38959776235a793ec0ec63f1ef042b118cc57fa9a7e81394725e3d82aa8507b4a402c2e7e1acff4e08473077b7cd6e28163d24cc4bb0a6611b04a66de75e4c8a0a60c333c3bf2e35520a4993141f474e98faecc17249df997e6c9893433f843b564007c7926e09c9bebcacc418979a88cfd6e6236ec07a24884de51814043a7ea60ba5e48e605cb06619728a4b9024b30eb0aa576dbb517a91a80e22050d16617bbb32c60306b7055e49249579a951de72f852d064475b6b60c77a3b0f42d20910bb07136f6c61b731d5b49855545cbe75539a38f89e447efcd0060a8be471f0920324e51ba94767327e56fe6b5a24f5a429752d6c8075148e41debe3f72f73794d5438ea63ee73c7a0b959e39d0d3e7e94698fd92af0704595ebb6a5498f7c3981fa72a3e1e22f90497dd238c5052d1e62e4c0aff4254f3f866a03d4af8fd49a62614167c69bfb5b4267958371823eb245557f05e6a45bd1affe55ccf374b3512ac38bae48711f2d57d01c18d8c45230bb58c38458f0f634de50fdd5091ba6399ec021ce33d14a7b9af992334e3e89ca679452ac8fc167b57fdc705cf65eb8ba49e82e630025b1dd7115fe9a560a6e6284f8a43e66b1815f3177d738507970075897a00c932fda846fd7d0f1ac0a616638671ed9b90df18d6fedf5fa62d131b9f9bf5fbb096baa659b60af78ec96b15800ac14aa0a47165882f068acb0cfea5828f05327f0f4284463b5649897cefa18b86aca55a08928fe1555c9c38ba8d13c0b1f3d77afb0727c442d83d155240876e678850a51c68e2556e9a505d62f977c33f922f1a91e4c64da19b640c192c55f44c83aca20e4f7f48f8a7e3c3dd525c6a391389e49c62360788d99a7b4cc9fcbc7e6d686640cb2fdc655d9e4529a09b9901696b9e18d0bb6ec2a32e5dc8e51331bbcb2ce14b4ec4be0b08188fc838a988c7b8c9c3f3b662e86313946002cb0e65b84dc3104c9ba6669f3f490e8ffb3a8a9c714c6869e4bb98a80f6bb6614c365db13cee6f47a5287964ace3cbfb72ddc94808ce8825b241fbbfb52810d2942a47ee30b2e03700f572d5f8b04195e2a908b29e5a48bf32cc24342f77242113611d8fcafa1e3ae9926987d75efc857b4dd256561c32a67366b16d68f6b946decef8aa32ba2919ca3f2283c4ea121932f03f15a83beff1fe5e69489b11397dc1b0144d7461dac6092ab63fc467c6ace59fcc842db96954b12b653dfcd988f446fb712d39df68ea311487940574bd0009f62bd120a931cb03512de160b6654aae6d21d50b1336d0d13ac52e3a15d5c6050cc6a31e863c41892a906a41e9c2f3a685ad399e0758760aa80ad5c32b8d4b88b1f5f96f8b08d86d0924e3f486e8f10e508253df473083b28e36c42c229583bf014cba53e2dbd5a05ac19d7ec4da63e0365dfa86f155fdd13217e5f2db1f8dd509ed007d8d9c0880883acbb929e2322cc72dba3d42772932af87744efee800c0c39bcb29c6e4f7effcb9e9e9daf6cfe8f8431704e3b73af0cb665d29397400842fcdc08833f48771883032c390483e14141255b27fcd4b90f63b1a6331e6ddc0630b502f51e37deb4fad50b8f0d97bce7f8ed21625fe55520fe275e355e4a2dc7b8f60237a47cc31e970f02737d725fcd60f3a25ecea8853f195b98a98d480979852eb1ed21b4f5f8e4cfe0c226f52a0475d34722843fe3009186cee2efe643ca627b74722a8a4bc4066053f39c553014b9b5dfe70e60bf1086485d245f8b6ec8a00a0f7613c23f33634d75ad71e6d61203cd573eea9b0c016de1e4ae6212051e46a2d00cd7b4e9a9e111b128641975ac13dd138a6b40f36420dc41420ec9a6199a82a93d72e055cee0f1ac334976a189c1680adde11393521025ddfc7fdf3c14d839f5391e65a9f7ea144c4c3e33e59e54689aa133ca5b47db064c331f76c763b337242dc7af8e34fc56c485495b3c9068323901ac4765e5ce9fd996e223c8ca2b4506982e2cc40b69706891bd869dbc56a86405dac8e0455f5ab0dcda5f79292c9e1b4f3c43b32334cd2fcd8c471414a41f112443f6c5992a8396f6238f0e99491557b3aa981fc1a34288a6d2e3308ee632574abba27604c5783cb0279afe7d55460ad9b2c98129a27461cd0557cbdeabe1b3147a56710bf1c85c9b4104a73f64eee29abf1356a5de70ade29e429ce4489cd001f51e66e21ba2b0ed559e388355e142378926fd57b6ed21125db4ac7798cce069f5a7066650b42aee8e4e213e30e04a2a953781503cf2b99bbcd7a49d964e1af2c8f8dfb5fcc88306e02a9a06ac038efacb837b8add89726323133ebe63516acbe8f70bbd5cd8c793414de77a99e6cd7472c04089231840635b287e1fc0351aa004833c2e33212cb02f0ff98da18884f3ea13e027eb5c5665239a3d6ff1857d734f881c40da9c38cc9392c717814e3e81ea5fde50c051ddf87534e6c1669ca8b0448f449597f638be98587aacfa3db1c553d2487f6da112841de7149d90ae0c16891f90eda217d5237a861455a4dd26a51f60ab356035fdefb67012e9c962328a53b34bbbea8aed4d895933f131135a28ca61b0f11bfcacd2594971ae483134eafc3d04337aa57526f35482c2270577155a20194df78d68d674c5b105efac5f7225f24b0e9de0f8e1ccf3497e1a4f961f409000877369ab553e1188750447503d2265ef39a9476c7c81940f74b3b011625aafc54b7d6c3596552e308efedb74c4546b93876542e0ff099650c265b57a34489926147d72ea7614d631e51704783fa3803db296816499e1d95da982d560e74bb3a84d9a671ccda83445e7c2b3393bc825e6b49d8d2b7db295b85e34aa668939e70f2d540a1d5f76103d60a02af3493cff0ec697998df8355ebac39e57176e719d63c778a5c9c5ef20eeb354f1112b3465540f2f021152e8ba1c7da5ba26e549f069c2f59564acbdfb6ca7f7256cdafe5effe03e6ca0c89b1976270a5bd63329f32bd7fd2f5225958f329f0951daea32dc572660143284cdecb33f6c7f734dbf5e17725fe5e3e609f9ace5f7cba2b840d49e0c81796ea9111dbdb844e82b3a502caebd79aea9098bff604414161d2d6c8d6048abf048a50de5a249e61339ea57f80518a1693b7dceb93aa43055c64e136ae0b55adb8e5c09ab791ff37632598f4934ca1380eb996bca3c24bd7bcff374c516d698fa10bbbc2f1b6715a86131dd2bf181d31af412f06d12163aa143ecb6751964f94af2432d0abc20c9b23007d8c428dbaf4da9468fcf2b8be8171680cb12adeb6fa82cd927e69f7246265ce4a8dbcdf310f519a29db18aa986fc25026cf27f0cbe0f35dfe4bf1f8e42620e55a49f515c945c2b18723b5f56c8f963451b3d220a83a24a2b817b5e33bb95748b661fb1ba06274dffcda1fd679b1acc137122a0be2d74a8eee85630cf5ac518826c52878831918aa6ee519c254883fc17a60d483137b2f47c2f434b23e50f8fd888da3320c26e3b3626554f993ce4a137cade4aa0dfaac72c75b6601fce5e8fc9f34349fc5133b7577aae9acb75ee895f964c63a3913e4a35b754a3033dfe7544e04b694187738667f03e79f1c5ea9b43dd7513a58b8915e4d13dea563cb8dc046637f9ada426788500b29c830116e850413f6222e4afefdfb7918428053aba88792001254508967c4f06942133cad9d896120e14f6597db45a7984a5e506a01b9b3e35ca08fef45d06f952327ec4a5f0ea92a8d7fc366e254784655819a0e71f6122ca5430fbc9f47d90c1a7524f5fa2371b6a82e1e183dd80c40442da540b076b83a98078b07a671a824e1bc9ab117056eada76eb5ed33955f503f11ca292587a0e0380d74013b150f4154633a587324b39e7f704a557e2a9b630b15cf344dbdfc6a14ffe132f7cc9a04c951c5bc88e60359426840ff381cd9b77a4d58dd4f14f8aac3b2a0297b5c40acc8ae1ef0c2a268a8da5e6f39b65a6c3aa46558f7919fb04226a6e51fc24869c6402b0a5838cba074e8da804621021b20d708208f42310c11fa6febffab5bff0a79aee04cc6a6a78c2a3b930193b27d11530c04d992d01ac19d1870f5a3b73587149aa2d167dc9dd027a5cb935437273789f1ba84f06beeaa846fab8be7a3d23a7d923ad5a54a17496e20918814dac00a1379df77b43c4ba0bd4a4b532c80b5da4beedd9fbf2fb8d43cd8372f2a39764895ba36c885ad418e7b4f212675f914d71c7bb56c9cbd98eb2780cb2ccc96c0e162267196403725cabb39c254327e6c5fcf4df2a9437259f6fc7b1ff05aff3803852820cd0e70febcbb2ccd8a1e722c27286c15acdcd1e00892df60ff2da7c8a835401097e010918ce7bce7522d208f26ed1621be0b4009103a47b64bb66eecbb91865aa1bbb0ed0ee2677aaa863e8d648b4d4a8d6b10523adee1bf249af0c709b377d18635bc3df816a5e6cf230354b4a3778584b84fe4cad734f74c73a81162b61f71346986265a8fe288a3d1a95750995a90ee04853c78287808a6a266f28f5196307f7741ad63dc1b8c12484a983dd4565439b40a5828d00491d667dc68b76bce265c7ce9d93937005050b14063845ade64506a12ae24f2ec034e0ef9e58d0a298d7333a33e10851efaf8e5c874cb190ae370c43726d4a05bc76905c7a0b7440e6ec428553d869e9fa71ecfe50de63624e9b07e67f7ce46863bfb14da323757a3932c75043329d592261319203b13bea57888344042d23d41f5b9ee0cd2e6b98187417b6f3ca1bf4259019e9a7f86a0ae39aed1e1019bc5c58cbefdc32a310f916562a17cdaef8145f9df433adfec18694c212e20327d0e3766b0963edaf564c40a5239a4b992bfa42129475260548766c443254c230339915740c609a2cb53c4e984c42ecef0f35c13ccd6df9e79e726a0c802afedabd500f848c10f86e59d18f8d25ad8fb0819a04de74e15218cee816292491435967b382e473f1a5c83087f8f676d1ad76a1f2c3403df84b6f94d9779f784d680e9f8b8e745b987986c0da39c3ba0c33243795771b868251baf5bcb8a48855503d725ee337ce90cc0cdec90d373413532c63b2f5c3cd1ce439c3d3819f5cf86277c9ebf4b521c6d9171d5e120363865012d701c30cc9249fa90f5fff44cfaed7669f7011027400d0d612a2178748b8a9eb71057a65b2295e3c74a4a8ce8283084a9a3e4585cf48a64e149c6b01a2785451cbe2a878c3ce638e9d285063d31c605af24cb75eaad8db7d17f04200e91bfe2d7e2cb3d7651f97195e3c59e812e1baceac00824a8b3284a50342958f5572a44a4e8941f64cb9ca976a48a5a5d1b24e26340c421d9039bb902106de984f0c5f87050c0ea37c572e6207293f9f02f44babaaa6d68989856407955a146273f865240508695ab3b284696b1272d9a5f54143670e954a8a36acc957597090b1448f87dfa0c082b97a87f8582659b3859a6dd08f2d9d1d23ffe2ca4ccefcd159fa170f2065aa9e467ebc84d41fdd14d1a59ffcbf757728c5a04590bfa9e9b5b3105a18e7b845106e44f9ecee40eff0a7591abe658297fd41ff37b43a71fecb75aabd63062d52c2f0ec87b6c577cf5b5ecf4ba22382b3308283f330403c46446bf1de1a1b66ece4e5364fd1693912d4407dab0daeddc350696c8e0c325d21b6bb4af248b56d3501fa6ca71470d361be567bddb7a0aa7e13640ebd1529f8bf1e1b0b9754595e3855b956af9895c0cc3c8640d47013f441e6b695b48199612d692058b518bc491f1383eda364740075bdc6d5f7c4673817df59dca69816719e51a1a35c79dbb4cd3d8c5454819b659e174af959ac62119000d45215912f7646223c1f62096fc7f38270c7180d785917632ec9892742063209aced698ca9b4ac3893d153c9a0ce32d2525d720ce4b2cf587aa5840a91a4e707a53835432e5912395b46060e106a2cc2826541ee4457fd482f6f8ce65dbc4b7498495cdc454deec6fcbe75ff998af97cd21012219d411dd4919a26e454c52fa71b6774fbb17ef4f378b82933e7caece3b3c8e80cfef6c5fe085d83c1ca29864e8bc768abf10c6199c96eefb900c7156a5adaad3866d0dcaec54126bdb832dcaf364b9921ed4f7ae4712b733dfcded64c3c43684a1fa16a85ce74d9b55c3b3274897b39fa37867e264cf48799bc7b88af2a85b3e7117b4f510f96194f6ac9c2fb26da708650d6c0e3a90c7d85c9feb1ecdd0bd364379d47ca22b141d3bca2e5530bf537a12490769a4fd9fc763a395bf7931334454714e7bbd6f45ba46de608126b637eb314f982688292387b4601bb6d6b2bd0647fb3b191b35b0bfd29e54aa23cd4811bc73a9583bd34ccf563c9180d75cf5c8088f9c8863be6e26cc3163b0973462c59447114b87b8d1fc2ccc0681a295e73229df96b94ecaa4e67bef5a118fb7bc260c715161fa39b8c74acaa4d248dd7eb09ad3413f135bd66f8c2e4ea011399da1669b8dcb3fbf69b2d8a4e8d35115077adb004335c701608d647eb60c7c31cc27d7616f5441ee795ae106648d9001f2bbe0fcf63fbe8ae986e2bf5eeab3c96aa622ab5d713a13727a4876d7fa986b4d522282a1ecd511a63b31a825b00efbdb160ac0c8fe12e01e5e17a418b66aaef4b392457d8f774a0b240553a7fe578d3627332d31062a6e34d5776989b7de7ce450c45cafb1eb0ba1d90dd9de46d49024e37876a20356fbc9672befe45565f49ded27269aed3b7fc09df920ea868138d0b9709e3839ee58ff180b19ac82d07370fa99186f025fbbe3c0f1223f1abf7f9bfd66a29ca2d565f489d630668efbd892917a529b7541a4414a46d11ceeb70a3588ea386afcd2425b11829eed814688a16759f4aabd68dfaa3a56551c647db9e27c5a19160d4eafdd16b20e84d8df5f1e4faa5c041954324e43451926e52497493003418d67ebf2f8dd7556fdf422d5709e86c09551e94a5d96792782124361060104334d84a00893545ff924ac8413edb01372b5e99bd1a6896849d91d66d781e7ccfb8c5adb1c218ccd325f58f1efc7716e0a4af70ede0fb9c6ead927ce14d1265eec5a56582da440ecef8f293c973dae9dc3679648b316a4eacb083b43093c23f2d203e1c7593e732afa662226424c6c17a9c519eb7cb87f82572989e21d4a81bc05b0559a3a82001f898a8ba31ab0a25862d3b36b2897e78e48e6a4f4f1c0184ff3272f2725c5923a6d1e3ffe6e00907e03e85113c624c96682f68a1e75f8c6e58184965e2ce7caf70fc323a87805f4f49d4bb4844df19f80dde1ef730191e4d60d73efbe87e9f5c29b7c3236fc9424d275af1fff17149656c6ffbabb7c6c0471d1e01fca654425424a53410962841c76e476d2596819b3af22977f2997dfe0663332c41cde311010fd52e0815946e835c243194e72d41cec55062198f42c4cdeaf0679a07eec68c53298ee7298e7cc6b476381218cb49cdcee1112d59a5e616a5c798fb68cc462f75e97d331836ad5b5ebcd0934d8dbfcf8c68f84c18cd0dacd72728a6677ae5265e29308e40cb144f39975cabba1e4732f1cc4debb1c86e470a4262a5932e47cb1643a2b56856022c1ba5f56681b98e593ce438acfd12ff36d8b260bb614d5879b6af03ddc7a027bdd2f1d96ccf5d474af60affa9297fe44f8edad0918d0405dd42fbe592418fecbc48228b25a1e0693793022e90a40a77803cbe94705028106b87009d3ddd3c91c06fc8c2e207c7c65f02cc7da1940db00d93bda0bbf43d2df47b767682f3b31d73cf0c488b6a2cafa5479ab8d3c3822c819e3a0b4564f25adab6b110821d055e28d4d879433ccb2eecd7526487765d5cd2d19a692bda129ff10a30e62851f3f36c9f4eeaf692ec75f3374a6a0862873616839a219bdbcb6e178ac542287562a47fd2f8f558fbb31a038b152309cad53c5d26f221d6299254213c5d24859d2022521e0b11b0c2b053a211dde55f24e04f2e53ef7a42315881181f6d90a35011ab3b0da867067b6d94413b5f672cb34a1956da434cffd8d21e20a05d46331da6471e4221a8ccff918a7a1785c8e7eed3e1c882e01f61685bc54fbd500b00934be048726c01aa452d9cde8d79a2b23193283ec93df3ba4fcb42f71a555b2b20e5de0e8846212090163f2b1be1ee95f339f0bffb01178c00255cfb399e41688b8d46b72bdf2500fa45d521f79d51766127431bcdc3a5d82cccd2ceabe53941a485ec6f55cc4eefda4817bf4c7043b9c4d56650c8deac73dd15ef4145896f9840ab33b7cf4e94e41423b51485a893b2a32780aa3e5b8575f8acc577df3d4c0af481c892cdd022a7cc984c1c36ca9b993ab0abc7965464c14f9032c3cac4610ac9271415b6a86e4a38c7a5e10fa943d219a2885b76c205799ed415b5a8bd6c96131f0ff818ce32ccac8efa2b1bdd8985d41d269b22d0334e93a0916016447da4f0c5350817531763cd88e46ad5ca00b7355b51377a366c6ba90264ac3a581ae36c01f401bcee70f2af4c9de76efba0e6437d11bf98e728d6ed49cdf6e3399e0f7a7be27650a675790a5a04e3937f86cd82a1a7f35fca25a78c90ec6cdc87187ea3c06872563a55ad631025ae36b9376be91d18a9f53a72531349747a1cb486e720bb8d904eda3b3954af2a9b573cfebb4edd987f2d1a48c08846b8d74dc4170c1d6f9d00228e0c8122bab3f824ba6d73a5a36b3ec76add3359b39e650faa0e4f412da4d2be62ba731927c41ecb6864ba446546aceec9d2ac4526447575b8c3ed58562c202ca910c679560c0ae9a6cc94ae6e4d902535a9c252ec22a8d6eaeeeae2813743f8e6f455a61564082fc36f0e555b566833dbf13264f99145311b1cc594d00686b92810ad7f486b2e78f98980841b08484703056277b2f5daef80ac332ab0ce0aa64381e084434ce5c910155c644d4cccad26a39277d734303b09a4e4e50070e56a10ab2a2d5cecb88da79c0253ee6cc8ddb8f5f53e82fee37335bb032004bcedc9664c920adc0417be1523d918fd28ec3815c16341346a793bac8a835939e8198d3af05839b56aeb8573a00fc4c94c538fd130e843ff49928d010c8c9dbfeb4cff8d0cfce63f09ccddb84fbe960d2329b03b374c9e43d848fcbd89d1339dbfa9b654053662224523e09d521d4527dcc8be22bccdeb226a915566e351ffce91ea24d97ab75c555d900563ecdb03db87c862686f98cb4fb46f878c165a01dfc79ecadebf20cb8df0c367cf384a6bc042ee0c87c88bcf7dbe000f31a192015d0a9b5f3b9d5a107b8da51300d26662bdc0000157c61dda1ba69269cf1b3a5aa4f37753439f0ef6938c5fc6fe0fa842c31ec340d359bf3130be9cf558f2e0c89bb7fb52be47356e14cf4ff14ed33aec116bbc84c01c969105348982cf78cc34f35c541a7bc44301790bba9611f458910b084b0e446c4231ca5dbe4f139f29fb886cb4fd0ce64c5a07111b66dc78f3917d6f66199fe660a2a4028be212fd2fbc8d1be145f49e1680a79beae7711ee6b2be5c623379aa15b10dff32351f995dd7c6f2e3852e7301a42ca60c53686f2d90b591ff20e07866e0540b0762aaa601763683960c2450be58bf5099c4ea6b877133adccac16893bd24cc825374e42d00a103dfb75e6e2a66c17002fb8d577697f44468436d92a986d6544d88098a2a07c9b3f2693a8f0cb052bf4a7eff32a04cd6bac4b52a9fd755ea8491beaec4b139b00b6a835462fb67dd432c80bc9a999b27c5e6b1b6678967c9c3c66729a145c085456bf7ecdad74d3ee027ef7bdfafbd3e3264c3dde13002cd5856021faec09bce3ecf9ded802ab5bad677fd498e028c8e42ad5a7793ec6c98fe1647e1d86f808bbbf9a96f1084b675123c970aa640e0c6037a2eab58b9711f8ce0ba57efb9bbc05729876233be0e436b0f8cada23ca4c949c336f3d7c736f6d105943df79c9e47d148f2830a3674f39a29c952033e465b66a8de9da406f793a324d50a52ea6454a368a2c28bd0ef315588bfa0bd57ad8dc8a4ab3b666ee131d095b697ec49b6af87dad0701b501f07afefd9de3dbf6bb6e1b5a0cf6883ee3c4fc5c49ed744ff0498b3ee913f1cb86833bfc09f6db54cc32d187012440f09e6237b02d33cb2ad660af737461906cd3cc33ed6f8d8a653ee52da8d2e9c8f85758b3d6021bb60c2fa7ce9b84f50d6b3656d93fd7487ea556c2df5d99337a4d43a9d7def9a53f9e02429cb031fd307ce22571477f98bbe96262175885e3de00bbf726156837981af867dba2fb5f65ce2b56b8a45d90775e41e14aecd505485c3053efd1ad41efd864d245d02cc55baa2caa19ca64a344f08417cf446991e7f4655c40c494052860da8d5e4a887d2565e032833c5aadc1189ab92632e1964a39a46a952368437aa118a913a61101053a186ba605a1a444540deac410946af0b636047abae06d27eca5cd1ea6e385420e378661d8b5186c5fa4beaaba9e1e261e27609c952a008d398d668140a54628fe81d94365beafeff245081a54345411b8885f59b1b475be12102faa6949ce3567a5ab12e4c48644d4d06a81c58e3261b2c573cfda7af998959925c84e9eec1cd0809e730fbaf1b078353d3f0b395f2d585896e67ee991645ddcf01978aa8653f7b64da065055bf2238c6ff4d33f7ea433e6eda53e99efefca5cb3906c8ea729300accfa8c10141b19c522812c60dbec722e1702f8611408d7965db971f186265130601e0a81ae7f3c77a8bfdbf082f54c9495db452419cb0363344a6e9d826418f12de45ee3fb7a4cf31e5c2fccefa49e59822099c4d05114fe5fba5a88c71759a50109a870d46542ddb2da24bc298acdd32c0083729463236c357a7d2a6542d908c62a084c7e1c4e7387b4138f60265dcd9580976ca2db4af86443b09dbdd6cf071871011389e9c6d16e0f1ed8a557d7cf90c95cf9337de11e331cbe19c6cfa9c69c3b2943aa15637836d3216113868fa07f0ff18c4a7a0e94b059ba768194af8f3952169ca5d32744c201ba5389495c708a1c9a0e7ba07f2e816161d26a79e8a4200e21c477ffc20482b5091a13503bd96661b6dbfd3420fc6f616279a48e5de8dc7f140b0b256b032501a0881a14a36bac0d383d9f284992098e09fa0725d5502ca16c684b9952daee263baf0446044f04386fdd0d197e20d05a53878c964a4c28c0a66efac7d8dd1d4be11a675d8fb56446dc596b2ad0100ad108e38c43f5fe0f77dedd66feffff2ed0b5a6461dc5459a75b8dfb123ed88eeeebe54947add55247863ecbe64d4791d27a38984d2963f4410580cc3300c740442fec4fc157dd5d4ffcdfcffff3f871bc6ffdebff49383c0f30719838e183fed7f0947c80fe3d7615ff291babb3b872a0e56389ceb74108e6de47b92ee6ee3ff151367c4277a95a346a6134dc97180d480d36003114531d603c56ab281ed30b1a6195c0d47999c1c27d1310ac366435469ea0347431468e313fce9e1713a33e8280de9a193631416759440383b53a50c9a31c763ed55917e29b49fa520adbc20510a927b3f4704d329059172f9dcaa385daca4524e2f17ac883d1fa49626a4975cace82c3e8b503c4149b437535f5662f2aacb5e4e46cbaccfc46330ec0e29b87bd312a549c975096ca478e131414377810a85597a0c6d443b59274e0c292a62a178ec12d427f40ea2d0379c6b4d7d42a32837a455395d49ae66e8cda480dba51a43efd3babfa923a4718e22c16cc98cc966ada93b284c40eed979422078c1e0f1743c0a2f30c6dd8d31c6401d66d181e042714aba5b0d793a961110faffa1372135dfdcc901ddddbf09d94c51d259b040ab8066e252e8710a3f636cfc0ff11474a3868c64217ec818774394a9270d5284871c141ccf173328d0a70e99608d0b3109cbe78722055d12b10544816212fd7e284f4f3f94282912d087f623be658b8b56c6ed0033aca243214e39b7275649062f6736535f46cb2f1f40ca7f123cec05194ec3d7051a49a50b7ed0ac25b319d3574dfd967677f727f4c2332a7b71437361069101af8a1483f33e30ac6fa446a0ddddddeededdddedee4dd30f6324bbd40cc7574da579c7dee266e9eeee187088197877b3606fa21262753bf6567258680b1c238dccc5b7e0498b5de1ff67926b4d55368619e68ca517a47033d4186e8c64459a09c3e9d08b0419e60ae2cc26c9e21413211865b132428061c2d43c18de84842544e70920042ec9a5171298295438426cd1f2a328a38926a72e0e6aa03b980635caa311c560ec05e97b81118f383f7798043266189e120c2e46a1c48f59eac142e3c4696f6ad341224cb095e1ed0859e22d44ccebd9172a9374560c451f8f96618881b6f8bd348df255533f01afbad43dd1be829699ca1ae05591844fd9cb75a3632e0c296b5a011fe0fdee3eca42ca7dae3186a9c000ec8f50ae3595e9cc17463c69c90208457d49b31afb21a29f838ac00288a00ea9c8d600083044e4a90d20796b614100258e485a57135490223963210047c11304a0a02888b43505800990d1db4a04b420e24dc30400b0bf22b88228dbdd8c22484064fcdd0d8684088aa2b72a0b154e4453602850f090d2610209e4eb529a1148584253a2126626822913228850e2548a1520183155881e00f1549a1294a040aae8288180fd14519c4a9111920ecb7ca183920c581b197202714413641f92b80b10e020e809c46991343841f4e5822431f657447b390d146025b35b2f5762e6a2b8e562489043f0724122c04849e04ab0c22b8f402057713c2a69134c19105a21de4a958c2d992179b8e54ad6c8ebd90762e27e12d692d9871bb0a7828bfd0b4b2470a93b02c00510ca8c5fc035176ecfa81ee28b08d44467707bd5d48fa241a3256d46011166c0fc39691568e49602fada1de3b9d654e8498c68af00796597da6422be98d68db18f0563f7ff7fc7d8e7ed4dd4ede48229341844b139f00b71ff7fe9b8d654645279b2c4b409e69cb30c21e0c7a0263806f377bf4983176b22ba284c08c1803efc2ce27a6ebbdb0692053b768c9b3286b9ddbdbbdbe7d83176c7de4e45c262b0830150e3c6aecbf935fd7f1feecfeb0d9b931b3beeeeeededdd8ddddbbdbff9d6eefbfcffb7923e6ae1a528c7dcda7b341ae01745263a8e9a4030663489b317c0088b1099ec89002f982c916e6d1c913094329259cd14412223c9961f42599e418ecdbed250f0805dcc1d9e1d901da21ea669c7176ecd85d8731eec6fdbf08ce96cc809ad69a2af555b21320ab19eec00d2916155110b71d766ac789149121e79cb1ef4cd0987d243105ad64c601b97ae398d0f84f8482be7a2f59b6220852ae309046476e70c18edd07ca7679efeece29ff7d7e9d23267dad07e58fc5f17e64005f1ea2eeecf1bddeab7f60ea0f4db21f29a1cbc311c9e504275d028568ef164d3ce6c2941ce48e616ce2c404cc653be7c7afc443e6edfa13c9b5a62a4f4e30316675d8df8f948ab8b88869ada94d52274555eeeedeb933767777f7eef6b53b7efc266e0323feee16ed188661f84869ada94c27474dae143ecaf27907b36777a72fe7fcfeaeebdc542a1b4c9b4752d80919411317966b51f240008527ca24d2ae2ac760ee90830cf7cf30679c334ff7873c9c716eb63d0f8b1ee076f6718e6b4d459ee024ff8139e7dcd8f9fdc61d239071c868a4c3fddcb531cff7b393cb5ad059ae355589e944a789d5e1f6ffe10e36bf3e3783c6f7695886944e973d476aada955273956f8ff5f873b0f7b34c018638c6998d69ada24556575429395bbbbbbdbddbbbb79ddba76f77ef9da918659eeeedecc407cdddddd813a788f7f7527a0317158c6ee0af3ecd9dd97ce3b09e672bd71f34799652e05ee93817bd299e42cfc5b4bc7feff8344590b0b6ce7f9d2736f195ab28fd307f7406b5c3e7874a288df4f32e93be9310679944bdfc9ce9477b221e814467f2747650b13090ecdcd4b176105d6cd4110473b1a5a6cd4c8c86071a4f0a47c10d2304b45cb780baa9b7d0c39e4d2d610229b7cd5d4bf09635e2a4a15a6ecd603b3e2a037122f2ef631a448891854a60d78d5a54b90ccfbd547f20579df5b6565bd5e6012731786d3f8d5dd448e6b4d452651882861ed4e50c16a01d839071de02ce9f4e78d7dc84dd645a045a2ee170066801e2f284aada48a487f3f6ffc4b53e9ffff670533108123aae262662964fba8f797b45a5cf0ff9ec3e88e1fcaf4b8c4036b987caa0aa20899d2602135cca05c8db841c18a22e055915e984c720cf6aeee1601e79c87cab5a6329d4f28ca30ea1e296dc89870dd3a5d7bcfcc70e3d8ac35750768c868a98482c3943d19c3b9bbff7087d9b7ecc34061a230529869cc2d8687f3d6ad88c0ca30d79aea7c42a328325263f103459445ef2012f4dfac6cb7ac9c2dc5f7459c6b48f8ffffe05a5389c6a3bf3e90ee2b4323298639588cc8dc55a43695e98d17b4e1882b33ef63c7ee3f56807e37747ce48fa24ae97d1ac6cfacd36149dac0f404ac02e142ba3203d91c22747777a3d072dedaddbb47b1fd73d8b88bfd239cf16d1ac62b2c0d703e889da1ddbd734e45c78e8b8e2207919dca2179528cbbbbf7c8ed28228083098ec13ebb79d88be59be70df426eae6804870d093b521b7c1b70166f7322ebc519273ce39ef4cd79aca737b1e9e8c2738a3b9c8296f451848e50c51b3381c79fdfe3fe18a08b11fa69fa61fa99faa166fdcfff38c3f3cf0860db3d69a9af395ac686869214fcce561f238799eae1c2ba29680267c572c0f212a98fc630ae61abfbf9018ebdc63937b766c3d40b2d9ce3bfb91302502c6f8a886e9ffffe73fdefc3e411fa28fd1e7e88364ca180699fae9902ab2e52a226fceb93be7ee7eff9f1349ce39671d239da58e920e934e536edc38e79c73eeee9c5b09828e618a698a918aa9faa091accd59ae355589a9c96d39529d738ee9b267efeece9ebdbbbb3be7dc9d3fe7a17756c6ca269395b3cdf8b2e79c2b957effde107bb19f216bada9399f0d07462aea2c12af7c34446d4fe53cf278bbdc31249e571ba9b5a65659d96cb26c37398c8f7eac76f9ff7f8e85ace79c738631ae35f5688341621f473c5c6474527cd8b26576c79b33f2cd39e79cb3bb7b7ee182a288d6932a034eedfd721f0579b8ffff4569ada94cb69726294dce0c2321bca14a84030c0c048c289e594218f4ffe73e8bbdec3fe7ef29eb69c1b61625f259a4257e6ef3059380fd7caeb436e00d0322bb8b0a19da78c61dcfe6c273e9f5946c3da61a353d1665db589832da8ffce822ac2533096849db5d330ede4c70a50ca518a52c3136990142440b1d150da1ed75a4bc209182c138e78c733b5290688204b69419af5807060f5c2bcf7675193773cc072b469d89db39dae31e7afcbf249bfac621ffafa62ead4a74f7c29ea81c5d5eecaa80575df26668eef2c0b076851af80f19e2feffcbb4d88d58974e7fdc7ef0b0b7127beb685a6bea9fe890fdffef72ced9f1ef982cfeb15c6bea0fa5ffc1249bfd07b1cff83256624b663d90af9afa99a9ffff9f0772ada94925f3848713e3167bffd778cf6bc9ac8965f33e0de356e7d831f661ef1d54f6dcdddd543627543b187f00284af7f442654969646b36faf610a076f7eeee76f76ebba539a94f0a23b571777fc939e7ec3540ecba7b77bb376eecad0526931c7317c674d0ee2c19af94703f999b438e76fef265a2cece9be6a303dc2533e5aba662200e6ef6755018b764d6c27bd5d4d729ade0465ebb0b3b99ce897cc98c4754ca495dd7859569ced973ce39e7dcde9e5fb9fd02cbb3004eda10f983d02ac9ffa712c3074e17c292e913d4074196344812cd1a8e18812eb220d48d832244289f60835c74442fc6be96d10723a2a081fcb9ec5fc0399732398b0955a387b382389e08141018bf9002dd50c36ba64ed89e6c1d675cd89259ddddbf228f2e852dbaafda42044f65bb819ea85aeca04192786a85165a76f67abd5eaf998503c84a2a8899fcab1e71207aa2d745832d3d104383cf05e802c652d0014931439a4622d327170ab86262646afbb8ef6ff7865613fb7290fcb9d17186482a5ba0154f9589201612403cda9fcdd7e4adb0e034b15adf06963a439c9b968a61db635febeac27e2057e287c8548d1088a76df91d7b4070763baff0aa2a867020a6dd1669edfa56a7bf84a6a50d06595875d76d91d73d3bf62b776ff7bcc333171feeeef85557b84c7dc81979b23db68d51e308e994d606db8bc5c5f50eacf1dfe57e012c464186f0706c28d1f27e251c28057d2d5086fd897809db5caf00de72337c3028624995807cec5ecfbfa61da0fc6b713f0c633c493cdddc8c68b43a75c50da8850f15151f2fda15122a121d994a539dbde2e1641cf0b074fb34e0e2854e473268c54d9bbb09c558dc8a86ee3d17bf2a736b2b0503257a377e4140a068e0b4ac4874cd0c6418f2a0126638126955b62e606e3d37d09c1054ada906cfd42af1b2b257656a05bd125e95a905236b16c625f3bfd2ccd5288a0ed5b0a510c190862d313aa9c5c64a52cb8e8b964d344592d4d593828ee62aea0045622b280a686a63579ad7150b76a9655dd0bc6df6bbd3db7ee36f7a79cfdab66d0b5cefb76dfbfe6cdba6e05f35850767bba4549d38703b36394d53c7f69603f3faf7e7d8b8ab3066bdf955551881b8d609f450f1a145879d272776abbfc80647881c3d8433595a5331b293716aabe7e05597532a9c4cc80481c1c086061d5e91a89f2824870d2ff7b68897512fcd9c540c184f033b849e3b9288493d36779792729052d2dcf52d05ed6bb5db4bbadb9f45a9bcdd32a7e0bfc8dbed2d14d6db585632f2aa4ba8e76b818ce626dc02baa4610f54ce46d10e09073858f0e824d1fc5085e0b19195d5036319e138b6efa334f8dc7d2a948e37f6aa4b1c452c7648055e3e2a60e22e6ef355eb72ddfd04916fdbb66d732c4ee470d013cac13a806848bb23afcae2848cb7c1abb238c1742213950705dcdd77ecf7d70859b666c4e4f6a27ab5750e6850691aad0c8178b2449edc4674d7bdf3772a22a7acad1f0e8b91d7571b30802a6c30a94c5a97db197b70dbb6cdb81ff00378fb993aa78c18d0a3fd885f6acbe379ad320a4ada1d76a1b65b1241863452ae8aa4b03eeff5ff330598c57b06c6e18ac30e370855ac67c0d4ad6714cbe29923e7375ec5029ace7ac2078a19e616d6f1848d1df2b242ca976569331316cf14efc8abb2780e35529dc02b878f199a213d264630add85c31af8b26038e28a3571e8632dcd8315d633ee8b0926dcaadc4ebc4a315dad407767e5ef4f4a03dbb2d166b057143b7c6abd702da14122be4b5c0011e306bf55aa03a6f48bc16a84fb5e965d99b1fd6c6d48fa5871b411d3636961681570354182aa27e76c814050159dea8bc24afbab49136b9afd704ec5a73d1541748bdd75fd5858d1fd7d0a7d4a379673c8e4850bd2e4f0c164f9d09e05591625e1c05c5487aa007e3f7a16587948ecdd920af23c9b8c07dad4768a55d9348315b2fec558f8258c8bc08724292c97a65c85759a499e34bf2aa47422fb2d59502479d111c638c310c0516afd81ef50080479101d0f443afa8687704f2362c68d95b618b8e222a7cdddfdddd8b10d79a6a3c22936f95eca8942b5f2bc706a0042d431a041400701cc771242aa1930d1480091bac5494ac6cbc402c0fc4813040280a84612806c2208402108865180885789e86d006493cd51b98e4bb36f327a61a9498c047c7073f59996480341f44e3c97d8c9bc9a99c69197e439ba0665168b48e2f88e81660166d49197e0bdd203526f23ba6af0072cac0449d45faf994c8cb9539ff6d60eb8c77bb99c0f930d702dc0fe79d8906bd18d24186879a9150488305f4ae52d8c554f46731e324c2e32d78970785a8b1da474cf0dcff020c75905936d90f5d6c174beb0932a3e15413dd88f70f10498035e4562ff1300746060754497dc4e9fe6bed4045de0f3a25d9fae9d996d891536dc816ef9f031ff5c39d99c9e8075c6b79855b7021f7d5ec0fa0b73bba4608571fd806cf39eda6938d0056c09d18a4a0d097d47a3bbfdeb3859e106544243768ed99a6ee38a2950a982b39b00e9243fdaf9c070f37b29772d1db25232df423c9ef216fede99f2053471e7cd4223b41a1d1af84b085d297e79de4bd6588bb6f82d4fd09cb389e582c495de25be8075d46bc6a5281e9b1c2e7cf59b5d2297d544c71f9522d9cf35e202441ba68f6d619690e906797378d46f03250c7fc0abd0c58afae3e8887258b73c9a03d397a982e345805d17ae16abd1bc63a2e1885b1e6cff8fa4b3246d0a2500475b22814736d83e9734433521ca9d6e961da7f0f914dfbadb42672a4ef44d49683a7e9218b53df070147ef7c36fe5ecb34b28a89e577b75c91afd9f7d5b03d2931421eaab8884a4ddc76aae61a5d6d7129aab98aeb8372656594ed3e64db577c20a500383d7d2136d7eba21f4a4eb039c9fde40b6715f75e0b2b7dbeb25446a2d500c6203983432551574a160bb102836363cad7294a03694058da501c45dadb5b5e0710c7df9995161f0afbb6d31caf73420738f1615ad7a2e142ef6db22f45c2b5b3303059f0c7190c175cc91d997293eba179f91d9ceed04105371749149cf0f141cf08a628cc027fb24de14043e6e21128460f084555aa864df92dc0750be6e8204115590ee37d21abecbd9d4bd5e239a46b26ace99fb97cf0c48b7426665d5fa7a48887a4b49a36146236ecc42463a84bae59581577d53b19574869f1aa9f30b9c586eed3fbec8b99005266dfa3932c91fbf6476df1396ccfe3c403764d727444b56edfa132f532b608214aed516e8b907c5c51b412d8317dd702e6a88a2e221f9532ee0c6f908b41363e07b544de151629614a32fc48160568dc14a01cb050853564e825e5a35d68ac1c111878f1cd5471f194f9238c11fe85813cd6004f9163fe72667681bcf8fc265257112d8b181b8c8b57ad398009256e0606ea6953a8902fbbb68876e1866fc309145e6231b20561cf99fc413119deff4f3e80ac87baa1e0194bbd05fa195c312fd79645e9e2c44f6ea92af5267af99f8e679ebc9c9362e948b76148adbc3c8246875a2f520f7402100df3d0025884f7d91e9ac7ec4768511f1e92642601abeb34ff469180320158ea5ad6778e0a4a7c373bf6bf5544e1d0e195c4d4e18ddf51d3e7ddde4aa0d2566497c3468e0cf40e9ad0193b82ba8546fb373e11b8f4a59906d42b82a0a059ed9ac73fc0e305101df2180ceecbeef818f552d87e70a85e9d2d12767ed071d7aa0f5fec6a6ef85d08520b5665339468bcbe00234f4c83b0788cbb8ad3e6e51832b739d461f5acda9cc29c96380b96aa744fd53e6db03aac7010aef4a5817843cc81c3b1468ae1761da0958f3d3546795e18cd6b85b9650cebe45e86532415f3318c69a8408318f01832b8cf0cc7f10987fbc7cf975f2e23df92b663f0255121b17cecfaef59a6d420420ca4a99cc8a1491a8e7c6e71f8ca5e9b408f41c6fa69392f2c57e2725b76e7375f801f2f82fab5a626a512491c5f505fca982735db0e2f2b1663f747c9587875e316f9903f370c5af21c8b80493ec91613a4b9fd192affaddc6ff308630457e7224263d63d10e3678b881be9b4b8625ee0a48887bbe04657ba58c92d0116cb928ae7cb1809a42f5405e210fdeb072a8617ab3bb8f484b9c2895ce9e2182dca636cef32dfe077712f1f54f8ed832a3ccd78b432a4afefa1f8d9da54be65a46a366f3e24003d3bc0cdfce2b073bf99879c0f2b679a233c429611992c411a46627f659037d2f70bb661ac4b89e6dd6d598d9e8514962c5ae2d2081e6b4564625505a0e31cc0804f4a43c6df4f0f3c761e152f9209ad53d3c00ec6c47ddc8019f76c38c7940ada61eb81ad54d0c1a98aa5619d06cabb2be1bdc2c1e83f38da5ab9bf4e3a0d93dd88cd056b493588fb2a89e1d14e999ae15375ff54fbfad7acf111b2e1e6a07700f0614c0441996c8befc909c7e179b83b4837ecb57faf82c8574605e490014d88b1a37a1ed71b30127daf1e550502ae03d231283df98a7c9f06ed5d03e515b62f625df1f96bb079c72de999fcc6268f354bc96add60ae7e8e8c45026f8228d4a8f85d0a4d51dc2e7de44e81065f1dc8eaa280412bd731fc5cb71ccd8cf7e2b2e2a5667a4aea59154ba23322c09c0a7511ebf4f1b8b0f0622906c3904c8a92dfb0d180feafd45b56a0e5cb248e1c06a8068084ddd69f9ec0ac8164cb2a60e9cccd3eefb33c4b71a1b47e74f3c9caf29a211db42aa87d8d3aafc333913a04b75de1b22b12a951131de6e958fad4f998c36672698448a93abf60ccb086a50d71d455327605523189f7560c8e094b38229d0078a09599a0bebda7a90844983e5e83aff7d1c2150f9824287e81982c6aad812caef350965ae8f7f66023890b11644daaee45fb3b56d097428015d4afbf6d1a3fe8db444e4992ef7f44bcce9c1109f2daf088d199cd20b1b4db68008b5cde4e11e05122b4ac5de3b4e9612796939dd8ab0051d15d3ec90d1e69a443047298ac026f412b10a01e32dea92b324fd852e6c053cdd9dd7c5d4a537b469bcae40468f982c09d7219e86e79069f8427b2833d221f36809954e202c2624565766180036b75b8e9db05b82921d0298bcc82d588f3d4f3df4aa11ed4d37e56812f49f47b3c7063db293574d6259bc9f6956c5a39073be03970614d87324e3e1e8d78620b41ee4d5a7d6165786406666dc311d0a243dae8f8054db01049c377dc6e0290fd6fbd109af040465b6c8036c948c9017317e24cd5f6f221c2a2f35d20dd8d5e8b1ba0f5c450c050a2293baeae0ce67df1d97f3df6fdffe8042f7a731521d7ae78cf4b488a5e386cdd40a3839ec2b99238528b8101476dd41c6f3fdffa2cc7b246e9be09c2788860e1f3c429a6a2d83969262d6ac24065d72c460fa68210d875eccfd062925ac0a0a1a1016ad165d54e220382cde7ecf546543391022366e96f7d197a6f02a053579a2a573f2d84d295326cfa5813f033059742bc20fa41e415dd99138e838e09e09dde708d7d011d21f9a59e77f7e96e90fe79b98170315b66b14537e776f84641566845b7f6209d7fbb7b130d6b3109ad72c4c0cfb67b01cf57893a7e95a873ddf7010aa5bbe9fc2a9db9e2959eaed8d99123f8f5ab7ae8aae4cbba716405e7ee230694487c07d4c09e4c489b06149044c0d086537886c8d44399c9c8d1c7c39908639ed773086383439c4acf1d02719eda2714648e32ead5dee376bdfe2cfed45a01602de271c84a299e20985162785aa2379281c8f4fee9f8b40d049fc0b00b9ba4e52ec0de43caca48a30c7fddc083f041db6205e8052afe1ba63c6f438801ff22315d33867bcdbba787c67a8c02ad07cdefcb72dd4a2ab8ce4ceda4f5362c7bdfe431ee2c0cc04c101be3ae2f636219e34e3a81740affaa0afa8251a148c22294ffa689ae70ad6feefc269007c398a9b3435febfb550596ccd356e7d9c82cc936d9a197e832c72c9ca3a2a716eebdb2fb5a717851596f82b083ae730b8e4a89683061debaca8fd12156e5a8f577b339b2915b8b81e99563cee07a010707fc5693578c0e072ba0035e6b79d2b0a3e693e77fca3c1e21cec994fc1f459b8a90db2e7319be5d0656b6a788497b70c6378dbe87e4a7fd6eee7239e315c48920f8b4704d4ac2168fa3a6c588cb5d4b2981a6108f4a16104c9c130c33f0913d5244228a6398d94ede7e7c2a93c5536e72d3b924777c72feb25d7047a4a8d2de910d03a75599687a42ff84919457716a8aad4deee78894a69ae225e96f9113b8bd2daa26f64d35a303b1e8fcd21c763bc253dfa38ba6362be0448f8850e18dbb48fa6c18c09af6d18dcfdc37673a04138c0313f1d3b95e2675fa99e0b17232a9ca5a834fc19ee2934a039548f7b918f0f1343e42aca77bab208254de8d43e0dbc600711673f32529b758b41a93c2a0a33d4371c7d48e310e7333126013f022c9fb8880ec79cd1a24c124b7aa96f34c17ab8489a5630e0e9daa3db979f27214a2c82356a5d9835f44900ce889105d90183d89b06458ae197d67f7121bbf7a2adc88324aaad6e10a6b38406880f77afda75aeb86d7185b40eac276379f94e0a81d341f2fe28547e0830d0ae63a3b6faa19454054062539ddbdfc49759a3147eb0f2174bfcf0a4985f6abaac3e05d04efc3f7f370d54389a8bda53a24e14cae48aff0f6fffa6bb72b8478b4947826e7a942d7046acc09c8b1365965335318240672418498fc6b577fb652719e0dd884a8692fc68a593a34594db22b18fc6da6094b4b941ad54be30a986ae68ca93b64bd224e43b902f018d6a8182b811f0153665660ec11711238f1b15e6ab59c51ecc8d5cef878b26e8a40c07035ff1e1c80f7e4168e6262f09a39c10a19ccbe0c9dd2c99b44d8879241250d0f29c8cfd2d841848770e449c021e7e067e1d566d54797ddf77bb79b1a78617e4f31bf088cc1865f5b57f4a502d50486b5810516b26154b747b29bb6d3b8a29f48449748ef0dd956d69b937f3f6ded0897edfd30745e21627b90381237da390174611b384194292dd854a11b148567a815a5e46805e756c0b225410ba43b8f4643b045d646b862027e059e8c6fec9f27fa20593f134c70f38fee7f8b6bc5cb37623f05d1b057b67b97efbaedee84060385010dbc04f43d8a488faf4fd1beca4bb5de5d0e13c00b891505e9025634f2146a97b2890493d47b7f631ad9cd34db9267e3084e04d1fe3452e8e9cb2e5fb2e21006f2b5cb2c98e715f95ce13fdf51f479c2bb4b4e590e9f8866760bde24391ecc53b2c82e286b4ae58355da4cefed93f8a17daec47985ff7918224e18f86da25bb2d527dedf8830b5def1ebdb92b029b05cca1189d80e4b6cee72ae5bd5ea8617138e57df90090048a6de2152d2f12dbd75522a0b962164b0f0f431123ee90bb805c439ba9409cb32b0edab8f2042dabb636f09d5ef41a385f29cddf3e5ca7cf3c38f9fe0d857626871e373ff96e5a37dd9be6fa9fa467b9f144b1cb0f30a6a39c2960f74fef2b51a802e42b5be9981f82801c27801baa8df281e93e25183e5fc5fe749fe8cf9bc47f7035e70c858cf949272b78a8e0c1c539ad140edad714c668693d08c32a9db3a73e3feda7c29cd5460539f9cc1045a7035637e513999673006dae451efd01cbfff18a127ba4a99e762ea6ed222fd4b43d7033b7ba671a040c490ef09e2b98d37bbf016b2003a84e0e2188e66cdae5e23d44bd4ebe48c8df20d48b556c4a0e1765a69e5b59ef20e3945c8fc451df4dff405dc9396e2772e0936ae63b77039ef69a672ee0f0560b9085df05c975fd6b5267a9f73a6e67380379f98308ba8101abd0ba08e5538f52b81a423c90cfcc8f50e04ac11cbd53b4417b49b0497c17a78622e9217d3a6e4974c35687170693a6cfcb6cffcde596871940f3995cb334e51e81d600076116b6e967fe9300832f28841a70fa40ee0c3c65ab23e305256dab32a54289c5eba2492e21f40c702bcf121803a7f0d50009946e3c59f437042f5d227f09c169c07ed8d5ad3103c9ac3bd5b7a616765482928d11a8286fbf6db9061585599a31c854def662bcc46969e15c88e00e1cf222599bfbbd011082e9efb33d59c8dab4cf4008c1a7af38e715ad708661658d2626778b067ba5f16e93462e581c5939c196cb0e145eb7c95596c77b187ce1616e60cdad151b8ba7d30a771b66b09d2cf15f6ab6541b5f6d2c312595ef725b90b04a7d4a36f873b6b72b2a0a1ed4d94eb4b602a8d98e0dcc79894528ca15d654909eb864d0d3b72a00dbd388c5428a4bce1fb14a1f7c703620c02b1467762654623d0ab9a21924c22dc808e1166e1b3d919ecc014d5db80055ab88ba847a54f1ac55cc9328a500e8867691c065e6a704d86947c140f9e2013a570079e94e50d0a44cd49d157a42b42bc1df0be2961ea683ea2a0003ef61f546dc82745a458e59d0ba628074d2acf53a54d12b929156d1e7c34b598b338e4be5a9a02dbb81376824401fbada94558b9b30974002024856d708ef043706bdf4bfc72a6ad7cfb69b783870e02ad870fa1ef2ba1093bae889d38a91f85bbbde3b524176ae6eac0b58dd5bb9bb34a38cf28e5827f45b5a5e5c34cc88779f533686acb11335617e1de61637c555d1952a70e73dd16f21fabbdf3cc76d2d95e40455bf35c6ffcd95e0b1a3c151f5da32ab04fb2147913f8026c99b9f68a345ad180627d0c799ea789dad575c4dfd3fd37f35fbb0a082301419dbc7fdaed10739c1c0bf57ea056ea42e0dcbed400c4e0ba5fd5ec2a523472e3482f6c0fb3eccb6b0f5c64426db434ebb4cd14ebdad2246596da1447f647d3bdb9470e6b089fcb8df4ad4490f8a6a64c84c42c6529bb4564d67d8d66cb3a959092917754599996ff402190bbd25b1a4eac4dc70a5f8edd21bd8f098700d6433a73b6763a8b718f7816103af7e01ef015c14ece8454886ade3a41bac43712dce3948c7927f0d6d5a7383db9729d2c97c2e55f2dc39c0b7956bf01dc1a0b653e42e1b46525a8be9b755c5989ed0ee4c678672e68975db7584b5d9c680a54b54ece0170781d63995911e0c10d3617a1a1be737e2acab690d6c35892ccddfa1f090b8757a4860134ff0a8193f8cba7f2263f03cb8b1538da79b1590bc4a0fc85bf30910a9f78e48852f4068f663402c4c84d679e39c9391b49f5f8c2e4ce28382f324f02962ed0952c1f6e046bd53aa308bf334978ae5196d24c01db362bbad574f5ce57aa5e9cf096345866c205d1a1b4849ae2d1cd94b32f59fd2e81fe99b7f0ace1a11ad37a21d6fd953b6ab9b1df7f1159cd2650980e7508bda6b8210ce7fd532c269edc2a3a52bd4f31701ea6a802d52c084d0e581d61132f82060540553562387735a0ef81495f36a57eb2d9a3e3895455ac1b4481d53fd47782001b4d05fa4e170a55d9c023baa4c95e0e17816dd5e310349e644b99bf9dfa10159ae75587a075e330fa62edbae8dc18019f2fca71d1e084bc218a34d084e981b2f5e649d9d2418310ab97a07009813a9364e1aaf3955b238ec7d59714fb2b455c07aaf9ab4caec0bbda8740c875c057e159b7975a8ac3326d10cbe57f6d6566eb0b9962a9f972381aa395fe46913515fc9235eeb36c25947022b6b64825bff77a14a122c8fdd590b938d215b5a139139951ef0c3bac472eb4a5283431d74f7c908e72100d30d7dbb84d26352844e6a334b3da8c3acad3629f7f3e96e5688ddb3cce68a39e974431126c67b8e93c6a1ecb9d211d9b6764ea5f8c2cbc747c9674c62183bae8d0e7ee4775da414569bad56a126d5e29ac93a6ddeea6f9db3c816a698fe54ec682297aceaaaa155e323ab6f527f0c203c689630866781c2072ad817e4847b2b55dab5fca3bffb05ad16dec4b843329d33d9d32dc61f5f0802aa35db8393c4ae69eebbcdfb8e8f127fcaca35d01aacc0d1e89d0ebc1a8d8b55d8e858fc300774c552fecdba0cc8c016b9cb5ea92d3c732b183a218920b9c7c9741bcfad3a78eacd02e1b7d546e98ce0cc75c9d0187c58b11660667bc903d408c7759db34a7ad0c26fccc64d1b4d84555ddba909dce8a59a2fb9b90823d7912732a56e480ab65b0cf50e66f07ef91e86ed11727a446c58f70461fba1e8517d41afe242992229d5eb9a9495b604d248991c0c9059cd44f95232771fb0c8c17f07ec5d3fc25497ad023910444ecb764443fca90b63a907bda895b9404dfba4c4d757225a85f94d8fe574661d7fe023a267f37cadaca4c03b95075ef068c238bdc1391fbc299a888dc1b0697ae6b993a097a331204f12109ae491c113b220b73dc5578613a4b4209bc2c3fd5edb7750b6bdea773f17119056229d34ff0451f80d68828060a68daae1598916d120b37caaebd33999e49d84fc1627141583e85fb4b9e2bbd23bde50ce2017fe1ee8bdaad262c9d66b0f2b4de19fb9847dc9b8f3abefe0fea4f63c0c0c785f595b2dc8e3c20e9a7969e7e7385761a357f920ad0746a2d939e4b69e06f18f0dd4b2b48dac47932c110923ff4bed491d762f1aac7c32056bafeb64d40968280a416ca0d5eee8c1569622d3e177d449d7c669004e8d1741aed228bdda07d3a679a0bc9218b3a7c8b2502ae2d489bfd0124b6f6506083db45c0bc4644cec8c40d6c82b364132711f02250ff1ce0feca8f3f0c0327b46f3126f72d630e9e85f7dc04f81be64d33a9bb3b950289ba8f4107b099432531ad86bd9c41e5147b014cb94b3c11a8295d22f81120e36fc0838aab4551145bb196e923e475bf2b09c25347e833c0ae09657e265865314749e63940e0885868e5695a86d9e548afc65d9ec8ff1ec98f55234f946bdf18a04ea0714049b9804f317cc514c0b596b6040e0c2109d707bdc2942af4bc8d6ee74e0da5d372d4d36dd6a92882feafe24d1013b2b3a2d57a5e950806f76ec0d5ddbbf96db406d69423b38dae1e1211aef209ed71c10959c49cb95ea107cc16404e4f88c4c973ad5efacbd9cfca1bd2102fa3458fca7566dca89bb4d25414377d359cc5900342f657ceaba0c9292ce92b97e18c62265e2174bfd12e039ff803bf663426a07375e09d910ba879f1d40c9460fe804525304a5fba99d688362686fd37d31875fd2e702c68757aad2c6c90c54e30f0aaea97fed36bf2e78e6056528b5ccb2c900b30e10bcd1345ee74dc76b4c182447cb028cdd35bde021b92f5080ea901856605bd810548bbcd84ec94573cc8a60d680ca76e4d2438bbfa78dd4e526a8386bbd90f8f6941a1ec4f94bdef3a279ef7d8b89259fbef22851421915c8e9f687425d9e151a2a2344d88a1db0a8160947651e36568fedc4501fe111db1d4918ae7baf0b9027c9d0cb6a846188c3175eb83737f7b4afceac92090a0d0f8cdbc7edef5aa21e4795a54e4e10676519c0fb8f080200562540d94a061226b6737b45a46ea5f5bfd5ce832f09b139f52035d47c0f9a5015fb96a2da05afbda4d0b04a4a88989c7989e0a1a7b99657789b8a997ff96e8b25933a4b8b6671e709c2d829cbfc78404ab95eb06982b0a2473cae03a009e917653474f188ca2ec9c1f4817a406ddbac6c448da7a4547c49bba246d4bc8cb7d959ab62a9f746262c64e4b8312a806c9937d2d8f2fb85debf91a3d3c09d8165034ea96acf9050ffeba00fb4c2bf54dfb309702c23e3af317d06eed99df532e0209952f3fae413e5f8ac090a4b5612c9d6b21499ac3445ad73c92052a722a3910d3367222308031a7719818b541e348178723f752f8200fccfffc97660ab081a041b6d835939db34f82937917eeac0961e30b1c982e9c8b614f038da469fa70f88253cdccf46733f586d472edf005a768c5da2d5c51920a36859f70191293c31615516dcc5ed91cfb6823157cedbcbfd9d50937622e34bb2264a52977a510d6e9944cc9aabb04e2861a4dd8c5c9a01d728f701687411dd17610c1a0cd2d6e443aeef306104fc0ffcab090390e32c26bce9987d01aaca0a3dc5673a5c94f0954519cbf11da3d88810f839ba235f41e6db18c860af8040ecda123394d6b276f32b5f541c1fb330d373f405f300146c994cddd0bd3228a8c5385ee583eb56a5b4915233190d321e02ded21dd96db023ceb6810ae5a61a896e055f40ffda70e3bb944a18f6e7658007e66b74c2ddd8b20ebe91387f497e844222711b2473ff562100141e343d83817615de06813d5bbc1dbd327fbef27c3c9a3a7cea5a90b0594b11a735abb04e9e9fafcb9497787034af5a94756dbb4a76ffcc26b07194ac6dab770de09ffdc35aae737c70b26a3d6fccad7ada1661beff203f34d665ac2f3c2b98441eacb36839b72fd71bb9ef1d9f661da7056251712109a6546cf74463a9dd5a96a324117839138d48d38fbccae25658f0062b8e9cc9293cfb863d8ae02b78a5968cff78bcfd88ad391fc1379796e9748aedc4c2383770f8b29798b7d693a43bccbd1970d5fbd47748b9e5bfce3c5725ceeeba9e03d2a5d2ca033922a567c2339051f476b907415ea01513e766d827e86497163b3cde4b71ee22214d445e35d711b841fc5b2f0ec0fe618b1a709c68de009453f4e08a7c4817d0ba4c2bae6550b10999f90b880456243225db73c6cd083495350e3b8eb1f5bc9f238e5c5eb4119696b0a74f9b16de915d482014b3a451e5d19a1b425a82fcc2db1a7ed5cc9f30a7fbc584eca79a7cc8a3c17d9d1254051f92378bde05971452e3297ce26918da0595f41a5917de8e17b2d27148b4e2ef613c5b82eec5c01b216b903b077ab2c48980c78b2123463791cab0020a5413fa10d38c62f07a91b1a7e6a0422e649c2c0cb44d99f2fa7d1dca0e01d2655595c1e49b459eac19302648e5ce886bbf46fa7e09fd3cd284431c9caf51c8b002f9dc8bed454668d103811d49b8e6ddb4f6dafff41f172e1b1e8640e20452626ca5affc8d0f836a2e36a373b17af742eec16192ab890cf05fb8695d250bceab83f827f6641d27004e24d3a574b1bf624125fef88d73191044bb6225170d2c99cc05a922b2ad82fd8565dc9c3961d6f6a84a0dbe60e5b346c5b487e58141b51f90e6cf271b72bb8b03713f1fdacbf249e0b72427f0d46bf6c352c3dcf5950f9a52069c88aa9ae4c34816af2445cf4f22739020e4396ae0eb9b7716d814921cd35945504b3a6589b985496bc38f780667660827a31502504b09123be144179111f00d58a1b678d842e03daf927fa2ad7f4288e823a805e458136125ca0af965759d77178eccc245d04c498e5e9d59911721e5e07c578c3c48444469db94420212fedcd6d66062b322066a5c015ac7401e277c4e5eb52ce7a926c8e90a270766ce7cd7f62dad281c18caa3e913007dccb765c695ec7200ec845c997734defb2dc6eebfd953b53fe776f4511e97ef29dc9453a4e9fcfb8467ac7e3ccd47ff77a1449f727df9924d471f87cc631dadb0b4ef5f36611acb63743cd4509a6a92bcc0203bd8bc29511ce2e4de559988a6de80cc5a9baebaadf34d8cc2b4fbeb7b593d22ab358473248ed83b8a1c2c406a8cd769868ed59705148d8fa12b78bf0809c5c60c0f9ae19e6cd799ebc53c9d20772173c93f81711b816e4911c1b7984d2787fe7f21fd1da0c5cc05debc1b1815818032113e866ecd6c9d994b884a8a0d413ffacf9ecbec9c1a8323f00af761102cf0b598d0d784648f771e22d6c5414137fd84e6b85c2a2b84b70176ffe0d2c4bb341b1b484894b9ffc2fee3452225a2cb05c190821fdddc62de777331fc469d1cf8acc6129fb4cf7649a441500174861b53cbc888952f8ed09a91958221335d7463827fd390d6d7a941b8ae64257e9567ddf780aa2569d18922193532deadfdb8cfd6088612641e0369ac827467bd2484c7a960eefcd247dfeb456f764ea8a2f87cc4f5e879e3704a7cf0d4d8bdf62ab85956c1a65542d6348e4a936a2acb5477c0840205041215bcf7a70c6829f25e3694b7d527e78ff55d9ac4bc67c7a3f24629b4b8cb2523fb8d4f3104690cf62d2c9b37a3bd2eff909518f00486ba52e7ac888866ccb7dd5d9c4913f0b67a68f953bdf0145cf2e07ff796768cd07ac3983845de33d1175646841768b9af8b3c57ea60273322027202b7546a22e7afb3e9205f5317d97eb17be862026521fc79a01e0ed05a0f61dfefaf7299faab9e0205619d76719ad8355060c8b672206394b2ecd947e8b78f88e208ffbca672609c571f86cb163c40e6c9906453331db5ee065afa094f1c682535d73149e8707ccb8ccebe8cc2bb2b9a09f8010b515211a8022b04dbb25d46563052908b65f5122e731d658acbf629f8b0bca1e298d710aa20445a443f7101d5d3074e42983e23baa0dae2a1e361d95cc44d8064780fe0c0136667a2be00220671c27985d3317c641c09182aaf6a754495cd2ee3fbd834ebc67cd196a1aab10083bd1cc630b7129e60834f24421a9015ad11a824be37161a6fd58c4ab7441003d6db58a62a0cbeb5607386008f20864222b0d7b9731aaac6f91633ae79be4bbdcb7c90142a50a1c80d3d1f78b8107adb345abc43393360b8ce9ea0c8aef93471d14a370e4e926e44d1563ebf7bd2261b7a517f4436ed328380348d4e6e0511870852fa720bcc1d5e4917c5068db3260bb1dd5c9572c7bd3627177a49834a0a111fd5413ed73a448a06a5ebc621ddbb30b3f79adf4bc6232466d87b0fbfa83789343e51743fdc0e2e9ddb89b2f458bc4e1f3c0d3cdc7623e966685a4db3723d485e4dd1369a0f8485862aa87d6350618f02f79ee944eeb4006e04accdee94f23c802f492e746e174820c80173cddf4af69a733d34d8077abe48c3e71f2aeff3f6d36f38c099e739184deaf1456056f67c9187ce254d7ff9f285ffc9e89ce214bf75f7ae3a2f6ed4d659b7ca6a46bf83f95f6e028aaabddf8b2fc26a40c3273aedb9fb951bff63331221abe6788f6ff33b8349bc5f3b29852714374697adee91456188f748673b598c14702f04783cb770ace5a1468a2075f04c585659711464450e1ff80095220a71ed7f6364d3c19c944370d95c9b44f1413ceb98e1492d689ef01dbc8b6cc43e55f9a7e4a9a09347b36e8fc0e922a08ebb74b4d0175c97b4ff31a6fd9f87dc0d52136116045c8c408ee8f61b387f43e311c28011c10babd94f2148ed29bfe43949375bcc6b6c7962ed5237593ac88993b8dd5c92f7687c8e0bede74dfc238042e1c5d4710f73d5241cc21b82586b80e5182b7ca234e6729e62174e1ec518923f36ef7cb20f4436a73ad7330cefa10a9d3ebc5c0490ac013588ecc7afc0f835e9618f11a7c7dafe179909aae900914711011a4a0d349710cd9ed1051979e61668a177b754de68aa9e37f90cb7afd15d6c53ae74bd1e8c8212a3cb1940297f5bcf8dca4047f015d99ee3afac33db6a002dc80bb00833b52b98e629fa68d052fe8b71397260a212750311665da35476c9877dfb3ab771eeeaa88234b05ab323182532e258dcefb02feb8301042d8ed3fe43841c49d8ffeb8eb16a0407720179842f892052062e4331433235ca5c9e9c8bc550cdea1a71eb0549579e268b70a0af6888d417d75b40e5f41883defc71cd6ea5713974e20420e52e1a181212d28116e809e84f1d6463ec4cab965bab9b85db4ae4c3bfd8f39aa211d7e70c2ceb062c854e45044b3c7eee661e854dff63938750a2c815bf73a44d2510766eaa07d62c590a9f078fef1c75e3e630689538f1820dfd1356f920fa3f2e1c0ac25962c841e114b865dfb86d1a00eaf57b49e46fba6ffebc2b5dcd4a204244c01cae7043156600ee6a403facfc1ecffff8f51953f7398a5c07cfd8e48f59f4bd1ef88b2abff917b4c64619aaaeaefba9e28663f48b084728e0b74d2e0b680020af894794013fd4839d2adbe12b2c30d99a2da665a2352cadcb68d0425030703d702c6ca57e97929497ae661fafd7dbf25128d009aae4e50c762dd1ccc8a24559cd821c5858cfbf9a5dda7ee64b6d6ca8b59a40fb1050d089d0993d6212523ad1e38cea6a83cb5304a6baddb9585cdd65a5f6b6d62fba1694b5b1a7152a23aa5b52e9d7ad25a93a650148de9740695010a61469809206045b898dea43cd220eaed5273c9a404c64819fdddf43633330fbed4c402da8cd5a0e7716d21c5ffffe35a2b0c4c8b1a3c3e4ecd25724ada4b677c68eba474ba9310e46425a57345adc959002deb2048d26305b6445495820984ac28c4a12a4a84694b228c8c95aa84cea13edea9e3d55a2b87f1776f72efeef043b5337ce2c5e52476a5ad9e3d0d24c22a1a1a71c219493e7a5cf4c0c20aa7a5b613a53626f67624999a3bdfba3deb2b5acf6a6a2119abee2461842c6e4af0a875a304af48f9c8fbfa92cea03237d6fa448679a7cfb66e7779277f81b3754e4697c47f31ff9b6d707ca909246cb9438e74a8b2c3ca50d68a2266475b737039de4e8c41a171e2462ea474ba8a8606b4dc42a9933aba72c4cc088b22c6a29e2b402d86b4f084c5838c4a32c87415cae111c854f684f576294b6a2a7bb67266cc8c4f57370695b8b6b23225512796ecb07801098ff6511f4dfa17897d443aa1b911a473a5c4db7478ddd41e3fd5ac59c038e28b27243c524470a78e2e16fb2a04872865494d1d5d6dff8dab1adc01242235b3825d8b44a8b30b16b38268dccb0a22d397d4cc0a32d1e02865d6b5058427e8436d4a47ac7ac811e2164c519dfc8823aef8e27165c951ec68a9020ac5405315d4e635e5c98e9fd819126227499108644434416c6636665c88a786279884b553b5db99aa62431019a49c51c4f132c102ce4f8f13546051383cd4dd0e484b5c4f349680a51d7990afcdf3eeeeb191e7767335bb49d512332b4551b84c94d803a57b3365041261b9e971c37523245df477e382515a3185f16b19c3f472d255820b3c63a961b6015a59e9aaf8bab35e6a5eb5d93cc8db1bfa1c6f1b7772fc1fcbc74aefad9363dfcfc7493ae343b96239607505030a50a8e9c44f3dda0d6d734f6f730f104ecb696ca25a6664e639cfd4c432824dd14aab928ccb49d185e44722d12e445bf32e5017237c7d32ffe4f0f9b919fe76170863e9ee6ee1eede58069735d5d5e405c3388464165cde4a17adbbbbbbbbbbbbfbefeeffddddddfdbf3a7b9fa42fc40fa6fe4706f0ffff7f1dfeeedea7a8bbbb3b8d853e6fd58709f0e971d9ddddddddddddfdbfbbbbff777777f7fffaec953e34ffffdef088c4ab38be7e7a7e4c7143f1e269c7e7c7293d16e39acb50e76a2ddd7d322b009466a3e28be9cbcddc3ad2f4712c6d143da7449ce82976febf11c84b5ce1f266e09ec82300d76601fe477f4020b1a6777f30bdb21e46683cdc807495f8a1d257144aa2dbcb9959852bb5182788514517393d2626c1affdceffff9fff0b7f166bd9ca3dece6e5adff68ffff7f94802f2f5f596491b6cea75eba7f172a8d4623844b2d2dec1d8b9c40440742dc72ec48985a90e05b98ad762ed9919cb86f584b55d73267f8d67b9a3a88e01409690eb46e62ace1f06df053026f3ca1710d82d86ca1bd3833c0aa296343b2a0fa68f2d652c18fc792a6e6ad5250ade28496ec26c871e5c599959d0436acfc387b93a951a5eb11542a3836342f16087e32a8586192d5f2c01415e15bcf815f8c2929a45a1aa830a434bdf50c808a42c3cd2b08a2808a84c2c3c929c0afe9891136b70160ea9293aeb800909aa4fdc5a8490d9a5a1d41f426b484808a82c9d3da91f367c2ed061bbb00b50d51db12f1db19d97e5803d22176c4b5286becfbed846bc2eed51d35156bbc1d4e5a8c24ee9d0d5a0f35de2b4bbed478af7067696d6c5d7f52aeac29e19d59754f944a8e6af7e1d4f97e55f7a6344b62db579d9bb2acc692fdb2f287651a1aa3ec092381088bce821a6a0a039acab0632087deb0c20b22a0d0c18e819c0733a60e99dd05bb110e50c2f141b6e36caac48e84cc8e811cba0b4b3bd0e91098914132b340583a8381583a63fe9831bb92e4d0cea1be1c8ae650991cda410e152187ae904365c8e5b8ee5f958674605a894b440da037a7c250f979f1a9a83c62bb7e7ff5ffffca496d3dbf25a1d4838bd20e1f114b4ec4102b7a7c48174110c8193c003ca9f1d012c4920477ec290d8b3c25b3a03329c9b0ab8a7cc4b3c8258acf08bbcbccbbbbbbcbcc7b3ecbe686bbff63501e7777ffbf0fef4d0f8d511e83d2a7a6b2b896cea0322789b7debea0b54fe6ffffcf7c02570ed491db955a50d80e1f31a28c3019db625b422cf6e0cac4e5fb78645e5c322b5a36f111e58392f31001c346142a2b6370504c2c762493c96432994c2693c96432994c2693c9640a59542d70ac803f909231cb241a4942f4ccb579f60f597d3f1fca3b9d00be7e8aec0c1143d2b232018743eb098ed6b25825a3a413c30b89d48f958ece11f4f283c13102878915be509543cc860ad20e170eb71b342bc86ece96f0a051d2f283b1c130b56d0090c2ca9519541ad5958dde2eca9c0a8cbd97b9bfdfafaf7b7c17b4d1defbfd03df3d5ed7e0202a2277e3ac909999bb997b43a112b05f743f18271e91139a479a988c095b2cb181513909913c320e343979441f3d5e379f46ca5829f3fbddbb614f8938778167666666ee9f999999bfdc02982789da2cc00572333373efeeeeee76efeeee99f9bbcbccccdcbfef320a620cbac08a65e6e28ad51fcc70ab65c7ccccc0de1ef66861fec114a35c72c5961d949e9e449519511d753e83a845f4e2dde67d2f6697cea032a702643ef3cdacd3bbe3f9a1c8072ae8466c58bc12fe90919670a6a106540f8fa0ac2eb81e9aa4ecbe84f5f5a7607964da32c3ea915462a7d2d52d9b74ecab5979a9b94432f37d67e4f455b37274e4c0e12584c9a59cb2884e6edd4e425f6a2e9f7664787d2a35af3213ff609a745bfb49b73f98fa9ad44257777777ffefeeeefedfddddfdbfb542e9763bb5d6faffb5d65a77be4f82a1abb5ee2445e9ea6f57c684245225510217757464e7e92c66f934233d5373f924249d41653a0214593aca1e1a3d48ab652625f095498be7884f5ace8f092ee5a5333eb45ef17db754364d37865ee410a151621f23dda4ade2928593b4979a4ba71e5d907f24ede6182310df000b9cdbdd40fe5e67b90a60fa2a70ff291ecc8f72b8bccc2b7c4abbd1ffe6c93f46bd7d31df95d70822642ed21954a6cf9b3d58ba3bec0502608512929abce9dddd23d3ec1c0906bd83fd34013bdb2a0567495e40e961facaa9e80a52ae7ec2d23335af7e8a741121096b27e3f1bc7525f2758200326cde15ded47a2691294b6a26934635c894230a95392511b6a908261da946127630a1a68466e4a91205f4affd71e5a8b77f7555543c7f28493935af7e88ddcb4ca6c9909291644aed6da8d4360329e9aa0a0a9aae123e58aa48e18398110f448c581d0d4d88d1439994160c266a45c6a6f0684a82e32d6949e430bb24ef766f9fbcaf3a97d4cc0a9eb8562ee55941b456f62696c6f5ad9cd08a10db97900c37a4cf0b134437b42b5f7127b4d212b6753c74d67a43200152134b870b19e2461153a02358c30812e494da87d88001608326b4c307961134aae5cd97363aa78dcf50cd581befee1e777789412206d359e2215be20193c1e2b99182484d2c1e17443834e94afe288152e3a69c4145d932edeb87d89790e65c1528130b4594e3220d44357bb7a79a0d95b36339eff742f5f45c50e1fd838c853094737306545564a5848c8b1ee9a6a6950b1d5443dcddcccc3941a48ebc9c96d40c2285b366be35df6c2c35546aa27c28f2d6242297437d4b502a4890a9395e9f47555c6aade710c9bb110ead5cce1f0c0064c03227221b211bcf02ea24a1e1f7ccc76ddec61e4949ff73e55a79859417f6fd8443e256e1f0e8e5bedf8ae2ffba325c2ac7fcbf4ec54aefe3aef43e2432a0ef77346689e4d603e404f9b44561a2a3c9c913102e6e66e6048c38417e5814d5d02ab1c74a77d7dccccdcddcdc5c15dcde62d9eeee6277773333f73be9fb0fa63677777777333377b19b91bc552c7273b78baebbbb77ff7fbbbbbbbb8bcd92fb999991c5e21bba7526112f8afa0caa42a196834844c8c3d54982c7c27db690632a2eae094d12b71fc7162c3e50d2dd656661cb8d5108c8fcffbcddddff1f5cde62596666fe79dfcccccc30fcfffff9012c33333313dfcdccdcddfdffff99fbffffeeffddffffbfefc23ae6ffe79001a8e48cdf874606a02328d3190400006018c76120c7d2d8e90214000921aa888cac34a0381a1347a24038341087a12008e2188661000843208ec4408a6a2a090070a22288206cf639cad3321e5f07519211c5abb10f8935f5b320302732286a47912c55532ed8f3a03d4149d7f199b58ef012d4f8f7320997e448e2930ac3ccb6ddb15b96eba4ef254fccf4f3d3598c62b9e0a467f977a4f9c8d2618f37c5063b738a8e1ffd547905bab923ec8cf506254b09d929523795a2a0dba55258f5da94ea03b31d72e8c4e0c1d18787d1e797d0b82832b9f8692ce8a2e817157be597bec2af7bc294f2634a40f35248a04e4843395ad8709d31e3d8190071bafa834e60fd91a5b880b85a87aaca521d4b9780b17963e082192bf80608812d920a1efb7f97ef2d49fe1e5f1026dccc191d91549f2087a4b7108b065c92e1c6d2e630591d61441fc572e5e120739828bd9acc41a7ffc468f1cdaa4df2b705ee4e0b7b9fcf327a3bfcea0761b7b7c30ac4a7f77d0b80c13c3e174ad9073153aabdb0969f66f6a219064cbd1e871a375631aa31b0908e48bf606caee14f50519658166c47940efa98ac490e4e5fced2d177488867dc32f221c2620268662f559163101d60eb4355d8895e8784b581a8caea2054aa8673ae7be04cc1d105918aa44acae44c84f780f61dd6449e64a507298f801cf817228a9b5adcbd8a5dbac153f1d5b76487bb03ebabe0e87d831269dc9d5da55c5ed009dbec16b35d5959cc6ef664b2830dc3988bc2d2e1cce355e6d3268230d8e6b49ae066f86ed8b5bc40fc89f9a4cb318e7ab62ebe376ffabc832dcc10165d2066ea60c4af5a04e80128f4a62754eacc243a5d06205ec96c3002b52068f471ca38bb3ca5d5f113862d396a493284e510f394a39bde23c61b5217b13a73bbdcd01b75450341a2ec895d770290b954f6a2176c1e6c6555abcc62da713db34600d2b805259f2151d565fc3771469acc157d427a39ae9132c1ebbeb326b33d7b582c3ec281e2d1e4b51808c43b8987a8a8a9cf39621b78eb83ae6bca051fbcf5053251168d4944957f9b020d0784e01d23c0012a2d1940b4a84e6ad658d6e84914c54f26944d35512201de7752b0461c10a9e62528ac87a12f7a97d6814b2cf3b8be2feae24af2a961835b9bcd310d223bf555cae098bf8a85e7fab5c2b1487f3741110f3b4acade35029aeb7134566c46e8fa16c2baa8d90849a6c7e1f9f6db41aec0ed32956fc4621043dd1824fcc5e1af287c5795fc1925c43b133ce948886b98c9f77045c18a97140ed69cb0a8355df682568257e7960e65a92f282112e1ea97fc3f8918275ed8932317d1430723dc522d8e90128e61059248259c2e4253197d8e9aa287d77ccc8b3509025f252d007dc02d63780b70aca60b5b03a158c7d90ecea737a75452d4929c3a5aa5c1475a6f8e067c02f97bf08eef3944f0604c361f8659d5f0c85c7e4a007234c1a598c835d8b4cbf0d440c3c6ddd83818ad520a669c33e8b4f497710f845b1ca7343f8390aa5a514c47ce6de423fdfa701961a217879a666f83edf6a1ec7f970b255e1a8964e7ea29b14a38038905200403b1822b50bc984f0599cc42062b140ca48fed720675b18da242190e1654c9bbb7cdc24c916a1f82b0b095d1fe6a983481227c60f2cb461c57217704310cb91ecf575d0085403dd4affc901b3c1cf0d009ed7b1b5a5b355d912154a6842e38305fd7db2b68adec62663400b379556f31747b0fba6f9750783aec6277a1394fe9bf088d4872208215a369adef7af6bc6b19b9932cff6623a6743ee96ea2fd0eef3c4b8050f4f6d54a4a09494afda05eecc09794107723daf2207c35a61879a3dad5abdd1c2c8224d72914a2b7be5e4da6a42c7e4b1dd03f519bcc79f3218b9e0554841ae4c45a05d0b1801f08c1ba463453fb204e1006dc4f3faefa05ac213d4604c2612d3190ff1d50df4bd0eb6857f8f52185058c69668ac11166dee60b7ce23d8d31ad38959400ee6c67f39eb7f4bba003a527f87a70da7d35d38eb70d9f906c09dacf8077ffb073e2eec69b74e319c64181e1216d5ac8a8d299b86cae1eb19cbb67df02689e4889aa90183eae968802d498b85853119fe84e4bc35b21628d3ed13f72ebf96dcff94940418d09d4c229dc3ec1d8853c718aec88243ae7dd50b1d92b1282d910b7a617eca5deffdf0c3ca261ab7c497312e6cfcd5beb2075b0c421c14a139b9f396bcb30f24bd13161707c2d31ebd8fdfcbaf1b66c15aab248aa956517a3186551183e3b549d4083fc13c1ebadd89cf92431bcfc3b53bf42ad9e3e9aa4b5e49d6029e305e275934d28f4121912dcc55e2a4f63396e9a18cb0ed8a01541fa4ca0c789cab92c7e189ef87a80e8dabf420430bd605755cf17c99dee4b527241eca6cf5c2457396f94c9b30405e7a2fb333fa055a833e52ca21fe088d8136cf9af887a7f6abaed6faedd0ccb0dcdcd92a7bd728238d9d9bef7c92e1523abe0e0bc90c161c9b3d02f472ebcc527047aa379a74af2c66596dda384c2e4e4eca4690ec0d2d3578f6dcebfd1025fbde953f35b5796208950404be9821cc0f9b01efb63f3e5b1e103d782c0a8b504f81225126121f4f9b09dc3c8b76531cfc0ecefd2b51e1bef752dac2879c490261196482e0ecbf1b3e1f684aebc0d24d9ab1eabc895be50f4d3859920c90a4bcb35a86530a9b2919d1eebb003a0cd94d3323fa614c36e01337c7bacea5f74296b42429f41495676158afec0bf9f103536260d6d0dc8c47d88458163c0f374ee3ebdb1d329360a44d3ea32f61df124067e742b1238da2b1273fc77d4c39549b9b075f0f17348d05610d450ae22fc9ecce6cc3583f6bda67925c02a9706415fe630aa5d2fc620853c081e2402544600212bbbce9ca95306417c169ef2534a8d285c21ca3231d4f9af4ae400db85f7dfd4e8bf80591289cfc6b50651dcd6f0b589c17994c193fe37805d18086b43ef0a50ff540019170d619b5e2c8e077dd0112d3438cfb342f17372d89ed8a8121ce4a6140882426f1322c3def51f88487010db5521292a55ed430d9bf67e722636a44db121ff4c4d250184d23de92c129456db79086ba2fbb517e5b58008922005dbce431853dd8f789bd2dda9848bd476058252eadeae0b1aed2e82a855753ffe1645a313dbe0151ca41189527520585ebbaed80af4077b87547daefe7d0c65918bdcd7ae82088b3c49fbe0a8de67641b83a0a6b43986cd33c78d4a7377caa1f0192f95b2f481e2d466305247d31e85722577f64f1e5bc8c77f2a27fe3f94bbf2fa9d598d45c89b952ff0239fa8ba2fa5ae1f0028ba3bba368b52ff61a71e53ef5037c0fcca4e8cb4f7e1faa0fe1a8c9d564368fac8acd15dfa63cb47762a0d7de8e316e0fa93c5d0624afa02f6c322568e9494096c82233513a89d0f040bcb3dff9f8febdd504bec764afd85e4e45ba3005282b5d36688952f297bfa96ffdde6d94e551be112fe036da03daf00155bd11a54db1c77aa9b86bb53dfd8022500819a3a505e2fbec42f6755cc39d33cbc70eae38c1073c3bb36c65841ea6b52c0f5ae30ec757d6e9ce9f20f27a5834027958aaba58016f28c8d8c7f0e71e69fb107d42e1d73863b1bfcca048efbb931a06146c65036a1fe7d625bb8a7cd085d17641962faecf36076180dda20182f61ce00e5eb20e1b0ed13bcced20098f501cbb8b0244d1c2427dc9006983a72e66d1267ead9476930dfccecaf9aea08b5bf131501d7275c3ee79e0a2438abcc77d6e792aa71538123782325ad20d78f800443c541030773f884f48b39941ba3d71bf12ca6f30972030c57ea180d98ac7683c54d9f4b98aa568ab6fb546162460ae853e0714cce0f3227aff7334377dd93655a7482ea7080456f9e35daedb4a9a9d802e3135c80b607245ff44f8e981dd69eaebbd135104822568c38430636f60a9e1257e822c312619c3d55ae87801dcc4613e8efdfb90b2926fa5805381ff998d05dcd978428c17543a47c68521316409ede64ca7d61085b7c617c7b733e9472dd52e889b12e561ecd9c6ae703233d85206fe37c2ea127ae20032682e5d95dd072821ac8bc36b3b5170a98545f2fe4522187ed43c0defd403d7e34cc50fd492071be97dabeadea0af2023047f70b9e34ea0855bf86f1781ca36550dc1b02d8e17c82ac0315a9a92a73cff92cf701c845696505283c3d0e0059ea4ed2137e9498709a352944ef5ae590287436d1fb5a0d9ba87d1164322f4e1143a35f301ea9b46ce9fd2f133ef09560058e84f335f7d8f10af6c3b7316ee97c26a509bd01004c4be653550b24818b1daf82e2d1d8c7e924bbefa46f83d961c93b18963dd4958d5edaab6591d4cf788da4d3c0206735cf8da4a8f4b9b916c999b4989995d0f60e6edee93279f0a1230d3a67834dad6b852e4d0305e4759a9a3586108ada04f223b4fc49ba353e3cddc7b6985810994eb89d2a340c264f91448b26d3523c0e98c33045f5d03915fa43caf900c9894101028de19ebbb9bf3261e88c952a725f97694bdab4020253ca842df56a525472c1992f456e69262b8d9642c57d4a72398abaa17d09635513a3978b195168a3d51883b8a2e7c74a4eb60b37eef8380f8d1d82983d734f0223a19ff9dae52320727732c9de18ec7d478b249594e44a59847e00d2f32ae1d77462aa1e42fa78dafa0c562c60218f4bc9861ea106ea72c08f0180bc1ca3d45502de16b2d0bba07d4b86bf45da6e7795a7de8bb335e2cbd633db233a5ee5d56026b5223748f4d86004b1dbe40f44a07bed59f301c287eafa0f106a16fd2999ce0b469da4e8e5d199d864aebf1ca3892f8ad1a4b23ca79dfb0aba04a4f1dd6872683f9a601f14717a6547159d0110ca81704395575f3e76cafc3b7b504dfe38d28a150742785744351b03d24c392df3432da8169d39d4bb128e06b0651615041b6426d0593f9b2d08a2806bd9b9a884a59e9f996f67e20b3e82c2e060264c4c44e3d0a02567af7235c2a5935a335bf1ca0ea489c0474ea4e41f39ddedd0a99d416e162392515024e12daebc8e04fde0d147dc797f6236aebaa7e3e3973b7663acc93551691c2501779b32b04d68cd55e83b5ce5af1fcb0d5162d04e6819d46da77e9dde6caa2ca16f40f8b136a2d2bc831033734dc8ebc28c19c90fa3fcca5de22bb8b3adf91653db61fc523d775c771bc84762bffa857210bc16af81ac93093bc4eb11fde6e55602caa51881b4690461499977a30165b3a073c6c428d7ac0fb20e99c9d53a5e6dc025396e77862a2e648524071c22b9414e6369c8450ea3e487a02643393f2a453bc1a4f8aa6e1752fe65cd9efcb548a231d876295a1749b789fd0b0286cb41639f5d8a953e60da5c3fe68b6cd03506d7c29b4e8fb60998383aa9e374acca24217de221fbaa24695cec48113cdd57d031a43d605617f56a332f0ee02cee289d4d7fdbb9fa31f1556c1a9716286076466746a081e3136bcb57a7617a7715e4f072552c0e42f583a890c69a6e5a25bd48a2aa122f09e80ac05d013e51930060e8fb63a4aeb70a6c528b0aa6f4d284f9a4a0b5bc5ca39e96f95f299f2c5e87ea8ece255d2ce844fa2ab0ae829216b115698fb09e4d99cc0447b0e66c95353da37b51643d25af2bcb1c8eb2cf48e5c3fbfb52de2d42319ac30aefab711c090973180451889256d66bbdbb3b98d69cd65c3eb69c54ea4042584d37d08e661ab270e4418c180586a55c32ee80d594a5df56f154e98473da591f8886197c76a3f6776ebc545bebfcc9cc441b38a5101ea4984b4276e8a1e8fae3bf939ef6eb09d8776a92c864a578d2919d777e535df342b8902098fe5616a1b4adeebfc9651b9fd8533b51738171eb5ffa6bfa9b7680cc910e45c6c1fa0b856a7a04949da5355e512dfe28cb404c875651a30724d209cc263a788166844e6eb0c66458223ecd2e98cf96966bceeeca731ce38e3e19cbd33c2e57eb906804e4539ab782d2fe727098fb39d5828d397c7ab8364160fbc203ddfc3aafd6d01a4e0773726fb899d3495bf41c73a97ae7750b014ae6e638f627f53e290c6d41dc9c4a984308d56e0e0220f44904dcc70015b02f42c3bf756fde9e6fb0e2a3e6815a002bc3c47cc05e90fb4c20771a7a624255ab5a8404afd69918f4e8c4b78388fd8adc28c80d7a1b2706b962eb230d680bae3d3001a80b2d30ec15da0166ccd83f1d999c556b49713a01442e70d3998842054cecf4ada17de414e0fd6c483428419a2620b03a685acb722bee4493c82606abd22800c593a35d2d97676b7359143d4af8b664ff39398d449c8a30228e734cd4f2890fc7f9ac534d2d92502114708fc35e4bdfd8e54ef1c7e0e9b1f1f4f1a0f480c62c7d82cb9a2303578c89b726147b9fdf6b29f9daead4b133ef27dd9ad48643f7360d109203e13096f3bbdab7f9245df62c570dfaa77dea2cdf927756bb9f4b31c063807dfca6b1249038554b400221084ebc0c5a8d9dfcdbdf10fc409294bf48269ec855d57d2b07b1cef427120e26d0c5294bbc7f422db373099d1419756f73a666c6ab60c0a0a0e866fe03f1450fce83a6af52cb81a4f3039d293872e8eaf2ddc684ed66cdcc99d60c70e856834e6701ab4389012810e8252d086590aef4d0cc27249fb8e645682f655060892c4b480830af662e166c770a0df7f9fcf7720dea33936d645c3b5e5b4d9f4d084c975be4f3c144e58e252c74d1603929599652ec4cec7814bf94e5d68be438290080a2fa07386997c521a473e718966fa186117b4459acd0a45972d7f3e0bf6d58d210e7e339be347ec704f8773400ef009359ef78ce89c7e691943b156931ecffdc34a882cfe898a219cfb56e5e97b38c315e2b9ea31aecc35351a5d73f203605fc343cf7691e1e4f50284cdd6de7d8f2f8f65444cf74c1760ed71e3ccaaeada6fb06980b7704ed9ca593042c126f673ea7c4b7c4fc725728c023ad731669771544d6041d33917bf757ce163006ed3952756282918da033543acb16f65cfea5cfbc99979968ade7f677aee3b1507946539e134f2b24d2c29f7b6e04903f75d804c6c4ef1ce3f2737e362677ffc9e10cc806fbdc88da363e70103147cae768bd990db638826ecf43dffe135330e097f1b9478be84aa0171980bd840998b6f5dccc373dc14bbfd02d2a9d65b9fd1cae41fc802bdaa3057008100166ad9f93aba427bcd416ba452dbaf6037793c08fa59f5b08a7d30b7a5dcbdf170906bc383f57a51c7f88ae2b74205fd888f273fa2dd7c4be15ba32d173451f3fc7b87e9c9fcd6ea606fcdc3a35f843f69bd085d897e627e182801cdce73e9aa3e7932814b3cf3ee71b1d60601b4ae87636e6ba747d0ed1a81bf4fcada1d005600c48c058d6e728d9fe1c9fcd6ede3ef5b9fbe5ba2cc68483ae6dae9bfbc9ce11c0bdf439e9899d89d887e8e2eba3f57f32d0016f57a0132a2653c4d4109d1da36c8513e80c4a732e7202f29420d09d2ed66590079c74edeeced5914667e24f4cd80996742715e806089966811f1c46b7104ce697b4ba16802f1216782d48ba89d792b0f3057b1c7931dba5c7333c2010c0ca239d6e12564d59eb9f897eace215e03b35a5163238e7e02837081198d4d3a946bae9dd399fe10a9b4ee9a48172ebe827295da4bafacfe0a3c450babd517f077c74ffca5dbe820c60cd02456a9da095e1869436210459f6fbc618ff818df1055c221262eed4ab4a711cef75c79d9196ee01ca44f455ae5f09f715f76a8b82aaa036ddf6cf99ddde2f1f55d45392be6a4e1d3c3c5b39c5ddde0c3297ebbf8034a0d8178deb0554675ec047b2409bc3ff378ca06890e9d95c1c40ae8ec31a69738d07690ba6b0d14409f889a6eec00c0d46330b1a3a26e8cf8c04da3deba08267a6057d774ad551e652039844d475eb5eac16229af9bd8cca3356e41d33e5e338c118ad6ea3a1d2064ff56cfb1fecfcd0a03cffba35f8cd8667f2d04b5980bde016171cf7e6458ad2e8fa6481171882f342230871571c99544cff5871ead0b4472b9318afb560d037e15d095ed41ca9833a43944b74666c8c50469a8873c18fc63c6ea22e624b693cdb3d3b9e45402e9e1c72d95fc1950a4025593821575cbe5faa83b56c622eff2f78a5229031e421bbff229b8881cc90d4e09d327e5041ae73505bf602d93308a8bc80b5f9a060aae780b5adb03d3589841507795de703c4236f50336341ffc478e44ce30ac6f2002d66f11b6a588b121120741724924799594e89b09410a5c753c2bcb5e653a6cd8133273f6462afbb5ec14139d9584e909276c89073660a15ec24d3b4ef813b9789e668102de4ff558df096bd6e654349ffbd7a5dc7a12373d509c4d3cf8197571c2ecc73524362f4c8c42677dde190dfd4a1d80721e399b6312f38cf9d3f1866abacaa9b45988ced8615c8b573c33170a03bc2fabc9cc66262a93e4d7acf9e217329a2ee8fc682d459d602b0fdd21512ce33bd608351937cd06e3cba38639d842dab0b39b97b8a5c8bdf04ccd856401c5ebe37f37825501b00587a0461f709cb20dbe3c88809623b071cacd5336a8bdb628243c46c3c23c1ee7f3d03ab569eb1193b02787a4dd8ce857b0ac1b0c4327a807e242649117b8266653e5246eaac6d8fdf53ef6b77dac9a52b677adfffcc749fb72be8d6d40e9143f90b68dd67778bb177db9550e83af4d1981d0b40bf65786f23f44a9266b53afdb5ab83493bf1f4b5fec2fb0026ac231d0716387942ca2b716fe25f0c53ec4c89738e276405174a4ce05911cac0e854102017618eb58fef464b65da555f559d8231dc251f8acfaad64d9f30877dce4bad038140790ae2738ea9164428ee134437ab099e712ccfe66ae3d71c742ace110d7090dea3c45fda44d1c5435aa8e0624a0eceb0207d10752ef371daa51b0ca5de85c77c57fc8a6a8af3c880fb9d37a090cfba8de07021d3fb064c75b2bde54e5259093be5fbe4a46485adc93b43adb18402e4de1ad906052453362a71d574264583bb7256322b072d8820a98ec35b3cd67ecd67533feef6467c53379ece45a7c89dd90b02cd823d557bc989fc88e3597c781e57c3cc9421f546c5bfb08caed4b8b159406fac800a955ecb7eeae5834bf9f954d852779cad5221e7051c53cf8b031d986490880406ef05396f10340cf0efaff2080154562ead5bde1b504e85fa4fd30690bfb4d64164e0e708c53a7c38ea174ab0cc176c92d74abf63f8c4c70409f7d02f834d3a651a1a162924941ffdae5ca3fdc6395711b01189cc0959a12f9384b5003d99e7249adead1c740ecf57962597e78041b5e839936780264fd18f993c91c962070362430123a3f19549e04afd9bd734f4d03fe24759d0662f0a5bbcb11d8771ca5a935c81a8354ea0552f8aabd085e600fa43fd416bd647492655ee3a3c4b46e291889ebcf6f01f0add6163a8564d65064e0a8aae3b42323d6446621a1abb3c4e5b4b90de539475668f84da845ca3909f07eb84317143ba8d80c4a8d1893d0fa5d88e3b38ac8ef82c1baa2ca1831050d03e62a2e6337359ebd69991b69f17d636a296e88b04a32d950033f31279e10b361f8eb0ef0ce0c92f0b61ec94ce18e4c59bf1e80d34b2d6f8171d4133826e066b4f15033f617680502aea6183b81e32a50301803db7137bac2df1c4322173ebadba7a0ec3020c1454a8db71d975e8c525ab2847ef9a40bb0ea36a4866b6f44e5f36a8ce6bc79f7b9308aaa3a461ae203e250fcb2f3c42852e16d23d8cdf743abf21afc891cbc58a48fb06bd315185c4ccc1eb185abbe952e5531c8bb2b4ccf0a08c4defb9b0010a166ec4bd0ac94f2e2dee1ce565255167ea556ecfd29634c135d49f23a4a39b8709cd5719fc5680311909d7b75ea1544fa0878f7313f3e17471f53fd75946053e8cac01ab8ea6cbcf73046560ec61798742084dfe736674398c522931d90758886b86db9470245ec70b2f4d90e871b34ae7032243bcc12f409810a0652e40878f4355126f76cac2790a8a1e11b8ac8c4fcfba74a3c991294209d89c27f815c380639e52ee9ff90e291bf74b0e3c502e2ac396b8fbaceb854db9507f48c644060a2f34b3c831c7fb55da6ef91fba7b473a362437bde29cca75149d178f8a24026f75f6520e7d9b85f05dba344413ff06d69ba66769f6c5da133c5982ea5e4b14461ffdbba4f66d076d1698f5bada53d62e19126e59f426dbe1158799c67185864aa35c5dc7ca90183a6f582e4b63f39f90a85d691e38dba217b864409baaaebdb0d00d57a223e3e6667339d9e5c72046a079a4976672ac27ba6c222fcb81496b83f99a4918aae1149ff9115bc247334ae6e49a9cc79156a970397338b15480ad4342cb7a6b5a4f92cf3abcfd6ca9883fab95a83b2d3c816371cdc82424ab3908a056c15fd581cd90b51040e2f2b548968f6740f5378b08a8e564b72d0aa1913d04136ad4160509d087b19c6efd6ce016658687e35897b4c7f878266994a45a56cfa62871e93ba8274e929b367edb1ee5d1aaf1d72c4b0d3e008ca0c0351a6d2b004461b057d213d4b104ee5ec4be0d59309819a7c5e18a6588d6ed9f4361b16c2624ab1b43a18190e3741aa6f639bcbd68ee6303946aa190ab00b1bece8d3a7800807821305f41dd967c1e9268f98fc9a5d491614597d5dee037fa6f66666346d8b249134924b2bb77f70d350d830d1d8c0e86ee7b57ffddc3700fe3fee5fec53de99ebbd7ee3b155e7deb51a9a4ea2955def6af55a690e6d29b3ec29b8787fd09bff0aefa7e6432e19f3be173d8845d6078836424f0cf93533a86b9ccbed15d0fcc49e118d7615cb912c94f9e9bc2eb24dee9722bb66ee611f577bbf57cf77e75af3a9cac91909aef1075fd56bfc27bf3d1f22abcb71fddbabc7644c69074186aedeab4deb530f46e2bf502298eb8bfd5c5e5da3597dabd6098e362b3901a170c73ba9dedddbb4e8eec4ddf3768d3aed116ef1a6b3d8fc5ea702497042f6e3d9b12191bc998ea3ef5d2f7a8134adf6f5bbf52e17bf3b64f6114de2c520b5cabc84f9ab0901a1c3c1c4ad84e987d0b66916ede9048df6b38b7b86c44fb3d8f0e7dcf93337a4d0977464653a2008427727c5809b164881c286fe0eda408d4e82eef1bf428a39a642b6191ca2f8e643e501e294d718a1bc87796f5bd9b18e25da3a1b59ec762fddf87a3218e86ef4631b77ec46fef11331ddda3879783de475ae5b0dd30c9d699b7043c886d7749eba1d4380bdf92b7e5f2a8f4930e0fe1bb780b70fb1e33a3cea3e1d5a93d463f469f9797525c47f012d28f3027ff0d5ec253088bac930ebe36f7835f835f31bc26d8cbea2b03c81ccf2726f18947aed0f045a48df509222d15af8a1dbac292e2c120c87928168c8c69771dfe2563a3176fb90b4a8eea211f16cba7c8c75acb451859134aaed09a10c2082e5aa1e727495e27d346fa781e8bf57f5f4d8d0bb3aee14b0ce314936e31ec1c5ebde216dff0cbadcfb4e121b25876a8c5552f4b9f09eb82176da41da24a646cf4796f274cdeb6862ed1f33b4dc2ba028b9ef90a8b8a9e797b590a97b77da2a797c496374b891caaf01014e7abf7fa0904dedefee2a7c71786def6aa418494276cdbe9f4bc79f4e1c7b2d1b68d246332df62fc3ec65bb8b358e6ddb69de3fe52b53d84382c4c4deafb9331435363c02f206c3b0d8dde3e73436f9781b7ab7ca0b7a786a0b7a3a4a042c7cf22796bbdc93d866e166fee1a0feeaecbc4e05df5f6e99239bcaeb74e5d32a73232b9d592b0968b56eb395f1edd5b8f81b9e3cc16c6c7acc36017f8c3dbd3ace3c72d8b2cb25082de78e08ba97e61aa79983671c807ca108be5793366f1f179014a82852350a3b7bc832f1fa14c1b6965c2e68ba0648132c2f205962d5862c9447ef37168dac42cd3463a99b07922d690273494058a9705d3775dbdd19cdd3770786fc7df37687b1c992d87b76db3901a1d738cdf5169c12a8488381957b79b83777871401d06de711dc6695c3084e84d023c49e8edb58adeb00b915860c0c0a2e3775ce70e8b9b2bc62861c7992e1877512af283c170c98882a92414a6f924b930d4f1c2e860a4b4a4edc6380c0cf50aefc07cf50e06efd8af0e371eb6970b81427af509f070b97b717d07e6dc5f5cef640f97b5ad1fdced7b70b755fbc6fd25ead5617014f2721cb9bacd3b6a203b94a3ad1ff6dc7bd8efa069c799b66a24981475d9a16fb785ad4fcc110719873938cc3c9551e7c9c1991e86391b8ed738bc8bc86e922c86bae2a8ad30d42d0c350ac39c4e922cb63e12e6444c750b43bdc485a9aeb592e8394cb773f596ee78578babe37ae7c2d0e35cdc893b55aa2be66ef1a6da7216676e54431c19af4efc80b7fa0b0cc6e6d1d575ee5d073b2b638762e4b6cd769104a54881a2e93922783487c2a97b78e696888823f2344dc667f2cc67e0c541f554deb28ab652893aaf0db4eb48a4ab6339eed45a4e62b13ff2b354a8f0761ca0fd1a6aed32db21aff5c9d625dead4b9b5bdfcee14bcbc5568c97df2e6f7d72ba0e5e20d86e5c11f92aaf0dae739fd7061747c5ab77b95c32b0ca6c24a9b7932e909845165964f143cab480d06fdfb2ee5a98ead6f7835ebb259279271379d873af7853233a5beb1ad65ab888b481461999dfab23c3833b941fdd2eed71269761f0b6d9fe24f1601cf66d7d7098b92af740f39918186a97b6ae3ca91db243db123c57747dc399db2e0f79178eda0ec918fdbca5b2b31df6797528bc3a15e31e92d0e34c1827a487241ac625dedc61efe24dc00d82caad20344650a7c93e8c644f98e0270789d579726664e096bdea30a78724ba626905f1608e779e1c146e054119491d759e9c2e858d745368021684727c507d418a1772a0bcb17de7a0b75802278478429683332b965534ec5d24c10b8383f119dcc2c13beaa8dc03ea5e9eb3099b873916e390ba2af7e03d9567947984d7a9bc2e92561ebc3a37589f099b306c7f98e8791878fee5899e6f01a4e75749e8790cc52aa1e763f04ccfa3a208e9f99307bc6d87867aac922bb3a2228bc5c991274a90f8c8d89e407a898cdd933ebbb794ce25e17a529e1de2a49e2ff43c878453226d4c45b6ca8f9e9b93e9794b45c66010099ce82c37880443d09b4b62ad582c7ade7215563b6487bea0b71c9d784a646c23925f8f8c6d55b61fbcaec3f65d1c8207a550a14453295424d150200ffb8ee68e07cdddab97516560158612865198935fbd9780e66ea3e6f086337d0fbbee148457f38e38b3f274de2d15d3bb2ed74dc8a8566edbb86ddbb6bceb4fc799b554ba37e85a733bb944084a6f364a39e90621cd86924be4374951a8081120ca6fdd6596f82ee20512753ec6397fdec5f1b7d5300ee3fb8b6faa5f2f17c7912f292c3cfaeada2e3b787fc4fce036bbd9cd6eb69ed65c1ff0d28c8ada5d8fb7873c8d871746baf0f65c9a64c98fe58adb63f0a6357c97873892db6ebfeabe6d8701bfbeeb3412bc405ce74eb1eb11731b8962d7e10562b76d7b7cc503e091248a39edb475d829e620cdad1ff431de83667a1edd4d12c5dce19581c13046c25cc337c4c024fa6d61797b3aa605436fd0f1679d5e1fd747d4dfa3ab66f5796df8bee59def32efc0f0ed140ba9d15b1652a33f0b43f703860ce50723ef2273cb1bcaeff51799caef95ffc36b037e7581b70f1abf8bf747fdf66ec3f5b1db489bfd76e325c0b6dd1f53e3c34b809aa9cdfb78fbe5fd2135be2592319c673dfdb31dc296683b154b24bf17dcc5fb63645ff1bec1069e5310de8fed92f50d6f1efd720e03e134d75d7693446774fd36f37dafd775bdde60f4e63a4cde2c5dafdd8559306f556f73b95c8772d3dfffee1bb490f872f9e3e592f482e3350de63db4fc8271716f5dde1fdc5bda71e42fc369f883c133dcf717c3ed7097f22f18ea4e7ec39dbc3c0a00afa6bd872bdb9057c7757dc4bc152ff3797fc4cb3c5e57cdaed9b60dc3600deb90df94c9f1fba6b5cded74ab1b767937492f186a2e5e1fdbd67a8f2defe0d1f1ea6c05805ae6318fb787ebdae5fde13abc3097c1311bceb873f693bf87c13eb821ef1b46f1206cbbcddbd36ed42f186a895f8e335f707717bc7d28da37e87b3b6489ea0a1791fa470c295e60846d87a8bb6b17480c295e2085ee2eef8f94ee5e8be66b96a9c9a686646a3dd346f579cd67dac01ced474f29d350abf0b42261f3293c89246c1e85e790840949d83c87044f48cf8964c2e6e79c45993670c28ad842e0ed399fc8d8ccc229c16bdda083c86f05b2bae5cdd25c26c2bdfec92cfac6694ee43781e48df9cd1282a739994dbc575cc4eafa6e229936d30a5cd0f33f4c1f96f5d1b308d24ccd0994f8f302bd59d1dbae39d93e37243739de2b26b2bdbea31ca5960a5dd1537332a9e5a610908c6deba3e7e7b6437a7edece6b4fac8f8c953e3f8564acc593d093ced9023741c2caf1bee1229ede4cd85611bf799b8468ab8038b8cf5b2ba08df7f997ad39995980302c90060b386396303d42499826915f4f169adb38aeca232df803d9bc620a277ad21e3d8186f033b59908984c999e34899ee7ea36346d6a6e5044121b78c009268a72e6e11dcd2d7db64f19abc4c871dc7b40cd9d4757bcadaedff0e64193345569c09392842cba9324bbd918449c219368798a370f93f2a07c9857dba1485ef1800ce44c829222e811b48002d4142a8878c2d240041ff8e0a00200256509404200713aa8134b10c110f7062a880a2ba035e8124a80c28829038a074ac8811075060e94b0821248b933a82488b260d2c5c08088ca0a5a5ca823886ad08473716245961d14bdb0586045501276a5022b5860445519614507965ca1a9255550c104556050444061c4141c6a882a62f0b39d485085085010856dd17305234ca80f50118511419b3783a0820742d80ec5012a50f073c488ce23547440083b7fc02284dda8cc824a15436c15850595190ab4d0e205522e5019e2055b98620b466c5362990209289822a930c50e964c21831c2a5ebda2591692ea0428581c200a08344d33010740a06141040736bb55e90057d230880953e08007c90f0e9a50c213131ca1092ab062288a819413cc827880853a85d8112549c2921800118426e4d02b51e0b03ca15a79c2fdc16ab60a2a5d153fc44dc3285504490136b1440f9ea08417341105255288820da450e5091a4051e2822860dd84d036d0232404264ce1e48824a8a850b02205d50a136c40d380d8a258d1810c5889f5093243454430818425ac70e292508c60c51451d0a00849acf8712284099018228a1054c9a942089ea65951475a8785b396d2ae16e144510b9c70851342542704c1033010aa5b15411bc70025906ce108922c2380a20641f4c45f240da3548185deafe1341910577e8085c8092a2c2902116a151a85161aa051689aa6818003dbb9ab21104090822574a0468d1954308523596870050e7ec0841e3688c29520aef0411421967044b2509ed6812022bea0b76ddb368df3509c86414464416fefb606a1668b1d377aa26d1b8a9581232dd022a4a31f56506109132869d2c4903ca2a70676b39cdd6ccf8fb676d3b410af61508f4c6f1a0685800bf6ca889bd139a23b8650410f7e8e10010b41550949f41694b36d55ab1e8ac694f080091c84e00820ac107561045af560db667dc82245951ef82811e463851288d02a1372a0d1f8c1092b307982108030a256c184a013d02ddfa7d3fccab8c984ba09855aad4ef3f3990171c6eaddeb2ba8325d46343d75148e1a67d43b142af51324d22a7a75564046b7ef31ba3d8f36a2afe9f0de5a446a5366409ca17aa7c2187579551ad0289c79d2c159c3f2c25a91fc68de721c89daa179cbbbd10fdede7a625c97df7c2a568d4cef4c77741ef9667b0fafdee1d38eeaadfb7b6fc2dbdaa0ca9b0747d61c011bf736f48d1a16697a4a06df84f1e663a22ebea97ed9607a2ab6debdeecdfbbe5e1bba5b1b54aa5b473fc57cde1a505f7d8e720a0bcfbe3e5e20a7f34080fa9b5babdfd6eaaa77abcc83ee3eca9b077d6f558739bc3e7c9cf2b501f551de417d95775eef8a4cddfd4efafa7acc5f7f97b78b4ce537f3534f99ba5f93e956536749a3ab23f393a9cb36eb9af70f71bee9a66f3ef734efbf3be1cd67eb399d8e23eb65ec2f96f90a6f1ef4ea136a507ef1f218dd2eab4cf7e4d75d85571fe1d4add4309537baa3f0b6c1946d9169f38ecceb0f99bc8b4c7d81b408c0697b9991e9f33b45a69e7fbdebf2def431b7add7fa6bca5b6ad3f1a85bad0ea58d86cadd63ae82a9f21e3d86de24011e51cfbc43d4f6a62253dfcffb43eafa7881b47eefbdc51b45b21d1edd6215fe31cad1e2fa95cc461df615de3efce8f22bef98a3f2d4a9c7a46430d415cbb47e4c350c066f1e740ccdd96ecea28bc8fbc3f6e89b770d7ae7c6ed5b390236f4ae418f2e04ad74afbf711b1d780e94b01bbf38c68656e55d831e652136b44b880dedba56647257bc1ba7938ae6a7cbb88faa775275553b6a9aab54aa77d19a543759140a854aa552a9685aad56ffeb158f649ecaf417c629148f969be2ed6870d4f7dece84bbd9f2138e5e773d193f611a8c4d977748d42c48235f328297fa492bb2d6f358d672423266ca3bead36535994cd65a6b79b4ad1d46f1e85ba46a147ec5ff48e6a5f2e9320e35c69c4c7ef288965c12ee8996b9350f73b473423206a59474caa6496c0a61ab58a4379cd19f69536532272d379a8ca5cadbeba493cdb3fd500361f7304abdd1d74e2c81b2f0eeb79f69036f7df4ecb71e7bcf7dc183bafbde7a6616fff59fda7debe96ee6b0f0b82b3c27bfb9fe542b7850d71fa84f1ff06c3c3673716c601a706e03c318a6da06437dbbdbe9b88501b08169b80e4c737987e8c4388fa8696a941a348b611b5c751c5e1d9ce3c84e95bba8ea54347e7104a090de519d460bd6721eb1078dab3e03439d83371f21202da11421271a5627324643de51d370f90e46b9b9f7fedeca18ecf724199bf9cdb8fed0800380c37933cafb35efefc6f7d6d3e57d2380d3f000e4fa539dd05099c84f9e86ad87ab82b78b543df39a6fcd49cfcc5b2db0cb1bbda346eff8f48eeb1d373b66d821c38e1d87576b8285ec870ac9a2ce298ad5cabc3a375722e985d9135364ad8296b24e1302c0bb239ad0e442d1133e42b4e8ce2717a3e4575bf30b4052a0c062bbdb4436d3310a5a5e2a2183648ceaaa7fe8cf5c5e9d215113f931f39ccf98b98b77d173e580398fa85d186f99e31feff9df8489c41cf51126f2bae99dad2b3daab6b3236b6b3dd56a6db5a395fdeaa7df7f080fbade8487f0a047efecb576159fd078a7ee5822ab558a00a9bc73ea0153b7b8c8d4a8771d26b2c3904ddb0f8959e821b7c84edec1ea9b37255677871d86f0bbbf791bd14420a4b9b988d59104af95d1e1211b93fbb3c3904d6f42401a79baf96c3df517ff85bb5aebada7a3de5d4ce4ded409a370ebc775fd75cd3bcc1e50c7e421db0e53dfbcbb3c64d3a6a7eeaf4d8fd74526f2c3ead17f586d3ace34619863ecfa719dc96fd31318e51a243f7998eb1c581b727deb9900d084b429f28b719a96b7be35215ab4c3d4695da53a8eea32c81954363996f737d3aadfc8bb46aa6e23ef1bd55b30959fea306ce5a7fa0c264d15d6f119386a1a30d432ec1040ed6ab5310bd110b0c0ed8996afb69b2aace334dcd3c05b47b54968f95d67317e642c0097af4c64cc4900de050043af2b22af10280484e4041a1011004cede5b526f2351ae3143d9fae03d7e08ba9e0edadc7745fe35d27ef4da67353f0761c6032bdc663c03e329084b2fd448d8a512856e044dbc81cb931d1520abda51238881419b2e9ee51abf2a6c0d45ddeab7704e8342c3256ef6ba0b4a21da68ef1151eb2e918794791a94def2229068e01fb909fc4698267f38cfce2bdd1716467c23bea7c6f74c0d4d8607d33a8bf3c160cc9435992b515c747efeebddd71e6e817d7c031646691c59ef2ead478570343efd6c0118b4c8de3f1028138de45520d4cb509870a6f4a4652f06cc84fcea847643366d47c46cd2fa658681619aba9e96a67bb2aeb6a3ee3dd0c4c8b6a5e731c5965728e6435dbb8cd31fc1ec21dd7615cb4685c74efeccccc864508d80ed76cbbae7b57bb6aeb0c4c57db7555c6d6da593c22526b3dcc4e77ab612aeeee82797d8539d4b6831975f531ef563227a1958cccea2399d34a8868cac8458bc6858c0c99a835d98d556c9429a4b9711c7923963706f4eaf2465eadb27644c6e8ab73a3958ccc57abd5655632a3d1b7261b8d4699c84ae69a4ce62463f43a8a70c6e9d44895f1ae9246db6993f1ed32e45718429a13cdea32abd5655cb45c5c4626efd65db45a6ffdb4d3faa8f5d35519f05a87dac55bb4b48b566bb5fae8dd6a25ed68b55a65222b6a47ab9526b3a3958c4c1e32f52a4348534fa32c6532567313cdbac0344e8363bc85672e83613f61d76560988fecbb77b6eb5e5cdad78fded59f69f3224ba049ca367e6ae4ed6519b28b1ddd25d0b4b5cb9c377af43a9a6f4faf56dd57799fee22e3c8cfc7e93ba7ec437ef23be40765e46d69f2f6ba77dfae4e5789bc0d6733140a453461f2347cdb0000e046ab6a348eefef2ad5cd6d7e211b35b61e19eb64f866e997a75f34df56bf5e53469b2b7aa2315436e16dc9a4cea68d3c226144d3265681b0fb24fa3e276fab44dfebd9127d8f33bba2ef69c8dbc2fb005ca1ef0150892293784468da34e05e47de37f739f2ae91a2ef71e4fd05e9fb19f2be12fa26a1ef6b86f73779b3f4bd8d26bb8f69b2fb1bf9de86d015fabe46de2cbd03c2eee53527f754f4bd0c79b3a6e87b19f7342d79ef422643d88d39ad70240dece23130cd6770eb302c73173e1d06cb38ceacd9920911aaf7d6b3e1bd4dd91b166d95d8242c164e899635332e4fb18c66d419330ea10dce8c1938a36c8ff490e45e4a2008931fc9bcfb2d815a308cfcba2c4462d1dd6fa689420dcda591e7a0e0c9388d8c5fac4de9a2362463323ebaf676f7ca38cd3b1aac0971563c19df9ad014f9c9ad676473eeb2e95d37af0d10eec87c1e4776b7eb5cbc73b163de75d8be1b5d6c73873704a68c90e67e4300429adb0d31a2edd59b47db21535b17b889f62e064360088434a337e1f2d613b32dd97e264c4260c8a604d26c3ea3dbdfbdf58cbad1c8de51778b47d3e69d7babe7e95e064760ea1690797b9ba1ee46df61ea51dea7936e69586a6879d76d3d29d4b72732b635592a153da00d4ad0dc7e52a8934cc6769d6949d2526a988277880e3e8fa853a8cb3b44e7f44a6ae1a839edaa00acd4ca14d2b88e235db0bc3140945b791bd1309787b95679e126da4fa7bfce9d4e7f7179035a0ed7c406d45f9757e7f53aea959b7019c973b4bc299130b9f59cbec3d4a7d38908ea45ac6e491f5a38429a17cc3b4a3a9d5e4faf4738e3756aa4c2bcaba4d3f692df60beb55a878134afd3ab733ac64d5a4050c7d78e4491893ace3b4cdd44cb1bd072b4771a297aa977dbd5f9e3b521757c797570de7fea9d8691f8e31d0289643299feffd7ce7fbafc5f5765c0fba14e1df5c39cff3f9e513fbd43a11ea50fbabb8c3e5099082ac219f6d488dc416a14918cedda5d9e50719652a93c646a548690e675ca9b47a7cb4db4cb2eef909fb4d1b2e6a4c5c5318ef9b1cc5178fe84577fe1d15b5af73bab4132d665ade809debd04525daa541248f51aadcaa6e3ccd46330be0cfe27467d854f1fe1d771a60cd3a55a068eba1392319acb6b532c0d4dcf84c9d35c5e1d1a551e65920dc939c1db5bcfd633da3eaa18a6dbbaaec3320909457e574b204823ef5bd66e3d9b12d992226d201433f96d491549b47cb20169b9056969bbab3d9112684a3bdbd1e36a1c48c331c1e396e0b1be7d6f3d302f5dbeb88b1e84798785d41c474e39ddbee356599adeadf066e288bc150ede614ebc3890ce15913c3937cb9b774d776fe5d5b91a121993236b4fb7366f17dcb2d7ce93d3715678b5660dc9b1043a610925888b294b258a662e67beca9b357355dedecc47594a11ba42b7fcbe878cbf1eefcd2dec6d8bf317de54bffe7b5b1847c645dede3dcd636486f27bbde52f0cbb0cd6866866b00c0ce3aaf05687c558ad0ecbaaabfa2a6784771149c22d1c4a3db8bc749803733a17d4d6236394ea6ef4d3ef89074834a2eda888b45fe10ba4fbe87e84392a5e4b778b5537ddad05e4f4fbd3a146e1fb6e747bd53b15de7a96e0dd2b919ffc96fa52bd3a8e54c9ab7e31d427bc75543802357af5ae9b32dddde2fdbabe3037b0787e5045de8ce4438f25d2dd7b00ea3ec25b25a44d9dc54248faaa7e711eb2e96dcafb06bdca426af4488535214ada585843a2098db236243f19f3e75da3ffce05e76b48644cde7bef9579eb9d0cd690b4b046a9f0647e447ef232c7912e4cf6f2db1219c397a94399b2a93f8547bff7d66e3daaa3b88ed4bde85e0290348b5ea695291ef738afc82f1a6072431a67da546b3d68655e899f9f9248431dbd1a24bf51140b4509f9c503cc1c4b34615178bbd2a01a25be0ac958c5828eaf53208ea8a3b759d47a5a9d4dd89cb1c70a21e8fad92582271485425045d76c6731caaa686a67dada203bb34151eccc0ac9d8ae5066768a8c4191b16da32ad1644a1b32165b7eaa0f95f361f2b07c885d1c8214416aadb25659abacb5a24e4d3ca85b54e0e9301f603d8ff54fc71e1d5b412c975b41b85f8e27c7be15c4fbf62d1bd9722bc866bff1e4789f4e81d78275c00f28c2db90c87a2df0e64f2cf06ace21df20bf7b9e9c0db772341c84fbbdc441b65b23f7dc2d3662bf954a169f89b759d60621096b3f7c5a81b7024f8706c8587df5e64c7e310887b7219104646c0927b21491b11f198bf50abac91675adb90992e76c997a51f7cc283ace20f9452547a8ccbed66b79f6c86ffaccd73c776a9e3e4a249e3f51f088d09ed9337d640cd65a61142b39f1338a8cc5cff88e36a067899009e58a07c898a723dc319e6a128a8cc5db9dc33067f3289d40d43a2a0d789b6e5108c56c48c37b00589401091cd93212308a95f90488347a24e50924bff8ee871ce599c48dfce277e0c82f4e2020199bb9491232567fa6cd96e79c3f3a2e915ffc9e3d3a7e22899f4964ec42b54a1a3c61c6aa830f24bca85f6b0552821253877acde3f2110a89a41226d033eb1067cd42ba1ca20e132604a525cee10619e309045e853455084acf578ce90d39687455056933dca8a5b36a514ad175d18b5e1c32279c104a9857152f7e9b74cea9a3a358ce6c615e72c6869e29f0e6259572ca7712f7809a083c497ef0438a0cd9b43c05a69679c70fd93e9a77985a6a9e198974f015a5eca846374ba2dca823c9a2eef35e1c8d3e93c86f2a197dc3e83c7ba6921f199bd68e2477e943849e3f1cb76fa48ffc91b12d1f3fe3a58ffcc9f26789cc93c9fc893f9b273311aae78f9e9f4144a8142a61b18a9e730a0c0c0a255bf2267d9221e9f1f9814f68c00a0d9fd080948f1bb54623099fd0804ccfb3706a90363008403032069f3892e5482dda377a6a40412cd11b06c551945c4ba631de5f3c75e791a237ba8293494e3f1e84763ab1f9aba9d9acd53cafb258bfccfbd327233c2a6172b2eeb1a2c827395389257a7ec7a38e271478f13ed35acf9bdebb4e6a4f7e733ed938e04d20f9cddf3cb70d785d1efd0812b247de98513cee5b9262cc12022f5e20f7c728b72c896a39e79c316e5b04693c2051cb160f2cb1f0e210330633c83c9d4c21a419aab72c9a4ea4a7211340c8329d14694fc7b372e6472c2d712c82ad1be879727872e65940c822bb2020d1148a8c6d89444fc8449427d246e6cc4b29721e6e3945cf498ba68dbc5afa481f1873404a2f0e34877aa413115eece44d271336bff2a6941934a5cca019654a614dd8e4eebb9b27153c873a1888a0e73b186ab8bcbdba3ffbe891f2b7b1ac4c287336a3cc2904710cc9180c4a0195d3f4825230f34e56c21c3bd816a438040f3201c5122d9f48a2674e8b4b80a851240863f308f8cde9e42707fec35e0c469f9f4ea694f036a4cf84cd605ac5e3be616a6cc81a78d7b206d10413477e9c0d4ccedcde0c7abe04a3a71319dbf6734f2731cba2696373d48a6ccd70c667998ef7f4fcbf9913f564020a287ade9b53e653093c79923f400d5648e19430ca1769e862fa5079627d61a5eba207730f5584449acd0fe901f57c0fa861032ce9017253faaa03a5dfb20e0f68007cfc8644df79808c45c89a0fd0417e0dd0e101f10192e61b328efce48d0ff9e990838c90488728433109a968791ff49368097ab3f466f5c009bc376158da0c3c789a5b1e4a7eac6fce392d105140189c02c298e0ed28f4c120cc034e3051049798015ed9344eb152e1eaa060cc05fc603076f949f92427d6c0ed31928eafa18b3888bc417ef29372de43829697b1a7b509372802891f5c610749702267cfdb7cfcbd64fe5ef29357ac97231f7d4cf91b660e3ac8d74c1b9e1c9e9c06401c695dbc985bf550ef22f5081256cad728bc5d5373e3c9af24d3f012e21869f86eca6afe517bbc68e0c1c82f5a4da6e13f88436a483b496aa29d4c00ef8f262d7a98f39aa78f9ae6e3505a43292c9a9c942e07f94921abbd006150fb000116200cea891fa7c84fca18cc12e638147314b24271a805ea118818eb61dcb8c318e34d57e11486a8530b93d752ca1b46b979c717c059977754c10d97772ca266cb3b8e805529a5441a0b1aa8f2042c57ac9ca44644043e1ebe762cd252a621865a9369888b44dd236ab800ccf28e2011730e3ac81bf25bd15605af888ced286b80b4f10102264018d4f2528030a8a18dd5511673981e83221051d2180f23e9bed41283244c5e46295abe85654d9b084484c94b2fb7e40d9f28e51d67a0651452def1055ace46794715dcd8bc63115a7ecbbb46cb3b8e404b49f38e4168f92959e0ed28148964cc8b422711787301d2265a913078ed880e30b10429c3924543198b34fc26e91d8b6a141d912256cb5884b7ed2731914d17b1bac5636a78a82fa48952435bc593f7003027032ddccc81e670d9880f3976c2229c112f2f0fa9b54fedd3ce0c31b49f580849c3b33cf9c17c2722bc4da98f47692549bc83d543b62cbe20d3339f4ae069549b9a8c1ac425a95fd14aba83aeebe0a3170fa9ce16c2a327d4b4b849a9693e68590f5f718ca78738c253084f218eafa2c52af28b5083389ee2cab3455aa9a6fda061bedba669dba669186a286344a8b6d226fe440d13b1ba528d6b863062893848c65eb45c32d312d5810e7ed601253acae28c1d2541ac8016cc03e0d1f03d3c81873948c00ce58784164b2a3237928e96ceac53e52b1642a2744ef81f50281716c4210516939679e983e21a200d3cc443363dff6201af5a415fc68644bdc39098054dd58933d7aa1d463c64d3316ff88d36010407340b464328522005cd1a12e72cd22c129c21b182660da1f47348cc421360e21a88f4d644bc7d2a7a4ad1fb66fe06e280443c08050a94d0100a1440d1f2351000e280d0448251b41c640c0a14f868f91aa40dcdc1ac0fce668442c9132dbf43c64e5a6af99b191b5a9e45a4e561646cca4b207307ce5c24054cd0f2a42b5abe5288c5d4d492e694934a3a65a4debb1a4f6f0d3c74c2d83c9452abd19678669c49b075f30069ed241923c90fc659cdcd35fd58f760698ae7c94a251492553a48c3b33d7a9eaa56d7645082c6e70ccf711d9f975364ece6e6f3928a8ce17cde75a3c66b7cca266c02c0ce183ccdb1343747236fb3f64dceb743a7fbba007453a883418281f4225112d0844d2cb3d52599d24b422cddd262356d6169cfd39e77286d6a4f495a7984b1bc7974ec116fb8c4864b681b38be67e0f14da3c737ccc737fe31806f930652c3778c8779dbf88dd7802384c503c110c206802184fdc03eb08eef01d3f13c703c8e1974b439ce8ce11a37deddc0d0b379174937f08f16a21e006113a9d8642170095de3f4026921eac10fba468d2ab367da54a0099baf790c79db19317c2603cd695369661e236f0f3603a093372bf51d795f00797f3979d7e8bfc8fb86f64c1b0d88024d1b4d08869e57cfeb2ef266e5bc3d3c9fb795a14253e7cdd238d885b79eda336d3620d9b499423079b35a797b2f79e6cd624d1a0290b7d500c8323daf03a7b0f06e0e6f6e0eafce4d86f2bb81a386b8cb818fe0f8069e83232311ff023fc33b7a7566a833e0c81960be91378fbe711b787bda068dc56279dbb80cbfc1292cbcf8d86f0ebb7a756eb41b1ca14d8c878dd738cebc8169cc1a353090ae3568d09081461681f78409d0b49147ea6bf2b633f2f6ea63c89b15abd4d3e46deb6766bd8c5c8ba64d64521f236f0b2bfaf266d5a7ea51f5a7fa16f1483d0c79db7a18b3fec5ac7fe5cd7291b797f3acc779db59ff592f331fd303346d68bd2b6f16ccac6fbde4cd4279351f67c2efafa6452ddab288086dc1257c65c724f1899e57b44c62b7ad520a91588048a2271ad8f64adb33f241f2d8505610239996e7ae78350eaf0e8effc88f894e134ec66f68c46c6ee32edf351a8e80f0645ea91746a1508f52ec68646d676d97b7102a357d1d851a9d2cbda70e7f858f7a7da1642ee313efc8641a9b47d3383e0d1968885cbce51dcc5d6098c7e0a83520198369b98bcfb41ee39b6a18ac25d5a1f0bd09cf4ba1247881c4c47cde945bf7a6bf752ff3d45f6efe21f39f52146aa25032f979f79084c6efbdcbc53bfcce924c78d29b4624134e1d6543f77bd47164cbe61f5dcea89b3e4fa793b5f6b75d172d57eb0fef9d31e14c14bed7ae0efe66bfa5bacfcbf08e23a150addd3d26a7b0f064b879a7759b775cbfa656a6f29bf9745dc6e50542e33379d3fcc21e2353f9c1b20d2edee516172ede69a4918b96bc7be83652e782c6858bd31c476a58e47775e263b08bc36b83d48064cc45fe8d39cdbb18ac013989f9d69c3c919fa4713ad2af4bfc89b1f49044a71ef1658e333196fa751c2983e7539bea940d507e1d955aadbd2729d6da7b4f9dc4325359bb3fa2468ad78698f7e98bc6297d347d34ba4a752cfada7bd547d72afa19241613de21ead75f792702a1717afa1f92b4134fa1fcba8b475446a3dbdddb49a9d6d66a6bb52319ef28e985e963cca743f9552aabd5bdb58e467534aa97222445ab3464e2064268139e2a95ea3d4657651edd752abc73d0367578bb2e65f19ed1ab67ade8f794657c84655cc3223f49a38ec79991ea19645c73a201c5e8c8f04e0619ea6c28c9bd3b444de3f002a9b3210f681aa7f7474ad3c83ba8a7dea1f0cee9a9df6befb5f7de9d2aa24ab4012548e911c1501323c8c012dd8df6139464569bf8401792b8403d44d01b125559cf157ac32b4c3c0e28090e143191840a90404417413099c801135214489010444b67032c66427001078130ab3326a244a12463c289218a5e5a8a6085202058d28f1410c880869c20aa42517ca21c71858e6454f880a88aaa488a1b4cc1b520c2c2123a00816c7b119a8205083b188a82045454842400356184102c2713cac08f1011411b05fa4111134018c10c5ac01092c288190ca858aee709a2256c10842368665024f981520326db260b0213a120fc60a88851255a220a294c016268049a10133738020a1598663d45081d81064348462e88e8cf112422268430042db46009c92226685004b4c41054b01588e8092d743f3770e2095b8b6ccaa480623683245570970868f6645434eb4124919a488aa3de37f5373a942852e9f807b06633262c38050ec9d986445d4f1084f48657b44a5932e6c958bc915fbcd121632c981b1d7ddce8d8241429caa2152d3f3697b9e632b782742fdef1e4c8bf722bc8eb300e231b81c1930363b11c4398c19c2d7e8250700501646c11491142902624450852e0ed313557457e154a9d51598d28b668da483993c972228dc764783c8744c660783c9744c6663c9eeb91b1181ecf2991319ac7733e321ebfc7734c3827dc1319f31ecf01c9d8e9f15c1232367a3c0745c65a3c9e53829bc9587e3c17c445e1f0e3b92932f6c773431c1519433d9e2392b1d2e3b92a9c15c95d91b196c7734592c322b92cdc48363a2263adc78f908c92c8d8cbe3473d232532e6f2f891cf68c9e807e2d07ee336b7716ba5761b29c88823aa163f4fe02c620b32228aedfe903618c39cae9234ef0895715570fc621af8e9f88669c04fc7257e41988ebbe0c34fc75918067e3afe8259f0d3f11446c14fc75bd8839f8ec36012fc74dc852dfc747c8529fc749c8421fc74bc2240e738d5f20ca4d1717a79cce81c0bd03972e4c891e3b425c26f86ebc0bb6240dfe468c910d2cca003efa867780ebc79f4cde9d5b9798703471d83e307e0472f822afca0fae6dd06a32ce1c831c90c78c70f68fa1bbc7dc04244023f7a148e47e0472f83a30c7ef4c746e0478f310ff0a3e770112801f8d1bbc042e0479ff103e0476f7103a00ef0a31fe105c08fde06d70061f4314c7f03eb80307a1b1842d809dfc08fdec336e0475f03cf40183d0c7ff0a38f815ff0a3ff646018f8d1cf6016fce869300a7ef431600f7ef43330097ef430600b3f7a1930851f3d8d2448e29128bb220b96a22b56b4560512412a3c49787aefb8b161f50ef2bd0ec34279241e9607d55a1ea24d5a738537cc94c08286383da4169a40cc4c9b101040400051a4b7c592b32d9d5168ce260c0c736ae8acdfd0650132d672c93ca47679c08ea85539458cd440a4e36f70d12ad14d828e53e8f818bd7a8d084f1ec6379cbd3cbedce5e5e59b35db5a290b03733d13366130af50e6bfca9be5cadb9b9aa532f9edd44f2c7916cd2be4d7c95aabca0a454ce46047a447204dacb9893c7db75d1d6a6d909d4d1b9971e8277d0db64213160f03c3223c8a258bceacdae7a715f9697916d539b1c81bf30a7923c2e0cdf9e888655b2b44a89e56e695896566a957e8787ae44adbcaa92c8582e0812fa45e3a4dd358453e74ea7c77f99c73ceef140b9956e63c82c4669ff04effbeed09cba08d1419999b87573662c5872580b49069459f96b0a2bfc3cb43067dba0cfa943a8eec4eb8e51a89a451ba61f80b06645a4666e23dadb0a8d0f3530a3d34043d3f7d009b0071a03e4ba559c90372b22709f4fc1401cc51128a3394c818e9f3d3672e993d1087f639e76969684e9b92934b24147394a6d0b466cc7c5b1930a1979d592a9a4aa515615682221549bb332aaf1798e6742f2c1fef0168ce8b9764d3a6343423c7709adce2051ef55c289026bee4e4f19768dadcd9844d89392e9538237e267b795b3b9aa2a32e0d4d9b3a47a5d261a5c39450237c99c8af544a82e4c8ecae7bde5da44bd29d4d9b92ec52d9dedc77a663e952698d2eff8a51bd4ed16262b42766430cc5a8864a54bcef0a2506ec758a17238637857e4af02406cceb5e1a8a9e9739d54b49283dbe34052c59014b4c8031d5e34b43314769f66f4f5b997602a870a94a89a84445966431078433f2e3f381c8cac40bf2bacc469ee0b5b876718839a39e098b9789fc4a25242519a4892f0d95b0cc5a64252a252219cbd282a425498b12690387302b5519e20a1d5fb2326de4142733a12832b64b53848264ac7a41c797a4c858edc2f6e286840a6f97642519c4015dd045faf6b48ba55dbf44d1ea559e242750fcf8f8949c103d91b16885e912f5985acba52148136f7f501ad296447104aa4ccbc41958294117857a2e11111754158a0a4ae911e28a8aa4fd985a4b55a7c8d82ec93495aa2a31ab43d54abd8245da40210041278600d2f1358a8aa49564a5233256b3e878d95204af4219c5788c5e55a2cebc23489054b942f181a79d94515bbbea2fa86f954abbeaaa938e23af95ebd2e32154419855aabc4b257cad5c22f955915fd4416b318fbf509b486f716be0d124222ba45249e6910e61602a94516968c2f2b69c779dc81bf1de9dc9988bc7fbd302e317dfd3ca0bf9174f4e1c9a0959d135e7458e4213f6f289bf930cde18906918ae5d9d2f436f7e9b5674fd76815c80075c40824cc3f097b7582155566ba544413e43413e4330e00d2a81122ba220229e488dce22218dea885a903a64ec83dff64f0f31a20105c5136442a967d6248a46678feb213ce8bb437e385378f71b7d81e5a9f6e214090feaebe9c2f26a15828966653b7b915df2b697f5c23087e5a2d200ebf0feb8be48cc7b4df135c63bbac09b12654c249a4ab8f4041dbfb23322f1787bf7898e8761cdc99aaccfc962b11eaf0e8bf402bf30cce992d0ae535113479e50212a22c24f13478a706c41c7d719bdd6fabc3a3015ca7d4ae2d60b066455f6046fc7213d6165e2c1aae84989f48c4255a65d5e2a953212586185d72d210320e8c48f13422ca974e2703a3eb6e65fe70922ffca46720c6106b31c79cd3b8204b551e48d0a457e1b6d6d67b5b6bb7ceef081338567a3cce417c59b9f39b69ec29bbea54485223f293caa12aff875aaed6c5a3bb539f18cfc220442132b90e574d1abe1862478315ab5a0e3170071c0250cd163e28839663e11c1dbb6670a1bf28b9f72566dcea9bd7c6a2f2f73dba20ba52ef39dbcddd43e719d756a95876d5e915f9d3c5abd86efd47999710426aa77e43147d4f1db0e8d5eb815e47579998d402b62704496f33a4f8ecbdd3ecfda0ef33d7f7385223f5c95d83ebf337375c95589f84b246350ea2c55422263acbce75d1eff92fa76b9f6ce05cb27defcf52ec974fcd6a17444c6eee34bb2121219c3d7106af3ded2915b4222bf58920d956428d42b14d661b499fca29067b3c4a839998cc93ccaef67b1a61516ea70b632ebb258d5f4d30329ac3bebacc61c9c69332361a947abc30bd22999fa7eeafbd3abbbdecd6d9bdeac074e366d4625e87838374cdab4b96d539680b26cdadc7716a332785e463d6f13792993c9f49cc9d8cc519ae6a6cd6d9b9b36af68d65badd6b66ddb79b4a6b9e04dd22e1b8639bc138695848716a667e1fa98bc6d0beb935fea2ebce1904e3d5e03cc1c993f61a9d4a6a5b2ebd345d24326eddad6cd3ca4be91685ac172897820e56e5a85620567878cd52c94860c30733e3467696862fb15e6cebddc880f4870ef5e7009ef195dfa2c92b196bce3ddb44aa55821f9c5bfbc74f06e59c3f333dba07ddb26ebf0ae5eefbdb5debaca3bc26b43a76b9e73ce89332b9ebfb8654e0db3bee1fa88a4b21e83607d5e91b17a162b438f2e61e1ba6da9a8446f7189dee6a79598446f7917a92f70875f184e986b473daf6d7a4e2bf3b266a5327ac5cc22b1688f48620ea8b53cafc86fb2bee715976b9b958b48cdba363fba3ca2be30aee52d73d58b6b79c7bcf40ac595b27991edaccba90c27cc24339cb0bb4824ade52d849492afe74368d3ddc521c4ef3084b054ea2db7b3d66354a25b47e56d35ea312ed12d9c7764a25b47a58e3a29a7b0f064b210926ec11c95372de114165e4c2e5275eb2d2e3d76b653ddca3b302d92deaefa1642d2acabf276d27791aa5927e51d93543d537987f5d65d5c5c9e3a2bef6caf7a5e1baadea6cb5379cf2bda25c720e20c8dbaf0b644248a61378368edf3333c660466f4ce26d444ba9c5e9d391f5f56084a1797779564852c161983b07c162be502ab9e31e9154a74f9bcce180a8b55a1cccb63fbcc568373db293a5e854978db2c9ae491bee518838839e6156d059362b9ec68b7beb45c2ad5ca05d34abdb0aa8b9649bb74524b8be99592482d2df05a7cc858ea31759854cc533806e6a96fabf15187f49f79cb1c05a37dfb6c395da53e5f5e4ef10ea269cd2dd6eb865bacbb7cd3344d6bb1b20fe8f27b1a44b7a878babce62d6466ce4c3ce79cd4c5e5946a1a7ed9481a7ed1fe926fa279a77597bcb33a9d69e5995b4e33ce4526cdfb99cae42253c3dc95fa848149513a53f5534bf5b0915258ea9af376bdc8d4a91817caa5fabceb5d0afb905fbc0be388c04b9d47ea38f25e05b5d71d44bba8e69cac99370fc59352eaf20daf0e65ace592c17636b14c4cde9e0ba6b5b16666b4ea242defa87e55f96e213317488b76556da92e78cf68972074fe057ff465b65ede7aa1add6cb7c992e3a5df930f905d3b72ce92fb097bc5d4e3ace74c1426682e8ed2c4dcb3bb5a5d65aebea1ad63b1afdc43b889ea758d3b4efeda757275b163233a35727adf2e6d12e6e790a43edc3159af4167807d1a4e3f89031530c3eb052856ee966f40e31f8c00a15baa5e59e66045dc233a43c9bcd186f89e467042c7446eb791188093fe89a67f33319933ade0615d92ba44d67a5c818646207481e651201e96dade848ead9c113d10ae9185fe9c45d17a643a804ab95ec833dcd31a66644000000009314002030140c878482f19040cc521047fd14800d8fb458684a1789498ec39031c8180080010000000008c00c613806eeb3709aaf77b9e45f66b7a0f7a255b4091410448cc692c7d46bb087f7381ea693960fa57972a31737c17d7acd83c74093ee4e3f5cc34395de30eb5109be624f9d986d68989cd02bb893c48696381b8a49bdc8dce143890ca5efce949c95924f07135dbd9a71db4d8d14736eaa5b4cf5c2f159aeed95dd8d23558b53c0e4defdc02c9021f4210a119e696f7ae2d3358e40cf4c1c8780694f2356f7ce91f0305bef2d971b9709c6dffce6740898f4b68bce1d31c2ddd5cd45b68b98eb51fb5c529114fb4ff4c0dc1f78e90dd62d304f4f33299b3f807493e806ccf4acfc8e49dd1df16c92b921a6e86ddf4ef0175a7a277c092314284c7b2a893e196310ce26c5848d29bd75017b92cae77324a083592f55b4c50604c96d98ea11fb68be082bf5995e1cf29840cf9deb8ca00ff5a5bcd73f5f2f3389525d72131f720a7498d4db37f9677da5b86366cbed98f43eb069c8e773644081592f68452e8d9a497403667a3608286ec2a58b71180aa6bdb28d703952c39ff8589ee998016f853cbee05c3f048dfd0533e483c2b8dd486e86e409cb0c1d77c6275a703b77e6097f040b1665c7ff63baf3b72ea4b855bd07208005c440100efa7f1ea5581d635c26cf1a7ec490521ed924b3690cc43c1e47bea5d625ca0b46996af9f7fedadef62574c42784379e96f6198b2f107dcdb94635ea308a0c802b50d8c2269528cc401cf0a863335d7217285b3be42c731f72735a1964974da8f2a13df7b7f5a94117fa211cb566c07dc986a6a1479e74ec73a2b727419004af9ae6d699cc6101a7a2e07a0145857c237b0bc904924c5089950c27ffeb44bc9d567e96fdc6ff33816d1f8f355bdf4fed92efeb0471751d0629cf7617ff81fbce0f35ff45690bde00c560fcb89b9aaae870b60f3fa3500686cdba0ea6e6150f96e66988cdd69e91c8f0b37fe631f30659c690f450a1d52f36f2c6c1528437f0e1291a17b0ead8a9e1f8458663502b531bedc57e5b3dafe14248739ed195021a0a09c7bd338742d8c2c7e12dee878a18b26854f1a28eb536713b9f1d0038788ca9ae2bdb951d1b81c4add629566d5e92709cf1bc9661902dc410426c94eece9ae9b0d0887a2177fab9d02da97d7a6ee78877bde5c174a327d7347452937e11ab3a88da61344d6a5234c144a1218df17585cb04a50817eb3a981ee367ea1589b8f85f603f985eb4c2ccfdf6b7e3fd73d4fcc9bfe4f5bb172777aff8259e7e568f337e3df20945c2b780660e9b031ec3366789918a1365f568ac1e808a7d833d3b2039588c53eda04da3044994de022a5d745329dc0d4a54e06c9a487f47fbb2d0794881d1d272d28725c8f86d686db6a7d236113033430de876ab576bdef80ea8cd8f2e6b4121f93cdc2cfab954e24c699443701e7ff47a2289b984303da663fe861a7a40b51b83a23982ba544ffe88feac722b6ee8c96686fd05a00480daf9b442f3a4ee1d6788c1084f17b406b71eba26c391c3545da43963a03eae254a304c4d3bcd33029b62fcd0ab91afe6267fef9351994f774ce66899f773d286bf0e0d2d5a52e91e2e80a9a13f08cb496dc2fd696d2533b6f579050927b73cb4d85579ec083d892c8d853407d698467ccc3ec9de8c6770dffb7644dc74634d5e940025916b0339d2e80032a8d3bdbe03e658a7cf6f7087e6c725dca9d6b57701781ce6230588fbbffdd0ffb5a17c31882078ae805136b860ef20dbdb7c1eb999925eeb2605e8ec1ad7fe0afbaf1ad0c3c20698526eeb5216d823aa0cce3946b7d75fc2805d304b4df57761672af25fd749088f64bb1494bf849929b8c7a3ae4e02b373fe97ad340b54a3e7aa03fb47b606526ba395025780e64f4d0b4cc902071293a0036ccf504e97095696cdf59f839ee9a1e1bff9439c4e0a1db8f9f16a23ada698aa194ccdf5940486032171c2b5ac73b2caa63909e834bbd5089e49a53374254449809daa7f7bfc4f9c48fcfebb2756dc899c9152fab689645d78e836978be120011e860869d2cc2b169b86ec046689a2d2a7decdf90b014e3cdd0dfc8721b7f5587ba1488653b266a96c52b1999e0fd9c0f4c4ea63c316a841ade5c9d8ee40edba2a2aa8a77a11559ca6fdab904259d265735c3a77d032b7d9bdc5c807238bf56528b87b90b120df9a4f60420d4d86b0a50b5449e9eda447d34557baa896ae087222f1dc89f4c1a70d18d191bc16bb320dfa0d37e74d5ce094bc59d1da76abae16af06877e3c858a77aa41fba6598914d54612e100a460059896e0fdd46a0920f938e0288b9c0824fc7365747c3ac102600867a5e3484c8e2d788b9a25d3a77912e912b48697d97445e70bb46d2b88238d1d30e49178b6adcb0e75bbf66a14e7792859dfd5bba66107fc44034d65f393d65867fc649c1516e6caf180e7780551f55a44d0262b77c5b1b21b4c597b89853b657e54f575e241d674fa6a22f569ca41d9220c6cf4cbb7f402f319e4b0919048055978600980f87190036f298113196a1cdc896bf54734b53358f8f71100aca335bfc6fc24d5b1dadc47585f199ea281d4f1e038d26767290531f462daced957f92a8463b98abf4769642350d07c103dde3a4ae25e75876bfd204c2354d36913427928e824e4a5f0325ceff188ad0a76798bbe570c32de455a7cfca728a15b0b732d5850fa17c40c31aa3ac120d206a7cd9968e53b64e3c1c37de3a4c6430ef34012e237e29a3abb77f29affa3fbe9b77cbbc6bc7c4ded28dd98ed8c7c27a8a6005bad81ad8ae0132cb51665495ccc5773f0a5770c6598e20133d6f37e7f2d08e60fe0ffc777619109d907c33b7618718a4b0946afe17b85a5437c323f6d712bc3a9233cced02a0150b2a6dcbe97b513ecc8004a24fd751568fcea2209632fd0becd1ac3e2a3d836d0e6e80c11ca6d9c1fce141e92e323840d5ca39d9b888d42ebc40b202acc2b7239f0fa84549b7b5786b0a4ef1acf7b111d6838ad57eab2c09913e2cf168aa0a915ba5d41bf2040c3cd66925f4113450942016cbea59bafe9d8269701146929db2e641e9e9b0acf7981f37827a8c5f0d4fd05465ee2380bb920ccff515ae50e361ddef5f81f61504c1d87f8c783a1c436a54f4314d31f880441d15a587c8ec8f564b031877f79df43d42d5123be2af74c5fb9f91fc520674144dac54c936e346c2202b9df3c201c361b206773b0a1103f9cf42c2d758df75157da8f805b8009e3ac0a8dd5080be57f10299871309a3cda33197dc26cc1262144a955380650d49a84a93f6deed610a6b4b261c2c2f252c7d29f6671eb876d43dc328f1166c59ac5ae64c8e9045129bc8ef421a7d19ad5831d2435e19c6bcee778b1594dbfdafb5f8193b17d961a0985b3373db4adeba72f8160422e3a76904c63ff4fc6b9cdaa6648f891ded9d48400555639b1478c4e46b51561886ac78de4bf2e6ac08a2bff7fa2073c9e85611e36e93364a5f0d92b9193fe9479c6c5c2680d414a4b20cc2a28c1f5b48c5bd859ddec654103f0bae699e82c40bacebb43c9da69fea3cd0a2e10fed99769793b6118723f2460458da31bd21250b04c2efafc93917d08ad4a944dfac42cb7ae40336b2d56c3c43719ca3194e3128310734361b616d1a755cfdf5f26b483d0682822d56884dd64a8678073cd27494ea8ab2fe8c217aef42f250dbd42bf4e6e27a854c3038b57478a4568a14ef8cc6c284ab20fb9c2975b848c884c3b928d766508a39931910fef7e5ebd4992f3d0d96f6e7f5e04f3abe855ec6c10b5057d959f749026e9e8097fea75db61bb4466b62b844590d417ed8f5026fe0e7021470e273b67c5dbc94cb993287aab4486f1395082607a0b762133d921f09110cf084c1362c42a47bdb1cca47c35f3bf96f10da48142feb0d207d04da488bc53a7ab5ad06abe135a9a7977efd664f1c5b072c5a60f53780a59516e7cf68064e9eef03316c659319a9199609681840ec82a7241bc911dd991a4031f5f03b99217108f52beb85cca145f8e10e4962bb65c788dd2d2d64da62c5ebbbea2d5d09f54c81fc94d08df7cf5515407913499ee4823582957f699331371b003cf6fa953389080e23d808219edaf400a7ed1bd04cd3b9e40a1928685056575515340682b5153743fe05eefd432896934338910e9af8fad1b41c4304d7137297acb35530daf9b9394a5100297bfc8b2b8439e25405015ff2b8b58fbfcedc935bc851dd866b94e4a4d3dba45920a72eaaa566389144caf43c05b541ccf87a5c8a959011247e5ca45337c16a460dfe0a73dc0a6b07e604094de5c01f134b1746d1f1be189825b4ded56f66ebb570b5741f090a97c77a21d04ef39f81d631e62d3e1f4d05074ffc6ab53a8da15ec0f0733c574a3b23b7073559f14d1334370c3b6462558dcd414c9f4a7288619f886c18429b8de355207d817d5bcc657c97c2c21a6ae10f08209e3d795e716c346588434b3d0402847a38b9a86cddaa7afb25d40fa5d05cd328dd69bb2941d93f5d84010071f6c0a1d5e85444d8039983823b34607d4b9ab04a5f7a310ef5d2baa134fccd18c476568cce1068d6433c55f72a8976bcc29f4614415d14d21525ad42348ff35b128b1690fb709c7ab04adfe9385d905f566d40018c50d30665dac701b89c51ea9cc90f24207c1886b85d389f0e3f51cf5da6c3c33b0ffd958012cbec90b4dacbc675d885645e354251712582045dc559f0f40121b8e5733048516e72f1cefb35718ce30a25e5aac342723f74ddfbe912419524d1956708e2de7cf4c6489c5b10ad9baf7c0b64668e6e549c42eecc886e9565fda492994c70a8b3b20d98d34a6acd0a1bbb1742d7decdad2a364ceb9d8010b23e1ee6a10f54251dc0685fa8b54fef11ac9c9a04d9c72151a4bbdb0f32eb794274ab992afc66aeb06574577b120d481d6c7330c4932ee66b7c3132b41cd6d9e87a0d9ccf14456740c3dfb211be660f0a195b31dd65a1dfd8710e79c1f28646f06b65acd896630e40e16bdf9ab2c9027beaa0663d88943013af293ffff39a60978514fece3803c41e4b30b2483a2e679382d0c890461fd78c8bbd982130c24c2d550d756a69c481d469e260e24118c749aa0113448a47b0fa7fd42114b0b44a98a44bd293962233c0742343171b47e6189878b0b3a413c618fadf4f3c6ad49c642d98be16299c359b044ccf819a0ad609ebbdb30c04a79eb8e87cb36ad8e33287bdee5611fc54e40744c1ba6b04faaeabc79177c60ea4744d10377cd686709403a61dba06c5f2ae7bdc9e7f5a0b16936797a640d158c7d76e180427d8784cdc11fcc378a17601bb157c4c2619e51e1a87ad80f0a6e1bd7e1dc16512a3730f045482f4ca9e812ba28c740b3b5e7ac69a45f80daa8ebb7a16f3745cd0fda5c23952d9f4bb3a4a1637be8412d6cad4e5be895197f6480ae44e68210913377958b657a79b75c7acb3e6d49fb92411cd91da5d1522485a78730ac0e6661d9e868418fc93feffca101de3e598e142963c14315caaef7a9842544b9f822c1db89a4960cfdac8ab27a2b5465135f1b78cf7e3300b034a5f3be96abb5415070bb999424ab4587fd38b6f63c69736fb9fa10104646b364be7981f56d0d300b58bccf827e3cfe6d06c5480cef9f7d0d5422884a8e5a817b7d203d679ad1fb9baa2d57a260294bd226efe899975357acf9261b5e0a8296d4417e6ab2582aed484cf4316d2c7c4e0c7c30e7dcd1de9318a3f5c8ea65800d6fa1dce5b6634cc34752954dabdecc28c4739a45c4e58c0845242954ffd071dfe7be5e75e44a74209c71d69f0d8317fbbeb9dd900e6c0095b23e9a7b6a063c2a6d190b884b717d88df1ed8975beebd7677145602eb80f1f44a6dd0f6f51e30a36c4d79fc2b512366883d65a5353ad11d3645e12c895968b36e9a8b53a5e83af5454e6a212929e91c15b48cb0d10ece568457aecd97657616d67be324e1e7d2fbc1a0b30760e161121f504d452306a28d17b41921e60cd6a1bf5bb3e19404815974b8a87ac235c08eef3f09c6a5472f6f09b8debb3e555b729de23b047c5f8b3f8190daceb6e62a683bcd134bb36ba81b80cee751d0b486c6eacd0d68c33a7724e6fc0f0a566c3faa0dd835aba418d9e76e2ded341a11102a1c43508fbc9896568608d620488a6ed69e81b21933c15a628523344e719f64e5061aac0885b3e4061b98bd25a2dcc02e516a24c6be5d3cd087c5dd4a44fc76d14654c01f205e110273bb86c51a27aef36b48a2b49d23f80c00c0db93da47b942ada008ff121fda0b255fc49c5a41ec1a79c077a482c35b6f7edce3d89b195474e633baa6e086038924590c060c69a308fb33c7d5272026ba5ebfc7c916f9fc939e9642b8bf656a5af892309bebb01b8a26d9104408f2d2c8aaff73c77979dad770b24ba1fb73a89a2235dc8d613d3d54b76199e2a1be5bde0feca9fa6bf68b935d43e83fc8ae25ea70448cc9c7b1ff865b4cef200812ac56ae947ef3534a00b2ecaab21bda45d0c031233b06127151ed1c0f289be03253655b4a44882ad27356b7c468cdad0678cc1f7c27098b4242c32967f62b500b28dc1be2c0912d8ebc1579f54f449e7b85cade6ae585973f8de8592f29464058708eb78dce7549079d6e4322d4ec4a7fa1ea26a5669709d24a6d88af7c76933635751258842ce7053a612cf17a3ceccd8fb6590d38446506ad154059df75b5c29ea605dab8133ff30440ee9484fa875ba656441b3cac9d6e5226a7fa47deca2ee490b3d0b3fdfa23407b18810bc5dae1558548c197cadbc68e987c940d4f694f275a685ac6878a466d892fccdb763511574e58461b3da1cde34b2e058327ec209d1def77efd867562fb1b5bebd959e351b1574072222bb400104a3810567bcdbecc4d53a19032db5ec048e9ecaaf9178310d91a3533d4bdcaa830de7311389251744292966974842c990756fd22e921f36f7949282322ed0a9f3585e01fb3d13d59cdaa5e8032d058aa452eb4904a442cef6356efe1a3556245c69cf2310aad7b7a8608778090f1043c0e96a90c1486d16c1edd600ba192fd0eb714853eb39e49b7a2909c09ddde543b3093fa442c00fb3bc44d09f500a1604bace34d05ce26e8096391922e5af0b3adbe19bd9f393441fcdda5b8330804a44cba1a3a151816eff2c6e552a992408d35d7b92ca12b9f3938488fdb3ad48853e8a95b45e416f9c690a4e1416c49c7517270d9bf426b03ecd43510a9992c48a523e3180cd951f805f85da7a890ad7e16f26ef017a3f5cde76fde9c81030fb9961f009bdb79241de9c0a648573641f1edd85c512a516add3e3c4f2cd5eb5693cff1190c6661e55cced6ad2814d745cf678d70a31b7ebbab5c87dcffc54f92b8ef6a136b0f74d0a71b7cbd4a8832e6413badf82e66ed70f80d8a9e21193ad1e598aa42ac8be1a765a4705044345a6798f6983ecf4c4ddaecb178c931f8640086754340de573b72b0d597a9c642e08a9101c6ab8f0e961e7eb187d3bd9713e35370e74bc00e96bd23ccceedb3a1877bbb23b0588cdf7a61a55b126383b2a18c7ed0d3e5524352c3611e3655d72a64bd0bda4c0f429ce0f79e7568efea2a98276812908c15c959609227ad7e6320d109025f4613019149065154a60f63a255f881b480198bd4da39f0c26f72a3eddb95d05b53489bd0584921fbc9ebc65d3c0b48232f3971764d1cfd59901a0d1862426809172e89cc434915529238ff50cc9bcaa1b2d93c36bce22c6e921332835e6426b62ba158689e7ea69344b94f27b9b5ef252e6e9c2119764c54d803dc4cb2a913fe26ac0290e880fe95c02465f08fe6d70920dd8fab56a0de19fcb9e9364ef04a491ef33cde38f0b1e02b1e73001d8a640b13d9410ee3abbf3bfad0b20833b945c6368cfd1507e54ea8e071721fa4c260296ffe76d874f83703ffddd0ae37f990a2e542ef5290fce4e883e7220f73cbc6b941fc4b19dbb6dbf61cb867d66da464c146b90f3b1b9dd0a249a2214bf06b52be712ebb800ba76eeca1edb7abea8b3e5aef06395ae78a797618c1c05f567db1e3b7731251be90dd80ef6ecdc6568a1d10013d91e3b59dab98b5379ee1c6a5ca19667f05e80c4ef40369694624fb3087400b8b18cd761129619e9508ceda7a3580de7ae88c02703f2d4c6970bd84e2e91996aef66ebbda456c5be59e3623fd9552dd6a299ef769ad994228ba681aee3431ecd4c3488970e8c8d7f197d6986f87a72f652365cf22b297ab7a0793e12b3753d64686c9e971c3e9b31014afbcb8190151a817896f7e8195d1cf43997f157b05e900ba340823aa0d71b8fbf06715149d5a2b790da02c16d9f181370beec1d2e4cdfd93b467054851a8c55b5355ce7e0931bdd876007506e447f845d72f3a751b4240c307e3f7c753914e65fb118903f252d40b1e208426620eb0089ea1396cf41dc5f82a7a8f33839401206ff7e8c3e7734ffde0064e51f42ce01cf051ecae7706349325342346bba6c1476c6876eab0eaa21c907a628eaf26635dcc337069f65d03b75c2d414923a641d4f7903e5d03a00c9a3543c6fb5eb63cb96d8809d8b46bf7d1302697267055c3f485c257463b307e8055aafdc405794f086e2b1f134c10d14f3eacaeec8af171f670834106e440ca72603a14b45462e9672f63068ae6ef6dbe6bad499989acd7b358948734af58c24daca63de530613069ef8bb91cdb96221f2401f62d7a8400923c4a7b8e4428cef169f71220293ffba231ab1894e43d32ae37f2c08f756911e90d4c0912f5559c63e7801b1007b3b416057a53e5825e41fc4fc33cba3763ae80f4fbcf9752a461a0a6b2a3a1260e0a0f189101220b783007fa4660834fca200a939aae07c5e27a0e68714fdc83f92404f9a9f69a043f67a9ab53063a999be1e9b08e897e0f9245d4750591a856581d906bb5c173eb8d941fb90e2b58b3f233526fb844498488cb871af70b346abda0e7c0f526a7d192c88944a641a84df5d71bb295769a7377932c469896d90d6018c769c5c631428124dda1aee5bc848f324c28cee98755d5036d7c96a2790a090cb541892a920c707a654525d13939129b804dcc49a201707f06c4dd047acc13a281fa319bc41e593301689d971b1cfe006f070f043697ad2316acb6fbc4aba4d84b86f0f3bfacd2924ae442416152d1713160e3f8530713dad1a19b56b1f9e57e14e4e77a5ebf7f322167f20c44367dae998272830023883673ff60a5f120de6a18b401d4c7e0c610fb5ce7c2eaad93a9951563f3ef36ab6d6881c584cf5998c07541321f08d87d6a2b59c35bea3dfbfbf51fab4c69a944f0ef8798f0732311a9143d7ab98eaf7d013065b4f0c7fa72ab810f72b61da517bb196d56503cec18c8c436dfd21e2a85292382a3e9e2be0c22344d39e6fafbaae4c88b07a9e3b2b8552623d25b15c61575fa96c60dda9081c8bae93d6be05b87c9346f48966a633e5a5af2f07cefd2710fee88602f0e451f8c6fd7ca16286d4c870a275e4b3685f1eb8dba234026a3a6fb8ce1af546073bc4641053dc99482f930171c1aaf07cd72318644bfc64dec9e6910e2b4d4f46984d73b9711746cfb75bef5c138bf245f5e2d5431b0fcf14494d4c04cde20d461a736a6354ca30e327d6db50175394f5acf92d6d565e1a29cfa75685b947025c4d48d5d67348523e624ddd0cb86df1af9537470f4dd236f0cd500f1b2da991594415ce8ea757b2cef06304d99bc8465b698a7f10f35900f131ce5b7303549d75aff79a303254df04e05f9216e557c6b7d1b4b65c532763487424f917b2182a4ff24b4e0af24534b3fe08fb178fd4d9dad1d845e343839ae51b7656e0cdba19d4e18e45f0860a6d3483c0c3b3156855102d4ac9befa4909963810d78aa4a59a9c2a77226cf2bd5fe2db3577478c2fa39b63589471e172044482e35d113f9722cf11e656e2f3de920c94a2cff2f97acfd635d8dec980744f06512a7e4750c45ae7ca82977833aa614f8b456efe4d7024ba131ca7b1ec9e95f077ae007c9c78e0d1f5f776cf8f40d953fd995554f79fc03337a5d8dead0e696561e71756e436dbdca0e8d8be3d561830afefa2260f2afa8eda2db7131859d6b078f1e41f4c3011bd41b2b3379f316c0114e97fb58f6f4fe47a5ff420805fd4f286e712efa93c2f6b7f4f6871e813122389e1a32c1b2bf8d8e1c158a7f2babc0660edb7eeef588fb31c85d93511d5b937682b88e5875a6e87a832b0ad417be51a367d1b4cc13af0851d5b6d6f8034d08cd2855996a2121ca8b7a8faae8f60210c34df02014b9fe7300758f1a1aa56a143d66c9ed218faaa19a0ddfadde82270fdb00ffb90af543b1b6c4da061409e77da2b515b85eaceeaf47c92c54fa400e23c6a4b4bf75696f92aedb272a59d90ad3752d86b68513a99c69fb7bc91c8c84984d8c25b897e7abfe59a2e95a1c825f894f5fca41319e55c26461b5143d76673645136746e9bef187877a6c04ce1940d6e13e4d065fca3c065c12f1ba5d3c0eb29ce10dd61f18a0482578b312cd3ef357e8b1493418de1bd93b10e1854f0fa6b16cee5487524e672353fce80a2eba24e1808c9d18149f2ee89dedaef50343da71b66ed52c4636015040c70839c7e3d0264a828ef0345c6128bc8e07871c4a296a2457dc10886d1d6e6b0fc835e799cda0db4f18818308b1f5f7362847d3422de78a07ece6e5f8d6d82abb7e60617e84e73dda43d21dbe614c19e50bd168a38fa4db0c419f76fb1a6c48f1bb8d90e227cfd52089376a6cc97c812a89f300a03b3ae27d000a6a848beb185ebd9700f12aed01561394c08fb8131fe56f2adab1cb53dec5b74e55efa1c0e3b2824cc3c11e144bc968eb65c5f6b794967f4f1965ef112938037202517100d30f3b2a666bcba0a6d8e874949327a0f79a4d1594b3d0c6de40e143f706bb966cefda8f7019ccd076a5b01b256a0a7077221b861709bac081af2084cec4628f5929ab0ca71fa04733706f110e1071bb0f53097f1dd2d8bd2fd1c4d8e73498f873a0319d410dd9eff8e602f99909b41458825b04f00db710804150ea838176ef52ce07e0a88685c31a41823f415cab1016b60d437d8c2564bc61899880e9c7c016b52e80a633e5d66d4e7f3120f2fdb70ce299135966d805014ff528eed639009926894070d0a7cd197935b7a200709cf45ab90502c219af59b8d55460f7fc00fd884b51c1bfa5bf8ef7c0ba3edc3660221f2318de4ea90efca1da9f543f0bcc56af0fd3db7dc858250ce0de6b5e854c0199cb87939064a1879407b372e515e9ff8ff0f3bddd94361d1de52883c504af409254a6c5703eac74718458c45c8c8a8419de8c41627c5d61eb1d385b009cd77a6bc223a6a263121b03c20a9a650bca958ffa04927b4526426e6a51a11495c8bc38af6b18b9c75d9683da0b25ba1f79c49bcbeb711aa92794d1e1a32ffef50f82e0c8603bb15964294d897ce72640a99ddbbe3075c4253844cb2107c6ded8dabafa5b98702064aa4b5295c578757dc041070b00c5696e3256247538267f66658379aa8751ac6b853707492887c6a7b3107ee160cdad7a247035b330fe0fe669ce054107837ca23ba1bdef5c0fa3147b6fb3a4f16f153061289fccfe9c76e7c0f0adaf83734795404d5954848cc606e5004e432bff8433316d399031873d07239ec99838c396c76b97a02b377c423f508f639534d62e40cb09bc5565635dc2b3476ba2eca9a3024565e4561a903d5396c846c03fdee838684152a0026477e979342eeb134f3ebb7dba9aaedf2ad0a764d1166a04afb6eab08e1b25d4b502d1d73c557b6e6deb5c29200dabe24ffa79e13b565fbf49c950a803efe53195aa3c4df7939ce4d26dc6f7693c0bbdc7dd3d06f0599728d6eb6cf85340a3fd106d7e55d8c23b5b1ef5defa226e055774460265e879dc76236b2c9f7dc0432e6c975006c804348288df243774bc5fd970a0e46177f2a3a83e4ef864c4bcdc2c8df9a581ae08738f5eee5550df98eedd78c4004e405ccd9e2de5ac23d1108816c50a91ba546b0999fdc8e76c9795451453b21f696a8aff5915cc48f5d2c8aa65a109de07ddece802cc35540d8914317afa89780109ee4d8b246838c5baebdc3a024f39b65959d6b84691ba8b4765b9552c2ce236cb476c5d2ebd6ed55ff8b96967f55e0226035d32f40e86e86c9f41bbeff1902fb353fbc172b559699e178f0a785d4c274681c337a0948a4d41346e7970d944fb23512f12b467df7b95f6fc5295978afe79cc4040b857f4368c30567d4b3c5c80ba4c09149777ea98b2dd129283eab38b5c07858191a6dc45cb770f26b6b98a8d8e3b831904009f78a917ab3a14e65878028f8f6602ab9a74004ca5478e93d4127b7740273123a319e6fe801aa0e0db7738ec304516aa4c51adda1b9abbc0ad5400eac535a9850dc45755a2e1c9e9445ab07314bc22a91acca394cb708c1f65516586b1a9ae7037a8053c8f077ecd3bdb139f187033c8e1172a59000412a441cdc88acbfe37e951ac3a321690759715b9a2614987e1b929b3da55fdc75f9b0af7fa56ba8505de2f117f0583e2f1b8141cb58a28d9182338ec96d304af84073d81e18086347ad96ed38215c505708ecd506ffd8ebb9fab2fd55222969c462bb3151def3694f144c10f6907033d1ff3eca3be4694561822ebd92c78e960e5eabd65e24f2f6d96c1344613bef73dadffbcb9ea3300e05af201f365dfe691b6a4fe288c952e13379ab58d4360321fa0ff9d6e35d2f60e865a160e07f5002725dc1335ed0052fca0b2eb2391582ca46378a6b226c1fa20ae59b84d6b0713483bf8bfa7ea6f549eb4622564f6f09ae4164f909157938d648bfa8dd4b75de8aebfa6162aa04032b64cb46f33dec9ebe1b38ffa0278449b32c8df98c9823e58ac5f7536ff04ba9e8f182830566d6113f338df2a51ec0a3605c1dc7f21b05edf7a3126f2c53a23254d43b5f02f0129036192bc515f9d50ffa4f7e41716b703b4ab5e63a7cfe57a837f172b19037ff8ecf8fadb7ffa5eacce16963d9c7a73996167b7de32f9f4427c8c1245c0f502a02207332291630bb00bc2b1624e9136ba56476e427f2886e5774dca398605dff9199a849511a532272eae9c908113a47e24e905097fbb8f82808ccf6e1c99f7c05e06a24d61be80880632da77ba28ee7b2b8538b54c9f9694ab7ed8262400482ca6da3f09f506e25ea4a5be03f2048644963948296f51196d4b8db58c8824f523b722c3efe71775c051b731978b01b702904f1119ad4977355d71b61b558a63c17c856dcab2b878abf2582278494f3884dae01aa28126602066325988052ca147f31290b29b5f8b409faa589b3c9350af7111de80e362b817c45ca2fe1c1819033e8ce99227f03196684ccfe837d5e84331a9752a52afbea2b0dcdd7614d377404cc325f500936c6efb9e3f965b4fe282a19bf1c9263ac3bc5447862f2681501e2910893ba57eeec648df9581a9c0746c499a10e9f4b06c481abfaa7eb9614c3b4e805ec6e4ed1fdb7bb23147d7c536bd93b4637ff840565c4cfffe06fbe08f0556efa4a20776a8a947119e17b436d8db9c82ebf89a6bca264da8ee390315bd708f2dda7009d46f17a5b336da2fbd478c800b3d2d8882f53b7288efefd875a96dd10ccc0acac2619e273517179e8e09cb636e060630bf7dc753fa8d0c02ea12525d012a65e1d7f62d792cdbed4082992d0744f3c0b0fa2fd812d6bfda78c1601f25a0da5882332509815a17202a6f4454d9f6d634ec890080cb6682800dbe95486dd782c9550eb0607b98f53808dabb4818a413b1402309ecdbb9562bc8f8ccb13f8c269406721c49e8259a5d6ca21b125fe77dd34d4f4bcdaa04110377c088d05027079de272a1a9a4691cfc4f31c426485dc28b6bf1b0ed9c7f09d39c39f446fe9057f26da8bc13a4eaaa200ea18dced46f31edec18415402489d798af80f7f24f95513254af12f07131e1a80333b11082b44211f4d751a9d8f18df407f1ac525bcd4cc8b79e00a2175c3e8543ec9b0b1cdc5640988f884115a936eda3f866c2812da83a6c36496247162a109124a37a52773d2882c4d31e00cdc09794ea670e19fc074cae95155e8d4f9a65f1a886d24df4e792de110f8c100bb6478bc4d47f7f01b01c830ea8a40e79c158f323b5eaf6ec4a393541f12098a86b1b74f414e141b6bcc8ce9f98c5798e4d1ad299cb99212f6d88a3513c88071b68836b1cc503b6dc8ad3c40379332af85a6b154b4890a076d27510e1130c5b94c6dbfc06b7511dd2f6702b257a237ae3337bb8c852927a6e2cd58e00ab140c4c53efb3046618fd9edeb0f6c2bf2d234df0488571325edf551fa796381cca1a1f12045ede7fe46f3e6b0010038ada26a6457c68775e1c737a0076b7f208b72df3d899e5bc18c49712d3740ae0f70bb50172a96d1a6e85e762283f3d3277778af4c16e6cfe88a86558d6e29ff505b50eb4ffc713eb8a754b29ddc48d51a865ba852d7e6968aada80f80139d4254f7054ba10c393e2856c4c70eea1776bfb9049e633ab0f2708500fcfeeb280090e31c48843aab92b3f348082af836bcdc0f2a334ca47ea49e542808b0322ce3a3efd6ad3e0530cd92d9badf20e1e6f9687bf30750a41a1354ee1a1c889caad8620ee399f2d0ee6c67356c4b7aba0493904641704efbb737fcb0d7ca53f4593e220d081e9bf5e203b3622d55087c8a193b2f1c81798f58f6d3545337b1bbb8043d39eb8d0b68f1a297896c8ae2cc5a66c5d8519235b2c3c610af3c3d601088f8a8e455d163bcbfa133f5080f36d260ff64753295113fe0fa087865d09c78e79d60767c6fb10151d05e1990923199d03fb1ceffa79db02f45f1a3031c676dd85a2c6434f6e7fa6ea032fb30fdabedc47cc909842b81cee78c73051ca312b9b986bc7501e2b2b6c8ee9bba6b8812ba9d02426ea43d2650e55c8943c04363a78e3e8c3c2c9f411706a4f64ea4374f1ad780e17d796b4628507ac610c3f1b901f0bc81afa38d10910f63ba9439b3cb29bb85cd3d6b5ef7ab2bc123090cc80f3f98284d2671bb63983db913b05085e2a7096c3c7eaf1819df494ca71e1a4974319cd8fcbfe7f01838d9eb18125a17873b40d0f611b4b8be9708d57ff70626a81c80e86a9e9bd786447fd70d13dace30383a8e99b32561ac41bbb96dcae01b48f5a70057360728b0236657aecfa97aa11c1eeba50d0dcbc31833ca42cb4ded9a9996c1c99a51f2999e299c8720f28588b12251f3bd9c8023b170ec923f6e73506bc0a4d5ae7fbd0bb44bffc18a81128b8904b8b8297c2a9d93065b9f423625f747d58b06515bed688e3139c40a9fe3203aa88cd3c05f4ca9c52a0a956409922eef35804eec771977d56db0a59be1bccbb11ecb43cf445380743b02571dbccdcd3a7340fb2d88246ad580ec5acb04d68a8604be7b05864dbe4d713485d85c9053cce011ad286073a121a44683a277cc23e6b5a930effee7a68f0f19bfd5937fafd2796a62b1262c5403dffdfc7ce32a6aab8dd61778261fa49476b6ffbf7b165996a1fee92de3cd42c83f87198f6c7443c85c32d65b71259065ef7f876a0dbb85ea7b7711fbade101bdff122b9b9d104685e2be000944dc749297014fa6db30938857c68ca3951f5dd901ac88124382c399bda5728ee303136471fcdbe7401628f628adfaa55085c41e44d44e222a67c7121949a1215d88836159edcbd9b7a03a41b31cdc82e834a8f8cd02569b1ccfa8f29f242f107ee3fe0a7305b5a633c4477004fbe866cba3c3f2621b6657abcf800853e7a1510504d5ee70bffb57705dd3c43a7ea7761238b79b05d1c04fc6ec1eb706ae3031bcc9a54dc091e8694bd3703794dd043a044569b8562099841096399e506ce33ad1aef718a48c67b7ce08a337e0734531cbb9fa903215b7d933283e69c8fe9d3a5f9ebac05ebaecc5fed10b02fb923a2a6650e13aa1aa17ad4d47402f93b2f414f0d293656fb76ba2f41c978f2726a27b587d6e9ee278a89e15f09013751e74a9e3c1fd176beaad7ec80239e1e83c880bdc0d554608132ab7a8c953b05850af50b456223520976681fe59165fe138919bd733de1fd66e4b026116605789986a6163b4511286fbed8133585a6646e3efc7f21f6d12bc118335f226dc5afb9582af3698aa820728f6a73de63fc667d1ea266f028de9eb78e7fb9176031953aa10ed4b7318fba6e1e11400404ac62cd8be432543d04d72543b9791208863b04b6ccae1decb80eff281fcfec8ce2c7533ec3736c705d8a5882081fe714987d077d39a8ef27ce19fc13295e42dbdc9499a3cc51aec470990370135a34ba324777e15a0b95e19935784285725c9536d4a7ec54b4f773d7e8fc3b44e27326c795e325641c55b1c1c9bbfc1fdf899f24ec40d7ad91d2c16753a07769e6ccac0bbc7db4f141707636a9d024ac0e61f41ce733add2d4c5f94667a30131d9f998f1a603c9175c75386c73e0ec43967b9caa3bd9e731e894affd9cb30c2c5c4ff64820367ab4f3fb3917c9b71e6b68afae9f379e68522a94d2d35196b3fad563f10842b693ec26b15f8694ff9788a808466227adbbaf1f41078c2daa2dae77afc29b9c2cabe038158bf22902db56f8fad4fcfdee95f326adb109f6a1fcdade4f52f83e5b3018e989685bc0f35e0b5115d65449a72125193c683dca5d071e146009ecf5409238f1001a228856ab5ab932715a5800e1888d69e91f2a911dcdfdc339e99424f79402b891b92dea0e0afc264b8ff5e4d5767e0f44ebeea94f17b1284f8a8ad44533eb37356f338f68aeab6a4a5331630483e71c272c3da0b298afffcd934801af42f340587afab2398c43ea1c240ffba3868112fd1503e3363c22fb16a1095f0f6e6591ea2c6954882efe9e9ef3e29d528a3d4f14a2d4eee337a67509f4bb371e7e10f1ca8f43454ae9f953b8e847999fb07c4c3924dac2358852c00460a5561a0a7f6bc37849ce3153e1525ceb88ed62ccea024a3301013dcc500fc4bda06c7d1adaee681a4243f046700c27002e375e79516139c1e72acd6075eb44d83ffb7ddaf5e61567fc3d0e335ddd9ac5283b9d71cbc75629440cc2d9bac817b6a155af48e10cf449a5373793a393bc440811a1c814e41d060eb18b0332776143ec28ce086dae8fb126bfea983b8b98e264bc9f2b3496e4300d66ffd77e854f326fc793ff3a985667521b771cafcbc3fe5dc736d2fde00737f9938ca7aeeca85e464d8ae7b58b20f1d3194a58834a973f14bc0b61f6132bca2932708ea8c4cba453376ee723bafc1476599cce1ca7cef5a150597e0c92095c164e521c0cf30c47650c5f93e2edd592f02cd3af80c796149a7f7c414dcc55f20515154a3218ce54469cdb4291e7f7018040a851b667aa8079d31fbac04d4cb4a6b2a024ee37fb040aa8535839db27c3612609472eb1418acd471701c4962f8a4d98cf580a646da6ce114ad920dd6bee2eae553f136cc38b242ed75548d2459912f43089de576d368246285469fb37efc06c0d4d3e3bec1f42fd170cbe22f12ed19e08a0fab4018c435390a6835f4cfa417b02d6334769e7494e8f94a953002e6fba8d789b4255185142dd0ce44c23f9351ac262e693dbf2f7103dd073aa9924d6e02acbe9078ebc40ab505bcde722b75468389b4fef4dce7bcfb5d71d6ad7b64ae261c789ecc54d08eddb8c31dfaa86b3c41b0692afdc454d310fa90777044edbe4d55e12a0edd8735f2a7c0901a8545cd7278d74049dee3fe045fba90c71518afd30d59f7e193b9223afd0a4380e27c50837e037c4b209d1f5e4afbf20abe1110055dd635394b90795fa04b70f12d8f4b98bb6dd39a05deba050681fa8ed40c19c45338911486dc672f9c2f8949c1a47521beb5055457d81bec18f26970541a738c04ee806cca4e6b6805e0dc8f75eb50d3f7a01a97f3d7701bae081ec867ee40cb5f413a4275f2958dee89151a39e5588257422aa31cd22b6810a32190da54ff3c33b1e8b9285ce120b3ce76f0e486fb3f358796685c3b85edb82a67e34346efd49ea4a70754cd9451384b9e85d71c43cc83ab33637e6cbadf0b65ea86eb3f449ef6b2da1937ab9a62e4ab757a1fc8c6bf2ea4a446217c52828847045476fabf684879b0c239b39f73d04da9c232df430ddeef5d1282deea2f8726b31e4ee13ff3816a04bb139fe02e7c779008b6a0f0dfb3a5230ce5fe0e4ba99616e334b7ea0854d1dce96928cbcb9140114b8ee68a34b8a3a226971531526ecc188cc644ca2845299e5600502119b87cab3c18459c09dc4f7e01ed64cb637dcc45713c3b9983192e66644fbeac113f7303a65c8c325c86bd06c58e06cf44cc9fcf5ff8cf9db967182310ed2b68cc449df260ab0536d265d0cdaa92dc160c8ac6b052f5b2385480c6f0b1629d1a6e1323301c175aab5c08925d79ff9b1aa477011b7436220ed339f4d09cb153680326126a84ab661aea439336b4b0d3a9026d7113d9208f9bea39ba6493c8f8cb52a3b41aa0a4adbae473d10f34aa653366d286bf225337a237bcc26b6eef4ee6d49ff07f0e4593c8faf86868cfbd02a926b0e48c90711dafaa4bbe0ec176ece2b15370ceef6c09ae56b8bcb308d2033da538939ba544e48918bd36637041ab6bb11237e18632d15377cb0398697877803830f862ea5300472f21d1eab566ccaa9606a2b9836a4b01e6c81fc275ded15373c55970f3309ba158fedabdb52de3646c145f68e1ca2e2e57e7d1249f0867704f4d24308db85434dac962f039e0537a482b0acb058f1f8927a0fc6d63becd2197ae0d7d2c79a37115469529741002c50fffb999f766a41e175d4f5772a1d8ae9512046ad58102c7718f2a236b98a8f9f053de6b5624e422ba62e9d3672d223f61f2ca43960e7bf113ef635f01c9f477d559338d3d8a800083427359f5186b482a14e6a202dc560bfa14ec37cdcc4277b8ac32f976a0981ee0e041c00a7fab3389b711aca785f4adb3f8ff54e20b4cb6f9a33af34a35f335dac8ffe78a7ce2e3f1600e929c0a562735664325ccaf7f6f8dbede8588f1c54890395729d1136114e706b38e36c78aab8df2a3e2aca89df27db1831d1f29a4e90101abbdc724855f23c15d64c0bbc1d63f67908bc3e4d982da02abaa858163e4ce00f63fe371d2ff36e5082ee316ca03b409d92dfb404c260e744a9d8b97c267faefda2f72e5469caa8a27840205de49518bd5181221653b19fa445aa14a13b566509942e588b51a9f3348eda9da58eced9bea93f5e4a230c947015102a7019f89805c8aab977531078407c7a709dc5aa6f5beb594e8d6dac2f0052220c648d94a16cb33b53dae599ebcf4124a60127cc5a1220f149cb2f51f84ba0a8e4420d23f244fd873519460743bfab562744a500de7551e48bbb8e43fa5444ef33fa313a371fc193d161523c211a0e9f927a1fc405ee96e235cded9a5b1c80b4c8489034babfa64a32e57bbd7503f4fcfa25ca4b6a0db581991ea63d5451a924f3700b17e3c20c1bc7deea911b06c2f6517151013f25c140aa861d6dcb1502f6bb00bcaf56bf52c3672a0424cc9d7ae16b8173c4348654349ef826f2ff08b64b8333349204ededc2289582a8141c23a2d044d3643b9e9c06a42757b4a45d3987b54d402aaf9f10aafdd7a0b3ae4b51b78178ce749a423bf19285fd71eae4853a8208a4217a5350e1cac16bc4e0847ee39f0922396aa773078987a6f480e21c516324c7a279fdf9faadab61373364104d42370661386d93ce26ef025fd3d61d3d8ae42139cbbab235410310d8913ae10339053c1538a1cff5c80ba9c7167030ace1a661821e1b057591cffedf73e227703c6314d0821924d007daf630a63d7624c04edb659bdb019cfd292494260a728654f040e15099bc3d13406672b63edfabc0e8e17acfd50d2a14b9fa01e0e63419e806c63e869f622c611c16a5b9ce046753f36b5a07d76852056d49bbd69e6305efea70f052980b9396061ece9abd530e11e0fe781ffdddef341f7f6a84cc9b4c128498677ff7d55b247261327ecb43eac1507326e16c0abe9c1b09d6b1dba22abb6eb5704f0fc0ac4daa128675a8e67c1711b79b9f4ec4ca19707ebf7da62c19fe84e4879a7e889fb3444bd3d45ca3a70edc8dfbae294bbe5a424a9b00a9beebb19448b7ceb5590f15d8c631869044cf065bc4376def54d9b72db34bdda04b7bb60b9fdda2d8c2f05e89558a14032ea254620e43515e8e58de0969941122a04f360b90ec93e8c900eae2cbc65d9a8fd59faf894fc1034da852d145759f09649989452c83357a6c7127b19d75176c35128a8433bf089e0cd2c8dae3f5b3079a935daec679c83c41265b28c16ecec302056b28567fe35714b85f3913410743aacbaee0695267033fa050655dc65d6f15d5a8342625598b0dca302e9b74917850f65db325d08a6b2f84096ff5bb075300544559b17157f2c8410905a00be5ce12abb2523ced02ef53e542c54d8a22fe0cc14c123539c72914580ca1aee45165fb0d6bc9ec3276e17e316516f14901b4a7f1c88910357b01090b35686ddd208933d5e34b46cde14567931f8bc5ecf1fa212b5ede5b6cdf484f2b70b1e61594c126a3792749447fb33fab382a915da7e3745bb1ed5e84cd8b875da3d4c57ffeb8d7c72a676fc7398cf2cfedc1c0af5c0ee8883ea3948019070f33c9dcda7d838487833d37b4b69a65a594091b4f2e5a93803fad56f5f40d770d5bff63d839fb312e2e809ae3e2d3068eba3492b0b1dec920b4c0c317992e626beeae1c5e3fe9a022d92e51465b20016379f620e59780f7ddb905107cde9dccfa1e8275821c42208982ae675fe038120c8fea186f640cdecfc6bcbffb7b43fb48817fee7a4b34cfc6f372f197c8d6359272e3e15dbe9a9c5d5bdfdaf103b44120a9d15123fcdad16006472e167add8cc2ac31da728a422cf88bece3873eaca07991a596d50953376295cc86d95d601aea734ea294018d4d14399d3ad25590464609adc5abd277c3f0eed593d79f397caa30fb4e290b05b3035b93fdc3101bad32a24f361afbcddc586f27c5c4c37deb86c6b8e61525a5c8e27c8bdf475a0f6748639a2eaa152c1c92f2e77d2c5fa618c11d980436334bb70acf1a519120e126700a2987664d2ffe765f2be2badcb4b91a23aedac520ee2da25007d8a4e3b49d24a8717ee5bf4b0c27003140dc6b2d1e07365d8867f0621a9e7a6daabb988edf3d43a7c5132f14f653d4ec71a9c195024886dac46d005193b2cb253600f2c13e56f901a051c77dc89e3b1324f775d9486af196c2284c9587cb7806f7eca16b67c4cc45c3dd123cc8b4a4a66a68aa9662dae546559af7b5e757831f0c57e496f53c68506f7308c3d98a269ce00907255c12b02d4bfbe28a97b897124bb6dafff42d6a919c65c63660caa011390090b793d7110c40bdc73324b87b284d8766013ba335010d7fd91cc371140c6d3d26c0d0c2002e80b1e6fb6d1ca4d9e8748035b436c61383c52ca0fca7bd3ae2544c5fa3385f438a443d54d1d0450201a2cdd4587062a5d703cc064a50e5c58151a21f05437331ade54c4a12a563e664249a45e6177d843df07b3f4ded12c88e9d6f48d81be10ba40ce0b40d55bf28cc28b6e30c9653c9f5149deb0f3c7903de2638bda83126d6e8294301a4d0af490523001c9f6ed6ab8ae6f082da03a558344724306391d4349da3619381da097a1cfb931c23804657f399c6e20b94a3689fde9225a94b369dc815bcff8c7ce4ad05510e68046f7ba995a3f018bce53d9e2947a6dae008a51c52db5a811488fba3c4c05dcf164ee5d0b9cabed574086610caa1382cebd9d5ada84f94834a19797f8a159ef30858560e6c5349a31933b8ac0e38aa81fa9aef83355d2983289f7c3e27469435ea0c3c94166d9094d66ce0080671337078a0874e8003f6af3e0d3a1378f08efd4a054b5c3846ad8c17051c21cee2a6caed46468d4d0fd72684c3695018102097c2b42c84b1511b1a3812830e7299f90260deaf98a364ec3420b5cbdffa0d7b5a3be27e2c1b80635afb933647dfdaf9a9890f6d9140240f72c4034793a0ac2ad7051c7e8424f032e604c576581845a6203ac0310318031ff60b39b00a38d4bdb321a06b8942cff3e28d446c9fbdc50d151e2d4e0d38705ddb480303feaa7e271028c644fd5086a7073ed527030704f1afa7aad29cf5715404c4adf415b87519e3d18f03503f0cecab8eb6e3cf58f7ffbdb0bafc7ce0bd569c13b5e34dc1e341da4c85c37d120067c04af4d5d8a2ae45fd43688f18a02f8f604572c3d25b6b531f452d1a8fdc5ef47c3d2414460b505dd5fd74ff4978c3f831145b7c33b7f33ab11ca1d721749d8f4435c4c4db86813874d1018149d86fa77a5b2f548d4e5a9fc6315a15f01604c94d88d2ddd4807dee3059e34f1c0711771b8758349ad3e3600c89cf0183b4197021b22853771f9bac2ec359beaf33c24d05a62b1a31b388ab6556f4f8894cdd153ea4f1ef0cebe161a1e96cd8bedbf422c80a9273543d3a90c04d0c42666b4347f0d0451242889ca00a9e50052040f3d7f538ce4416d73e2a2b0d32c218af756c1111f04d2abcd39f7356a5ec3831a997b796bdbdec31c9b0d521d1851c70311af04231a851c08b881234dae294fdacd22466b1bd577862ff1d722168123c7c2e2c4f2843f19429c06bd7df52d0539e2c4e059e3eda1e3fad223c426980a7576907c7c9eef1930084a1b175a627ea318e8a4a0ecfc95426923105d7a35322e4cfe0fbc31c0f29b9a33330fc61d5720677b73e4f6c80764fae3c441b08e674a6f5e696526bce47ba753fe941687c3e137f2ab3caf2bea5d2faeb2bb4a3b4aa50105dea4ce8eef8d585377306503dcf324eccbd9cdcd50aaf594f709cbf272168b9c160ffe5680309e7f3f236a7298107c21fd9643d0a34a48b0cedc6c8c4cb7567a0a294df498c1b66835f6802162dfea47b425bfc6d8a55b46fd4ca58b29248ead9b604afa16e139f3b638e4625293dc76e3c5340dd46c4eae630b35337c998e819aff1a7d50c4a8b372510e64807e7026f7caeb79f8d56600ea2e541a47e7c255f7bd662ffa6859d411532b031f61bb3e1b471f64fa499e38421f19cf24ee7f84d2ab7000ce80e8041b8f6bd2cbf24bc4ca62ed1ee753c04b9d378776b15745fcf4cff6f8a5b6f38d3c367e0faf39347c39de7690983ccae1c85639885f402d8a8caaf6c3e19cc8d53384c69a3f14139f9e08cab0c575a23681369e98a26034acb5330cccd05c807d31f7b5862302553d26d5068cb55eee123cb7d900935d03da035571a1fd43fef837b0e0bad39160e124b7f77d7804bd9074b9d24e91f8ed2f11e5be008efce517eec527a8ca8983ec03db8ddb32d0a6aa50a3ccdcb4b8a46f80c4a4f6c54669af18bf79d022671c7dec0b2973424d7cd493a162079098011a42d0a311729a4c8a36625eb80772341a7379e786a0e1c63bbd2a916cb30c5ab34016bfaab88e918e5aad75a0b689336e49d70ec4279f772808245839193961145132a8d485f8cecb5f9811a74d964366388d3ebc5806a66b7909cc18b97134b538170ad03cbdd640e625bb947033870955c44b88b39ea3e6216187d38de1e75d4714131b0a905660030e25197c7580ee1fe029e4ab34697bedf7fb3b5bdaa2c2bffb1b48d20fa80d7b67179b82b7620198ed9ba5c8391b2917b5f10d8256780a04fab80f03882d9dd7a295cc7c848ce39b0882ec93eb035d44760b9bd566da5f040a8e25d0981c0462fd09e2eba0321db91bdde7454fd066582695f4c3227a35eb1905b02fb1241131fc7b5c58e43601d38d2dd8eea661805a87960afea104b72ccbdcbec279e2404c8d0b653e9564211b52392aeefb94a11763e78aaf7f47d088430f6331cbdfac018904f13b7c0d33d0c67c03153ae51127f9944bdb8a22492f472b00d456f14369971e123bf081a98dd9f5da87d4e2f9256f5ec9624100e067600e6fe17145d45682599f4d7298bba06cbe04550bfcf1e5293cabd927dd965d994a954d895572e9c178393d84f2e6dce665f1e2376000a57d94633623d8b7f4c9e13236199825383602a6a56963eacbcf621f508c912e47cc3d2874a284849598e3591fe3fabe99fd358178c3a6d636ca8d1bc64741a0022272c0aa294c22d620520dba8139dcc06311cf51b35969ba6ff0b5ebfc6d8c9da84c319cc77c63b3163c9c161e246ce4b0352d62da77819db352ea4fa392695242658f9a3b842ec2a6e97acc63748ae11fbcc599611c290a8ce02bf356159baf3ebed99297c1d3b5ad866cdee540d79a63af1246a382198944afba7cb7b0f3439ae0d3dbe710fd34d1f5d3a063eeb6fccfc2b136208869a90d8c6a2825727e87554d5ef70f2480b9fd3896689ad36379e38904cebc86f262e5c0f5bad08ae59a491aae6f7b85c0428efb354c5ba8769f088718a61bc97b565879888f2a275647902b7b3f0592657bc088eee5d533c1a754c4a52c5b9ce0424c9c7f444c641f16e76c477ecc5a89c15cf40631826cbd070ffcf7452003cfbd0eb282585f56064644e52ad2a5989f679ec29cf45354acb57f70c0632485f59e8b5f853fa0f078331038a91513b9192be3abe4503236f14a07392902565b8c8a2caf777751cfd27d8ce66ee5c0347392a5a4e15b5c5edcc912b8dfb441ce211ee2ab850fc0ec9d8e7889e5f0076dcec4a891d7743fac5d01e94b8a8387077de6385609662885f736b7e6cb23e6f5bc97d1bb8316af48ccbf3f3724c1b94cade7f940e7a1f09ce534c15c12af21b4f8ea90a4023d704d52cd8b5119e55d502eb2322f0b9b097eded5bd77f9d6746170031aac8a8bb86bc8f5f1145ded2a311fbc6f5b6996772bdc3f4b3085d8fba46b1e82cbb2ce3237449e5f93b4c5a73f40b51e8f6eddbc2aa9e19d13a45a418f28d43f880d081b6fac876b2a8592cffacddf3315d9df785249a289183318b904a8067ad60e0e50a00b10387c79df1816c58f892c7fc0a696b4a65bb3680733eefa15fa6bfdbb8d91728126305ebb28e75e28e7dfae88ecc5ff269a90eb706337f40545d29218d88f657a5e6873beaf0bf696dece35ea5852dbbc41c2b3f7555a12683400af9e3b16018f260af7cecd25d05311d06bd2a14917d6d9ad686384062b0c8d15f3daa5f856a4f455e50d4e205a23824310c2099cd2e86a4af4a516742b16bdf84c50503cbf75ae48839fa6efa40165434dfcbc211099b86b082820c00a8da2490289876be106d2e20fb52242e04ad214e181dd43d546f0c5b14faa26467739a6052af8a0e44fe87a8eb58fa71fc52d4dba8b6906ea2b5fef8d20c419e970026fb116800207dd628c9140518888b279159d7e802fbc0a57d4aee833627fee833175770c979a058383c9575e06fa6f2ce154b45a4ae50fdfc4c031e32e54c439ff89080e76ddacc30b7277a44cafd349f061a573e1e9b52549f271bb2d37f96c7a54d43715ad6bb1dfbdac40989a294577b95ac812ede0aa42ec3285ac9bedd8c752704e29004b4925e8efe0ee3055489bdee98bb35cdfd95dc1c0a1da8e3dfe79b0225447baaa5f4fa733d692c19ebea7616047510211554cd94b20f29435122d3c291e90a62255fbcb4401aee2512d035a85605870c42a89ecfe1f10968dbed3901fea423edfe878acc994bf1986da5151111ae1f33edc079a90302672cae37968192dd436307bf5058869515a8450d2edd0258702a7cc743b145a825509758bc51692e33d21376e2565657c342eaa712db8f925d35373427e7e7c2dd36466781bf72c425d5e5f509397b52468f41c706272b07f3d0f5772d7021ad9431b90c4c04d7a55bc2cc25bb0965b5b9ac540d6f8da8b2805eb3db4cb7cdc566b8479d7225924c51b1f75884263ad423f643b2863c62df93304285094831a827e2e2dc853a2e6e64088b5cbd2082dccfc8382a6835301e423f37b08aed11b6c48755c6b64b2610a8334fc2274f20e492c9d820de33febec4e302f1854b15e5844d1c6422ac32e09ece2b9883f4d41dd1c5850b4df82f0e816f09a0a197d23e32313d1b6f4bcc2b8cebbcd114951b4217de86be954f78553abbd72160f770e6e80bf93a56fd5a8b35cd16220e8e5145eb8f01518c5865b67bf6c724228fdc73a21548d49bccb723acd35252c5239386a16c4e2c6a26d6ed6ac952b44cea24e2692fcf1e06246de1e469dab93756170071fb326b87a9c9f2312c3c18c511711cfe56ae5785f109bc5935642467eecef032aa1110d990b6c3ab3579d19b3dd9a3acb9564843d0ceb3ede47beb7f74b4daf0e3c3c8e6d9d9356ae7737b71eed27c992193a0c2d8d0d6d9f0fadecafe8cabeb50c93c7ca164dcc2d98ad3270ca8c5a10dd9f11a7bc61d457b60aa54487150f9c3bdd4eae55a54c12593215f36778d295050704b84a460681b880575d13240e3843e0c6ac298c57e86563ab36d30863fa056a64ae2dcf4f49725f08dfd9b1ef0373e1bb229a205200cf4382f2fba49e1b531a4f5e75760089324fe124ad82ebb0ba977790f797bb23e6c3cac9e4579ca1beec5ff1b63aaf4c582ff56e1b9dad951cb30270f6c86033428cc165dd3c99b8d99e14cbffe0b099a13b1a0e6039752cab64187f5158352155fd49857ebdd66a37bb038f4b17db0b4303df6e568174a840a51abf81608d8551e3f5c679c5c237edd9d116d6baf14fcdb1c9baf599689683a5cea6421044f9e559026331863e9dceca4357a750ddcc497beef3d84e7d9d05a5d528e02b9033edba085cbc3c81152d70d34fa0e615bc0e78f07fbf1faa8209c9b1237f9e7937dc3538ec83d4487827c02e18acfee87dc9c4236ffef7932a15ab11f466cf9739f163e3caa56747ffbee052606af389f264437431ddd8b37135e894597708f9a605d4eca3627b256e6a3dad2ede474d1528fa93a18491eae86ef218720684b948e040ecdd54d0c04a3251975d4251bbbc9e54e4b58f19d14fea668468afd56ec074134bf6ae7b761b62efa8ecf7e616cd91b8cf9aedec2223782a6893c930c126ecf281a7c09131aa637b97e97210dfb1a1f6043bd97b2df5d629d560f9d6000874b64e0560d3de1ed7dc63b20e7dbae476b9599d80f94dbe91a3109fdd18157c6146fb204f5a73a8bcac84a8d34aa77eca7a66c05943650b11eec92da33275f0afd6a6212aa621a8ddfd4d4f1774ac35b454eb591ef75f10d613a6826dc2af66d54ef1e6a11116517f3b0267b2443759335f4cc6381729191ea51978ef7f7a4b795df3298824b35d69ed220151f4a840cecdf4dc49af8dc3b82c10d7ca2ea7ca2c71ee282549bb78fae1ce56795d2bc93093ea8163a6151584e85cd8f4f0df6af714876fc1af02b57c9c195d07b6479d31e54bb22e0011cd5be35a0d787afb8ddc8d25a19992f9e87946457b0432a70eb59b70fea0fd637549bd00e4476a373a2c7a26d82d07a527bf04e3ee8706206958dbb3c59213d76a7e3696b3b45b8754ea43cdb1a2f4aed4a3475ea9344b99fabe35da38921e177803f0996c41102003f2382b8e74e39cb2c1ccc2e84a70a8143c2f2b670d16b93d55a8d487aed6eadfc94a7a0e35d7cdf35986508dd6168614fa93cc0b3d27f939244831fd679dace9046d1b9e23831534591da55fd6ec536df9bd026c7c8c78985685bcea00394ef0874e1153b15806db45e6b4a270c9b7dc0a62046c4101c82193e79adac7a683ff06bc34928512d2148141e07847a15e4deca5838988dbcd380a7e0c60a6a0675c907256cc3cffebe3fd7479db398271675ae3e7c6316ca5510ef2f6a040695e239743767bbf072e9689229c89b8ff9a540a22dfc40c74f01221904dab0b24053201802a26003cacc7484dc21943c01f7687489320b8643d6f9c513ac3f1fdf5955044748c7d6200ac4f39ab86fa30b80d46ab38a9737ebe74c393a2e88c9993cc84f6189a474a91cfbf9359d5063f2a927fcc4787ce3000765f85292ba4401fef6169d1967acf9240f7f8cd73d8acff62198bd0b29b22e42809ddc9db8beddda3d375ee2c1dd56af8b48d17fda93f11d6b479cd5e1b7324c39e886160f7df0d9d29981dced58d1568ad6d7c29e744aa5890c4535dc45c85ffdbb8410e2b42c80c15402ea705858c4ccbf5822ed2a036ecedd0cdc28952bf1abaab2fc9f452650ac73c9ae05e9ad24ef1d71dc969fd9d84852659780a831448331d47e5fad8817e13175682dfcce3fdb36b40cd87d9ea9f9a50ab9e9f66bd84ea3f17b96d245d33b20a306afca6160997ea5e14249b5e65cfa77f5628b6c89f29ae5c33c0944e06e95710a3177da4aa79432e7930d223abcbce05ec7c5a08e7e63cad586e5cd3ff3a8652683d91538e38abd69136b0b26db331b2162e532679189cac245c39a01c66426c3b1ab627b784a90af3f3d86d23923498b6150e1f392e127da6a61c464c126567c91a2764b09617b5db02e4059b91d2b8e41d90b42daf30a4a39c316115f81c47810bf2fe79bca7142957346a7c852979556a287bd7625a0c0c6810308e5d7616f60a455f57a2f42c0fff70340c082b175aa3732e486514b7e18b9ba4350e91460e862e06f968cd778cb741e0dfde0e6df732147a4a1d553d5dcc6a937043599c8b39a6a1fb73415aa37cff60c789acd193834adda5d41c63d160ec3ec1eebb3c853c46f34358d677cfeba154cad42b8d3790b3e81b0727d3d33ab3c4f9c2c5fa83cc63b92ebf13ab84b459307cda9bd472179dc1675fe4d63603467987bf8f2aa8ca8f4519c5aa9c22c40f3d7c60b6b5ee611a513068c75fb844b321661f187f8b0a844d59ec81991927cf6f4310ddcb1d20d46fd075c7e7455ddca7e29b2f67783a063219f5a3f89b3d0716ea1b43b0446e18e7a8a75fc0400f3914fdb3864bbff46ae3f1b6cbcf3e3971b75a203011aa45de73ea25e010356cb7b627a1183b3978b40eb14c8dde6e772ca229c1e513df221b5303c8c3d878763f37a04a66c93f98efb21b01e214d76313f01f45bcf4baeab9c112826f4e22c8d079e1d09a5b0183d1a8ab6e9cbe4dd94f1e0ba70c6355545a11ce50f42bce20e79de242c1bb3941ebeae119da3cb453bca92247db1077e4728c61e6ada7099eed5a66dfea6775c9ebda1e8d1c848f6c5ac1c4bbcd918981edae1ba631075fc05a27188a6ed5a2b8bd9e245a59de5ac6e0d49ad151ec2bf1682f73a7ce57e250a7787aafc63062b10e4c5c694782407f58b74008c29ff4a7d6132e7e8f3e816134d22273c28a86c94210bcf13e4a39b2ce4f7b281d457020a3500015ee369ed6e645ea4793082b61da094254f4e06fa8153770c475fcb6b8b2a0cb3a74d6a329be185f4880bd09da760ed6e13106adc7f5325b93686823499b9bce0bfaa1d1273a13f26620b9a36dd7ac9db138588b60370f2cb702a0ec86021c1d10992b9cc1a62031539637f3ba58d3f2eea69f455f4e7d60ebab166c32a0aee0f99da5ed5fa09c0176feb6f7ccf66ff5611e618756e497f2e347e2d76726543f1ce99428e5e296d98b1e1bc310bd3bbdc4f9172f155daac3b5b73c0de1eafe7be6984527395386e23a94cce7c504fc8d969246f1b1161dc1859f4f55b12481991aa64f0566f2e8a9490103327e59c602e4a0cf0a233504b4548d2c2e4d086812cb28bd574fb7e5f040250b51af2d76b65abe6b8962b159c3a5bc074986ee2b7865ba321efbe5dda56d63cb3d6ee76b767642b2fc9a96a61e7afa694258a4b0fbfde04f4c590f89788bfe198096cfdf8b4f008cc92b36b4de5b452c3b9b038730863e94f4c6b93f79ba633d2391c91bd3dc359517fe82953c3e0f52935d923e7787563bb49599125d18b108bcb057344e037b719b8e0da865fe67ab6165defdd7f7609117f658e9c93af33743b2ab4846cb2999f3d8bcbbf0da234ff40fc101d01a5a1faf45003544c7478b6b553725049d7b59c950b233e2cba0e086445fefc4ce34a52b944e664e4c45179565897121fe8cdbcbe68f9d59ff428ecee6f30a4df149bc333c4dc6c9f0b052de49f5d899baedd345b7a21c79b2392a7e2493e42cc3bbbf8e19f6d33f53c95c3b2b2a082cb26e8e167bbd3931fd1b6ae1af09cec0045d7ca3e7a7a995aa60a825af888685bff392c8622061d4b9d09873c24c3a1e0a4587b2694882659a1ff0929c4b2874f6a32cb84c85ef970c8c7da90792852ffe32282f700de9b96031c20e9be954ff302480f386cf6f4ff67f9089c4f01508ba2869f7a9482a3e7bfab8b92212025bfb127001eb036fd8b2117147880b70fa56757fec90e0767abf8819f60b5796ccdbc7806b3ded00ff4ccb348e42b1bd0a2e24385565a4117ee572e9a40d0159410c060db0fb1bfc6af600ea1da607d99c1d3e4e46374babd97809e292ff1da8ed56e3c5799d92dd20b71f4509f49465c41b7719b1ef5ba4ae3e2e689eda52a4bffddc6bcf34f93af10d22ebcae5688b662e6b83d4ccaf19ed97d210ed2cdaf4a1f970670c4ccc67ec7ce3479b4813bd9ae2965c0cdc9339529e9b81c72d63ab7feb262c0596e10e4a28be462764a21a3377b41e76623076d8c751264daf049bc1790ced22acc654b62e9b798648ee619d4061502b340d00293df0204239222b6243e7e7321fa43b303ec0701df1f96d4e5279529b2b4e0bf65d9b3d220696291065697c2a3889bd2381bc67617c6612e3dd9382bcd2bfa1346d2a98174b4fd59e5ea69f169c2a70283c75549ee79f8c2490d8e55dc8b6628e8219513912e1de76cfdca0b1694d6a673360b1a1c8aa258f2c84fdab1e65d950df3ad69b7794abf62258c61c31d4e279cec33e2d682d31b652801032116dfc41fa0110a3babbc1506bb061018871781b18f1925176f14e24714a12b156516e290516e65f286f12aa06b9632ec6e4a752c16cb82f61315f7964839c718ddace5723d05618ad248db336c06bb86e215d9426524ae4b39c298291a8c3c6c0f053ad1dce1ea96577437b3e9af2a72a253a648666a0191159766fe0291a5521d32dbabbb51884c3b9d595f003d160d87c7521a2f1c2b1d2264e41ef566a2daf65d394aa7df27d1868aa79f82b4f7841011d525eecaf066a18c297128a757ddb09de90c0b9f0ad772440f468cd484f178189b17b2040ffa18cf352d89657067d60deffaba32a8d37ba2e23199a5a01e1c2f964f6f0a1ccd89ce575e60fbabc8ca36f2afefb8be68bb05fc9838612960532629c23eb7e52df6aaaa39ecc6b2c5ae3e7374a04f1dc26959e438c5f912c9f93e535e77b2469f6b2c14c19a7d295cc433b15e74b2cd66935f307dc24898a7dfa6153ee5c4eabe85a31da979fd21212fcc358f19c2ddea56006dd2fed59ec3978c64bf2b4cfb120ed51628f964fa0688f713f9e051387877024e35def2ae6f15f2b6fd32137c1f5a05204d0752cde819c7e2a30586217a60af6ee6dbf358ea2228fde8452626d19e4e1868261ec1ece99d2455ecca92f90fa7eacddc08200d16dd7b445aee7f6439762b56652db1bc6e2733a493a543662ae41399c088cca228993f87cef8f3092a3ae0f3fdaeabb839102db7ba1dc72aa1e74433604ea35675bee495fded40b119f6742898879e34d417fa0dd41104cb8c9e3ee037a63374573543ed328926e30b1b813fab08cdbe976cfd62dfc532c7d221d5b8dfb477996d208c43d04619d525bb2c158b516ce26527712dddae3e423765d4af2965636a4f5021b0ea4e109733b7ad607d62588fc14d1524460cd416d4ee44859d320d264a4cd5809b1c7d05824e541cc7619aa549f415dd2f4e9611600180266b74a5889e9d8852c8fbd8dd32c40dfe2d7ac3f4a55a68a5c49a805638ffaa03bd54dae1c99338e3e8ec3345638c75e17c45b19f07d4c9904fb33114419091cd294d550f95df2217c9a5cd791f857ec7d365545b976ebac045e8e6612417b3bb6c7da34d754b2479171d433fcb5bd6cd813be116a1e658905ac0d08b25a135654cd6f8de15762f9c90e2b199dcd741bba6ec0abbfaa6fe1979fb0320c59bb9f8df31077157d8bdf4fd7f0baf01e9c0a3388d4874a6bfed50322841cf511c87168ee63feb76ac238016f026908efe8a33508c88ac2f0a1a71f51f80b20392c2bee22008437c41d3f0320a0098320292e27a71504820800b3403167ae7354fa6e511ecb202acb245c675c1b8a839060abddd0f641d0268807781741c649c896284407650f0ebf391bad497341c6ff725fc3bbf65a895e1bf3ccb060025d8c7c7111ae5eb361f081066250b99ba51ea23c7a3b91f3fda7c404098950cca287e909411c02ac1470e477c545ff4f888807043596554826e8f1c078d7ef8fd4cb7aaaba4343d7296efe1d9d1861b03c2ac64905137ba3c721c34fae3a7cdc70c0833924506dde8e391c3800c97dd6f3b9c8c4ad0b723c7a3c5173f3f373dbff207a68c80a4988e1c14022ecd7cd6adea2a29718e9ce1cb3876b5e1c680302b99c8d48d56397218c8e1d9f1ad4392a104f538721c5a79346bf31103c24c9cf913c0e0650a24a5e2c86904a90c876f1d924c25e8c091e3f03b942fdb7c6440989d0c92d1fed0942190948d24a71294029c1a37959227dc0530479902acb290e4e230b914670fee10106e22f95589de917c73bf5d9a6163f026c70a3932fb0f6e590146492c3950449c8bf18382e0f79b1c0a12cfb22ea55763329ac4c60ab21c8525a713a1121c9b9825aefaa3698eb6c402c40ac4fc89c585388e6600abdc9b1c16c1117d953c70c2268f821cfcb6233808fe7f3c75893b7ce5b1c901b84706bea3f901c1b4ddda61828a507939cd0b397b831dc69b819c5b62eb145af25e291a52f296fad17ac46bb17272a851e2e6342e8594c11bb1f69c51c569df5fbfbedfbd263a301343ba60d2c4885ef0e58152b1d8d8cb2409409f18378e2d0f30916a9cd96fb779f3f482d3a40fc80e960918ef2c79034133688a31889f3eda037dab4b81b106981b5e39f248a5a68e42bfd28e585a3490cd316f79c32b36118193e37df3b1d1e1e4d8e83aa6d36c45338906a9aba41d017322b8171c9aafe80167cace0f276794220a2081cc7db2270ef1847e33f44533d53955a79092053ead3686a4b90003eff7c323e1be65db9837292df0e1a700837a13c6647058a800a6f03b1b5e9a970c2c5e8eb4af34867e1405d4d073ce3c853ee890c8f3436351b472a654d0b5da18d84bef1aec833dc2a0894d27b90fa1565f1f81a1d06a1172299b678a8293a1e4b4532cce722f1fcd9ff97adc59d330caa68b2df40be7715fe56f22c605dcdc1909bcf4ce847e406c0f163ea7e9f1892cfb012428e2c2350343cb467379242ee9725ff0bf9cf875921e6dc75122c8a9e2e069f17fcf731290b37aac323556b8a73f382b3c09391e92a20ecb12c5570970ce120a2f5a909ccc3521f8d04566f785b5a95666937254028a402ed75ee27f640c6bfbc60e4dae68eb4cf223c0817beab55e07f957f20d5d1fae11918eb921fd32cfb81591eb215a551d84d207fcdb305082befe060d40e92ec9cb7ab417ed16c05ae03abff4a614375fd0eaa22516b9de079c4f728f749f5e3d759967c7af4256bfdd62150479207832eb6dfb2c4580f4e876c73376baae5f6e146c3af6f5b457e30496320689c54b86f77b4f46f778d425d125ad6d7e48942e535f0b594ca0f6f04547a0ef36c69c6a2ae05bc65418b71395e435bb5c19c752cd604cfea03e767133135be2b533f62853b6da649926407ca9c3e5e74754ca132f468bc3c707ede404c90e2eabb6349bfc05d41e5136fbd60d33ce750aac05eb8fab304edaf0036bf6f2f783cfa51b404070f9cfeb0ea4023fc36e240afc2168db67d7064b90130daa0d915857b696adc240ca6f65ce00afb2f828e1cdf1a3b51357e9fba21b89fd58053620743c0fc96ae9ea4dc481feffcd20340a7554cc475651efd27557ba9885fbb1c7bde3e3fd1e0f2f8f0a5405c7f737efd9e1eeb2361a4be00ed3aebe5a2584869c01d87f4e04cf0e7bb1de1e78072cde41898db4d63f1803e9f744a0756b19407294d4f9c4ca50223f39194376ee299fc4a43ab0c9af31c32454fb1e1c5936a0ac668c3cc8eb2f2b7937ef441c5ab6b1bec6fac2f1c79fd72b20c001d046d6f1255ce10f0e66f62acb15788bc799839f5fcc3d05c28a11f882c5746a221b70535bb1086d7ccafc4e4fcb4152c107c48dae14dbec55d188bcb31db47d97b171899e79968884ee0ad0fc994e45f96588cb4575263755b9a0c79f1b3c76912108187443adbc5fe036b2402e8ccb0b3477c97bf8a8219925a7d8c7d49a050e2385181058301e15271d29d23068874cdc92d07c4618c1d9d93253115aaba397a1b982604e903bded34300aafafbfd390e42bb3af77cb346074aca3bc6568f2473cb3ff47a7443df2bdc9b733c59ed81dfa8b75942d4da2684ec2df70e3210db0f2f10aaefb5d60beb9c8f5f02502e7a034417ca067c779b79c35913b8e004864de0c210c804367c006fd984b3470de4942026a60267cf2642643803c1d939ad9b367b42683807c1d9c59cd6510fc7b603e6b6f8e950ce80c51c8d50cba6dcb690f62c8241ec7179629a4baf5285727a8e66114c3b8a95c122db68a8d9a164912c43fcd020ce4e85d5e08c76a42aaee0ca2687a7c66c72463cb845309d96eb557b583744745aaed10bb754a15c9382a751dd70b54551b3d68ab9d1a4e85426a30bd2889b2635ede69a65995629a599778342e0350f57a31e940bf30241f183a61dc250e0045760f2a08533091001612f22dc606631a422d40ec32670e188d58e346af2a085e9858d8294d212cd32ea81c184b5ea4f1316a6de17eac64ae940356181a0a8f4dba157b22a65e8026b55a227f9ac5d04d3ac28a689629dd26e6b9a76a7d532aa6553cb3291885e2b82b54bd448b456bbb64b81130cbb700516169e307960044cb32886fbf1d013c1727a1005a531b4792dda6499e64dcdf3b4f6b49868493feb57a75c6e3de762fb556dbb5c9edb253d05c415a7ada07e17c033cc2b56faf71ea57f1788111ea67f07d2e3bb002e10d38ddf414f5418942199dd8c52405c7dda91ae2b1de4833a5301168bc5d2763a463fb35a0b0a753e6bad1410d49c03132103d36719580493aa967133cac6cdaf717369e469ad46ed48edc865f9d03e9fb55b1bbb968a5867bcbd1b45502e000b57df69563c44ffee4c9048822494c05a7d17dd99f6021c62d0b39a09f2c20a50b076e842145aabef339f0992edaca167f55d23a107817098c2082bd1b97b543bd5f0366da8da3ce3d0bb516906459dcfec07432f889e77c6eb26850aea3629d40d47617342d5b4efa0597e41689f74c66970fdb455a3d73b17fa76586d11d1adf90a85d36c9ee1b290bcf7cd66f5661a5c8fc01dbe77eb66b5573ba7976df76cc83ba48dba3e28cc2e9cf445109c5d73f90b97bbc4d48049c27df462e39cb571696374eeaaee30cf13d3a0c17d445d6470deb36b79064bedf4a16b57c776edf5d9762da4dd3c83b396fed1daa566e5f617ddbdee99f4a4d765f76477797d74f7ae0f19cffea35bf529e32f5c64a86a3cbb19e6ce1adc68c4711c37aaf172c9d5e06cd438c7bd9cd68081c997177c91de8d978fbc77b68668b5b9c35b776bc8ce73b6c6ec1ab5bd66af36f4fad0a58ddaaaf7f2172fd75e6ea6c1b4e5d3e61a3603c1dae14bf6b2ddcb16a0f1f1a3e737efa3ec2ed7b4d3c6deeb37d1e7769185cd32aadd7dc8ee659acbb59096657906cf7b56c776b5fa127aea55e36e7ef1d07d41237e79b98c7cb12e4fd9fc03bfb80f361f815f9c856db17906bf905b077b0443058da981f563584ac0c4b48cf6b72b04b6c0286994768b84bc1b99e71d8026932ad115c1b2d3b654742a7bcc64b1582cfa6e06ff88d8e59db743ba3cf374a06097bfb04b6c0fd5e6e92dac513606b34b3a06151da30f71cd7609b64b6ccf65754ae300ee5f215eb66533eca77d62ed28f6d30e5722796faef34e1831de50b3221812f598521831ae0da1404b054a4f600900aeb26a640618c6cd303daf183753cc44a33a8473711aa5a4e6d0cd2ab346cc3b04f72b0d9b27568170bc57c644084786723aa56d00f7434e401a30cbe8a5347a37288b092f1e2ca4a0c80a3b1ff18a539be90e0af1d4567c947e621010ea0e3c906922d1b52d06351389e4ca9c5f09355123868da29a4874697dac7cae5caeac443a57eecac4a2ec8a6032c3f4bcb085ab959d9909227a10d135e282f26cb2b618d4af40b12830cec1e0ba73b1310ebd2062dc65852d5cc5b88bf470ac5c95856aa0b29962154ca7c40c2d84b37dc65fb8971b9928f4aa35247eb93e467f79cbb7bf7cda38af8c4c5e482665d64e88422b44c4093d18125df072026c09a9651a0bf743388844e4eb438716065b2c0cd2d0dea5d0ad375711d544b0ae529342bb0df985aa9050288a62b5a6dad49bba446542b42454250807d48477b5234544bfedb2d149fa25433736a8df5e4346ce2ce36e7f6167a39ce0831cfcf2ec5068410cbf7cf4e8093112e2e5233a1a8de4cb35fb43e29743efc6cb15c54433ec06f1bca2258d6a514f911a0313aa41ad7161a35476c5a93522dab02b2e5f716eba740086f5e1f21887de8e1877b94c732e563b75b1396297476f078d4cbfc2c5421c23c669d81c6f011a971828d72a69969e18c5c26058884140a85904b330514fae2c118cc66c80d3342deb242d2abc5a5434d57678a638d2a98f2605e689229854599848c6420b3b821cda60b3228da1c69360355631000ba130014b67a50dd901d2c872620ea5146a8f95529abd86a0f625ce22582bbb320a2a28817b478a28a820a457fde92a7610102d4caaa4132a7c821c8860897bbea8139f804f90430db6222aec121c7350330ca3c819023e61080557acb3691d699817021aafc05a0bb684a1aa00cf0bd146f0fc8e98023cdf1e02228cdd58bb3908a603b0300c244041ce4ac6c2d5b43e62e806b6f4b78c07f761603136314bb40a6a81074631850ecceb3135b86394c0fd6d5211ac53397423eae95406e15456a73e73c059b4444405cee480f30a0643cdb6d5a92fba704472ecc24d43379006bdf1f5d0129d8a496035479c4e69f79377477cf6f8ec7e3ae8bf22355f895e4474834cd7ca48761a7aed1ac434389e06f7b9a8f9c8eeb723fbbcc3ed10cb439c359ca138d4ecd3118b7c3c44288f3d4447b940be186392a5a72bc2b4d38b6cec893d5996692f149a75cd905652bf7988359b462961d33c42789d7edabeb1bdc40d265204164e79ac5996c58cd05b419da2cfb22ccb329b2cc4d31b456b482b866114ad1746028651b496788bfd76b4b41ce296afb01f3d0d5ef115fb6d5ff9a763c5ca395114ea8a175779bf5079969d52ca8928a594be78664f0d00b71718d1d37eaacf3e2bca39942ccb6c604b8672e7ea079b23fec1cb22585440c645ef87289448825d9e7909c85622d4b308d6a25d77a824d6a8e6b6cdc25a50d1a866b5e8993f8d5f860dee67714ea342b52d7aeeb3852560ae2aeb09f5d3111f7ae8e61088d5bdffe9e13edd144345fde3f5882bad25593e5334aa5d8d6a8d0a75876798d78707b648dc5ad7d35d10ab5154f40ca931353143626c624a006974efc3bc200d1690468f620b1f4ee3e663163e5cc6cd25ccc287dbb8b962163e9c058bc3a8e27a8a88557cdc4537f9c97edc35a247c984fb002e23fab85b04880be026d1ed912a98578d9b29d783fb9c8c153d64432cd8d2ef6c6803af3ecc15f3f05c79b818aa0ecfbc1e71257ac644cd9d8de84058d365ac17b21e8e9e027a05c4f54cd683592fe6819a615ea998085643a150e8b451a143af7b77430f711c1398e3605e35147af7040efdc4bb11ea51fac7c3640017062659fa26a7597d3c506ebae9ce08e0c2dc6f08d18723f4e80628e0ac62153a68ad6856158483b990b531d8d217ddc238918d70957a411a2194fdec48b9b2b14e85ae666152647b65630000000000702e641b470cf3eae13dbc87e75247d832a4edc0963ec4453e1ebd12bd57a23b13648572b54f74d1fd42179d4038319ce8181d23470b952514ba302f1858c7e88b786a0084c09686e1dc2e084fa759cdb8e4000cb115ca94420e6c56da12b0a58f6267e206745e90b30af2f1c2ca48e85cc86a43604719e26e06832d2d00212ddc5917a2f7ab7673c41af4143057a2cb7476d1fc8b474f0897cfebe1903ee6239691d4bedc83785a1a2c4ff6ebf10dc00c3022ac664e0f72a9d083951198d3ac4ea793de9cdd13629ec05ca6a9a6cda9692f8739cc634630ecc43036e2d03b558d876c8d571b310cac5335dedd43cf14d3380dee339e279671196f4f88d0bbecda27ccb3ec3642a7f5da335b2f2da7ed98a7cf3eefdbb5ede6231ec3ce7a7ae97cb65d4eefead8e4a559967fe1be71cfee7c4cad5cbd32e6dbf561e3d97f48edfe9098c6a78dbfbcbd1d303a6c5cd8281a37ff90d9cdb051323ee3ce46c9b81f75ef6c0e8243cf6828743a25869e10333bed421fa95e43f3e6d17f481caa7147a1cb74e8e688abeaf4b3560b038379d5aa3ab5aa7b361f71438562a3878366770b1dc296cd7a9756c6399b3d8b915d648d840e3d21b29b5f549faa9b695e0ebd1d302a6fbbccee59a9523dbf3ccb42cf33fea2c1d0d069d45c01bc1d421adc218d1fb025bbb9ab7173053a8a331b879046f71a87366e3e02cb67356e9ec12fe75ab89bbdbfcca0a1525d0c44accdb03f24a6977407cc29a5329ee72d4083e9b523b0a65dda22621556b53d750f7a3af20f9c5fbedd1f12cf89f30f8965fce532adb2106b32aeea2a0b93b29908fcf218361f815f0ef38269907723e65c8c8595c6348c9703627a8b3802ff680cf30f0ccc5f2c0c0c0b934483b9396298431a19cc5fcebd589817cc33cc0b060cd98d59c2d8883558c3bc3af5f23e4c12fa974f4843fee59b77e3455a085bb20403ce207eb113c398b9c19a842960be38d55cfee285fde829a630491ad51fbd22984849b3f46914150606f36a14dda92bdea374934bafc7f78fc7e9a28bee0c94a20729e8c1eaf48385b8c5d26017d607ad054242daa06ca65aeb83b3858538106302dcdfc16659822b82c912e0233a5823325cb2269597cec9ce64c5fd6e13695437134462292f2a3d1e0278a52067f55d94cfb0504a415a0e4fd8b0561cb88a654924655082b51271271686345940fa42851e8fe95a7d3d4440485ea85fe3ac4428872bad04f5188748106080b3d6d14c50698e187076334c0f7e89ae11ed9e58b82259b832b17045ea42e562a5428c509857a7bede6954b7148dea67d7c61a49a33adb2c6c4eef7299b5b12cb3b14e6517e67539696dccc2ac120ba3f419a6de8d6cb33646fb1522d2a80eddb4ab51edea6c686743df946a2dad75cdbb4173e8a653b14e59259db24b3a953b2570b74b76f7ce669e528dd2ecd2364fa3a6681e4ab54b697627a7c416aab5b18ed13d24846ac48caad08d64e9671825a19bd00dbca120541825302f9824b04e65878975aabe0fb304a607868a4e85dee76abdc7948e322cab0d2dd1a84ee24d4fde22a2576ca185410bcb162655304944304a6e6062b81fba0911817975b7e36e170242eddcb9244b97a1e67651fa5ca2d78888e7af7937a6d6922ad118204b3f0d54f486ba8186c1169bac0aa9d74816c1f045304883e600e6a544a4a4517d453051ac63f43fd748864952b30886fbda3311f008ce2e2f8289629d8231aa83334c0f6e981725e2aa8179616efe09acc1239e1094e24d5a22a0b530266ab630dc2775a12681d2d820194d0c32691ad44c7440ab590b23d9bc66511d635eab41cde475f99c8d9ae738d0cc9e9d3ecbd3ec5288ec961a35ef43ded9a8290b3073742a760e7a0099cad905cd94fc9c5c7b373e171e80264f9c65990e5ce09d6ebf9066dd2c014f8ec6ee1ac9a09b43a65133c356c432521557d385be763003bc7d6a2de6f501797a827438d8e28515a060c11524bd6ab3c290b19ee091448890c424c2cd8cc9a954ac01714cac310fb30b521472cc19e7c48212190868259f4f2ba682d6911a2570212587084f0e1452f4a00a1fd01026406104244fa032969303edc808ba808522546af3f280925814416881600a10e8000b399f1796162381112ccc20460ecf09a6c0420a3ced6513822ebc4c80050fac60d96c60be6e80850e9c7242608328541acb5848000192c983841008e9949403c70a81109e232170420ddc0c1611248cc0065038a12623b53c50841c2560e85e57e83a5f552110467c65758c58510061c4ef60ab1210467c66eb09208cf86b6b0a208c786bab0a208c78cdd6154018f1b7d5031046bc0eb67e00c28867612b08208cf815b68600c2889fb60e8130e2576c65018411ffd9da020823fe64eb121046bcc956174018f1255b5f0061c4abd80a0308233ec5d6114018f128b68a00c2883fb1950410463cc9d6124018f126b69a00c28830ba8f2c843044af164218a1472954d8da308402074ea82ca9822bd1cd347473ed2e8b755994252312c11f0ca1b0029d161bb0e039e1db0e63142a862d364081338d3c7562d862030e609225fe95e7111ccf792ca922ed00b2c4c720e078d0116c4851e0788e05f26c38d8e2043d5c4d224f5481b97b10ab633d26e8589f62fc09450e35b630bd99ce3c7a91725e5033cda13911f4cfa910456abe92ab6f3bc5dbf5583da85bce0e308eb87994721c08c4799f6ff6e309699608579e773d564f3dce248fd5da36d20e2967cb9ae814e8ce1607218432d4dd221d8b8f9172b4da979443e241f56c620f66803d56e448f1241da9f268ad1e8bf4ea5ff97969569bc7c2d163799f6f6d3f1ecd922c51da8f879c9135342bf819c1466df7c341fff598f2f370f5f5d080f4667d80eea7c3056fa776870bde36d0fd746c077d3be862a0b10f7a088521b030fdc7661afc71c1d4422804a185a585ab0ab87c3dfaf2f202c9de87ab69bf1e4056d06b80d4f978cc191b792349390dc872240b8f3b2389dcbea496646141cda41c1b1d88704152683ef1033ae0608bed6d631a056f765d5ce0330d6675bb4266c5df9fc59711acdd58b357382fe6b4da350ac216863bc8e113c9157832e4b90213f847e30b94f08f12963cae1efca371c75fa0847f541c4fd3310867448bacc5f0c43252f5c17ba7f9e0bb3b63045e1eddbd3b137a773f38d39dbb1f3c5c6da7594d08c46c8839b51640c0bb7788c9ddbe43ea115205e51090c689f77909c09a8ae1e4b81774a7e9ce83bb5ffcf6eedd797c09d8defd8b97c7f6eee3411f3a7d8866c57516ae42324219fae27f44fc7dce433b77d023eeec170fc4883c100e7479d47707a27df17e9fcb83bb76bff895bc3cbad703a9f78b778846cdc355779115ea17af1daeb86befc179ef0e4474ee3d3aefdde14a13d91ac9321ffa4cb4a1597121fbc58b449ef7d079780f5d14ba0d902cd3832f3cbd21a8196a852df141406cc408b6c46fa143c9023a67431686a0673f1eddb977975efbb134570835acc5244dcfcf1138233ad6cc11ac8eb1c56c6ad9136a863d47b43aa7a94e9fd67ab76b24c71c29e5bc4d2fbc996ef4d066ad664e9d1ccdd287cfb4513847ab668de86617a17be4f11e8137431eeec215d06c8133ecf95ce8820764440f2859a0b4e93177244b1fe7e3d1cdeece1ac9d2034a16eed1eb0187e82ed3206ba9fc78700771177ae768562ad0e3a95471e7ee0c77ef528f8777d09d01ddbb50b24c9c7953135771d55d94648156c67e3cb6ed342bd0e79483366b36b89fb39c4c07f7744996e9caa8ec1611abd8a6cb355dd3355dd3356b70c71ce98a3930fca33f1dd9e3e7d4d9e91f1461ea4c9d39a78e8b5c317c6d34990c4941a58a06c61a27ac687560b162e53b994a2a2928272493511585bc8e037de8a66513b6346ce9179110de0e126962cb10f06c810414c4c23063a27252d6e09e1d6d18a10b8d872c6eba5cac5f469794794657ecb9c1e58c8748c6232985316ee7f1bc5073c3f07629cbe6c42cd3ad67b39415b3182f6ba382b23a35a4515366358deaad87b23ad535b6f7261f57f2d6742b7958bc084779e74bb2441cbff5342a9eb2a898ae6c0575ebd9a868155df5e57449d57cc7178bb5035bf5655f8200d2c8de9fb1f992aacfe931507980fb594eac114f8445a4c709d808898d9038cb9a4c0a36e3892f5a47b2f4006e3c389588ce0ddeccb053910087b019f1a3e22d0e6f802ffa5494c00c4384bc307ec1a0193622b8e3372ae276b79e4635ab6364b7c8c743cec803e1c0e7f27e3de4e53522bd213ef3324d6b7ab69e4d47aab66dd3d1d95c3a948946b54baab6374096fe063e80fbd4e5da7a284ef7b51a548833250265dc8864648034f01a60b146842fca001b0d3095dd843b0e5abcb954c9153c8c352286da06456e22f106c715cd699a98a528918f31ca78298459c7b358199e187a3a228bd52d1971d7a998ade086a7a665ee1adadb87113f262ec2fa7ac4d57c5ccd5bd3ade67bb0fc973de24f072e92810963383bccde974a200b43ed43a1f6e5fd12d0abf97888a3102cb19c570210865bca74cbd904d16709b8551f1dc9123f3a2e9f25481bc9e26152911a3f3ab0af0d19e1fea7a55d481274d58158c5ca08e849541788f5e9d1be7004f761ddb2e7cf1852da0bc601cce70f19701f4601d47c359f3f6728f2b9c8769f575b53579f6b5f80a93ea6302754880416ece00c67e9d2609dca14b6d32988041648d15a9246a229f9e8c81c1c0f9b075929b2dba9fd40d8f2693701bd1a3d971e21cd6ae623647ee36a403910d6c89e1b431af1f09cec2865a808f9d1a9253902dc8f2ea89fcf676923411063c80fd8c81b4823be2f57006b683b802ffa392d802aad0790a5efe2e2830f3becf07d2412ced2065721adbdf247077fb2afc112304fdfe3f3ed0221fd737a8118e141fabc9fbc454916c9d29c9450ca5011d1b31e8d2307553ed39c0fa411045803f426bdff190254a1945eb4c785631f1d1bf9b3844fcf00eaf30709b87b2582e209168e387f74907c763a95c1610adc1f11924e65ca834517c9a0661a692dbd0705b29d5eda2305087dca859225dabcb1703f6bb1ec32adbd2c100aa4bd046c0aa09fff787cbefdf3edb63e1ef3f4f3f4521dc94273244bcfdb3df6733dca035bfab286c7c5c383436bc644cdf3dba13dbe31e5d128a55a4e4e3f4701bd1a5d0de7a3935dd3b418a3a6c52ccbb2cf11a08a36a491fdc3ba02ee43088b026e1afb441163bc88cb8ad0836c911abaa2afb6a6b4da8e628524815a6daf29ad6806d3b2386f680693aad14f3298978ddea3dbdd5c0fcaa957c3a1301c92fdb4acf43e3a6fa8107f4308d94e3fc2117fdaa7699f197d5ebb3c3e15e24cc8fce80af9bcde4f8cfbd8695f5f7c3dcd0af6c5fb182f8fcfeb9d8192e573675c3bb8e1ea33c4474764e18a9aa166971f802dfdedf492d523593e3ad27e70b430bbb206b6c44c8956a3d9cc6f60a8f9a393c1b258c7f850d12acac32304f73f3d3a94d65a2afd28944bccb42116c46a548384344bffd3922c0d1a82fb9596ea4ba87f74502e9f1e1ea9822bb8ca34c6b41e568dcd76f3d1912cadd968383507a8f0082c2ab009c3d61c62d01b625ec64e8c9f1affd1e9f8d1c1b1e608d5c8e2b3c4f0da2bd6c8aedc892fbc0069c42b99005ba6ed55661b670f220535bb19f22c51755a9f9d0fcfc7255570d5ffbc208d883b5e92912a33fb09027cd1dc3b1028e4fdc0590cc50f4fa3fab3f391e233856dd4e7055b9aa859c3c1314967cdb4c17d0da74fa98683d3447086ae19ab19f2fcf3041baafce8e0a07e32056854579c612b4703a44a7b1d01630fce289754c99d1d2977b457bc2fdcf3ca1bd42c77707f7486b04115bdb220d28733c437aa8f6a54f745dddab904bb41a062452a9aec54ec8ccaa7e0d1b41ded88d6eaf66e341ceab5b985606030494217e6f57943cd5a0b060693a45130af4f4f95dac70d75cad2870d55eb9490520b3d51a34da3ba06155e92467528f45128e47dab716eb3dd8d8fed3797b16d5b7779aeb3dd8d4da74467a349393b9bee26743d58c7aa61b91e95d6209c96da6d68da0d8debe96e3a65830608479b9ac6718f55d33419375324af4ec5fb50b3e6d29034aa6754aeb56453e9bab9ca124cc24b2402a2647aec800d155aab99011ce57e3c50ae72953b73f2c81083d7ea6446e533abafb89195d3acbea3540208009bc8dce47e3c482627fdb3340643a150e827a1d027ed4259060e85a80807953ec7e0cc05cebe62f34987b32c7b7673e81cb52122211bbaa10f6287e79d06cfd360104e06e1b4fcd331bdcf1d2d9fdaab93783868cbbb474fa361453091122b12f5d4d7cbb8f9366ed7b83dbadad55c9a148dd276443673011c42a0b342b1706561908687fb397b8d4b160fb480334ccfcb82701ad5842498c0b1059b908412b857304b22171a8787ed6684ea51dbd5b039e21a46b20d09d5a3af6f79731cecea591cb3e570055772de5cc2556ea2f9ed36cec1bc62e83054b862ac313531e421d921f102f084b14328d8c200540bec1d7a388ebd5bc40c9e22d145306b6d58eddaedd0f39c3ea6b6d3a959ef9c9c67b51dada51dd15ad9d67937364ed35ada8e968594a8b4160a94af8f7e068d47ef46eeae8c1a16623ac3866e1a65f3c98b55b50b480e264206fe7464983ec3f4827088908143447260aec6a80b6d35ce99ddc9cd4e067671c98169e841d467cf38cebb4b8d3947737673ce19aa5bddb66dab5bf56ea671f98c7b9a8ddb78c1e96932ce5919325efef24245e3aa43edf21bfdb459766efbb4947e4e3ab76ddb36ef005d0e6951e450293d0d4e5e9394d65a2afd2814f52e3d28758460ae5d998691a16b21ef6a39700cba51e9a3fb767dd038bd672711325e4ee333685cd8a8975be3f4e6172aeed371ffc8e0b8ceb22b82512b8ad167114ca44414c3f2d3da78b539878d732e98ca28b5c69d8a328e7be84e4a6bcd68d7ed8442dfacea302f1a37975c5c64dc5c51289cbdc6fd87927d94b164321a959d6b2f888e66e7e8394e087ab320b4d3ced64669d7c667d8c83c1d36321132a40dcd6e36e7c05b1613b2312e2e2e5ca0502d5aac60bad275a173211a1a8928bddc3b2e34236b9fe1cd5738ef79f7bcdbb010735e4f1d539b53cb2e2339d9d9681a9c03d37392eb1a29bdbcd9613c7a373c213ad619c4f69b9d4aedce38bdaacfb84cdf50d9b0711969c3ba1c86cd415c78c663d89c03cff8ec3e9f4f273d0d49156921eaf290b7a3451426a0c10cef86cbc4d905e134aa5fc342dc3aa2b5b41d4d0a6d8a8937ad756233aa7580522dcbe67c4d810b21229d822d297025b270d56229507a021076264ee1660d28000288073189c208d8b00282460142a117de47a36f4ba828ff201c8d6a1cd4841ac3848d59a2519f8589d918251ad5a01e54faec5aee842207cddaedadd5b8dbe7b9cdda98b5762af9783726b556db916143f47e8876b7d2b8b4326ce8a6e23c23b24580b8355f15e06a15081a57048b3a435e97f694c6560f446093dd4cb3436f0709d30a9c600a04012c9cf1c8f0052492c456a58872811a692ba831a2cb699f2519aa302fd8d2d750508b50f31596e01f8d8b00025be0383b77d1517e42bf4917987ed2a35888a305ce6e0c6ca1dd4330af6a73c9669831dc087d643beb9d5edb193dab70f618b046bbe08b7ee6a205fe9e5754403ccb0e8415c1244b775b8d6759486b89585043cf5aeb48a3bae5d6a2867748473637164459d4839b9569f0ac7905d7dc02d7ecd985aa6b960ce5f53506d2d0ea433662eadda828367b6769a3b28bac8b6489554e91d6026b17c296ed667a3a2fbf23054e13a39ad11098921d29709aa8358dea3a447ebc1b19cd463ca31d8a2f254a8b5a52b55d58b7b7eb0c75fbeb0dbdbe5d8d84f3b677db16fa8ef2067c2877c6080f948b3e03258be8ceb8cc6d7b769955062e6cd6aaaf97e92c66322a7d6ba2e62c46e9e896220ab71c8187db975e8a994c259ae4e45693eeb4d1cd62a34b6197be1aa53aea2a37d31e9e7265eb28aa8ba2b487fbaddc8b6a97c58c98b8c5e69804cbffc870d7ddc55d9c736161fd5c7c5fd7d98861d8cc8946c98b6c96d3ca763a05339d9afa7da19eaeb1beacd57ccf62df56b32952ea53442ae7b84a2afda4f491e56aad95542addd1652409c5a6d49494cf4ed5a7a4bca67c94424af9c8a6a41c7aa49414914afd50dfab637c8b41c580c43e543ebacae34524947a145beb68f4d929d2479d3df989744956855351f9ecd4e82a1cf48238dd64b25dd7c146a97c6467a3544eb2a5915539c9aafcc416a172e855d48d489a455ea655ecc428951b5d40a83ddc78b356b3724537ee344a561f7a30dd3c834d436c1a453a19bdbb1023a427f1d5cae826cfdd4f6e166b941d808fee663d375b92c5629d3ab97cb624eb39c94e462b36bea2899dac59d328794d0eb5ab2417d7a8a82f9ea3cb66f4e892f57eaa9039a46348253a86bc89894d7d64630eda411dbd3b37b28d793a55ba3f1a979e72ae64238f8d3b2529c51c6acb5bde3d4722d15549d1f57ad2bdca5551b97247b6b438847050b31874319a2c949b293e3dde4c4f6eaef874d1659dae724d6e461a8172aa0e403f08ddc00b43b6e4f6740c7950106a27630bb483dab83bc908b51b99a4625cc61ce6f265de401a26a4e7c63f1cc21a592bbe90ffe19987a3b1492bd6a0aff842e66c447aca66b118365b1263b31e189bbd580d86d584bc5c2e5d9e1bc793a3bc9aa868433a253f958ba3b18a49c5374cc8164b8564425f49b0c9d56aba2235672d9cb53a85728bac5c9edc88a4512ea95ab9b13399431a25491f8d2e4957ee8cac6c1da1761cd4a4eca8699086ba2b3febc34b139fac11d1258bbdb0790ec1f23fd86cc226db62a5ec7ab84cc71d193b1737d637539e52ed9034aa079b71b1ebc1c2950f3edcefc65774356a1352e103c06227a9f2502a7d10f8ae2c9572fd5eba93f5d959f37df55f8679287d3cf0d05d23261e3d27086a38ee4c2653f7fa7ddfcd1d8eeea5cbc893e521560beba8f230e28187cac328abdd0e33f8d45d790853a5e7eef54e16d7d959d34d21a511abc644b6266b0ae95477f959f3753489b0578eb1e88aaeefd11591c0b07c7c754d2bd12a2e2726e91474c20e5e363b880376020f96c0b98744585cf275384ccec3653ad3e0cff4d3216e61230640d7d9130f3747ccc3e5f7ddfc23435908597ab010b2ac580859b8ac03808d2e58e541beb399f4bdb3dd79b0114757a75a5c3e22912dfe41d25b5c58230b73f027dbdd3cf1e9a57f36cfe0efd1bbf19decf7e188d8e4a67f3aea4daf377d54fa674b9d1abdfb77baf48430bd744ff683a47e37bdb37906e7d14fb7b339ce53a9fb67f3e36c2a3bd83d9fe00f77cf25fcbd7b5ec1df771959b2451c814da377429c6c111b367d76a3aebb9969e22dd6a9ad67a3a2595408ad19d2298d2a41e90ed7488e2e7caf91e8ea14bcc6ea5af2b1ae3bb1937a96f4901dfdf6f46abf5bdb5d071b04c4a59bd8202036e960ed56ed6662b7db4d07bb29d1a88da551c1869af148167979d96a94943b1d431a09b9a166d98a36dd64759f2c29bb946f375225bfe7f88aaec8d332c9592c6f4498c029b745ba26b7de2c5f5896eee99a6e963d583681bb2bd1a9c6f2bb39880dce272782fbfe9d4ea667b16cc935229d8226b0c9a8e8149482092e2c6db0cca42012039cb51b2c351696da102c7f327d496c8f6cc31a255fb24d85952c2944d6b0b02bacf46e748f2b992be3c9a668d4ca952df9dd58c8eb6ea6a72fbe4cbec8f37d1f4bb2c82fc726f097c5f0f7ddd3e1c9d24699ce653c389b2273653ca125f5f4f6829047aedc6994bcc966d942007c89d55d764fe98eb283bb9ff0e0ee2417ee6e722855dd47dd2b0ece13772fa9dcd844a3bace869e228f624f6c9e364f2213a7da3c75b0bcc86622620c770f51ba92cf5c218fc2426aa899da2cd6287990cd96643d19151a4b1362b51a6d48116a86a1142d3003ce590cd318863bd0204d136a1317db9004ce66c239b5eeeeeeeeeeee4f2df6e4628c44ac606d5a198dfa645366eb3a053af7eede8a8c8cd90519363c9746718f37e600d3bb013ac010dbcd51a466978e2b2da2300113387e7e3ae657704ca3fa9dcda6825a4b524ad0e5876e975a10872c2518679c9abcbcdda5000acff896ac82832db48fe7799e0df929323760a359e46d344a3ec6854606429577f38fac6dfe675b438d3968efe0e3fe5cde46fce48038de1fd90e1dfa34c3db8d699474c1f2da2d329fc168a34dc1660b4590748280cb0ea98d1f0590812fba41081f23bc2d8ac828886c71dbb4166b482c40011af0802d2527b270c7211016879029008f2e52f3d5bc0568961cdc33bdd77d1aa0d91c3266a85a100568544316948d4ee506e00d045df273dbd34131bd0d08c8885746db68944c017268314614b6d13264dc92646989a22d341a060eb698e772c489389d4ad22ad972e208ee88d37107f7a6652e3173c5452ee6c895bc11a7a7e64804b75c45223312e9d4bc45e4fb918916b74a9686de4aa39a769d7a139942380853a3b8424e1457c0d1814805d90e524bc40a29083593723e27e54895a4f6a4511bcbf68f2d358a88956eef0649a75f447026ede46c9b761a834a0f7a26ede470949443d2e918f1a01f803e1ac84eac812e25e5b436d063ddb6cd1b52a4bff51dbd94d8c0074ed868f484342a7aac4679351d235eb4a4e6d1cb074640ff9c9b9f47c9699db703073c887e7b1ec13288da0eb211a2b6ac014c630633503fc193bd9b2110468d39a81ede302907d2286188b977aded2010a5946ef466d0b96ddbb67b93725da4dd63c775d7b3f97cfac80c6278bb1945ff3947ca694a4ba50f67494e70249d4c040ad36fb10523cfa6515e8d0f6a843422fd066f50788dc8301128ecd9340a3e7b4b6c306cad41098ef78478369e12386ec1099c49395b68421557b0a1ce13ad6dceaef3e65045effe04e9088e209b51284cb7ed9becae4d7bc90202853ea7b4b3b06e3f24d66192220c4ee0cfa1b76d9f679f0f003810c77d6225b9481f10d7ea54ce72f09108cf719e37a4539da744a74223258dca2318002c44a17ad0621187ae166b54ece1661a1cba11bada92ce166951f7892e8ec6a28e27e9905e2425ad4a213dd12908051bbc7004b1485290787856900467922b6403051bc470262521853a56a78e8084744ae2a889200698e444b3c4cb34290708356b313c218a5ec3341f4141d796ccc4744cbc69b17ebcb6a4535bdf276c90d3a94e7dbb01c601ceea767a41769464f4da0e1ac1b6539a953cb7593b7ac5d7e78e92342a0e31638447534000425ab8029808010869e1221cd8602bf9de06d0cfdb1dc1e81dbd46af11ac5370db6c86c0826d83ade08ab5c156f27ea5d5254b74f9c110307dac2010c8b3f178f46a8666d5cac1413447defe86e8fed743c60a3aa90502d14b296d229b3c4d9f07cafbdb7665ccc8a0f9b69b699fa7596519387edbedb7dd2f012897efd1fd8b028272b89245eab6dd1ef2f30231c243fb3c90ecf23de6ebeb05a2659403549e9263e52baeed34c042d71028ff140057285f8f1d4441074828c161b156a64724faa423d11788912f0173f2183dbb3312385c9d1ca58a0a57df2b0b4d2c690311166ba5557b72397a5b23dbd5deb7c7e47d8f9831c2a37f3279641fdd99d18c111e75ce9a9bd19d89353724d207c09084287481088b057b3e3533542004179860045620b286155c91241c9d18e1d13b7d933b13fbc69d7e8e381747a77176e06a9444122f9ce1c55ae5c6c1f12b6ceb489658a47e3ffdbbdf761aef06c79feeb7dd218478f1b20615aebe1eab9ee7213fef8c914d5e1ef2d99d89aed803931188111e39c2700432efc7e3292a4fb9ca9d31f20d21af00b892174a961e5a4f0acae00217ecb058abae912cf13335bd920fc27acafd78f45fb1278555e1aa6fa27c22043e78c213925c0ef4071b95493d3c38be77244b14ada0e6dec1b16e37062d50b4d902a6d76a97ae914cca6139f1030cba99b483e3736e568518d9de362ed3086fdc0ede1ea18a6b6df5f36e71c4b16edbd6394338c3b66ddbce15a6e854ce9ac0f1317b2c2ca4539f4ec19d2b1cc1f124274847bad1ab532ca794927628a59413853e9d2b0af4b196a47323e6586e8e1842da03479d68541c71f4428c84ce41007fbe59924ea72808824037d373979443d2a1efb6ae3d4aca21e9781b2907c4ead4f6d1ab51b08eb14155d7f95cfadc1f19a6ef3ead65e9d06d0d752339d1a858a44feda9134d733ad58d92344ba4395467f422fda092741a15ffb924920f2ae87eed6a248d8a9f81ab550410505aab110a80ab9953449e23e548958784c81301f59410e13c7a712da9a2a552ad510af53a3b29365fc0273c385ec3100a1c6801e7d18b84618b0d3ac010431e1d3cf1c1100a1c4c81f3e8953dd609450e55b240ac9b9a3d160ecf29a503387b399ec7d2f14e4648f9829a4fb1538cd25c21e814dbc1f4e60cd329f1b6e18d08a86ad75ed9e8e51a652ec91291981f2131b7c31512dae55a92255e20f3723b9bc7e25a3c4090e8be76ba0a1024b24cbb405a7be9da532a10246a7d76d333d2514e04099377601e0913d20552eb575ebf9f5c20488cde810957488c3e5303b3fa2e1093f9eff374818c2e121de82331fae9a3938ec457dce4f1b3d9be1ad1c702000b16f7d4c34d2c0b9e15f6145bb13ad47c56071b1d6e4c3d362b363cd114e34c30ef48985cd34bb244244cde81be40e8e10a09930b254be826d7a98d26a84544ccb5604b7c3c41cd1e8b050ef6583938af70e9d0a006e7151b163c52c582b260b1e061c162c1c382f5cc82e5ada879e5789596563c2705359b78e20a02e0148b4ad488f38a9a159decb15658265da37d642359a24df614979b1f4c2e90f9930b647412942c2e1e47174a16545f04254b0060fd8b73ad159dec8eaacbcdd0f5e266fac3ad2d0ec24437975cdc0c631bd7d291aa0af3e1665a5b2c3797503a387ec546aa2aa5b5545ab1e939a5976ba15078bb5cabd5e95493c773ad9dee4f9e1357ca2b537949d3e12c1edfd9c0aaf6ec261157a6ecb96b65d94ff5b9dbf946cf1dcf68f4159315cf9deb747af60c5ddff7fa0c5f2b3789b85af9e819c256dc24e26ac54d9e618cf493671794a73ccb5079e919b674b82c622c2e0baec542c5b28059163a9285c58b450e0b976479e97023595c3ad848161e1d6a24cb8e0e2cc9d2b22c7a2c0b1ccb820705d963d516974d3c3d3ddc8cc22c583c2b5c38389e05ab59d47476538f6489365a0f37f3f12c8874bfd6c77a4db1adaf89ce6b7a85b46b724900cc64d7c413bfc22555da35cd1e6e7601c00a97e8661915b64a70076f2b70a46a2608695503b34a79bcc792aa99fad1e3bd1aa99ae99b3cdeb391aa9979d2e3bd1ba99ac98ef2788f8854cd683fb91c78564046af2e266f19a44f9567d89aa98159a9a03c7bca9d0122b6027282820a5b4cbc70863d3d28f6abf96cecc7b2a7913dc5244b7cb5df8d6d9d62a798c723555f4bb2c4c76230d8eb15c339a7588b476727a706346002c288871dc3f381133df801108250c40637c041134218c21344288211726044073be0c1c6d14715d4bca28607c7afb8d1b29b90ea490aca274eb71292848c95ca4ba6d3b7a2bd6de45cc14287d1cf0391554dd4da5e4812a5d5bd9024eaaac5852441573baca891aa0ec82aaaa84248122e2b1e6e4d02b5aa484018f1429208523557f93207cf55ae9fdc3b393a38ad4ee57883e7bf0afcf8e038069c3f4ee0f99920c0792576436b687c4955f6d93ca1cf18932cf394e6502b9768d47cc84a228d9a9225c6b49b5d6a7b0adb481ac5c11e7d44974c7c44a24fcf8b409f56cc894ec427e6a8cbece6ddd81e6a291a3521e6ecc4312655b226e3c1f36d5d3552f5a93b1f9c6dd4af464d1f9f839e3fd7f1b9cd731b4956e5bd7f703af5edf81c74d0fdea21161d1ed1a879919d6914047d624e1401871eebe7b2e6f3e9ae55213d45c798483ac6fc3e92894ecd537b71349e97359d8a78a6e0481df9c4bc3c22959897379f8de27c9a98df3a096c994afcf3ee9bfddc229977630b6d355295dd0f8e6499ef3e4e346a7e70f0d653346aba22e62cc41fd0e97ba751a0db3c57dac8218d9ab2a651f3db3167734f81e743b646da4d8aa69f6f979cda07f07c278134229e5ba6f523e99bc228f09b885449269a65be09ea447d024f2278ca9b46cdb3a17e74662b973e3833bb99ceb71744e3c8822df319ab87f6991e6f27860cc159657706c2810911d8603513247b102d8a1eb456d9354204e81127de489609ba5fac1972435f46c09f1aaa517abf6883e39cf266e67c6e9644f0943573bbf146aafad0e3a152862eb0569f18863b0491345d9048a305699aa80d71050eb6e031443c408e190bd02828339946c1731cdc3649e7b7396d6c312ea8162b1842e078964a10ca9be525027e64b284a17c9e535228e19c519374d29e71c21abb28a611f8249e51eddb85daa74475586e5a6ced1a3171767f6478deda3a504a2965fc9c180c45e89807ceb065db2684c796c91400e638c0109dda92c0600c5241374d868d03e4708939027ccbd9511e471462625b447bb45db36454a81911b87952574a2d9e3dcba09d156294533641d492e3b8199cddcf33fca14541f841d91f8d21ec30bd8b4ec1ec2de16524a2c3123e42083b4e2a88705169574bf394d2811a0fb12cc2023478de928b15d8d29ff21e3efbcc2518219c301a01a1761ff3f46679e18df821a5a7035edef68228425ed0b5bcc90ffd764bf4f3b90ff9155b6a547fd3b26340c2fb90cfb24bdf29798380187ede98a718099a894107f5ec17075b407ace47f6797a0e12a04e1cd9e72727ede6853a9f59b96ddf3e3767c740c4787eb3f3dc94f7cb3e71f6fb6517ce7e9655286720dfa94f2647a39280ea5cc2a56ed8b04ba52a65e66dd7a8796ba3e4b3dbc9489509ca4f162ce523f44ab0450ed15176c7cf29d3f015b3243818810a95600525385328a0c0092c21a5f5f11338c20c6ce44aabe91a0c375029205f0442e1892628ede42d425651052e120fe165cdc31eb18a55bcac79678c2800ae38c0824956b1c7103109862dda0c4858420986478842bc0b0c91b0440b733c3847ee302ca1eaa1aae776ea1a02aa32eaa245e45bde5921eed897ba5e1d235eab41cd34b875ecc83204b04c77137b9f96880e771ca5b7422cc408ed53248d7285de37f7b3c7a697bab22844df0745c253e716b2d97bf3d4ee99bafaf1003478e699bb54a6aa1b926689d7aaa4ae4d49a537db2e0907b5efbd2dc4ed5958435e273dd99d886e36ed1a154f8d6423a819eee04815bd026489ef028e1f038e69c0f18d13a1475db02566d4c5d359ab3b6be158bb3bcbb4aa5dea8af3ba3816c7128204c773359d12e1782ee7895645265edc9016b876ba152b2241055ec099c3e158abd9399a1822a7014e40200812104205867044a7727c82d5a91cdd30a7c0f13923c14da7f2a604c7c7d322450ed0a9cf141922813b4ae092189ce18e90214a7800e7b8048e49e01c9900f180a88bee501c1cbf29e9542c2381f6d260592b232259321b1c3fa7e8946bba01d2200da17e34ab1e199fe8546c0d01d2e89e13afc024b8046b1a73b510208d6d932b7002eebedf5bbcbb830069649602f00bb8085905159808980453a07bc0821d31c662617a3f948bccc22478b3300946fd738971c11196b9a2fc27c3466ca25331ded5a2b02c86a36b4eea923c18eeb09d6a90f164ae6c8a0cc90faa494e1397e2d0d34d266d8869343275105ea39369a74ad3a5776374e91571e3741c119b4e37c674986e7c29f91e0bc0a17783e5320d801d291a6583badda0ae388bd1889ed41a832e8a9a27ebd391e1d3337cba37bdeb01dd54d8a8110eea284f2cba4c8398a8a51567814a297576b4f21e9eb3d836839a27cbf4daf560572c6772e899ae66035b60504dee0b6ae9544a41315d05448313131256ece4c6b86a62fae44cb225598fc949d7995e327def4eb65a959fac1459b95f77b85ab94a446289d49cc5648e0f78d0a15c9185b8fb89edce657587a34e97a8e338dd1c5b1554249127368051b258ca8989a90713eadb17aa89ea2829e77ae841544927996a3d9d4895069b44a21e26eec1e446178aea0a893c2bc028291749d76da1c2469d5c63ed60bf11e9e6194c32627232793e9d4e37e59f9c4ea7d3cdf5f1155d1189c9f36e944cd1346b4cec64b9e22be528b2b57269b24912023c7239b999769d0b2a6cd437b29887e78b3c3b119b3aef463744a3e4bf6bba5d2d75a7d2b3c964674d77930fd33f93a4d464baf974d3b993e9eb66fdee7d5f57e2e90afb62ec3339ea288fb5eb3a6e87c94d3fbdb3a68f1b4e560893773a4cdebd01ae93a9de333de41d80064bd34f77b2e0ebc4f4fad3c973ada657214cf7517faab754bf8a52ebcda48fce91ecac619946271c3a5de41d800647d364a9a4643cb26b0fd5f499bec76a7a74994c25159b62334dd249a051f016a0c144344a1e06435d216d73038c72a36be596749881e269d414456a8e463a5214354f565cb11d7c96ad06e2f28dd3a90130d12901d8a8711a976f56a74a8f5460290fa387cbc72431a787b48abe5e4a3881653f81a53c220596df5723ee4a336670a89fe25d5cfec8381776d6dc858bff70999e359d72f103ebb35d6732a9745de9742a62c35d0e82ebebf7719fedce414f0853b539e26a72c1dff7bd5a888f8869d4e931753bc9b4a953a14478b024469cf259631f8aae6e64272bcae892d60b9deb739cec524e4e6e4b6c0bbba34bdaebddd0cda5167be33b97e2c3b9ee5a46378d4ae7a08763070dcedd47e7ba3b59141adcbdc417f523fbfdc4e6e3944f0f87e829f7c487ecc3e974329d4c2e2cc42e2cc43136ba7011f3838d481a15e3c2850f3ab888898989f1e1312d313adcd4d2f2cee69696bf74efaee9272b8b90f8f49d2ed3dd5d620d939b3e936beabaaeebde79373a19f9d9ee2656243a757f0179373ad377979494c774ea7bcab914fb9d4e2ff18549e525d6309d38dcdd38dd4cd3653bf388c4a6db6a1b119b6e67ba4bac01b1e9c634aa13bd7493e99974d3e6e188f8f46c7294938f6e7a8a858dca29371d457447374f5c3acaa317848fd12736b93e4e6ef2fba333e9de3c33dcfd25d638b93e483779e9eded30b92ff14529e5fe689c6970e926275d1fa3cee4e6987a93fdcec9ae568be3a474141bb1892dfd3421ee1e71a9b39cec52ec89ebae644d9e624fefec88f4136b921204e9a39f506e624fbe8fac3d8a6d5c2dc42fb106ccf69f98ee269b67b089f46f64bfd247f5abfface926f6f47db77ea3d2f7d1573fb2a451e9abd747f798cbf4f751bdb3515f674f160826d93c137393fd41e5e429e76e78a29f441c5fb902f8c74908e52e9e679f3cc574ce748af9174fde8dfedd64472fd93c834bddfd4cef4efa4cd7e49f69067f259b6b674f26efbad34d42d4979e273e8dae8efad26be99e4a37b1b9dea27c64b3e925d34fffc1644725931da1e4efa3dbfd87d2f581f2d1f511fffd68d3fdd118e5ce4685dede8e987f8f9e8e90cabf9be19d2957e96e8e38e5329d6273107cf2fdeb4ebc1b5e773a31fd3b108e761fef86f7d2c9d7dd74d2dd93923d39497d3f647c4557a964bae749ef8677eec4e476af9674d82994d773dd91748c8e726786bf577bba894da9f5d66e76f53bc99e9c647269a36a3d097a428caec99d8daaf6dff5e1b5a7c3bba64c7a8c9f08f0140b65fabb4c77875e371aa1a0fce4a7573b7aca177393e99dc94fa7959f4eaf2c35c504e50540b91888f8fbe8bb3eba1d3137ddd475ddb3e916a0c1dd67eb4f766475d4fbce9a0ebd20ba9b40ec91ee7213d37772b33de9fe686cb2a6883def3157c93fb07d016c3e02db13c0e60edbc7b079065befc60fe77ef8c1fe681cc40cfeba98771e8e191d90077fbf1868fc5d6b51e450bfeb03c65387f1ee9f97833c219a85bf978eb453e14d2693e98f1d5e3d974a5f61d9653c52155d32ba94a811d736a56aa9642a99645e7a07f26e944c8771ba8c946919fb3d65f3e9fe687c18ff6c1763312660b783e9f6ebba900f3a8db484da5da64df7db01fffdbb3e5e705b91eada6a5021fe2a807fc0180a708e3120ecd6b29b00eca6d328791b76ab61b7271a251f5f4fe8c1c2150c3b31177b88306a8064dee41c61354343d988a459a4c872a7642a954e11ba64e9649a01faba2b576ec66342d228f96883da3bd8c1ec64f850aa3abcfb91611fcef96061ed745c874e87873a1f74b8327428ddc92229a1e6e882b5ba8089b87800d36d9355a71797d45154d2a9ef30dd6b57a5778387c3d8885fd88d8946c9fb6023de36506147577cc52451494ca221a1693caf2f248175375484fa2589b0a804cbc72573763950c0a67b336d1df1ba5a3a6ab264c890701b4957a3a40fd34fcfa64b29a24b87e9ca9d29469de98bae4ebb8936a6afca6b12096c91191537bdf4cfa2c8a17637dd222bffce7d40d992e8922cf2c6248d92df3b3985148d923cde0dd3e9dd65ab51dfcd96c4a4e81853740c7929851113e34e7d473ad5c94b57a734215846d3774d9da9fb54d7c8772a759de97bc9ce1cd128d3f790146ace625f5d794d72babc8b0a78ffbe8cc22837591f44b8c02727c20526914ed7c7c94997a49bdc1cb1c9b9ef437d3e4e6e729473b15b59397d74fa4ea553e97e3a4c2f3d08d34ba3d3e9b3293fd99494ef33991c0547345d528ed8b462672ab0f2c6f9e416a0c1a5e7894d6eb2a3fbe925eba3fbe95c677b541add4fc7f7d183f83ebab05126b77473577a3d79c99ebc8800e01fa7470cbd1d193edd1da17728375988213621a1acac3cbae6d7ddc95ab57494189998e48849f3bb35cea6b29b353bd14a466cf8bbe9d0f41efd33d91c4f84c9499727a24f2f07c4279f9ecaa1b78387a3dce46d75985cc5e42293474bc4e8a29fa4d82fe2eefa101de5e4b386f46ef4eeaa9c2bd9593359a520a690d9dd1a6753d9cd9a9d682523b2e9dd3f13d23b932562f4934f928529fd94679e8c3c8158a58823f0e8d1ee18bd474fb13f1a8f6e05504a119b5c0aa09c874f88849af5f070e8dd98ac5913daa9a79f5c084e80a1f4ac4795c59a451e0777b29906e7d34bff6ea6c1df11fd72015d427222929adc4ee0ee413e5bc486515e3a3977b224286ae9a40b51ba3e48271de59f45b93c0a0fece2d5dda747d7c9c6d716ea09c9ec707793eea3eeb5fb1a76f684d67c225ce056a35adf8eeedfbb53e0e74187cb7497bb7b2bef56ee14d22cf2df65755dd7755d48092eba0fd47a17363a6fe8ba2e3bd228d1e9c6d1e8e2683c2a5d1bd22178039613c850332a7d9f9246c908bb31c9175f2688ac6c67f495ea5d9cab360badc2a8c4cb33e7b9a4754cd10c0401008200b313003030180e88c4a2e180501e287b221f14800c9fb0507e5017a6414e29650c1802020000000000008000005f0148b7e8124c9e724b2d4f071826dd231bcfe95141642f0dc7914dc661047295a96d104ac4a7ebf5e4be58f38ee5a0ad6efa7be893b7a50261f2c98cee13a8fa85d199caa2e1c09b96026aaf71ff84ffcc1b0780f8d5e12beeecd2a26f2a306a017fe9a3e29e577d1f81c0191779b165563f55e9d1e477de47b75404331166dc7b4d5a79c3248bec94b194fd9b4f3eaf2901b5d1a23453dbd7e87981e9329d21b62f2ef6c40a8a5342af092a45a0539822091fbeb45af6a2847a5dce8c4e790fba26036811d979e7b0d85c8634de9bba28d42fc74587160fd3014e5cac00d96684b3f8f0deaa0a46cd98ebc8a031fe8721299ada6c945d3fd5cb3d8aead44bf34648b3efd185c24255bb4fa2341e3f68a601bae7d5319a044da079198f6241aef2e2b1335d90ba4bed65aece124ace7452fbe83cb47c27f480fa57c79d0486ed1eb3940bb7b6807b6a7710261f845a2845f0db12465dfe5da2578a5a39a0fd932f209b073495deaef21afd39b2f538cfcf3ab28255b89fd006f43b0ef18c002f6c67bb993f95fb8d5b97a1e9e53f2bb961a177c5095327aabb57861e3d079c3090e253481e15622ca64596444d2f5f2926c59ab2e4c1415df08c8050144743b391d22c4472c5b739adf1d9189642335b2978fb99e5aa456115dd094f3bf907eaa29567afa5c5993864d0b89827074cee0db8252b95415ce20eeb804ef73b076646a0c6750253cf83d8c1f8eb26eccf1310eaa2e6fdaf1808f858548c0f4abd3d97a64b2ebb0ef5ab9ce617558a4a7f1ef63c9fd4ac477ae22888f6ad0c76050fa48a0dd2424fdfa4c25881cb6fec0ca83206dcd3e9ae39bfdb21858204e9d19e7ae084c8b31d613657aede7ab555053803a4a217b55b9bcce6a7f22d8919159c6e12ca719a64c2bc3c8dada3eb532b6c8006cc36f58ab637d98f16f78f29a5469a4c11e4f6842b4445bd4c803b1df9c9f30ec0c47fe9eb5951050d87cd6833f1a4740e3dc3d02f4969f9621980bb535a92ba0317063794990f3af35c0856033e41d1f5e92d31d2cabf030e172ad1554cdc16062afbaff9a8a3f822c272f37714895bd5abdddd93f59ed874d0604bf15414c37276f83f1b8aafaa579327c95454907471611df7e28449f335776d8725a4bea89848bebd762e774af0b3861725e966e9eed186108c27d5b5de1ffe02caf0f9d87dbf1f8e1b8e84317b9c2f473ad2e4408acc515f1b63e9fdce5908d4404de981f9388315ba8dbc96573c427cb84133395e220ea4da9a4b7481465322a9c62265171fefb39247b5b2dcd6b95b93950ea365e17788a3c362c6356de52f458508862ac9f02555e67f8d7f05682d28ea31b40ed2241914351366c8166ad7ceab8f3403c7f3eaed080542b8b8ad6063d27b2e1f434362b02aea800aa22d49c846ff8bc0c8c962096c01d2b22c3c86a8dc18723a278659c7dc8f58a57fcc8a1742e9e6061f7e968b6a1759723023d9dd7f827e3bec4e4abaf3d4c58d9acc497c8de72bd315d353ebe52a98588c636f8ab78fa319aee751b7c3e4173b0a235a9cf68d730a549239e6fae6ce17a9fa3196ca40bc480549d513dc0fd887d7ce93fe36c033b54e34de547eb09ddd99ff366ef96f5c123744e5bb5ccbf343e2345b7bf166cad07c99a4479331c2857717b03b46a67b196aca2dcf90f63ef910a0c2891a9c42a728c1712d169fce043084e8c8a67b26e0a90f485c2713c23f744cf34592effbb7be9470cafd5886827042b485c7b558f814b5ead4f4f854a40387285ab7d3633ade8472130e5c81fdb1a48f987cca092dd43017c94dd4b142afe5b4d7aa07237867769530b7240b33da299ae5004725993e2ddfec1134c3db1fc07ea3b66894d8aa4e3b78181d254666058fcc3a443c4218f204f573845157ec13768534600580931b5797d7854f85e3500ea7743569ca15e6d920b1419a8e82726b9e0b45f74d6e99c7e24467cf207200aa3f7f8507cc99daddfe558296c538cb553d8583896145aba700c9463344a6ec3797718ebb6c9fe1d5f33d185c8772abcd1741186cecb1c5def86d58ed566e80565d963532da9483dade12fa9899b377469ac12bc9414e5a32bcaae72bdfc106de90dbbbb845638c7825d594b58adbfd7a0b7b0b1ce0cc012e448e8f36cf5ef28363a4a9bdb539b72930734986c75cf776108753a03cad8fe318a527684cb5277a91289dfc8a371d1c5d81dedd80a30f22dba090a2b642c6653306038920fc3dace4b96f23ac2e44c87cc580744705c484d8570bd1f27772ec7cd65f42a548e4dabb8570fb7fc5f15e9d01debadb70907b9ba1b0e8e3da2e994bd5c190add6f22039dda4bad0d4490b6b1782eb47989d2d487b372c541c594a70a968a0e13e9cdeb562649d937aeeafa4962c2a9fa28f6837b06376c7a12c7baf2e6402278d56be9a46044c410519ae8fc78ad493827c4db84fc4833bb9c6c516541e08f886dadde23fd6adb191fd4c43e170b45af5266d1f6596e78d7f866affcce18b4adb2f6bcb51dfdde91c0d92232b40b7b559076da6d5aa42e0139b5aae32e92480a88540a8c74f10faf4ee4d7b44a4189e100bc648bcaa7e019e0bf0f6fb878d41d9d6106de3d3ff5c43705ab323987acd656800583976e37a540486d2ce845c983082990a510ac3975f90a33b25bb5b3f5f0c1c9e7784917b79428fc8f4d7e0f5f01100c347cbd83dbbb3d240f1b182a62f49cdbea12a869583e1047509d6dcb4a9608d15d4776c04dd6ea12e9c6d7488f24862b607066401cd30c62cc00c34d8b005432970eb5428ad29d9bb04d55ac9144af2695b8f8e9215d46802d20b215dcc256a0d05d64e16e24a83f309dd6c70b3fb164d3f15446c6567cf32b59e913b5713bf90f9dc77f6c76e455e7979ebb48b11ef8c4b697bb2a8044f610c5953cd149c973f913406432162562c2566af0b6cdab21eae8d1f5c85d12fc3b8f3f34146d1f6f6042ccd2b41e0b41c1d01500591dfcb1db50cd26d170e4a2ef91f0a2a01408a308c18ff25888d824149fe7ee1155b68f2603c981873e121479da697bbc25d09e8f34f75444b886230e29391cc8586dc3d1f959ce7b7f4ebf5d084853a05d250130bd68425c7d706f1ad0c25525920a8cefe7a6b237eebe5ea588957f4efee04b079713e96d632d1e58c00352a09af1365eb96df2d3cb4b86e5fc44a07f95b538fa0c874e7b30418124fedc09f88f9d6f4437f6b6c08708deb76801b7fd06bc274b134d0c756ad7196f8bf0703ae2c98158166533eafb76d17cc6d5d30daed0d26887e2f909d3825f58cb660cb58599f50741053c547aac8e7f5dc491c2bb2c64d3908ded072784385b4a778430b636a1d2fe6b0b983ffef9ee8f78a9ceafee2e00018176aae21d321769ecd41b865eff317228979d0612934a790b530c438e3c777582134775ad54e335f6d9aa8e25669a947fb34cec7aa653a5ffbad99a2e810b918ca5d399534013be5c4e99062b22f86141f71ff97b84fd63bea65eda46d097cf9c19bbd708a9f344695ae3e393c3ed9e53709b1df8b2ce18f6cccf99b5cabe01d5c8ef2350d8f384d3b88919b8f4e30d85c27828a32a1388e29e9af82f03440f1fd776dc9e7cc2fc657ea519e684e38fc0f12b4bfb53419b28f4a223fe13b8520cf2a03a78fbe5487a70613dd5f07e791d011824f9596d83b305901bdff47e56a0d684bac775ef8d4f98491744e2f64895c735761b2073f38985dafd761ea8d4a26968f2781b2f08cb0efbfe4adc7a214d6615651b76a13c8c74a241b734094c464e84e8d9de321b0793834f1dc148b383d679b878bef69ff7b4854ccf8731f47a75b5fca98d324eb319e6dc26328f0912bd190bff2d7572aa3db59994bb8d5fe2121455f92350a0c5195fa8cdbb2a2afb9cefdc60e6ae62c821470fc2934ef2972da27a5a69a082db5b3ced6c091f919e6bbbd5227418750b4b737f4ee1cfd3d2de24a461a8334ab48f04063b7f75b1d09a750f1bf5adf116c432df5c09c2dbd71ed24564f9651143292127b6f5c06c463224bce981c6cf15464cbb3d2030be3e08e708cb64a31b903b51cd9de1101f241e4049ab2a0951d1591a0a5cf9a3d50dd25ec763d27f88167ae861028c23c4678b04e6966fb7cff921e3fd3d232329c2403ae600b152d8f21a4bdfe90480a5f2058177fb0cc6f1441f68b69eed9703878412e84aef3f00ca4b3e3887e184e85b58f3a0b5a79f128122514a83ddd31319bdbdfc9cf9a9ba2cbbe0b3abc220a99330d0b12b7f394c7070e304ea2619ab9449e43244999aa1e6033eb4713616d2c7df0962aacf8ea18a2b2903ca200aec79d0adfde036b982ff1f9c1baa294ecd82a2de0b761a1e8702b5a906d4558bcce2c6e2bd9effccf378f82c69d88431483e34ad9be6794371cdba22788e73026f7f4773eeee61790b34560243057a8cedb7d75bf05660a57b63e710994175137b7fd349a358edcc2901623d968345d0d3527a6dcf9a94894c6a79a28c5b59a2b8caed05bf85b2a2ba0f92083a7071508cfa2a4452053328d0ab97ed68ece1f27b036428f257129f3547fe86819860b29448e547c13cb5c9d528eb45b41c7a4b90ff17f890c92473252c5c3a84bbc5142261d415fe420adaca71699d68c4995e81daf03cd2ed765d337e5bb71ee2a8fc8170bd2490d027ec10b5c49a9d477b098ae552fbcd1c838f482a45222eaa8040314b3d013d2ba906ecac6b8effd90b00ed3310d44e579e0193a38a51ee00f6ecc28997597c8194a752f26a8b606a6c884d4382af637f4836bd1f07d243f2f75159b480983964d626bbfcdfaa3238647d285257bf2496f2df13813c87989ffc3677cc2ad24c6c773dab1fc68bbbc4444c959f2ec23678ed1af1076d9610bfd642954bad83f0268ea118903c3a14dbabc72328babc96340924329da1b3bf1861404a5792a96d27a05547bec905ba33f8e067063e6d7dfdb96201b17731d57ce7779ff1d7d627e3ccf8c2a2e022471416410bb04e885f2166c8f86960a43942f510943a53f94555e3f3727227239f39320e3450019d9a08374da2336aa9af4b1e97b1761e402385cc0a1ca4f6a2a850da24a61b7b5ec98ec909b429bbdc3d83767b08c6a35a0c1557623c60b3085f755693ed336cd566d240d1fececfacfd6315c082b2e204d574646a135017368e11d24b9fdca0309b1a9d6d7754656d0d9e0a602c60c4aebd36a0ba84bb60ea8fda3ade443026f9488fd8e68c2f224fc82232cc86a1b56243ab3ef53a5c45a4ca7ac7a7a513089c84bbce244bcf7dda9f37209248890b93693bc4ac439f1f81dad9b22ecda19cb4fe00cc97062fbb2886cdce44d375e31f6d7972cd345d6e9135fdfd7ed5ff0734fa60e15480393dda9aad83540a6e24e51121cf2f14cde070de36790afc40ded0ee48592d61f5170106850967a9d53020160934a2b48f892eaef620878efc64ae61edd933dd6bd1229d5772c7283dd565afae6013afea26729043ddb63e17b170178ec7ce190f71f58d6e5d4726c0d1bcb434db2879f5dec53ad6a9fb1f3115b0a90fb9df69b6b75cfac37b110415aa5f22db87854a23f7aaf0ce0d3bb1491f90fafee51b1733ce481fbe0a2d2c01f475d1b1d50d5db6a960493b5d4afd14d47477bf983cead3d2b932e11baa62f8dd76835ddfad2a8dedfe5f809b9f8d810923c7a14c7abe2507fb0d760431a661ced29c9196050653c664334adc0ef727d4c94049c52ce2f57185e27e96bbd0c964361d966f98e0ebcd8506cec3aff0eff870d59fa1af7fc4e690f44f35f9b99f1a2b82ebe329b86626bdccafcdef9e9499106821f64a908ff4ecce564bcfb735d81361380d7f0885e12e4795654fcd9c4e04537393c9ea5c5e36ba5c1fcf36ed67e381439bca1ebbe36e6c25b8520205986696669ce37c621e2af1747d03e5d5d2377f372a5ea8182e16ba212b6b2c02a0b7410af57ad32900423c2d39cb7a2c647754e5b7052aac674ba5ac673be93d008c4919a131ae8c21d4cc4104dd2825b81ef865d396220ff58cf0ae92d5a65415fe48b8618e33200014ba23e7c67f931cb579831c0255144a715709aacbb2dc2812d94bee489577bd07f7e26c61948f01f8dac78b911162ae4e6235bd9e79872297d875d185706c24125d88946a67b53a79098bc842f32c10672c3e8ebd2b84ee28bf77c28d41cb94d5fd9a5ef787eb0bc71ae0f00f8cab4993d6e40d89d023afca434c1711584fe91e8d6f1985e8d455f7c7a3e27ee99651735980ed27340b2f24f5e277fcc91a6617bf0e4fe11a42676ed20665b26e2a3136d124eb1f7004ae8daf6eb36a79b2db95cc74c13c69bc4bfad46aa688aec4266d5aee83c05bba22d104740c4752e0bdc1a49054232a1c36ece057ceb83a0e7820570e19876db815f0abf0fe06d7d8c47aa90391f65f6a1e3fbf8ce924ee453f646806ce529b69fa4071b8e1bdf303b9e020537717631d701e61f8e5e0ab6604c842b3a056b6af034e58df3e8744073aeae9f3f4828658fca21f1b1d5d9db4839ae0c94437f47791d6fb99c658077202ff5dc3b014c729bd7b0b9e3854b33f37b91ee82a9ce81a8395d953d2cd280837986e4a85158657be0cd04929a3007e2fdcfb5604990cefcee043f24c3c8c41b2ac64546d1bbd4b93a9f4f4f2a4a869eecd21306ef9d5dca6c4f52ddb8ec1586d48d102cd0b0fde2148887fa71fb18b940d9c69cd12c21d8df2b304a566b4c98bfa94c6f140883750b753f169bf4e331421a5a3ccc53eb0b8b15c9b14cdfdb240247ce9c34a00d605a0686390e4cda41c379d55785064780187d2a9520c00a5ac4073f9f34bc4905dd14cbcec2b3a52e0f12247ebb94b3c2cffec4e6f38b0e7f1f0048e2184e5238df117e445642c8737c1f6d0359a73fd20d4b3038e7e1969ab199e35605d117ff4203432bc350dea48ac6ce3351708122a5af41512399c6b6cddd46907da903f5c825c55bb509aace0041e2b90ec4143ad4510df192111dfe161c610612a85ececba450bd0c05e75ee67caba9b6610f0b530aaac75f51b8113425586d24a67567e672134e51f0dd3dc6ac80e9b15629dceb27ba84dd1c13be14a8bcec3b5da956803668338fe2f47f93f8d88e061911923e822633edcbfad76f877066b0f636eaca28d92f47ca0f326377a53bf00acdf998d58a5629432aaabf65a888a3cd7ea437f129957dcca08c574fa9088129bcd2d24f33d5d9f8666d217c91d72ae0330e851016e412200ba8e96b2898ea833f933b72d30e5af38042aa38d0b0e3090c3a279f020818010619f1809c11d0bf4e1e2047e8f268b9876ae46e5d2e4c6e2c682290a6fb0533e9992c15e6a6e8968d7039243a92cdbfdb359b04547c6fcaacfd1d2a2469f97d307f03d44de531781edac153ca2b16381f9197f73e2b8faba8191292031c059b050b2dbdea0c867956e3be5a4eebbef5ea594a7a54690d337b693838e8695b4b6b233ec76c4a1466d7c6465e1baa4e4d1fb909423d73e76503c6c449fe7043d44002738a0ab450271c850bf3b4265537ee2c07dc453baa30c142e7057b386f8296b32f89c2e53c27cad852cbba886b0e4985214be15c194686d824fa66e0d15d60934741ebbf1f3cc91af417cac2f364acd0ec24e2397f662c4bff6b27a3df702787d2f2376b5f6c400038b50eef5930c9bc2b63807ef6590a8b1af06f26c0bcbec946acd5f80499f60fef14501684068126ffa9645f1e5cd54119a1c85a8028efac0992aa654207b09b6aa1b971c4cc629aa35c30b02e0ff6e20f07a7614affdf145cc5a0aa2067a14af9e826832a87a0e2c0ea3c4318dc16033aa748995474214081a47dc01742c88a695e8bf0fd1aae4b90dedaa561c5aad93419b1291cd21824484da2e8afe48f3658d6c00f07298569fe1104378e01729bf957d6594205b261c2486d2e278abd69e81c1a79ae36524aa484e1c66c7cb58d0f0917b776454829694e5b708807026ad55e19f1482977258320bbebbf5abb1d388f7af0bcd5d66bee7a29e65f456371443fc9bbde71e633883282315d28e6ea0882b29dc108cea94fc39d75650381eca007f2e55125063a742cf1e17aa89b0d74be93c11a5798056a10b406b2bc8eddd62404c0d625bc695dcd61bed5f9b3d1a04cdc08667045c9d5d4cec0a306a0c03d3e5088fb6b8b81e4129dbeb6f85677a0d66a8d9b492cbc1a0008c31a24ccf079888c9ac2bd3b74f39052fa86fe4158e0891a782888af307ebfed35a80edf09df1f8d1031ffda121d32be0ca1462960da95912465c2fd6212a6532520be30989e84a5c37d9fed58dec7faccccc642821321833d36123b1b49f02fdaeff9dd7fe7cf4b34e09425dec0564c230834a7881444f720875255db3072817da3b7740a00ca013df41ec4ee50a142df5996c507d1b7ac3a4fca4d4709acd0af9acaa2beb598bc7d912b717952ec2e423837967085284f0af3ea4586fb48b1e7d2c8fd8e482c0aaa2c6bdeddbcc19a25978599278557c74714572fc0b23cdf5bc3fd175dabc39506f0bfcfdb745b6888d92eafddb783b1ea3ec49392435a0da1dc7ec6feb8259953e8bbe798410d8e89817df8e690f06891d59d19986a768d15e16995043c2bf1b4cb50aedf7c1a6b7f4faf596334efd42656f5b77c393912be901a40b99bfd491e04f520267bd78275d342a29a04d3c745576c629c16fb4046dda58fb64ebaec8727d8c58b2e1473788a9b5b4f1e7604c6a5ebcf2a60abac464efe1634969d98ae65b4880edd2291b2feef268b5152b8d038f4c7abd5b22a9443ed1db0901f2b2e3c28dd53e82388d19088181e747f29acc55576085ed2b315a1bbe3b8ed58602b22958b6eeb514e90dc09d4f8c889520bfc3269c9b210ddc58e1ca50753054e75612116ac70e2bf0fb4e7000efc635da140e4eed3c857f28746b44a1c7b8819a23c22b511cbd0e9197bd2b8141f738d7877a523b67835ca783af5f29718b4b317078f055640c4d89e82fa2999fede0627b791ab1e21562d49d67187069fc28fd4597a7c2cec302c81f1834cb1eab9cd10ecf414fbe73e35f5a7a5ec1c06cbb2ec430002681c0fe0004687bed632697d3dd908827ec34b03aa0b5e72b4e32ecac145e1cceea132a2073a1f7f603d2d5c164ebcadfbb5651163699f824a92904e92ec3423c2215c7b8e9e8e4c7265bfcd16bb9c26ae4be92b95cdaca0cf9f69588165b0fe74f414de11e75b1156f90492f7a0b071fb76057ff0704268eca0999c8b5da0bfa48b898edafc39011a8464657cc9f48fe0fc16f2dac531cec8f8ca3f1f32af1aba32ede7602486dd12e279c9e8482d97222e6473342fb9a242b51c47c96b0c32c491ecc23ace27ecf7d745b261e47d01ee283d616ca3f17d38061ac23acd8d8a15fc903d767b5d62c9c2d069e1f47e4aa4a85da8cc5e861ce076c120204cc86f439518d32544f53ab30a60ef26654f676edce56a654b8bc39b53b7d1fce052b96e3c98d9cf278948e98a7672830c6dfca9c33fd80a4d09ef77ab9216d077fdb777163165bdffb707b03f128460c7d9e470b92eed5ee1b10822b87f23fc2764a1e5fde21d4c80820e14afe5f600b04502b417ee75ba880e97e4a1873644ea75a423ca98fea2ccdc16b028d275f64d8e955ef6b10941fb635bf9b41d5ed8110b639124035102be003c7d9ac454d4a8393a7841c88d07bed861010bd759c0b5f631a2264690f824e49436658a3de22ed6d697546b52e546c2a158482012b390a51b9510690c47a158f0fc907077655a1376cecbbcf319e93644de14d6020cb31f2d382994343f88fe2b93351f428dc1f4ff4769252ba47b6fce59e16ce300e4957cd3454eaad082561b0c43907d91fa72694efbc0a2b1c9a79f114fc78fb34916b0422d74defdf471c74dd7b8ccb8a3d70248a921effe07fc03bc14ecd84664ecdc83102f6821622cbb783455bd9a6d2253b32716d74cca8c2e9dcbad3d478be33b851b4b25f1e583732286700f124b3cbfbf207c46c9219484ba6557828b6a181b0a82ca8cd3c1af43621707f8cbab236809f217e7cebac17a78bfea0b98e153676845b118bdf58761621b4a3f587bffcf89d05ec93ffc996671100197258cce60c2831726756c02ad36f7e705456866e4a2b2ac80ef71b15fab5026d813acf16e7c17df49ecfa4a0284f7f0053b34bf82bdce1011f8bd3f4659ed10a0dd25c441b5a9318ea7a5f74897995045c310132859fbd930c3cfd3b2c01c5c40e21b1fa84014dc8f1a34541a7d2e785625edfe5a609dc7a627674851abbcab84bc91d9ba984550a5496e4aa83aa7610868bcf6a225d829c4a94f3025fd3b04b0e4fb3ea69e1c24e658509a40ec58fe098d229c62ea45708d22b358e8d8b571309e035b9e562790fcff076f2ead735420405c1468dd7dcb2deb55d2a517bbe9748d26ad9047f714121fbd80593482628a22a57a0404209fdd4ebbb1c1c13535430cf2ca02b899b416d97ed65d333e78dbcfa32f366471fc89a83337012f2700320d9eafaf882dd3166f5e1288d280384499c0f00c080f114e31c460426a709e83edc2f398dd191148924d1bd8021af91a0745038901eac76e6b59e826bbf4a51931011a6b536752132c6b35e3feb18146fd34c220b80d553d50923efeebdc6d05267ff4c1530a4a3d24232245fca4d84751eda410811a0f3c4c024812801490b40447ede527ea6a377596429a595115dc575b8d1ee9cda10bb557b6660a6d7a01b250409deb3507c46c3f977e57bfa5495873d5191ebdd6d243a820097c7597e54fce066829ecfbca29d5d91a6ec5b806dceca62040d40446667d696e8f28c8bbbad6d254300c808394d481917544eb8276648af5dd206f9dfd8f871a30b82d9a5e2168d0e27a60df89b97a08011bcaef90a1f80b8df693431b284c24499cdd51fc323ec8e8b0f630826e3819e4e7c0b0771c8fdb6ac3ddf03bbb7b130eb99791f4540a9443cbfc5e39e3200f5458a148c3715e51cc180c699731fe30342d1cb2ab40fa71d83376f1d2e2b3b8bb8e29cdac861007fad0b5fd6543836800704ed660fb4e109b1a099af9925d930c31704796c6b7e5f4d5ee08e4a4f5f0295b3703dfb1b35fd7de2ab80207dab22c98884115e9c42154a12aa86fb0f956d1190e017309bf232b89f4e2884f89cbb0804c861a97d19923507b1b3f502d7396742abaa242a09ee6c761226507978f21b3090881d20a855995ca29fc15c8d62045cf47bc6cd9287d741969631c6148600be3933d6208f02ac52f31c2b9cea528c856e5f1146c73c4807930d01ef60b5ac36ff2e275889831cd4b10c7b381190ac265b0b86f562fecc0887c09743ef64304b11656a952ccb637b59aa6cb31289ab81bb0802053030ee81ca9bc28a94b7384e991f79d5b853571fcaebe32801c1e42520489e7ef8f6730c1a106ecca83e6ae8ce8feca5aebf9148d01bb23c9b78620cd4967f1518c346a1edbf550ebb603e59cd2b7f546658df7999d956527d343e15da9a9c1756374921b7090250e5f9894dcd0705c6ec9fad7f1379cf5cbe547a1a1c7c1b8bb7b7cf9fe02496917ff559bececff2716dcf01c0d2c0b47d9046f3afad3efed7f3f9d9b965f2dfad97b202326ff2fc2c69eca6f9e74776363ebd41233178ea20836b6acc0db967fb2a73506c09e53897d91d6303ba8f6ad9127c0baee9ecce32b23e6c2dff4db88aae986b142a295a03360fa21155f4d63b6337404e77d4902cae72823a7ccf2fd09f22828c4271c1edb2e283818d1fd162f2ce7713032e76ce305f0840c1e7a96cca4cc8ee6a9d04b405dff9220b017b3554330e3807759b74ef98ae0db5481d1887c6ad3fc3401b3e90fcc61b68372f3aae6d7dde3ae35d66b5d7da585b7ca76b06da5f6ae906d44e403527cdf81cceb643589657093371c80a48c81c3a47b7415879e1e920f94261a6c117cf5214da4c22bad190382a315e51c0b0f21054363f00952310fe62c9a5f847024532fb5c0efc93ff711ac2775f33d1a5062f591a3eeb0fd89c62b21d18d2fed9f7720d1f0fecdff7ce90381af65087d378ef4ca33e91ad0fa7c1e551317dadc2f60cc00f7daf61eb51b53b6df491f7250f63d27437104164571a0edd4ac818e0507cfa8e2833cff397742e79d62bab3ee52779bb8d1bb0bc5776698f3447f307091b1c3c05646e48b4199a2ae62297a861785a54801d830d1cc7cff9ec902b72f09f1fb28f4151be74d872cb9469fea3ea104ad3c147a044bc55efdb65172e7a9e938e188c9ee1a71ac2893be4a6f1705b65731f22d095eab4de88411b4164cc9603e3df9fb2e37c8239688814a7f5bde723b9981bd2db3ae575b54cfafeb0d362ca590994a019287b0e7c81f00af89476a30afd6b53e08efeacd87759841260de9f9e81df822602f7457bcc025604bb04fcf8ecf61793098b4d356e695e3e91e484673aae120ec040cca3ec59bed0040066cf8114852a8ad2fa65c05ca4467d5978082dccf025b65dbe82c95214132d4f23cfdc23dbcc057f7f582f0306d2eeda2f070dfc71a995a5977c036b6a4c279afd4eb7c3a6300e703ed6afadf207f2e2c938869b1984b7ceca56a24aae6a434bdc1df7faf799fe19f6f407916376c9c64a1d0285b098ee5dc8d1ff27078d44a0d9b102347f7eadb5fc704871fad6f6746b9f892601b7931ae0c4e066fb67824e653f8d902521d82f8111ebf1354b4066b2a2da59e6555847029071a1900364299590fa3755c8426d9e36e9c292b6fc172b2042cda0097443e657a466d1c8c828b07f798bc032ad68eb00fee747ed0cccfde7ea8b2a05cb7abb08bca563562640fecd85eedcd3d81e18499fce51baaae42e881cb4ba31d2e7512eef4d163155f8700bf2a427b75c85b6107704b6494eddc32f77b7949109dad2a5c26a94a7789c1bb35627ba1ee6de44702b3fdbe73e68c2759a492d96050e5cbca76c403870e629c2fbcfd1e0a5577ee8637fb40b32c648c46a303c80d50dbb6d1da5dbd63e30ae734b5df20d6d37bb88a05f324f48ed0d8b631beeb2caf2c07185c5013da57c074708ec067585bc134ed3c98c0c6579622c5eb5f9d9e683f500bde5e48d4bb03b3d95384a6419402929bebd32563996dd43b07a6c1624e01d521a0108c1096b09465f68645f38a07b1f72b1ebee8700d8513c1efc5e625661bbd49301f5ff20a01e32e82ec037a699257b25cc1a4d964a900204a93ac823a55e0a71291faaeb274f538b465941f61665030b9533069662fd90cc33ed777f501bf4b2750ad335a3f597cbb0d470962a91d74bc253df0466ddb7b8847582520b9b416c42fecdb36a684775b7da1da5ff0960010b31b645fff892316283dd05a39d8e11014130f03d84f80e9b4bc5b9e62fbe8915b802ab19e39cb0232931275ff2ec0b8537f5a4043021aa005db41b82c3f624980bdad2c086c7cc26e8dbd3b01009bee987a5b803e07011003aa69eda7ba0cafc3c1ed41c61c0cd38212cd9d78d6037ded3d1de846dc02b9a0cdd7dea126be796885a811d2c27f69b9ca81e9d408478fe227a662495c780220971f8081c23a276cbda81172539c24583f999ec136897fb74dc222cf230bcba9a26e774bc2d50be1e5f21a83308cadceec356fe0647e8bf241bb8322fc6e48a65ef53f0ec7cd863f3d501cee152d13b41b23a6f3505c872263ebe35a4afbe1fbb7e7e072271b9f90619c541c50deadca8710d5ee302ce698b38aba8e24d39e87d21c401cc55cc416a32706363250908980e86e091072600d85a6695f9feb3f90825950f53899232b0a48ad0a343a38c23c865bffac1ce7675a3e3f23bb302b7760ea277773fe0c65dcb90f027a27ee3ba09484a11506c45f0fe87e217897cf081b75ccf6da3a609fd173c9982fee48a01fd267f631122adf7aaebeae6cc4f9f2001dc7bd14ae07238461e5e7041fa59d83db0a55281649705f5b639ac7014535bb903115c06b2f9d8ca4be1548545898f0bd0a60cd7068a4e0da63f70a0d2fb2f6c0bdc6850fab7d8fdc5dc47486ca6bd6727e6ec963a7a437c5f0451d40daaaec4089a57d0d57558b71427a96efdd42cdd47329bbecdcfd54af7f9575776039836655c3745fe360d739611e45a21d227ebe53226cd1723c72415d84d77e3e94d59a92ecb58e4c2e34077b17d49aa83307b91c88a3558f3fd2ff080d7930d1be9bd3177e86d5a3b60bc992c768c6758a2cf76f9870ef7c2e12f028e86df824bb2aee1bef3d00fc8a777857289fd8994f6eb4b4d75108d1aa940ff81c4ee3db8d6dce1e2b778e0573579114c5308c572f57c8ab741dfe2b725b049ffd5692d0274732363ef7b26db7162f82a95923a1698ecea7da1d00da9934416efbde057d4e9e7d4e0b51a832c0267782de3fb7dc2700bc46c7503457cbf6d9edf8e22a284e06ce0c8975471b28f1b161c076a367ee7f0837eef37ba595a00ece02ad10f227ff4d9a190b7c3b147e94d0260a2d29999b29be6baa75f4895dd3d8953eead5d065443bbf6ee563bbce1f64a18d8cb84d94a15b39072fea3017d234030b1d8f244df0f04375de226b0590ed2646892210e049816af4d661de7c14c66b1f0cf7e0b77ed19e1c1c86c67a2b4fe3a8f32a0f55eb682d8920027402e1be1ff9523924b27c32c305cc898b312784139e48e65e06a0c66e703dc2c1608f9d12c66caed5668da54da27b1dab0f847e8d977378b26a790aa5d8daa7e67a63ca18fa7aa57f02e1ed000c0e4ecc1bb3669a7f20ee0086b068fe25fcb479328c704669cde648bc0311f4335248721c0a04cd0386ca825133656e288f2721c2d7534fc07623dbfa8e3f0f549e7d7578829861962d3b203a02f4b524d4389dcbea79094384106b0999d194170581cbae9fb1e1a62e4789e842325dfc82ddb8e48806241cc710642776941e9d8202980aeab67eb3b47eefa5e078b02099ff649515b905a0963296516833636216fece925d22be9c86fcf3980a41662ec08430476130d418741a9d7b3b584c82949d01923ca8ed719193cfc5a5b2aebdff07701a35bf9feef48b5ef27c5cbd963d94328e5044e1f4c8594a0231a62d88d2448df071d3bffce11138339a5b7da7c0931a9a295af3fa7ef0800102603ad0df1fcb913843858baaea8122ccb37c0c6567eb10ac69782618401fd2cdb22cb7767dc7dd79c976f12da2976de27ca3bee6e3591e5506176d33e36dd90c3ccb7dd8fbd31bd563712b45d585d8a747db670c19fc0d0776d5bfbff3fcea7e94b4aea294d0feba36a53f35898d9535b59509b2fc7504f629e764d612d04b4dcd5e1728d11dda81203d52f585cb4380ea319cec71d99555f5799bdec069cd91df45d15f3ab4d164c6cf83e67b73a31e1884f88b99d429f030e9ad513535b46b952be5281dfba9be101734e036a453b4320d844c60aea289e76d655c800cb00f77ab20d21943a0a1004a87d2a1d31efaa6350497fdf8ba8d03b6e4b3af33f233f46106163264f385d9e362535ffa7c7c4529b7717d22f85f8748c5c90684a5bd8726d1594e5f418907aed80fd093bfd290a22e9a6f8e320e0a55ac1b848a16c3d8d8bf93a094c3429c928978d0539b6ce01648101da2718b4474d74073fc39c20212eea8d83c424ebe584bca8b499bf55f2d880945a7c7c7b83b1d74469e64702a1848c7a61c622599c64575cf0545afb774adabc34238bb8894a7ba71e526eed05ac18c2f6b7fe9b21213d38a2f8f13c5601571e8e92f5205e3de86dbe531238f5158c6f8154d3690c91686bde61098ed042c6d37e09646147e75c3bbe445b7979a2a89e9c7b8a78e0999f17bca5b8e77589f0eedb489feaa78f0bb0c513b68560da9c98093b833e035bcad2cab624b303e324aaa161ebb4431a33bd337745471df2ed055ba4091c50d8e59a0dfced15b83e02f2d5255a3adf3c874aafad24c7582a7aa1b9c75fdab1a966102d27992cd996a5b2f18a07a4139ac19605feb07409936f8ada524a24982f9b2156b171d20271f0c842ec9667eb18b99d3beb1679aa4791606d99f5b0d9ce7e8cd11cc83b28215ba7a65c4245da74d7cc5a8d23e2dbc8517c0c20fc36f797a3add98b96d3e4626e02d6ed066c75ecac72685fe8c0604758329e453f57a33b1f1b81bf16cd5d1bd31d3ad858037186058598b02c65d13169dde15ea9e2ce69ea3705516134f453217a5654fed23b5b9f08e8fd227a85c1b3aa8785259bce9dafeb309b0407a91ba81a9cee9f355c3253ba12ef9321f63018adbe6254ff9b6f5bedbc21950e8984a7559183685080bf01738e71ddfded0923152dc47787ba746977c73f80e671685edc31d0431e58ad1cebeb1316268f465f211a9c596f926f200d71ec6736f2690e0f1674414d5517109f3cf8ff577e077470fe2f0dbfc323c8de219f5d4594ff4b43d2df4e2b91b6041881f4d8c2d8ba5646c8a5b6db7dd73bb3a242153c416b4fb73bf46640c1aaa066ae34fbed45f9ae044b8cfec0d6f154379373bfdbf0f6c05889b05869737176190cd0835686e49fdbec26a88c5c644bb4fcfab942c4720d28212999a6483da5054ce1cb53bb156bf696f42469ca5ec95624e8f72557a14fe6e7cf8b26786ca1d13824ea2aeb93363daedc0d5172490c52da0998fb681e62c7cd58538ea45d7b854a963a22561a766edad8bf728ddf5dc1f00147ae3b0713681c1e1cd45d55250c71ec145f48375d8ca13dd1e282726199cfd4b1057d85211c8512f863f1213c2e4f64cc85675cc6f8685b557ad955dacde16e9251316bc0b4628eb1222a2f63cdb7289b024367917b042d07088ebe8396c2e369a167d48b10bc8cb90cfa63028fbed53ac27dd29198d694558a4e6b672cf8fd874e89949ace8ef712b3639b643672f5fee7c74ca702706865569930449fbeb4c2aea0968fb7162505e13609fc98d207b5daf0ac0b3e5197bb56568427de6c39776b03f2228f081e4ac2abcced59e190bc89deee7c7328f230e42928a1d185f9c3982d0cab905c2b2a6305978e75d0c4f2147d657be16c399d214b50c2595fa3fd4df16ad00713daaabb8e70f3b634109b80100a02509039fe22631f45de41d54fef61bfc573a7353184a47435348a229323274596c22225a19709101141651307788d244d62b69aee6a41a63fdce28efc2cf56683eb8a2b62e86828f86fa25ab91d2edb492c8d7a84952511cc206f1b17c460ac694bf48102c7fbc851da0db1e045170d81cba80e119547334e6a54033b5a7382aecf04912f24fcd26ea49c1d0f6f18e471c228918daf1230337ff26110912499a55d31d32be47a133479c142451ba9e3f8336945ecc60d54001ee7d4a19b747e5ba62158d592e1c11b7ab646ab383c71639c567a8c8887e598d01bccd9fb586efaff226a7121167b1c76e4c8a4702d72f9feb7b02ec411d9f2fe3fd31967ebc11e3c8751af718326a4c58df245815cbeb1fe9a08309605b0e6c9e9cb6f4b57725597928a100702d4662bf3a9007aab42fb8b130d4db907c86e0ca0fcb90a353371ffacfc189f2bbf478ce2d7a3d601ed5d9b371b9fe7586a5d8027b822dbdea05bb0e02783638ed742e92e0bc763f55c2b3dbc99b310fa5b0bedefb119704231f487d5b117cfec24442337b3e637a751ae5c5b3025b2c635fd839dfd70e7733d7c7da4079487e13f86ba1f5c91208f7b69539f411a134c3cad1f2a7bbbb8f2c797a1cc10933bf5d89235f20e89d34be4c1af9a0b2d2ed2b4a76ae03dcbc91619569555caf94e61e9df771a551e83580b010386a512995764f065e86530819596bbe44e650f558f1231900df40eb7c7c021a0946060198a8b9c74a9964ddb94732a56235dbb39c773e6f28c2365f364694e3db43f0b0d206075ee683b00ed2be879afc7f4949c6d4f0a2c473824617e0a60ceb5c496ba46c80d01831823db1f938407d7db49845e12d328e57fc0e72aed69ae559946ecfebe3f7e7702c370ec7edd8cb297c2e7b1e3dd4c04a89848793021fb2b7ced73ce2361b8fdc110e4efc4902de1fa6060385b9fe8c641bb9e15c4464fd6e50bfb8099383990dd4d77342a904cc55a3b2d6c53c9cb6087d86d62399a4bbac54711292dbcfb5dd315fa1f92806bc01dc619b3ff318c654cf75c19676ff8c2ff4c28f6c72066c097a2357b2e2688435f1dbd3230d38329c597e657260ae354d7e05b8604e2cbc586e775d20303d8a23e1e6058bd5c6570fc267abd2c60e0fac9a766cd050f8e8a1142978f90541eb6cacb669624d895856165272c00a2061223aed4dac446027845f7da4750463125d5f2918890d1333aae1ee68a60fdce096240d85e310c043bc7520bf9340aa5061d2114ac00eae037c7c098ff18d753531f5178460ac0317092588de4f249d6b6c59785f87177ebe5adbe7fccbda1c37ea78672902ee614e26597c2a2c661445bea9aec6be5c49871f89a32884352bbffc57324553a07a545c591ffe90316c4452f68992d7f8462021133422c37d3b213ddf08002453646d8accace351269c511b60377d22978e043f4aa0c0adff945bb4fcd2ff74b95c11cb1fe963d84efc10b150521c5c3d7d2a23fd8c9d7481b9b3d25b69f6b34e96056449ab945da381ac1dd95a4c23d55d02b291ef386cf13ec4e47100f1c7424fd37962e3b6d65b472434b22e42234db27909e5642d0fcb91edfd34c2bc9869d8562e8f959cc2238842a03d7243c7048aa24bf4936240114e4ee43ad9425b286ac025ad815baa3a4fa4a06fc2e01e1d24aaf1ece330d255d989812d15857778a58f4ba323bd75650384ff8c09374f033c3d5ca7038c1dac975ca7d1a929321208280293e7312a25378e1406c1b673c03124ec67662b2ed02ce4af1c90bf7275f37cf2e15812057ca2add560d807f1ca57161f0547879956ac82434890d38f0915456676e1ba377711bcc1301ca6fb46a393889102b6e045b85910a71744297e24c68df072d35bf23182bbd0a9b92f826de7820a2d00811306f29244b2f6f4e1ca5b8cc87e4a345b63b7195170810979636ec05276c94bc9d2228529fd8fd90aa523be72a2d0273a3615d518f4fa7b0a84b7d4c13387ba38e45e324f1d6981c8d93e17bc0fa81ecda55f820f65df3e4a24b5513723709b957b9d81de88cda4f2b0dea6902e84742bd412bbb0f07a0e58d995b1aa088d913037895dcbfcb33573d66f9c4ae74b37fe9a6b0b7dee49875570d0de9ac567c65347f86294584f4e9ebbb22ae7dad333b9589d9db4f0244034fd68a70bfadb0013c2e2a5fdbb7ae41e2017693a8232bc586d1f2cf8eea0f73845203e484c2f9f08f747fbc48a45cd92f969df2c68d11b09b42d1f53cc958952cc491c796ce7ac2b48659aec1fc97c54dd3b32f0b4571fc180d15eb11a7c23c224854670bbae2ca3ce7aab1f480f3d3a571e68eb2421542481388dea171163aff3e4099186a3fcfc96cd18e3255d1a827f8f04d14b261dd836597470306aa033e5d5ef5c32f5ca4b548439584d72071ce95996be69ac7fb90a5841d146f6ab77ac8523cd7378ff53f7f6105be66d8bec9475d65771bff869d10d677a311079dbb3d85aea49c2c0ddab2edb90217ef8c500e030393ed6b962ba96eafdbce64c5d743c07b010d8e79777aaf6d27e30446ec546fcd032b1161e54d5d914872c5bf28c3e4eb878c56de6d2355c5a9c587c1d19693dd136ea2deaaf06a0d98fc0c45580eb4bcd57b551ad3e7a126aed9f5ac81dc05289de7ff4bdaeedbe037b7cc980792f8abc777eaeb1e72a4f95e0e8c02e153aa3b072edebba24c715e52409aa4c0a90353952f299aa0268293ee15a2985b192ce722cac3ef12a99258248ad7d5e11aec877c5018f2b158c26fe6201e7e04afcf3463ea1a79ae022e41772fb5af19198c3f4500ca00307727027e4c7ca980c5340f8a703b2ca4288b6f9415dc1f63f6281734f6187d1fa57f966b21f466ff6066cd6b5b7a0c37bf4395a80fdd7d1afd3b58c0003a4dd9331a98f81584e9d2a576e2b635217f5f008026080004550d440aa14aceb26bf416e068b4789cdc90125237b073371b762c9c906e801efbcf4d6f9d5013167b312e634e29c2c736951e240c25788d8f50ac2971167c80c36cb207ef7462dabe5c5be5777758f5d4941d4475777b8aadc47990e14c1331aeb6eb3c4d468e503e36124b700332b3941c05759e4d0cdbe032498003333b8875c4709b57cd79027e8e50e477be0118030a54db8816444d052c142ddbca5f449b8d1e54940f04bfec564e1ae5ae24af41f28705da7928e0ac4fa14bf3cdb1680ad9d98ebee17c3fa1c408a27ad9d423cf35abda9bc70e66aace2c22463a334236a7acd9ec08d49861ee16fd897d605e3f6a95404ddbaa0bdd77a28a6e32985592819fbb71deb054693159af988956f60229447094fef49b185016e10ee62fab5db589defcc7c07f1ac1ef901583035de07dc12f6c38354451fe5966bc22964d8227db7576dbb9527f87d92949e4fafc38cc5cb47dffe682c831368a4b488334aac79e3d53944ee91490c5d6e0002aa969682f4adce3465b28d24fbe5c29d26793354c2c879ca9f9750b07f16d5570f7cfa460cb08421355f1722ed49663c9c7bcf4f8697c18fbd60db53e9b0fb0a78376be9e235a5aeb2055418d97e7a996adc35958d623c37e2fcaa3c506d07219c99ffb1e8d6ef3f86c98edaffda55e7dd874dd179e6431b8c9f39b74912b446e7df9ec47c614f7c2ba8e4ed9fd891d7d9e2f00a5cc709e2948b2339ea40cb73a989cc4344ea2e37014b30d1466954ba91d93f6cf45bb629ce975b829fda913fb084ab97e2b53beac912af69a01590424ffc3b37ef58b8053f5c42443afc6a18c3a0e556f029986e86b9f7b2395e1426c0ecc7f847a21bbdd326c19b1b0c3a9e52f0c512b187e029aaeb5111ef88a98e833d30562ded268ecc6a2cb8723d04130ac8eafc4e45b3f6b77504e2cd6757d8e6179a07e9b39bb03e4925f858eab8ee6a053037c2f956a97a572fb3fb8f5a954df43ca38e67ee9f2c82488dc3080a9aee4a1163518884684f2fe3034a10855038d368cf68bfea75e90587ebe4ffc5c18c3438a0662897109a26448174104051c4a83015f9ee5f6dda917af848c8504f0cd022e2e1d9716d91e5d950c07019c2283e0867b9737972facf943ec47da59520d3468c276eb0bfe5e447621f63a5dd1d71d4baae25fa86a00173834fb2a074bb8a1bfa922c550e5e73a549968198173ca467083c71222933d44db23732a1271964be3a5101bd4301580153c6bfdcaa7fe191ea7130c8c6ca897cc14b347dc11a83a426396d31496641e61ebb226271e71efaed8a16fae74a72098cbdeed1eb02ebb453b1adff6c5514a2accaf59001b7a0e96ba7f42c4a8f1561ecd4e0d746d2008860ef20707d715461b34002d1703ce4434946a8a1a4374784d0bb84f2b9513122651b3f9b00052d8d4f2ce35c765172b03459da1d4aeb39b53b238aa9ec00b3dfc0f0d09676809fbcb9424eb76448b719fdba917ab49c4dd129e8c271526cd96c36c69809a7220c1182f4490b18b1a30d7d6719f2ea476d80c6ab0943a5f055dcfc97040026b3d5a6044ca0bf14ca40c307c90199b80dc6f0f162ae2c282be1dba3ea1e4dcf72074781554539d4508acdcc77148a423b748a56ddfd25d082117173df5acd351b0638d6860a45d54d577eba280bd80ef7d83fdf99189982f530ae9437a4af28e936094d39331dd60fd30ba18a89a230ded2ca026d6e9115e8d4fd4a8b3007ba11df433a9731298f5dc74c44f8ede58e3f2d8f5caa34d1d700767b44367c4579ceda00c31f63e53facb5c229e135b1c9d59438019af6f0d4c7588b120a5e5301300821d3dc0580dd53f3bbe56083ccd2b023e04ca99ffae009720f3db11f472ed32310c6d5ffa26b07e5f666245ff934522b9f7e309a5ab474cd0e8d89a19a57168442b2408ff5755d3550c89e1af764b86ad6216e4a95fcea832a17b614638dcb64834ec082399f6b3aed3d91a380cfe59b563c6b5226f05d79a9826c1651c9b9e73802b2ad9036d9d55f0b87436b243eaf93a576177a26f97ecd305fe59db947117c103bc0754a19cf9a856f1297c06b1156a9e1b71a0542370a22d4e8c8704c7326dd364850b8ec13360d30fa8dada7c173451fd216a2aaed9f6ef0d585b0e85c9854a9e451fe827e2403e1b3e766eea33aa9627d3527802706331f846caebe47b5def01a1e64632530be864750ebaaff80ae28406f59087aae28ddd3708bb27530c7bf4ae991b55141c2fba3de39457189c7e67f61395149e216175d77d1e11b092d01a4ffa6172f659073d94d4f5302d5346ffb3710163957359cfdbe7b94e4edae80450ad667b59e003144910ecd1b88d369f2768157d01c077bd8f2548f353f1684b27b3f7d4e4a3bead2a375fe252615ca66f9c6990b3fd289972a9dfdc658ca867d565051d131e3830cc5999d84ae81e7ff167833dd38c12a876157b74065bcd4373b6cb2ac361f58d8f9d092fbb0134a4356c7d4fc73360406eb6469aabf21944d15e3278cb3b599e3412a66c1c7f1781c02a84e82d6efc8d9d6b47c3c9aa06295c01b1eb3e9590abd8e28d8ea2f69a95f705639a5f7745881eb577e4431dfc9c403a43ddae8b930169c4c22239bd8130403da418529839a2e30ee82a70bcedd8a6af770484386df8ccaef26153c04531095109f3b6fb5f8e3d8419185c72f363e79754b9b75b09f17bdbc76c09cf85050fb6fc28d46168ec916c5e04b84a5690cbe946d01619e4bb0c0f9b1d6d95bca097f91ce4ea9509e77f6b93eb3d92bb273af9442831333c1b341b2dfe10cd3e5d07b741cfcf35787cd9ea232e223a9261aceff97fdbde47653609fef13c827c99da74da02c5e2c36bc03e7de97e1365a58ca3ed70e3a41ec126f71f29f5c59789b9120f6f8df9e9dd81325e3fa4e8add2c6b5d4d9aa6543d8fa2d98a008ee79f823f2c7a0be5e89856b43a88cff55ec1874608c67b8c2c384d9cc98241653c821a11b4309811e0ee1284356dbf63632aa2e8fa535e2aadf48b6ec7ecf85ff37241812800c8760c9b59add04fd8bb1bb80b2d3b23556762a999fd30e20423aa09b536b8369860ef11c3188793dc87c0ad11e45b0dd59cb590f20143af0fd30f1d1bf979912f2d133a4a36a9a93dce10619ea1491968ea261afdaa062e48fb4c1a7f1706279dbb8f94320f1b191ab4c80bda2cba998a2792c82e51086fc8fd213da30e740d82083167196c004c46498a9f61a974f2511c32ce82475658fa3a410be642f52308344d380c1e2946a6de4cd56d5e7cb2856238583fb50baefdf896384e068c60bc8bc3232fc29a186ecacd15cfdbddf0433c3b87ecdc40ee2ee2b86534d5744f28d05322e6fdb5ae59bc8bc5d7ae42d6ef681db27f985348b066a3ef9032c3393337d2e7d8b46ded122c42dc611f2fa11fc6522c8e22150081a1009a8b75790e22e3ec311d55d19e46d275163987546cfa771a091c20a5951c5d6e2655e803b79e775705e45602123a1570c31da0c3f77928743c31cbe68874ca596549ade41f947c7ac3995eb72f110455458a5eb07c14bb699df2e7761c2cac6034cccaac37cef60089afecc8ad84b4c181983bd9f796f7ec33a372051235e683dc5e246871f8d668a721a7be709089e47a3990cb96daddbde5e073d91e27e54b2ccbdcbd9fa5c3cb0d7f40f398d63f8f35a0b26633f662a76fe4181f2c265a940c27f493484c9f4582c23044544593831ed24e539972504a2c497ba729b532bc1f6f65d25b0d7f4a08bb88e4eff46b82a886aaa2296fc48e92f362e902c581f37ef068e4b6b40352a8a105904e6b7accdf4e455cd4e3ea5aa45dcd9e93674092a90c3329da21ae8b4624109cae71c5443bb986114eb49e1c1196cc3f39d6c60963902b519c2f3f96c8347900215154f8fb88f4ee16f4a27a6c3d4cb090884a922ededd68732fea6f6a3b2b35bd836551c607ca1c193cd6faddcc078dc80358c43a534af00b5a1bde92bf13140fe1b511fe3137d5b171c2553faf3816f524ff5f9d16fe8c33ac4ff9458a6bf27751c5d4fb0543d906167fec2c1603860e37c2a22bb5de7c923ee41dbffe487c9011a98105b3a63701001b7da314132737f520b7fc88b8b10a604fe7769e263074e91ff175a4252bf155c38e0d2a4316abc6d510f76dc3d7a443a20663839991ce822813a3df1107d42885cd3a983360c8394ee09247191484a03236acdd4cadd0cb00c0963f331a076f0f53915a78d5d8484f595d0ccef7c5d6d78084730a54e9799d4c8d970f23961acb6e0ae4052eed180e481b6e7543069c34e35127c9694893e25be432e82b27cad8f917816b915415217670b2af13f13342ad72c65c9174dc8a9703b52df282ec5aa74d4c06164fae219bd20e0a327af33db91413cb16857c327e212dd0dbc9f5454c32a0b98adf714969a178074bebd1b3580ad3a6901846c3ded1967ff61dc0b756c478a0a106ae04a7e87af71003612dd11ec78f278fe83922ebc2f9447b85449ce3d66fbedad175d34bdea3d71e0e4e6e8ee24997ee9a973d989ad1bd6e05eb1524b3217effecf707cff8af708a56596923466ce497381de4a2ca79720d291fde70f4e0ad8344775d5374ea7feee946caebda967d0e7f26bbf5da85b7e19e85f34955b3bd4a74d760ac0e87a0090674ad5fd65a114989a7285282fd5868bd542a77fbaf32e14347a354819e8af64856384a84b57e72a859153bba651e792c99cc91524ec7339cb7bca8f824eb5c2cb5af544fecea41e17fd39b5f8c8591db361eee7d7bc33be4add04af4ea718daaa03c7b238b22b95e97e6f63c8ee048540cd5697e07f6e126ef02c30687906b6fc018e23855b3021b2748e2a50bbfd571b357a7f9489cf54db354ee0ecb6221e0e13cf247c3d959a12bc30214a292fda87ec74926197ea7da0644454099eb6578c827ea236609157550019d1ede958392e1c9ca8066973de951e21c85bd9647da57b6d40349303bdd15b1ca115dd2b227b44f5ae454413d0fd28ca302f7d2301e2b71e9738cb3547a0435cec20853d2c7de43b025d8dabcc6d07d84de4adaeb62bef82038c5621b1b03f357065df61754064055e64b22d1a19535f2022454c9ce286996c64483f740e68fcd10d16ec67f762e3caadb9dde1d0158e293ee815803d97b3c21cc346d5685613c9cda864739dcbf49969028a02ab876815fcb0e6e959b18d9cc74814c671958c1ed5eb414092c78e07ea7550c1a0e75408323f5c367944ea8b85085ff1066d7cecfa8601d7090251d0e3f5d35d2777af7acd1b70cf356e51a2705eb7f82527b909e698e11d4b13e9fd56966b57b9feb3ef039dd4bca55c246e02ad2d2accd4021629dc576e87fc45cb4caa588085cd33bec54670f7e2d6d4788e1fb61f238173952fcba6584f582101eafe0f4ff5deb48a320f6dbeb81c36febb11c46192a6671cdb27089dd205e07a37f40c9ec4d5bb9bb5e97cbea64d9102a9b1451757c9b74c0556754ccf3b42d1d3bf2ed9d0317b345da33b237322ecdce2056a8d0ba1b2e215a521cac658f526b1322983785bec5864a1bc3f3982e0c7dadabd502dd7d66e6cf737d51bdb7e29988f9d47ae793e0d3dfcf141cf81fff90ff072c6fc15a8fd041e7d73836666efd0ecbc4bed7c63f44442ad3d545bb06b63d201fe8d38df5307a62fa85a38f6137e8b77691387b769a95bc85f88085cf4e9f485db91e994e9e64d72a881f372c5cd34e5a8a4d8fc248a2fcb3e935c0df1f3ae1058f7dd3ba48b29e4da6ee9b4aed88079d41e1072f37803ac46767fc91359229f1c519fdd33d8fd8764d31b894a0cfa02248848812899db96824bf406bcc56169476b1a3336fa52e4e532fa0cb90c304d3dbd675d7698904051242c4558715bd448e08c637acef45eae7639a12f20a8056946a781d0a18fb44efc385c520cc955ca5652490ee47bcaa43f29d93bd1749582480eab2ca3a676e7e50f2772668dc05f3ac596baa4747e1ad0414e0a7032ebe71f43f895d3f271e398275753c1e6b2e40ef6378ae8edde6639e4a2592c851231d37e9801087af3e8131a4fa0c6f53615140d7f86233fd4a82044d71f2d1f9f710ae46c40209afe7a2ca5dfe52204d931c95f9a23137e73ecb65a0b41d30ad0a0bd6016258d5a0a989484b2d126c097940541da3197a972e8435d0ddc04eaaaaa6401dd0cc7ca9445f70ce3d9828e62b4efbcbbbdb44f42c887e0e3ee880e78bee81187facf0cc750ac8a16031f2a446421d6ea27a88c090150bc98c3c89189daedc6f8c5620d7085064a8d2b22ad2c0539f0a30a2302afc89bcb36bacbe1f4f636b4869024cf1d367bc029feddc3eba021f06e74e820e0d309a96ce6b633470fd27ae769ca6e176d8e114dbf44c4c12d556768f1dc9a6309b288015a1a742dea3a0a6d8f63634f0a5eae274f5f49970df963b2df4670296c8ab7ed98009837e9fe710ed5214c8e0a62347eda94e2ebd29865bb9756b243ef6fd40b7290c0695ec42ece3dfb5fe69a86caba81f9a3b51c859fb0205368d553b8c597d2455794ad31e7b9e0818e7f25215a012d5b6284624c97defeeb018e62be14070899240fc11f5c7a1acbe5a8fbae14a62811216b4bcfa494614535defee73fb1a01204e5da0c9430a53d4615d8233adab861102aba5d733180d73e7b378a7d8ab0048404082ce960848afab5ea870c8f6e71669af53854d794e7c4ee27831288ee6e3456307f66862f18bfe8d874cc63dcc2e57e6f1bcea25be62fef0bf906c020f755c6d20770123bf739bb628d95afcae2a53c492a5ae88c8383d87b4174a10932f31b165865eddf7b20ddf1cd8e091f41244b10abf17bf0d5a8cf7496dca72f2a5288f16edc5f6c44e2f865b4c1dbe00cc7d9606e830844c2dde3addd66c4bdc42f91fde78bcc2fb7cc3764e06625e1f1508c291a50dfc43850d311c585d6bb49148653d46f5067bc1d6060e4a72cbb835dc0bd6c61324257a2d25ae30f89f9b7f17bd0979054e57f571e3e4e9109c3b638e28f4f3237f5cd3cba616107d13dfc70bfde63dd6db9b00cfcc0cb7bc852d9945ed1e43655cd148b7ee6992df88f66ce6cc8564d5882757691a54af6483e75dcab8e104096694041fd390713819c2f4bddfa57fed5784a95dbbafc36cbdf2a46a009ca529d466b27b79c6b032669463ca1f8e609cad0385c790f7118e08739819239de87f39aab42e3444cf506270bd24282f8d74cae73b45ad621a74d2f18dd4eacf6dbdb36a7fe004787d22abc00aeecd2146d712fc09413dfa693d4d044e80268c30b695d361db68ae0328ec425e0505054675c0df1e89ef4223207adf43b20e68964ff86cf760a208598480192fd3c6dbdacceb6645f22a1b9738f2fcb902f7bd2e5b087ad3e19ea0ef714330dc3b091d214feaca2bf9189650a3905de641c52c4f586872f926a93b8a03cebee5afd42f31376c6cb5307afdd935630fa73bb51c09a5520a6c4107819afef7f82f84dfa3ab700c1d54cbee8415906a2fb9284a2babf99c0c91fc12bb926644214ae075d8be9c7d5e6a80e8cc0dd026e9d0362bc8c2d53fc0f4c0bf631f713a6e79fea3e0edbd3b1d9df93eee6fb797eb104bbbed25fd86e9369f9632464a2180a7c3f35d58dcf24f46b9733b313e05b17cde4ae248f70ad6d89883aa4e0c6f13bb7a0ef8ad1b3fe3d2bb690afd1dbc28d98ce7304b8703ab8fbe4498704324bd5045ecc57ffbdefb04e9c250a6e86c201da7249413962019bdca591800ae5aba7a7a4df8a6e0a0440f0572274b085323b18fde0babec81f51f3d252412b875c3940c289f7c2c80d8644a501f9b9fe8e94bcbfe009fdfabb3576f03abd7961050271c9b020fea1941a903ca0ab01607d58bfde1030e16a4d79017bd6b354a169c78c327065a05f3de8c3302046550e73afe763d8860548f064f00e62e4ea4763e34bd1117180f11defc1417b9831e2349ec9dca187fb581109027a45b2b4950e2622fee09cbc0e4fa61c6bad937c3502837e16e5e460ca0744a48efb3308d0515060142c0423d9fdb421c9b66e942c5c088cb1267c5b1a3442e8eff8f4459babbe6d693c5a4a7b3da79a2b51279aacc9158d47b5efd88b509c39066a7e00ed231bf1b36c9d51e3d77a3c575a49bf2c8fc5187b42b9ff13389ffe4bec15fd3bbbc026c774dfb184690c84dd3eec9d01536a5d36820c1f80603048ea558b5e3f33f89c11ae87b7fb0ffd090aa64b6d439435c4e2c677a6da62071c645f5909a7a90a3114c4c7f9676dd21f27285822b072760dc956dcb8a163c2d6209d0896aa9cb35bbf900b42c58324ab3344414fb686218e43282bade22396ed5bca88be0de1ef82f1b259c48c6b60399554fe60fc6f69801e63ddb29c072f8b96a071d6f450a7b87ce2404a7aa425f915e11def273680997ea9214f73c923951d3910461763437072e7a56ff59eb74bb17e72fd1b504921eeada7db327621012a8aaf870edbd6f104e11a65990e90e30fcfc16c2a1160258d8dc89a4ea320126a00030d73bec917992cfde0b6de7a3584b93c8a5cae46a95791d6ed3cd81ee30519268558b22115e07819929df5f60a01e82991fdab32ad3ad60b1069e00468e02fdc95322082895b05ea92deba81a6973e8981d959a8fc187629fd8fac12622aafb662f59fe56f30ae4ac7892280809d2f216e1bce60d17522d72a6729808f80d99174f902b67eb9ff7cbdfeda73135cf17db114b5e364ee4a6e9593c3edc7af992ad56ae8b369c8493112f02678ae4ed5b097dc309cb2ef14f43b170f360aad8c7169bc7ce096ce9941e78eeca18357d73bcb947a1e8b899034b85a9e8a766e0c8b1906fe0a25d89cbfd3b1b32059ec2092a373b61909b248e27a155ef75e40266f2bb6384c92d954ab2e5a01ca5aa928c6b56ab41a94d9eff6ce82459e731991d78178e2513e00b0ef2db2260077d39d4886e2de77c4e2e63ef4c6b14fc2c17c8cccc2d5c18f49448c9a5769d867e5668daa1764f448d77220a7923a002c30ab1e7f230d4e75095291cc2c877a5f0af3a4b454f2fef486a6927c4b2b25c59e6d1d2e8f76b8b87187ff55444a8d52879aba761e4a83a2013e0df5f171b9727662a847ac7e92802073982bbcc1e1864ee585ac83265d5e31e64c22be2119215dedab7aff63a89c5aa48b6416706f929180b943f8c8cdb6a89edc8f4feb27b2af31ce9fabcf51c3e07260e74fe9b2a083aa507a64a019d23c9d4e8f07198309c27ea7b83e892b38f5cb1921ca497373997222d22c68a3fe1a886009f720cfad133640e2146d390a3171acbcf6d299960336130c3d2007c00e253200e98443dbc14305e567b2eb57ae4591a0d5005cd93eb774adda43d2718ca5c8d7d02a2d6a85d7a4599234be068a4460142a03073a84cc63213d9c6289dbfcfcabb40d47134829906fd9057094c3d5211548a26f642a22a4da4faa6709f8411ec6fa89fa7893d0bfd21ab4276220445266afb4ea409136cd29514d7053c2478caf3c2ac701503c9df4ee2090a468e70dfeb89147c14be15371a689427bfe29cf3a76c70b60a470ea428dee49feb3c06db114c20014772b52b56f5c435c46f03b603a2df2b014a3087533bba7f52fd5c89d6b1f1bb9eabd307ba8d036ca18c7debe90023aab9071326c253acc3aa8fc3335592dfe3f09c2be167dc7baab1a3d6db29adeec8df08097dd3be7e9d74c4912d698743ce756086a2871f228e3a8caf40c6f9e054b39d0ea2dbebc491d4b3c7074b2a311cd4b1ca37dfb60870a60b3aa0bc6e6ebe466a2cb737b4520d701aa4b9e38feee2e773d8109805d553002080bdf0432cdc4fb11516f0665ea62846cdad5599734c55a40186f8d70425e465d458bcd3d19b6f74b0288dd7dbfc6e7b0c5c4fd5b4b20d08e0ed75c6fbb59e24dba767ace85a0c23ceb3a3a58d1cc442e716520b5ff274bec51049ddd61d89aa79be5b722345ec7229ad7ff3a788e713b15b704451d57487322e508e1b94708742aa0408e709f4358ff22b265be0c53c1c306540f4894c87ab4b803851da779a0e5d271bcb104b8020d604c9d72e2ea85bbc0d2f86b9c0bad7d9a8336e21d1b449661bb37d4fb3fd2b620c5f1c94501977c37e6fc7504ea70477f43bfc90b9be82f394ddef38d2ec914d65deefead4041682d62c25348a3565bd674326e5e02bcb358feb491d437caa8b70209642e32b7167f1d3dd925eaf421e49072ce5749f550c32ddad2b68b6381804424dfb5971d9e458e647371e41df19d98d1d86cc9922aef4cec7a58913f527c4c13b1e7010f1fc06d0b48d81756ede56561ea7b8a2b5f7ad5c190aebaa1d90e6a86e037541c3d47e5bae9ecbd36b559cc47aede04f7116cd52e02949251e0188c053a60daefa22efdda4b25c7f517123f3a17323ebe0c592cad2d87521415566351afdba109955b6a63b72e545027379c18ef676128223a323456ebf971e59cc0d0c41d4a3b2c85c832f48f8a4093049e0afbd9bd408c9ffc01bcdd68eb5ff6095bea02541faa15cfcd9d2d31284ec7b5a532e235efcd7292e1f451a6bff9e6b6e9e4ebd56352e903c88e298b058e8050fd4b9b947efbb8252aa2a2e0304fd667955bf3e8423185031d336be31db2787e860fca47bc4172de4351ffed982bc80fc65ef853e1ffec5b1ac1282d03cfec427d39dc7101c7d0e8a24a00d12b194db0bb1129ff7726e970546f1beded6e180271c804a1c63616cd78a224afe50b6e8f3937e39756877f64f020dc36dacb964e39f99abfc8b8a4b257e6c684e4aa92755630add1955911e930090401548c829ae3b32c7f6aa305932152ce84396abca22abb195f529aeea8de6651c1f1f1e8fe093d8ddf40dc255a1fc56cc03f4d5580a059387be6bf77737f9578dfe118db3c2f904d306a54324becf3b06232bb484943ab9731a0fb82122919c679f4140bfacc31fd193194adebc07b6c3bb147176b99259224fa346c283805cba36b818cf338251afbaf504c0400491a5c0ffd96d40b8d061b7f8ed6b42f02fc0dd42a049a261dd87ea1a40dba627a711ccc1cd81c84cb3c9e317d20cb9b4d09eb1a7446c43c99ad283a2d3bd9b5128b4a61bb601d4287c9c984d52b00d64bc021651a034fc7d9d4f76bc8b53d763f60502b8665895a3b6a7a2d345ef86f77d1b0dfa8e3a26683b53357f55b45c69410e1dadd62745369d3bd8e5a40b8e945c66a7ffcc66d51ee32d24e6a1003e9e27740569cb6ae7acc184b3f92bcaedc031970ae7c88901459c8d04a94f878a2eb794b1cfbf13b766bdf7dda877e732ea1c0e0841e313b52b1340f27254370b97770d202a5b6b4d7ed00ac0044af9fdf6140268b087fc4b91393f47fc3ff728ef7ac618362bfc9d21ac423817e668216f143ff7026a0e8a935ea435dbc6ae57444b2012cd4dfb63cec0d74797c824706272eb6c67f883e1e32221c74f90e405f8cfa3b84b5aa79690694bf0c436aed30e9d3f00491f63f0494cfaa13d7de7bd2c05ee7ea0b0f33573aafa7b4108c73bf0d049f3529b2af88c8f2b0579262e131217f5ed7fc31d0b693acc5a8fe501a6c22dfde64ccd9542d40b465569c9877e4661047a7a6b23522d8906d812801ab426e38047ab6d46b3f7c9b7acd4c3554e2d08c9112b4f0279921c548855782b0481aac139158e1fd346da254180f0c0d0b6239923458756a34184a5cae089d0c12379117f814952f47e051fe2f3fa012cbcb0e32405a74d6b6dfd45042c82e68c4eea97484bb64679ce1ba0276a64c57a2ec3481aacb11ba6c10c805c616d2232349e3d7c23ab7b42401cfac172a5c34e94f130020027e702ea94bf83cb726252b2a6608fd25f36844761baec7cb502dadd48f4001403f4203658430fb96550db1889b4cb855bb3f46dc8cd5d06deb27a345fd18fba4773b269bf2de1ce7e865fc71b60e173d335a8027740541c55d1d49f61abcb01bcd64274ca6a6a3d6fcd26550968924b50c744efb93686608d2fdaac71f00857aed9ad4ff16d2bbf3320c40753e2fe11b2f22b76d01cfbca8c3d6c58c46b17c2869aa661db7d6485da3df31cdc4c2902101d2d819cee200e413e34e031ba910aa636ad589e543e40197bbe5cbd36fa34f4c6c510464f679997ada6c32514e0e68780094969ad7754b16e8e0e25ff02e31638780ad9a713ff0101901cd2b627fb1167208fc908d282a55699f4753fd6d48b13f3d3ced545f11ef93371821547c164057cc6a44b2bdd8217b90fdcf53560e6bcde781dc3e3f55a0cd9978b56267aef0e288c8c2a90f78b6a4c10b4871688478ab65737825a822adf7fb7de66125b6332a8982f12025b5862127bfff3ae441efd0e30a82f96e74e85e2376f925203b71f05e2133a5c3c9e84fe6ca131e83a5553c04f998271a702c2dc4af712ee805016eef78e2ceb04d05eec825826f4fa01e85051252ee0744a7e8613cac8e4110962a2331c33ccee13e559b213ab6b768ec145ebd2cd7aea64009e7b726726cadf76ea923244805575d2cc9477f13cc552832126c368f3869cc7b5d674c8140305af5ca5516c1f970368eaacf3699400075282dbe5361800b7508ed3888de63b42513e8f358599a4f4b64abb449945826b251c958184fcf57c2912b638c26977dde218cad6d35d98446dc7ebcdae491e4d41276578e3bde069719934bc5e9c96a374ad28f547f2b966fe1f92241824ad15e8390e8ef288e53af44387a850f8822506b71b5eca15795a5210d4c118dc9efd7ab7ee072aac245cdad516cf32f46cf9db95290da8a6b3955597e394d88d9331df26a26e80ae8ed13f98a96fad825a5cd2a446a9e09148e90d5c45a884f7af2283ced8ec15fe328480ec89d6a2d04e95ddd3dca511ba85b18292bb918a679a666400d09b4666a91749273ce40bfaa8f8727826f50cfbcd9668cc14d2868128b149ac655d648d1aab646c947ea8d198fd6659f45d26c2a98ad7e450a65eead46ab75f366787919ef432d92b4d71f04a9151fc273c2ad963676c381b47710e2be54e77a516a5875b43d302109c48aa60b309bf25cd51b0aeb21df5b6f23aae06fd52ce4eda5c95452801628903a6484154ba3d3ced537ff4f0f572db0a2d14a5b3200b9f431c24ded728a6acd18629927be4d1aea72b000258bfccbb100b1cf023a2cb8f4360a687c0c479168a5986acfd9e1a30569e7f07e69459173cabc27560cfa0ba9fac23a1f29dca8ca1febed76284ce7f9aa1fab7d91d91ca89759605a8f39c05b81821243d0cef66718b507a49bf18f526fb6f6746a1e4ea2eec42be64483d894aa1b5594207aea9c4ab17b1b995159cc58e7f9b7ce94e8447618d0b1d76cb4f4e325e8a07538ee172c85d8c52d024f0094e106de4a10bb26385faf5b238e71ab7e4d30efe8d6dfde24ee555104c9561433f346ff4e524ae8fc540c4bfedd09cd2e1e912a57a9c67589bc44e0cec285ca4a4cfacd6011bb82f97d1d91d0981ead845be1874d4fdfaf1d52714f6fd92d153180d3d982378640fae634fc3ba4c6406f0eee359db59af0d2d2efaa6d244c2d25e3fa46b5d73faed3a6607ee2bfd8bd2c5044a8bf6911849feb626d373228d06700ef6bef3d52eb1818af4b5efd41a7839b5726ab93d5544222498aa10131e739e2a380de46355a791bda5e5530ab76a2cca2cfea426758eb94afb336cfb9c6f82878c23c5b32b6807e149a867af4437cfceb0fb4cb23b58981e8f562e946500724f8d6c3e4877039999312f08c5d5a7f241665ca5d84797f1a77591b7eb41c6c2abae339d8e0f92d4c3a43acbab6d9e6ad8c45dfce17e8386471a2db1f8a1ce0397ae08693808f69142d247437b3c48ce0b91306922d031ba407822be86344b7fb2bf271ae039ab21450a1097ae217168fc23d70d7549c0905343ba7e3aa83403b2a697bc4ee06460d1194eff42cc17334ef2639e860cadeea8a262e943c565831610356443609b09cda6e1257889954a4312580c9d7ec9b71c7134cd8bfe263acd21c7e4668bab5f1b26e325fbf494c7879abf1304bc41d7109d23cc528aa223d1d7976a483a4a05a26eee0ee6543469a1699b1996138e30ff201535d37c825ded21c31bb06a6efe30f394e565d2b999d97d7967678e46f11482d2eef5b35cb1e3f1705a00b9817c8bd7464e8a07f80450905f1dff82b1030a5827ffeedeb866d9d91b017fce3eda0fc5478e422073577b10098a77f3b0ca357211722d863e6ead3c9062a84cc6c8bb5ef221773f8b64b2f740de6b0889da92debdc35b96bc58aa65ff5df233f64bf0f200bac761723fce6c81c94de176853cc04f143a88c9edb6a2e87b31e9b198d2ff597db55f3aa87f3e1ffdd8d2989efc52611d4b1fefad6d7dc896cc26293f15bf41a7061aa2d23d4c37b02c022478cb8d77e7680fdb1438b96578016008701c9e8c83619bd13a85d1284a8495a5334f707cda06b15156b920c3be0a42ac210bf5cc1a55c151ccf41a287c0687fc10ab6a0a94c922dd92ee4e2ae565109b60d91f4796c55e15ba3249047542a0f1f1a985211fab547d7d192bbd2e7921bd50ae16663a1ded888f066972cb470da6d667a7b7d45cca7e05a71efd94b48e70286624e04d4e75b9fddd47856c6bf9d794fcf9582a8e9335539986c3c499f8b1be1bef6ff102d10d8cb0555adb4ed9cb9ffe43ee2f299e7a68d3a3cd339530a6afbd4beca7cf76371e74a56fa78ac0eee70f9a24bb4c38606d2cf30b2bdd22d29671018a2e7365fc5061015f13b849108abaa02ec04298915d8b3213a9d528a4d0f4009b3c7a181cfc831561a2563ac963449155f90e164b0e6ccfb182f7cbf6ce2e9bb94d9f246dcf04ca0331ef760e2e474afa1cc95d34333ba6cff4858d1b19d181527b3a638b4262e308621a2a8cccfe7f4d688f2fa154a199948f9fd5d5713110e3c341f3a680188e4c97db438a325117356f956d586a99eebb93560418dbd17dde29713f89c8aa570c399cfea891c1a37cd28e87f3858aecada72800401947f581abeea87de90e69aeaf99f088b0bc976a2df220956624896ed7c3449eb76c325b96aebeefdb7d922cb4634d5387125a915909f0862a69ef58b57e2b7148d7c47284bf3f6d5590345471a7caf30c19a4c58a7b5540a52006d61403008e734e2ea228904b9a70595eb0ac3048b69ad536d17c69094ef6bf74db65b6d244e83b46f9e5b087a5a7ea9659cc03a55085788f26290a3239ac55519a856de5dd83061409acb1f5c6ac4d00f6ac3cc4956fede1ce965ed28e0b87ae6e7a32a3906023a59b234319ef95b7706b1a86017b13bdb91ebe3a321ace93ff208170667eb1f7d79031c30244450877b1b4bc36d803d99bda35bca632c27ef603d693f5d6f9c68e0d42f0e722052ff315e549864a831638f729d4acd6d89a11897c3f76bd133b89c657bd7272df93232baea43ffae2e3e5a91b6c556074f96806b889768221cc59a537cb8a0ec6600919002f144979907bf309509d2513e1d3ab6b0cade39dad941071ed896de6f1552499637a5c0fa657462821e0296957ebab10bc77e499823196778ac3fbd55ec814d2e7522c351c74f3296b3a048dd1f86f44dcc894422bc821d098202cffb8847c4c5253ae29947f071313c2a585ed0038f7c15de69ab967266d5e2ef7c38978466f67a3c13394ecac23356005240f677437516f624c08a09bcc72899813dad01177c8a67d5052b60f31d6720c6d20e560ddd672e88606093d5818039aefe63f79594d2c6f886ed82171a33213cd7fe111f9328f259a869c5095e6833570f204e1a814083132f07abd9eff3b2c7174656ce589e7f1e83ea4a29fd5dfdadc62691b33d3097b758cf8fd05907052d5335a1d3589b79d2a627034905cac816befbc01aab999e586252818f286812588b824a72d28fbb08e68d561785b7cd6993e3288d5797205b3412aa586a359f28efcebc82c305abe51eb575d669ea6d830d40a42b2fbbfb09d7c8801220454db869c1cd4a6d1b82999116dc17379c3f1ff0b8a54394e99fdbb8f061e49c074ee3d07452e86803c723ff4a3359323f0294ed981f3f2268f81fb2d4ad44544bf7519deae2a4bc89cf8415484b4d7e25bcecd4eef570a14014c0235fa654f770003aabd6f518f00669f7886683df69e1047334f3149ae769e02da391e9f540b0bbdef801bc34968e9756b719e645e8cd8b159d24890c1b051f1f70aa505fbdf7da9d94ae7f3fa93768da73d2864407158393522691c85bbfff7227c72bc21121cc56f3b68b0384b7f94105b10b6006a72dc876e3276b04363359b7cf57c6cf9d7d326c45ebdbc78092cb5d1ddf7c612e291d99865e8b4414fcde17a264885649620065cf4b80dc3059ab05783f287da4823ce219a05f02870a833198857d53c0621559c3f1dbe3a2619202d7045e55c6c32dce65788aced55eb26be49c91e42d5a2774940cc3bcc11b3a078d61046c004d60f2a16cb1f68c5ecb2de7359c6c78f465bbbc2e1c1842e976b7cef1591a2a8408eb405920c6c425bb51ecf43ac519d0952ce02ebdfd411d2aa2b57f0f41387e55aa9bd4067c5b17c0ecf8b8ec88cf65df16132e12a8aa94a65001926fb49e5d9ea1a5f9bd6063885e6e69f14c312acc466f2a5ae647069bd90cc592bed3ba906d12b2abba221283df364ae91c906f41297d1eec7959757daa543b0e9533e938a39a2a5db0e1c664389fb77558413f75d309db3751748f1ad90c275f571dc9da9d53905d3719b85c5bdf320bd5d3e3483038721f1bf4c410506de6f5dcc301bbbd676e6b9c3d981d62efbd3025f65e63673bfa6fb71e145ebc389df8d942bf0fd5692729ad3c95480f5c3572f147ed84617410663a94a5448712332fd1365bd02b81c0c357da3a02d2984282dfcdb4905a444a26e82021c8b208d79369bc19714e33b6e9d8c4de664b8bb27879c5f0906584d5a78ac3962d8901e1adb9bf671f4784b0f6b2151c9e5dcaf10778b5e786cfbceb2756773a80505c31c300e5375809e490ec64fa0ea088aa6bef28f8ba22195f02c62a909446c5ba3b1b22eb0312493c3e25da205e049261e1ab2a7e598dca4a9218ff4aa1e9f155df5bfa09543e1b7ac53bce09be205a6a150400fa1debf93c1da3286a994ec9230fd09f22915c0cef0d76f7cd6deeaf7e220520137ce28c24e51d6a085399fb9e8c1ab866feec49b5f82a83b6d09c36e0a4c92996276e64b43ea69115d2698c56c662d18656e519fcc488a1468e74ae5dde6a05a288e63796b58df84e9939108f71795e0dac92a3f4bba67a2e69eae7f242cd3a5aff4dfb6364be82062ac6348b8794cd95be7da312533aa73e2aa946761e5edd94a27df8b1ba6f52ceb6bfac485076285f1701c04cbe53d65dd42c6ae6d107080f7e9a7c951282e8d2c0d6fd9d9ee07e662a6092ab70926500b539745df2701263f89d3578e55cf827036e8974ecb477be835423734ba113983a8d426c748f70bad7762514497f985fe658d9ca256ffeb334e966aec6485739bfc89e904a5fafae16042994c0e651b05074791acd78e9e85da043762f04af72b03d698964434b3aafd2c4f3fe8c5dd2b8a345831d8ad8c2696031934b82b8696a7be39cfeeff549885e7349fa977e77c4162be337822dc0cf0ca4ac7ebb5171e49ea8c42e94835c6b78fab318f335edb059c6656a35b781b6e40dfe548de8cb7cee973a12a3c183c0c75110a7a8ee9bd449767500f307094b734465f6ae02cf0bb2fcacdf85271cb8e36518cb1e13600deb1337df7b6d3f7198ef47d1ce055821424cfd65c6210eab1b24513221d0b0d6c85a2f61ec490ee0492b0150813d44bd549b7a36e979afb4b7767011f7cd9ee4e1ed3e9305f0c0bd02458f86e14738a60ea65974ce151110a93bbc71f4b0474c690d3fdc2a8c9c4eef2fa570ce8d199fc66c8431bd61ebd0efb52c77f2bb590e3373ff71125d91f666a9c60dfb12661a26800ac512da5433db8fe0709a1291d78beea22589e88a1bf26cb3b866c61466d1dd2ee2c8aac463eafaf4cbb27524ac38493253d4ddaaebf41548fb1770cfc76b8e4043c44882261094a30377a56e45b0c20f810a904ec3d63a33ff45408e79585b9f15b21b5afae1cfb21ce87ee945d9b9530ca008483912a2007d7a0b67b3ba1a0463bde176285374d12a911619dd010089575a777d08f085d84eb1184211a1ae844562679b1105ed5b0492e4785dd0f8fbf2d17c2cb5683e7ec1aa9acdcf642132d6fb1a00640a58c871ebe26d3056faa6a19376f3fe951aa8c00538f6404f0f0df5b86e4c2bdbf66a936b7173b3bba3840b45c30508e60117e665c9aec13abe19ff139c30b61e6d8490c38380cb8047cd38c652725e99069a278d4496d35a83c8a54e97c66fb76d526a6a1a5f326365352d32137016c3b20a7de47bdde61b39c5e5b725c4ae134cd95c5ef1665621a56dc93236decb59ee71ac07da7b97a4b0cc345cbd675b29be6da35290473621b228154c4345747cbe9249f9a023546548f0717442d68c593e2d2a52bab821a052b42c25cb281c728eb0055d330b5a997ac225677295e5fab49eb3512ca2732381436d95059fb600a2d62e5141cf7934dc4362f8395b95876eeb7f0a5e1887633baf2cd01b80603d9e91673774da4f72c275cf90a34963e6dd92d868db3dbdf4e990cf0b2872327c1fca8d44f39877fc97edbd595ab7fedbc7f7465f41e95cbae8e1d37a551b90cac45ad3101909860e4148587a485dec90e87df714db9b758fbeba6d6c9b444b92435d485e133da29d154e7212f11e3f9561c07d536380efb8b0b57665c8669ffdad65f2c6a6f179acdaa7ae3894d93b7ed0d06c7be582dbb5e5c2734f4c44dd63c82850a642ef32c2f2e4aa53cccac00848c7e3d415e516fdd6f72954c02f1235dd1e943a18cba641cce85850a0d70d38d30913dfecf170e468fd7256eba15f94bbb0ef592e8e07b5799758178c71f8abe19d795be468219b990e9e480051f7534ea568b6e4e67a725dc7697634ac56bc5740192c600a741074ecd97ece0fcf5966c65bc079564a5b079459dd818a0b27fc1518995a70d80091ae6145ff1e9bf3224ec9871fd36779f786a3db2e89af19a813bcb22e8764de69e5ae7210e5e644b94d293d6492c422ecc5569e75475d39b0ba7bb65eb23b6e2767d653b84ca6cf7a7dae269dad601b56a426b8b441c5e54ef6f73735f0f11d37954d1f6f639644228ac3a6169d03d5d32993cea9038421b111e7ced1b0f07b25f2058559322d54b88afd843e738576cefd9c692dddc137ff132590e70afb877f453e5bf53a8d810826300019f290ce6abc0f028b617b6770eda61ee7823567018e33e739c59cf51b64783f5bda3cb20be97e1797b61b3a281ce5f220ad672250469b3495ab3489a5202498f4e39088249bcb472adbac87c82613538f65e427e7607899392be38f148c0043725d02a6d2a14be4a5856d35fc79fefd65d02fc18b1cfc51721d156b478736545e251afef4794fd9640ea08125824909b355a9b5d0b2d8ccd7bca1fe480ae8b753a1a6d4fcd0c59b13de5cf101492c1a720e66f79d92c7d0441e29083fdb6865ac6f86d9bf61c4fd0fb1482692761091b13e52111a0e37d7f4b825161196558bb9a41b91272b41aeac7e68496e205c208e5c3f2b26c2870ad76c8610307b52646cceacb046763e40218f34749c6632512a587475017b2401a7d69054bf3b375db46091bed9a85debeec9dc6e7760bae70f10c13265045665bc9b754c9ba086d8d3d848f82c13f2781fcc2dd1888c727c1938b6194442e6b79c2aad2af087eff25f061f1a7a43410f08b97905f2bd88ad1aae03a77d97d81247d2ae2f66bde85ac87afafec4d467fcf25a179b0875ef5ce341c0841203ae2a2de75d13873447a81898533b8867b8f68a04bdcae110ad57748b138b42e40702822db0713a870049a445a8d5983f03498741b5caa31b058168120023f07ed1b678f29518d54fbe59728bae4d54a890b04eb7b2c7cfcf606faf402f6567f0c670cccc4d43f4d6bb4ff299beb425e45ed73b08f4bc3893f2b7b73d858b2605a70724829ac307c6eb61367d14d40b4fe6665227c52d0ff596c4153e60bf2a77122c07d8ed6c56d268994bc5053ed7c80993ad08ce7389351d8833520cfb99ead529e4909bf2b91762f56d7152091777d8bd239742449b418fdad832ae18d857e1dc9e0c8c28e862ab8f7fd8ac89e33b49d1518399e4b4b98386a598559f5d3aa2891403dbbe661c8c02237412fc3f9311d75e71420fb8047b53bfc7546505ded569192c8119f2de8f775f2c214ba0a03cae365d7b856ee3530d42c5f99e92a92a6938e85905573b7f0a3392677064016b8adf00181a3468c043e4362e2810c3ef35486080c1feae8d024115b2f5cf7ed53d772893857d4771603a0e7006048dbe3ea1f8149e3dee7965e1424d54339350da05b53ea7b120ea5e9e67792db8c072712de140160e4815efc52d020e1234d3113c5a3b1a350f6799977088285c690823d3352014a3a238dd0d3dc485767a266a7f4660850699606160ab16a5b889a84e6825de439496fa63cfeea6d2ed54e86645082918682224bbc14dbd7c1dad009b265e0b4d42cfdaf8bf17d4842e427f8d728a2030928f9cdda24b29951401f304b7af39ffcca6470b7630b6de02f98561c7b08b54455b0c3589c21a6d5edcc0e5457c869291ae686b9ae1f622ab4c4c902d87eb523bca6cff7a86adfd913a825b6c88bb4a4c23207f05b3b089b3cfef96c154fbc43e73e4ec7cee41a6943bf1852bf3341d197969429a2c94fdc187345e8cfd7db92e07148ed70c2e57bd073393b20c1269d5cac8362ff6932c68caa31fd9ba99a9b1b67709035b641eea42824cbcb8281cd794f91a68f8f58aebc4277f53a2cb4e230869f9312ae0f87095747d7592779627700b72f5e619e8dd6a2ae0da4b2bdc50e5c5bc008bf0de358854876e6e3bf898f397c461a9cb23e417a0af9b8cfa4af936ccd646409621751d3758a90e7e18441b3c9af015cf20954e0b294b69495f0ec17476ad2c7d77b74d5176fc104f4124bdbeb3df0909561933298a01ff4cb240fcc673d59430313f436f432e051cb300ca01113a28f7495533c44dff566d2870e39d08889e8b150e9bdc1df6ee282808ae609ed5b3aa599439f42ff035ee80ec2061a31418f79d312be8b8d954aebf919fac14940b8cc6bb542790c8d98a3875d1f1c381cecb60a91d9eadd94c624f4f309e46b1e83dfd2a429ba368e298f397a2ebda21bc294ac262046f40d178e98a2ff3f9f7aee031edea010cd76111fb9df97bf8bb548801853f4859b00b36084592e176887197ae082529e04ed400eb2d92b8c8130831ebd0b00d9c3fa7d823e804bbe636a48c74c811b7768dea13fa518bc5b05de8284e30d58305c15271d99819263ebd872f34a44a202cd9965a384c8d272b29112e12661cb7173dccfa1f08c649fe431840160000800723f8432a06c38bab04960ebed549f517a3357d47b11f58d6d3da27f6fb384104208d97b6fb977d80d080ead0d3889f917677dadca9088c45424b1c9d7590b90912f192238e6bb1bff207d6e6eb801cfa9d5919098c731b10c916f7ee21fb85f1cc306e28354504195a3747125cdf5b1c37269f2fba4bfb82424faa43ee938e6573ebff2942bfa4a4123a910832137a71f271b7a6239ec92806a58c2183e4033afc491252853f0a4bb7249114bb1525d90ba68ca90a5d4b9b22fcbf5d15ff9fccc69ceaf609973ab0b22bc080d967e62926c491e997382567e19020e2a4adcf08b79bb3cec914c66602b7cb7c47e31534c9b34a63c34522ac37024866025869a6e3104e15447c4b0032ae3a5d343924da415ed51265936c930055110b56ad376ae5219c3d610a9dfcc31deec264365380b92ddb429e21ef217b1a80cf62448248010545c017b80f9b36c10820a33c012cc27b9e13b9e4865ecc9c3ddb9043731f3b641ae3f7be63f2fcb1731421471c48bebe2b2dcbbc242e28be7fa37793211282a1895a168b0a854c50245a2ac50191ab160d10274023328c59e52587443648f18ae48146389512e11cf3c6de20e3f9784b811c7826bc19d701cc79d7b116d4239f723da94728e4796e0b9d35e910e43f8c3260bfc8d5ae0ef2e5ec0c02fb00bac3a09cf26b8c9c44d46a34b05ba19cacd723223ed49982f1d287732a43853615058daa23bed7d6a2cc5690f5e33d38b65ee424db404bd59ad569f4d306c36d19edd4f624d8a2b456352d42e2ade6984a73d08bb6b34c52349b4a213a85c11c5137d49df0047b503b9318c87812bd9571519d22b45ffda2e36d8287a76eddbccdcbe4f8cb328a38f258a5e2f134ee4ec311d99b872762c8ab25a7b54f9da9ab88a2206798b76dbaa9848266baeda83f0171b6c9e1966eda2ec9bbc3fae6a083434442810fff90f22148897c73a1b9f47fc1101330f0ad8f85ce21d32c7cf2bab1843109a53c41f2dd2250a68f9f3989635349c21596a0d5648f6e8b3539e88bf961c2f168a48cb2e9d4b114b77b1da44718659f4dfa5432f53ae147de95cac78e9501e69a252ab78474b5ec9123c66f17726f6eb4173928867c8cea8b2bcbc3b202b47168fda59b04832faec44d2de4cd21e5461cd24b3251ab1a04018aa9225d89275c4af050156f48b44d9371c2bfaaae20c690fbe8af6e045bf3a2226d5576ce3dad1226f8198a9e8f48a4478b6da8373e70cad8c27bb6920e0af1e7b99c166439a34b1c209292540022cc19c7208bb1a11360cbd91257894571ccaf3d9d1e5477928e5a11173236184e85294f12de84dbe7462fc8b7679e97c7548864fb91f97431f8176844e5673a74d7596c1aae06f22c9b0eb507946dac39225ca6cd992e3a53d94670776b664490fe551a0d49e82a9aa3df8c9649a2916dd2f4bc51abb1a356bc9f259678325e70c5dc872ce1a4c81964c8bb43769da833f393c2dd206b0f9a91fa43df8f8785a62b39b0cd51ebcc660a14e09909061ce1e23cc3cc5d0a53bedc1db4baba03b19fe73670f10ab0208437960868241b4c8f019a4668022c3d331643769c8f01a11cb7dbb8d4d8b0ba820289494b2ab41e3ca4d7b3062da4379e64d8648da8330521edad31e3c3d7d4f9b2886a16409be87f25cca43e56b0dda9447d29eeb8a81bd74f25c3169d3478b64385798c84755191e92aea762134cd0824c5151feba333585a452147f194e8692f7833af02b717ece60b97f73d5dd79a43dc8d31e8493f2c40b5999f248984b07bb74f25cb5e9087c64e52f43d5d8ba4ba7bdee42c26a0f9ec17e974e86bf76ae246dfa7ad03e92364063523c3ce9b489151f73c494a72f5dd225f8ab0d96f264a9387932bc76274e7bf0d99d43dac3f9ad51d81465d120cb0c4523cdf0591028327cb6ca90340ca4a29541c10a926136c466301e610dc95f9693617624c35f95f2b4e99b46289cd3489b48539567916faa32cc52127f194e86190a469ca140aafe81cda4fc8833312259158113b0f008498e64e8860c8f20859cbc81e4e36387035e621912c4640905f6e5a3912f63dfca521ccd9d935d7141a2328cf01b515a6badb5d67f2abdae6a597d44d2d6a194f6172dfd6b84ab7c1d20ebb8aacda30d5ce58823619a26dac063f8a341f38253165e17feea23ee557bb58f74eb60d805ffc57b63d4691ddcabdb4722fcd46953ccf03088551f8931378d84198d68202c22872cc18f46d6a646236a0fb2980808b7014849643e48d7e349269e40cf0e4ff0a6d2475b6b8d075d7bb15a2ba534e20febaeb0d1a64d40224e54c52019b264498aee31dd2c09d33db2043ffa46b6368bb27a244c0c012cc1c31364f8fa44868f22c35f3d9fa4c9b08b36d0a588a4a117fea44d86dd033fdf66eafdbc5c9fe929feea41dbadbfeee7957635dac6febce3e7fdf9e066d225d87158d4031b234d76584f6f5c96204481fda2cd4d54b152d1066a98622c3fa69b497b30c6adc65863ac31d618254caca24bf04a325c92e1996437a2a2911c122642d125f824488ee814190dc9100ad981c200799a38da3481d0fb628c28f2043b89bb497bb07b4a106d6409768fa489d226be7b6494a81f2db31862e8d8f19bfcaa6c2e7e4af9497b769411431985bfe70d098361589ba8b51856800c3f03e639e765b394f8aaf2dd1d61c48c5d4b1e6c6dc4b2c0950db6445a4df2b115ab60c524dfdc3ab2da1463e72887e8433884ec6ac48f93d10ab087ee1c3b224ab9e2b87385fd244e6e89233fa44d142bc932ee4017d11b6c4bfee20e8c2d3f50aa68a430885b7bab2c5f68cc4e356757a46b754b3a233948b2ec7264c7cab2dbc9b25392e567ec1135728406ba6777eddaac783bd1635723543998239a167183fb6c033439007ab24da1f7a792c93397a49854de9f4d601028efd858450436b2f2b783d2e4786f1451047bc425cf42abdf28ee5441b2ef022a97da0ba1019ad2a06f6d35549b3ec730ac43c9927c297728791c81dc1ddada19f19c7221dad3fe6d4ab27c87da8e61d676d70d51ca1fdca9aee8b008fbf331599cf2a15d0d7b8bd25d74a538f976726b2826d2dffed1d1b71f1c73ac33a26fb1102a1db07d9843a75d8d50ed8e9869231a7342601db6da321bba30f78fdc45e802fa869d62da242f449b40f29f0ba14be398ae46878588b08a26a6d6a99a989886caf257a7aa9f3b288d8d88e40b3dc82423300aa600a5c942b4276fdb933112865efe45c250fc79b13c63c4d2a6b6aba6a01a23500149ce20c96645b4dc8bb98103c66165042a30c9fd17895d19e4b1282c1987c9d0e87af6ef3ad75ecca04b7c4ccf78615786bd96f9efb9e58462832d9162744a29a594524a3a6364a536e883a91ebbaec3eb7ddf1ef6598a55dc0d334560574b58918370c87d0ebe3bb08200a669581f718386cdcb0f054075f747ed451dd821d0a61c42c414b1048f1e3247dc80f30821da6b0e37c6bd08216256a82c6cb0e5b30d33df26785b69683690e76bab74c0ce4319279eedd1c3639c5d01ecd1604bd3e24d0f1e4e44544c452132fd489323670909ec58ed78b2446a69d3077b5e38cc7a051002658465178f1e289d711286c33c7a64608fe5b0cfe6185738db258c84d0da172161b043d6bf1fe88cee53d363d8e9566f3cf56d886149fedaa1c2d20b1a2a597ef24bfec4da10bac87f333ae02ab6d4c125e57f5e8e31c618638c31c6885df5871a731ef60017d059e21678a5e8f81823cc1193c1066dc3c02c1192638e33b9c6757a6b6cb0137df6796db0d33cbce8b3fb011aa7795d1709c337e661c6614ff4c34e3242cb186602942f2c05edae067c8c8c349126c30cd87859ea397d0004421749858d7e8b811206665083de45c3d454cb28920c312fd30a7722fe9e856898238ad880a518a5994a7a92944a2cd12651a68f36411ae6839200656508407a48a99c5d230582cc5c438f86276861291e7e5ebcf12463c3cec695bbd5b0c1962fab87f05b89060c56c4be306e06981113bbd7b36b836403fbf52b4f1b59111544a643700329c42131af8ca1670c3cddca1d038e37630c281378b475906383150a25a1e8547b380dc47ccda4d1a1c73aa5236f7c20a467864cf0810a32211d599ff42323451a1b92e785ebcdb06b9f5f61ddb85382c8d21e936430dbcf63a70099494660e7cee14fc39fab3d7b7735a0bdb24649ac6f6467a349d8e9a1842161988444bd7c127d8a7dd0f7e91b93301ffd8a4987a7296fa6769b17964b83f4326fa486676d815dc13a79623dd0653ecbb2cb240624b45ea986a267888e8e1210686fbe0419929dd80383c0f044020aa280236df2cc33e6c08af296a5cd0e204c86034f00a50d0c22873c6106843c6710f28c3a36b05164f9040e204ca77a90e7e1970d210c4572bcc9c070d3a729a180647882854c10434d96bd939a4bb23cb50e09f287826187dd8d9a912ccd1b55a09eb0b1254bf358086cf694848918666dbdd1340dc3300c3bec340dbb2e2260ce6c240ac3e44d7b41da3383dd2047b921aa9490f6660d8c089841a0fbd98c69d777bc64296087b2233d192b1b92e164aa4c27dbc9aac8946445b29c261f2656ccd8a97840d53a9c6521595722d101e1cffe9ef7f292a58dd4c919d21e4e912145e8871ad9b821aa224354580aa78714692066e7b4a902b984e0188141c03c71f0c9cc70da0361787e05f42fcbb067c754dbe721e4b20c7fdbcd54194e36a4bda95ddfb49ae1a8ae18033b1f7b523e513e638fc5543dd9da702115ac3284e8217cf218a9f2b95f0fc9f336e5a2ac1ab5ca1366acb32cbb02b00a031442a4bcc9f3d9956a54df90969040566404f9cb8cb43099ba6913b635aa83b429f4c97deb993f1fed5956038b97c3dce34e7b733b77b7ec03c2d8af23f4e048fea44d15f36ea05f777b962940ce1efd451068e6d0fc8facfdba1f36b38e1e9d391b1bc6745c0ad8b076755cff681bc7e9e07ed9b058c7a571db17b3f64f7bd7ddae7d403f320893726478078fa64d2029f948c3b8d0308147499e871f4b4d0bc0f2910ad0127fc831dea03586ca666913c9a2d81b147f30264a4c8241c41c6b4b4a1a06d02ace1c120e108884e313ffd1b609574c3d53b8819585d0151b9a903faa26adfc4d23dda6a9daf4451764d8a62f4291e14950835a11cd48869752ca2a7c3b3a276b2a36c4b4ce26371c574732bcaa3d1873b619b7e5db16df700c4298cc2ad8006051d8119425015c0220b266dc6f42d11bd5c35f34ccdad1e8f7bc9717225a3e037f33cfd078da60b9f370263d5ce3699394309f1d4fc30969389886a3e1d0c8a022ed412659877f5c6bdaec804b38b4837d763e3b9f9d0df402bbbdc320557b2028da831bfee4bbd0bfaefb40aa0e94d3a64e843b9a03526d175404a402a9da44373a37900a94b3814037ed41558607a97072daf48184808a808cb4490608e773789090367197b2d6472ba59c5800f793ad1c2e4e869771bf993f2021199e87fb591d7a08c07d71b99fe4c92effa88acc386c811fac0d598386336f705aeed77dc6b7edc23c6d9898246a42d12689e392f6523d590df68bac1e9d5db896b4d5822e51ddb7570b22d2d3d97cf0133cb3f3768ea74d2e18fe93d9bad037d8dd29bb6353ce4b7aec86304e86b04e4eac6383f79b0be8363ce33f72087ff2335cbecd2dda1cb856092ca97e26d739642271b9e83278c83a5c747598a836e97028e3a21dbe43cb0150125d46f7eddde5b7aeba78a2cb8b6dd546bdc4a4eef22152878da0efce7da3ef4ebbf9f917792b7729bf5d9cbcf57001f3b462d88879fa8971a59ff1d91dd172ace5dbfdba535cdf437731da5dac055b40cb29d6d1720cebf0bebd47e70ef7e8dc82677b3bbc7a9ff1ee6cb818e161d8de0ef8cbe11b004a329e83e852860c9114f120eabe5dca103d071e4e455b978348079c83e822d1e5b4690fa2e889e0c1e5dd210faff793c93c602d3724fa9c176d9fb79ebb3242e7e6f6d06dc1587b1386eee4e13336ac83071e64cbfd427f79bd342ee37e3e727718d318d6d272d1eb67c52e6373913d5febe7b57efe23836bb90f6f6c8198371977c33ae43b9777f25df70acc7cd18889b7dbf1107a00ceddef47def037e321fc1972bb31f37061ee78b82e0fc0fd7ae419f7e17e4ee419a7713f2ccff8cbfd64f28c4f9b89a2d0ca1ea6cbc5844cde7e7536a48bcb057039255c2b487bf0264f9b09640a812e307643704adedd19ed79edc14f1b97cef26299e394703c75abdb869b243f93e510326b4896ccb8330be0c25c24a73d88d31e1ca21d812e2fed5961b5256d2275f0da110d49156d92386dda8674112d075e5bb589ae21c36b3a6d622569537778ada529695387617b70dbb66dc3ba69737923b5d081dc49b9f19025f8c8823d9115a180510942669073c1c1c2d368013cfce1df483b9c241c1fd88615e0e0441744618b80c292e4419f399124263d80c5fb38540ec23244240e16322c3e73fa3e3bb93e613f3bd346c2cf134098cfceb48141c48041c8910d66149f9d27323cc4c08061d68e46bfe7bd7443d0dc40a00b24e1681999becc8f780426424e4468605fb031c738fc44d226011c7eb2240c0ec0e167150d730f3f95b4e9e5f03d3069181800383ca591302f0e4f6ddae472780aa4615c1cce90344585341dd2a61d24cccae1694e9b4a87a7461aa6c5e1e911aa236146873ac0a4e42061502e03e6a4e5f073ae0583fd1b1d7e2f7900271120884f216dfa226b0017a53d1201f0109d0930804f9b09045e197ee2d448d50832fccc31d230355caa480df208422a6ea0c8f0f38600410c80d52668841e589173b477697c001f00fe68d0380dfc0920009fc92f9fc93d7c2603e033d9e53379c667320f9fc93b7c26973e93bdcf641d3e9373f84c96f199dcf2995c676021fc87d1a0f169438306be2c0cfeb0fcd9b9097f181078e70751a8dbaa0ff87bc91fd7d20470b500dccda63df897bbf5703700dccde56e33eec6c3dd76b85be96ededd74b81c4d0e979371b996cb09d1f0ddeedd807409fe77bbb99b902ec1bfb89b6a33d2257896bbe9dc2d496f2d59826f71b7d1dd522e57d3257894cb9d5cee73397b351697035d950b6529c3d06021fcb44939c46c64fdf3b896844981183bc1508eb8d6077fdb39ae05630fdde59dab1a1b9e2899bc5d5ecc5dde7984d8c3d66d3ce62a733919feca7c983082275aa71fdd0b3a7022429a3640da83afab6f9e203bd11eec112f3c615eb0dfb4c9f0d1055819ec0741abd10f5b370438a12757398c65874586531461028494e1143e80e2ba2e0c4332850f80b0719aa669db36850f9a4ce1832abe1c1942970e6cb0e58baa4ca41e7e4218848b0c0f9281ed29d35718030756272dfb614d5073d24e040b85688010c2fdd0a511fa75434b7ccff5ba46230cbb4ea3bd98eb7a01ae1bd383e6ebba5ef2a53d743f1af9a281d5871ed3da8d69538d95ab5ce5f0d71d8469dc02d0e8700817a0bd88e58bdedecf9e469baefa3a83ab1c774d1cd0b0b8abce8033abb5d65ae50cd03b090a85bafbf5b85cf20ceed7dd812be51819ba2f99dadb5d92117095b1938c8834349da9ddae1690dc9dbb228df662f00713f9204f1333bbc0c61374e2a2b141ee70d4b8c7ffc0ddb77457d771d2062d2b6eba3bee8ac13854fee011ecbaaeebba1a7b9b30c99138ee90a5831d6d8247d061ade4f87823a461a20a4ef106243462cd14458244eeaa2f335e0a30e3b44ed44893a3ca57f9ae46f67a9faf0ba770034faeb55e77070d23a20ebc90b12b668c589ca8578e78900c2c8773f0903034ec45c3c3241c5846c333a74a23d3d8c1a3bd582f05c5c0461d28c91fe4e18173a4acbce28afc419e1f31a3241f4c51240954188102cb708a224488f7480b38706586531411421e41e8022f3b00454a95e1bda15088dc60b9d1b157202c2c0f0ca2c5e18994357bc494d2148e2ae7baaeebbaaeeb923c302ea13c149fbcd29f9c87e3a64e9b2815519478bf9494cbfbfd4865c9b23a15c70643591eac27471d2c6a87a578ad242de8c21c2353eec9b5fb65aa0f72f78391e68ba9fc65a8b8ca28f3c488c90414d040da984c4081904c456db09482e855ae6c125bf288bc113711df5d0d1186f6a2c9318b6ee4626e71e90e74c950d0a549f6ebd9b39d22a31ddbefa12227f745f9fb76a03f63ecc32c6566be995c6f34a6f8c33e1f3459be1fd34de76aea5c3a73455534e7e269d3f57ac3c2c9f03af9a3911d5965463215ce8a88d8603b15eed25eb54dd3c454c489aa9803597007b6bed8b30464d1db83c60859b966d763fa5a225f291b172344116dd244f7bc179d0da7e00fbb746811945b8154540dd21ee5e1a13c5aad363998aada03fda3aa95e4b07dbcdde9fdde836695832e49ceae875439ec627736b82ff4e089dc4d2b2ea5690f4ad1385e2c2251b4633fca73e76aea34102dfecd5516a427c326d9900c61119b0cf5e98025d968f1f868f16cd244c25c3a3a518ad6a0d31951b30e7a793a73489121152bb528a8d82940e6a61dafada9ad254832ec30ae622c3015638c95621a29953482a035065537957105e13f57f2b6f8d5e2f03a2d2ebd9cc0acb0b0bdd943dedc0cd55e16c40d56056787478f971da2c7ec2251f62dda6c0507dbf27f7b0bcb27f621e3bfcc7c631f4470c8f8ef8305fb6079fb208283e57d1f2e3ebfe158179844cf824948504c22f5630eef2be3a4ebaddc1e344722f13960927ccbe7656012122d9f27498ca3e59384e36f2f3bd21ec450feb65c284b223558faf81c911a2cc5241bdfa593a1288f44a9dac4810e3b3ea50039c6cbe2c7c8f892af838a647894fb653a2aefae147dd1fd76a8483ae1137ad0b09292ca26101e66f07506346216a44bf055aaa8e00c35022b31edc144603fff28cfe730ca18e39225777bec71694f8c18b3a38d31a67af0448c51c461ca537760332d4326f4e0897c652ec69d310776cb900952b0d9694177d8c6f5ecf0db26ab88898d5f007d8cf842423202c7185552b0c92dc8db7beab429c6618c7fdbedf1b78b6fb79895482442e588e2a84c8183edba1ad726a92c02d3ebbae8a51d5ef8ba322a9fd10f479f51789a80520e552d3a266790230a737803dd0f9b5664f86e717bc81857873dc6bfbed1db7f83f9925327067e4cc7b8f8b05b80cc1f9d36e1cf86e7aabda9234fb03a3275da2383fdc582f95ef8627d300989ce17be58974e4a4a2979e8b53595860caa1cbb05c4d31b382ec89252a6da833b3463d8a13b4a4000eec41b3add6953e8f0140626f2519e179848a8c66ab326915e32114f44e7881f69eadb25fe2e9a4893d344d583c34353add54a4787c5923bb9751eafe725363182a65a318ebe451a5bb9e2ef472a43d1261687a7376d8a873d68664159fce4b2b898444798441f33ad790afc5663ad32ae0075033355865546ca0321ada24b33ad1db195e5696b270d56fea33b44b4f297a1ba4b07bac04f17d86f7e4b6c78f2602c63fe2ebad3265a450beb6ad05a3b1b33be6209c4565ea23d083f79da8482a715edc1376e727263be5408652569d3e92a4585fc511daa8aad12020bf287c1e1c525c5ff1e9839cdbbb8a47818f7c0cca94fa466d25c3aa4cf9ce02f96845979fcca3f3129cac0b894b2c21c97c70a6c92e1ab0b204f8cb1c6184948cc93ae447f059e583011963e7c762359eec56a207448608f49f12eb29484e9147ad2599ec4ca5d601ffd95b3601f4470f457ee639e846588e0207d656505ff587924e14873fab29cd8fac471254b70858342d1a00e3555aa872a1c8146b58289d4b3e22ac3a75cc1eabfb8f0b4c10758780422506419f9ba7722c59ed8440d3dabd83333bf8265563e2f036393dc4ac42424fa2f9ec4fc0af6b1f2f917d8870f18b0ab0029fbf5ed0a88972fdeb857605c1287490f58791f078ccf731cc6b1f2c63234fd1ff39d2271ef99130c4ce2701338560ee30c80a7868165e00b4c649552354a07c9887849b20124739745723c3c352642b211b37ccc12936c601df22bd807111cf330ee83a47d65e5fd17d8c7c4a4ec240de358790163e549ac60ecf32f4eda024d72673225715452485541fee490bcd3923c32e6568bc592922599344cb764e9ea59835d6e011240a2620f4adaa4bd2f79e412d9d3a6eca07fb20bb92f59308818595a0106316110140631252a12a051b6d5aa6ee57e3d48a2667727d7da9549240bbab46cb5d72a09239574a322012414a415b9ff8d98e4fe2597482940977ec5d5a6321e82e68927105009ec27254bc5042351e46f24532de2b1a11f74fe9833a04b0325d860cbb7b58eb4578da47446037bc2623716c64723bf075878c20ab0e0019e349ceae376d17e1222948b92e8f83ec943142a3a8ebe48f4c6292978e6349f6987a794140dfb88cf9e1251e82abb50f92ffa8ff6b8c07445314eb9f14457124ac9042882b96e1f6dc15a215728a4741726ad904d681a887afbcb0bb6c9ca7bad36a57f9495c35b8eeb4b37e5deddaec3d59ec3fd655c176fb92c8f71611cdf17315dbaf0e45d78d2e1c2530e179e645c786ab9f014e3c2135649986a83a239b95a4c71304c5314068cbb70f1172fce7259be450ec685a7eb54636061340274a995135d78da2ec684c5300cc38efd725702e5f74ac4ff7218897b948b49d8457f8c7fe8240ce3106112f694c3538884a39ff593103d05fb20d23854de97d1509e443f400bac1c9a53631915784249494149b182aea04b7d4d3141021d66dbd8af632652aebd66fb8f611208dfb887d9621c32523ad0a139a9bc7e2ea9b347c2a86012bdca674e9548872b1025cc763189c6e34879942142318eed2a58e6df2ea3519ad9caf59b767d10c111af721f28d7feeb235ee5a22b4304478cda49f4a2ab9c844374958b542e233a0a26518c235e133dc4fdaa1c3e2074943f207bbccab5ab3de58a30893e7494a37cbb3e1a93308c44e828a1a360d27518e333d28519004f3535305ee3e235da45af79f11a96d7a89ceaecb05ccaf3e2d22622cd454fae877169723d3cbdb8f0e4029e3478ba41575777a3a6467bca6b54be5d74e109e5861eef8df895caa5dba53b94956b85017d8185bf2e0909edd993d0b6fbd8ded847e81b12d9b52711faf64c0436946119587a4a5b99ee3410f535442e1007ecdc6913a4380d44fd7569ea0576f48fa65abc9e2aa13c742561262655d7376a27ab4d24fa994ced61e67eadece5ee6cafb242b846a292902fbaaa19ae893d22e83228ece8319df543402c0c42060c42cba35f3bd7754cf2c8d94dfe666a7cecb113618f710d7a4ccfe4ab07cd2758a220f6d029c95d8b7777e596c54569afbebb1a246cdbabcf526057586dc24e2fec7aada40b4f2113a7bdfa950bdb8b9426d7b7b84d729d161b59154dd18ba6a8105686b2a3d3fad1659901cd9eb07dad2c750f5d284b5e9b74d883de4189e16f478e6c5ff3abe33ae8fa765dd0e846cddbebbec50b77583269ef63dfa1c72791bdb18f5ec94e606d7b17e811149f44ec470c04c22424e2fb205047ec8a31c6fb085d87a1d0533009f42c6b10c6d15b4af678458d65645e64a9fe3758b2b404643de6a579c81286b27455faed18e58b5e4680b06472a32684ddcfedcd2e09bbe8f014bafdec49c4f8781f29352e3c6fdaaba8f6ea4fee0cd25efd14d230f054b92b7b12a25f9444167a864ff44ab9a4eb12c9a4dc66594cfb208223f4ec3efa29171dc356c2a0601fdd4fc1a4eb313ef4f8102621217aca4917c6217a0a0947e829f7d915dd941bc2323211254bf54418004f35b2a492a5aa7af62fae50220d0a4ec131254bb58630cd89ac148d085b59a2d9639a497b54254bf5133e411584ae6c3d7d3fc28530a4c0c0933fcae49baa4f3601c2d3a64f32e969a26a1329b6a292f6eaeb67925945aef99b4a82e48fa5a6207fd38a5cbfd8625d7427d7afea45841dbaea6cc889fabc7ede64afa7391246f4ca7ddbe8ed637ae37edd8ea374c5aa3449ae44389129fe9ca874ca8e730341ec970e26ae0c3a869d9c9cb6537c5df4a217fdc7654affa1e4ebbb2e16ffe8b163fb75a757b6d82f26ae7c72f22dfb1c7697c67dae7ff087fdc2241b9c0eecdc618e3c4d64e9a17f9127e5d94536b254556a4217d59467bfba1a376e6e70706e8e7215da31009eb21c59aa4fc1ad234b35945245987423741203208ed0458f27d1458f27514defc8527d08378f2cd5674fa957a1d9c9f52957a4d4ec284f22c3a40b65d2e4fa245270761c29cfb2a7fcc238501e42f9cc4905cb26b2540fbb1b3535d96b4247c156962e2c99882eb7852ea9bbe833a7ec923a4c4222cb1e7ad7611ca18bb04ce83227b48aeee4a46b511e26b4fee4d3711da658e8765c967536e21539be51be62cca04b011dc61db4632473daabef56b9feca1b59aad76e0a0978aae93369d3b30b4f9346c2f4eb651309135f3f81ecb4daab9f49d060e70e9eacf66a3d83fdba49aeef2612463e014bf551d0d820d7ba835c4f57f5f448bd72ada756344c8b543d455227ab8a56ae87f5b0b2723d46af5965ae37b5d67f1fb010b654ac63fbccd01f7326ca1989d9a8e914900eb4328dad2db020661ebbbcd86d8c10451cd126ec10f4cf62adc6b095c8baa66d1a880ac35a2a55cbb88234ed75dcf9d4c49b31f49d804d9a6098b57f11b9c05ea714c7faa2f5e5820db67c2c68dedddd2c4eef0e79b323078f06227e88c5ce82e22fd6a8bf01038b776704f442c6f0d65dc886167881267644ace44e9505fbd916cf1029596630a6b19cf559bce9d5816be06352cc77efb60d76f52c2cf9622bcddd8a93b1ec7d594eefadc71cfe64af34d62c2e3e0b7cbc459b63c7ca499fafdccf7990bef20fcbd7555a7c7fca1b7fda551ebb05ac9c845bacbc599e9d5e96dfdb98c471afcf7e2f878da8afd969ff3e46e6f08d727db137fe76f4cd4e17c0bd6224166c04475ffbf47decdeaf9ec5cffd54060bcb59700a1c6c8617f053ace3e7b08e16a73be44dce8e5b9c056efcf55d9ce22f057f1a76b1f25ee94b7b257b6f18b77535465f5969d2caca0a063ff89bb939daeb6a8cae725de49595ee9595cb23c7ca8ef662f6d1e8dce89b44b5e9be2f83b4e96ffc8d85c5882130fccdb0e0afe2eae2954459302683b48761d81e4ec6f0e82c46cf2407637a741b3fcb5e6d0bc38efd3e8763b7cfe2dcb540ec4cb18ece067ef6ec4d7a059a3b76ee1a819dbeef37ba6f39cbfd7ee4ec32adfcb1f8cd8ecadf0e7993496741ca46f82a77e696fb614027b3780ef793e1c92c9e43c24c98371917da96717bc86c04e580116490f161d78d77c89b6c81ce06e58011a2c818e3ca6158aeb063b1d980e7a296ed89547bd697627b5f296cbe414e4e30c0076827d04377ae9c6495ac5c50de7ac5c527182ccb37b972b9bc4d2ebb9f7cd2ca4a485369381a4e863da08984992c0071c7a19d40ef0906fb5d299bd3a94e60bf2b655b96c7f658266dc288e89c714d32201be5620eaccd5986545c614987fd3211a31245489893c70ff324cc09b62d18186b59218a83cdee8d4070c1d29d3758447b317b5ffb466df69a691986000eedc55f6099d8022b7e5081d8cfb67a9a88ac40a169d37d0b06918d721dc11eb2fbc91b7741d92a690f94b596fd2718eccab96c95b4c7936dabcb37f9eb54d98c0c7bedbd3410de85f1ec7228b076076503f6b32d569ea81709f3e2f13472a7d2ae603fcf9bd130b60583c01e7fadac96822ef1f0988499cf72f6519b5ee4ec9e8479f1ecb4aa3218ac3c628ac1d247f999d336c16033f94d764474868748c99686c6c0460da74f5f60e97ba29adc1973c852a46922f66dab27c7a84348860c7c5d3887ee83af182d360719a21e59e23a146059a66521468bd5e1d6449aedb06ba286f60b479b948883edfc411da93da6675703bbbcf0b4d1c6387aa1ec92c84ea0c3ee019dfcccc926b1f63544dab6da84cf02838d21061bc3b664c47b2fe35eec397ccbaedde9c7b4dd6953862396331be3e9b75fbbd31eebda24edc5be4dd226569be87f61b621cbb23bf1bbf8c64b0e57c62d620a56c7b22c12149165851e6f91b4a973ca53349cb7e00f13f1887232159b555450316ea7b22d546c71f16731fc8d9a058b564a6e2c6a75aa0ec9bddd4e111556d7ea94744b3a23ddeace1bd40c32a188971406f6eb54115f514f7b135f393ab263ffb25f43dabb70f0d5d68a367d5d876c224f7c882648bceda1adea8a5c46a04bb44bda7bcdb014b3ab412db54a6c4bc24cdca9aa91fe3544d5a622436657a3ef8289985d0c515d423ac3bc882f1c6c79da8b5689bd86341057910602fbd79974080980127b8827fdca69533d418ebf8ce06496b31c2512c0b6600ff1f1230933710e0c85768ef6ba223cb2c7ffcbb27ef60ff2643cda741f6bb692b564e91efb762f8f1ced411e8cfe625d6cdce5b4f7dba962603b559ea8161f7da264db9347fa95cbc2c02bad17b8c2ece24696fb5d432e227cb3b63e51119111568e27212439dede1ab86a49d89fec27508b463bd91e598a9f2db01cbe8cd0aca524840a41116f97e05891a3e589219a1c4336398682e4f88a6543b66b6d8b36c17257aa855d2938fb13a10bcd57ececf6f723f7e33b4239e727c310bad05fa9982f216daaa936512cc57cfcd515e9541266e28992a5f8888a73a29ca0f9428e6e163419c6d87ecce622b0826e981aecf0e528f5f0b6043d972cdf1f0d7ba506b440202410b28509993ce315afab5e354a3951d0edc128ec67db0230720566b0884936628f9825fe9630278cb6ea31b4645836125822070d2a08143b78288173030704543a45b4d75a42024bb476b43aab6a007b5a1a06933142b4093bfc8418073f1688dd22daa3c7248c87598985f848c1d27f1e06bdd8d980913f09d89ed93640f9eb213def450909fc30836e5da0343295dd5345102354c58cb3c5c02062e4f82260109585da117c8f97045de2638458c9320d13a5e839020e4b0eab58411ec8e40a46264ae260d925e54aae2412b99aa8221226cb2e84254c6705d88d514a5c046c4a698c11a208ae573f9093c9065bbeaacaf45b8b21a621aa4dfd9e19c532254b7406f6c352b14fe9491896923892657be4107a2944ae6412a99246323d7655c8d28191cff2c8ddafaa0c6318812584231bb7623f2edb9313d0c9c909f709dd2df493cf4bbac9738547ce16bc6bd21c07b3bd1339f4794fe625a5422778f6d6b1a1fcc0f6ecdbb39834ffb50c21734b7b2cedc58e8b69af677f73725c5f07f710f7e1b6ee161123c4c9fb42147185421e5cfd7004ee1f2636b1de1ed33f846ebc229f7c3b2182fb0986edcde47943f7e47ef31de876068405107be81e23b56f9393374eee4e78059bbdb7abddb79761d27cc4f20f3f0cd19905bac4f7f5234abad5601e7619360cfdbc5cde622721d01e90d76dcb50e6638e98679933f2b42f79d2c833bbe2cdfcd4b0c30d644c07f6abc293bc310689a888a29f8f416a68240cc53c6469cab437630ebc447bb742613ba2bd097526ec8f14f4314db1cc8f9365d96883234d7bb35261e3a41f6856a6dce753eb87ab1f4a238514601876869e54de0e3a498558f5044574f241b19f3a254e960fe10fd366e6384e5e4a09e2a608c3304dd3a8b88192dcb975830a036d28b87f9eb70f819d6821cd6adb45df44416ccc9ab669776a1fae3d4ea489449b6807d3e120c7717583b88999b91bad5336da67d3b45beda06ddbb66dc3441f496341f226c77f3e2828ddd540d9b0134d8b69d0b1fbb1e41d2cd98638eef5ce396a8f65db50ea688461c7306c8f5e03b1e4d0413cda14c234ed3be99a76ae4d2bd76edbc45d3b4a9bb66b1fb5a95ec3df07ef60c9f6a06fa818646ec1da132c45768bb353d0e9b31b9574699eec8da6898260f3cab96fdd49a4d16166794c6f1c57ab1589aea19c845a95e3369473524a29e226d4e0063908a53c27afc5cc890ebb093b1492d5b457ed20ed9f93903d09d9b73276da2463afd841d83f1ddcb0d31bec1bf66d0896cb8d2e8671da26ba28a2d4bac468846115e5580f9ab5aa693718867dee5c4d41952113323c42122579931c86e9c061075de88c8053a0f2f64fc66e0cc271af57d30ed2fed9302ca23090fd6ce7ee27b3ca3b62ab57a066e578bb93e33f7d14a8a1d440691b89f534d926f7b91085c4bd87e4af87e4fa164ede3414ab69180a53e5a8549847c2a49c3ef6c020b6d30c96b06737c25234d21efd624ea6df2a1785d8ca6d4dd33574c321e812ba40d60e67b2a6e15824aa244c86238b3eea2069d3258d8a0a4d4341d92fb2586ac8980da571856202ab5a65ecdd15f66b1b1b946ac327112537ed6e9bca8b2c657bfd0b95946cd34ebe55ad9e1c769a76725251297a93c2d1628ba781a04f79dd81fd9cc41de68a3dda6ddbb483ee8885de6c98cd56b76dc3300cd352f0cac9579eede7f3c19ffd66affd175916c79df6e84958841fc2f2e42737da761b8d8746b5a7600c6b655d0d0d4b42359c45567b74a781a0dfb473f706d9b2db40ba445fe149d3302a16f9b4735fb1ff384e07778cfb80da066f9f1b6f505ac5fea91c0ac79cf66854c5c036cd4d9ba06813ca6934ba1d04b209891ed3f5dd11c15d93241b1fdd06e5a6dc1ab8d2c9d4cb543b7d3c8451390f0d37e1e51e5d26699fc91a26d5c3cc3dd6fb966f3c244c870096e84fd0f344a651647a1e94c606bad0d8b2893d5a6ca96099784a794c93b8a804fbb669f8f3b0733c15cac8d3260c6adb86630bbb15779f2eb6220f165b98c6c2052692a2726e4bc132f144f24ee0dda8606e3b43cfc9a31d7d85e5e464746243dbca89e864dbb68de5ce1ced8865855ba92b9f95959595ed53b9ed2c17e6130c7644b0e0d9dee823ad6d9abe519dd347e83b08a594f64da6e7360dd5260a8fc0b2c9340c14e524ab690769ff68af7645644327a293502a63d841aa8cfd8393b1d799b11b37ae46ac721b761412ca6147c40a9eeda11c1bb598971f8d508e82c2692c30911a221a693bccd8e9b3dba806825ebb6dd31e3d56039bfdd228c00c68dc689db2d1b81bf31651dce349269e547e955b842cd17337a6bd9546baa1042bb6369412d85c02ab3d66ee6dd3f48de26e54d21ebd465f63ab3d1a5bdb8d41daa36d236120d46eb5833e587bad376dc24eb3149513ca556ecacd2e94a5d8c2df1219057fdc5168b0dbbf88dafecd648c5a4ba14ec66eb78d8cc7df082557131583d043a949aceb6c6489bec3d0c6546e1b49e38b951a86e5ed42d212edd1c3530e59a26dd3a23fc89b8d36b26d73a36db86d688631bc23b66acb59e306725a3ec982d7e7bdbe35179ba65bddcaa955a4499d46c503b6151f8798ed5d8f7836111f5bd045eaf43fb96a2c2b0dc59130dd24a7b15c318655ec1f1a3d3b709d05c3ae4396eb525ef83a7623feb05a7fc53b23f77fc8ed91c07ed1a603d57a19238e69f9cda8b20eee3a56fea9737edb2a900fca629fb3dee05aa43f72cecf4929c433569dbaea7826c724c3cf96ed23021b33fccd9c7dfba0ec7cbc893507d722f5e2a2bdba1a3562d884d005ce389b7e2a0abaf46b90f61a05889df9ab483eaf7d5ec375557548b71e594d12ae472a92baaa4774da344df3da49b889ed8a4e9adb3e3b226a1a3ca0040c6978c117d240842b84216f17e5f13ed38e88ea841388610b4324a0a6c1034abee07d900a24d0e4ec31476e319a3ad486c2fe2c8ba76cd75659e59fb4b9b8d811f1f9c7e16fe5f43a590d527160eb4dad37b09587c4a3b590128d5cb15abf550ec3b8afd03b5ab92dded5294465eaa0dc6fe2e469939b47dabcbb1af5d8edbc1d1886496215b36b1a2561e0091ed13932c591fc4156b4896dc81dcf90bbe3167ec8d246c2e4c072f43c9497cfc16189ff7d84a78e4e7f187621bae19124b92f5c455dcd255efe7cc07e5327778ee9ca8a33748e7ab0c196942c4b797659102075061cc9a253a25039b2482659bcdf18d7ca9a66b859da431941eb933cacd0c4243c42cf911e9594384b4a59fe90ecb1ced0273fb164c99d2445a04bb3301858fa098390ef92304144e74b1aa2b3c433a04bdfc34c60658725c6019bc37bd0ecc91b5a798bf74357e234102934d8eb9f4ca56c2e97d7e53bdc6f469577107de621db24f9ec95cb2e8e1648b478e8415037311eba322747dda06e503741504080489d8e289942dd489a1857da602e90ab236d12800fef4b246d0ac0bb87472215e358b908cbe0af3c74655adee2db75e3920b5739da1fbe451b647233a232dd01593b5c7643b85c07d2e58d76908b6bd78536fa0b96edc563b700eda077db943eb068dd2796618e74bdbef3bc9f922e4c4aa2e2ef06e50ec437ca65577ecbeab3c95d09d1435722c64f4ea9c5a48a491cc6219c440c0ce7b34bee9f3ae7f6892bd6c172fa1d2fdb59fe61c170246fb31f4f18d86a972090965d7e9320a9d1a981b45b4dcbf09cf8b39a74a1ddbeb812d5deb524fb4dbbd25ea90da13da6493ebceb48d7251643cf6ebf49892bb6b23a2316ae17e12f719dbb972909237a1fd6cc8a2087e1cfcbf2a55322844558899317d23f13eb20912e1f4893e403c7ddc8d9a1dd2e18a1bb60c19f9733179884532c1184bfd1ef7dd781b8bcdf8e973ca70f19bddf4ca6d9df75cf48f3dcc94537c6b31b599ebb499c3cf4799148220616d52c6be8274f2284a1bc087f7ee11d2ff9ffc07c4c225d1ffee2ce6cfadcc89f4b94bca9f287db434a2a7d38ed6cec30851b4c21fbf0ee140057d907dc3bcdea245d457b2ff8c37ac09f0580bc91bbac47230ccb76bce466b12c0fa7ac78e242ddff1a63284b33de6f5692d07bc679901856cd40a15898953364e816214bf214b252de029e66dccf5e163ab072c771dc675e5e7236ca99cda1b7b85624b35b2f2b5de58ecec9ea8e6133e5dccde1a5fbc5ec6126e0152caec3fd76405666512387b844ca6e499684b5d340f43f40b0f2990ac8cb4b1c68d0e8209d2201122113cfceb2ac33cc65d9656a5e8993ba8e2971308c25591347a6a41099ca2e53efa694299ccefaad8a816d754bb60d61225986039411d8f8ebe2ab3bccef6e1147b4d73a524a29e524dd60d1cd0a9259a10c4b81f298de585c962cb394494c261d764380409717f46d3b8bdc1eb36ddf5e68e4ed3225f187fd1f1603435982f1c2da1ba42c744999e83844a29f609918175de6e4a1efe592b2cbf8cc095f52864948e0b71c077ecbb3b760192219c6712f03cbc4f8bdccc9f1674e5be49aa74dd97366b32cbbc6d3ad58c4d21a2a1eb0a4ec4e9c5c52869bc011e32d6fa2df0403e0690959ea33c100786a7106c0d3c95bb08c4c0e59ea2b214bfd1878e6245930c6631c9e5af4e9e41fc42e4bf22757499b32edd4ce1e329b2f39fbec6ca4dc600a37c8f8c2d3bdf0146a4918ecd4ef6ed5310cfc8d7e684fbec44816163048f78bc92b97241f6d4e2d2e49e21b273fcd9c4217f547f7eb51b3ca53bea55c68658a8c3737a664a9a58a8a8a0b6eca80e5adb9942cf7b70e82e6c819ecac5115516528140875810244be8ba83aa781e8d3fcb52acb3256df26628e4e4815a9c9319233838f8c021240d2c41efaf352d51eca3d79b5a216ad56d4a9f61aa781e88b6e4760e53b7f32d5ac54e74bd9d9b91b8fb4d72d1196b2b3836460332c77248c94acf63009474866aaae385285934c08cbfcb888a8e074828970ff716205139c4232b5852e91ecf2cafbc9d864f96f66322b1a1f2b9a1fab199a2c63b284795e260e70c5154d72d6247f3ecf24660206c75d3e6299822e43248e14d25eff6b25a0a6b8a249ab3a93dd2ad2a6cc884e24808c02f6d09f01077247168b522a7928a50d832091b214d2a6fee7422498e00ddb96e510559b324aa29425934c9a09a461621252900a9a9c259701adb7a8746c94d6a91e654acd0800000000a313002028140c07c4c20189402229c34e1f14000c9ca8507a529aa6390e630a21620c811100000000009000a1007c96c5dfb148c906f1961bc1168047dd9e4cbcb2bf5f2b9d553076d4e9f1561df58ef9036719044133d6b8041463b65ced049b1b0fffc6447997ada45b52ba45cf8ab8fb87d3e8b9bcab21e858b6aa81caa49250cf106bbb6a070a17e550f8de965531e2c2bce2490623bea39bc3c3e313f2b5aca9ba5783359c83973eddac38ace9e452716318c32996abde9ce66b64b3251a9c4da84b86965047f384a1ca57cb3715f0692f0ea3daee35189b05ad44688fa951b3ce3608751ee3b2d66be2f7c05382539b28c84bda84f1401924a70e70c349ccbe73c14a9de974e1e4c749da715ed604cd70fa45cf16e8114f5ab01cabfb06de6503f3115d93a3c78462f3f2d3a381123ae073dfcc11639f5582c758317e2dbf60f3f94d23cb9f6b06e5214b426431a68267a988ece6f60345b9948d043f3b46a5eade1ff5da0066b2e6e22c2dc495b6c8f25198a702e7c1863372b334ec273163ec805996e696b1636efe1498fd81e0c44c53f3a60978684858f2662f34903428f2be6812bba1f5aac537aee7cd850c1836f354a49e8e5e92c620b51ae86ffd0932538078a5b3c31246a6c9aacc2eba27c3fc42b8d6c646e9b90b20a1258890ffbc8b66d9aa04277d04112cf17f9130de3e8dc5cf83fc5ec53ea5494017a2dd0961e806a231275ba82acb3cdcd11291bbb0a7737c960ffe1aeb88b0759d2bb5a603697c2f464eba4286205628c5353c6871950b7104adb5afc88f795dcccb02a4fcef83481f9f8dd5f3168801369bbdee93e2bd5c95f76f5aba3cb7046c1308a50580c40d66f6bc1059dd6058ef655cca85d0721e1590f7cdba3db996d79f12d7d673298d3ae31bc2d321033b461308563a45b2084bbc9c0b303f6344cd31ce3eb6fba78d007bc71555b906bd34733bd913c3f3a250038c66d9b619c4e728bc53303142895ea80598409c1ce00b82977e4187b09f424f27ec3f609a28544104bb99305e38cfd97a6f38196ca655921bded03b837ed06e0a58df5e15caf9e9dcf55181a1a7498e60e11959693eead7ac131f1bc1d60cceaa32053849c1183990eaa31c7d3d59ee2c7f3fc300148b153652cd91cd351c99313002c773bf52d2ac3cba2a93a8f3bf336bcc5f6767426854da4982f37e6b3407f0d3890e2edd328494fbedb3bc994eba4f2a268192fbed5867596107d5a04636b654046905a1faefeee6b1f14e3d034952fe469720dc1fbc0eddffc947e78d97487aed26d9663cadb90616b448ff2b9ca1912fa4b7b54b79a52ba11038e80e2db3e371c2da9dbd7f48b574275669d07d10c48be465552c309e40292958f62cc4da770fe15ba0d62d841c4d653b665c1f42cf54546ca4a36769c23b8f1e81745221725386a4a4745403cdd0e3f575fcac94793d5530d15ac5954fe2e67edc2bf6a42fdf7e29adb2ee7af1beda5a42ce88c7703d36475d553bd7f1f7d3ecc1d040111d25757e1b97b48a701b3ac1fb90f0f7dbe31ef209e847750e339a87ff4d8cba853b1965fae3774392c052274eeeafcb0b39e36173a7888cd70f285ae1f53729cd8a6e45bfaf7f3022da5a7058087a8acdf695c2adb00aa95011190791b6210dfda64818586a458faf9b8ba09430ff0cb6d349353f2a96cc1d728faf526ca594eadf6ed26917481258a89bf2d52efc268d22967cb1b608e70e188418628bf3cbd37551f6392a8d5d7b375a298d7734f0b57e07d4118af5f8d2e88b1851152fae9e45452cfe57062ce4d49232e66771fff71665476135bd6221d6a4467d62b9bfff6fd0496676b83d97cbf9117f68dd5fb165a60047c176657793434bbc8a9c14500c59bf8a53f0b0eb244f3d6c84a9a62a229b4e1cae6675079e261102a2d0778436c8cd0a840068d2550ad5838bd0d203aa4de8293407918191143b33c12f6bcd17e0b0c30e6ce76ff2c2e2999972a51e5c7a007916c513513f5fdbf6d8a825d3ac206554e7bc568a13acb56020c282ca482e346066368521854cceee9db6c2c7d4109942d2ea5c44f11ba5f5a69591709c2d75d676952fe154f90e1e88df00c8432e4a8a7777c18d8b6d0cf736269dc14d18e549a73386fb94dbe8f1d2798c44dd61ac9fc5435cd74344d9dfac682aedb5e56e7b197de925a1db19758eebcea43d561bd60bd5dda78c0f95e8b6259ae97fc6e77afe50398531a35cd909d186df5a2c4509bc602b0aafe524b49a5755ca86a2f5394a70b5a9cf80951df46d5087ef54058d13a58b68482e8e3e894e049a8fc430593231488f074ac20bc0bbfc009895ad9321fa213c6764fbf0072f8e25c6e14c54ec923f6b73bd5d584249510d48251131ca68674450aee46ceee96a886864b6c8cbf08d20757a0d8b6da30d630bcfa65460268fd39cee0f7185027386a5326347105412d6e9e5bbd3337710a842e58a324abbc6f1e16fab8793795f8d4175bdffe8b167f0c236c1122a5f5951442365225cde266153a4c2db89aad15a7fedb2f7495fb0f6a8e11c15f1095578dde361a86bd891aa36423c85cd3a59d891bab8b32d3bb06d727f4b843a0c7a1fc921e7390b86fb2aa73a90f6407292328cf2d8e4226a98c729ea5a8c692b2c20cfd9dfd0aae0c852d6ac45e781dc6e1a7e4652082006135454aa859182b0d97cc154a9e2561323e3b7420264fd0e836010d36e31889e7cd6562f78c2915b475144b278e479ab2aa2416f0bf37421a89af47c6321c406f3168b38adc85b3eabc57b1faeb1af4b0a63fafb0a8259bf03bbc01eb55e28f4a4d0cba95d25ca99e2fb0be1966cf7b9da8837c5d4601a66819a151d6b986050f4311bb1ecb467c0fa22527624f610dc2ec2799d80756252e35144e41123ac76612793ee2ab55237a028e72fc1ba0a7b7b914fec9064ab0a3eae62ca3c69d3e13ac0679aa408f988c0e9794cf9245791c047056a0b8f51daaa1702228d41b7ff8e8004842f7df43afe0f68d60a4b6f210b7809c5a3b02a53bd46455c62e8abd90a6cf1ddac3cd743436206d5242498661284f672abc4527e3ced2deaa5dc3ad7ab609c7708574978218b42fc630a916a9f8de5c90afb66c4716b52ebd7cd6dadbe1d925ce033a39628648017d101eb264d629bd86dc8fa223ceab3f5024bd75f1e0cb07f091c265042af8e6cf43c2faf5a966074e566a91bcebef8a64026dcd64081b1a91a0787f44a31066275436e3f6c3273f72198c310fedb7409b1ff1061a8d97f2875763d615892ff7f76ca2471b8534a8e6d8650c45f75b13e4a231399151c6c6d0652d0320f3a2e37432e3b9971f0c87cd4b016ebea38e5dcb2f0ac11eb70052206fa476d40bd76931411b8695813abc144eaf81adde151ce911838a620c82f39fa5ae48a0f3212c64d63200f980a58f23357675067e2d8533f87092e571fabdbdf70014cd3e82a0be6cf8f5781ab9c0c39c414637e60e1871bd0ed1e908f4724c8915781c23e3708a69c05383002bca542bb06c7ab376e891d1314fe893770e145760606aadbcfd3ba8d73c21a508877ee9577e49bc81a31d76c4ae7100fe1413eb072843a055eece39b97fe344f6ef30b1928fe309a0d9a8e87ac8ea7cd47dc6699a32097aee42e11c7d0b7471b5cde18e9d169951c0fde6a5d1004eee89abc383839d4855dd4e78c120a38b2987e0767004d900e477a0143e0c713dd37b1630c03f974e65d9acf1978f329004bd26e8cdf864b6b2d3409a503e2fd3ad51ddc967e310397e95b6c6f61df6543b80b606ecdda2e0713b68fed4ec4bd37bde15db302ab393a20fff8ec2686a49fc7895cd23f0b1473e34107769d85678ad67346fa391653cb4bd6f29445bdc10fbfec8779876e6daf32c3f2ce33e344f8721aa35c43a887d574d0436753edcc09d1b4a49252877f9e0ee35121ef79726c42fbabe7fb6d59b6dc9ea793af7ad93a13ad3256d41f16e60e788e857c38c22da0fc2c3d0b2c5ed562f01291ece083e32c8ebb6c37c343f460c1716b5da30bc84c5a34975a73a9bc4e70b0961ed64b50189bddecfa4d78da9495e030c04239146c60c90504e48136588a78aa584074e3f82273bfad141f62c967411973ccaa82e3cc7d56282fd97b599c33da87f4b1b027e8047702d25c3da83c59f09a2191e8ae918fe1c24ee0f85c0f7fca76118526211689877c543ea4d15b61d11a3c39fb3e301926e4044cf88fbf95d72c60d9ee5590a529cd9ed4913422a442f5101906bc34b329b321aca2bc7c33a0d959c928a66ae122a39d49ade833142dfcb74ea919ddea4b5dfdf4cead6f01e390fbd75e0eec247d73a232c0706536a785c36268837d1e4018e5b99428b9924a0557aa10b3d882b10016687fa92b2fca2e03a37105eb70801fd071a572f20e3f212d0046750c17457f925db52a69c823060a094752f4f89d58d4aa096b555cc96cbdbc26d24e0e69da4af1170c9130ae5236f87000e480934280e54fdfa0dca826f7433dee44f45e2bc7003fa7fc1b8af3866c7b8d86ffc00a2c628e684225837da9511a8e0c30f4e756c0a2e2949228ed50e9b392ec2b68082c75520aa85ba7bf9b3797461614e02b05138741930683fb1ea123d141d18347de0a2782d057a5568d6ead1f03764deb0725d14084d52350bdac3a4f1f42ba53a644cf823000ffa2b10f3288c1a7301f6a1c6aeceaacc8c28cee0bbd808bd46c98e55ee7a08272865bec7066ce8d02b46883aa739acfd79ab7d294397ba128f40f23c5b16a324915c2ff1792489a15adc1c16dd5a683e06bda623b441eaabe9bb2b169e34320c545da2d7526a2860734843e18a9bfc2eab8eaa240ed003433506077b2ad035a882491933565e28c88bb5271d8a3df0ca2312cf356a4419bc51d54302b73bd44f758c63ad6e72fa74a407a4ee01a27c423b925e5fed6f7a698d946ab03b431bd2b9e71d69c935fe3fbef18e36dd48a6088e088df11d44d7b5dba6f053c0076778f97779bac0e0764594fa588dfb8eb8348e33fc133f1f407f03b1e03c1110a082daca98b0294207044a310003061027f54b743ed206fb74ef676f81ea89e5157e3aeb91d97299065aca79ad0451fd1bc9fbe8d0e38fdb7f2ff7570d2bdfe1d73ea25ff3d3c86ec2e7b5758f0238465c3deadf875b4ef804a77bdd6b6a97d2d1bdf6bdd2217827255aa49dafc3ba699e35c3203da0adae60449206e5a0a268f07045a0c25366dee53742d39000fa0ca333dd4d6e89817e898e5544b9e0c975010c162ae12e175439b7a792bd2411bbf91c21022e05c8b297c97e74133e029ba5103953b73e25e88847c3726c6459ada7d368c6e84d9e89ceb51247d7c7baa554b2e290bcefd2efe1e9e812022d36f8ec2337a0bbe8d9ab2fc68138001d72be6e1dad8e1211c01a6ae837cd4b2a2bb6a3b3cc9feb8f3efa4c3caeab9af40cae2f0a34c74a1d2a5358cee5af7495861b597c9610e6d4db0f90e171365b9695a3a6468ca35f25e2e2e9d85aa40be2b4bbb17fc343f70e7bd3710d2622c20253d4f62f4cfcbd19dac668e9712de2d1f9d76ceb34da1aa8d1b7a484e4a8ce36330b12d80c721bac3e080d98a24e9b910c37e126048e0080e3c27cae4a74a9b73c60f1213e1036ce22b98965d5c53f01aaa1a0eddcba5e72791b062108c124dbf8592be579aba28a812414a91079e05350222b12a733402fcf031167ceca650553a7c1004323ea7918bc1a4e688bcb7744fce3288325bc022754caa333890d41964e21e62f1fd58ed8d4b14f675b1ffc5fbc0b49226f232405d83192ff077a7b52c1d63e67adbc361981d3f94efa5113b874be18f18f039fe1c52d1101640a3064872548d3585130cbaac3d45aa20e0a23a17369872525164a210e3d42d995de1a700879e1518a33fcccb0f359769fbd33fb1cfb73668257eac77830b145a613813d7f48efb57d38b542e344e036e4992b91aff05894fbec5d5536d8e3d31b8c2ba4eedd607e268457eb4d36731a172217ad0dc68f2a752343e677bbaa764bdefa37228ede60e0a7e8191d6ac22e7958f8e7c6b38c2c40c66452f7e23b7a435c1d2227c065b23e6ecc72a1d0da3f1ff3b070ba66b38651942cd3888d2fc66b87d9e67d8836c33ab1f23b19971bf5511112403f7c268fa29611bffca9181d50de5d053635468e319eb35025a88ec6310d6a2b85b32dc71285a7786167ec56337e1157ab8c66e6bea0ffdb2ba861d77a54394e76457d2e985009b15f62d2e6f048736f1b6bf38cda8b976bbf2dc1879b7f7d4bcc1965563a4ba9893f75b752509c220d88d74b59fc163d43a4b0bed8039d5c68ad1ff2fd0643d904f0da9539e08a2a962cfa8a6c6b4c57ca7af0daa250ae185b961186d895d68ff24a88dcd58e43acc447b133d46aab4fef8d1bf7ec316dfe399bd973b4ff20bf8b0ef1ec527ba637cbf0e493b738e9c4852c4f3368039ae6134a36b446acc045d5640f7b3fc564f51e9924f6db6ad7194678b44a40dd96d75dd78157ac60920f9d00939b8034303ce3cd6b4f2e5ded3bdcc9306199b4f668d3fea6e81ae4c9152e2746bf510d7be988864c98188f5b5ba0a1b49448824d6ead0aa1ad2b5cc9d26e55a3dd7417b470c76a3777f84ebafd5434080b2f4ed122240e866c99f4989b6eb071556ab635d3c4112252dda297a846d96c16024f1c453e421974016ccf4943e6c3202495b922aee248d5b7d8e2f09d94ce644bc6e7f8f49e147848187566408413add2c25f8a21b1323507782c84ae2714abad3968df5a46f9b1478a2ce465f74b86f935af1ae79e4908fab978c4a4eed3862a2278ca7d9636312d5acae3a0fc8440297431701f24d13c7abea7b8ba77416d0495231460fec4e0e3d1a6c6f28c1fa4a06841778907e38758183591237ae1f74c8d6fb65bfb76408ef8fa1c91013159350edfbfbabc8d56ef6cf3d342d0df15e129cb80f2ce33abaf89d04619dcbb6f6c70cd03be245fb1192cf2debe0c2daacf12fdf81d2868c566279091e91b4d535972c58dfedb929fd788efde2504fb0fa010f69b574982bd60155f4eafc3da33bbda4477dfa8f7e5009615f88a0a507fd468b1ed19065c2a6e678ee41da5c2072b51f53eba08f83c178dafead228e9ae27c959516743b516c024e0bf8d3c38e9132f9f4ccc0373fdbfa63ccc8124ec415e41f7408dbb3f2e86732320454abd0e9ee1042de4ea12111c910705248301e30b4580e2dd887d6d4c8ceaaf7d0f1802bff732dbdb6b090afc14c3b6f6befdc212bb607eca19d7e642c3b3c18bd35494ab6ff13d46292c8ec80deaa3b92e1372865227417316efcbb4d5c105a0f85c8090ace68956482cbe09ee99129812800faf07f6f81642257047ca28edab82a78985ea430bbc50999b6f61c76d60c515bee626a466299782df62dc9b8e78347a06103be9a25fbe40c3a2e1c8755ad66d119660b616dc35f042f3a005ca0c5d09b0aacfb45e00b614d64d1fa09f046fc17081a7147e611d43ae0e4a0652051d7063d6cd0a484687cf5f0aa215d085638d0562c1be57858786045e892a79f7488fbc486b75aa53212e3cc0ac34bb0ace25519351fd5f63afd04797624a2781f9ed0368a5d655568a584ecfa80a96a12b6b73d4161adea6f98ea0fc420deb83931c4aef7c788ce6c0753b762a44614eaa242d9ed7f3135726d16be4b752587ba40669a02aabd8868ea989291078d1a9cc4308d65ab46204b8926091159406031c6af1ac69acbf6e68ba29ebce5faa38d76432eca28d3acac32f45ea73afd665b5090265f5480528254dbfec54b459ec3acd9d9836e0eebb65e30295c9707e390e339220a1acff1f2ba985a08ab941a37d10bd20e2e6aac4a7a361405aeb529c77ec9297f916115ed34a9b991517ac07ed9ddf551075cfe1eecb41d83a5bdb9a14ebfa3f70ac31f6eae856f72e296e0233347e0abcb82c3ccb2a355b3cc28915b5770a15a7fdef7a60543a6bc2248609cffe683f445c94f6a701bdb6669c2eb5238a9d8c641769ea23f72b40ef074b41b87e1b578ec510eae46ae670470537119ec1c8e76a9d987e946fe2cf7bd86e9ac5910a2915bac2930fa9294a7dd33ea55eb394e5721f808de81c48c52746f7e9be81b1946f6851a444300aec448ab61f36571fa5082d25f3a82e896cbfb80adbf3c8359f8c7e15c6c39c280e89a5a941636e4c85ce448e4bfa4708afea5a29349d145fac7b96f8e8cec9e7d4160b1b8df62bef92c3f54b5499ec0291f159015ae62ad5256e544ceee92e9afb493d8c679ec2e45fe21519b0d97e3a446ca6ab890a9f4c28f083be54559581fc641464eb4b53c1878f7784b2c2cfc2ab24d30f0dc69cf672690c52d825f479a7e29593b08fba6e4a57b336b0e12dfcf38158c0ccd916a66140240255ffce73ed00a09b3f8182650b70ea9281ba317173a03613a9f1c472dab18c4d04a93dda26ffa15e45e0cf957049b3c673ce4684e00ba5223f2221f2e866f38fcfd914a1c992e4769227ef0d4a99335ee802f3f64e1dab80af5da24d5414024fa16f49019f7d90ce52b010965c06ac4f355db9a51f550911d54b369b87fe31b781309838ec127b0697607d4e122498187cee94796db9d316844cfa9c69e3ba73fb0b99023747820b8f41c4070c0b3c914a39cbcde64d2de17932df4c0e98e7518761ed9d2a99e4fffd20d10a2e5a431e694c082eb6626ad660acb4e699f38bc90ebcd58378ed56c86e7e6ed2824ebd80a48583c985a91c1e5a5bbf745503bdfc1448817a3fb2af2b910f359ba3d5cead0e29ab473d6f279a96a4e33dbe98b67fca07e5967c7ce63f0a543fe8456eba4ff9549ada19d8f0ddd71d624849594b09a6d90b0a051626fae7cd5ae1d6f25c4ab80ebd3d0c2d31caaac077e0e4c3cf398b1c90a2e3e07549bac88196a47169ed2677ae3578a1416b8fb57eb325ffec2d3aff88eb160837403f215ca8b9a906086b99bfa5896286d493785d26d90c456567fb74c988f9f142212280d3a08d90bdbba3c6488c924801a84ec12f858699b902db047861bb956baa374e0b7546253259e94e5abac73cca20be240a76b3d20102f59ed280a999ed35eed5e3c0a99a13a39eac1201100be3f1b181bcd2974f52563b40042b58da26ad2f25cb709a871fdb9e81f0eb05864f119fe32af7739028d072c12011471b928a804a06ed7defa52900d1d0f54f7f51551d14b5a8f7bb05f94215c4c14af91ac2e06648d40df7cf96cfc2f1fe5c915eb1a85bcf7ab38620b11ffa0a4cddfe818aae8e9ea690944818452dc2756a6c8f78eb932293661d83bf80f5b43ea301eb409434fb64f6228f227f7d61fd93ab678bc25078cbc3d2f7626c0fcdaa7c1646647fd9b26786ee2ecc9721ecb3d4396d9befe1aac168c46935da3d0e18561c94d717d0152680ab3155accdf760dcf58c5ed0801fae2ecd205473e8d7c184848b4b2c2a0cc87f87432d2861d40648e30783b413c1c7b1b7b5a12ee40af3877cb5602d3068816bea30e5da3277ad0e543e12be9abbd40d60e0af7aed80b6f6f8fa62d9854c4c658ee62a06127d6891685e174fc13524c976dd1751ed76ee2bf055782b7a9d76d279726ce9912a646579f793f74885a4d8b6291b69a36eee4038084899e0942199dd1b397a6a6c56c768a346c7322e3a113b10f0a0cbef894c370eaf0d935e39d49851513fe9339f24cc56b9e63eccd6cd6d5c3305b921937f3a77d0d13ff9ae70b36fde59208d824b28395c6be385ac77643a2032cedc0c022c2406aa18c71d228bc8b2b5657629142e5da16e824fc3d6e9154b169850d87919b3478ab8a2313c60d1141f334679b89aacaa209229d27934a66b9720ec199318434ad64d71617850f8705e66fb839fb38033a0b92736713857a9d2dc273ef9c27e2216bc279daba5a86abdbfc86a11d8605c86e820b2f1101612122478917a9bcbae82da39bd734fbf2974aa62bab13aa3f85746e94c032d30255579b48474d0bde420c1effd2fd2ceb194f74a0b13402d1430101d0d990818786099bb61def01bf271d7b8b18d16900cb2d848cf6928e58bb162e30febede059e764ca40937a417ff858e04e86b41d894156faf1a3a4821b1844920d57ca726adb02aa9e1065c2133688808742ca0708a239431a797c9d4f90d4addfe48e78c0ca3bb980d2b1bb4aefa6c8a0cacf8b9858aee7057cefcb9e2c87f2575408a9f757c3f6242a2ab8af2ec9ccb6417ab8bc2b12986acf78a1d0dc6595366662da3c262fd5ecf1e3cc08dc55b891d7410c10f6d8cba6b5369790c260bf44aff7cf7fe02f5ba86f63f3636f7de9bf0f7a83503db59298c3bc1762501dc9c400000523b8ab199ada9c0386c98cee93161062be5017d4b8d938a6fed8f3b60d96188e07342b2ce7ad35ce7a94a546f7e6f6dfc82652ff02feeb44ead19fb621d65a083168c395f193fc61ee6e154350c697279e796a672b3b0216a407f634e0562ec67fdf33b0de3a7c57ed87bafcc7659fae67865e58f3651bb7f33d5699098734e60c3ebe9d23bfae6fd0a12d9e03e4da8e5438a9d3fcbdcb00c2a1ccd93438178d199ebd6f69f79d69c1512f04fff3a9894ddced48aa71f3d124d4446bf81ed5bdd05f882928595d6952f7c650e6665f9755409095bb58231ce01db0dc5ac47fd5c5e146931c8498962e3620a3364d5d83f76de1dc2e6eabb1f6801d5ce66b7348d7f46382009b59d373364b6caaa36ed82b9bb1eee94b98ad557a48064ef5917c9a53cab3ef86ab89fe6e0bc3ddf7188321f94b6bde407d4732f38b0d0f9efe5a86f49cde10c5bb39b50c69945eadeb31f329daa01db1de55ed43131f7eb43bc17eb93b3bd055426c4598a7dbe0989e4f552cfaff496469773b28e3db87b692afbac92da1255b200bdfd729f1710064e2a300fe330720896ac94671383113659acb40bbe98d2aef1cb2fe6ea1c3724acbda490b572d378df8da22cab0f681c38da54ce851feb86f1be92c8ddcb9e44160a23ee19c5f2ed229fba38746a5c62258431a83373c10c0058518700fc54c66457c3403774132a6932d04c49f07b52f44117aaa0f252324bb84550453e872c31b5885198dd1525b9caf970e4dc6df33995bd7808867d5b41aa994cf8cc36b3bcfa8b40725dab1b39548ea4ce20bde11efed25e1b542f1978163967b86d556c7e3d4281508462aaa0a871623b6f6c78080240590ab7cbabf968deedabc008244e32b685e04177f4c990256e49287265621ee48516913fbd7746f23cced855750d21a01ef17bc5c51ac1bcfe5924ee82e3fd8fabe02983e7b206ea881c2f4379f32d54adc0f3c644c86defe99635a29fcacfb38443bd3004bc591dcb0eb2c7374e2d853ddf560035dc2dca26ba2f9a57186d89e2046fd9ed97bd31687dd2d5913017d1a11bc7822ee913c756d900f1b4983399a18cdce0e2d3a45672be173ed5c87d2ebb80757594bc81c939846bc4c97a1aa0d838834441022e29a813d364203dce73f051c3fe60a134f2010063275ca7bae11254506a5b60a14bca323a361b9a9b04de9e4fb2cb593ee8f380a20f7809f556e3d7ec583b1e1bbbc8c6046d04a3fb56681756791be48254d906fbc7586bfd17bf8e9a5cc02e8b387f8e8be8c114cfcae9ad9fa62abb43c9e35e45dd57ee464f4bcb00175bd8031d1b650b77f3b96cc420dd240e3df45f13d867d50d4c512c25b60997a36d572b61b21caf92bcf83a3651dd48bf17b6ae5b392801084033f6171172b23f40f73240244410d7511e0e0190066f912d55373e7e2f9276b0d6748aa8e252a6f926815fcb2c70e13b05eacbdc1ce2c7654abfa61cd23b9cd1fbb630f35b5df201545c93e0d0e4b63efd42b0b75bdb674adecb6c5cbea02f5624f7198fa9d336082f087db9cc18705c07af2315259ceb7871943a26b79433f8322a42fc8ea7aa3c58de5c301338f80507101feb962a93c815aa2f5a884c55bf9b0ac57a1cac9ec47a416f4e7e2be7db6c8bcffc157729a8e3c108282d09f45a86c6772c377c86a032d21bf20ed6092e2dad4a4d25866de06735b15bac11f15c5b963f15274a31568b3b481bac4a2cd33944edb3057756fe38a7ba4305827e61a0f8e63a6f1a4ef8674b9b17e1870ff44c8ee3f7d79864d9caf05598304066c837e470a1e58f1672a6e1ee630865ca69f65ecdbdd90cba8842e304792076b64f08ec3120aec58929d8d9a9bd2b613a815192f255a5c38f05b22487d2e60553d89958046360dd248da1ec2ef37dae0bcc2d7c9266181bd9cc89b458a1153bc1d9e3aac9d79779a148ddf398de9a5f1a7c6dcd0b5b3562df1c8769592302ab6c5c22a5fd13daa962c668f7b152465a8c7bfe9173e4004653827d9e6e7b389d51dc76b512de370d466479acbb9dce413e45dbdd02c870c4fc2441a2ed36ab6ac3fc92b87b302e566c66e4acc3fbad4fa911f79eeb720b51497e62101072d5925e76ff1db166a4c8b1dc65d28147896892e120d856a302ed4045474d62e1cccbea3b096f283bd0e4e21d9b39844ae0283d265735245431c8b116662caa6328201bd426f2c94d4e1eb692c9c3412a59f67eb7352fdd208f57cb778215146f0743205227a088526cf8254e3a2c764ef2bdb8859a377283371af711d912cae23989765e124ebc281a794cde9e85e0beb014a47b008d049ae75d32dc013c13648d4388122bdf5345fccc29d552037f31016a8a2b730a2d39d54f1558a4854727c056541c61e402a3d2de64b5512d6472a11f24323869126333445963b1305e78bb527b7285ff65d931eb1344c2931fd0b6914991bb67ca3bff8387c76b5838ca474fd8e4cd2f89281dedb49338e9c0521f268c33bbadfc319909dadda858b4c5b411066f834a6cd655fb62a054a59f5bde5d4fbd06b49128e26deca9994bd44ed4bc69ec7c96599c5d32ec1842b44c23469aca5c528c22522067e1e6d1ca0a9e6f877d7cb605120cdafae3974562a5d7eacdbb655fda99c0087ec3d555be4949376c2f1f31392c747e69dbf69e94bfbf8132bad1521b925029456a02e81644a6d0054f581de2e7af28ec1c178261dc4552ded3f289d70b5c7e9719785c3718b4e5db431726b2281688556c7d76db0b297a9ee0bd7c1c50e3ef3c867fcef27ae0b722ed841a433c8012d367e1a4924e52d5a3bd4593843e16a918082a031262a0743c64c40a3fbebb816b883fe0c729fa890c19ef93cf21bec966669a0fcb10af6664c79f2e5059ac24f825310347f9759f04ed53c7cf31ae3850d6b081cf9253b83c4a5a91274054b7f1f34f41e730e49f364d558c5f36e9b9f916348e12d32876c8821d2b78beefe73d1a99f6b1e1219691e8764955334450797b562baf232305feac59cc8445a77719eec63861f41e037fa8b4f0412136bbcafd1e30437b54de052e183a49782928bf3f334bf20dd7c15faeb232ba0496a11d0ba9f0367f13ab84470d383b41a8012ab2b5737211f430a4c54c39e6566fe792a7864f0b9b3e7b01661db9224148e9565c0cc0d63eb0beaa288e277179fabaefc7db5d45858f5205d70b1b6c74091d8bf52d03c89a7591e95be8478b44cd94680a8b50ce1bdda03c06caeecf5382bb828c7577bbee34a253173b84e20e2abe303474e5198d02a42a55a4adbd8f6e7bb1cc90623e6d0777ccb579246c675d6a23e98239f386aac849714ee8552dcf20c35a8f5e5f1a0f58eb53adf99909afa40ef2d002cb93822da06e5173bb3362ef2a83d0fcf0f1cf1bf86e0869aca06825d3c19d89f439e30b7e42fc70171b4c20b5e5ef7b42568f377115fa5eb0d2ccc96a65b6fb7f2d937c75d5d264f602eb8b59e3e936717bdf50c618fa3fdb3068cf4c3c4dc1e28c2f41215d9843fad8d95cfc7c7a3f906da34f34146e4506f173a177a6b696296ea0d5e737ecda863cf1181475381e7ac4957264726a1b29ac5438de0ef37b76f55de72d0707958496eef512d65ef1a6c21e3e9635603b515561dfcc4d6a08eac0a5c770426ba80e9262dd489fa8d42d3f82fb4226c578976e5fde8f443f3ee6ea27f56dc4e8bd02fd029f3ac4e23fb05c4442c197c70013f5a81487e300b901323284b1db1a708e2226062e7a1015e85f7b6ea1da0f11d53aea50efa97edb6980cf1c74a3735996140816096a36f711d15b727c48e3516802f1116d91a763da8743bd7e06df434bafccf74e946c354d7610129e1aaf132e25d6180468af8b1dfd12530a1b18c20344a387adc5484a84ecbf0366b6b0363c249e02ac43a7222f960f4da2e584bfd61cb4b43388ddee8ff2028fb3500bf9b2587db97f3ae431a4faff24ed5ad64977c9ed0e1b2936a1919b684fee87ef274a728394e5bb7782fbf4cd51f44ba08248bffe613bab97a20cc1b7bd06493c7dff82aaa0b7da06718249d9f54131435cc92c50f1460ad1c8ae3e77b8a5d655c7e913e7ddcc99c3f88da59defebc559382e6e061a66fb6b727ae63f5db45f3b02a7eba5feebd172bcbb5646eaea3df90520bcbba5a2f9275ae5df31a21ab6c1ed6a5af5567cfd7e36e3d8572301c082df06a29658392fda1ff81f31c7af41f99ecc27c268b7410532b2592ebb32583fa177c98628a803e52104d5cc4939838805308f926ec80b4ef1c88b242bcd44d58f5d2669599845ea0183c18afabbd72e0d7fbb7d1bc6af827a0d19f925fe2b1112bd5b5bcc088c1117dd0be5170c11f9bfc2142e63ba2a4a90611dec5200455572ff9bc14cc6a8eea96d4b1382c22c0455cda6ac6fe00e5f9c7914221f77e216657717ffd44c3c5aae359cb476e5cc0844ec843beae5d9c94b424aafcc553406cd1b2ff686e14c6e4cb9f63761dbaef310b608ad4d4e2d930cf630aeaef688d7b7acd3264a46e5b78abcda7db0565eefe3c581d813dc9d3fa542402e71aae4a5b0539cbcaaaf41e88948290b210fe092823a057b4efcec94974124c0bb4f183c02b0bed9ba496efe9c830f17cc22b7716641acf6ca1217076ea30a9de96d9b2f700bf60256f538ede19d0acb4f1f93ec1303b6a3e2378638a5fa1c08763abb9f339a917ef09a7e792aa2a0a1aabda003d0d10a44e31d4304b7ccf1b2ec6883e1aaa52071825b19dae721c214b4244bc9a31cc83377ad3c221ba6beef5bffbcc48cc6b3961ac0e4938c7f0f0035f920885331c3614f9268c86d73f25a9a1a77b31f94b5913ef182fd4b8ccebe725ed915bab4e7622232a4631daeb1a86d1993a283b607cfa7a266b138c7a192d472c20e9ad5ec2b9b1c28a62c809c4c28cafe1fdbc22c549ca758706cb8bc854b0828c9badbfcb1b8faa2ec4b67d1c5651784131f546f1bca78540df19c06573af0d679ffec1e56a28c7ee8fa306b1398b474a173707b14bddf36d30cf1a98c213802059535483dbdaa4ea3dbbf47a3906cc74eaf22f15134e263533ec06e2663cbde32c33b2e61e913fac77a0c1b95a172c75b70d739d2ed7584676b4627b6c149239806de6262845473c894dd1cb28ff60f62e9b6965ea19456e4b8258acd7a797c65ff1a840cd00663ec211db449d5ea2338d645bf9a3cbc99340aea0a4cef92096fd1e0fb0ee06a92d29e9943276d189cfa9bdae8ce9c23f2c2bb0826f69d8c587b3a31ebbd7004877ae33a8d738996a24b5132f9a9d86ee3e614190adccc8b8849b6c178ef7d55507c9af10c4f22a17ca4f43b8e474de3f3255a41b8c1fd148a1303156d48356e10e89970cf79fc820d2c8163908db5c4b553048b34145dc98693cfdaab7e8e96f74f959af1098dc474c5ddd213ca942322cf67c9eb47ee70777647e984dabe02af59079ec1cf63c95ad395185db1235647191760dc98f1833203ee02002243d01613845262acc07a5a3831124d70e656ac98ce4d0c8de05bb1054c90238383465ccca9223120e7a24c7f853feb6d1b97a386e38b7038bb8531ab4da00b0a11ec17665ccdb33ef8985fb48072c588ccb40baa4e6b6880f8d8949b054ace57b0661fae7e8c8eb0fd9fcf6695dcfdafed98f7a677ea2dd1136cdb154a3110bfd0f43dd702e37800edc1d0c1ca98f97c64f947c2caa5ccc1c3281e7f94216a4545576239564b09bc043de0906c16e4311406c94a83eb52ee132a38890af4bd708fccb8e20d7720060a1b601884d8ce12427280d8df871fd5028e826f3e96d4bbc759f2cfac2bd40cee26e9f23684ed5cfea6bb31534eb19b24e52cff797b008eff009cc001ac873ba7856a5a4a8fdd2b29cb4a127e92621d13b18a0595443a6b5295a4c09d04927435a9924d4124e876910f1d7af10305f8931db901ac0702c137f26ff3eb4fd35ddb8920bdf3e8e2f734ffd56e0ff9a146cbce843522b0e179a5e58ff50ac44f84f90ab5da0f120e514761bb2973a21a1e2575335dd7955222eb1002a15fb1439287cc1b5b752f23a01ab8bd4e3fd8bc4e419b8a27b540d05e3ff879decabae69645c5340f5adc8adc355bb3c57cf9defe36a39ec73dff026d20b8ea5648ce1922b451e437fd2132585d8a9b452799776b8b439a246458b61c49dbec47829079960eb733d7765538672406a42387c1f576c290e75e8e48a18980f9512509043d6bcb65e95f173b97ff0a52ba39a4840b5be6c7d44f39e7c5d3679248d90e49a855183430c572af996c1f863fe6082820094b70acdc6383070025f7b54585ea2c4780efdac172705b94692cac119d9c140605abcd9f8cab282d6059bad7425b805caede2e11ad80fc9024d08545ceaf97bbd1fb26a13c2b68a0dcfd655b47463a8d546d2af265ae5f9ebf7054b7aecf92b56eb7d3b394bab4a508b8c98020af021505183704ed63996d96c548028060befcd4ebcdbb7dd4eaa175791a0e3e75fdc8447107bdb360c03a90c06a27472761fcce7d6e6c9d6507dff02e23f3d3e6ed94fc29a1db2aaf1c3f056019ba76742c8a4221c64a0274b424bf27c250f7055f3cdcab53431074af8e0d384a1c91c59fc96ce876af8e58e27874884b4649228632e2aef82d83abd0f8687817844a41b5ede7d5353c1d3e85e7bbde821744fdcf8e363184d335ee675947688ecaa44daf7c93b9ae0574990f271d7657db284be6cfd8fdea64642d74c896cc0ffee812ebec78f030054af6ee998a0821da3561e4328c43ecac2ada067128a6666e222b5064ceb95fd1e030a4f16105054c72df3f008e3ae549ebfb0138feaa4924521dc3b833efbee3bf6266eb38ac0687d41ef2893dcce5594145131fc6a57ce8a1062b8b859c111172a284b1001241d2beeb88e241f9d8b0d2d6add359823622d6ae63247a2b38aecfbda1519496e792880ef681d5393ca01dd7019b428d5e2ee8609e672aee2e6e7ae8c165d64925d672d0bd0db31b523c1fd804c6368cc74923d2032e5b9c3455e0cdcb543a61753c53c5f46781ed06ea042a8d92f55761356e70c78e6bf5055b3c0fd7858c1582cbcbfa8ff8483bb34ce926cb4e6329bbe47f671cb4a06e9f442646ee6e605451069540af4d40cf4a93eb6e874b9cd552cce50cb0770a6b9b289312038c8f20867a12bc422af9732ec46a27a644a5eac90b169dbb1e578dfaead8c873369d9c2161b98f62f9e9fcf762ddfb60c8e99c083d47c1974699595c045698a58d36fa3bc2cea8dffc54bf7755b8c382faeea1d8c2e1978b2498483882db46c95f0c6355350034f07fc7a15adc38f3371395b3f9b548e19f2989cc815269b2fed059152765c8e0632544ef3b3373dafdb74ac4864a1c9ef9280f994d8bcf729f8a7bd03bb735dcd39a5c610df1a21784bf45d24f3506f674a9ed181f56a14554a3ddd62db767cf16efc7878677f28fd2bfa25a5931e2a1d6a214c18ca1bc07495157c8c50a0caac2e9465dabfc7ad5f91897a5699ba15d5c6ee2d3a467a1f5bcd934752b138bf334c525a55872e84be6d515263580af2238e1e4ee1dd329daa489e543ecf37f1478f36895d1c2d319c0e75aa349f4266e0bfa4e829f68824a640008448b848629f7a6d622669307722c8953267c46f1f40bdacb36a7a05bd19fd3c9628e8c73801e218fb25c48974c7994395717620f6bda364a717e838167a92b115eb8910504e41c99cb904e10dd8e6c2eca47620bb3cc3341bb2ab257ccff747990e3f634f5a01ff44884100f8c9b7e9d83079dcca1e8734d93210a82d51c781c8a6355628bc1c0d23dfe58da84aee81d080e04c329916c5e357cc25fca1f5bbcfaed3d482fcb18ec9e60b4c55f9211359b698249020e7a1dfd064cbf599eadc8e8894265041c161de08c258bd068d269437560d09771973ae08a0ba52618e64aa9cda0000490ae64d9f4a2fe734456e5cf93ae7e79237846ff7de82eed21430409c66642c3a2343ebd50993206407a93ca888a1f8a8b517c82b6aefae0e5f967c1e0ff1083cbde6888d6010689a09bf890916654518702d54115f5fbb8ceebcd0cdcc13ed22b00e1324c696eeff99d565237c7372834be0fa8622c65263d44861a9c69d9b39dd3dbe02c368d263373cc4002013a7cdc727d12c410eb397cf9ca1a0e9417148bc07ef08d5037f0a8a15522806304e00742dd60a0b7bb0e4a52d4f4c7cf0fd4c3952a2872e8367a69a0dd6d5c8d6eafb45720aef8d35072d43f99659c29c022b624cf5505cf13d7a172b85701952d383ecd6cbbfb0918944a97b64b030987ceb464030a7c39ae3abf243401b21f3b1d0299fede3f147041e2a65dfd7feebb200d6f8c281a14aab2d3294935b88fd6bc08e409a6f0ea8e2d2434f0f2577640041daee10bb0ed6525c0800aa30c4a68638abc15fc623cc5684497fd7f3564028f0a0412d163dc4166a29103155ac93d186e0b4665437268d2dcdc08f9949f2db8642b1cdde0a725b281081e7fd81c0d6b9f8fc71273ec3f781a41238c4da3e179e8040b61226cfed697315de359beffe109ba660b99823710508f8605815d4d9c5da609d88c55c081693f6f80486b6bb40947db9f558231dd49e8b0fa6fd83640a591da834ae7d577c152b3e59932f893b532786eb7145352cd96004bbe12611ff444ab06a60a6a3aed4af1ab23a6e505f8f11c4aeb2236e806d63684d455c481ed2d0db144de27bf2a2d135129c097ebe6140e46c6c6b6c8582a646c9a34d6b72d02cd0f9b6033f5beb27921ba7e8b487600ae52cabdac6e71025cf0c4915a0868864b9aff78e04d77a127ee1601411205cd9ab9d3a2008fd6e7e53a1b9d01b1b1fb722faf81dd7a2d23cebc3ddf6e38e6d1404b8983df71ce86373027d8c2da38ceb2f6d90659d95ece52a22ee67acef97c066f05a9728785f2b1d630290271519d937d552718d5509f0224043a3453f0c7e0dfa89d477d30d39ab78edfa672e179e784be9f5b98c0a1ddc6d5a7ec50503066de71fa2afe0e0a46c2224717da8b9abc204bd2fdf5a5ab7a2a9d22421bb1cc2c58537043c8098947c7c606dc0704bc2d7ccff9464e990e804ff93f951152e0976ad8a52019dabceccc13d654a63b822f491b38e4c43aedb11994bfabe0ca4f8300588c4cdd10628050723bd1994d5b37ec895244181d8840d7fce093550d3bb34107acefca3c007a1754d51c8c44e0698a70df26890adbbb001c113f28febd224c14f2cc71b77e62ac0bd7a0f718360582cb0410647459de5bd31cdf1a2331f0f4916d5cffc9940e95433e679d72ceecc3baad773e407260f507064883fa87be8a87bd3e38e2d8578a3112ff7b5a714c4d7744b036fff2cfe0412bb3104d83109d0060de79d8f4c01c1a3aa8e4f03fffc68f268dc2ff328c0b9d2f7566c0ef7e18e91c1187dff46bde1765720ab0d69167b4088afe9003dffee50e2a2ec77d2bc8038e556e20d94d5ac76969e14f349ee6400b0e1b1c447dee35751b7c1b148a2397e6f93034ae779d71bfda68669af5b1eea2411fb091685ebeb9edb53e0f44f37ba301582088b4a351457301b09c5959066dfce284948df0f7211bd80c031e97df58afb2df7a5f00ef64a4cc0405e651addff67683a479d1745d1342b3e9085493b541065929fecc9c599ad0d43a77cda53a7dbcde5fb335c6b0210a6f326e4776d462db8fea6f5bc6361e588402f2d8cd22baefa0aee1c50418ca16757545d894f76e7fd47a3e57a1ab1058cdb094e3a782ba1b4faf55301dc9380274f956b000c2b2e8c9f4237ae05e05dd049a69034eb91d7d11605f23645548b39407dc864f6c1a1792aa216f0d3e21fd4c456bb5b546378bc27a748a9942274582cb43e7075cd40cb3f44f3ab2f55c19fba37649c9c3d4556a49f95a562770feeeb562162f17cbb9ca31152ec7f2ea932ccfdc4133ff7773cc254c88760fc1ab71bb2bb19e46a3b7ec7a70d31b104566a0ec4070e825dc2412104a419270b68654e527cdd389062e0b1bc588a477664da36eb91da02c57be10fd25b6bdd63d06c5d2591110c394dc4f9dfed6591906b36e33bb62e03109580c5de977d8bb6b322e5c6e218b76a43d8e439ad21e1ad714d6e319bd9b302b918ea6dc35068de8b5a1aa61935e41d450ca4df3e2f464a0274dd3fff2da64efcc57bba10b58253d4be320e98b936a1cc5e7c5cda6a39e2217223a2d38aae411d06acaf189deae425c8352b397ac9fb03cd8268dd6b3e99b0b32b903474434d33bb1e597b7addb3525bdaf25dbdb12af9d172a2b85ce7f8a8f6fd61ec37e727c131fb5560da9fd811a404410401b9a27800a1cc9df29772c9e26d4b46ab3277f0154f6f496189b966207f270846603692d98159a231f2a4a72ad380671172ad67fcb13e4d9746305fa392f33fc42efada4c4c82bfd7cf30c16d15cf9cf58be74df116e38711c2682ecbb8304d71546c945532619ed213bf911bf578543645cf5a47081c7bbc51a3474f25d030479b9629d778c905ef0bac6266672dfaf732652a88e68ba99a70b48e907d289723eb9365972bcc99e17410d3a1ccb7d82d64a6dcc7b32869927386ef529110608d33536d8dbd4ceafccdc48fb38e8dae7f24dba80ac67cfd6b2a570b433904425d361cba3934a4c867d212a4e3dd985526be7a9aa9696bbc4309559a9af8510949dc68cd2d14c9d89a0999a48214a268e6dc4d9743fd16628f972d2010f204eee6b6638d40355c9ff52378ce6f40b7deb9f211dd4c7cbb21908c093ebcabbbb024d005e8c937d55c9ce723b60b3801fd3ebc854487dd171405199485bb36c4f23695eee9272130e84a4cdcd8cd26edbf5cf79e549f9b8a5633a3440085ed1fff70ce654bf6b53a704781ac032e6452aec20b42641010afe63ee4a923e9e65ec5e1bd13b632fff3eb80acca6ec95225b3055f264c6f0076f28bf803ae1c1225c470851be07a419b06837b340b6c218669bc839733f9166cf68d6f34096751b9b57cdfebd9c2ae82019959335698f44b02f4dd4bc2ba6b545622ff92892fbdc530ef75c90744271a857e7a3645aae85a776a8674269a594144552946f48be49b2ea22d870b2d0460d73960549a7f07391d53844f4e7542e18a0532a35dd4f093f088e489b7e2629662d5db3f5ee1627c5caa6f6d2602d4c462d7223753278462348068a084a7b39721885f4d3c3cf20c6422b582b00f7db1fed2eae1a9eda42a8e25ff0baa2304c6b8bf304845dbb5482d40fcea8ac184dcfb1f8b2723c35e19587a1fe142f9d542b1f0be35cdf2898b00e65ccebab4dd3df4c7b2a192c65c4c42157f297d182cc1823cf4bb0501268407c76db9a2473919d96447440132bd70a1044544a1d2f6e4d411c1feabe8604735099ad0b2bbd6e5739c1c72bbb8bb7bbc1796aeac589ea982bb3edf93db398d99198006f5600afa23eb3d56bff05aaec4391a5cce53920c8228158ea20b3d54a664331b074d6a6cdc2f91e5045defd17592b6c0d8aab8135b3c561b8aa49532ec0cbf1d1a232cd3005e027abdbce69beefb04c40f6266075dd6f5c9047072d563e32431bf45745819e5b72eacbd0e6a517369700a3b996e3268bc07228316157ed7a35d31e6ff5a199ed02f9ee04585cc5f4bd4a9f63490f81d6eac929ed7598bf69839bb6fb9582847ba985d4b01b58f906230b56299e04db20198173b7cd8dc3b8ffe65564686464d6da5d5724244b8c7e6eb4a17dc1e63b2d9b273298e5e3e8823b73a8b8274479030bb5b12686e17630034f98a1d09aa80b074d4ab5147bb820777eeb6683857d00d32fe62870b2077ca2cfb2b22ac69531bb4660212d7cd5ac48412483dae0b84ce1b1c14a1693f7b34c16d1dcfd5d1df0a2a2b844321f201cbc2da06526fef237312249830a4563ff563bb1763c634d042cc241f360ab72a95b0c2ee50cba64926b1c3f645407c28b65111725e50fbca58616931107809e42fcec30ae50a01f971c63d9dfd645eae541ba8c4802c8c391677a03201adc8c48dbb2f8f980a553e31426f4441b6946247d75a2cb38936612d2f2f23acf51f0606144aabec3dc0d3a8013ea15758d28fac9879e919e359cd890f6fedf36f8c176cc5b2d03d9cd4b61f138a4d51991c0907501a05728506b7f55a9feafc3b5c37cf9bfe6654a1500d11a7cb2bdefcc1840693de0fbe20240464ca04f39b6e1f8e838ccf9bc296ab158f81ba40187abea32167dd4321b28cba77560e15b409e3cca88748106a93cbc588118e7eed4b3d8e74613a870c58ee23354ea0062a1119a31f805d2519d7a6bc7023822d135dd233ace0f92014a468ae17e1e22a07c040638097ec41fbdc93c341227c638ca9e2cbbf5fca99a3f24057545927578f445d406413654b3487b0b45d2734cc8fc6bd3e44ce1f2037dbede4c30a47734dd09dc274711bea9617ad8b534e4c78d3b8300071f2667c8a5fa05142b455246ca881c7bb1685256ea10a385a86691c0e3e7b0a3de39642d4eeb192bdb6d32bce3212011b34850f21b0465c023a5f02c126455f4d9538a685bdb203947da12822bb348d1382b0fbf133bc1db6d79f5799909dcca194bd491ef49b5f7c6d31ad5e15765fa7ad2d85468186f949e4efe44811dd0d4e9a4cdbc5f5c2215ee85f97a907c795ba38e76d35cc14ace61fe522a7a613225d39e077a67b52a2bf50f0e5a39033657d49ac472d5bf1c91320f5ca962f075bc85531048569434b81ad4b68599a4e7d3f264bf527022d49bb0141686c998dce095fd48b720af4638c6802c2a6e132dc35c388de829be7f8c92090e5e8afa95112a42ba0f7fc60befeb5e9c4f64706abb214d2262ed7ea66c2f371a7e7f9dafd485aa9b060511c17a609e96d5236665e94ad296fcb24f3ef612ca05ccb5fd1a10c5243df92ddee0a0ac1610a0c3d42f3380290cc9dddf41b45eee633b071ecdcf8a1ebb2ccb1ed8ee4fdd73f44434cfd1415e1fe23d2b9d0fd0d871c119908b4ab9bcffae936df4e4fa08fcc7ce818a9acc1a21e5273ee43c3499c30febfb61bc2970f3efb14977f5ab650dbc306611a38c3cce286e47e4bcd5a9fdc14d9e6876dd8424edada94ad32ead787dc50b409f81638ff1a94b987644dd99030468a2128848c88a55b309415e539f7345f120505e14c958c478417298a927c28e274342791f7d7985eec16b693dcb59c58a93edad365ba8199ad70445fa68ed0915630a97df87cc10abf09f445de3552e525d00a39ca40262831ae3eba65bc54ef5dbad86caa2f6d666a5e1a501b8b92aa4e2ddd05127889bfb85ca8a5636d2778157d5c3e119a70cceb073162eff14757f89dfdf2bc020bf12e377989663f283b91ad0dfd4c56bffda93ef4d0ed0d41608bc6097068b78c04987680f7f7fb82f8ff0011b82e0f1326e0142082815dee6aac8500cd6d4e176a8b34744139f44c433ed06e19957340c3698b2bde4ee19c731f6b841dc8412ae63d2ae0f0acce5de1f2aedcc431d649adfa9b2a7adedf8e49ed4dadb11b74757d7a828c8adc1c860ee78292de95d8a6879d7608e1244d69a7059357178f5fd9138b83784bfa0b7ae7403994eec26bca92009e2ed1f7b1cd63c53a52a915300607ac6b8510f827411e460ef9a26349dc1ed30fb967e9d0b04c4e1d9b4b0f390b2212171890d3b07562ec0c54f7bb29f08735f772c432daabe4427aee9cc52f961294dd6b275ed9a732ae41e007e0990bd559197acbf2c0ef8bdd44e9c3e2d3b37481f8f31011d96845e5549bcc1a864fafc48e420477849f275553ad06d851a4a477eb9fdc52ad2c9a02a5160c5012fdb6051e54a8a0061eb1d8d627f8ea047284abccc0ccd8a7b02fe24b07e414bbeba567b83a2a178f263a66f4a0a20af24e735dd37580fb5bd94bb9c981382c4fd585baef5dd430e46abbe2d2d43dca84bc79521ff3acf1db861c5725d21ff719992e19068b0953d926f0d2e70fdde20487a8171e63cdd70b49dfade634382e08b1eb157ed926300db8971ee99701e2f6b0762cf7b894db4a33ec761189a08ce521c2bce24a81f68ff76c246025c8078460bae396e8e8896cfb23ca45e1695a6745a63f0522be3c4d40613fe6ac526428a0657512cb05e90b1ec8505818da5e9faa1df29fc6e0dd0f9ee747e4b0be6e7dc61c23e010507fcfcff8cde48e8d5432958a12f4bf1f8a0acd2e80916e3d4a11462ff51c5030e953f56975a8a360119264e5843b6ed4745eb8303c49bf88554fa60e4837a616264ca37ec899f64c1b72988022677796ad6b91a9567d1eaf088181f4a226e7671220d135d0662fa4a6e4d4776a46266c4a6368b01d761f905a8ace6242068f2c5aa4bd6f738ee290488e169ddf0a7a2a52e7300b4ae826d79254575c8acb0f005eac19bc148c5fb672c03c41608c4ba1c3f493e19aa3ca12c5f9cd002490fdd444574135ffa67c3a22e000d9cac815f526b8c1b10bf3a951418fee2a4af3400f89e244cf652f3c90ed6546d4309868a5a790135f3aca19727d128fbe92e5c0c3e6ead9a4ab8c7a7666eed00a8ed3f241f5528aaf1a09649b682be5cf09b774fd3994f43996c4b41e74f2d8e5d936f63836e101af389424fabc6d68c57b32e80211c3b2b43587c261887961b5d8576390ccbe3116a59867a17bdf4e732b040083e609f4843959d007fe9d93ab1ac5bca85861bd37d62700532644af83dfc6db5575bfdb7fc04f7a2645f821004c07b73210aee68c956da4e6a1a9a9f956cd1c5bd27f9326f9bc9c904cc7cfc341807d8a2bb3dee09adc5db3014bc6bc6859a6f0fe100194aa642e119c4104dc3b9cd01ab39ca387aa3cd8e78f43840bbd8ce1b67879e0e53aa8530c2513c91212b61485ed549bc4f9d74528cc7b73a6bfc0f8c1fd6b0e04585d05aae3ebe6b562e88e99254ae762a75871eb5bcdb7dc0ed1fd19d0365ad189338922a970235751e4f8373b7dbeb74ee0bdddca5a193f8d5e951e0035f2ad16b6cb4bdfa56b5b641c9dae9571349ac74eaec792f595965ead2eea9b7287173e2164697006b4de4ba7c9e02b5701956b432d6095fe50ac617282efbe2ebe310739ca5c6b1bf37516884a4ad6deb5935a82a71e2cea150c30651b44bee9698ac56cbe0c2025c1775e1718496cb08d94a611b4bae4cfc825a654fbd6d76b7dc14dc24faaa5f8dc05847f4ab677e26d45baad19adb5e57f3c475c62912a719be2cfde9c23914cf2469f3b85ef1060728b37cecbd2d81c247bbadc6ab948ece3effe82f3c8435453f811cad28333332dc0425373d9e215dc153a892a9397c8addbbf3cb4457a729c7fd5958c9f0f14afd79821c30b59cf87900de91e4f81bf8caf7779525a6ad47de0ba176e099158269adbdc7bbc62c389cc8bf33028427c6b3d8038aa9829cb9ce150b53d72c1b1f65e95ab622af5fee94d39a68bf670ee0e29357a7e6c1f3d44ab0c6cdbd30e39dc5ca8825918ffe0a9a4f61d539de80bb080fafb9cf598749648a95b8aa474f8ba83cad1aa5f15ca9e2ed20f4e627676560076ec39d873d5343b6459571c29b8745819ed1fa13ab4c3c6fc2a914bf3afe1ebc9677c0bd82aa475a7f3c421d7c2748ac92f98d528d03ba8d3a36798cd9102d7c7ba04fa32b9ce09ce7c93ef7139dd94fa4f9d01fee79e98242b17b4a4de9b23a6e8851ca1ee35a5720b760fd95a2b470deb7235d7919273acb4364cf2773e5865b75a93827b1b2fcf9fac0866dbf06e5d807cdffcc9be0d5376a0128f643c7dd654fa70d1436db0177b55441d8a769b69562639312f46f4010ccc2bbe8cef9ea45a0513345d64ce9783081d00bcc73ccf1ef42e7ba7e814f8f48073dcbcd8fae2c0cd865d051b5a00599f3db89c4c48e214ae414b9f2968cc2a0233a79a1569656b5c86718dc610330e0ce050382a9304a90aacb4192b2cc63d03a7a1ef8c823858196b5e756653fe9c154d3fe76f3a82c144379dbd5db6a69c99af704b8120b0f1f6a3ab8806539304a1ed3a1af75ebf33b7a338f4966ce7a9628f08c634b2d8235b7fc36fbecda51aeed6b01bb155ccd7339e749f8b1e38c359d71c9853fbde0559dd58b03d5a96693da779c080e411d8ff566616f96cc4f7b09b2ff153be5decd8abca5e5874b6f026dbaff73296d7600c52ffbec725d71f1535c8470cac7b5ba16b35e3380b745af8c06b0bd19f93b9959f9225fa6eb4b5cd3f573bd968111101d8e775fe48a77fcd80dbc23770af54fdbe6bb2eac3150358f15c4ebb415f40814ac3174249e61e729525d545b1e1ea1304076d56c8320907aea97244e6d7bd66e04d6187416f6986758f7bd732c32f594b1ea813f5669455bace3b9e2e9b9b0aeac06499801fb5b1c15ca12ba063df7013fcb14c9adf23e28c9146958cc62d3f1e7f564a86f0c832dc0ae334780b9a30f7487e0a1975c4aece0a2b75b726c3d395fe839d69134211ba434017f187a6b9db66a261d6b74adb4d8118eb5cf374093700f2f2e37999960b40f9c6662014fdc80cf754693d63409514c9bf09162a3835a894aca38063bbf2880f0a865f44e467834f76a3db24cf7d43a063639496735ba9c2a1733ceb714df56064f4dbc35fa31b7c8a531dded932f3d6cbc859077f792b27e6fdaef9484f21b91d85b7fe4ed6827ffd31ccc41ecfcfb2115144461609f2630e4cb8598a7f3f8ed45c7d0676daadf682326475398e6bb0064415067d5e52e6da372a0147b963c7ee5a51c66300f1dc645a5b0dfa9c84399af552e5258eb546bf235e2c61900d7b63ed60585ab1a82c2cadae172576d44c650663cc3cad0a3c34ea7e7c28a0a4431e9df5c248064175a57adae9d7798b7991d9de1781dcce6995191173062583c506b620b907caa0cd07d9a6b39678cc78dfc42549d7b75a44fc0110ed3af78c6951c1f47083b73a93ba0ae31af7916b4461243745bef48d4096a75b600b46305363cbc606c38241ecb1ebb6898c86eeb2af7d5a6c63dd5ae1928d20af51eeca3a911156dfbd374c0d0bb1c74d34f7dd83b00dc9188e520f28ca7004767504ba957509277d6b13eaedf42c404a014677369c7a2ba9f5a84fcdb6f65492aead304de317175f493bdb85655aeede1ec0b81433e4250748febf22b8631c6058302c808769a478e415bec2bd8007dd38ef6b71cdb4a4486f0f1256b4690a908627e530519c130d8a2d86625ea27b9dca735e6542ba7c25306c5a1bd81f8b052dbba3d5795a995c081a2be4848416bebd841dd2f8d9db0faa86e5fdb53dcb814425bdf208331556903061031ff89266898703d91338d6796b0f4df46e571d7815857b85ad989e396c2dabfa42d6adbe68239c8f4cc5492a8d85dbb8f1d38445fc5ea33adc0f56284b07762ed30bb6c4c3651032c1253061c4f87eb28863a1c458c91e0b63324a284dd2ac34cca9c94acbcc22e64512d0b2a6669862ae828a99c40f0ee994d82dd52d5d4c528530087c2a6252ed585f4cb24a50ace81f94a87bb97fb6c3dfd6a56a0f494f1a4c22ee995ea43ce2005d518c92e6b841c7036e7e65b1bc20ccfe9b0aa72de00efda6ed090fa18823ab8c20f3104dd94a3ace7e6dba80628dbf0f388429bc381d621d3ce8e811d6c6e37c48f09accf4c467c06f1aec884b9df57440b744bdc0e5e2cb0fd601abe365d68b68163a1286a1e0986c04bb9ccb7c1dbad4c7379a601ef9f26d3b9b57dec88e84baf58683e1e1a460459b297195c4557634d8b7b91a7a96290734a11d5926de16f7d8c67cee214e92ac75482b04397a49fa3ba9611613da83365a0f355915f49c8453d69d08ebbd96283f6922a63acb01382fae9573dc1075485b742dd18e60c49e710d7b1ddead02d53fb9c853703f450f05568251d1ae863c32426c60c5c9db3325166b511c45586c40d35baee7e63b06e15210127861b904bab8e11e329a8300198bad4433c5425c7992b21d9058802922bb46d689648c37fb063805df0b8825d17e68573b3203e9a47bd51aa12da8855117c83da32ac681c3299fe9107425e2b15a7d9b5acaa16bf914744f300027b117178e8c414c3aba46a8107e84f771263a41f6b6c28cbd3ba21881d8838454d0d8f4df021f6fc196c65caa0c9c101713b043882feb7bfe87881700cd79a96e1f74ab2c1365ba888908aff6bfd5d9eb80a41d14470462a5cd74d6d1731ec63a7142d5b5dff9f8a0d239c5686f284bd0f480202e759b85be9d9271c97c10494fc839441a9b00f959208b083b5f4159b858b69d71bd855c7367d29cc6300c3b2c3c474f118cbfc60484bf254c9c96dd2c0b1ac207d92ff0eb6d07bf1326cac440934eba57e524b40166e8c4c2448986e9de60b66238a6eb63c885cb9898c64065acb1fdb7733ebbe1abc888326ba0b6a6a4d30a883decdfe4c53848493453f3237d29640acbc26805fa5f76a5e38bd4583be09667eff5853f0bc9fe6458562e1f0df2193dad99f6cd2d3f4544b547061715b0c6901c447c47e3c922696834f9937d938a2f4850c40cff8c077f4d82c3c115e82fcb5c2ebc407f9c018a6ab8019d8ae37ffc183c33ae69d974711cf83e13353c3925d3d99ede7351100f0e0d18c2bebe45355156e35807073c348892e6463fd0fd31f614bf46822d9a825ea76ab7a929ba4fcb746e6f3303b9cc499acfe44409bdd326c28a222a3f773bba6f269c775f5d0c52f893f7e50b4e46c5553cc32faebaff420ba3f1bcaa1f4dab8843cfaaefa291760f354890c588c80bda57123163a8c6be749495029eb1ed0a8a5581a1d1fad4c99d38c384884ee42b5ac5378bdefcef72fc93f0daef17611d557784239d275c362d832a13631accd383589482db96a17b64f8c2ce65dacb02e61121d7c2075242579344f656fcb6df9e1198c1672fefe662b6b83405534f66feb78f9ee02a4edc75dc0d92bfcf7b5ec344162d2d3faee886587e1ae171f1d4ebc6863f174d4be199a295648cdcafd3ec0d46f289d784375f7705694e048892d5d6f254d0e0873426218c4e854b9663a5db715f846b44cb4be8996645e3f702291cd37228533ebffc5b421004121c29e486ef843b41afe5bb8485648d032e72d265606791b18fcb5de959b0ffc9448d7df59bb5989b8ff0a37d5a8beafe1f760776b11b2cf324aa3013d4d44cf3ef85ed67bf8fa049501f2cc20baf482f97279ab97eba2376c55891de202b1fb228351af63b55571c0bd21120895f0980437aff958f0983211eeb37b1e86bd17e976d04155505a8677dfff4aa3e2c52f1bf81c9458f146c3399c5b6b2184d9d11dd5ebb28aed9e7a22ec03f9e4d0438df28643aba8d2ccf61a84f1a57108a1abfa4f0a5773136531570a30c546e093083907cc41fde06fd5a9a4ce662098094936ca264da20a37c5edba48561d1f01961ff400b392d92f1ed4cc61027c8d1c0efb4cef1d22b0cc116cb02d5288394c5a6c62809b12326ba845f60341980ae1cf1e01106a7c105aeb74ff6f50028c87085e3adae2bd3a2f45bff4bd268dc7fdf7e32f3335a4101783c02b13b1ce7d5e2babb1b93faf78926f00fe146049eae89b1079cec1177c326835790611d09cd3b295bf0f567e72dfa43dd80f1101cc36ae56b381ec13cb56758f4780621d83e306c61a31a5932628beba102d48091f2027b27e91d38ac41a909f2d62c50700509efbe5d463bd7f828661fd2055641dcd3a413056d798c689a3a8077395c4e9a06bd386c6d093404301c9d4aaec61028640d65cf5ddd502afa5bd9e4248882863fdf642e85c111855b410f1cefecbe50c01396f1b6b0e3a879b33873293261cfe3964b366d68bd8c68ee667d01508e3a739ec09b601ac4542574ce0c243fbadc8db8e4ef5dd783628ac045631d6f993c0a1e9d7e6b2f40b4deb0eb0bcf34543031105cc87593c0de260e6d7fafded81c70539397cf9b372f5c9348b9be8942e5a3556412fc22741611f19aa2a6cec904b5aaee8392b6f9fdc97a800f1da46415b9740526e69e40509bdcd58c75f0bb33b9472d4d0ed47b5059f6d799e4b9417b68f3918d76ca0f8700fca1f3990d66db3c086683e95451c004fe0376a09128d97b7a8bb91a64104bdc3b8c665d46108488ee23e6ef23a49f8dd52a5348e0b19eb3c3c01fa6794e242870897fb966afd34e298f60ec34b7959986ef1e7307684374dc8971ed7eb85c791f1abbc226cb9c8e89d900622dfad961e7a554cf469bdc64430e51da1ed35949d633bc5001ab9c00c0739285e186df147bf4eb7865abb6c6e8c3e4dd749a5ffe55d3ab1c0241fb39a324870865d1a86db28fe81dcb636cbafc790f4b299ec3ef6b7b702e7403e73426ef47103c361112be8c94ee1a10f90173016addb159f37260cf2190f5101f859931dd5470aa3d300cce546f89d299594e6514ce536e691386303a48885ade918c8616666b56d5d906c9f7afac4e22cdccb9465e56ae84ee5d8b688915c4b244baafb11614cde49566bfc025b24f424e56d26df026eca356e369ccf59fa8b75bace644421616f5531404919fd09d6227a3517d860ba2dd5518d7199a157deb35901935b9522e30a3d22f18780039c81bbf2aa1e2df9e18aea02038c6cd61b5d225097014be7d055c85055ffbf0181c6e8acf407d2ca05f212a96fcb720d30c03ef5d3d215c22489fb15ddaf86ba7784908e258b6ede4216dd1c5ec4887da9b99da0561daea3cb51c061eb4c469486774a3037f676aeb246e2136ef2a2d2d6ab997911bd90a99a4d8434983d53a7679779f2c442a80b20fcb4508b6e3b3f65fd4d796775b514c0738bf8a5e08871002a864162a393332faf1c82427ea6efa5b08751d81a1be845beafd1c5bfde3d78eba59b67bd663724821ddd38e2514064cf54e6707c92563f82f1c4325288320e6950d3111c5831ba263e6e43d112c04ef3e55a1fcac801cb5e7d0e440274a91d834420c72282f6a61aac1884d9da032246417339463570475bfb35b5fdb85c4eeac9dd692ef6f71a2a0d353abba9341729a554352fdc3eb01c13107002543ad4af4968aa9003a6791b4f8aec5da83a60cdd3232ad49208e611d78679dbb1e301c38d9d0dc040fac14497bcc0cb570112b84379899b3397ba4491fee76da226fe73c6fda7bf21e2a4a7ec34644391423d65efb0a33fc47e01dd24b26b475419398f027f7a8ba8eac35ea1e2c199b7ac97af3146751162bb24f78bf2e94aeace69b12997ea3d20d6031d45f117f00b944487b8d79f20727002bcb8faf73abcd8ce6c986125f24ed620bd0303965187f025a0d252392a80fed24925ea086c0884f5c72bcd47e1c88ba0c6efc3e89612ce99c3a753aadb8364898d9ff60100da056731ea9ddf2f37bf67846c978ee1e32a8ad159145ce4fe47c34ed5d592922896d59ef2db452db5a295d4e65d61701a9f6b073b7652e98144d1f65e309a719d8e2caf3d5a93aa8719aa54d54eea9b29bac216b211b7a37a3ca3d9dcfc213c4963bd8024d4c7f73821eb4c4d9b89dd492638ca41261d4534d379e7009e9f56a37536a705da958da6b870ef127867512e2de36d68e0661b07d87388867ea69390c968de56fcba7051891aea0108aa94ef4f8708a0ba15580cf5bc4f8645041a1258f89f43b4a5484b2938cb4fe002555d8fab3160751830c525e829e88befa43cf539d822fc4336bb65b26173519eda38c6325c8bf481f4945cfb54c645264b1a714f6b2cd7873c7f6c5fd596b7178b3d8a1a2d4c8fb48182603c7e205a5e2cf402f69386f8d7ea756f6c677bc92bc78350cd7180f7a8f48fe0cc6ff4ddb44817fd3305bf11af2c6aab81bca8062464c698ad2a7c463e4f43b7a54234b3e1784f95b77361061454240580d50efa29863ac34e82971ae1bd03f73b28e060e67623b66162f29649de7f231a7b9bb1c36df1c39e6793344f2c7257930d949a3bc4fc0434f5e282730ed86a658ac2bfc1b60961f76e7399fe37dec79904af577691f33220b32a4240eff52135dcaefc36cef62a7519c342d41912ef397b7d57e25048b9b38f3e98022cc10a176892cf938c83c913b1866a2d4198a7b5232c14ddb5b5516da5983d1dd3c272d2b1dfb628674a8700d4d6f76b8c59aa9b21060867d66c8dc1c5120cfe9326a00b2e8406960b2288dc2327722bcec9701ba3ec2120a74873248d892a1333f3abd48028ef5e9551316d145a5e0ed362570d6ca7f617dc9b3b5108d481633da243fd1a554f9ade939d0daa18c806189fffaf3d2b30eda56b26aa991ac388ed037b98a4bcd2193a03247226627ccee4efac9d2f17a7743cf2e99991c241d8b3459226eae34ac8b8a5573f7d41fc88fed437976be685232665f5b816067e31d30d5284a3f63400f1b0567f08694d95ad444299e61dedb78292e75c6832accf806dfb790ee65cc5e740cc765051ece1a7c7787850e36c9323642ca5ccb7eefc7e9ceb14906ead3b50b70149cf6f15addf4e01c623f6389ff80bdde72ba9f9f31c000a7baf1b08db11c7a6d2b0affaf0ad909e594a39fac0c9bc90f902c7dfac61573d76511c1f9b96c2450da065ee82a8087ea239a3bb9981fd179791816e549b61c79428a511ddcbf019e3693a34a478f9335e73afa0706ce8feeb1233f7f9bda7c6d268945e49b31e883d05c29a5325da92d9337ab681384c01d09fa420ae4503eaacd3949851bdd2181e450a3f927b51e388c0fe6b811bfe2060897e8713a4b4708b8a81464a5650eadf4434d60e5f8c3c9291843171bf426c23b2ebe2551fcecfb0c7cf34cde29f8df61e0a687e5f695890c62f12fad45720b60122e12cd0bca3692dc8b9f845efd66f9040a8b3ec671bdbf474d8d5fae799cf85725647b1f3c5b10ff26fb61d950000cb14d38cbdb72175c6f116176943c6790794e12a63a9f023942cd9a274d6f0e97df2406745fb24a6b9bcac5c33753ec95475e0ab718b3d6f4c35c01594c3a5495671abcba0789337bf7356f98a4f969350c7adcd2af4b2d7b6d4bb88fbca276584faab0b86b946189a5f4c0ddb06a4e2cdd33bbd69316bdd08c1f73be1f309d6dc2dcdd7b3b702bbd6a49dbda3099bd7013050c3708a1995023bcb8cb84702cce24df56d159042b3de91fbd74f87444390658b10e018e676b434b3ddc0aa853b7a4441faface4b1fcb089e930241d2ddca67658c0df4a186c903503b3a2655f2b734138404d41443607bacbf0a9a1387412c4da7d6d434365ac2c8154d83c9b70383c6dadad8383eca989ca2ee31e1bedb094a2386b38b34adf6895e439da7f5048ac63f0ec652a32fe6780d7d6e9a7f44bee1dcb81d9c63ac40c6a695b3ede4e2e01180f0edb6cd1718a87ffeb10103dd80de3f0c5b060263ffbe36369768420862f6320790e9fd4084666ea81cc2f27bab9ad197274e6c19774d94919713310e8a2782adeb677f3d6943436adc2be047522bf57efc47dfac4f98b046020777c3e4ffc8bbf25e99b75e9cc44c34307deaf9d247e84b6e419e2c566de68a6c682f5223495aa90b6a9b1c8682be65067bd62a1d1295461486409af2299b3845064e07a0d13da709835782800a0c1e9fb7f057001fd9c2eaaf74fb7f4a3561f6ab8beba066ded85d2bc9993261a89bec38b41d888d6f9364e5ceaf134c0082b3ab64114bbc5d42c06da1f9019e436459b67c92a902206fadd548c5d4b9edeb6ee43afb61fc8374253acf2a5b06114d7af1de1e3ae8cc23366ce1013ec378d725b02473593d15f31b7d9029b7e109d5de741fa5cf4345f1dc21754e70468ba89abe5714241636ce069959d415885b1db0278b7413ef9e0776949ed87d81235aeb960f3428f85ff106d171a0173707273ba754879c7c3e64b01f1ea410ac94d75e200ca7e971abd36296c806e4ffdb2b60746391a3dc8c0180b90c6e4203ee6c7cdb73e132689a120a96a0bc73e9ee69869aba381efa9b9a9ca1806ac084dc47538aeafef61800e250dc4d6e1b0247673813d315975eb359fcb8b58fef7236f56fdc6976188646595d4a8d9b56507d2650b3f7a176ee1c14390e578ae5fa4404f11ce47381cac4d0bd21a9644d54c7898157e2a6c2924376c148cedef7bc9d669dccb91276642acbc33a7e4800e09f5a10e6d8e49b2900af245ac5e39e6d03719160645546dbfdee01958dd53f8847c20366c52e55ad33ceebc5a7a5e51abec513c55c2a0fdb8b42fae91a54e7c33c90d8000b93cce3d0ac5f30b1dffccc1c9163cf16015f208ce4cbe4cdc054e0e5b80b4633fbf5727d286c180510d51f7e50f55ec8fa4bfa2385397cbdf7144d8efb49054b996f4e94765d467c9f1da93abcfeb54d0dd5ae6eab46474f6743ed28c2144b60cd42515595e697c8781fe83d869384d05ebc686e81813fb2c040b3e7891aa7fdb9c221fb1c18846caac14c81452f87c2bb6f901a56ebf077b4e1dca3c060803b31ce04ecf567352cea0a54488e8716a3f0f04e54178a7f1e6077bd0a1a14a4fd24ac960818616c883afc5e6a8151c0e822776eb8a2682beb175fd1d020f7f311a1916e4ba5cb9fd8ee7aae0aa98d723f5aefeef96acc6176d5c1078f3343c5b50bb1c0430d8e36d542b199ce9a4dfd508216bd7b58b957b70c4995b4266b25382eec6321a518708289dbe21b242c2ca79cfe0ab728d2fcf86245a1ad4d29d5d53cefd9a014e9b33568bc8a55972b92edf8cfc8223ba51cbc0376ee0faa5ce48af1c65fd615069e15c2bd32135019d1eb5a323245fc4d65d27fe911b4b072e3441e17b06d7533cc0a1a866a9465571a7db038bb890ec704223d6ec7eab52f407fa4564233ab5a29ba8554d8e767e5ad6144116fdcfece0f745c235d882ebf55e18eb899c18ac4c8486c9e6f8e3d25b7f8e6b95b78d3cc5397658dc3d889d7752dab57f444f901c19adb8668b9fad09534e4366d2e5bd8f84adad7d5ec5533b8b56e70c7a0c07513a14f56de24fb4213e9719259640b9c31639f30ba52a8d59f981e47452f76ededfc0aeec53e5e39e12605626f89bcec5569a524016f889465b684b7a9029393342119dc100c0a3d45eea004d307593c03964de5a93419856085340006f54f4a1db3ec323815ad038a528a566755eb8969a42f47811d2e35c933826a5c3353ab79e653d47900ccef95433a617b0ee5e2adbc3508f756c51b0ed13dd13185508364a810f2b6389a368f6958c10ef48e52632b9cad0ef5ae4cde44104da638aef272cf8169f9d1c1a6310973e24fc2622330b838d263713ba4223d563fc237c94d0f072c20fe49892ba1988ef0d9a6adcf36bc959708b1ee6175d15767850fb3f3784c275f0b7b4a97d2c209c965952ad1ca105c1fb98c68cf98ec9db714b2b4f0a5bebba22a8495c76d76cbd92f689aa162e0b9a7adff18021b60fe29ec5148413d4737922a6173c9040c836535733be273b99531218653f2713d7e4c83b9e10f8c6655fadc3fd218cd64550169dfdb830ff76d241cd6cd44e7e01cf872ed04c355cd424b1bae0040ddcc5d5e41a934b5658ce592451c1f660d36d44aa0c397ecaf25ab7b55828292794fbcc9a2298623e1dfcfc143bdd3a5c973e03c770b733edf8742f06f29243bc714e773cb0fc62eda7fd2d1707769fce5853ef9fc5574629b58087f896b8022c5b0e0369d08afe8bb5621444cf7217255cc7a33a75ba0c86dc85c2928f2af3691749da8897204e1a29e45143f906edb9daaec59b829a2dd0cb479dd17ffe130dda16e8fd95a047bcabcd2cd02fcd35b1b5221007321325d8a4cd5bf77f615342253cb7e4189e8bed9099a653b6f0771680995743752716663d21595bd4631530f0493e17ed74cdbb2cc7289e09e01b72954d9944ab4d135b0596ddd0ab44623b89689be8acb3b255bd82f66d7ca792b90d88b9eb910bf64ab321d59113e8457c94c3c55f107374aa25c1219c2a6066408cc9a6dc26004886dcc237e6d954602dc699fb93c32a46ffd25949845a1ef9f75774c5a4e290aae4c45a696bcca7555f044afe29903750a5ba0d7da5b7faf24ecba488c9804e92d59aa48d4e5f917ecb0a4726cd0181b6d46ada6b78d4ff52811d8e9235f671e8c4be1e1a8614d5dd5657c082cb7585a0b930abc4bfbc7e313bc4e2956cdb5f1f18b08e8dc113d78e89e09de5a9c01b4b73d2b36966aac3264164e3e2cb46348763a4dedc335b509f2de96806d6b231af4321a6715582cc28f6842d3e90a5780893e571bb3e46982a58c9995adaa983f7a4dd51775644e5f2e7c941d75c19972a01769a15de2770793a74bcd06fe3549182ac82f14c72352d8aa0322fd6632565fe0c07a39a66df951dca6eb4da8e0029e6a9cf490514d0f131e172a112c9b4922a234628e7b52f9051068ac28e70af20999875de548c9974daa03ca996bab77d5d03759eb21e8b0cb6543639dab67e3ad18d483093a866dcc1af622825a0fa9100ebef0204df0ce0fd80c5fdde2e74124500daf5d317462706016c0cce058a1e659040e5ff33c4703e42e6620091d38216594e8ed40567890c6fb8577d32eddb142a8ae020d8d7051fa84a1d05b582e40be1b8a4e4c3af482152860888bfe1cd87427742de753ee608831fb8497c41544326a9742dd8a94189fd65df0f791a02163da24a35bd749bcf9915422a0cf5fb2fbdb3a3e9a0f2b8a3dbe25c05fa12418600b6647dd76efe301ec69ce9a08557065e152d8e69098b52b4498738ab2efd384a7ebc53f568be2ca13327f36f92b9ce82841328c17868d3ed5fe8123ef02b7c9fb80ba9f7aa77e8f095e9c795cd1013574e9fe555cd2db38ced9c3cbdf96c9a8bab83bdcdbc29e1f8786e0b8a72813a40d9035307e678d62a5efe8f1e87d55b6b25335d959da3566f59b645fbf14899cd3213f9360279696b9a3ccddb1f273e8e5e75cafbb9d119c78272529830d930ea3fd5b8c46b20e4c6df6b15216ba1d8962065bafb909853b7273bee84d374053559ec9886aaeac98ab91a2e344e17e93a59fd50fce8e1175e3a2a40a4614df9ceb7e5cc54e748cafaa8007289fce57828da3cf011e75c7a3ddea12626c15fd5a75939bbfd821cb4ddb732c6d6c7715fbbe55bf004ede245cc09ffa4e7946c3f1495b8036384a612093631a9b442f4a8af16a6fd792d227c3cbcc10ceb857522fd520891b3b467a654419a0786cd259fbfdb66e325f3c03770fae6903392ad66bb5769a541f841c9c8721d3bd7fba115baa906d76d751c43e5f48a43fcccc7d9cf720c0f55e73793d446cd451a61818c9aaa58e0d78a23c747df1ca7868f01949d467ffd2399603e9fc3c571b98740237440b4713de4aa02ed561a54aea7bc6708570f0386afe783588e22b5a3ca813bb15ad2fbe8ed1cb0b72d680b3e4cd1de9388e5361ab8eb866b205f463c07e1b6495c47beae26942187f4ef4a12b15d6eb89c9fa732fd8ec1bb55aa516a86c217e82cab142f359a14b54ec87bb60e276aef4d5c6408407e03e4382d41d1d41ce3b730425d7fe7a2a1d9d6bb3ae193513eec3288b3be235b3d1f6f0343665e19042407ff65dd7081bbc65cea566241df258d0916f0ff38cd4023a31969a4c9c0d00ac62b1953c1525d27a9721f0c1c4b293b7cd022ed875a4e4c0ecb22f2f410f30f99f41f588275d5ac7723af3104cc80dd54f8c9a541c61059610bf21e0ffe48abc91e7d2793baa9888943f889e190d4a39649acbca76d3d913bc55e392365091e915754fa9760d17764e3c124616db553f34ca67f1039dd8590b1495daaff396bf1da26b988d22a542c40345a9b6654993a8769ba689c89b12a76cd14603ed4e46cefcdfc70e8d6028113db863ac8353fd97cb2eca8daf2ff89876bca9b96e46e61d3ba3120061d717b0ea84248a9f77d2d946809e2a53741c0b21b43e613e0bf652e22cf9d58329852a07184af55ab9828d399b6d5f19fbc63286190acf98b614fc4e5ce028000da878e242d237316833b610439f3c15a8333b409395e8b5a156681d94bb15ea31567a03817ad53eed147fbedc0e2b0d4957095e1fde491b2f8fbca9f9213f36643d0894a2b41b2e31b7236708af9482eb951761ee72fe530738de1d6bbf4064dec4b02f832a1fcc07a32fd0754e195471e597dd1ccc2e993a2e83ccae66990ba659ae8ba592cd6ed7cdaeeac2ce699b6edbe169708674eafb723bbce158628d14f60414e24e3dec5d17e84bb633a85659f419e6f686f9c478dc694a746adc7920604b8b6a86888bc5dc5e0862ce9911f777e14cfba0545110cbe5f6a2472e26b217b5f2ccbd276a9b11f89d62cbb856a904ae454a1d096b2e33512b32ba47d9ca371d352b380f25e921fc665dbea3de8ceb95cfed30e142baba1d5845eeca028011dfe62e8980a0894e9af7263c9dc9aa04c75a4095ef67eae2da2edbf2a06a8fe413ee24142369f33e68a7c0710c5f7a2cf88270ca8767f968b5c0039538c47e66a46356eb8d46561f57a729e6bac8c3baa52e715e007ae2fd88c9bd06731fa356d74654dd42fe7df138468c3f76bd5e992c95d31c689022c3609b93491d8382754411ce24c2c6ffb7c80f68e2064b871559a216e69fb8dba2a8c5cc3d9e3f402143c8e88ec7216023b214a93b8e12dbadd4d3c0dd61f21ae78c6cd8c692c7664cef9c2b3dd13b99d9b16eff250564d86190618ec9120bfc344071f8bdca3974ef7d7818e87a29cd823cc306d06d0942f4eb55592f2d9b9adc0c3f81347b67548d49629e372c176dadbd9dafe36b8343db8fcd641bc3a1ed6d965b17f9125d3242a99f523520f77b059f1c3bda37b8dcea24923ca6f7bd9bab35a3df78b4760d3d5f4c5a09d24af84615538bbb2c373afee931aa848ef999ca0298f4f210d0d6df8113aeaacea1ebca7e8e8e6956a88ad849815cbea63ac6ceab9936f4469bca6e5186dd081f2875e75e87083e905660bf1fe0740835c16b818dea064db5898f9e7709b230b38dbb337bdef35c0e92c5142f42021cd88918cae52e63a64891ec543bd3a39a7bfa7c56427aee77dbda3697b008f1f4d37bcdf2dec5e5aa65562a0e50c931d89689ab29b9b7be4c211c48bd0243c35b69a994ea15d1e707959426f3d8f9655ac0f9636359b1dc62c11411cfb69d12faf5c63282996d8b9eb5a6e30963884a946c3e07b451e0dce1eeb4639782916d15290f6d1762f711d00bb4667651f946f903abcf551735b56cbde59ce38ad505e1e0e5d88013c8976aa82f06b7abaa72350475da92e657477e730ae05a4b1930313088c6e1f9d2bfc0d508a2f36463e6f9bd364285de52689bb085f27f5822088037f54e3ce50c6822a6784303d799c7a8ada75f7bd3956d792714724e261a754d60aa75cc86e2177b9a64b198c5a2899d50a4de2f8713b7f94159889a4f86bf53a53834110571f2de037b44418bf3197b0c89987c8e59ce62db2a1b7e70143a95787cbef40b4871983f46d1a30fe3b1ebf06041fcd3b41803afdb51c17b29e73de1b286e9386d45d80e52b7e51fa0163a14563cc30732ae457a976bd223504ceac53167dbb7ab1d2b60b122e0fcbe0508887c1653e9d939d96a6896742f3e0000090874cf87ecfb57aafc1ed1c5658dd31358c12d9b449f6398ac63e5d500895d7076ea64bb6629f15d70909fe10cea7af1d4c2346131d382d694961fa84ffd662b8f33d8405b23bbdc8aa6ae9afa7f5d98659201df53f9dada03e8a2edb47cbd91c48d5856361dc5dc03ad9d81f95fe345ce6b57bfc3275cba915d6e0ddf18c0b72c3f23e2971a29d435be388d77c69336bf4ba346aceffc56b07d34ba17e449c5dd5ca89f0b0b15771ba3dd145c5aa7fa24e6272570a11124df47f166f07c236e46101fd329ec723e5d968c2652df098b89cc56db0731c4a87ad078224cbd26b24560f051d25aac5807b952b99d3651772abd5ce464e6428015f76b1887d5fb904565826abbd5786bd32e8ca34ef1c60889019e9843e50b5c2e53ca2d7a542c8c9d0227d7bd5763e70da0fac7b8d79636eb88cbf94c7396aa41d1a722fd82990faee5687778773c99a6f84acc04b828071959675b0f362ca346da69964848a39083a185b4088de7552988d30c9933dd9c451eb3d381ca829daf72fd54e8511d35e815ce799e529edacf2d67cebf4b7aa62646e46c18e00bc4347a3d9671359d89686c1330613c3da64b1e93350241d77484f992110c5dc3bfbb380ec46b083b91a272a19d7b5f9850d5a123863c86108e50c35365eabcdd64fe9300af55321acc72f7205be95e88fc409ca81620cf205123d39ed23d4a60632fbb5783dd2498b5d36e1e73dddd7e81d2002e9d0956b35a4e52530aefe6fb70ceec242b2141c15fc4ca2674fc5209a6d787614212f612c4900aca1b2c040d52d47575be000fdd9769b9448cd7b25aae38b744ca01b433822a90f91ba594d04d39c34e1b44279e13d6672d612e9ab435def4eb2111fb48ede1d1e6980126ae6c47b60ccbb8500c91e7dcd1913c1f682e93349e94fe6306e4dc73b46550f02c0556607bf208f0b691d334c2f1cbe3eff3462628ff07b2ad092fc8f4225191b5c088888a84cafb331946bdca7c738e86b4fdc0bf940e4e68dfdfbb7ed25704440f08ffe81f5400833c5820992621ff71d4d356d8a691ee0fa47146cd301c8c2eec318393c5f46e883bf839d749c01e001e309bc1f5e660610f54ec8f55606f7dc242d0bcc18f6b213c626bb54e3e9d6860c80bfb71f46e0e4c058e1bcb3f1cf393adc8b4d1baea76f6f0cd86871cecd6a297edda7f7400aa0b3065c41008c81a80ba13531a7e9c50afae32a8bb0b0e658709ab5861eeb2a04b4cb2fd7dfeac9ea30c26758cabe9324ebe3154e19b128673e8c2d323b1c55c3d4bd8c297a70fe879d4ae76d5fe199ea31377c06bd197a2ad6a5f9426b2bce11eae10781fae3e519071444ede270fbda48d4d42d8381bdd2f1974d1788fb6bf6205b383d4ec408a7a6fd1bee2232fb0be5a272a2e2a1f995259a69c821aa960836318da299de67031877c759d73dfa95df508f84d074b39ddfb59376a4ff12595b5af9b8c5a547b931253a6dff8548545c9d4932008954c4dc54a914f3b22ac41bdb6366f3e3a007a011de020fcd5e746caa519ac0cc3bc57b33b4eb9dd267acff734e70d54be3d528dc27d58c2e432edd81b66e19b3fb7c3226c3625dc0529456e18ea6306afa7a55ddc13890ae39e0fb88baa191fb5b2cd4a74d7cb7a530cacbbb14a53f00b7b8c7bd82e5bb10a53fb8a8da68c86878d355995ae4a186216bd1b00d421297f9c77e19829d2745f3c895b1d01b1627294f5a819b1b32b52d5ac16c44937709c580d79f542be0f8faa51a43bb57c24205a945126997bd9a8de5e2a767746ce0522ad6181c6f7236ab52077897943868231b5d4b14fcb77c3e69dc244171047105fe9b264b74e5bad6f979f448ed99ace4fe64ccba698fa716d588e30de5c300063876686b2612d84a1528ac0369b0fdb7849b23f2ae4ddac81010335c352eb54193ca9b9c7b58ebb02f7f665b7c6800a2187c6b01605bd1d9242e7e4207603c629109ed632872f706d1374acb38da5a29afe0feca844733bd42c05be8784ff0d55205e55493a89c208993e875864b691c93e8eb56123133b62eceeb409fea1a41a8edbe18df580834131d9f8c56352ad674da67fda171b4cf1d1ae31f4d2e450a036efe5d1ae4d6d6c636ca4114208219b10b2b7dc3be30d330eb40ddd55e9e0eee610e079209b909643649124e283e7b53aa4c9924172cda930bf43c2f34e1fbdc20e4611ceb727c48027644f952320ea62ec2210213d6784670bc72244481d098db836d78499a7312a1c6eb624a72d49458281e35fd4441bbab92a9274b936175045aa40a89006f50a247a3add4c8730f58195989814a5e17564240487e1159f911b92bc8e40f0e636c24353700521fa813defe6f6c14773404af2428239ee66e9c2da6b8912a424b5de1c95e0205e302a7265d9cdd1089ec133d38b79a1019ecfddc90b81a48b4981647734aeb256c294b2c8014f9a614a331d82e9a52e1b44560d029e290f0ef04cab30c0333582113428da98bc3fe910594ae878a62228c0333d4111cfb405394eb81059d207c7f3140311cff30c930d379ee715d1267c4b221bcf3309359ee713729e2715863851b431bd3f551059f268c260da003f4f1ee03ccf1fd10654436475abdf30e3b9e920e3798a20c6f3f449126d4aefb71422ab879efb0a36cfcd0518cf2d869ae71ed23988ac36caed03dc3d04dc9d8417cfedc2fd168a369f1d22ab953414b955f0c373c3604626451bee7df985c89a425996014b35c8c45c1e459b6ef52c8de0cef20a520a4cc07d6984385f9e25518b67e903dc32077206b82f5b1081449b9f68b3f1f02ca3c02da1c0d10e510eb8bf81c8a2401366b23cc724b10c316601f77562b4c9debf116db4b7ea327007815b06f7f371ab6013ee1691455fa24dc45cb8665604dc5c0f700d5063c4cd2e5889c9da5c3a6eae05b8392c22be72dcec8237201c3757226e0e757c36203c7fe366175c916cdc5c6bdc1ce6dc9b5d6a11016eae346e0e8bf03c8e3c6a4d561512e2e63ae3e650466b3e466b68b234253737579b9b431843f335434693a519b16eae343787411819e1f91737bb4c6d08889beb006e0e7fb843787ee66617acb55cdc5c0570732823a4b5f07ccccd2ed9d1449aac8c68c2ccd710a6e808cfaf6e76c12d6e4ebddcec92f9602f1e6e7649dd9b53a1bd393c50ad61c882ba5e789e8506c17e5c52618ad6949b6b18a26ec67e5c7067e2c353210da2415146bac8706454a444499491d8c436eec20d6843c246b40d6d42d3c8346242da58b0f96c2d25444451a67107d6a29a86faaa47d5684631a38832b20a392108d1509224514636066de3ce535265507faa4f6d0d191265a4911b92bc8e5aa885bec61d3734055710a2a424ada5e14003d27e349fa3a3c65d3d9a0352921710205b469415c98a32571644fe6cb671b58dbb2cf3c9a8c88432a0ecc78a1dda6b8912a42437a28c6c9c05f18251912bbfe0972823b72451666e6a883033733e42e044304407213cdf0084e74f37a0b6738c21352cab99fe44423195271984f25d3d8afbe61df1d341af8c929e6810f62596764b328db856919209041466aa973a329a39c6c0718302ab7ae19684c507cfe7171cb99f9bcd255dcce72070fc0bd69664c2b0e24d5c09113717cd283ca74037ce931f113d18bbcc2f42f9bc25c940954e86e929a648bd92e78c0c2095e081d6b2e5f19f99e77e33d02cf96a8984b5e7a844fbc6a259ae5ab97c8a2505e5289ad34f4c4ce14be0bdeef2461c8144d3d07f97af809cef4f879c73e2c4e0e15a0d351eae14ba9a26d4f2d9f2f9224740c2291c8b1ce1e8aff6d452f11db3f459065aef250b3eb437b1a69f58939f4e47b1a8a75894a76cca5554aeb22b67b12a16b6df6233293459d295c39476ab9d7e3534fc4bd7abc535595cd7bc1e0bfb4b7cb24128593cf78f96e7ae026ba72908e75db4772cacc42d96c7122ea79f8e1616b6e5f32c585c22e9b6a2afc05a2a096b6782e20cb8d8485b6cce3c8bd6ce62a5155622f54afb8a9557f44abb8a954a7aa53d656552afb4a75814db3e7aa51d65dbc77614bdd27e62fba757da4d6c4bd12bed26db40bdd21eda0eea95f6926da15e69076d4fd143b67f3451afb463daa9f6cfb69086d15e6d0f39058599fc2c7a6d14d7192c5fbbcaed385cb7edc4d862d1f619d9af353e70edebd8baa5ec26d26da43b49519123c40600894a4c81eb7b48a779e08fc65d72561cc19b86eb95af5ed5a09fff9a9a36356d6a5be7c988b57714d8b35ddca4cf8b5d4d69c272c3f212f34e3408f34cee244d134d5eafb667f992aff621cb105fd510be413bb7c55eb5f4e9afefa989a55755bba66dd7fada659268c35dbb5443b4e9aeddb339a429d5abd8ab2c7dd47a25c76309fcedc64f477df787e311a6bfe16e4dbb3bd3e8e409d99351961f74f1a58bb18bd14663adebb015590fee18a3cccdf372470de6400dde892fbd946b6a709fcef134ebe4d88d88c1f2262db07cf81851dd4fddf19e89cd2e39c4dd6542dec0f27aa9cf9edeab2084391a39d134397a851dfba907a17c7c945d2a767e91a4c58b05f68c32e2c3f2e61d3538de5418c28873288390bbec79d7591bf2b1c6edc1b4571265077963586db518135877b7cd2eed4caf323baf88ef26914c8760eaea55f6d5688ae9659865efa4ecec1d5bce89256d99cd2c5e8ad4abec9fb58661bf5b0b539ae954048810ae4644a3a8eac7185f30707e2f903ea88ef64afa913ebc8ec1b1469992ec4ab3861e61b2c117e04f18690c8b75df78733c826383b226cac4cbf045ac34f6b49c486c8c323d9547097f512653e1e8ecfd88bbaebd1ef9239458ca38edb43b9f8e7e466d9d5db708669537f2544518bd1a6d1ad3f7cd14f79018bb2a9da9a48b0d40f2c10b739f4ff8410b739fff11ca55ad33c6b8e1a8825b1066973f0121ccabf75793556b0d434d9b5dbfea66a28dc43c2452f7fc03c6be22b0aa33cf5d4ed33e136da2cee432c6ddc8f59098bb313562365afa82303b165f34cc095d7ce97ace96319e5a0a83509ed25008c80f8e4580f860ecb8a3b9b18c32b223e88230162982101c8b140108ee7aca9e6096392c4db05c61cd4c1879196da2cc1661b09b3036a382b153ec7d732caa5106fb498a107bc415bfbc66e64760cf2ed672b2a00652e000e058840668c0a79927f3f4ddb9b157d9ddc1dea71dbf9c265a17933c1d469ed6e97e1b75b569644b9965591865227d76b5aa45d67c666fed1efa44776ba18569d8cc8b30b3d5c60f4763ec8651864a2969186de6ac428c361f8e544a4c6a9737a5693634fb8e7b96efb6a9aacd8b695adf140b562f8bf60ca63086fd4d639fea15c6d22b0cbbbfa95e61298cc9ae5b616c15a3a110450c8b46ddd5213b40014d4403c67ec2e4955386f1cba122a498e7dd87233bed1556e35d1f5248081470b7c26eb5aa1ab1a7699a96ad30f61aacde1596ddeea198e70327f8e079ef5dc4c07c07c1c7de31242ca3118d2ab2ec3a4b82eeda9cd7ab75daece6ea795987bdc3624caf2278dfabf88863de730210e601c72718c10a2c3f1dd967bc77a3e703671adf43b8857a25e31bb4e7a8063c1f23abf41ccb80e791c8f10b789e80c23c5fd97cc90a865fca7489e47947dc0927ee8c9ae9a557deb1db471f020b400d136986c082d09df39e151488fe502968100a8402e9959cf3c678f314138670cae73f1c21c08dfb1dae374b26321e894d9fd6b3a63f7bc73c0cf38e613e3ed9a7c362ef98eb47af643e4679d86bc2a08e50cf6d843a3665a420e6435f2e3fb92f931776eba58f1abcbb60ecd9057fff4c4e4cecb4a25748272676eb89bda36c8f8a79cc3bb47036a789db3e1713127b4fb94c49b17de43de5b98d3ae51a6191ca38c1fa94946da3ac8f64eab651af649fb421ecb791c6271884120bf2868e41ba906f65d9e77c1df2813defb301612c82849fae3b12d126620cc3b0996a6b6410d6c75ed50a346b7ec62be64f31085535308cebb74fc7aca9319a864796b80686545b19b847f46a5eca9d6010d2ce3bc1206c3c8f156144a2cd15bad8c906730fae76e7e43c72673e43fd33d98ca2aeec335157f6136a62a9117a44879c5c5a445d1de74d0bda1d93092ba27e7e480a3c5febe7eba911fd8932920ec92efd99b586612a35a790239ce9cf8b0abd90d01f9faebb538a8691f7ea2964491561029051d3645a44881196521e8ba2e7099fa408e723c6900c69a9e4c8890896a72b083346047a32043f9d167822e995f4b0222c8f61493086c4c6bcf162487a2531579491a717843bd9797e7c268bbe5e5852a0a6d999f7a8143488da20da80df41cba3846394c9337f17bc1856c4c4ec3c46f4e9cc7b19362f16c40561a6422efa02325fbdb242e6a9062ce79d48b021cd92c7fe9262c9a7f666ad61f89a5e1b99975976974cb27afd286514bea4102b7d7a1545c3c8c7ac5ece926aa19e82c815f599979d47497e3aeab3db43e239efc9282e8fc4f512495e116d2296d1dabce178c1f5d24efa34959162a06c452438571f0fa331efed903eb0f79922bcf3a8cf12a7079f5a1082dfe151ef4e0c6cce55d3a8742aeeefd0708f89674cde705f2ec174d65e4d534cafbee7169a6fa19ea287e4cd0be9c2b3e1a95712ac37d91cbdf2fe59e903ced2075c5352b569c0cb7bd1e6bbfc7c4dd60bcb4b9fc94249dd5c4be1bd8b3a5704c5b68830de51f60ad8fbc94a017b0f6560efa520b0f74e067b9f3f93155e9edc9fd24d66c9be571ed621a1d3027b37ef8846fddd9728e3e51dd1a87bd42c09ba3bd143a33b8675dd3d9b5d1b67764d3b3d67f38a084c60199da7f618d213b227eb5836e8325999a0389332cbab179c49f9d2ab8caefe542a44e288289359237a95fd348330933e1c90231125266be6010c883739a48becd9918836f5d9c3d4cccc2b478e5fc0f24ab0cc3acb6218b080a38ca4cff565148f700644d89f76a7a769d8a7fcc1ae1802b77623c618df31ce78232a1c2903133a0ec721488ec012a38c31ce9f1aa9e82610521c5d29284d20c47074a500490f50705951046808ed1774920c60f8826cd1fbb24d1677a50d638d30336c02d39683941cc7711cc7711cc7711cc7718d6f30f3e4b824438ae66b22cd2b661211aeabd407c80c98f6472f3d8176edcbd1835bdc88787e35b067d8b14bad5732632f987e393a8de57b6020473c75b0cb9be531fa487fe30b0e270fba384f0f05f6788cc66371b2e6fbc3116279f3125842a17d1e0a8cd2d6b2cf2c5e1e6b49230d3aab909f13a338728fd4d6a0a73a61fac61315615f3e62b0fb614a9aac8a4d4d18799086a71e228aba3d54707794bc231ae51d3d44d8f6107998873dd3d7edb4b4ddfbe5d15d2a4e503a142a57f98ce0b89b23fef0bdf42e4618da44e92a8762e5a67740fc907b6210f42b36c620b21315c7122a302593caa1285d15ae7428f2123a265c556e8c3fd0f78afc70e0a8b8de3aa1f21257457de9ddf76a637af5dd539b7ac9722a2a2a2a2a272687226c98efe177d377934361fa9eb23901985e54a435a45e9639f31eeba14fc89e9a9d2ca1ebe264758c3fe478051c3f8dc8e69defce6e8ef8c3c907a13c7d15f47d1ab14867f7679d30f250cc4311c68e97872236cced399364ce8ed12fcbeee907a1d48ebde06ae331bb3db32d30dd6cc63c1c6feecb251cc1261ca1408422dc95b4d3771993af765af9ccc3f1999dc7627cc1ddf4e63dfd20ecc747acc91984ae8b31c6187ba4943e68ae11ab36579957fdd21d698db43bd920a48ff2a64a17341a4557aa0653a3530f42daab49236d19651abb31cac81616ba7e57cac151e6c49797150fb9a494830245486ddcee664f4ba985a1f99212c08c91735289a79d518bab1879d347e1962d63f05ff39b977a93d249e72402100e717b5d638d3238e8d54ca5a4cd0e0f7709f75f453f98beab1400983e57196f56d2059575b2b4b8923734b3c98df30a5329dfcdf95ce7946d23ce5ecf39db27b3d89d1209a963c53d6df6ee630cebcc0c936e26151961e4a36c2bbaf8f2d1f3e8e72656abcb232ec15468cf9835994c2693e97ee53414c6f8f1c0ee84b931c664ec7a46783563c76cc5d98d11267b97c7f696d8a9bf03441ad997031e20d2381d7c0782f1647378739d5f8ec94d8cc82e09b23bd143237ba77d35bcf3904b6c782f7d3fd938f9f7ee644f3cefe45e1efd6c7a8f89a9f840f688b14f23b29b1d8a1e1ad985a2dee45e1e7def747b58ba3ce492dc02cfef72f60a787eb35464afdaf551a191dd13648702890933b36bc4849944272ac21c91880f639c17658790625f159df6ee4664a52af08066858f2f6270d14b66c1f9d443085c678c5eb366268cf6c8c988377d9ca4d302f3f48a5aef5dd486f07690abf74a5dcf65dc334ae9fb9dbd7fe03ef77e10de8e84d80020536cefed600faec0938716b45dae76b1bce60fea53352de6650e71da6bbe6e7e6abb59bb9a66ebeef6eea5074a3defc80be5da3ca258db7e940b5ed4ada76b046bb761bc5b6b2d81e09bbbe438ee1d57b72d16d5f4f66ddbb66ddb368e874fc7c66ddbf671df9eb97720f8eeff74b8edf7d3b11df4ce5d6be14d4bef598cb3b29e7ac004b5af24dc0600182fb3738a19d430a9c99a3e3f3476882ea68fd99ab693a28c921e62bb6809d688348cf62b8e84d13527d65e6b38342795f1660e4917daebe3cd3b5eb0e93c4ad8f4c65d4dd3c818b83ee6e82a8a1906f63cef25ef281ae1d4c7689aeff506d7c388b5d65a6ba20df8faea956e3f1dd5abb596da6572ad54ea21a5db4362939bbfb76b0ec9b031f752777777777777f766b247f0c100c0b188118ee00e009eb48dbdfa9f8e9edd8dd128c27e9642b95d54c6939139f293bba7531f8b6647e1093da4693eb05fa9190ac0a34dd3ed0a42d2daa79684b54ddbb44f31c49b185d74d7c0b32451f73cc980b5d6342322a92158d3b43c81d4cadd6bf974b83e5763a7fbc193e1b6ca320913d4e6f661e3c6787ff0a49d333d93cd39e79c73ce99655936e79c73ce3967f64fc7cce69c5d76ee3963f1e9641c11ccdd7bf7c29376d6304cadeee24214442601b77c3ae89ba869e22590202c3e1c947e767777cf21f98a329388c6638931de4c9db572b5d6da5c3d57abb7bd568fbb5ec55d1ba63ff3a2031082b50fe0d369814f3c0807e07152fe586a799a608227c41e8832da7944175a6ab29c6857bb5852dd299f4e7bedeaa27679b35d5f6bf750be67461082bf73ef5e78d5669f76e2ba6db4e79c7335d393086b430d136dc29e2a9f8e9e31e650a99f29ce7308bcb574f397fa7474bb7aa5b5cba8066ba75184de737cb9b6dbf4d9ddb6cd06921f491959cde03953b5b5cfe9da8efa74cc6dcef97263c70f9023992434a493444164642a699cdde4cbc9381ba3cce9d3b17d76f3a5bf74e6ed21bb6fef829899da57ffd0698af09be521874a269f8eed2dd434a5b7e9c3b1cdd9dddd3d4b7368686808fcf60cbe047e3aa07c2d2191605e8cee23486a280ac21c5fdcb13b7f4419edd3cea119b8fa09517b6bf9917b56e19e4d987bde26c781ef4131771e25cc71b9cef7a7e3bbdced2131a8c3dddbe9e2ab02da33d0345dae2971a59a22a3a3d78b5e357704205c5fdf9f5f0deea5f7d73c12d7ea2d01da1751a683c031bc88b4453a608da7574b54d962f1e15a7c38b6f7b38f87ede1d29aa3f6b483700ecd1f4336767824f65e3f1b7d77b8f348bcddbb5405e11452480e350d772551aff20bbbc924606dbb12c88b86e9c7a843422229233fa2695ab3a45ebed2debda016fbb4f4b547e52171fdcc64f59086d1ae6933465c47b0a621c1dad14ebff64a3b13543bf7e9f40daf37697cd1369a6b2084b177f1f1353194689ad25347350c53ab3cc39a3f1306634da20983f5a458a6d58debbc0f2c85269393130a2525a5b212a54f189fe08421b8dfb1782c9f4e0bdcb160e19d72104e10006000c01730e6e0b4025c813d1c0479007d002d00b63818045600fc419002e0044009802e0785804a80f720180130091002a03d78047c00c872107400d8009001a0ea204d0291005b0e820b0015002600647130083c024c1d0411001e003400987250086804b87210d40116002c0254397804cc019e0e82384022401dd03b88258137409483a00db0069803a20e06814380d9419000200d1083f3a01010073439080a01ce00658027078f8031407910bc016d4018a076304b026bc0ed20c80269c020c01760100802010e00fc01044170061402ca8002005d80200c7804ec83dcc1ef200f3ef8700b08a94010052620015717a444049280c08b4b7a80031ac000ee08120b50400284841c81800318c01564848e0214f1da9272e02042673b72c3468d1c21214310c045c3855d413842cc90f18a716303a386451344d08b202006f0839019212e042013a3254d2b3498232f0f000056d38a1e7410965ab86efe0b0fa04b75d04548e82bd726dd055461f154af23afd72bd5d2b170b1a8c09414972224242484b2a292944a0151a7eabd8ebc4e281aca75025d275936858484844c4cb093ade56dd9365bd5247510d2fa3a72c4c5c52bd92ec91057af8aba2b1a06eb5c30414752608ce894833077429d50d34cd12cd3b1334169eba340f04785e0ef54a8695cfc3bb541bca141d20596290ef017807fa7ad6651a14c7d34f04c7f32f04c81929a06007488375408069e671df077ff51d7059e27120b3c4f2b2af03caf386a1acb8578438f50e0797a017f2f419a455f13789e2e093ccf22259ea71190a6e16108f1862645e07916017f2dff3ea56816d64ae2790641e0794ef1808fc5bf4f15c41b2cc801cf9305f83b52b330a1063cb712063ccf1612cfd3c78aa6715143bcc1842ce0b9d780bf1522cdc25c0a786e230978ee23473c3712fca94821de604710f0dc5318126d58869a85bd9aa88318f1bda7e81cc41b2c49c773ef007f28ffde3e9a95b53a8a9622c7f76e350dca0ef1260bc2f12c97e02ff56a5626249348a41b5fca17e24d26c4c677fa97b9e410496488efc408f1263b4280678904fcc97f9740cdca687c7208e7d3fe5db620de6449423ccb17e0afff9da7595a2b26c9f8be44d398fcfb06e28d16245d60bf798e6ec0df77441beedf8d689626148f607cace76805fc5d27de6842629aa5b926cc8b18f8c5f71c4d13fefb8d68435f02e2d907fcbd45bcd18e4817d8679e9f1a406d96f612c0f3c4df65bcd192a40becdf5fa28df7efb469c07fdfe562105217a64293d5b9f2cd55034230cf80901079335f18b8b9b1aebb00ed2c40bb0a507a44de741d05287d4d5657277073958012d86992bce98222908431ee95440b02ad07b482e40d97e48020a1c9e25c0d10628010124242e40d7764014230c60929c09500d711ae23f2861382802318e3b803609c0130ce080c4b92371ca703cb5a93b56d05c8b622b22d479605c99b6dc391654293b56d44649b4eb6ddc83221f266db6c64996bb2b6ad46b6e564db10597644de6c1b01b2ec35591b8d8bb3174e96246fb62021b2a4d664d5d78c968c568c5690bca949374118ab2e1b211842354242e44d3dc21282b12a44e30ac2f5c285b16b47e44d152281b8b9b1da9a30d807a0bd7eb8af999b53d85dd420e9a2458304707ba0adcb5cda8ab93408633705a004800ee6de1e6e8beb0a2f68853a2142429d108cbdf4f2f1d0b5baa0ae756d1784b1832d1e8b57d2abe5c5e29584b17fef5c5c475c2d2e16ae2318bbb7c2a970429c104e68851352e18438964dc5b5b820aeb5c2b554b8161784b1732815f54a7abd5e4918fb96d25236d77624755da8eb3a82b1d75376b26d42b66dc3ae098518ce1369db8252a9adb5b54eb620ad6f128c25e9571276ab090f92e3b83ee272f5751d0925a54284849ad3bcee21bdc282b4d6d7a2ad2cd31a7b99620cd35c4dd3d3c74a89cd23ae2a24755d2e21187b1736c5a451af6ce32a548384ae500dc2b82ba16e96435a5a92bce15ed205966ab55a584bc27248778592c9bde44df786e8023be6fda4baa13844198c7b61eca7af46e3ef76483808690b6f412636af903f80604398db84346b48d36899a593a80a61dfbb0ea9bba2532234595d52c3608f22f481b10b61ac433ae1208cbd6a75ada6d18ebdf3d1f974aed8b930065eecf47a9308eb5229eca7d6304ca58e1dec3c3be32a7b5b2dae329e8a99e0095d645d84c93a3b9ce0ecf5b371dcd3cb3cef1d0ca59d82908a1ac4931d52234d98173a5bbe606037cb5c26f774512e1312e7cc0b61ce90a891169a2c7a44b3408db61065e453b85e6a1465aa106238162941109c3357259229db445991349d3ba1a49e45c187cb674f1892b9a2cd774985566eae2d6e0e5b9cc895cb532122f266e56e41a40bf9fbc072f35bc8d5cd610f54e8e412c1f226e1ab52235ab72d88bcc9844817f22bddbd2737f76d251282b79bb32bb221bd9259d1cc84c89bec0959122c6f72f3bf72732a35c32e8b3659146476a24251e6c2e86c4de8487ebb4264d52013466ed1e6d50971255f834c56a542847142a459f9e52b916ad4342b6779fc724c509dc9e4591e4e388151be55e9df3d9b69187bb0e9666ada8aeaa5a9fe8404d7a31cc1f5a9d7ecaba12d59b2e40e34f598e9d65e5596934d5994c43d1a6727b00b4fe36f5cf801177c805d1ebffa21ec72c2f296675f8ec95b8e88597925d22c1f5598e4ab94a69b3a1585b2ee88c12a37b154849fcd31f8fb4624b1ca6badb57e5f79d71e6783f44a0a41a15cd26e433d08559eb721bcfde895cc0982335562f01664b236a0a1edc75d416d452bdd56b4e26d452ba6ad68652b5a51d9807aa5b205f54a5295d77776a6572f6af7aeeb198a47dd4d38bda3ab1c882fbcd3dd4de86e53f4aae83485708aa6c93be20b53c102888a128b4b54eaa61cd3a7f27d26d367427d2aa9d477778eca4ee0cc729b7bf01f3f9d8a5d2cb711e9954cdda4c5f694dd8e6225dea4c953cf15afbe7af4e199e21e7a787f3a5237f14cef3c6bff93d46bfc7450af2bafdf3e1ddf3d1d2aefeedda4a2720f53b9b4eb8e62b9f6e5387de5da67b3f7ee9a5e71a0fc2bc2f47a552baf57f967552beffead5c1dd4cabb0d75ebca75e23e9e8ed328b7de3e7e3a4eefeecee92b77e744c5f234fe68af5637ddccf2931b7bb5ba99677e3ddc874b7bd5c33d57af49eafb5229939732fdbbc9cd21e8aab77d392d8e62badecddc79264ea5506cea9b51d3a4aeac15e5dc3b14bb19d9ad08654339ea2d5e51e59f6d31bf9c16efbcd39c5edfd5e86eeea9d69ba64b3bea795825f5ce9a984e3f1d2ba75334b538cb55ee4e8ba35adcdc83335311a755fee5d377781a9f4c56e53f0af5ef36bc9bdb646badf5a6edf46af3ca79f8fc6a487cba3d2456390b56b93bdf51ef0fc78fbafc74bea37afafb4c0e44512a9dd5f1eeabc94e13eaf1b3f15da5455ef9cb556c7e02a33e3f9d7a57327533cb571e4dce729c6e2171fc4c6e8bb7b03fc78359ce83cd4d60965f9b9dc02cdf8a268bd290df8ce451ec8d210f6dc9922549b887c42ec7696ba911ecf21e8d5dee0ecb5bde75b57edfc599df77338b51d318c17223d23e9ee7c9507bb520be51836bad9d996e76029bfed94cb1576d6eb199e29696cb2f274699acc5b2fcb32c37599ec65d47bf9ced2d96e57533b21d6d441a467e7e392c772bea957c698a306f5ba94a70f399acd2dd8cf4778f60791f0cdeade86e454a7610e62dbbccb8a04de874730f3e7d1533d334a9d7d7c9523de515e5265785250b5a94cd351885f26abb1595d455528f9f0aeadc77236295cba1244eb112c57ec79928dbffb29fd8bca3a6f24cac633205155e80b39a99d88abbeeb8def4184d8fd114da9205ed7773adefe62b4fd579adb74e69546bce8eb0cc5c321b921565443a33ca8c64ae5ec9b320cc998bfb9e983d9f5643095d7c097d603f2328028eb88b6789ff8d238af82082e30b1c53af1f6c248226e01c89e0385be6d3c95bc999944c1531e3dd89af9982148e457c7e68604c308414bf6089713a34c1b3c30296d604cb4f473eb788457ca880a5c5f0f4415d26b00247dc1741272f44220149fb9841a60852945a4581fb2c315e91240489408499113eb51a963e843eaaf0ee6c818f38469a883d6b67cb9b3e4de371dc9d3eb325313645f8bd93e1f4697d61084f7c90840225e9bb928ce0e84a1a820580a32b490a2c022178768eaface5830a2208c24d6934c590b69e419d0c2b0ffe28adffec0e0f532a4a968a30b43ea7517a375910650a228d49062af0fe123d65600279d33fa48b17449644e26e531b34d0125e841410c21d4859031a6c1269a29e65f2aabb5d3fe44d271d75b3cce9e69576f3ebe5eecdd5e64727c99bec878ccc2a75f3ea4fa16e4e85a7eed324dca8775a8aad71458f21cd1f306cf00228e6e705d377a4cf591070ff09b85f3f9de8eab6281b4471a1d82c48d3a84cce843c5d9509d5e8a5227c3f03d25594cdb59f1101c98444971d5edcbd3dcc04e92088b61036d1ec2027f701bd2282c411dc5b1e958ee1f87d8f22fe10f6106a7778b68784975da4dde4b4593b8adad543facbd1b61ed2715f4e6d4da5b37d7ef3f0cefc99452a15e1c5aec090b010f6cf367d989053e2d92abde72743dab3355d7678e1be2d42fae5641598600833cdb37589676bb2b0ce955a4b5f01ef99de0c2841633e4ffc5d1a57948713f8fb9af65f42f0faa8a2bbd347afe8f377a7cf9d2daca2d347b32651abd5aa018dfe6c350da5d1692189ab88738a18422e54acd3ba42848958853b19db137a01923fd2c3b459b3950aa7ecc2a6790f0c6725f04e76ed58a51f15e03f7b528330f360b57bf6e5504185cf698057451f6954e038dd29f1faa1b369f5def7ec674cb76388234cc7b076d393213677e6bb7b577523e2ee3622ee2e0a142d1e0c7b37cf6fdf66ab56ecd7bbb5a73e417bbcf92474f12537119ebfc9bcd6a7803861fa5380c4b23ccaa741982b9e61b802ab743055c43d3885cd89c598269a2b98c7289e51de4a83de4c9bd075325ca25731860008cf6353845902e53861ee8e4e12a3921d27dcddec9eddb37b76f78e53cf945d05ac2589a00108d65ac5344dcce17a8390112398c7e608381aad79ec088e46f6695b1c8dec46603d8296a90c63e8c11d7cb45a34e68d13269e4e1a80390873445aa289c95aa2d56ab568cce364185dad8cc0695028fc3c8ecc2636539d83f878927a0d7dba18232b462dc68f889e481b05dd0948d87fb374efee479875d659c7acb12ecbb2ca71b1dbb8cf64f9072cfb5d279ff5b34ecaaeeb6e4c8ebe94be20cc3033d039e7c4e8a4f49452fa4929a5f435f43347503a55d075d19b73ce19df75ee914b70770bb78cd6038d79246d3caf8ac754f1e2c03bd855e9c4f77b30bd3d7868f1aa7466cf94920d27229c88f092ab11ee53a43a45c3f469124df2e1238a28b0c4a4c0120988121ca180631120407007a2209c44ddddddef9e44bdea7f362aa6b79e8610ca79cf4e220dcb3eed95bcd548be9c88c27bab2e0211fe10ba70c4df8b087fcf8470c4f10783cf90f0f7ac46e99d8210e69993cfd41a86a9d43f6730985fe0ac05ce58e00c85b30f678fdeb37b97864106e1cac19ed2331bd9bfecdf3f309bddcd0e821de879d39bdc67264aca54dd936727d9c9bf9393ece43bf9b293efe4e41d3665c41acbc098988f87e2d2bbacf465d9cab36e653b9881de3f3bbfe27d07cf7d3919089e9ce42e55c23d285e390fc5aa69fa3e554a0a4aca8db72bfdc0087befbc7f2ae04f66a6923a133c9628bd07c531caacbc7edc3530f595d409f80ed46981bfefc61e12a3524cdfa53ea1c4d386eadfbd77aaed255b3f0eb4f32afb82576e049f7d4564ffde81272807adca716686e193cb93c72f75755a6094e3748a3d41dd98985e9da0609eefe412e374477f4293cf98a689f9a907e1f7ecd3eb55df584fac2afb975d2672be6b7a4e8c32a6f7a838bcc9a3f778d343abfa2e8fec4c34ce2e138d793cd1c2e1f7d03221c177f1cb6432d0e66e61f09f9d5f8deede132dcc5371f7dd1d2fb87bbc67553842dc3dc4dd3b195b3281652c3f00c7776df3cc8c2f53459a38a16be19671e2531ce25311428969af22061aa18b2fd96576995df64dd93bcc3bc520cce157637bac9d096727a070be8fb45052ea8a30760b0977faf6420f3017e24d4f215d18b59168534f5b97b77544bf808bd0eaa7239fcd6cca6813756436b31bb3985ecdeb616d1461e88fa8ec151412843bfde3dcb687ee91b09b3eb3357dcca13905a6738a5e511e93c9dbe46d7a9bde859209f9ec9ae591f8c56a7fce8e651896243bfd29d18c9e4a583883ce24ae49bd6797d3cda9798973bb9204a1498836117c8c3182d9b30b064b27a35e956c1f39dd3652ca12e72730864379ac6d7790fe3021bb9b9cbe3331b9093531b94d34142768d243b389e8b1db43bd6aa2933684a6f78f5ed19b4cb7896e206f6613a40bfa6e800ff99e3169f381a98c0253164fc3d0c7ec27823488da60a7741eb9d3547c97169c44139c44b30484fe50291a6606e938af6db63b6096bdbbf6b42c7b67b31565e8715ab66cd9add66cfdb47c9c8e10aa6a7ccffd5da36934bf1a326a1a2a44df3fe8a7eb648490125120940689369135934c18fa8914349560fa78690b533a8926d104328374ec389374f74cd28da48f60da467a45a514bda241320582e91b48af28fd89327426c1f43bf33cb23584e96792c99a2e57929dd9a22a8836dabd6bdecd72fb8a68acdf2e494f40c2dc4130a56f5777597f01d3be6d844a4125fd91f447d29fcef4a79330356aa3dc465d3dfca359610fb534c2d46b214d936b6725915e05f551afe8375b6d1b8932b48f340c9537cd8524214ae929f54294a1cfdd03178499fe609ae7b353ecf4b405d1a6bf432d8f52f6d9d857445fca77cb39af0c929db56cd940bda2494d438d1ac37dbd5ed1eeee2a5b48e66703c361af685f3a673667866959a6cd0c9ba7a7ae6dc6b4a0cb7ab01bf62a7b17a9e9d97c3c56ad0dec14c3a88d1506673f44189aa53953524ab13b11e547440fcdf48a498f51fbe5c43bd32b5ae3ec2a6b3cc571d27bbdca8a18c107e754aa695e6b18d6d37a555a785a79eda657ab168d8c74f312175902111c8b2c41486d9a4c4814f83816598215b89bdeb45d9501f87b07be7e356337c43d4e3ca1a97208307650cb1548c9eed43f81b1af742a6fb4d71f38ab3e1d315499a76fae4358759ec65dc53aad7477ba572df5ca98914985a37b2dd12d3c6a88d4b1205890ef66b77bbdaaefa5ab8ad0d18ee9a0f2063b584155e92cfb7d36641cbc3be0eb3d1906304287fc01b5195a4ef7d9d0be83c9a8217f66d8903f395786ea08771d96e1aeeb70f7d58b5dba88614bc7992c1b71273d962bc735ed002c04683fc0dd613dc73104fc00efda0b80cd1207e099bc5155a38b82029a63d80a0a0aee0ecdb563a5a3de498de628a0c9e25adbe30c1f27ea619cb1c2188d34ddb1d71869c022725c04dc2c31eb98cd3c1966fd005795e3a5abaacb0046dc1ce221aee3c6c8c256df6eae212a2b4011f7c6d5ae423d1751ca30ea9927c3d86f3c575cfa0ea6c3c3a8634186c08284b9889bb122ac3ac682d4202ec672f3cccd372e575da89bb752e9a92fa7d4b172e4b011b368685896e69aa579273d96a5c134c7e91c5662ad8d64f246e21400a4c4a4c8a4a4d4e09499d8aca964c2a4dcc32929279c72ac28a6a4bc36cdf794a37c392937867508c74f759ce65a93251343c4cd294c8726ebe674c6cdd5c6cd618d8c9b8f63d0a10c280bca846c3645afe8cda5e1b79b57305037bfe6a61aa65379dd859efc6cfc7015d63b96a5b8a39e0ce95038e34538c21647a322003982f16dbc6bef8b00a8b17d346162be62bbe905c0e61e1c807729296f23b70ef52a856b4519ec851d610c33c270c25bf37c0ce334ba6e9e57423cb2666ee6c9706c754d187a215637b7a98161638481794dea5a98070103f317d98dd20578cd529c4917dac1abb5b49b654058eea177e296de69366fe0108f894d26d676583e80ab8cc2ccb530adae3aa452ae156d624ee9464470ce8022158c8660fa2c281bca7e941ebf0ac4715aa735ab3d8675029780b8f2c76a97a7b18c216ee89c889b292602fbbaaebd9b471aa57b9b2b00c66f6e086a0ee3363704551c5173180fc1caef238d1ca0a69171b3c4324e65bcc63b195602d5b0f2478614403c86766ce5f70ac85140cd4b46e01d33188818d7c6673c7e45d838fecb35dbe2368820c20e711936629d9c0ff14e7a32726e584c880c1b310ec4cd14030103c68fb887b1f27b8fb8877118d7899adf634cc33cee722daf36cf78a96405c6c75e5eb22d70106103f1ef2f643c869561c3d2233f4d53e3f492c59753e3c69062aceb89b11dec12cbb04747309b33c43bcd5aed1913d22bea01896ba9e48189ebe5415f322e3d72358d7631ed62435c2cc82b8c38634130173da2af6ec512e03596864a55af8095db5c0135bf79632c47553a1238bf474288c3c09662025895769cdfd3b0aad23500ce2fce55695f11e230ae3a4288c3b81057556d6c5447d4fce635bf398ccb9fc922c02510ceb314a2f12c876010dd2078c6096069a084b071c228716744a49bfb0993a58f10a86b3be961146655d89158398c23716ff31aabc2ae01560ee32aed1eb17218aa23ee6d7e6ff399c9c2f98c1a3c23479710336e9c336e9c391ee119c7b1331386bb10dc8c193366dc4f18ee332ef7bcc2337ec3712cbe9c1937862ad4e30b4b17158c7cb0fd0c10b5a4c9789cac9909833a2a0610a8d7d2e3bcda33a0496f1040dc10f517371fa39e61973b8afe300253a2a62995b4db5818b6c6c6593af7ae642991a54340c2d27f1ca7e557b211d738d434e85dbe1c2efb6c743dab06868d76734d43fdc6da5818b6c676285b5d4e0825aea56337d698c11aaaaec489fa27eb1e751717ce806610d88b5fbb6259366294ad46602d6b255b6f8ec1a5d2b16c629f8dc6da4bb68763b6c5bbf8956e360297aed9acbde61c7572c70cd64a571dfb723495e5ae62b12636631e8de51ebfed38dd7152a3f2b8d44d8f2b40c4da45812204ff699a06de8c5df59c016147fdb3e07126368441db833b5ba7c028cb9361ee66d2856a0057d9949b5820ce622356519941260c8d591037d7f0c59d47350c8f30fd0c12ef0ca2648237d71a6295df9c4a79ab95caf38cca950061f3c403b828ffc1ced83aa457db552a16b3e0a521f6d56aa626039a3034c3e051de81b6a2d87a2a1282078fd31950e9342b3d2cbdbba86b56e52517aa8b1dbb384a2d0251dea1d818822818c793610dd3ec8eed283a33b8f4cd72600697b43ba44408092889fc79bd5c352bed31e69afaee07978ed34a6018065a1e0c63dd31ebe2f1c350970333b894e3c26edf8d887dfb708060c9922546b8de1d3302b87d743a3d5de6e67a7acccde1e9e69603e027271107c0460c009b5394c2584bbfb239ba7cc8f408d3f760f311b8e52d5eecc7c3cd35628a59f8b85f797704d6300c6bb96677c460fbf8d568b9b60aed2bb604a751c58e0c50d12bac0b4355d75db333c45f5723f5ef626f79cae61d31d85e0ec4e0df9d96bbbce59d0b76334dbb197ba7721797ab9cb3f908d9d5300c53a99f4efe742f45216740195016a452a95457bd5bd951834bdf77140af51eacd97c25282ea140116eb3d483b73b00e9e25ba25794a757944675354deaf47548d3a49cfe2617250cc3f0a23cc5d25ea5aecd31b8bb2d47b19408a65759ecee88c1d85b1ebf1cd9723dd9f2c19d7249c457123853c3757b80bcf98ebdb22cfb6ec61e332ccbc1706666b17f5605d3586e969865fb0350a82bd134db51a7f2076f3509e942cb14e5669e4e02bb56350d3bf6e56443b00a8e464918c2ddf4b02b28d2b4a29348ac21c10f9037116b77e53b780de5da737dc95c7af8d834aae792cab5ab6cec95ea29471d7533eada552e4f77cfdf556e9ec1e0bbd2cd2a4fb99962f0e1e56763a7748a537747e54379f75cdfdd3c83b17ac39b2986b127216f5477a7eb0fc77793902e40d4e5699c7bee4ee9182edd24a40b2cbeb07693902eb46796e59addded15c411b3e7e36421c516a84074b47b1aa6316c4be1db4deb18839efdbb675f1ab4de02e0389d8a9990dbfead91e98098a7e47e15432a194a77c4701afddc494fa300fc33e1ddac19b7954dc83057ba007970e6637222e5d2c2bbddad97d822f81cf6e92592cbc961dbbaaeed8c16b5a776fc4d2c1d797409b9bc058fd49e9f1bba169d84d5eba3baa777727758d678237bbd9335d4ba1aea53ce5a23014140c0585d5303b066e210a6a0bc19b51e79938aa7cff9e0935cd47ebc3a3847a457b4533201b598801ee15b92672b8d2312cc7634551d9d28d5ebd3bdc3bee76262ef59dcc33b1947bd5f4ae7ba672cce67009fc69a5afd8257069a509efda57525452efdb43e2942cc3617a97695aa35ccbdd3dd083b5d7d2310b3601de6abb57eefba97bc4eee5e99587c271373da4f8647306721394067d26444d6e0c4db016dee95e02319b6bf71266abf45c619fe22b35595aa72f422b2cc63593bd30ed3906c61e4b9647d4348cf1d0b076b35cb26409fe6ce744d3d01bb8f4136a98cd806a05ca80b45c319e66451a9c49a39e903dda13b207a56b2994a0a32e4f02cffc04ae5c8e0b8fcdc771c7c51b66b394a1c77d2e59e2f2fe725cb0cbf024ba324b13a9254e190895f090a03762e0ed33f6d4ede4d5623c34397964d8a2bf16a716a816a7af6edbc98661afb6b3d8d3e944e9122bf6446dce003e390afb725ab47879ddb6ed2dc799f1d3311f5a97d3719a3bf7174b3b08eeb5579c8b8db8e5f49363f6f4207c7a7f3ab021ac992af7995eedc4e9360545814faf3d2a1cd8b9ab70d4dc63b23bdbb3c94de7ac0ac776ae88eddcdd31f946f1d685ef62034ef7a1de941be801c72135001a5283247cfaf6d9abb9033eefa02ff52c41fbd399df6e36f9bcb4572e3a4eaf35e400fd5cb264c9128c72b12d364bdc326fdfe9e46c979b2edf6c0b4edb5a5febac27dd5b6cc42e9dcec59a4af68e5d9baa151e6e2d0fb5697878ab6ecff216f7be3f1df6aaafa0ec30ed09f56d3b8b8af2ea72ecf39ccbc5ee39971c2c6ff9dc2cca0ea7268ae05eafaae5aa96bb7c6bb93ab1572e77d95c9e82b1a0e860397677587ce39978bbb4573fc702074a87c555f976dfe2d25edd9b796655d96db3969bb65e95ca8addb879b30a0f2ad6be368ded154ee51d8aadf32bafb8f2169b9bc02d9f5fce8a8f177b9677a71ad8addb75d9ee625b8e59154b10db76f2f815b1f2f9959b7b706db119c5613b3c13dfb3f8b6d9e7ff849bd3dedcd8e6e2f29696c766bd9ca5e5e6ed277771b919fbc979b8df6c5e02b35c6b23bee599b87277a7e2407d5695077a703db7d926307717ab83dded2d2b2c4fbdc5e627f0c6e2e693b3f07056e29595e3cc158a5336efc027278fb3f6f6e59c9628c13c8d0d61eda8939578e39918b339c4dc4c792c8d378edb5e4f391e917aaff6e49b8e8806acf14c0ed08737d925e8c3bb533a78553ae055e1f8be7371080d7c30665bb00cbd7f37dfc33c8dbbf0208b97e24e35cc3c5acf23317d8637e982b33cd2a3de8de1bc3c8de9e5c0c5dae7b96f5bb83d83497842b81e1a542559172810bcfd0917e45ec18e2bdbd001cc559b1bd7e36db3d8779830f66ab32c31072ed66e4e02efb85878a700ea70a5942c93bc994b964829a584829452dec85b728294529e5889410e9c9cd4d45cb2444a296fa48f94529e2e0754be632e5982a928b28496caa5021f41e7922528ad26fc60a9d547cff49c62815e87e3db8bbdfa119a2c900878a990508c322078b3cce8a6e04e8698769c7e420aae4e2882e5b7a20823b7a28dc866b429e17c340b08a1cd880f2449b0dc90b0944758def4d50da869a416f01664b26ad18491b528ced5cc6a6641491692504f5e218c454ce003d34c286f413a8844c225b002cb6752346bd290484d532f8fe0dc42b014ea95a44363083315a2435b10ba9aaca6213ff3e25bcdc4842f45b5a8d6cb1a4a259822e9a3498dd02d9c2e4fb3108d62f2aaf3fa6705e53fdddc2d14246f506eff485d793b68084e3daf30ca33230d237f12acc0a8c4abd5e5b1a2754ad10c000000016314000038100e888482c178300d755d8e1e14000e99a85866521aa7399062cc206300310608000000000000411200ac617d0be022adf03df13bf016a002b9d2e2de2b2d44ad272bb8cca49aea20899d66471ee0fc97501e4184a17ea0facd0324e688968b433c973abb4e9c249b9fb4503bd7dab266a6378336ebad24989a31d47599579565397183353896fcff8a6a3ea892d22c3e93136be0d4b4159b181ce464aedb01fcaceffbf69f1bccfafab337e3c1aeaeb3f72652536c0a88866b97503580dba9216262945046fc0098c938e491767175bb833eb70013a1c119adf881cb0828412593ea401afc316643251d409d21cb19993d66a09e488671fd81ca26e9a399914bf15344ffe01986becef73c02de01a4044fc3087054bc87d30bd3fa849139c7cce6c7b003141fa75f9cc98975fb666f1c47f43e4654357ec453851c45a77aa5ee2f35d8c7c590e89690da3a417e80842cd026e5b165555de97ff0549accaf8ed4c78c9f5a48b3d7437f378d3f79290a1324cfd25d9c04ada548ff4f338921dd398b312e7af3f45573ff09fe88ce99480fbca6ca37eacf6115575f1f2c5cabca597fb1a80d06c6d7b323aff5029257e56ab819b4aa7dfd4df9fa6644f05bd98f38baece581fedc18653a0c5ec42b7330e5fdc4047b03175f221094e292dc380e168ae8ecfde2d0532c1146366d566f8de802a36da7559d9f6d3e6465456d7ceaa4e6c834077310584d7c3ab2967f557ced49b7f86ccaadb93712edce5558747c6b399057d1836b15fdea98cfd487e066f026b9790d17a03e2e0a1fa175855bd903d1e8912d145e01c0e4dfc8b80ba79df91bf5364d906c4dc70476458265afbc7dc537868b71a57d1b47191219770456f5858498b3742629a290894faca01810d5072ab37a587053be8a74842a46fb5d28867491bef42f464d2b97cc923da403a41839512f66b1d14cc118dcd87d1fa287d4869d76bb3de8c4adfd6ed3abd5e7123c844ee6cfd026aca9ffb679562f45d39d53ed69603330b59e1796876dd723d85372c2713276087a2c307112e7148b6cab68ba593290826f909df4ae77b31187f2570a4c297ff6d1dee7154241666abe9f9dce447e061ca401173fbffc6c19444188d881eba87809e780dc1861cc7d93f49f87094c937ee2b3e1ebc191d32b1757b9540273e84b1203eea471dfae2c70418c332c45fc2e63302c9bfd5d0549e49ba8004fdf76c0d7ea04233d70ec363b713f8cfee9cac718462d07d611fa80691106c11eca977eade1a48b9896e17e3062620e6f698011a027f58e112c35f5058ae3dda2bbdd6004f08626119ec10735f99878f0c77f7c25c834ddff4e42df82b234353eeccbd3927341b72a70fc31ebeb5516e5c9c843dfffd2cd40aeff3764be3ee3de7f9e0bd349c294b22b332ef5da9df846f044b1a9c89328130e51fae20e6af349018dd01f22f3cc48b714c768b02426e45af1ca696e0c47b81715776ed198d1a8301aba757784e965b7ef40802dc9d260185451f8c154fddc09f53081cb22c34c213c2e2885ccfe9293c80fef0c29b04bf47b20087aacbf289019e7182e265e5c1a1dd4fa2529709adc045347e3d28086ad55671adbb71c3ac1ff1dfc9b64d4a53ff7e1a358868c15c00eb59b0692fb615ee9072154d6c4c0c94ceebac1fbf18bbb71c73d89fb611cf44b80ae15a7e765b48d01e6a1ec92ec2bf67e4c9086ae9bed48dbc34c65c184ec2287f91adfb292055a0f511c5389d2e735fa751e2198c84948d03cf0dd5a2f694d85157f281aa83d665eab4a3ba1fa1d1f9fae2b13562f9e329cf1cdef571026d9ac8dae3ee444ee7c4c688b50d47aefff8d09217ade083c509469184c0f2ef07cc7cc4931a097e57aab233a03fac387249fd02256625f0aed606dda2242bce6f0ee2bbf8121fdbcc13fe504000e5dc055a0d0c740a78e838974456ed8eab9749418cedcabca3e78626672047836d5bf326d1df0f8be95c3339e6b5d25c100cb34cc73b200b4ebad93537e1a374e7f1d9034c66c561a240e81c8fa03f5e1cc0472e87a0d2354ec5bb79c80dc91aec3a505614743356858fbfebf567220ee2956a87cac7c8ef7c74194a7c82dcd013862b1ce9c1b256f6f2b8fa853690aac8ccd51bfaa471a212a8864d93087ca0bbb16f1af2dc5790bf08c351828535524f0c6ca7184280ad46c793877cdccee84ec6445a54ecfacba4d1005c6f8b595f36dd9c93c08a7808a340ee9435839e933bbe523608ace838f679a2b15c6af63ac1e1729cd6bb8a4fdb2feb013450196d6f8754ac73f00006a17753063c7420b501db982ab6053c39ea70af4da5ec6abc394dd23a0a17fec581968a0625b8f78fdffd63cca0d711f57ae5769cc76a1fe1682af569d1f7abb5f3003b86ed92134cceda30298f06180079d4707fb0a014cb9b2f1ad7de660cf0412298175a9f02d16f0bd19ee04083ea8e4b06f1e6a6d3441f997061b68b4affe5c2b9b416d66677af9ec4db82ba82017eef6304ff8d05398da0351ddd2b7297420a42160584c94f2a7c17b0318df0f20f3f1d6382ae0489750f5e6f8d4d08b30fb90d2f4ba7df28b79e03c086f3e1d50beec72e417259a87d52f1022f89ac597254e35f7886095c04ecbd4b669242a1a91200b428158de6e4e5ef38d88d8e35e8b7d74ca1ab4284fef53bef8843989a7146f48068ecdb4bcc3522c086983cff3cad1885a9e0b197356c2b67ef25b3a6f6c26730c0ae03fb983b1821e0140c7b497a1f28d0b46923e69c894690eb801c2c2489c45f1341f1ec14d2608212d8816d35dc24663ca2ff9d92d45b50305501996173e99615431bd6c636d907363ae63307e64a90f48050868d974693991c3bf324205781871bf923d6584ca9f5be0beefcd082b691b74e214e93d9efa9833905ac561c7a739868fafff10451945a2f52fd194087ac483c9cda9c58f49fb8b84fe601241caefdc4fffb859fca11d6893eca08cb61871866d3133fb8350c5fb2903437aa028ef667ededb975c8a7faf0937ae7643c205eb9ec92c9917704c6574dadfeb48b1ffdb2bcb195f6eb570d18e73962aa1736c030252d989132c4dc4c1d3c1faecea55929a19d5f45e672dba6c6b7fd730df3e3ebc8d8faeba56ff4cdebc74d4c0dc762c8878d002f5d7d73b956fa575f699058bc9b223ff4b3c36a0d89cecfbdfd2f848a3492877bf67b39bc64e6c7e0559c6672b335035cdf3e23250679b35f221a441bd8ca2303308252571fcea69fe7953ccdf4555a0a1bc5606785c79b90550eb19e49e50c8657a0d993f32e8c7f88916eab5401b3615da4c0cefc71924db27ea9a583d5a6868766172d731419e06c98c0a457a0682e9fa9c4d0c3f01904eea814f3c6a5251147c902438691ba923c94be64f7d137d66f44fae849ca1a76c1982fd9faa3f03a35535cc4f7a0901a12e466a09a420e6e348c99e343c10a16885891e73ea308cfbf9cf27b00ba0ca67b8eb1e1806a312c471b2d81214316be461ed0af83b31c2d70f4b9f6a58bdf9386d2a715fd74281eb779c5db787e9302062b7d9666a03351e7dd8f631700d1752a80ca89323106198562af2bca214810fcbfd29d49521923341805acfb27b85f4e8d65a895aa7fea95abbc566a3c00bb946eb5a246e8acdc7a15dca4b214557d9b9ab869a14e556178d47f888ee2f0a512c132003a2941bd9abbd398b3fafc94eaca93509102e7d2abe8fe61d1290d440631ce03a65d94d73b6502c1b6b2e12c053e8e23b4e521a55f0fb8e32c7c32ab18a5c104a5381b88a7e5e37aba4a699db14493ac92407fda38c615e1fc94b9e726da435de4c6a912e8c29392460427f64ac9f4f516ba93b86a698cf044a74525aa1c9a03eae502135546bbd583fdf8d8968fa9f28ea183336a3abaf20e98d0566a31bb03f7b18499f0dfa66f468ceef47ac72537743308f204f1de0f7ca30e3222750dfd1714b808e78c0f62f94336adc8862a73513b173bbea25e20dfcb004b176c5c307c2ee8d26fe6cab508626374651600a449fe157f34283e2a55645d8e6103f6480fbc40832621dbb33e9952273dfe87e445679604c67a095ebff3d4c63d148747fbcd327068fcbedd87aaa5df59e37b3945a8d48e1376625e5128b99dc7940be0872ec27fc6159e0438b010e6f1b504b3ff02cd56817c75ebc6e02002099d8d2de76bcb3a57867c537b927a346be4937e6526597e642f063f312ca9fcd5bcb3220d77c5cac42ea5e072f69aa7afc42d2992ca064c8bac599bac7ca830844aaed7abd7a04c8098c3e871ba10bbb52ebb91714e513e38516839b319565c87aa98eb45c33687dcb7d8e72a4024b7c8518f5181104b15081a86fc7ccff870a6669001a9966b38a70c9bec4035a408732f65789fb75d994f599d7d0e836831e3d662098fcddf7272bc2e042d7dbf7f7321d9a20355a9182bf24acc2b2178110cfd7ef1a914a700987059cf38fa9f752a07fcaa056cdacba30e5615d7b1cc4cec1b966bb574b8fb51f012206e81ab9cb2ab81d265b8a8daedb2b0ced3d638d57e5371a694816806b21ab2c1751973a3dc38b9d7e1152806e6eb629b681f1316951d136b1c761200595385e6423d04e6c29a002d16f3c42ac43c0fe6b81110dc5eaf39346ba7c218fb0a69c81eaa492410d8f0cdf41734b747898589406fde1be6b47a12a8df9388db207b948e96bc845ac583aeb0956e73d85f1577acac759599cadeaee6d12b5289a659c14e06b41877e759abef3673f773f6ef8becdf6a58ea00475796e3ada349f2a4da2deb0daf705b5891a49cb395c3e071ad78c257e118fa55c7803de5722d30e1a72f71850ef3a810ec09e711af0673cf458242ff3b55a7a55ec2361d4df24c2659a32ea4b3fac70bf8694f3a717080366260c5124d53673f2e34e5def40e1bc9eae48c6ecdd8f5df33d4b0aa99c44a020eaa71a55f7551eaff82fd4dc40437eb9ac4945ee88a9a86ff85fb5c9898148943b1dc66e575800cc944bdf13b326a73bc6120f0698293d3085c78768187b1f5bb3f4676e36353ba1adf7a048ea5c32d3bd5f85516076b57bc86e0763a236846978656aed2da1b30a80b2e782f6cd2353d1a18a18ca6239b3439866d25b5121fca4d685ab74bd1734745ec5e6e1a638ab7730066ae17cf1b6fb5e8c262033c5a842cac67e8d59f72c06d5a15ae544f5e5cddb7689bfabc4af0ac91a1ab42b4a1433cebeb8a3984ce05544fe5e61110f258830fba62d0ecd4e2e558aba27ce907fc97fa351c53480de90c5c8aa0f00cc98fdcb46c5802161083b0b1054c2f20a86c8e7260b0510d5459a84adfc61c13744392af1acf6ba373d060eb5030862293ba16133650c6e5ee862e59cfac93ea9a28b2440de6d0f010e7403d8762e59a0d6a955b83c47508c21e6d1ddaf132bcd7540e424ac9ad2ac0b1fd87b6df606b1bcd42f43a33dad454c1d58032861791e568576cc304ec558b8f3c1c26184991ddf30d8808a1a97300ce03bffed46782d0ec56a037484e212e64a46c087cba18442ba7024a5375d13ef019a05aa8b871d8854a6b398df4beec212063d38e62761c97d855b744ab79fcec5c0f1f4d49fd902a8665ec84a7360c631ad43106bd2b4c19fdbc478d1720726013478724597ef4e404dd20965f54f2e473b1c805b9e3f3a50c2c30c86730c7933bf14335d0ede76334334931dd9b5cb72300454fba9611af07d02c30d508bc506679375f711b32ce6a16c79762d08088aa36b6e0a9dcdcf4048da10f71a13d7bee6407aae6b922763a594acf2846e7b9bdd7bab0f472011b0ffabeb6bdbf0ae851386f58bbdc6b9836550c6036973cf0142443a317f7a0060ce06f76d33c9915cc83d9641d7d47a2cd0459fc8687679b5fda9987c705be23dc3f80fbaafc5e7bacbd43b8677eac6a2874a6dadcc2fd6230e0bae29651f5d2a9594aacc450c7a3d4cc2f86f6188c811e9e8692de50e094a36f4470866b888596d6b45e7bd27048498903f64d1b55c1f62506977fb9afc2936769029421a7f17fad64dd363f65a9634093d73e68ffa0d6044ecffdc57708c64d3821333478444e815a225531f6f71015633fc2354358cfa751ee5603ba35969ad32af948bae1d46426165c44d2a050920e83a7b5a6515345384b61a13591f335f31672fe8615b7ec65882195df0d2f2a4ce53117a334781179d82135b41f3627770c46800adeae8e16050800a1a28226f79392775bd48750efb17ecadd8fd1f1a2099a7911c1d0cc1fea840dd981de6b78aed2552b859e1d64d71a5cb6a029e50b1e4e342cf762a87842a0c844c057d6d30e2ff54455e45195d575970a5da87d1037f0bbd89dde527e37d8f5932c183fe5fadbaf360753383c9310a67eea2f8989eca5e63becfbb51d1af445bc5818a38e46a1d0cb783d7f4dc70ab5e246f38526ca322d3ef5c5a7e784492c1e0320cf5e252aa52c625cbd4b5c12e523178b0acad9c06869799c2363744ef90c72fc3a343ece56c5c374907d280f43ce823583654c2f83d51e520c0a71734f8092939d82e239733b1921c9e122279a554bd421fb4a5fc08dc3217afc17393f1452136360f98a0374750c5bee21b191481c2e77754176440841458358ccdc12b1a6d6301c5c84f03964526c68307dc398069701836f6c6525e3fcf10485bfb951b1b899fd6c899a122a77d3d625afbaf8261fc0645734768cf3dfca525540014b08bf8ce28eec1abe4eaa1a3edc13e66b415d33889d029c8a6f33f0d20b7e53941f74582a37914ed023ccfb5a4294368a65818f8f38839eb2c94a26421edd4be3280d7c9665a429e3107d7e886995f970926c8e019d0d5fdaad50881e18d165ba4853e55ec3006a8e7f426cb7cdb24fd8782362e6205980e255ea03c1e25a3acb1322a78008d026e0fe4d68d05648480bd9838200108a7f15dd4b21512b00e97e7f85813bb25e7fe77ea3980992ee22e7c77bf168af61376142b242f366446204c29c62e9a818da93970afe47303b4ab8898396dfee0256191425124e86eeb0c374c208dbf41b2abd843928d11e96763bb5ecb4943170147a97abcd7701f936843bf160065809221867cb45e2003785ce405644860c8631c6438a6056b87d9fe32774c5f583677808364765a97649a9d7609a9ec3ede3aa63b452a010978fa33daec987e6119e77f4c7fe90dbb5ccaba2253bf7c160da065226c7d0152eacb327d20982e9ffa64be02601b2bc6ea209b56a161b64a7fe3dc04d2fe75d0ec9444e6d67e56d8bc15f63e03981d971e4aac82070d15943292c31f05896fc8ba2015629ceb31e7b83598635a0637d5130ae36fabf49c780a2f1817eeae04ca90e956151b80e2fc6b99f076761dea3531fa74abba74f4de43e31047613680d4e44dd10985505bf05da1209ed34b4bc4d5191b2d2755811242a81d4021bbdcc2c67ee8fd217cabc8a04475e4ee4ca3363d03e42f2043a1a2a91c735926345ffb54cb209d986df4a76a117b5333468ae4e74b2b317ed8d2dc5a635853c4fda01515594cfe65039baaa624fe10643d6ad088ecfdaff3a82e46099d55211b3a03f3f67fac228cb3ae7fef061ef9d43fd05dbd230ffcdb979d960f5a89640440db1308f55b5879f702c024b2d4133cd34c486cb86075abe9b94fd9e05e53e8c380e0430c45727bfddca4d083ac1d2214084b2cffb543af6b318007c3e4645ddddd9ac8439e097931101679b45e4fda083f20dc7706c4672efcf9994cac5e7324c4abf16f11509a86d2f0ddf4aceb4db0c65e3fdca6bfb28389bcec5a9d5cc34a0bc6e0bb796760b905cb8f72a2ecd4d064e161242f26a81fd63489c4a6e9d373941305a29a5e9699b432e8ebffa0714269a9a1d6b46aa5dab3c2d78b67f8d6263a27660cd429c45b803d6c138a1124a8437b0502871c45351d6c09c42c58a7a15359d37f9d3d27accc505710b53e560437b51737189e7541661e3a9047fda33e825d0b6cac2c22fe29ab0cc2f1cb67f3e7975aec51abe1b5eedc4f4cdf1a344f048e12ce0d6a4dc587a617287c720a857cf383e1d50c4e85f899b1bb6012bdf83f3f1bd4efce6f0d6131c893eb1b88d37d5b3265125cc3fa61ffb69f6d700d91fb6a36447f2f73e688997dc2e0317803852ec235c4be10b972d6db50b070c13550ea70047526c93f7a036ad8b140177002415c43a437485c43e41e4bdd431502c24e710d2a13aa186d38b3b886986522210ae98d710df101b19b708b0f5d0ffcc55e8b04e2af811f3268a033c9c4209d6e91cae4ef10b8349c1b6b51992a5a59fa4882c3652ce239339d7b37b1bc1a9e30b07832d69f46a14e08041cd85ffa099c1d78b7ed834c1ccab006fdb927baa8c48edfbc0ecc6110d0172305c8e580a4c02cd5cea2145a5a0a736737e203d9971c1ea23862cfde44fb58fb23b3623206853460466110804e44494932a3d0d70d89c28272448aaad4d788ae31529314761c1e6f8532c473ab34699f03e683b615fe15e5358b79c892ae875698e083a938e2020d00ab83437b6fa1f7c13a2a2a282fcd76488ef332b560fcbd06f696a3d9977f433e2fbb505508d6405a29a0cf045262521b08d6b3019a96f8ca37554dcc16cd52c4f9e4c0613430e7567fe34943a05090905dcf63767284597a19dc5d3bf51bac7836b0563493ff345d04db4cbce27299110ef108eba789da7c47ce8da52378f0afb1819020f7b48c38915a89d30faa00a43ac5c5cb3242577fa79a24b4cdf30388f0ba037d528ebe8f6ec27f8e492072f7d70b28a37baac1b8e3c55b6be6d43c1bb55f559646b82f6689c24eb3a16f1f8b73887bd51f2ee702414be6aa77f740e600703496c50c1a805fb815a838e1e238c76754412f615a7b9d95e191ce4822792dfb8124a9d96cf1c04a2b7d719c59593d0685df0e3f2e48da4a4a8a2221083c1b8de780e5a50170fa8493c13e4a75020c7dbcdd345caa072fee8ac5ebc266a5d85b45d0e6ea91714d4d484b66f6bfb087fb00dd2813c36100d682244c6564c2bd232791e30305e606d752e752a38f6de09846d21f0d0e070b336bbd4b520a60118bd8ec7d4f26426650a74e4bc02bb8f83e94eb83ba856c0c42a3c07de5d5d6ca8a4f37f0cd94656cf2ab3672a4cbcd84121bd119e500d8a8b4917b313ea7de20d162e3b2c25e5d8a00bb68468ebd64333f72b52e6ff31b938675ed51e3a924defc768b98ff5095ac77fccfc8d52da44202301224d85f5be4f79f7fb1b5b8e54d18d1f3211decf1c71e179f8866d450153664ecdd65ab44307a094870779db3cc27405a181d8b8e1880976861e494d5c0839b7a74e751c2f95d5a2a561c9584188b737f980118b5b2e2e7f1d6876122f625498809fe4ffad2ea5f2b9733ff158fcd561f536aeeaed032fce23108c4571eef12e95e8c5be7e6923141d14680a67ac08fe733e4fe2203125b72bc6fd1410ffb3f3c14e7b478315aa0f9f60c33c73688f7d43620992bfa4a1b00c9ab9a7c3cef813e0b8559fda6208cddf56537faff168c53c60bb66e70653e83b0142299ac671ea1ff3cbb1d84196fc8549634f0b05a89060930565fd00262dc92cf0beaf5ef26a5ec92067a7ab03d8835dce2dbe64d3efa0826561d9eb6968e411e0ec120c95b6b34bd7ee9f4ffdccb6e08697b808702c3616b6a2d57bb7503b81e281fb2a3f252fccd9c3dce80e3560d2af0bb2acf3ef07d83a4014370eab5be66454b9d9d93f80daa7c5fbc3524f180eac71cf5a43562471d342d2caeab7001125d6deaab9689a338d7e4f1a97bfab342815538cfda5bd5b4ce42cd80fd1596d48d4c096c6b729fd298007b03d5f3e1c5e5aec482fbf14dd7bb863d0c9453ad6b12e6fd0359173c0a46c4c3f3705e5561658ad2fc2457a88801b56ed50fc3dbb19899d6a8aef0edadfac0b9a507fb8efbbf9ac43bef6edbc565537a8f603da86c9dcdfe0d625de36907d3982bd10f14d36604d59b7da19f0559b32421768380657be3692e684153d0166cdd18e50bdebe322a9c233c1e2786764e41bdd295675cad91ddf7492dd24556739f86260b1e5afef04cfe8e91b8a69cf3d684a198546088f540494cc1105f8c020cb5b8ade35fe8f830217a3b1576a9f11789b30135591f135b2f62178e6d36f3e58899489cec94e8b37f56e9c91a334110e1a6a205eab3bc4f01ce69fd0c4af1952dda08d8a21dbc8149920220ba690f08859b775f14dab7b17f1929697a6b01b9f18595f0bdff77261d0731dfd75c466ffb72fe9ffd37a2518fc85f0db58d9d341479d6ab7adfa2b11c4a7194d617a085a8f1853bbed1e1429de63e9a317bea03442f94525dbcab32d0c35383fa10da3d8cfa0bef39b2a80702cdf7b65546d6af4480cb95a94db82a81f6233d1d8f4e953dba37f1f680a81b3bf4c3277de236f364b25e09f24049c20200b07c760fe5cbc6e005f705c3f54e6680830361c7641b293c49c4367664c5df3dda56012d1d9ae84b90fa38ec20053b83ec3bf67ab5188b5bcd1bc397ddf45acf98886d7299451a8e0142abbf13ae4e1401ca4c1c62d7ab04483f859c14a7ebc91fcd09e8aab661fe21b7b87c92c220d13c274f421571a893ec1e68b5ee69d5401a9cfa83b4eba7b1eb55644b25ba7f1612afe6092a1d22e526c3eb09ded9407d3ae1f07a16d26a3e3f5eb68ad7d8386f6c03ef0ed1856d0c1fb5aa43dd2d9270220b60117cf2e01fb1549a4e07bd5a9b4885fbf3158b3b8dc5d90a14f210ae5a630032b45223cc9f98fabc713ba6febfa2cd52703af0b67ab8cd8d8b235b5b50ec92b2054292cb9a1f5502140aafc75c23daaf3c2f77b1fd0c1157f1222bb005d506abc0cb32823db154b417d8688dbf640f31d6b79ba0a42a73d5f56b36ce7213d46db2b4314ac69180b2683519ddb97442a5410445502cc4905515cf542de23ffe7cca6ae4d7ec7a5683ba6960cf04d51b07deaf07d5bb784b9d504944458490ef83e761ab7b1cac0440572bb643961992a5fb854563ff694803f92b867071bba5e9746d4bbeff44ff214c32ac28f5c8bf8e2596fc868ccc0e78809e9d5c21571a7f8da7ebe4915d83be7003df915bf02062b6f04c9ab4409b82be4b449ae0d6d280c00e3b07da5e7d96c367dfc7b17cfd7dff05aacf4b524a28644089fed0b8b03341a0dc2fd45c7eda60bc2893e3c3281d49fc738663ac01d32a2bbc1660a2c7e58bbc35f502b2ded2a5746f9e11ddb1f2eaeb09231efb72b3e98536a0ce3657006dc64ad7fe910312e830f820b49a93d48cfea885b75a8901ed8880e25c6c355a22de256137f82825a647751f1c47ef933b414871fabee41829ac21cd9059ab07fb0fa1df4d183874167ac6dde4aecefec238965ce671980b59ec359ff61e60da1009c8b13e24e1eed693a2d5ea337dbdf602a9647c22725277c850a2478582a107bee738b5e2dcccae0effe2fd9c2b500c3403131b2e371c70977fa5ae5b7b294ba84642c836a3f9205f6c4988e325b1f668d5950574ba6fb392aef5d1413436ac3656e4c34fa89a4fee70d432cd2099a449925251ec1c40063642d74eab862aa8a5f61e5830046b96ae755aa8a05296b9f074fc99849faaa2b26a170e564804fcd1ddd26e429ac198b21b79101ab07b2da1c85dc209820c6d53cd9d247ce0cd6d91bca89ddbe198473f4b48a6e6a4ac51bb2666418c49700a857097dd38b6412d934e0c465892db70f825f6ed313f9951eef0c6cf194b6b9bcee57fb568040db279bcb5152b774df7ae67339b2a04f44e8be64483da0a26a43a5d6b196259e3cab9658c43bd5c0baaf05213fd3a9d8203abac29429e18efc3d37f728823cda19b5032e36d683622555646d0b3e39e5147a71b84383400d0dac800f98bc10df93e8aadbac8bda34e6a98cc5e6152415a06936105b72f3ff3fe75b6b13f53665f4fd08f2e073b0bd9ba3c37d4b812df9dd93a5843491ccd83bf88bfc2621d289fe2fad320d839f490fd3e18e80b7072bc673e74ac999468cab83a0362d56ab4cae7469b3c2c738de41b3572607681568c9c89f6ae1f3612c5b261f74d142e1b0701b4f23d5699f2d77b9b00983e8d2776fec8f8d8f490fe4dc78c0c81866996f94a6d0059c24786ad9e3fb090673d30fa940da600853ba4e7f16762c0d36d832a164da65a4225acd25da5e9d9b37df95cbdae0a36e9290502974eec82bc02103124cc4b98c1e98285844eb25071bf42e5ab5dc59f7f44925e449ecf92a61a3b6fce50a919a5b2890dbeea94714d3b42c19b36aa67c8d20ed5e81ed45765915202ebaba4e90c20d6aa36c349af5a97c849f46224ee2f4575696417a12abf5246ea821036d35657b58750bcfc88abe15b42be8ffe5b612daceb54f0ea2abeb47629367313b66dff35816a0a4113696d5b8c3785d64c099164b11b1189faee639083bd5693ede334c8008d6d29f15679ddde654ffc82eb55ca15bbdd6eef05d78a666a720e33587340d21ca8dafc720bb7e0a0f0dcd9d121ce1319dc594309c32c4f11c7bb2dc09cf0a15583dd68977969348825266a32e4e71410f0941c6617582c9f4979f1293c046d4e4af34aa2cd44c7031ea3abe19ebdd64cfb9a8430b8f06e59c6f80d5e1ed2734ce67edfc8f9fba00b5818dc2df9828570cd22984c6f7f101bc23e497c7ce885ff23dd9c2e67c51412e4e87b5fb9028147f0f710c7dff954b937cb0b052f7f01b27bcf0243806d1ee76b86ed3e935463b6bb80d339fde80aed336acfc19978ae3edc4358fa4f5eeb5e5d63a4f761f3f7ae193a2890320a8b30ad5cce6d1f009bd0d0f3355cc90a21ff621f1e52b8b99034c86c71f1ee56fdb019a979dd5ecb451b159d4a0213a2204e05bd1c34fa163a62d967acc748596854d43655c1cac9dfced91a76ad24136079f36d0e6d361b49326dae42c96ddccb5899c976ca6949f3e56ca7517b18b93bc9c49129bd34856f9ac9eaafc723842c573da3eb082d572894c289ea6e98da937923c9fcd605e044a3bc819d85a2b947145e393e2edce937cdf166a6082c24aadcc19040cb5756d39e8d01d78239c6e509792e74dc8d38dfc07622b65c18c5179e77024e57480f8c02372ab8d56956cc667571ce1c05e2a8904b7f20a2c8b14382e5f64c313f6843d767a8bea2ef036bb63fe8ca094c2006a7799187d4689ae94748715cfcd5ed4421a6c3c84805ade5f97ca66f551b21e03c1b20691949ed39b5ad484d129b3235874c08f1bfa40151de330f97af1f8f7518ada21ba1224e9c4f306a9f1937d158ea0f01077027f521d46b3c32f78422d1ef2728c361bc23077c20b60094c756193af84cd9f05bea5a03ff502a43f040c4a66b42978d8071045ec53d6421b7e9225e3a28635057a3026f9b68c59c7c62636b47b161c6bee6b1eeafa12df43b391f496c56b0f6d573b164711e327e69eedd7a0a657e2957d26237809bee313a82afea26defdc747fe41ef5d04b73c42e98515c28be74cc7f629b2e9b0c780f1d8d5a1658f7571fed36ee8a89e348d8f9fc7a330061ee0ad0d3c1a1f90dc255156d7d08ab338c1c43e55de8ef92c1fbc4a0904d3add33b84fbb3984aa5daec52b1b50f816ade0ae91998cf8d98e239b8912429c542a7d79e2107947fda883f1c5858e6da1f2cff0f3a2ab7ed3465c9ba7c2a6624c3e863ad0d3c32436d070e6c43efe7065938801be552053fcfdbc5ae17f26566402610943d21f732ceaf4d1fb15b713a3b4ba69a9722950b89b72e8e3c5ace8354632b2e1c7ef6d27399afc1844cebeccc88c2543280cce4bcb27a194eea32c67227b1be2589e7bba2ec18c77e9d8e7dc01cf334e646287445a97d6b3d75b3a4215ce70c3655ca86e9c9762f24630cfc1dde737bccde810a87601f609c768111b7fd2f4308135e1804cb037f0aca8abf1b7c50ec971859780164f9963e9bbb0406071b52eed89381662451bfe05053cf8bf5dd227caac7030b85067813b8ad70f8f28361cd01da911a60706992c6b96582991fd1d91c59616f7268231f53b8785ae7368ab5476b0d6041ced6dab156ebf096935fc40930fa5ce5abb3a8c0522b6304eb43b6f7188b6f9c0d1527190ba82118ddac4c37ad9bef90158483bc50aa2b5a62e6794828bedca518d036b588eff7a8301ad35084880982858b4a0caeb57897a5e8751a959039c6917e7b08a67048a38b310b4b77681674b3b0b6229d728303dd0aafe1fb39f8220c938f93c1768b69c277ad9aca249819785ad975d1806ad45b3819c59063998311eb47cb3112f7476c1e7ef664980e0f8dcf9da1a914243de8ebdbb1708d8dd1f4b8c51e10b8f5abf468ea07bdb6d195cbd68d5a1297c40b6ec6e0a7dd7e847c7fcee9ebb21541d4016de7888f3ff2b4d1c95dbb700b3cbc3453bb660b016d5332c2cff9960690c3298e3582115cf6bcc258b00b30957f46af17afd0827cdb896d2b69e10c46c7e0d9c1f6866465d3d79c998ea2572952ee744828798c7320b623dec3b3fc73253f50f730687f3c2cb9a35b1418d9f07470ec33a0e48eedf650c9e82d17d9c31839e2e67521e192e18966cf99466b04ca229d9c6d8a139e9e34fecb74f232c5df4f2ec173adf04c9a7e2765a8a7fb1a48f386da35fa21afbc2c5a1126bb3ca7ac3d913869fd2dc0250eca1935f6bbcf9938df271360b727cc5a531bf24d994da6a9f125fd1c92897e1d864c267af74a0816aca194775605807b146a80ba50675e23167d7808e7b57533c691d6ade106186974ad04031eebadec3dc78ee5e025670a2e856cd0b5081d755b49d30ec15822ab695f2e720b23d868d93086f7b9707c68ada356141983bd798e57d8f18966d3daee5eee23f65bf79c7718f1bd4fc9a6adce232eeaa0540ef37a589e84ce4985be4cec2e8f4484239147e877392752dc62ce7164f598edc82383855d5cc388b254ff5792d462642bfe9a080b42d3bf468cba99a0dcc80bcb2d7031730b9d2e191b4642701b9b31e10ad1a9f6b8e7cb34fbf161db079c45187478c43d9f25e5d86be996e191cec58a27182a25f61eb8756a8b483a2085cdfc1419881b54822840e67e10ba138655b27e9a7afb42da97154df77a6d226077badc4910d7bec82bb3eec3e06315bc2159697313ae255a9770b0ef314f936465533509f0a34c8f763e689693d929a793308c74bf26b9d5c8191a7eea1e054a84b0dd1928c8048298b8f873c9c7e5c00568e4f5216d68d5ce91b61172b2f18449174327e7b32197140c5ddc8a4c8607d7a10d03f4133b394812d1a4a9908e110ca4dacba8d6c69be3bb116e468bbdd88fa4d0cabfc8fcdef6fc5add87c3bcaf4c1462be9673682853ed0d86310c89c15ca2440f9afe0f4b66259641c0689e73ea1c45bd2aedefeb08a853d0c54e84904135ecc84282ec0c81ee0236dba0709bb578112bc2faadc35e111875491bf1f6542310c40ca03575d3c2b7f90cf019fc2d9641f765b8ea8ada169120713925c4868904968cee7c0904a8ee17156608370b3128e0f55d39122a835740ce6900c21e1b80b62e93a4bda2e3e2b9259b584eac6a53bbb80f05382cc94c553e6091c36c20de70859c28dc5d27e0dfa697892d9ed773d1fa3c8516f4bbd062fe9edb6bd751e6a2dd3cc5a1bdfb920e0db1237ae1b641b6b4a6f7124a918ea17cd05b06f2873d0d7f8c50d3db597ad35ec21b3ae60c8943ff6a8a7736b17e846b00910c926aeb49a0d3cdf02425786365da989e190569852d371cb0a5b9bb78f51e1da9862cae324db178e9224a8635850b0e0e4776232299786a6b1bf2c1d1044abe8822931e7c65c8cf86423907e0daf0df28fdc773689dcd87f7392450c10071e5a941e09ed7f66b84de2aa514ee3e9562a2443f26bf81e9ab6e9b6a1f36782f58572dc1bcdd604204751274c5316ed9ace0f752f1416395c17e1de2e2049eac8351fa5433000197cec5f47771234e61af786b1ff4fe32e9843fafbff0a59ae6648e14143e5ce124b0e6af6fe11b7b2c377d10e039c2dd26ed696d11198bc8d04ec2d163835a329180834a7ab079b61436acd9051de143d9e80b02248b156de48638466a8f3dee65f89b27929b0541658b3244597db2aa729c4fd7f9bd33088cb85244c33afeed38e792d1ff2b09ff4b27ab4b0c7f865aa4f5220ece4fd2a4018907185c144fb4d80f8d267167833398b6b298cad51001db033d316db0dc1562cda94a5798a5c1fbb56ef02d8adeacd6474716b25fb700a36e4c10b8192ed456cbafc9a69cd5e5ba22ff143628b094c35fdfe1595455df2cd118f7cb4951045d6d43eb4a46938bd47b5e2c8458785a4038d39ace3d93f2cc3ca905d945df9fcac4f5abc1cfdaf9b12a41193feaf05c9de37e1c273d3bc8293c63112c6a4312fd9e3b2ecd25932af3d610eea148e8b9ae889ab834100ba106a1fdba03f790743ac0fbc6f096d0b0c0e93269a1d4d17b660fe3c55142e393e0aecbd88a9683dbe3fe453470922070020b08fd44280dc8b17d12aaf171c633767b697e27c217e8264bbd3300f3b8efe4f00088a85b80df373e12e782857e34e55aa8c607002ff54b5ffe72c55a5b39a085ce2060b2bc30bb22c854d91746936ef8e206667027354811b600ab6093cc9545bd65b03d92186ac6d20864b064e0ae3c9f15887a2187ce2bd20f2eb020cf5da74188d1d0064dea3bf4d953baff292a1e136026d41874436a4324c5847030e6288d42d2656f42e2e9693c1a2f3755891f0e2fe80d7e4bb915287e37e1ced11bb67b01a3c85389e625750f3621bfeba2bd4f2c54f756738ea2fe73f376f504f8c5ec1dc3e6c7d3b8acaaca5f9c85f9f384d4a32e220411c69b8e55bf67068bdd1c2c6ede823428f0b483fff5241de1c60aeb993607592a20f8d94d8dbfcc86a7d4350104a2fca3f3f384c4bb5dea08d047833cd46adebec3c01027d5012ca7cfd3de066521d8029e5089cd09c1431de8daa1b1b5720dcac73534409c2955a33c79dac10459caba4ce2b353527a3dd11a9d1920a8d30c5e24a44e17769d56f3771f0b50520e2fe21b756aa9766822b6b0d50efa4810625e3f8ebad1e7c54c5ec555c507b3db7560f4c636b55fcd6dd3fcdb68adaba3e2bc227dd26b4deed48217a0940d71ed60983245c73834b92a8422ade1b4ac5a182bdb4e2d70d6026f173e8f1edbb3e37eb3f07aaf3e8957854b689e790975010f136e989f983707271ff347215c05e9d9f4772093ae4b26a0b5b0dc0cf4dc2e34281ab53535de510504cb2d20621297ecf910303c51abc012d879291194fba5b86e3337dda0f6c51d40ce5476c4dbd18cc65180f65b98d0f57e70982d75799dfd625c0b7b46c94253a1c1a421e23bf1e1fce4d4056cb50e6d7e2496de50924de3100904708e707f5d7a22a228b2b71b37d4fe85fde5461d55a8620320274210d46e29cf4a72af566305a599c93321b70eada8d668325b63cedbe108298922b7eda042870bf9278011dc69a6033914bec4102f93ac9673aa85ad435301d133822bf3c73f34d4dfeb1628e9402043d895e4e5a9c49591057073d3ec9f4af2bb5ae81b1d0891d96e131746bc1708a5256f6f1a572513f863c0c5d780f9c9d80e4babadd1ed42fc546260f8ddcb47d40c98c60e484ac7cfedf25519fc6734abb65c6370158e910c99591d085577ed88c826e7ed15231c8149ed006a0aa6d50cfd1de1120941f0e838e957935187e3f372179a38d21d49e4ad7b75e91383594ce712c441285a491092ae584b6356253dd64012c64eecbed0872a3db7d18c350889241c368fdb463cba77cea712439e34308371fffee7944bf58d0863ee3502088dff9fd263d841dc523862659c3ed4c4814c0184077610c702ab34d5f9d301cf037cb661095c22943fff1f7a00c58fa9de4a5618f4a5874b24b26751ce22495f054748536207d4ba3d52c4c80c88457fdd1e44a308aa6e4b5f4cfd716a4d4c2e551cad9ecc37b7c49c1ced38010b08f1a8115f55acd3e577a8f8ad30085889716082ec4090383a882590220b9eafc6f753df95c9f0a4797086f595bfa1f5f73723ffee40602b1623974d941ed3ebe25491fb7834b8c83c857d465acb490ae806e0d793826ba375e19e4bfa704c4a778d4aee212a18266de634cbd43e22e3dccdbd61e72b0b565a1bddef495e712a27d3d4cf1de58c65c86a4cc380b0125bb4d64ba69d0994f791c2178d79edbbe646b099a957c3857390d4ee73c58ff772ee0e3cfc694e4cd0e722c0a835b8102731abbe07e83fb37d4d3e7683fa0cb43174228ea0b35360332d272913061e1f08225dd1048364a8621dba76e503d12e1166a5128042d5bdf1bf5eb7b39df191e6012521feba971b22bcc3dafaee08a972e08d3b1c1f95763196d1afb3c40af3e89a3e451d8d23d49eb648fd4d6c7d8c135dcf8b6329c71e8788ab957bb3264f23691c27dc4e535529c146914ff961ebf5c02bef01d8e3a089577a3d48c5f40ee157917162e5956a3a8b185e181b9358e4a10cd34885b8c4b92859accb9d3b185780e9a7f940cc8fe088bba58f07a3a377e2c2e0a49a53336b050bafca60dd5ac57540ea6e956d40c14e604642525f7fab1b0bf6131b2abc74acc7afa3e17aff2c4ace88e2ad1b146efb154ca71bf0f4e0cc72df4c465b5d7c733f7b567d5958ff92dc870e66ae4e007d843bdfdefdc3213ce7b9f79601ae87b8a81c4822899b2fe2e0a24fd50af26fbf745d2af35b033a1808a6e0ad461f85de7e93ee0ea2e8877207bcdbef4b5460b86129974ac94d5dc8f43b6cd2e6b0c27c77dab3f3c69d9da50803f05e53903113e0fc1fbee2152c900a0a759abec968caa094606d310f68239ac2d9ae6132bc821626190b947e225d180e56e9fe7ed3767608b7700889df7b5b7f8572420b028b037de61ad7c155ae4dab942083e735ff355cdba610fe095fb4b28067931b4c1541cd90c454f6b185f3a75fba30e6c3589d30583bd9fc0a2ca138ccf8017288d71ee2edfa7e6615c18aaf4e5ca4b39bf27611cc2d63f7fa02862e9d6864362518847122ecc2fda4144f030232e64cbbbc0ee8e1b6d8fc1fb1360901aeb15c57a2757c0e74b565a8af51f72fb848330f038e450db3989d0c1de10e75a9e89c948e23fabceba93a66ce20497b03bfed7c11ad5d9cf2d06d4d06e2e4a2b523089c633af71c7087d95abcfe7892af697a4cc036f425503347d7e35e2bbb0f5eb39f6813a259e7d965372fa07d493722451eea699850b0453a5d01c665f3ec5dc87180409bd2640c80cb71ea33e619f5d2e83090feaa00f3e4c86138b360d4df8765ef9736b4943e380b212f619bfc0d49bde44562c9bbabc96728bbb8df295c6937e62b96e000d4deb9b6f2204ecac0413eb181335eed4da85093aa805e4a5e05847d62cf185e6e8b5845d402b2afe1130f67a045a5d616b6198ad638b58100bd62c0379eef634f16d32ab5419be95ed95500d138da6813420bea81c5ee573d333ef5caebd19a2b900d25e8767b7045288cef78f697184d7f3f76a60a54b349b4f84bb9acc0d4c05320a83e89cbed9f81a92b3e3dd182a87d94352733e302285a6efb8996cb633968e0a405d9a02bf89f9f98632daffb6b6b8b96fdf615473156acb5ce5ab4287df28efd8dd152174a82051a7ddd2ce70833befdd282c97ab9e4f8704053fcd50696b692821149abf1474a1fd3d98a911ac773285d9fdda51f09565263b8bd058610afda62913607891aaee39cc0f302e6371ed87f3a2ff09947374af472bd386bbcdc2bc18c23c069b2eff20d5668ecb31069f988d72bc1c8fb79595ba599c0356997a68facd4d2ec56bada3cd769d25643a884da93a6f57a94874a9fc050dcb0a8c1525090737840ddc282b34a06c6774dfb927acea4b3d8f7709330cfef3e38c7277421ad13914c892c1e12281c5e7a85beaaaee66ca842f964b5a2b310e61844f6571bb54bbb55323acb5ae1fe88d4273c2136e7c9806c4bcc74d331c68985504a768cd30282a62d89f720624a632a64a3a8dcaf372a33bfd57c1f1d0e3f497757d6c1f32f34079de082d6dad1839c136aa661529c39fbaa24cec658fd890ef2f06e550bed7509ba199ffd0eabe554e7b4ddca11c738901a5de9cc4cf5ac6b2362bcf73a31453028476c15d4def6eab08e85a983c876e0465b908b341089bb1617880bace34965f70a7ca9a5ee91af9c8dfd355e8a09e743d1fe722a5b810e06f66d4a0b9137339890abdf01d297c42468671225e792ab98ae49beb012c7d96d37f76fb55d0bfb4127d3dc2353edcb5f9040c7a351105c04d3139dff47fe033f5457cd43d72a09dce8ec34dbd80df5fe1f3a48ebd82e03cc80224b2f8b2f1ca7c5d423d254808abff847efc9759ebd8ed79e0b21f7d891fdeb92ad326129c5040f0144753a083aa8f298a71473a3d022cf8d8fe052293700778fc802cd4229407ececfa093241cfd5a577bff6731892bf4a01ef4b932c50161baf84ce8a2358d20a1f5038b03ab8656f674b52b0c65a1852e3a79a8c70a0169b72d6f847b8cfc24008f21726ab99a6258b822b1975ebb99c4d64aa284d185bb6c68dd5c0a24b4771493066822290a647ec659f2e77cefa4fc3f06105071ba9ad0b4e7c34d864584ceabc010f16a5df35cee7c65757465c0b3d40562b8b84eda3992c9aaea6e055c4e53f13b8d9a44de473973e41ef7ee02041612057b9be8c44926e13932619ea0de9d49a7c388a61a1508dffa7c26b553d134d431d6206875141006b3110ec1291a4a7d864b4a8ca7141dc5ed73f814eb1a94433155a2e7121241ed8346eaaa3616635d217d833eefa77dcaa8ffe59531dcbd050ef216fa96ed14f1732b186919f115f0fe0b0a2cc6fd08e327e31ee2993009e89fc2d6c45f406617e0f26333450398ba453a811ecfa19a2747b24fd97e3c33516ce60cd4dc51e80ca323f3885ad6f61ca197739532d7f0050aa50fc26b9534623d43f7ef7269ed95d1c0309f0099d9a1e08c86ca5f6248807e668cb1a72f55364ec400c64e1591e4db7c6dfe7844fb2a3441687b3f0307fba0000b2c34b40dcb0814a93a12b3644bd8b55acd9b19888538e9722825ff5206665dc9b73b7c775b76acc1fb7be108ad48c97195d7375c8604742ad45db03dc1e4b7e80bbc0e629ee9cbc0c8ed972e86a63131a612384de8bb88416d24d6405df9e6e3208cc3e71761ee49a2164e5be9a080f854d51f4cccaad2614d8ead372b13a67cb20d50df164498b6ec4828da52f07ab64c30d1af7f9fc6d75a9745fa1e8b72b4eb10e66b3583d7e9d2543f06f671d8a52e24bf11bea5885c367531ed84af4d9d1fa15b6c2f0d7fa0712ccb291af90c3a1a5cbfbd3ff079ba7eff935b0c0a1946e7115843e7d85607ae6ffa37272410a32ee48302d02bc7f91b3605d6503a5d4c25b8961302e45007d9b4ec5efc3e3ba15a04e3021149a37b92cd9b333bc4c1973799cf445c2146e3a0427d4540bf2cc6d68ef8ef7cadc76897639f8cc4bec76aae8a196c1f2b8021771e73e5179015a930653b9255590535a54ec9bde931d1807490fb1d659bd2c2de546dc83ea1a40cf3bed5f350a0e188e74d187113c1b9b900004524f2d6138ed1a8482dbef32a00d60fe8e75f339cab5c4b5b3c54085d22461fd3d808170368b5733ea424cc4282d9fc5c58b74d2164a3e503a8a030fcbce0c2b9686cf879be4021dbdcea16bd656701f3f3906cff05b99dc087de51ab92403fff115dc516a628b98f0cf91b993057391cf641fdef1772fe3e2dc06587d4d7800fccfffbc3eefd0e0ff8e350a5c49808fe6f8b9ea3bb4ffa0fe36f303e20f49d7373a9ae5405960b6e69ad5347a09f5e519db0738c4ec417e3c2f1dad7fb3c075bec032d683c4f6be9bc362f6d33df2cb5f1276c3757d011231cc0d2f48dc03e90a353296234de68f5458ded91d19429fc7d22bd4158647d6cee2a55dcce2759e97f90f43150f7af74592f7532cd136b7ccf98091fdf45e79969a109a12b183641832771801a40b688cb433eca9d91508bf0f364004c87a269eadc53be222410cb7be0ea46200343f4fe71a1f248081f81e1aaa99e5e4a78793ca6564f601534db79e4c029998a106f0f28407c08a18b3200269a89a5fc4ca66cdd06aa366c0261f8be7fa347c9acf9bf28686f69cb89364e83066c7d724bb757d99189132bb6b1fcd390fb286ad91523d40517617c4c501952ef1046cec11b5457c2e8f6bdecd1a9d4f213d248a8be89325820459fc7f2e8194281a3eadf88a12134f11989a45602bc57e6646208a4ea2c8712bd422de466e5a6fac810c4f307051f439dfcd681eaa9c68d5d84d4efc2ab74363de6600c3489a1a3cca235f49fb146860dfa2016b1a9e6092833c884bb5213e3ae2ff86a779de615fb73119db67d2a27ccd681cb6a0e2979ac3096414e9bc2b087f3961eb6f13200e2e64982da6ae4c84bf42c15740ae57e89dbacefd249cabc2b5ef77ad8b0797888fe1b47088aa09a5c5d798a3805e4646ea01cbdadd859bde6dac89dc3c617b3a57573a03be3aad9f34124cb3602f08e386a6b47cd53d3addb30a889006326e295044bccf316d0e83fc16e671c9e4f0ec38a7bc68641af2ad540e55a1720ec8ed76902700cab0192fbdc827c98593c4c580374c4960b5a54d0c703a422798ca772a01411e91118d42ebb2820fc8f899f17f07d25405027b8cb8b84e5e6c55c77950f59f7af7a8437e06ae727f1ad990003ad7700a1f522046c4033f11fcae4a095362522a0c53ebea465f246c597e2845633317c499f6167faa1a1c593bb2a541c18f8f009b4d1bb32e013606e2011935d49fe1b18d17d05a01cfe8a9f1de7438e6de8a650e862d6ef95de821286814b87999202676ca4b38431aab8f2cdd617a0a524b0c9bfb3e9ed15a0535ba055b8933e0c314b506bcb867c206a09610e2ba1c1ad57618516bd4bbd59835770fed67969c22a51016f86cba3c47715dd0f5fd046ccf00f19e68b8f09e0a0b91a186a583469aa126635a16af2870cb8667a668db8929b2d69e9f4c21c985aba6b5730725ce7e30b60418c1cd8729ed5de075ecf4400c2ca70d88a9e06b5d25e8ee64b16d86d49f235eccba2f6181f024e73777962e0dc6de5ee9636117461779c953c6f027f79600b93e0db0c7db6f032edffa59dff79b6982ecf6ff07f37eac1f3f8bf742513bf0d7e7482c97006b4d7d2306c0e17bd89f41aa22b2f02223f7dc30b82706c992a1a2d921e246c63852790a18be69675d6f302d2c4d7101ada587f3cec21dd81292ee560c62e917381cb00679a3ab49ad375305c80fb587430566bfca617d31ca4603c7eab402afc8ad3db3301608b995b078d7521fcfd97c81b47eba03eff3d7d2a42be884bf0dd94b38a18024868621a975867bff90b35ca3fc42fcb2f627a18a0ff0457a92b379aeb3734d409f857550cdd05f21b10300193ffeceb087b28554f74347de17862e84052a79aa63e5c7e28294e261b629565df13fb4778640b6523df15d1888d69350e1fb800cb56310bec0c6c0900da2f23be95deb8968c0d1c17a7127d0769297c022adced825efa4ccf76eaa6e33dd1b7f68f9c512e1d8924a3c193f120c5a0e533a41de450b6c001739cf15f6fe9bc32ecf5c1ba0c7eadb1c950e4f22c4a6c9740a68a653e39c66e17b4b8aeb3102c95d8d2f8aed1a4560b72d09c64572f5ed125b22a33f1e641b84083ebda0b1e2b5b9b0e4295c9d155379a59b6c3521264cfa7d58a18a66d75ec425c475730179b465607b501ecdf467e45bd479650af14b6a8404b255c0cf12b49daffc4c16901ed894c10b3b7110c7f1107d1561bd5a5e0efcfdfe8db59c4974d872fd751085319469ac9e3308d64e0862e88c949bfdab06220ee57f59e31875bb16aa378323fc412621a86be06a0c3b0757ed4e581a8c86703d0dd284b24bca710363a93616902678dd8c42649a4311f1c9ec541297cd06f4cd360c653ce48935752b7f856e70962b6405c86e978de3765d36b35387fc6038da2a248a970f906f95171983a666be8322d37329c3472a8465a48788b59c6f4cd3b603d7f0db9aee0e0ac2c30648407b19275e21a41573becf0e3d6007d49cdbc359d6534d9ceb1da718d0857f658082b7c6ba8c4260e174c05fee88fb10b9eb28246f3745fbb9690f240c48367e3de44a9933274350047613e72f3ca08662f63ae4d4e499e5c295248db52a1367badd5dc8143ddb16ccf891003122a1dd4fb94b5581aeae8e309aa17547888f8328d127e94cac82c19b847914c094ec470bfb34b2063e93817c0ee9a9a2d68103a9734899e3e1abd2f4086cf782ac22a07a7819b7ce5d0399c602d7c2b0307871739134f44de49802a79586563999a11ef7cde15a0cd9172ea63fe5967f0bf386bb3805fb339030e059be4be5e0ae3dd8f0dd691a6034ae11bb7af6cb4321e44cdb6d19a7531c287d795e5e14ba125ee1d039eebc6280581209001c1ba7aa3d3c7a280669427e67b0033e39f1b6d662917f0cf90098cc522992f72a93037678864211103e8e2cc4264e12b809c018722208c97ca7ca523dae8bd9e092d92c83ae675a3932ad033a79c7b8b6a4fc6aadfe832fe431ca286d8335a6f8838cf7f7732c1692269b1f40c171dbff3345824fe07081cd08084ae090ba114a0a73d1c302a94524b556c1bc4c94b2aa1f7503967120156c61339d4f3bce83760c887ce01392e80dac4898fd483f0b0fc4586b5796563effc5a3106f725204d65b38a00c2f4220e64d06244c10d20e35e2f72fbbd697c029bff859181e4c1186eda4c13df40e54cbcbcd784786c829e83071fceb50c680240c6ee51fa330579d6f09cd0f7fad03ea39a19f57f586de31517f46a0f6c6005da0137407d8a450c6b798eeff8c4efebc8c1a0973eaf3825042c0c94f22fcf20c0d03ddca91253ce2b4a298b9d44c17476c009ff25e0370207c9437e7670f691136d7da0bceb253683832d4deec56cbe32c9c0c20231b34a77b96c7bd11411f60fbf4664ccc567fd35c7d1bc58093712df68527a484b2081917fd8c182fd0a311d629a8f913ff9cde557df14355d61859d22b1584388c98a127c436c0e4d8d8046cf05cca9fd1c622b73dbef085b69e82d32af416184fd6e7d58e166788475ae1f22d2527526c39a0c927ed747e219514bb86e066416b2f63193342dd0f908ca05d4066900ea3d33534607cb34f306eb92216ce62df669ed19b48c2f4992ea5ad1e469144e133fd4728c4a70e8a1b2223037cae3b7f177e6a90714ddf1dadc54458042a74f4b10a06d53b23bce28247ea0be8b488d16dae818f48e5df791865290970562623f200d715b52bcc8b48d6545f750786d364137b67b469c3d3ad710e8b04edb74ddfa2fb084954535916c18afe96fc241fc1c440a9f906da4421b4e1774569727c2ac4d799e865a999c59a637abad535c3f1761f2c958762c995b0baa9f0c223459e8e1be35ff1314a431bc0ec6ebee800bb1fb07c0f9974ff2e4d6fcb7ef2071180658b558bf65014ed69f32c99516000622ae2eb454037aa8dce5c99eb5db31a564e4f8cbcf3fdf301502511d3ab4a9a0bc26fc34b827f17bfd0b1c3fe749969ad96ee656158f94aa9ef68bd514992da0aa3a810b878c14b0f8dac1ba2b318cf435c618696990b79f82898a5e8d5b5bbd9e5e9bbe6e5d79b861ec9c9d27f2a9602c6fcbcae264c1eef114a7039b9f4f2bbffcd8f99151e5c016143250538c928648912a37d1c6755690259c814fb70b6f25db426a903f2198701606431d555c76b540ddebd9bd0f66952740b9956efe774dcdac24b9419a389fb507523e80b0432238e9277cefc444b51bb17a96f371bbb5eb7eb38c06325a4e3c65ee51c2f4e6dd683f70c9225cdba5dad9e8f7b7dc935c37dde9e306f50de0fa1759b48db373ba921a86cfcd3d7563b7d196600300cff25d33f1bf4530ba16d3424e49a6492fe3d2f3420c7e9ee2838a533807925cb73436589e2cde8e45f6a21afbaec40f5e5a7f0419bebf78694aa994a529ed529542694aa7d4a528fd529542294aa5f4d228edd2954a294ac3a57997027f20d9bd538b25b95170945632f0e1e4e217adc285d0938389ea6a9b396dc62b60284df9bf427ea3a6670c551c2720d1fe2b122673e1b3069a481ea4569a0b2207c2aa2332c421f4572131aacb0d133891d3c3fd252042b471d61d0524e3f95700056111b691e398011ef6d46940c2151c766443ee317d0d80989d611fb420879dcc319081ca0e205e9d07000a690f6343f047ecd0254c7e031c5b0182a3037e3523630844ef00ccc14eb0db8190e5b3641ab5f10260167c2a0ae21fa35912950555c22f70b38884f2dee307929e58e7848dc5c4bea54e2fc66c6f9e8551758fd98205760b52332ffe01886bbfcf1614a300cf202569662c82b884711f5e89626ed05f8df600fe28d9df4ab1510c8ab86d40884528f6c50a28c680524fd982dd32dc4f5742316b8c1296176e96d9beb702c5dca15e30e521be51dc9f9561a35804b15f7c908510f7b59550cc054eb17a09fa9711c59a0f825b34f75830622b1bc1a6897942b5efad4031775088516d0732ee73c5de28b6353baaed865a51c1feafb04ece3654d363cd7d58090b14cbc21aee846cc7bf643f2bb1c2b88116018a392964485c45a744a4873f5b58333383a27181f0c564c562d60ee0cd938d359fabf52415b26507167621e41120d367164312dbb4c9ccd6b8af36636352b8c955bc9a223300fe6214636fbcc2c7d65c4c7450cde45c2ce63aab1742cec88470991869d46e863f88bc3c4a8930504a64787aa94095bdd66ca705cf1af28a049bcd4b21f9bc0eb898d8a9d1a12cd32152e4b38abc1adb64d882c8f8e256995241b0c11862b8c162a68bd31e92af7592cbc432ed5783399cbba6bc06199055412e72c7912c629e036434075bbe862171afa0146c93460e39234c4decc8c4e132e1b0d7fab94340af276acd3330c0f460b014adb0641d45d84757cfcd4d57efb44f32e995d012357107718d36c9dbded59bf01c3949404500cf2039424377e90b0a14ab81cedffba12574b1ec615af63a7f7fcef3083c86c461f77963192ac54f55886bab60362c1b2992d0cba83e90e49a30504686e13a57b065fe6ec0fe1f838236238b4ad28e962f616e86e1684c0844a12e975b43192144a0c7c320347a85571a95898ca588fcf53042773a5f5f5d44d1cbf1594e8d3bc675a1cdb86a899e314bf89ded7a3c14e8652caa8da51821a5f78b1dc43ce3a59b1274f9bcfc4628b89f11e05f00810b38643ecb088366f67707f2f7860e6dffe03618f08e8df9b87e242d1f820c4030cb2c2c430ea49e41de521794653464407160f3aa17df681c5be4d1be17b9cbe31c7bfa9ae148271fdc0837f8fc18ba76fc485a3bcedda842143d12368918e768be47607b8af13f3e621c2163c3cebf578253cd748feaaa99a0512acf1c7507e8e4c42f9d38714e475516cfb5ecc2a00131e60d423f3c8e22072bcab4dd79b6192614c621fca8705743de05d54a16cf5dff09cfdae7ee81b3486286291392f836f86bb289c5550f00b2c8ea03ec168ef60f26980bed64b67f8bd35cc1d73118b1e0ebf541e9dba61955d5b43c4d877321e8856fe07ea667469622820bbbc4cfe207d4fdb894d5cd648139cbd1ccb22a531897cf8b9d4a068ebe034517d87b77217cf0849d0bfc807bbd002c21b91e6500c6de587b9f148627605d01783270ba816efcfedfa7074e3be8c43bd15b1e4b4a9d11a51a4f18b6cae2364819569d890891c248e6128a5aafd7367c5567391048ea4fa32c447c50ab25e8788bbb5986f107fa44ed5fc24a0a197b9618b43eb05b1a13828316b3ca662b5bb330c045cae43736b1e7823ff15e2f0027441702e0b0b0c28d7ee07cef004f902f00e04167cd15ffc4fb1e018e905f873aa09ada71825c23c30eb6290dcc2e82b82860805ff0297dd9059426f18cbed0e2f5953d1e2598e00013e09be13a1719acedacb846d0b946ff68a3acb360865e514afd619cd8000f9c19885fc7b1f7e3cec97e1cbc7ad9013b640d1061f46a1d3c31b360fba81be6aa318c18666801bef82a4ffbc128b438e61942238f9bab453ae50372c2f04b376d4b6058405b0e45492a385716c9d1bbad15d7f0414a9904d0ba0c94cd5ebb972f35cb27fdce355ea403810f065d0fd6a71d4156c7eca873bd7a8c5f6ee4e42801c5406def7c8ba13a1c71d7920a069fea0fbc90dd44a6812906c2fe51f4e2400697894b09dc62d888f5f522669371331902e67afa98bf46d8310e326cc6c9ea02583029e1707f147508742c0b9cd99ed4f53de4f3954dbc78038b80a87dadc482854aa0210431a4e12fd4e36babe1633985015006fdde160d72dc8801bd4543f8e8b471101905d2050f3f9ad31a007908436901fa24b85004b11e31c749a690f4db912c1c473aee8354671a03a77a916066d76956ffbf3a97903455e9277dabd4ab9c512ef508b5982ab7c73e7e3a510c37b6c6c9c048d2a468a36224096f713f6631d967dc13d8401bd494abce99b9cc45ec040b0020b49041a8379b4dba5ef92f56c310f99f01e87d427dbc49768feaf1795a66a874132cddedf07e9e3585f834c42c26bbdf83d74858f6b1d1e07bd741b08666dfe11ec94ecb643e71a032eda22e606d8af83423aa9adb01be1202a0d60a09e214a4174e0cddd494dea3681bfca9f2d65cb32d9a9c17f2e68a2ad897b30762a56d9480aea76a069f45fba3843721c891ce3091f597ecb983f8819b221e6baef00cbac5ad64db0b501d4c0e1dd51ed026bc8d2dc87ac6fb502c6e433216aa5ccb893c6b795fb97526d22949628932af60e1dbd59fa3d096091087e4ce7f22c625459356fbaa6d9a1bcd6859df6b4c4d2534a7bb39c2c3284f5956827c305a2931b5c0d8dda629cd8d89d5ea759666040216249ab4a26aea24387913c5f64548709b4dec8e24297adb5df25662fb44f90118216d378bd466bd8c7f15a69fb2b8cece56cb1d44c6b6260f72c1b52d28ace3152a761207d426d0e75716734ef92916ffe5555a42a2d064a998ab73320787929a0e34d194e7405ccfd654061e873366d99d85563eb6e02c4bbbb042b53267739e52ba258b95d75cadb6ecf3870da00f8fb6e4f0236118f808e60a5d2e3344aa2278af0e22e6ee975c1263b6d5e34b0f7b0c7d9944fed453d8b0e384e4aeaa2b354a2130ed4f7db7127133a273188684911a2d1e9b75c16fdc46a6d48c7c403442af8361b7cc17fb36812f8f16be15f81b3e8613968cbbcd30c9e03a2e3944c40da67b07725b21dbbecd70a458324d1360d35a65e40578adb705d5efb8639fe86488c67f0c3103e28526aeb990bbcbaf210717027e719ecca1ed995a87a114f5ac52f701aa117f7580224e37b417bd75b7eed7b2f724ceda79f8290db95e9bac25749a4b866208dd1945709093a0b0ac8de07a3c195919e03eb947c59707a890f087c85edf42482d6c3140062fb9e6cf48e27ca2b2bacc58ba5ca71af29c9ee76784a0ce59108f4542e74510033a8b851d2dede0490febc3593d3faeb829a9c06ee037e7a902ee201b07775822bfaadabfc39f197b6eb453ae3e85cf604dce29ed2f661575e4dce8608a8acaf7e165105ca1cbfca05c87275cd70920456abc030dcdf668fc07f25b4d3771005fec28b4e7465f45cd4b5d25cc4f101e25f523113392dfa66fd80c81ae1e4b3879d3e588935111322df2ff02769e425b1ed9e64c6bad0857b88f2145a482e3d1c8cdd82b0453bb27c56ab85af1222893b43626b870480c7944e1d5a28fcd66adffd85a7697662a4cef5a0a2884fee23513cecab30ff96805ecfcfe8d0347ca8a1675e1ae81d8c508add68bff897d82d6f703fc33d0a5f848e49fb5d7d152f80f90f7e10ffb5bcfaa2c9c81b883d193373a0bebd56f752a03cdfbf913c21f1bb8cecd8a217234fbf79f81fdb7fe56b352112e1eb04e66c1243afaf7f95f81ff77ff17b3d408a70d5897e3b2b0de7fd3fe401350b8709225f415c05440fc80209385e5d812fb14c8022066b004cd4216d688fafb81afb148807e26862060532e77a1518131205090cadd4f18b2025bf8fd5119922727b022977991f21b25fb22b487ba78e7405eb114af418f7507b6a4e27ca586c8272f54c1331e67969e778069c0c1a0822faaa0bc99c46d8b2c8d050e1a5fe78618f8b2c64f854a58e8eea0946cf099db13444278770fe6d7c80ee2d03c17b742cd0a90495f30234c028f4c29047a2b71913c9f80e73e8fe4c0590c607213bfbbec57e269d31598e98bf883969f70f6b3d4af383df063504e3c7219cb1c9960060fe1d160fa2f20e6bbd2ab65583dafb6a50e6c2af89c5ac810e5ffd8f0acaff809e83f6dfda573d51c65be41dda3c83ed8e5553deafa4559bf6d169bfec6a202747df1b9668e7cfe097732ddfd817f80f2e4965a6fb5f952e35ef55231aee7cb4100d2736e83c1080e4b174a16da40f73b6387f53c06920edbc837c1cb622975c0be12304968a163d50b072fbad34d2251996f2ba301c2b7be0604bcafa4acc80685705f9ff2f5a5c237876f07178ea7195e38302e05b31f9885e8a4a2ecb5635e41c7ea9ac9b27180775eddfac46381177e558e83f937ec4c2b53a205185a1ebf43e045f135111681017d373922a6ff191ffd5eafc58b1d97f474e6f74ecf19bdf494edf9807f819c8ed51dc62496706e7b88f79ea671bd5bade207a838ab01e592f5a1224c9b835eec5a1e4351a4bc92967b584f92cdb2e986115dd4c5630cd628f1672290a01c6a1aa8dc3a33c38d7b2bfc4ec2735ded1b56235406b85a4e8805de584abad31be50f312724dab6c0ea3c590c13442d6ef0df6838071912dbab5bb00a7e9c55fffe7bb95db00dfc3f952c21996318edd7fcbce150d7a59b7d6e65effc9a612d68a62897629f499bcb60580364d80cc40ea4cdef5b9aee59937454c8217755553982a57fecbdae595367ce9bc7c435a918950a7ce99906fd86d51bdc774589ba3a45cb01658666dfb702712d4263ef6b5155d652d909edf9cc4c335b629c5c327bee6010fda5fe10d74eff48ac31f7b39b496e39280acdccff585ea54780d57e57fe019afbae2444a08e207aaa5d915a2624198d8b7709e907610cd9597087651fdee5d1dba64f8140b762bb5ac7dbf4de82dec2ffb69124981328d9b70036584b83710220a7150b8338d7641a756d513dde44d1b5d8ae27fde4f8d920aa4733cbe8aef8eb8462ae0669a6c02dc32b58401fd56297f03be03bd78081618a8586282fc4b9aed2a08017e0ab2d14bd888cdedefe47429885a190313ff55697d267a0b6a8e14f505b0610f78a971aa7d7d22f1abe1a842f5c96d5eba5f609f03e6bfb822d1738c4baf6d222a19b69960540c3f65fb8029d18d47d1aa6eabb20ccef4cea68dccf4764e106f7157b22e05b7ac2f4b3e981863dfc42183ffd925b4e988283b77f0d60d6f04afa1119ad5796a4360373591bfee4a152a2e280c230d1e16c70f8b03caeea4b6af8d5c8ed349c6dcacd7897250b202faccb279c6459789ae7788e8a0f27c145ec3c6b959df66dd4729ee288ba263dae4d47765d1de6ee27a049b985c5e5176e1831509a4fff9e10787629b04121b8b6bced9b5c802ebd404e069a91821111618bb2b1cee3db87d1bb8070a6b58ae84ec5a18e5413a6cf73d68b1ab88ba896e2c054af591ef0c412c2f408bafa0a251ed0a08fae37972f66b103e1f715894328f69014adecde3500c94a1ceef7d108024962badce00f4d49795e7ffed5616f4b7df60374b9c539e3e6bb8b41a7a7f5e8adbbac9b93d1bfbd589ccee47185bc7c2ce5abbe88aaf95b350ccbfb54cb9e92f6e8c411c9c0eaffb311f86944b57a7e5c670c1961d0beb6b495797d683d3520bbb0209b6ce3d713e13396a9382e6ef51a57df2e838fd5e74bfd60545c4007cc4e1cb76b2e361a699a08241e199a781914fcca79bb1c5d769fee31130c25714ba790e4c0b4120af8b4ad9cc24b9a4efe9a17486319e6aab5caf83dda31c419fdaae663f8ebca9dc3c3eddb86fa45abd4f97e3c9e2762aa63d8c9e4c0e07c72965aa664513bee89a0a2e7a16ccaf8dbc5214964855c44782fc4645eda44ed1efd42e9d208d4691128a616354d15509de7ff5461184a955e5f221d4b6d75784f157a6e5c2ac8dd113af665f6a7cc219d211741f5c1e7c8a6cb1fe20484439af7b72c207901873ebf405b0714b380ae4c3a5a8b60c2ddd549fee9e6f7d8b8ee78dfffa0fc69ef308868d5c23e31b1a2b55dae736d14b52840d3f96a8d85585e12bf025079e1a6fe12f4ed5995e8a287bb04da5763f2cad4eea44e706b7e9049511a79b1adbb5c7588b02f4e5807a84a03fe567bff2a1e740684e01d21c9fb3a2a06ced71f075274c8561039416d6a1c192d6e014254dd5e8d4656fc1d420be88a31635e21711c7b0958844c73f20e5b1e326a2ad6efe68ee57f506217727d420594bbdec161f11d54fb906673e305c906bed9b4691a7180139333d9c77727cec40498b7dc4c57168924aa104a07c300f4656849071ed78b0ebf9565d79403f272d5fbc88ed5aeedb5aa76a57700cb223f223e1b7c485d7b7ac08eedd2a8329f33bdbde7d732465445b2298133680965f522dfa760a4aba08bdb8c5c47cd4018561920f2357bfc87d216bd49600aa792f57338ec8f798459ee0599841ae226f089e80863be06395807e18020e901d7a5069b2937792954cfe7c2f0530bf68ddf2d54a6196c53198c2f182b7c0b61ebc69c664e4e129639dd8e3467c405ff036c52bfc7cf1e211d4ab6b0b2e57a76eac26e99642f2503241d70a33e5041d40792050feb6d7d891f4c610ed02a94d1afa0bcdfc90228eb70007270f8041aaae54e84509e87ae2d9441e46184e2e11c229e9ea44a80fc6c446a80ca3f776413050c9d0cf99c0f182da9a32d94f1d04423acf0ae73e30e955968ffadf80d6f0eaaea0c235e3159e3d327b4646f62d22164d0e09fd2834b36f37f338fa26b2aa595c1ba069f694ff2175dd57c0650df5e1ff2a944f9b15dfd36d57a0ce128d2710f73696aabdeba302e3e1cab13850c34b6be83777714f79c52ed5e81b549bde20cf9ac73ec0f0dd9a9e6c2792e809e32ae3886625ea1a41a62b6c00a43e8cb6e6291e4dbe25baf66352356605e781708ea67016455b0a63d6237a69f3ab36c533ca555316dc4029929454cc25057c88395adc8de82223bd5e649d25234da677788cff6dbb8fd5957ac8e87207832eeea01461aefad0db63474dc209803d0f982a87540b61808d527215f07d4626fb6dd963f85ce70875076a60825a941026b7050d08c64fa9983de04f04d668c9eead1812137f3af30930ac4e80ced851057062c6cf7d2e83f0b446117cbf044dd54cb57226f0ef7426583de26a06e2b0f06c7e4f5b52695ca9ad6406dbb62ab07450a7cf8416b0414a9627eb08d68aa181aa3e91a1cedc5cb11c01c5845e50d45a4ad74f532afdb480137536e84903f124c8e26988bd5596640df37e5478744f727d3d897ffde2b7671b6482f64a27991094c90672dc1b354c09e59742e0c70fcb6ffe711780fb218ba40b120d71783cfa44e55506c4674f1290ab36c1468c67f266debdd5c773cf773c3a1405efecbc7e9bbe042263d1aa90cbe4e90ae3ad412ca1fdaaf1ac71290d5b039babcc0be51d9a20f924e2acbccf1e84c7188366f5279bd38dcafa90609a3eb05ac0096bcf9ec91c2b3c6417b816a3d76511f389e323b5968f9278b8d72f2c02e0a060cf389e4856c0456a5889c22f36afcc72887db7a75f0293ac2827e62da39d470e71516c30021479c1d1d7cb3fc2a7677eb84a2e66d811059a1ad2350557ea2e03b8db5f9dc9965d4a8e70106a948f75a25c4e508cd355dde2c8aafbfc8f0640f756b41b8386c2ed345a66be6a78b525ca320b9d961e034056049bd94176b6bc00325b85290b950a67dada0a601dd8fac01a6db1f8eff0edcdd0e0660357d3208301b487876a89dfc0aaf33881084e229f51a19bb6ec51bb9c8ad9cc3e8976956cae54c49a7f651a88d0e223fdfdec52d60d7f374fddf364c3f929b4e4d21d03bd6702127810c9451edeba45c2264bf581582f097aa1b881c3cffb4dadaf9e3b1d7f3fd39288b60f4183ebd0c6d099a24b1aad83a8de1d3d204e126010e8c56c63f69b2cafad614123590314d77f10c4051c616ea3645040b2375f93ce0830a0252f5307006a014ffac106ae897030a614bc858d33d5080d772ecc0c05c2ce18ca72c53ebe9d737fba00a0f8bd6203a2dbf13e62c20363290437847b8b71bd8749c2b0fd1458d0eacefd322ea57cbfcf05e6aaeb89cbbee26184b0a0a229ebc01ac7fe9dc4de16ed1c9085e0abdd04d698fed906f752ab77f5540210a13cd179d29fa16f76f7584f71b24e7d4d6c1129eddd3b764571c364e4758ba1b0aba858f8bc72f2f7af380e8ca2b2dd5037e9a02b6c122f032bc5858b14f75d871877ddd4000e6daa3d88d153e8ea421a332fc05c52ede284929fd0a9239ba940b8512b44a67117bd0d86d8e8848df8b74afe05f2ec15e3199b4f2e4f41414c5a27eddc96fdd9910d2de3c6e79c15f5aefb8081ffe3f8b525618a42e22db8ce01df49b9a873326027060d7ae393c19a5765a15c710ab88bff1acf74766f28fb5271b1aacf9a48cd204a25326e39dd3fe374e6a42a290fc998151851404285baf710736136b623922e40ad782095a60b8b034276dc3aea0d6cc09882ebfc753737ceff5ba5561333349e8ca0161ffd6eb359fd293c3144032cd53dc27429b6c1d24d7595afd737c04be03dad36ccee91f5d2da1943daeef8bd36e0fd09afcb627bf0170b419cc6ba263bc8bf7b101325ae3326e03c7cf12dc1d5d80934c3e90753841c37f98eb8c513860864c109ee3a6e0c05598a57357f573045a74b696c0cf5aef4e1f56d684f488777687b8c57e063b1ab08c06be9b105c52d443e6ba0019ebe61bcf5d874e0b83967d742168b6ed69e2d3a06eb2cf4db32517c959c650c72f35e99efba77cc427490868edb4a0a6a7a1af45f5d83c9a5b21d707264eff10a203683e6b5e3f3ae0cf4a93a279aaa157005fed91ca41c592e35e45de070e9d3ea62904c2ecf4c44a47aa88372a729ed4c68770a46e0a44022d3e505a1f552617990302f1365311171b370407028a89e2db29ce22a5de24d2910c164515c41c6febec2b9eed52f0ffeb3485e886199471bba5b3d86459c0f1566e68bb908d619205491b2edf1f6437d13097a9e06dd484dc2132bf9feffaf9a0b543c2a992c35b0d08614493a567d28aba8b48e77b90d868c8efb1c9a7bfbcdc67eabbecbd7899b6562d06122bb685c433473403af4f328b489b8a2b6cabe903e768b6fbc3a2f05baa380926b950ac36e9b0451e0094931d4f06e475b324d8302bcb9ed542e8924451e3f3e1d96e4108d6b2c6e95795419a19af0628ef5a709dd9260784774527d310d26b2626aed3ae0f02e3b8bdd1be5a6aade90fadb610fa848a7008f031a9617df43eb7038d9fd493d98063b1466036f2ed743153fb53a0fb336532fdc096d83b5e8868e79e0871a0c1bb12c50f37dce1d886e0e7dcf8f8a65f8a5827e2fb2e5c1953717ed7481274e32d2351876d75d3542a5ec8d448c323adf07d1f99bd9be425b28de9a59d4bcbeb9f5113418dbd7cece4f4254e61720bf33514cb7d09e6c77ee0e53b45dbb3e246c342452705e10cffb0df47809c72feec64a1a7d53126df30a2ff6e627884306ce2966f0282ade864860a1e2834f54a2dc5a4ea2ed453e0d2380347e06468fcd741e37382983c61e8a7e98f47e1592f8410043c5ec8e39926bfea62d8ad31447f5f4e5afc6267b8e42e59e60545f770b56c88ccf1b70d704b7d4336fdf1ccee33eb9c3067a0616283f3ba6adbafd80038306a89627439fd4563126769d34b62d884807775776afc68d74c28cd08389cb7b2032b16c6ecb283404df4035ba9100017c506108bd11a1d66b118864528ecc44c83ab18186d7bcbedf820f9ec20daa61d3feb2ba65a45779492f291d2988f4d9a5f33753c1355e8ff84a7a8884f86f51f7253b40c465b747cdb15dfc3693d69a113e408562018a465cc8b4a674629e12513cc318bf68933ab279854af08db44443ee40dab58df508647155cdf438ca64a8a9ecd11efc17096e93bccb1e0cc2382e527f1c6d4d1c23692e721952924086a510b528e457dcbb6d0b468f05ccee5ca3e29d12957516457acaba38b5ae9ffdee9197a427f84810fc18def0c9333b0cd34db38679d1e7fae2fe66e3b419e5d37c22e5deef6a708abf5d88b6fe3d1e14dae84fcbd3669c77992a6b64d1811e647da21f50fd3e98e009ea56a07a1214decc13ad3468e8bf1df7605b63f8adc8ef3417c7c996afdb15fc596d8486b21207522dec7def891e8c4949d33ff3512355c98fc3075eb41361fd085f9c8db852628dad14ddbabf14edc5d8126e268f7a22f2799c23e9cbf6baa69c993c62a013629d5a50fecbd13512e60b4ba667df9e81eacbcda873a0c56c100912966be6829498130b977e24c7300645702bb1719acd867c9c8f97fd85369ddc45de211d1659821ea1079b418d007eb9dcf552c18d284c51517ec62fcf87f31e8a0c3fdf190a643eed94140977bb423cf436a17691ed93ba4c62fc85fce24f26bed5e737481fd5c153afe74d1693d33c72aa0ea7d8668c7455f91a0c98ef2cd244193f7927fba9d405ec951e1ee81f2ba226fa92e76ce2bc2624e4c69b7ef72433bd31e8a175777ddf85ea2fd384b31c57fd7f61d2b330e61a762b8b9de9eeb3a181dc88a22f168df18302994c0fa3e9ce9ce4ac5ee128e84456a1bc34305b1f58a4f00feee131cabbb67ea3035fe1d9c9d5d612afe022ec1dd8d71de56ecb115c7676769f49689a679e80efda5d551a3e188cbdd02e81ec755c5459101715669aa968d5152410f5468088b7db5b5127d5b2e2052fd6bd9e960eaea387b15a41c3603a75823d3aded698d23b3aca77ff080cf77f697abbeb8fe4c2072df261884381c8461da68bc7a776f93f2a9937bf0b298dc26687374bb6a6d0e087ab8f9f20c7204275728fe85954ba8f13e1667fd65920647d7c3260eb2b6746137ff985f314a48593c82ad71649528a445cd005bda92c98b92b27434acbb2f90463da6b3439df08d5dbfc6b5c79c1a34c8980b6dd237208b108286a1618b211e1f1fe763d2748c457ac633b4845ff1002dba341676338757bb7262f9cecdee8181c35f6a38a900e6cfe848f66a18515ad11a344b5fa3d57e46f3fe6a9aab8e151bf60373e94466ca533de06a5351c3875e790064d8ae59d736f1fef84dba16bce4718163b1c23a0a2e2e20de4178d81c3b87696448ab0c4ad66c0a6f659077636eea854212eba06dfcf624d9ec0a7af49ceb5c5074d83b0ba28bdbb4bfb67f6e7f021b0c3224e5338e3bab9af37dc3c159b2cc0ecbf1f29dd3cbae22a0fea7c1bc180781fda5b0e0c8e5fa835468d46528a660ee57f417d94e0b53af619754e5084c28a7c026f8f2c82811a0853b858b1fe304f4af085a4eae5d01ac2f7a6747a46a55c083482f4414e61f7c46ec98ba3ffabd0cc253f8fb255b92455c98ab6b8ad79bcd166ea0d793179597ba0a05274b272c51f47b50230f614d11ad385b3c6379043d6a33ed101761d8d12869bbe6fd142bdbcefe3e7242cf5cc5fa15cc4978824e58b92a03e957ca2b01749c21a9cad1dcb224c657748236acc13fdef87fff7f454fe21cb2d3161704e994c424ab092fb221474e091199094e91ea8236c84ee150efa567648f67ac4be89c9dd9aad58ad5bc9dc813599add03e12f5854c19bac9a0b1606a4af78e9434130700d216316e49fa4a9d4390762591024a6bcf963895465b0f3c68b01af50888b32ce9177dd16f970f51fcea019eb828b900947ecaa2392dd8da2c1852d80615120c80ab3206bce3ea69b6dfb156553c21681e575d20030ddb5d12016f72306c6e727e49778b29e475b1d977acc460bf26ea750807717ffbb979e79c0e31ba3e9bcd30a7507e5002c4d4632fe8fe4ab8748d1ecb134bdd095edc3613facafc22710596918f74d093bec4ef2bfb40e4e7a015d9273b0c64d6700bc7c37cf5f7702f1159acb789153c71dae05b612c4aeb8aeed1580af437af14d3f827de75d779bff97c4246c9db7e97aa8bca2da38420cc6d33790427922cd8109d9392a9c4423b205f9e57a9bb7bc0989195e68d72f6b6b2a0ea60d3c46192e3e0e20ee3983428ef939138e82a784c274fbd60b03f053402075fe81b25998e30700a47756bbb9e7f7c75b8361098be76c3c5b6c8438b72c099f2c3555b69bed080746d47743b6e1d4508e0ce3ddb16c828cd8af2003ce3438f7f0fc9c91aa039286adb9aaded84e6e59764bf20cccaa972e3cd260770fcc8c2575d4ec940034e349320c2595da1be0f51b56de61b7173a359ec9ddcecbdb6e239cfdb7b759362378bd28f8be5a0b135f98b1c1fd89f4ac3f5b7ffe7f2fcc2916d9c6e3aaa55101bc73f8bf11c6841ebf72d6236e3a96ee5ebdca7aed1ab337c98e81ca087dbafdac286d48e62a8f425a918803ea00bdc57bca60a24a73183fa4643226edda1ac946f864c3e4f45967a6165fb7a202a97d50338154a1b51dcd5789e46b360ba38fba0a55746743ccc5433ac9b363ca074492af85de8e39db60b0b464a23a6267d86d52e8e36ebd29fd933befe71912684e1908714375a3214731d298b8c70b4d028e1f85fb618884c7fb09967966330034f3d80d9040d5193cf68a9b298d254ab377b7cec831acf857738e408a07dcab2a5bc0b3190f461bcd31c4e118b6acbe061f33b0a7bf97f9bd7ba832859e761c40a3d2155e0e0910b67f046589c393c3333e772f50c24aad36b84f6501348e08ae55200af9d91812a9d808af46ba4d2dfe14dfdaeaf28b999bb6371383016fbde9e0408137ad5d62ad3437b3dd8c053975245acf026a9d6fa48a05d2fed6c2c5de5443ca0030ba8722484260ab45f2c761065caef4913e442b6ca61f1f1ede84cd14a2908f8ec497877cc46deb91d5d79fbb9ba76beecca77be9b11cacabf6ccd931c3b05d2b6032e64bf9e8b831a41b99bf9adc60d86bb05eb33e3f64d98db4fc2c543c22977c9799de544b5ec1a3c5b219b59515a8b0ae02b825d09a277db00d9c2463b0783f0dc2a2e29543d3fc86382156c8701ecc349e87bc68dd1de58fffc72c2d52dd72c08d43b6d20298c6870c308d5b114174a9d977feb589aeac9846f9615f345b52a17a2a96a11e801caef9f3699605250689934808160299768a152e938da1eee8c61d5b5230e895dc0f00ea60e139b7ed3c241cb845ab784257939315ac76509df32e45bc6824f971aa8743865210c237a8c3b79c97f572cdaad722bf6a94637181c00ed6d9bcabe62b84e327cee31ab838504e88d85327e06797cf80eaf45c18960ff4514702073c276b3cf8a8f5fc6fca3e804d64dab2d35230af3864a2a93b9c3c4d3f59143e05ae64c4b10d56205e554d6379c296e91bb1c87106e5c430b68c549e22397be84f970cdb80b11e9e0280cdec130b430f820038ab80c0fd74ec141f79088283f58659964efcf4166cac5271543ba889888890247befbdb7dc724b29a50c980d840dbe0d52ea48698e2cf33968c76f3b52618423fb078e5418618aeded48851174b0bd8f0a23b460abb01483ea0a3196bc6a8b767c2604d309842c425f59d222f1471629ed5b05b64225af788e0b48789f98f3de6ced39e78c3d6746b3acd61314210f40b1b34aaf674404e2279659d145189802059d76bcfc88d06052289fb60c8a5f6906fd04a9764e29532de0d2e95f5b6e799a25ce9438389bf6eef3462ce088aa43971dc69f6c073803302b7d7cae8f8fca87c2f8f8a8244ccbd72b65d374c9e962615abeb864da720693524a29a5ac32dfbae50a238d4e97f23aacb11bbc767347737571a1db756d2a1f9e74543ee5bbd59746af39ee5b2295b6d2e8dbe8eef88dba779a1eccf532b472f7721871ada19b06e3e0e06c4eabb19bbbf6e5103569d2e49b1162cb13d6658fc94fd0c4f456a1d1f066b37664b06dc8a6250e85b19f38776395eaae4e8555f8aa39755417163f223498d53288bed080438943b1068b1fd55706c9245268ea7c4a3880b3e7c4d97302914bf67c56a9c401422ea14332884e3aeb2d69a18b2a2115da35ab35764b596466d9f348eb7c88e3483b8ca66911aa9a724e9a799ce0913fbb7e5299e467be849826a946e8915d57b0438a444a29a5a445288c129489fc70645b4a1159eaaf18f0dca1f4a13df3450edd8bb14af5fbb8a836d54044964a135229ec1ab33206f39834e201a12aa590ac02db6c2a315f425a64cf9710d3223639bb7a61ff4c1f3a81a0302a5a5591a55e0996c7262a4467c7f16001c777a29c4d71b38522f3ec7a2d5720625c9ad605cc7500e71011c5cb2169c57c613d1e53189947013cca9da83a1dd589f2101bbf79c889cb49ce71e2b098eb1c66e3323199257accf56532ebd6a8f193efa8f193dfab77c81ca66d4e2e731b6d23b38688b93e4ba477c45cb376d8f8c96dfce40280fd06e6830f17c077f870015c740108e0306dc3121d0be0362c91feb103f6019c8808cbb91f80b6b119c007a06137301f7e0343e5e05d1f615acb501f7284092047584cbe81d9c837302d87afb17b75b36be40893c911e6438e3051be1180b63ca227f0495b28a6cb064101ae99ae7a24a6ebe427399b62be4426c87caac0a1dc914f4c6f17d977c39cc4136da198affafab3ab0d921dfcb4c777da91cd04a01eb913c48f0ee5adb51769d6d53964100ecebe1d48b2b36bf7c87469fbd3d7081682c000873648ac5e016bcf915dd349c81d8a6eb35b5927983d047964baa66efb9a6a9f651701ed608a6debc9ae48264c3cc26385cc9728852682b6143ebb567bc4f6ec7a919685489213dbf9a9477645b26be6335f78587b164dfc8a38b9d6364bac61045180699d6d484147e0c00c6036356e734844d3fada5939ae7de613e57b1f3211ed5fa6df0d7b2d5bed9ab65f273f22222ce6f153c0c97dd036b2891d2bc460364ccc11aca107301fae45dd4539cbadb3cda80a3c422802aba199b06a2803cc074da47b4c0edaf5e4fa5adb4c60074a98c0033bb140bbbefbd9b50538da83599665195893585d83b298b4da339f2be02cf3b00d325dd5ae44ed9ab6da0a995ac63bc3e0dc204871ddd6660aac6c1e99be3ff78885c20a385e8164be84b21e85c52bcaebef911a345fb45d6fa3a85379961de5e177d51e8a340556360f947759b54a759dce7ce2dc50a7131d1393f509a614d38f8a66ead977637515086ad2874b981a973644b75f9430b787dedaef151941a42960636a50926af510991aa35df45563eec343174b881a2722c26ae82268932630191dd304dbb8001e73f29817a1ef83e8c62865517cfaca1e9335961036ce2222c26c681b223b7c78cc252ce6ac22242ce61216a36d7cd0f443e1d493eb87316866536457a4f5d05b74edcb8152820f24618bde75f4eaccb28f29e22371a40ecb3ee637301b96b5d7fa31da46df265219aa59edf40bea1e2e5be4cd57f7daddebcea9b4729daeeea27c4f28f772287784ecfa540e77ec1e2b2dde65945f94c31da9ec94b1b22febb2a9699aa681cf97995a16dde68b512b9ad2e15d9d748851f8b39d0909d69eedd821cac11cdec4a07d9818e9957413a9e5a4dc12de0de33d84a5cb78a6c318efe1f2d341bae9d4ad727654fe320dd276fa2ab7bea3344b3bea563bf8138bc562b176ecd8a8b374b863b3dee9cbad56288d5bad56a9d4ca3b629f3c2fcb9dad43691e2a7f5f29e0e4facb3e96a65747fd7ba7350f639c4ae19677eb614c39cc617c198ae374b55a97a1ab9cbde5ddcf00a5dbdf0f08a969ff0ef38ef3569db72a5d669e5aa8c3649a47e956f3a0f14cd33d567649571a47c934340c3d4386ae3134e99a89a46524920e97d8a4cf20cd780ddda4163da387195936e3feccc837d6c3e377e31a297d74eaae0ccfabf7c2d5e977e3f40c87ae1d3b5cbdc7cae65e75683a85cae1cdd639c2b67b592c56ab85d21dd65c9e3bcb610cda2b29e400e934b541b0c530221836860e55abb7684d6365afbe5a3dfb147072fd4ecf4f87a653dff761fca5740ae7f0e684c5ea8e57337458b7e99a463e71ca2f953e5ad9a07dd45c2a2adf596b67f9e2e32f63ad43f9fd490ec1a3d81ceed8e045a793e631ca913f1a8d46a36e7aa75ce2717ac98404673fe5f0747b02ffc36de651fadcf13321c1e14dcf0e510eeab0c7ca1e1dc51b8d46a42d87defe21874c5cb1517e6314a6c2228c8eb8c7ca4e42ee0cc5fece6dceb21c4150d3eeb52c13c94f24129d89add92eebba2c5b7bf05996383b98a36cb13431ec459467baac0804734763da13acd8f930dec1388e1c66c7f1385fbe1bf92e3264c860491189ac48e44336d925193264c48811e346621d3a747412b3a41c068685e6458e1933acb5f6c5eaa5cb7478354dcbb27f0fa2221dde2dca327c7a97515d8742750f42828d38e167f3ee3773bacda9d34ddd9cde751f8eeedb4e29cb6dd6defb2c75e949dfef860fd9e4d46d397569365fba5b940ebdad891ea7cc24796f659ac48bddb45646267b450a3a57a89404ed95af2c41828df86c9a47e1270a4136cd69a2d0e37932fbbe8f7ef57a3744a7b9cd9785e6d27e37e4a679c7591b65a6bc29fb0c8542a1ee77bf99aefbbaaed3be1ba29feaaddc7743f495db7c5f9c72c8bd72b957bef295eb70033c3c025c54ee8e08339904d118db5dfde287830097995c8ccb9091c990f1f8dde992719929633cc691602347921c91c20b923801093612b4e38e4d70c292eebb81cffd94b9438109147e7c36fe090a4b826cfc131482367e16051d29f86cbcd1388db7bce547d3a0e9aaaba8a2339ecdcd12b1871cf6f055cb67b28f1b7203e0332d8f2dd9e9e1cdc657872bddc8f66cfc4c68be90eae37e47ca5468671a447a486992e9aa27a5be992cb35a437d3359d643cb4b9975a33b8c979e3a79276d3c9e68adbf840f3f7984e9cc72bdc66f602799e5d23b4eaeefbad636445c7a877e8ddbf8f09399d6e3e7592bb2a86739a5430fa525fb9801c067f40d02fcf42fd3b8977dc87d9a3458a7e39f6264b9db39d9c3ce75b7b20fb90da043021c0034ee1a446f027478f10e1de297a657458797088d001daa4adfccea3677f2bb21b7776e4b75bfb9bb1229367e664448cec6bf3ff2c411241b3f7ba779dee9743a6936c8bd9d0ff9e431593f95e5dee42640be00c872d71e0a534f99d49e131d69ccbbf8594dcb3d5c769c2e9176ab15e0590ec06d90d30d938bdb78af653e28ba7afd74e0673aee2ec61a34bf2c6a2bec43be81dd2dee987c035bb2e3267dd959f210430c71d297bd94e5bed9437c296b4522d167a369da3d5d94afe88ae8f7cd884edf4aa4c3ba45b7f715637cdc758f1f7e9c2f5d7673bf99ee31cb51cb82c89ec4dc3cb4a38e3afd2e927b9559d99659d9733ce5a7cccafee22c4f6556f694e7382a87567f9a95e91c2ba739cb5f9c7e339a66d1ac9ce62ba77957f232ceb947acd8f2c36779772d63d137631f59debde3513377a683e6d9779ac72f88ef3497993447bd939e087f3356677ff1195f1da366743984d12c2b9cbdbc95bdbcf5f2a243160dfecab1ceb1721dae83e691facae35e392b078be63bcd3fcdca41c323759ac74d7399b9ba3775c3876c92ca97e562add33a7ded4fcff451a7792a37d92b3fe5d066bfb8cd3573af5c74540e6d360bcd65268eabe359f6216e5db68e10ef211ee2ad63886f43e83897e93b5d3a1ebf1b43681d7f916325860e966ca1b03c34d90aa90296f1d006f1bcf922e33162bc8b31729ffcf08d890a587e9a1623c6e977a72bc6c16f46c6bd0f3f7ea9c7409d563786e50f97f5aa8a30a6775dbcff218737fb071ef6871faeb13a2d5b406e249aa6897498fd3eb441589dbdd9dd27437fc8d467baaaf531ddd0324c53c05976ef194c8465df666c211ea38d1a145bea85b815627f628dc8c35f44afa07e88637cb8c9071da34554d46599872ecc2e9ab16d76d1bfdf78738fbc3f1d43b6882e43ad8f04718eda876c92b703b626b305e48e9f3e22066a375bcb721891fc66d1a53c31b2680741f038e206f56fb603767630eb9137d631648b8c7d652a0813109da63e224da798ae2b146bc8bd3a6547695984f37478b94defb0c371e0c871bbe4506e18e77076d8e141ecf003ec0043bb1ce5400491c30b44162287b609bbde548000a48e72f9e14079cae914a99c65395a1e342dcb342dd3b2d4533aec5359cb72942df69bd174ea990c4de54c86fad040ab7d8687fc92cba5c064e7975e240800da89871ccaec5e94a984705006a48316345ff5e1bd18ab54bfcbe55283c21a64a58dabbf1cdc0635f7e18039987a9536e24eddde9ef9927a76d43793813b9c4876fdf6cda4329f1ad4dd7b6f97797cf107f05d07fea0030056dab8073f00e870eeef333a9cbbbb3d1bcc84c047e502a43c3f20be28a946a634537ab38eaec981a4936d9fb30886ca44c4973d4a56404a7e4001e2cb964105a2bc036ca49d00841d8a78a15f28404f2ebe48a893f8aa1484a17202e26bc61e05fc888345196080810b1af6e01d0160db732d369ab78f4574d9a7c0162de659b0f04a39ef51ce21b2aab93b7552ce2135215d60444a57bdebba9c6752a59ce5c9594c10c22a0f20baf44753b7ea9a7532932a690d1bc04ca489ae20acb0ed515fd8f60c8834ec4b5b6adb409d44ce19dd09178cc88f1abc573f51c2b64428e501c4167b12e9a7a772ea2a2a5f0ebbb724dc140116595e2cf14543ab0020d2b027cd94462a1fcd55542e5e446d82272779bec85056292c9a92c4ddf760ee70a6b1c55e460b06640d529667f3d591c5cd53464a674acb7bf6587c3a2ee38982dbe7f66fa69451f688884dfdc0ff518377e935b75371d1a2450be9e2858aca54497d3cbcd0c1859d2e5217f67d36b7784c105ff25c8e13b8150319e1b75b2cd8a9eca9fc6dd54e3db2a8fee29b49bd2be52eb68c562c5edbde45a461cf430252ef5c514e7053e9b0bb00c7812f289d2f321daae57612a96cefc4397ba5cc02fcccdbdf6d596f9c1bb05bc4d8381f607f39c6170655b0567171adb3162daa8a8a0a75e1c285b7e5794494617fca4204753fddf451ced171818d1ea340238c4ec8698236690223b2dd090c1b69587c5930c060cb32b1c5944ff9c58b9144e5089bd9b5e2221365d88b3286c9085fd0b0ef5039c2b6d64ead32add733a91e6558edea5e169c2d5a78a5ccc2e7720e91eddc3b172e5cc817341f82fa56fa28a34a58878f066f241801b561508708dbeaeb95ed6075e5415bf968f0ca968790fe6512898565cb433ecce5263e9dc5570f2df3aaa878a57cb26f9eafb9fbbec32d144416f99609628bbc0e3ace0982dff6b24d97005fa1e099345c74773589bbe777d8e1a3a91b7cc7039db266d18218c42ee2fc8b6f0615638c71ce175e29af36ce3f26cac87cc9bb5031d44f3c02831aa22ff9eedf5d4832a34ccaa2fc652e7b39470a63bbec9ac480b318162b9cd68eabb4c259e19ce894460d511869c2296ddaae50435bde8b710acf4ee1d129310ee068922a95dd4c385b1eb12dcdb7d533872946b644c55046503fddca377359b0b0d76a168d6e512002edeafa54aa5d73378b484337e01bbfdb01c41a7cf1c2c3ad27e64b5e876fe6ead64e105c273a440ae2cbcc52564dac830e5e29a7b6c5ae8fa66e7a97cbe595326adfdc7a22a71564d2907f7d3358b7769c804dd325fffa309e9186e5e2cb9228f0fa68f0a67f7df374be5e5e299f369757382b9dd5cd3fe897739cb830efa29ca31303f3eec48571efbaecf62b9f8eb9318e39eec3149e2dbff2cd6c293c2942e60b4d62862770b6fc5d890fef6ec95a3bad207a85858b6db5ad65f9680eb27c3475af70e8a7d34385f10a22a5a5bae80c868d1103a7de195cd6b930ee5ece712206c6699d0bfbb48e2ffb150e8569edac7056385bd2f88210edf9d60e85c94edb1e6cedec6f5bafcb28b043d9f62b9c550eb8edc315902ddf651b5f1615be58186ebb9e66b3ead129e307d25fbac30e5e299bf668c8e85e8ee1bdcb9c779dc346a3acbd1d621c00cc369ec497fd9739d2b6e7e1a3c13cf0f0cdd3c9030f5e2997f6cd3fee28e734219bc046cf7102c350c7efba2f6bdc225d5c260c183f52aaaf627c39e4ae02919d111159ec67a8b052c54895b6181fcd6354191f0d9691cd98116388ce858d8eca3a1836aab1ed97f50ef81bf81807981ba6f1d1601a1fcd61f1656fca4e289d0a3ac83f6af0cb47837709cc2f1fcd5f2e0ccce6edb0ed631c608bf968708c0fdbd52c07dedf9552266d9c7f80afb979fb4ed165efd9d862dfc50823471ab6073b7bf868eab61a98d165dff2d1d43d9b486992f3bd50808e2efb9bb3b88d4ef1f5651691868511e66deff2d15418e027c8b2e281d94574d97ff9155ff6a4ec437cd98b6050b1ed67fea1b2ed75e47296bf388a2ffb2eaf728e2cf63d4cddc34a0b8b87f38c2df63a6c80cb47f3bdbd6be9726b27b7824c973c985b50c0e0728be6561028e64b1ec677e3dbad9d30b87834b79e68056971d989c35a3b93867c8cefc6dc2d1944167993121cdfc9a874c290d182f793899b6564b1efe19ba1ef5a9e82c2a2a5c53a6959a95a5a522d2da8969693096ca125d2088b3eafe3b696969696abb5d8acb64cd9d2122100cec75796b93b99ed0dec77b44e97e6d198a03792897ab371f3074010b96856d3b21d94524a69660940eb84c9a9446c687f79d86757c73481ede3d69e55b9abf57e982e4a6336d543eae97f982f53af50156ceae1a19145a91147cc17bde7a58e0c010f14c6c013a1e0032059112440414752195df6b4414c60d0448043973df33c421b315df371c0f2610ca23de8a24a772f9e73ced0c53564031fce9d2db1fcdc9999acf7e01770388baccc1f5c33b88711c911ef6134e24920d3f5e9b9e3e9cbe92d7bf3f5597d41215c1f5ed7be7a479b3b7627bbd1680d43175542af081070e8814ec0f1f4a1e7edf0c80c8867cb7b3b14264b3285b793648716a8c81538395b4a0bb4f3c40685902d65ce96e46c482a99423a4b92056d8964cb47f9c53ce45e3d872c14a115b2a58dc24e21e31085a13df4257fb14af5f0740ed19ed065c7497b908067a4624a7d92039e55ec909e6640600c53bdf9e8adc87449f008383edc8a7845b4a90139f2059f1e763cf2059ddd89a24a84b99e563f24bbad3857d59c740af59b51a9b1c68489da8aeb0b9ab66dda8d2ac754b523a5b5f6a01b92551b43163b3ec6f0b4a3b7e3332a6fdcf758e1412ff1127088a91ea27358c6a294524a5da80ae6949b66e2cc207b871d817caad833524a299869279d65f4df77d22cddb8d377fa5e4f97a127ee60e6d19deefd74024f07b9d7cc0dfaa01ef8eea7cbcc4b4e7445df457334b106b97ba8692a914658e4a174783f1d5ae0e69ba6599aa4399a788a3c1dc6e47a75a8d2769ee4460429a9bc56de5a7b6db663f6711b8250fe608a2d6347a01fe800218a1f58b175d811e807474a270f7f4412a9502e5bfb0e7aa7d24a8532e5732813873a993cee7228d5490be5f5bf5c3abc70a1d2c2e3389d9f82c2a2c53a59a952a893a944124d4e34ca273960acb31f307f38c21b1e5d5893d16dc3aa3c3b24749fc697df552aa95df55da5bd26f308edef99d85f0ee996577daff846a1aa99b7e7fba7c218ab2e4355df479907a8ba4a35527df4f9a01b8f0e3e7e3ac0ab2e33470f65fdc5248d5532b5d6d149df45358b311551f1144d2e52b802553a94f2b1a6502793cbb5abcbae237d750c67ad6cd1b48e42db1c646ceb89d3bbf49b8e55dad834b9e3f6b8ef65f641f7762bde37364cc42a1ff5956287f435cbdc45bd556963bb51c478ed5aecb93d5b107ab66b47a020e068d9345d917b5863bf9f7007bfe3e0b1e950e27a906a2bcd6554258f0983db9c271dbaec39d261cc9eabd328138a59d0d68aec910e33a0ad913e7a4987b267cf3f4698162f3d461815174fb158a4dc955fe4185f2eb24a6e9175cebac686f77b8a0e632c86850e63b676a243d74aab7478940e55276dd2212ee9106f8da4b1167d9eb6df78482b6d64a73647f7aaad6ca13a32a1dd7c7e3e30cd979a1a63d50a1dd09e590058e0c7df7aee147f6791eb7ccd0e9498458e309ce71ec2e23230d62c720e01268dc902629e3ea58dd14f3aac9999cc1630ebf2c341808ff2658b494422914cad966e800c3db9c8a45797a1ac2c3701e6a7b49104de3fe86ba40d7a2c3347f9b2a56bd264f4d34d3733a252a9741c719774e9dd6f76298746ec113ee59b4d7503648be9a31cae6cd38936857a775791dea944a2d1c8944ba59f46bf242a7aa926db33b6e832147f739b7e950ad36ff7729de9745cd9f4725eb359564dd6dc682077d4a9699b36839b51ea8fe3a8976dbfd932c71c1eb1a3976fbcd9516adfac84d51c61f4666362de484ae190c4094c62f6f9b265a794529cedbde99a8f52d49294deab4d8e335101778f1f95e7b867b9fbee4336019fe5d0666737bb4416fa9bef9d2fd73e39a3ddcb1bf729b5fcdcf772bba6552a9b557d558f1236f70d286f92ae93384620acf7ec5679aed618ce78f843346275f5be1c5c7d175d5e6b951a3df7cdd42328dd4e02efdd5edc7552d334997978f1d33469d2be185487736e4979b6bdc96a9e4629486fab5d62d39046b143f01ccd21dd7553ee427cd01dceef2fdc43edf43aa43c94d354879ea60f35cd691e92233d87fcf79a67ec7b1f6b984e69d5f29a77ee60774534f554473db5b75a3bc9016b071f521efce1b0a722cba5344ad38328fb534681dac8fe884e5f5d75d8238bb4d5e108a440bb9399dd1eaddbfbe87630d752e66e719db7f4145461ab277845a0a6699a76358f7aefda8d216d688b0a81e651af9d03398ee338b0479eb1354db341783a866c017be45d0f6ad63d0713630cc7b4d39f780fb91e797b0f7be470c6e63eca8f2ce071d661ddf4da87c33b0f91befd7478dbfb11f45e70aaf2d6fee918d286a7430b70dc766badf537866ca1aff475571724ae23d148f8030c9eaf4829cfae28d992436cd31fa14477529b30ce42778ecbda336901872a954aa5326101f3d09e714ad8481c0b84c3a79f73624e5f5d65cdd247c6b2d87cd92497495316b8ccca164e5b5310de1e7db080e50e559b6aa7f49f2f2aae95f952a5bd516c1b7d54506cfa966bbe4c315feca65782de86aa3e2b5bec75261f44093a797478237db693f4886eb70f6becc63a94f24a5019dee5e212b3e9cbc4ca964cd7a842c125cc29e79c734e6ca7d0e1885b4a19191962cb2c15215382059d2564416887934916e28d69db0745b1c36c495c4290903d9f559131c9ae8871664e2aa9d4d487b6e50558ec1a165b4abd513929a5db65ce0e388788d4164747085751e99c55ee8cbba1f99255315f42997137b768ebcc401f5ac65d8e5b4a29df75b5d6eec321659e5bfb501ec0f2d770c4e80aa3cbfb704c99e9e63e940770f6385ddc8723fb3e1c74cb77a07c8c2c54873a4696687366ec044c369727902bbe99fb7b8be3ddd210f00bf300df978ae04ee2acebec332138ac38f491ce259bea305e52602ed9e1124168d4e15cb2e30d70674b22cb7ca907c7a1254cc2f8ec71887eeae848d712b420b4a7ce7c09b32513c87ca94bd0429094d9922e9c4b9608b2a39c4be4e6b8485f32cb2de9cdd664909d69c924f7984b76d51327c89ef39d0e85997088af790eec8060cf69823da7ce0c32796636942d99e1cd92cf809ee09f3d2f814c26f30a0a443eb1e73bd311702875f69c2e20d48a3d99e84c26d335e7152637e0106398e3b0e4b1dd5939a1cb71e230fafa181af32230e0f930a6c87c459f1bc33f2aa007cd57d48104a1f98a5ba767cfcb609e3df704d2d1d9f3d5b2605319e07923e7c489b1a6a65237c0f3f5f77491a874c29fb5ca83a712febeaf9aea269b6c9328d610894030d600c1ef8b35becff3620dcf8b2cdbbb58e3d6e83a8e8b35386edb628d6d8b35628d1b59ea3796ed5aac017e7b66638dd4b7d7ed36dab0b1657b65a907b31659ea6bb451634bad9165fbcd5964d952605703d449ac3678296bc74376b7eba47c27b50ff0743a9d4e23d1b97b0085e250a7d3e934c2a7d3e9349212a33287ca11c6d98b442ffd442252b2c08dcd389faea5aceabaaeeb3accc4bc911ac90576b463b45a7e3952b6d438d3a12ace9982aef64067cb4f9b93a83c58b2250f98ec1f35db636449e23e7e33daa743de20327d3f1a173eb47d7d68db9bd9a7437e341a8e2c73535db39eae3eaa845df4620e3bed5ddadbec45964c379165f391cb7eb3ec1eb88165da03dbade61eafc51df390ec5ccc3408b2ece61089ad65b73662559cfb33a32ae8e2bc8ff36a8f87f66b339dc4ea524a29a5da873d31b101d3c7e843bbdad53eb2879ad42e43afd4b40fab87c8675ad32250d90a3f0d3e6a11a66aed6b1e3575fbe81e82dceb764d6b1fddbd21f7ddb7ab416029a5f6daa96675a45856ca44bda1b436e1bd724b6cee35b6ab0e557e683532d3773182f75d97652e0ab3f9109b10456c9fec28852868b0bdf9d03e060067b7567ff188e95d7b178521695087aaf93065c774cd233c91ceb411475098089bd7539d014f2dff75d9bd6bd9b787dee3744511bbecb35ed3d16a3aeac8bd6a8ebb26356079e74badf57babde36778ddb7e3ed3a866517a9b7dc85df5ca74b9628462c51070ad4c19e74be84262be8411c835bf12b363fe8879084cd31ab0490d98524a5d804d6ac08f329b2137d52bd3356170ccbe994a75c529a0534e4ae527a5526bf87e7e33d366a7e107173a63b610d184067cb25dc6484ed3b22ccb6aad95cb2cfb7bfb5a356dcb2eaefa18193d176bed490eb83e9356ee2cabb87e95ca65bae263e68bcc315dc0f2a14b9c2ed319307d7cc96fa315cd2ad315db26c7a4eb240e91d83c6a6abdcd4dd86b73dacb5aad0eaf8cf632d346ea322332316fb23997506f3203aeef62bddd7cd7512a2f75b8b2e52785a95906b91d5bfbee7df6f0a20473ddf5fb1e335f62cc7479d925cf88b236d99fbfb989fb8d870f39b46be41ea281bbddcf79ef65a6176767f452955deb65e6cc528ae9b220077028712e73e6ab8eefa965dd3bf21da5df8c95118a5dffc4a4b456a9e50e088218bb42301235df5148e608ea228001264c84199182901a91ec4a612aac5ea58285ae985d432945a5dc153f33c96442051fcc241376bb49ab84c5e8fd60f9f9ca66572f8591f1953d3ec3c0a635cb2aa5754e2c44a01b81e23b6ec76ff2ce7869ebb43b3eaba22fbecce8aa8f9fa771c77bb1867cac4cecf929e3afe8036364d1d48a91d432b2689289fd2c5ffaaadf90384fb3ea1b82f1e591479550eb14d9f6b687c24c1c217aee486c7d36cf9e38385d1503965f6bc71b41ac21c57cc1f3658a09c35118af09f105049a2e28261864beb00e56013c62e453a8a400a3084121229d2e68f4435f325fbefba1302d542ecf5d315f70ba9c4e67be00992fadbb7c5e44d58379f6a80b32bae2f2e0f620d6485dfefa20d6585dfe26992fe0514779cae5b71e0af33bb4e15098d3454c369d51c751af4bd9dff8c73c684bd9c5c13acd03ab105f4a4f88aed24fa90406954a6050090c2a8974b644dd8bb14af58f7eb6440da9622a235375a4f3bcfbe9c0234d2412e99401872b1d1d233f4780584858412d1c1613d6106b094b68c564c5b31a5a2d5909ad825641563bab9f95cfaa6705b48aad8aec154e8b0c7f434c586b8706256d7b3f7734326d95443a71d5a6964a28efcb44e687c204650865098a10941e9428508a48315dd2074508250805e827d60a6aedb4807e623e3d41527870640d56382b9de95ae17442649cd3645b3080d62cba5639c2b0377d33f3293c7664e2ae671212c550a8556bc79b7908c7a162314e145301dd8bb14aa5024ae1e954401486952448c99640552cd99265c5d096573059a9e4950e6b6e91655ece78da7b62606737b2c4544aa452a9f06ab512bdcb9fc8fb4f2c1604b4444888891c1ada2727275ecdcebac9b13e9aabfa697d3752762b880d300905094a104a121425d325517696e808a5e0043101421962a1d32ac202a7c5a435d45ad2e26905b57ea80f7d09016d79516ccf9c637ccd8fe6eecc4e1692150e0b16d00a67b2b81773dc750c385ce18c017b43bc77591f54c54a4f88294fec9ff9926282e892972f015118a94314255b02c5b64a6eb5c8ad1dda624dc18ab158adcc8a5197eba7a8980e27102a36b47a5e2da12ff994bc125a05659d573b74a5b38aad8ad0150f7dad7e563e5ba608992f79d54f0a8f27058a50ca4eac717279142513265b91c2d3da49e169eda4f0b47652785a3b293cad1d96ce4337996501e1c41af3f22c24130645c97cc92749a2444915554c2bacb8625eb1c3154e6be7b4ad4611dac1cc2d9e9e188569edc4b67c0a16817704965e0241d137dfcd2cb70bbe231927281279a5dc92e384eb30fbae23593c738946d80ab265e99b9153489fd28b14e7d192e9544f1615b30996bedde5082bfdf4cd4c3af144a5522aeba9ee6ab5b25b1ea2e38275188993936f986bd1797129f780bb8e2b95527fa2255512d8f42d1e5374e192a9c7a638baf04524d347533112a617a9d2464daebd3dbeb64b17fcc89db6d347b361db55ad750caf84427999fb90ee9b88a463c4d777a94ba96e145f383533abd23c70db1f3be3a2cb2661f1eae47ec37734f24a99659b7288fcc0a677d9db6aee2e8d744c7c6dad278af8ecfba8795cf1b5c5dc47ec32625f95e852d9db02f67d746ddb69eea26bbb69bbb76d2d5b692b95b60b5e1b619be924e304f1377d3189e495f28ac974b2b794b2f1599106fecd34baf0b9acc5173ecda2e8c2b7b985a2309d744ab054f24a99878df38f79fa682a8c0c355334e565d1bbef4eb860dd33d557848475d711c629be54df0ca5aa159d269387733d9d4ea713ce148542e13c89644fa5521ece32030f5295cac33b6c2ee71001efc4615d666b74655f451ad9571fcd17ed5cad4ee6e9e495f26b73398527a567bab277dc53844c98ee3c4182c822a96f88ecc9f3a3b97294234ce2a8be214a3091aa6f88d4718546ecfbf8c2f7b228bef0bb9c8a2ffc9953220b6ec1f8aa2f080d3f6c05a1f1851fefe3552a9bd233af12d566b5a2a9b4b52313132304103f47181184041d2201cf0371c989f72e77a23bead9f2293ccf86a030d3185638acac95a5f0a4f46c79cd02e552144ea546de77d1b33ca4eb549de8537d34cf3277bbfab8d547f3929d275fdcf7a4e4b14c5eab75f2589c3c161fca43f9b6b533e582e027984a79a5acc366611a5db1e53b9c63ebe49b514d8c4f66b8b89c9cc86dc291ac15978bc542f1e25b14b7f0bf6d487eb7e5b8b7e8da24d6b9f5cd642ad325ff9328a6cac8c9142752b45800d9f29e902ddf45b1a50b55c59647b162cba7b4aed8f2672132b2e54947b6fc08c9963f25d9f226255bbef5b576aec062aa545e29bff85173f2d17ccb49dc0dbec4fa6640ddda8982d3ac59c22ddc7db925ca506cf90de5bbf16d9025e5db2ca9d2cc6481728fefaa945d6c2e9b70a849c704649abe4c3ae55611fa922d9f3d7ffca8516dfbcc0464c27039f305243d711201162ce66561ca993036beac09c896a810e5a3c1283578ab5043293c51cc560e628dd25318a7f098a6d8f22d29b67c87caa7f85a1d25b38834565dea19dea91c3ae0e45d2ea1a4e2eb2a3b6a08a752dc650bb644d9a987ab2036cbc8924addcba97739f5ec805dca54ab1b558e9125f5946fa6f4141edcb1d89d160c28bdcb514ef09e96f4b55a6c61b137e150982d0759ed9874b6bc05b3f9025e3e7f39e6be5a066c649960365d1e0af3125fb6458b162db61daf87c27cad22db0940b8f1c205a02ee166083b7b5479515151e15ec49755bdb870e1a26b05a1309d777913cebd2fbe1c1286e625b2bce8616f7f2900dedb5fbc0862c2a1302b1c150d4d3a7c41d03d3316abd3ea73711d484f4f4ebc5256e94439c276687d34b705822037374c7359a0b04ab9c58f9afba34685674acd39f3bc14a635b2784188f64c618d5b902ee261dbaf72260c772923889d3d966c0b06d00e9726d0a285f5543e1d736fd5864616952f47dd972ee122ab745e1935901ed35629ebcde51c4e6bd2a4098c48697bd7755c1efdff4753ffd1bc94bfe577393b7161ad560aa20c1af2fa1be28371305a7cb09c23cc0c29d8d9238b0d576ced768f7c8476c99e962704387bde0a913e720a79c44611b323fb85b4e7690f9562c2442408c51f2e0ced799e27f6ec7490244acbe37d345957bdf9d977d52608daa4c9d6f40fed748f2e63cbe85912736befec0682a032ba46d73e1a2dbbcc31b28cf4907b99d9751ece716bcd82c3d9337bac0f6ca6eb9b5122b43ce164d16452cb9c39812693098444da7b59ea6409444766320e09f9722021358b46fbd781adfd66e7185d52afe0ae939f76999390ac22ee8770ff68e696573301809cd88e0f27931700e4c4f4101c00e4c4604c5c4d249e88f64924ca6fefa369458104385b2a194a43130ad4a02df57dfc8aa841b05bc43d774eeec0e48d3099b923e5ed63963cd3654f8079a8ced53ce04d67f75e8c55aaf81db3e5c9b667d2903e96674f3b99c418b5e5e99934a6e5b191be9e097dcd475d2201bea5975aed61daf4f6cb21830547c45077fca89ea12c22458a0999f55862e48808a4488190ddda510a4f1c619b70f614f5e478b72222f4363b711807c526526f8d3dacb17899f96a2416b5cda9b14963ce9baec0618dfd482dda2edaa2c852c874cda87fe64b284fe70f9597ab31ce47f26419e4c73e94bafec4a4ce4fd4b42c1259e663d5c82c0961e7b5200a73c392ffa4942cf97bb7f90eda60fa9afff46f6077a1aff91b98d43f76803f9d8878d236a00eb1eaa14b068b30305e08fa9a3f76d87b2722c280b091a1af79037b84ddc03ecdda61ffdd6a1cd3ed3f4d84023056d52c057cf7bee374d4eb51da8648d53bbe7bda46c2bef8cd50cdd2e2b5c7211c9c3d6338384298344b08d3593bec4db7375dc2e8374484595d6b0b70586338a7e2c4362be220efa91781bad54bd8a39ed24b10d9618f4a7d0994f708cb476409d0d7b42ec0423ff9abb1d3bf8fb60cbf983dea39de539915affa0d0ccc20f87850a56d52ba32b90daac66e609d976d06adb616d4369eb6b1fa0676e3c98bd41059e64fa0ce9eff9668915089a714354dc319ae1848d36845428dc9164c85c88281640b9621a055e04a86f8f252a24174cd975eb98c8a986c5aa5416992f448632dd29cd6b2285f803b1e11132c83f882e1807b30908889888988898809061231c140b80703e11e0c847b3010eed9f31233892c130395784a3c9a943a5a56a34e64e1b6a1a1a11aa5a84a5195a22a45558a7070b425b1ce63206923ea1ac354a848f870cc1d4d5460eda1484808ee5e8202db10c41a31266d909020b56828b2dc8b87864aa4a13daf6942f3252a19a2305833c57078b337af6e49638a61f9f08b5d6f9784b084a8319d6d61804b3d259ee92af17c4c48b19ba962a4586cb38ab0f7eee925bcdb47d817b0a789b0685802a2f455099b1a23ed9076483ba41dd20e6987b42324242424242454a448912245b21ad38ad49f0a5483e208e74a1c55f435d3aac0a1561ae1ec798d890604071e0a6375b51448aeec500302effd302e591de3d9f353d72870f8d548616e60f325a1d2120a1363a5a1129358437e42f435843b1d823b2221210a634355a643d737afc37ba30ef1a6afd6da107d9570807fa68bf329d500c75d77f8f1ec7996c491391207484ad5c743612acf37dff150187b9fca43613e1ddeca232bcf17fb62da0df67cfc42cea7c6420d0868be849c0fe733c57ca1d54845c219c982aa91e99a3f3566e514d3359ff550981eed061186861a0ff6d484b0a746c5179331fbc5ae0f7d69403e19f599778986440bd280ae8fd425a0b964879c8f06d4f1d0d7bce90d382c713e7bd25002cd9750fa9490442da730e164990c1a8660449443048c2a39ca3c1ed431d3251313ebe74959463e66baa6d43f4c570e7bd40a4a29432646a3f8f849124947d9521f33d5d9f124aa44954aa68b5e4a528e9b9e944751c6a66b3ee6d2488c963f3299fe072965744c94720235c9168145b6b759f1147b320ad246bd826c9147628db8a78442ace1bdcba96ba6775f2a2561b2944c9dfb70ac1e1fa34ca5e4e3ae41d33587284c8d75efba11c618f3d0e209c6f4a311c527ac8740dac01f5d6be960e9704e99253dc61a263de610ef1b1b2694d8315ca226e6500e91320f2ceb49278535b314d6d4bbe5798c8e2f1f92ea90d4153f66d25029084d479931d5ac78a9439a78a9235e528c2be9fb70b02e350f797c8f450a59c487adeec311cf83ea5072915216adc89a2175236d341a8d461ad623d24f398b3b0e5198d349cfd8bc94da486a9a473c3ebd168218f6f048a7f1f2a4e377f2241ca3588f740dd5acd18c5118199bde6b0f2fac9be43d944036e9da87839e078ee11e5ee919d5a146223dfb664831c618a39c3528c9943b2581cc544acad33bf9aa64baa63c35bd2ea94251a82e899b0a2120d952d00213bda314b6a0b3652cd6a022c24a29c035c97419913f3528759c2dfd70c8265b4b20375beef89a4737a3d471ae49a66ba6648ca6728d32cfedbdbb9efc8ac8507a47761b59862230d3e374cd4b5f327639193391b26f664429a5a1b749a55ac28ff8a41c2a31b2cf72a4a048cb20d3750f6a790d67bf398c275412a1c5cfea95e99ab2471609cab4ca0a2ac594319c584c2863327664cf4b23313f1c3922a5d8f3a6237c4a3161aa917ae48a1dca582cd3d8741d01d758931abb628733468dc4aa15d894e1cc1b908718984c717bdcb44bb3dc27b5d12997995d26437dd05dadeab7d65a958e6e5b9b29954ae85539458737946619f59a4d3a942f2814ca1e758ae713bb931e2adb9a7a58bd4dc36735cb64e6c9f6ae94573f0dd962284c77d77c317dbecb32cd98542be8d0ac42ee4c2fd9528954b29f6599ce52ada73c64fde4311466d342d0d72c65a80b91a19ea5c2ec3174a674d8c3dba9935eda6ae84edd7b4a3ec901b7740f6f975627e9b0eed3537e52437769754f8712c83ee1e0515f7749f328a53c4587f5e42729cd43f552e994ba4af3a8959e9e3a999e650bde4db3d5b34c01d3e64173fe53f9d4e9edf44ee21411f93ffd664e3abfe865680c7dadbad433cda169975e73e8edd54ba73fe7d35c7a297ba7596ed35e85402a39a55461f66a6d0f0364af3cee3f9bb22aafe6b087697ff7e4fe44ef241662bae60e1878c67423e64be913c52aa13c853b8b531db64ebafc74948e7ab5a739b3f629a5d52a7e39b253cd529dde5ef5d36beaa66e4ab3541a88b84f3f9d72d863d75b198a33d5e9e9f49de6d19c9d2ec6278df2c0337b55ae9f01b89f5ead3ec94164f3cadabc5a5d64350fee27cd23e596e6b0ea1ea6cde9941cdf5334cac9ad0e59e8dad227285496d112ada50c55fa49a994d993c76f26bc3929954ca59fbc2b652384289df4f8ddd861fa4cd6d4c3f42e4e8a63b22cabaadf8c7a0c8dd94aa7f49633d336dd33fd64ea613255d3e9a4caa169aba80ef18a52eede53ddeb61da3df67dcae6f87e3afd7453fde95dd603e5815aeb6dbd1fdd661ea7cf7d7768c40ebd5fddc3b44f0f7b984ea652dda31c1220ecb1bd0b6184088bc4e0031644617f37ed24648e28061fb0000afb3b0991777cb9d67f99663762bed08735a1cdb6b73acc8438e1e0ef6104fa7e6bb4720bb10366bbe7dd9b30dd3d4f6676f987f99a5f1ab0375d31fbd25ffaedd2991c37ab4226cdaa4821a2a777c9762adf2d116467efba1bc0857be81279c8af64206e80bbed59be9739ae4963ba8070adb8cca87fd47d750aa47ce224461df6d8dec99ce5810001ae979a5584779af281d9a47c60dee925a03b2da363e2f6f2a52f23241033bcf115a7cbb5231542a062084076a44208465876a442082bd840c41ad2c527880e98e0821f50c10a981666d7badf6c25b6bce77297511ec05408a104bb9b1e77b365aea17bd3315fab87d067b9aec450980b9bf43a26aa5c42974b8a3dbf02840162921929c0614c0c8531400c104d70e85ac1262974390ee0a898281164cfdbe4e410c926b556d3b41ea66d2fad121267d298cf9e8079805552ca52111c3ff91d4adfd0cd3927cd5772bba3dedcae361fedee34cf66bbbb9eb67997f3b6cee3be1bf39ed77d37e6a38cf786ca4c04f65125bcb1a049639ec67c67ba02ff903b0b586e2924717c423106654984e64bc49966457d03dc55cfa1520fa630f4d9491614cea13904029c3d3fadc882b22459159d8e1543f432339fe4a0b3a03d3f87b26863f4f5862cc8bbb386a1cb2162e5b3d717ab71965599497597ecf98a4d2a5e7cf931e99783da1c6dfc903bcb119b3489356ae6963904804d964a7d5b80432cda020ef17e08a4508c31d6186b8c35c618e7ce474860ba42092484646a4132d94b96085571bd9615317655ca2a6595b24a29eff66680c3bb6da60b0e783ed629872eaa8419d09edafd153d5e090ae3e1805102c5952843b0758460568eca63cbcca9a383e3b5374d83383560792dec9006cd4b3ac421612fa12f6963e6c896794e03491a2497e47072492605a77fc89d73b304248e39bf99215e1b706ea9a6e89e66825584847997304feb7830d1752a2c07fccd1226bf1d1526d24e342182799fb0ee1bf70d4677f9cd7cde652607a3d3f19be1340dfa5680b78734288b222b325d73539df544162bf096f5ec39611750ed1ad5d65eb78fd8645b4dc7ac22010a4361cfa4bd41529a7a4cd7ac19f59078f4728ff9da3a0e09ee12a030de393d7bcc255bcb484cd72ce9e01e5d488386ae0c12e5962540048579bac6e8eb0d329406d12fc7bd04e6cbf6f91e48703a947b0362c9d6aa104191ad6d9a66d1dc6bbfba6a0acc25bb4e57fc62a641990a4d9792e99a3468cfc7b869935085922cf464814724615105c8dc01329f98ae79c574c91ca39433b4864a6c2999c4ef8073ea7790cf38470a9561471dbae868e1092d0089151862b2036c86c8321fadcaa864ccd5c54d8e3a8668060000022314000028140e09c5a2e180440f4459770714000d95b250725218674110c39041c818430c80110000100000d38400ea5474e1c9caa09e720223ad12d5ffc1fceb4dde6e0d24b2eeeb8853153e9861deabfad0357a1546dc14da3331b96608219c993f56758b9830b4441a3c1624be213992a9c86eb1947b4f770a05cc54a2fd44c1321f8cf011a1f45bc4d4036812d0f72c3f7e0c3cf21917facf87e6acff95b2fd9b65330587c75750ec41a9c2b9dcd03acb33595ee3cc29c44645eb288631fa7679d6ee0a25f6cb5a307055903a68a602bd64006b78bd5f2fb54d38fac0c4e8aeaafa15f4961ace796b476ce4c2338d2fecca09a16bdc98532aaf5115d96fc7e24ba54a1c2499a0cf5751f533cb883acb1bd958d298fbf1fec6be9966366d766e11cffc6621bc9ad01538d1c826187fd523247cbad8d4c1cfceecf11f11fcc23bbd6167b92c023ae28b2a24044ca9af59b5c94980f763d7c0c46c5aea7e7a9eba47db489232398abe9f1ff76000d54c42118e76134641770035aa69842a0d9b2f9e18c2d5f0519adbee8c4da222ef28d302257b0f479f075f3f39d2581e2692fbfe2ca611734f7003a23df8fade4f5302c941a8c3c73c45dfa8aed8c0afb5535a32eae91f2ec39d1a705e23dc76d926613fce36e4144ebfbf7c46ce31dd0217322fe133b04b86307458b6f9af78f9aa55389eeae3f5e055edd4f93aa1db721ad77939f58ed55508cd21a2ec10c3d3c7edb9d63a9a3df6438cd1905c065d7c2fcccf47a6e24e4f65484c3d0d4d12d3b781b4d1da0bda223690e3894f787b80dd064b54523927907896bcd2601905860b45651adcf83f1376b7007337294d4ae1d8bab8c0ff555be07243fc6eb43562959e34b65d863739ab95b7f85cb1567b4e137eea1ec37fed9b0b34732ab798e04860e3401185e5bc4a47690a977b53fde7733016b7d2a93a2c00e549fef89338c110c391a141e643546f7c23672a1a9470c5c8cd9bc896518802dbd7eb8e616d280011853dc0b741b1e38957a0c8e223a161344f0fa0140a554c2d70582d45b58c2e26969e29ad99c186fba3ca6e16d0cf11aac8df08122722a8b00565f5ea429981bba63399b631e9c18842cabc2c6f617ca40b16d7f329375880fdbff67fb2787d8b99b4e25b1266762b5500daf85802911e165434ad7d669280da7d6d011c139dddcb9b8779ac7bd9cc19bddbb6df78be1b67287b9b8f804f5beebf69a707637e25c4ac03577cb5c95ca0e3687f110d019de15697bdcaf55f2a5143d6821a4d976d20d2a91c7bff2ad7b5560855a7ac7d7febb5205d28507ccab834d8f63e53547c98207067a0d9a602cbc0d19a4afb4babbbf9286560f34995cdef4d62ff9d036011138f6389f9effe516d8f566bc9818b668cefecacbd0865da0f80689c7f34a95149c5753b632ea0b48cb7b2ae6e1af7c609cc91084c27ef477facb5934d204b1109f4fde8d722c0e05fbe2728d16f3d79108f381e29e47144d9d4ce1a583511b48076c2faf271708a30f96200b328f260ad75590e5ba44cbe5a86054a37bbd355580e5c6727d8c58e5103e42e2b03439a963b5819db1732e012fb80299ff4f09b48cae828d95b1f0ed77d73eae9089813d060899f2cc4c7b35d1161ba4a6ea027e1ecaf62c59edad758370c34701cfdfd27a3fe7b8f5a2e5e37ab3f79eaae8a0c7087f2ad2088ac2f334140575f1722287db0caae05f9af0a0083dfa404be30150a061598f0aa1ecdbd8ac6178d98080cb4d2747b9f39fdb16ab9e65746e6ffaa4ad7e129ba44ad608ed4788a6111a3516621cfa309cbc608e52a12561755d7e2684b46ff07012f65714db4c4159c94964c5ba6603c1a95c434a931ae2558c57c9c6f80dfb6652267a66203034b5f72a0c59e88b234b73625e9781af6adc61228e73f25faa39360b9913081abe2e2127b16973441d8e16384e9d81fe2ac0277fb8f21c577df5b14f7cc4fbd53a873e3fdfe80ef32c15477ac3f0b3639b665ba027a31c24c287987a6b4d82bae8c790db72a833e2d80fe89c19986a27551bf040572103772b348b0a417734e9ac4bb945ed610bd4ac1f236b07c0390d1223310196cfae4b8a742c6c8fe64962e2e81c33152b8b0f46948fa8360b28e987ba63802d2036d53a25014319a2a6fa30f0e95e7f05d136d1b6d8c208d0b55ad107755bd27afab168d0aa02b7d10efbfcf134238c483f7c48e7a293e896ef00769381794abfb2e776b49f578b0ae70e5a6fd4d7f8d50e65bdf1ad1e68f9e1aa7cd57f4f6e4cab6e518d74a749c5f0928c544b2d617fb3eea1bfea90e7e1225e4b40a8738bc8f56ca5d8f1705b59238805c60efdcf93e8b82fa9226ec8d230f2f709583cca8b882d871a1081345774d3d0e5374b89005877983d7043e8d84e535984cad284af1f939cd767f3edd95d952a1796b13d9989704dc2f6e32c978d81f24e11fccc1ae6727c31e116c02f23f3dfa3d1851a1bb6c2949197fd02363e2609c613f4191ee03ebbf319bec502fdd57482c9bc8356ab682573af3a2139bb3266c964f558c2caa9c42f4002059864ce8312a6821452d4f56c338872c545fd992983d1cfc7fdc45ec86d276f4a796169b648a9670893d5235a874074fc5c891eaeebf11aa2904442db3534471117f808a051341d328e55dd1a88e1533a0d30028ae4fd50b6a7383cb8aec644f536f3415ee9898d79aa227e376b755c699be32c6d3dfd243e07182cb4cba14174ff40cac6562e91ce4a9fe246200aef9da0ad59a783f23ab695993eb30ab323010947d920fd130ce174c7380c8638ddc7d4617eb1b4982208982cb86b6f3f98665644b3891dcb722056b2584d2963582e34dc830e92d289669dbf4a632bdfc3d54a85cad5de3133aa527172299d6866c529c99c045b03c4089272b70c5d477b657bd74e6b1d60b16cdfefbf276d3f1ddc83da03351d14fb62aacc643055c465a5caa405396fd1c79970a107492783585d626dfff934c2c689b9d3155b6cc4d751602cbbe2c4e1ddd1e7216be2da26dd88eba60d20625b708eb0b535a3811f2c5574396154949598f1b7fda4c3bd792c2f169eff0c13c4090fd97c1f62beeb927ba5ef6936f29ab370bf4cbb94020e681ce8243e00386d93d90c21a3b923cd1e9f093489227ab00108cc0f8620eaa80d10d032525737b9b9c41dc86d16f03d4a66dc36e6a027d2a8a7ff797681b6a6e5fda700df6311a7b830d4881856eb85fd2f5aaf6f01e401ff996f564950631cd4dda902e1603162d514668dfa7e7c4d072eadab42bd0ced184ad7e836d0c9810e56944fa90f649f1b7fd2d53f57beca4536d5cedfac3a71a1a1e7459387a56cd870ecad2fcc9eeca2312a753ec4f346ff986283f49bb34b8c4e2509bedd2e97c9c2ae43ead72d1147c7e3f94e5d2bdd08435b634844b540d0184662c4ab50a35703103fbcd3b00f550f689a96b7c5268f0e6dc7401bac46b4b66c68f06522562dbe830fa3424822797a14f3af99a5520631ff6125f8a46d129c3d04e785b6a01d6b0d43a8d49e68e902a64c490866adf13a0a4631ae3726c26a8c1e6b5951267ff396c98bf387e01d55410996d89d8cbc1fca530a320b0703d3b684813c2403a42a3145b2bfc9c813029dd67829c3a7d3ecabe775017bfd74eadd57bdbf1020f2aec4b722481f37685d4c5ff7db253e807ce1a95d96be02fbf4a6f9f183b006f4369299feea56c4c0bd964c80e3c3846fa29b1d7bd2d8e11cc0c0f617d940a98143578e13b73dac142a8d41964e08785b34c7be98f2974d12ad48b80a3881793fba7fdf8a7b69143b49468c00ac927dd3103608da134ee20b10abf3c941937b72316d003fc12faacc1829e6dcf885d2780a8524e2050c5aaf7e7c7aa4ac50da3682148be1fe7d2a91abbc383423d7c8e1ec9d0032576a22231b955281d1011c45b6580f7f111fa313dea543bb18093edb0767b1299f7d12811c6b51143a17b655b8c062e0b02814ce5245a318b8c4dbc3ffb4725a9708cd6aa3cc6c7d6b82c4870e1a8a3a6006719ff8e8c53522dfddd63e168dc0acb93db6ca9b8284921b3f8937de528ce5cfa02ff60ba25157d63497374e0e4115364c0d9f82880c3105cb55f404aa6794e915d84ac018f004d308cd328fdacca32f821c24e58cc92d228509736f30e3b398575b482fdd1c7c36be551a17a4d69160122e25eb392cb771e07540e04261da3296ce7e35d9436d848c8fef2b1c562103a8e9a4f986afac0cbc984131810d42b7eac188f7b19dceaa8410805e21310c51dbf16f6d5c7fd682d4c73107a34f904cbeae1c9044828edf7f8a81e44845465484c2071ac33e45549a7db57c100d473f1ea529d0f3274ffbc4362c4c549838ec8d3f9f682acc3a8152bb4f2696ed3af6160d66e9080458db8fd231b0bbde0a60f4d624c10a483fda4b0bad30a57d8a165be353424c02ccf2354afc13d752c334204432a4c7fa164f902776da841dc0fddef00b0e3f6839797ebd7e5e298882a8f9846e15368c2bac3c13e2abde9045610a95b6458cd06cbca4eb08a7530a88e78867518edccfdb51d8911900570e8cbb9cb102bdaa9d1d3d3b2d8abf5ba28870fce265dafb34fffba4ac54e08332428f12f328d9ff499203c0c46f042f393dc09875c8e69ce8b2fa06eb9dcb5002e9a45283f4c636ea1623e6d58f5f264a03f5b4e65f1af9d144d0edd6fd7cce55e8166252c2587f5bc530c9af1420248ae256b8c3c4d3b08614dedf599791743ed9639a0ff5fcb182083d80979205658a054dbea3d5582740aceee5726bcf46ed5248ec5182c8b4f432fc12d1447f0125d5f53c42d2c7e06400d31bc801302f68e32da4b6b9952d420cacf2c2b812aa3ca7a7a0185982d4b3865f012306386135d16b364feba78ab7b65fefdb8e086b66a5308b8d678d51763f86c5e19c51e57aef7f49349452fa4e358b70de3c25d7d1a57f8643af6c76e5aee2e37e833ad7944fbf2dd7838b02d581f94ed454c8576ec459760f963f4c8c1ccfffb50497ac1f937e5b675d14f81f086d594020e2f84b6442127a9a98e723fae51bb8ddb56da705abd04377de1967e7bf4b0a040076ace0dfaee7ff251cf8010c5e942bc61232b9d42a63c0bd32d6efe41604b0c25b6a68aec47c219a8d41a5d9de2d6a7cced13ddf18eac12808f11e1aba0162d0cca66facb51161dc96b0dfaee340fe10a05c2e5e8d4db3881e8a7a356e9f6a9c5e570d26c6ff8531a1924d97ba4fc7cf192b7889b25084ecfe8f715caa763b9e12c255dcd321179a294c60a59d6e28f72dfa5b920e4516eddc2d4488fd80cece7289e1d0e7f937ce605f3a4a4933bba9e0d86ade3cf4475fc4d4501bf32b091ffc7c6bdedc3f0e3964de59df7359a71fe004d8d31c9e8a14adb49d0025b83a93853f7a63deaf6a290cfdb4b9b5e0d5f331678bcf692e9632a8a8387a642f33573d327719630c78334373c3ac7093785554002086728d3f9f9e6215697873b4dc0701265b596b2e023aa6c0f442b8e5eeaf37a52541620aedde668f9d1a31446514d29461427c8985944282a0e13f507b460026a7439c6058117101f94b1632372b83cff40966064ea7d150046df477a326ec76a69a0dc3b44e328de210858396f8b6d3617d816b94c4d7e65bfe3678d18fe149aa680c717566acb394b9f4288359fa68aebe4e75ec0ec5d82c854335eeeff5310d8d8539e2caba20c2c40395c01d56b0c600967f745b62e1935aa49c64734803be6c36485b96acaa8e199ebf0605269681258130fef014bf9f0995dab4c706adc88620dec1f3745ae850ee1c54cf43e3b416701d89746161e246b99073c740e257cf6965950cd96d63c3a0a4c431b1e38ba1c61f60d3aee47b388ce7863161cb8acfff340adb19e46b0828be1bfebada81e199c6920a54c2050f22b398b14c8e60908744a9e86e53e4929cca16964c2febfea10f99e9c8c33cc90f5d505869fac3dc3b01835fa404d07b962fb0aa8edc32a086b062903801b02e8aabc1cb050586d70c1050f733aff9cbb8c606952382e546a39faab63a68a8c983ff81c4312fec050cc0780229bb52c60b42b27a0d89aa65c6df8426151bb9b02c2234774eebe5040f7a3c9724b8dee3442d9279bce99fd0a842a0fa1e5fde0abcd84a61a1f2178342cf2f49ba738fd2349162e69b99171c905f3870a0db640f6ed4b775217e8437589c743c711144e2c77bff134ab88ad04652ff506a06625366f67623ab2a5301fa9802996cd3fb0ac9e87276fde282cb4dd30653965347ba0aebf077d6e25a0d952975ab26660f137806f7d6268757adc4762d4a9d91ee49a37724724df40534daed8e856e53d9ac92b8b69b0297837a4bcdd11c19d19266d7ea7589f52bdf6b24a1cf05eb2aad3dab240a4ed74afc15d9ae933bc0d6517bd3d5cc881c68ec8155c494bf775713805cff2f23bc3a61f9119587ddc30c0c10165cfb51eabf65fbed3bbbf0b31143473537e9c84894c14d923b634aa3dd9af0212474eb2feb9f2af84d2b1ab75a1acdddaf8964cf87972020de5e48307c7066ec1150af40479228242b9eb5c56cee80a102a7d0c59ccd785e99911e9099cffae0d360bbbf8ebde13a711e06b3264633984e9390e03d7521f9b90212ec67828aad30816ad93db03f32f8287f35f0ab62b162f9870fb2dc2e00f68a863955674978e79a6fa6edc6e63ce66962a5fdc5f50cb0e0f0f19883a36ba20f308fc1fa0c42c6bfa88a209bf52e2cdd026c74b5aa068e5cf58352fb85826bb8d87dc1cf865a3c4b89a8fd0ae51328ac72f90e2809fab1a1168ae2b87b8e7c50393036f3e1cf81f50051624cce8943bad1fa80b9ec1edaeff3835d74ba0b073d89ac325cc3dae9af1e044b715f311ea6391028366d54e6af0857a786e5c42089ec0478c5884a8eaf908adc084c87e0d09c8b963d4540b5052f1331688cafc2ec8fb5a1cc6c6e0e26bc2c60137633f72978664b77c7a9cb6ec3854c87d33449d6422c4e7a44a0b9b0c772aa0b93c5f5c854f1b7d423636c17f0d2e3acfdc2da5d7ec8d8d04d9dceddaca7890e58dd4deff3156d65493009ba4917e5846846e6734e7d53f629e292601b68c55b8286ad369ed0c7a5ee2195267a2363447347144355f543487d3fbffea3ea138c10b3873d221eabc91688d97e7e38bd7e4be191f4f5905f81248b34ec93191d0377cf4eea1ec7225d0737e72e17d554729eec691eda84e41772e2fee29abcdc322d0da91686e28f64a67dd0a3ea3c4e01bf60fe7df30d0d8b0c2e6061ef7a84fe43e799de1f2543dd8928b8531b024dc2134ab8b88e3f453927dc1a40a30a76fb16f462337390f91d414a8d3c571d03502fb92f361039b0df2a7e2198154307558e0934560c0cedede2ba544c4990abb33e4dbc35d1adf38217715a969e18686a1cc984486956cab5ca4f68e9b126ed898749edff244ebd41517f840ea05e628017cc6c6adbbdcd526a510c6f2015eee8e972591e7e1e667d7d447364d3b8d9468600d8747b13c7c89a23451e7b55fa4b98c0a3f76dcd1bed1dc9f4210b41b6b82ffc898163f4a5986341508be02523ef89369f77d138fd0979abe05f977846d085089bca21a9cf5a97c0a8736b8b9993227b2e54d0ce2f34a2e044fedd72d9d611613315e8c5f44cc04a526ff61e1e6d545b7e1acc2a67c3f9860b91576a0d97321e45a6dd02523b118aeefc268fbd251163342c7e575c7fb995779e6b523487a917c5c0053fe90d7a6d8d316e2def92442f98b73b1cca1f424c3b4179bcb4da2a9520509aba05c840c607b02a676fcba3f93d766dd617a0807274f36e1890401a41f14408bad31a32470e53051cef99490678ed8fc814778aabcd898c692fa9493acdf41e518ab9e709a508216a60e300a6f4d47b3d4160ba62f9060fb803cbc637e8c890f9af8064a34dd98654c2811d8385feab0a77819e19945dea075c1b27ccb79e5f44d8ed0dfb9fc90b5fff3f4a0920bf308ad45052ace41e7c30fef2c811bace066b60089ea626dc478abb04fb0287b12fa7844c2bf213faf12867a329e154bfa97d8c577a20c64ca4ad1bba947197e7018da8610297b6e6b50ad18aa790110f52e794851fa27590fe0385a832d55621ce4731291be6e23303ed01eadb7abdf6b9579ea6af04e582ccda2f453309fdb8936252c2da9983862f269af6a747596accc618b4087f1c8aeac9d3edac7c04e29729dda9d9d26f40f42c9d9a901431989924a52e71857caa9ce16d0766a05d637b95b66b7f3c891236f72ed9c966d8cc120ff024605ba4df3e07ca27e55320073b6d44ee8817b5234f6d872ae0a26f82ca8826b94ee8be3db9fd483dfad8cafddc175b25d72092e0bde5e18a72aeb1f4639b907f0ba022d7766b2f80acb4875b98a23c8eb0d628b0036345061972e8e4da70cc8c8d02ecb935d6a06ad1a6e56f498b3c20003d291730c7831d664d50460b2fd2632c945b84b4762a1fa23738c361402df71fd9946a531c95938011fb42d69d636484223105ce75ddffc46c475ad6183ee6503d17d09be5d4d6356d5bc63047dbab8e99c63a42c6be8f45604f8327d7e3031c31c5eb6eba14e8166e0f065132213890eb9303e5192216ff034b7b7616055648272bfaca87790c9e8808d326e3aedc1f1dcc537049a7b7efee6c50009f1fbe7bdc96f174262f9813340c5fe4f5149f21ae34970973106b1d5ebad7bc92f85ba98c3ea98ba048be57cf5025c59980d7c1a9565fd45f0f31cd2168f5f3399fe51ca59e9ff15782a611a39623121b02bb24880ca54f1e4581516aa935315c7039a27fe5fd2b84417f5a01c69b288ba0cc7f0be6121db3cc9dc983e2c0614aea9fd0ca606162c30156e1b69bcf14d9361bb61e56b6834c9baf35d55b64e32c262bac532f480021971b25c651544880512ca9530d76886eca0a21c9d2dff8082961f91755ae97f5edbdd39ee667e18b9fcb0c95a3f9f14d0e2db671a35852a75149fd6554f318abb61b19862945ce74eff49c85cb4d34861f271d68c2259c7e72770030fc812db3799e1775c04cecebcf979686e7abead41c1e4f211c3f8e681c6b8dd4b1a14e52a327d8993a5371cc7645752057438d9f4fad22fd604c10a235d98430c94879a47d9745a4406f82a8be2cdd8233364041dea14ba4e28ca4e9fb4137464b2fbd6b08f1bacdea69609f4c84f1c066406d3ad2896dca6e613fa951446e5f2b531f5ff9004f2e2a1d43f0e3cfa52cead47bd52a349fbaaf2503dca46ecee9051364a7700c42162217178be3c28d4da9108fd361e367a91b52c1f528b7c68aeea84482cb26ed453cff4944c6b77569cf1bb0d57c15bcfb74ae23a9dc1f06b9170e6ca12ad640b4a13ec110a3275d44998fd457040495f7efcd3bbb4665c95ca3a8273e58353e2278c883351d6d4f2ba1fec364fba706a8101249cb17e1e50624303950cfaab8a084bcb114f3c84a3698abcc1398f9b0fc6db40f9e4e798dae70bdff792a8697894827ee07fdc3f74083c050dd618648fc044ba1248f30f486b7a5d15cf5a3949148da160e3e6210b6ec09462b104470444c57e1b0714fc0143cefd4e64ef71c4fe06a8b91fb7fd8b387e7d3e79ca52175baf728699bb2f005682ee5c6d2880de54496912f0ae64e19f4d7cba60007e0cc4c1ca68128ac23b447416b9b5ac3027f76fea5a2b20d7edd86bf299f339d9378a52f5ba3c368e2ebe1c41f51b35a1533f78ff8af89ef630184dc0fde1c14970ccf2b6931e65e501e45fec198b4e6d72e54683b9aac41905d92c2e8f4fcf7ff4bb8e93f2a9520cb4551733ab66b7c418cbaf145107808384c9cee5390768f739ed2a719128d2a815d4ad60325b457ca17d91d82cbad55af83789fb33650ecbf31d2d216a7b783ca82e99e17f800ad4006d8f3560b4df180fda314d8ba869ff5bed7b9da85394881a1ab28aaf34460ac61b92134b97a372269601ff4f8029440daa6bbe1c9e2ff7223565b418090ecc6f860bfd88460a5e1172c41aa901b5c8e26196463c3d10f976fe6c54915f1d40e382d4cc083c58e64fc1f63c057d174225cbdf8f142836d089b6b2d08d8b25f0265e9e4f476fc6002b573ae21378ced021a24bc1136652fd39ebefe97ebd1e42083219b5e419b8a09fbf24899418f099e53ff33b5a770b64bd5f989635dc1f563b1a28a0143fd0d2324474b8206db8900988df6816532f9af94cb53e07095347fe004868bb44a7e415884af59ac5b5a3c4c962e21606289d1a9d2b4cd51bb2189c99e4a479c61542d835d3be09514e0061234f63d01b6cd9f4a029530a9cb61e4abb58f5c69b3f3a7c69607e35958bc33cee8abdd47355bcdbe91ccfca8e860f92702af9969e1bf527fb00cfa740d51e210f540146b35c5955a4e4c16f9b2775c8efb106a90d8d86e8cb657b0f1e88e5e7246642a44449e8ab14aafb117a406bc989ad9fe1a91f4a039f771bfcffb882888380a1661352f4d6c2ea149011bb50d5fe10a7f60a8de3aa2c5dc3a7ecc521bbe25ae79b7b2adf2f14f66bd93e659d202818e0bc784ab0b40337056eeb58b8479ca02b4c0322af86a420ca33e50bb97698f09c28b840de0416430e4a1cb7cfcc865acc09e21f7694034ace41213a2f8eed1ecce65257b660d57d671bd5b0026bdae457671f2a421aafc005f9d5af0bbfd77ae3764e5ab2c83dcf81ca0302c4006a333b8765a659c9e0862ea928ed1c1b2b92b13769d8da472c906ca63786ce8df1c3ac9900e8c81523e6faa0e6c0be7ad535a4b171b9b028dc793c738df5332512840c05db8703252431c8f3a20100b336d531e307a45cfec7467e9fd3b9aa378885573b04b18b3083818c4a98c23ea91c33d3e4fc91bd6ae9ba5f928a3552b0a19da43e71c3cf714cbf2d583c7083c0c2ff9c3db96359c9da5a0760509200478f979f2171ab5dd8400142dce128eb69ba644cf918a0dc2b71161935579450d933948ddc26ce7a0d76e57471caa5d4050083b9872cccb80ca521c429fb2bf66322bb2e5b2a9308ab088017511b89c7075e1fc8b0eea34c80b4d0683c5fbe11fdbf89b86775ec636ec42c64e3c0983be94a905ba08f7acd440d7547d3f1026f1d658cd6389699bdb67e7ed29809d959a300a2b02b83a264ec55fc5af8eed573149cec48c25af50c99b59ff30357d6711c5e0b72ef68e416c80586391dc096713858facc29d22a886214958f37f5e852c70b6a442606d69a145e0cfc8174befa723c0fa97254296e725b62a03d6ca42521157e4853d330bf53b8e4b7963c13efc2e7b62a0221194352381a85ff07141007c1bc306850147e3fcf985cf3eb976e2d4861a25b84e8c0bf98607fa7c91ab5536a9035fed16ef43d30b079c83e2de76dcdf3086a711a27ec3259a4219316ad555ad3363f94d9226e10fd4766ee0bd2d79242a221e084b544df10bdc022dc0c1e26ef43f83771ca49d331c831df6685e3a161bb43c8e20a1eb736450ddd87d515d76d14f5779b3623013592688ad2d2e3e80b75f352166b3a9b84521ee9886c589bbbc9ab366713d60707f682d64289eba776dd86a97d15884d05fc90b9ba9949a02a9de7446a21f4c2e0015997063be9a96878dc58a741f9a3c121c2bf37f84122dbabd8e40b5f07f8e1ab3601481d15c55bbbd3d466ea04fe6d692de749a1768be8479d17a09dd1d486b623996cc329fcbddba640b26cc618b1807cc8e721251533b971fc8d48bb9f1b1c1aa741e99fc8339771256f77db4874934e1287ff8ea56770467649aa093f9b034543aba9d74e9fe4952840321f427000f48e30336cd2f05feb62d94511721b348c89cc4f1fb0ef7b00851bf91b9061373f35e5f933c46ed25d94a9d02607c76a5a2dc26e38ff324dbfb7efb2902bd4663162a98a91961f61bb5d380407a5a33125d8e5a32436c94512fcf4d84795d75994693023efe44ade0d00e9c56cd70214ca8669ecc236e2093f45a8f620a119993424f966a0475edf1a288553141255a73142887c92cf01685019908348c120b160bd8d55a4cf5696f36950ccb687244a50153b6ce0044afe67dff6e9b68e9a0b1fa5cd0c478ce219dc67ae192f8e21bd21f19e1068a64a446211ca99ad88096fd0f197d16f62fc08c42299adc2ae941ecf9949a02fb3800449c71b6391ec27cfccba3ed9782cca55b53ca7ba20f4ab4b9beba4f5927daa9431b70d70d44946941b826d15004c6e7100ba17377812ec2fa0625eb5577c06e43c47086180207b1c9f9428546c0ee817380f7d71ed9f33657bcfa17b8b82fdf796af46520744d410109367ee60a00e7b5047e06b84cb50d9ca9aa95f5070169bbc1777fb6b754346831566ad86f350f3eab7a73177c96949cd16799efe040023d071a81c6f35e1ef3f155f09c41aaa4a31c28ed45d200c5d1702f53cb7991749b55c06d6c30a6763560513fa3bcca4f6da7d166ae0a2bfb3615ce1d04ae48833201e4b42d18e559ab997bbc8c7b46b1e9616d49c27fe268d1089f402b11abbcae2e75db49d82406a3920898f5cb884af4c75b8e679199f006216eb967c28638fa150b1e4f3c884ecf7426712374db7baf6591fa633b395350290c2f294711ed72ef915dbb45a33cd154c436866ea0064cde010fa5fa92f9f44abcf17a4191b394ae74a743754717b4258d77cd88d3d453f84b130a6c67eae14673e753fc60a0d6e2e646cb7d36c152f2545bf582cc1a80709413aad0cd2c8842c53bd665da45530e7cfab532f5a19bad886f13b0dd112d2474de09fea4dfe05d4af9b19d5d6c5a6948d0e994f79f65d2417a05f9fe9fdb6c2fe6ab6acfdcfc03ce388c39609e1c0b61c327101caa10fd74c8df8603f8329479c10b8ad4410189de5d791cbd4f7d687b9652ed6b50ae3f3aed77ca58043314052a8107fca464c2dd2881d587d2d42b2c17b9d21b9eb3ce155a3243399170b734410173389b7d25901edafddabfcd5b071a8fd9958922da1ee13eafa774ecb686cd4b6437ccfd905e70d0b8d82173a7b200fdb1e691beccb78f643797365bdfa96c6e0771a7666620f53ce6d08130692907642d9bc6de058a8cf5adedf9b67fd265608bedc5ed1b334dcbc77152813b6eefebef5a01526700c5e2126070c06062c484c65c8a43ffd38627941034a44bfa938fba863e65d46bea80e753b30578be80b57b035d5249efe0a919fe38ce79276e3176cf4e26ccf09e748c3c03b611d6db17bb3588b801e34761b3245f8f3c8124aa08240225d50c4159ecb9ead81603c9f852b669ed320e86eeb33bfb3fadb1083c21345601b9321c5db3cb021a99e8f7ab0bee2febbcb63f3f6b65a157829fb09430e185fad2d2e581e5397283eeddfb37a89359f7269f6ce0138188c50ba946f01c47320b0c5c37451c019ca4011e331fd44d98600dad315c3ef5fd5f1db9d727d6b3d9b4b77b73b157cafe3d924bb7f2fe4b7f9c63b1ae4c82552db6181f0975c1d279f0319632ebd2c9f87333b2d61a5bbf9530867be734e3851a1b52b9be0c514d605fe705e68b958ba54474f42bac7071ac630b3c9ae8d0050926c9c6dd5d1b5954bd6387f3c443ad9283fbb98e03550a5b65bf271fa086d094749002797b779685acd4543afb49207c243f12bb8c09e8491315890d61cf86678a3a5e97492c44038971e5d1770385672a4b0cd24e2635c2e5fe67ffb2638f54aadbe022c1d90a6b81666ec6760b206e89e1740ccdc5df72eeaf6df861e881aa081ba9b8b409f1f63a541d6c2e57b9943d7e7c2ed014b27b82efd965b14c405bc7df32dc168b0e7029a6cc80748c7021bcd3ed0eb241510c01fbe9c13a85a93ee32e76f552b94d16187750bfbcd1e8d647c57f3370e23f41a38cd65e8a215030cd95036f5c90a88ac3cf0d5173ca5a8b71f6caa10e47332b03c96a2c4272facf2c9ce35711155a8de0d4576216f7186664d1774b5d8a28c37d3b7a08c54a4e177659d687cd0f7237fef407131a92b9cbba074153b6666fb32d357ccbc63ee4160a617a0f00f6cc8f9437aed229bfc0fa38d319f4be8a3c3922d0219e68a7b9bc82ed5c046a80b8e049011040ad984638f3a6ae3580b8b94fec53816100e49671c44609d88798fd1cd5eb01ec38b1a7b37ba3543783ec844dd96f89f436eb67c7b6854b32a93ec88029e93e1169dad12240a56af7e7a2544e4fa79f6f99a5533577ad1a02d9140bc1763176bb712af6fb2c827b3dc0e8911b13b302a3fb539340e2f4bdce2217f0d6041e7c2d43f7e88efceb0abf035e81afa6f49e6225829c2ffc6a5218c4298e2747e231ed2641cd96495c9075e22cc654348bcae9a18cc2f9f8dfa656c0a8113b7c524615eeba063ebd2807aebe08883ae55a04af650ac0367fea0fa6fd4118d190a17aa71262d836d7da8a22fe5d5d4c2adce6159222c1401b6d09b0b331d964a826bde5474b9138675c9c1ef3e7946ae9f800b18e77184b666c40e4c70e554bde24f8a437f82f405805d0142a14f0f528abdcf477eb5dd1e59ca4e3105b64bb0be9aa525cf8f13c9f3d0dbd9f9de982c712d22c8751899dd0ae0224c97cf59174277bc99f10b224bd2256073832ac6ced528006545629e5f472079185847b3f4045e4840ace11e6f368c3212d8410b91d5264c5dc944fe1cd8ae0f206a03ba24e976685afe7104f46d01209ff666ce8db9c445de9aa95f8275b540fcf3c52889f039fb83fa313356a7075d093ced205c70fe77657bdc5b649d6e64853916e30c600565c5afe8b4538edc6ba98ed8cafb0ce019d42a5c68672c26ce913e95267464f5c2040960ff0f62472398e61d0b0dc23dadfd3c94e1b181397fb6375c1b8bbc200e2d6efd18e120d9e8531992c55124ff8aecea57ad30acb397371d1b4565d88e7fb30f14f2c0c3af9c5a6f5326f6b5febc86be966051a9dff13309fcbd10b574398fbd34e675035993b69aeb64f60fe3311b1ebd9d65ebf6d349709139f5e7550196021cd44a9023277ae4da7bc486531134cfea1a3d86ec700e879ff74805960be5df6c951d27acd520924cf71a32ca27da516d7e7786ebdf570997e65192d591526fc129bb3372d88b0002db10f4ddc90e00b2571e596a6c21ba1c1e80c4f969615ef71d83bca381d29fadc87e87c415f5ae4cbedb6d4c3fefb3b454562a57e6804fd69e5ea47bda9507277477676eca31567c5cf293d43c31bd7f396be048856ac897a4b0ccb3d2bc045a02f4c2c30b47da5aa0201a95d24757a99ab508c96573a8c77d5d4fbaff72a514dd92bef94444d72035571051bf3fbaa48037bc46011c9e9765defbe2d5f8985e214facf145bc16964079bc358e9790a54a53c1f8610ccbb2e11cb38729343f6e98da8b9864e51495c60658f43d8e81ed30ec20babe2c9e32f70eb6acfb011bf135e45234c5c0f44e430d9c8e46a43bc4b1a3411f0772136edae31f10ca76ae24f75f285ca20c99a4290116b9ebfda07fe0eb31d74cdaf96d8881068353c0007745fb2cc2cbf5fb4a4f9a32cc9e624fe03184f9850af601d9f0fcae27dafcd1a328cb0279a786748f7e7454ad1e7ba8d44065b7f76b053a20a18fa429bef883f69041ae834180374686a89feffe6b11c28fce0de8723183f2788672ae5ebd91ca047cbe185635f872fa47dd6770cc7cfab956093ea6cfa06430e5f0d10a1b4b9f5135b608dedeb3f29cadd0fae07eac1f50046371611342236274f6b1e668b9fef210940b113df7aa24b85ba3ac685a36996ae2a5f110721e5565c697a47768c2ff80181e5f1031a00b5a0e955b3add1375890eb4ffbec48c234d243589e98fea4e4d75ff4a683e850e1e44af14eff40ff40e84784aa09bb520fa621183e1879783d6eb2ee31a200c9d2d1408d6805b95a05c37a06fc1cec10e909ddc67d3659dc93fd66fe674a71686f71511d437b870f6f28cd717a16bce92a9c6ddeb0822b9f7222125778188022a41d8c3d1ab036fada921548d44f5882f18ee2dd5464326fbe50dcad01a966ac7853bf439a7b77e6d7ed1618ca633e6706ab75688937151906fd3c8a19b10b6edae055c6154e41cc7a83c7a27bc61d87114692acf2a04b7693d9b71e440cf5521797d4e00c9d710899ecf1cc11b76c47b77361a9fc273ae0128bae82b04330726f05c18b4c15cbff9745442b1c15dc52f737555425dcb8a7fee355178654584a8ee05ac1328832802ac4f057bbf6c19ab22df75d6c6e59c11f55823520f3d529c31d67a24fedfd9790cb27204b8c00aa43f17bd1ea2032381b32d0752d0fbb236a5c156bd3aa5fa0c81d597f43144a96653ddf682a996f943de40efd34993bebe7375baa7501c25ea67265b8dcd2dd54b0d37151e21258483f24401ee05c1fc04030369288d224d61944df0ff2435be912400230d60591000ea941a69768b55c59ed039f215f319eb9751dc6ce946d0bb00087f2ee2e6332d8416e51178accc102e67aa042c6b8d0c4a6272d3b27170430283de2c97cd9d68503df11a51a422b50d92a3e044673b49f32e7a1d5144c18fb3aba5a69f35413b7aeb2f6ab93efa4d8258d64667f10b79fce049e2e7f47cad3f99764b20d4a4bc4f0842ddd4f0f70f261d074ae5eaa7adc573fa43d8e3389a099e67479686f73b47e54276fd275cf708e23d78f0d840fab9dfb6650488bf8ce05d3030830bab8e99b8a174ee7b3ec836bb8c262903467dd4962c298bed03f65120b002ec320fcc08287f59fd97e2816acfca806e6d5565c8caa2448bd5a7e1c901f72a7ed75fe70572789ee1591caaa4c151a474334bb02af00a50284c32d2d00d28d82138d37bb4911680a7a17a0a5bc90b9a8d33c4ca1cf90bb3ef7346c767698304ae603ef80cd747bbb32c69fe6ddb41770820eb3a6258523efa2b809a27d0c2dfc289a4d9bf08282aed979e57b883dcddcc64dde10018c17840742c8505a8d1d102697a3e9abb20bcac06437880d258aa0b9a5ee63063d1ae1faa968139a683c6e33a91ea05d31b77122673ca356fd2133da99b567d4d59aecf23ecd7a5d6030d084c1d006ff8bc0216b2e0d4b93eefbc430d78e9d167cf3ba0e3b3c24b1043198b1774b63b8896cf83e3005f1f12ec44eec76783ed8fa1cf1a978d1add1fbc265da17376f121330d68823427502d3a88f6d82ca289c0e05b0d266efa8d8c3fb1d0aa0986ac9994f3859ab529803c54556c05f10b111eed4d6088670b5fd4fb39f14314a74f800ee67cd92f0d8603039ed7aa0bae0b278d1e435159313419b639e26f246abc2b0b678a4e0d841ea89e455d64b2d93576c653dfc9caba1d568363cba44c0100d991b2ef24ae8229377ee09c0fade62061a19255ceb853f2245e54ea132c382fa375c702bb37609f6f19167b08d0c75acb1c109d575fd27ae3301b197130532d586782c3ed02b9911f08b4c3c3be7ab53963a0b3dfb43766892223024b156b00e94d7f0188a5cd7d89a91daf9c5d23e3731ad6c301a9f35f4b82dbd579cd1485150d3fc731a594ef2f872c4bbbab0780e7cb82981648523b0f8619505d9b47f08e1ebaed225d814b6d3ce7f114ce32d9a2cc550f2ea2662dccf028909f8394d5c2e26c7f02b1ec05398a19b68ac5b5b756a8b6f91cda62518d51e665041a0c73e7ffb11a8a217e07146e00b626e8c4af7cd63dc295c793b3a65ea617f987d639cd93932241b48e85720cd90cf4da48b686388989de09bcf09e0fb6c0b328cc4565e0e9d42807590d58f805031a5cd85a28869707a518590497f66cbd6610b8692cc3e9f0d560e9b71310eb65cd892585ac0a288ae3c44621b66922c847c3ef52414cf410cdb64937869459e55f49cbcbeef2d8368e2ab24fbf540dee21cc55eb82e75e9c4adb6e50b8ea36bb4a223dcc043c9f82681b00e8ff53b3882fb2b989e26e07ee60fb3b8df6d598b0b341fd1e110f889d10fc21b56cff157f3e355e7674f94e032ebb93f7165b6b38e189afff741bc2d82cca7128d14ea5d6c1cb185c50038c185de924789b50a453a63e78bdfd54810e5a81228309c1fa180dad42533c955b78499b86ad0df706580ab8f7c085c770aa8ec6c408dbc9b42ef3cf1736278f62c4d6201ad382e0e6857e021a69652890d233136a6b69c37433e917c462398fb99fcf52028ff57de68d06e7bb0d7802f37aa7857b72164f72156cf3f1a4506297a54a815ead8f7310031c39ed7d03a62cf27e8783fa155914a53ee2c7bd867414764d145af8310ceb57f3e88916e383fdec02ca83de4f5da67d2568118d3d4a6e3a97559330fd4c5ffb5806ab27ecda1707eaa7e44e48c476b339d0044a6c6036a2b8e5b5b2f09ed38ec8d88dc7ccfa04ef35c54cb84378a64bb12e3e9ea61b22b8b92fdb52a8517860792a3ce0fbf67c253ef031653ad7d74edfef7ae9ade8fe64fb1d9a8c93d601c5950f613f627ea908580d284fcb0eb29fee668b8064181c9abf9ff6235cbd405003d031374b056a3cdafe07b18f4e08600855da5e948e9238e35d87f7af9e853a24f1d96ecaa302267f2f7c6ff41bf0694bc2913180ef5909ef6af09ebd12518daa95e005ebdeaec15dc47be380583fad3e5462d273379c0cc3c4b06a9b723d716c32e089c529da653f21676cf49d48eab2710557a9829f1ff1527331924c1de16249894b2d46909755dbfb76b9ff37f4835c42a6311a0e1ed33ab7c34501daca80a0444c05046bc0a9da11df5aba27d47d1eebffd0ef1d09a095f6147209fca041b07ae9e6564eeaee64bcadfc9279e79aa5c9bf86dc834ff19d832a697b2a77d91df2bea39f8b88c045b49a60fd52c674bcbd4dd3cc015b1ac251dd634287568a97452a5b887889341e72b555f09169fd103907c2109f6ad12fbdb98996acd3c14b6c657d4836d21bdb2a29fff77533f84e5755fdbee44e99590fd94b5328a9dfd0db879f97a7cf45e34c7238c51668e1f010e6d3d6f330f88c3b243a3ddfa4797dba546d02a08aa96e3ec45832cbbb14e7513d7dd4f6053f6c968a3ba188b452ce0646d31e9b306b8a157d0af1b038afc2fa96c8c35f1532a54cfa358a570eaa159253b3b39e8b7eedcd3f9793060ddb3ec3b6d80f83fc6e1e468e9c97605657d665232141d088404f01193bbffb2250900432511afe26086e458ea03b7f967a5a91c017df45a6dd94851bd8ed6b1ec452e8c3486ec98ede9d7f16f45287618abd4f6c8d67abd91e2806e5887c0400807dde9435df62e1e14bc9111f1931b014d0c760e91e3451c083ba369e6cf2cc37784b1db74a302dc27fd36a42030d2772c39a9cf40fde39f35a2f2cbb8898461e7cb08ef9aea311991d81516ebd636b6ab1ea03614735f78bbeab5be130b523d2580febe7bee98b8dcc319b62ba8d34b6afc400910467cdeccb233414fb8dc517a7bd3fff703434c276c4bb7e945b09454bac1c53a3c420a49c92e525eb80421f52360be4f0a56c82ca114b1fa68ea1203181e4bc7b7dd58d3752218f8cb8be436968f45eb57ccd6c01e3942281ede86f7ae299a62fe2edf6dce48552d677a7b820c8acdbbe114ac31ab105ca4327de39c6a96005b890386f49420fa044ce9e73b689b1126d2286114b5cfac2776cc5d3ce0c436f51d4997f5d50e9312f4411d85d403e4a5c42ba78046205d70fb609e06589aa4bb90229abf0657b0e4fc1d4204845378e3123c8780b3989372ee5c01a5f9ff290ed87b0f7704526fac31e80f92685e5a7cf3df5bf4321399cc08bb93e801d7d191a74c8a1fe524388f2f6c30f406ec86aac438236d19e83bcdbf621b71d806196032ea7f20b5019189a177fbb3f150300b2a0e4bf001a2e1a245ae43511be47632009728d019baa3abefd43946c2d49f2733db0847a1737c8a7c2d3970a033ae8c7200d3ef9fce891ed50f4ab0903f1d78a17226b2c3bcd6371829ce66569858358dfd40be0ad90635c496d24fe1326a94f1f348d4676a836e21c0ab9a33c12f515c0053c4bc21e37c177578b17652d507a139737bf30df38c271c43b0ec6241ee8a46f8f95c4a1b840b25dd3a823b6494a60e4f7f38dcca484ca270200c3d1d9c85cc0a7f74f2549a2bcf3ecba1d4ecc829ee855990ea45ec876b121c3eba638b0d2c5ad33ed0f2842c61db52b12756545fd71b6c03db745e87a18839d61cf3d1682084004c9f320efcb95435116441b717e65e534a3c6d1e9d6be622804fd34a9534585db4aba06460a4dda7262c42873422d8f1c20a8e14fbe8d29c5f575b2b9c6e24645d5584bfb1b28681f92a8969b0254bdad69749ea2c44d9060ca6326d27e35ec6b9410fc765777ff130adff71210a2a0b13bf8192ec6a1f34eb73b2dc6934764a7fd1f02f57a8e250dc0e7e66280acc8e549e790b11089beb4335108e132d07e47cf69cf945ca13503a0e02c241ffdccd9c8fd1508b7f33b33d5150e5c0afb5e78ca27d8bd21f5b36b82476e1df7acec424213220a6e8288b5b51d85c1d4a3f1e0a1f6e64ac367713feb0b99a55a99738d0ea2902b4f98d702819bba8f0bd9d08077e8a2dba308c0a2fd618a29eee376794467ca28dbe140d501a2d71c73764a6c463e64b3eaf89f393d58649760579455fd043f7da912b91fe46451478e2667394a231f2bc497a84eaedcc7d516973eaf58697fe3db2219523e61733a8077b8a78ae0a5f475a560fca2a2289c7f3047ac2065ee1d06b345d978eabc40bdf5e4d25981cf1836864756d895b2aa08107209f4c7d70a554d44d8d75772bec3776cc946ce9767fd1b2d1146642936fb6e6cff2e3a1851469ff451f97bdf3454ead0d68604729c43daee1d37f4537b32d86e48f577b036fdae1d6fa8762cdd015f5c9f1402d99133241c3bd41b80b877819a5cc03b184905683f977c47dc4200f469069fa4fd5754563ae1a01e6fe65302743fa886b61708542de83a679e7fd7a7522d3161fc5d58d098b18734e71c97bfc5b8bdab3ce4bee09b878b613a60eb82da4ae577b393067991a65b46840908009b034aec0d68d9b6d3689e891d333c426822caeaa0c22fecb35b2658d9ece7fe27c9d009b238fb18e6518a5589c5c51463e098722d926ee84b4b74963de9ec9b12b120576763f287786fd8aee0ba3e76acc3bb031c77f2923d21d34fc842be569eefccf700dba16c5a350d02211da8b014cf53eb3152c27f89850de0d7b0ae28280d79257113506f034be5ebffa94c013c49c1d6543cbdf7e06a02f93758da3b48741920f030621b9d1483e074a59f16642d460bcf45c3543b39940693b1fdf04badcde906028824a4201e26048d81364b1665591594100097f185a3f01e672268119ab3c882c2bae6d0ea3457976a999fe9b4b6b5ce29cb0f4f49ae04f6913e8efb26232b3ed69dd04a6615d5d3d19129b293034d1ca10b2357a56a372e38312214365a2708951913b6b3e2c397fa10101cdebfc4d0a5ca28b90c88860de38eee0f7857d2f94e988e9868b31b837c2a8f906915ccf0599ce3d288046bdddc1649482bd4b4b5e99002a4084f4a69f84c5809eb65db36067e832416c9f922d1bfa500cc40fb2cbf578f85b4b59aabc0cb3e2e13703ed486aba605f5a53ff060ca35a6e5fa1e7d62897b0f178a5fa62e3828b92749411b908bd39f69c9ff02a9fa20c9ef62cb1a5d337f58d1983d208a1b6bc64c0d76ce1fa5cf20a892b1b9d7ef1779e553c463a63ea245ef9d30cfe29d42bfcee6576e431547d2b7bbbbaf2fc44648cb4cecac94d291526b9473c2f0eba93161b2182532b337c2894fdea994717a4d4b5eaff74141942d6347bed2722814d00fe64fb12e8b9e02222f8ab2d8b313e7cd5d0839106a68a626a3a259256a2d24763d11ab8c3b37d9e409c9c3397a4396cf25f6f6b63698a59144ac14ca5b08a516cd77fdf817c5e23f8351618eeb5d62512488a694efee668ebac7cee26aa26872b611791857ea934372606bce26c918588d9453fa1cad236295c407f9d1489eb05c495edec3ab55ae638da57021f1d7448f93fbf81020a021589191d3b082f20026ac8646858772a2b96aa5e39f47db231ca810857df2c8d6718050ec21823a48c27c8ace375932c817656f31411959815f55afe181314672aff7e61fbc4d5e6f97400aaad87049090a64eadd2ec3725129534674b591293b3431a15c4a4fa8203a2865e66495ad0c0a8850c067856416d8e85dea740fffaf077908e3c2fab047f64aca27bea2e1ad573993830218dbb576bce6a58b668a4a4a95e6b384fe6fd4fb1e6e08cb33f1757f912057c25cdef494443b8b9b44c5d1f98c398d6eed3bd504742ded3800197ae3075d00983c621d4dc508c529908097da677407d7997edc0719721bbccdeeac0f2040f5c9c113d280ed617990e62a5cb61c86a0525c1086330e09fc891e823ec3fa2a15dd9ebdb29dee06ca588db5feb2ad535986e7d1e1583864fa47233e03d87ad1363147ced0db563101faa9422f82189872fc15450788a04ca519002ca55053724710ae9e45bdc8f34cdade80afd6b81eb680a429e0afe5bc19664795d1b91663d394f6121d673c15dc8fffc5ab4c96e209fdd3e6021c911521b3af7e7387608dbafbcf55a6f65a3779dde9ebac4ef3620b8c4f4fc6a6073b98b0aee0a4767213c3c50016990d3a4d05e5d757e09857ee703043be1480402f990e437021c65c51e2f1339c4bcd0d445cbcc5a4202daffe47d738f65a82672c76ce34467e1eae75130a0be42cdb8dd6ab69b355d7f20dc8f97fbe9995798b889531cd5cc75514ada6c6168c789a0c41a799fcf75179dbb9d11c944a13f077d5fa518998c78691b4526d57e26b69407ad802c1b4dd2dbb6c70da8aabb002ab33d4fc25a44b91c127f164e6255acb49a703b44b89e5f78ac72da765b6145624e0f63b39e7376896184ee9ba4035108af94f7cefe8891752b57cdc2791f8b02318e728e354f28748c4ed3d1fa588f4235579110435bea5cb7408259528c82244fe27a80ef402e38cdec6645fd1695b9e96a9c18074409b77494853677b2cf853f7df6e9d98601993cd5f8efb4d03a88f672075da10ee63e0de979d6dd1eaeba98439725dab1479104fefa28257f79c0eb0e5e8939dbba6e65e15c6ecb909c16a6c2d1ec326d2490186606578a132a6c696d6bf27d3de23b0ecc5d5aa6f6d0fb82f016f072ef16be41c5cbfe21a0728e4384ed423f41f50fb5b3807f0be3be55f987bbff8307d88b5383da0f7e17f5eeed0efc8e638805ea2bef040c347f956b2f503ea25fe1d9b31f7fbe3c15e01c8057da909510835957e2caea549cf6e888183ea25ea8e15d016a468edb7146aebef140d2c55badaed82ef3c17766dc388dfb03e9c85712714c01c1382b4429e447f0c308bbb12139859f087d89404025e23d3ddba19f45733394ef008aa9bdc54aaf180722141a1e8134c197149c9033b90e00ac5a5264ff83a5876dfa973a8ce731f6cff6035806a082c3a9a947ff2b7bf4f549784714f68bcc58b0865e7f010c1a2ac27a6bc17fc44492d2b4958d8bdb65dd96ed8f7be637d5d3d20a7de1264eec5999587ac176161087a511b461cdd270ae841145df7fd825156e38cfbfa06633429832db0f588b3b77c9c56267d2a8368b79450a6a8449199de49f290f500e561e26d28029cc4b51d985cd2293e7331d7f0b0491963fbe7197a03dbc2485d54293dcfad45b4432a36c79d0ed10d62287f351ee48ebd4aaa6470e5bff64776722d61e455a662f93a40d6bb95716ab1c778d30d684ce03d212b95829e4fe26f4d2f0869a6a20413aaf75bb1773e85cdabfcc92927d9acd26e840589c8fd6c2cdbe017df3123eb83ebc207de7a89cf33422f237f941e881219e9f8e43cc262905d0674d1d530b9e3ad000456b4fe5b0dea7b0ef91c0ac8658c0ad1cc15e89b637c7d666f468b8dc5b6dc09ab0e5b3748a2560ed73942df03f3902fdd9230b5b595c6de23b2103cebdfcca8b870fce6f584eba31a75f8a1df5a2c6d2c3a970cb492c9f74c9e6ec1d1418a71a687f878f1db2db67cba2e5b86f354c9ccb9621c485e17bdb6b674e4b7a8c2c4bab7cbaf51ac547d4fa8377f900a1a3fd2363415da8565d8fd1b6e50cf4e8fb30f8df7fb4bc5ee68b6ab5f9b0ee3bd325748df81cc9e82a4ab02ce88b98b321d8b930355c1a84f376611934249e062bfb58c4227eb2f3e6cea4ad04ff7c68e9d7daae7d1602f956848c0b289add54f59443c06d2c8337d2de7dcaa59d097e7a86ca3fc292e04dc5f520b80d52a76b42982c657e3b2e3009ecf2f4304c2184f2a78542a8f962a55d177239f4dd4e7ebd899875ace8955648734584dfe8054a9819e95217f612d7a52bae55fe86d67056ab74d03ef25e21a16bd15b09c0880c7989307bc424e629536315bb98fa3ce65e9f08a2d5730c4913e6468486131e1f39cc83f905094137091e99b480c91b1afae33528a002d35bdae4aaf36be007d270314e56d33c1be6a47667c7f5c333292b6d63032b50bc05668775a35a482c8b1a132b8923e9394f07cf8538e6db1054da5bb7028101d7fdb8e50dd9e2bfc64b32c091430fd7fa43adf237174f97ea9117191fabc244877176d2cf1451ff41c64ec7bbdc12fe9833825bd62958bae47c5ec100269772b0a5795f0289914c88cea4040a47f8c1fd50e6a9a878e09900c33587b3792153055314384e2c95426ed5598fefc588401dcab29375c3ec05b12bb78ec567852c6fb32857e1cc71050705bdb53e680ae38b26d060301e18a90309ee6eba17a49a481a6b1c311aaa90e89542b2581b128c198184568eee85e3b15e80fbec8e254b2d0c4326674835167ca8db9d4d809d6069af1cfa0c123c5119f0547dc7d6d4a8094291b39abbbfc218348b02eec8ea4f309c18548bc2182d75930b9cb02f3ed8f3e11d832112d97cd72c90a5737877510e51f3f56fdcfc999fe5618a7e4ef9ae2a578e5aec34e11e0297b019de678b9cf6de28ba2c1712ffeb5bfe60cf04683394160e96976a006c49ad85aa07f0f725cc0f365531a2c9fc46c6666f1da4723aa2ab5563d5975a1ee0821682b07ebc2e35b65ff1490cef727eebf0dae3863c6f1d51120fcadb6d68a9e9162d4bd531f571ef70e117444d7a22a4ce28528c790dc7009e04edf97e9ccd84fd4a15c703470390daebcc7d674dccad3558c2c42c8426b17ff5e9e4ca909ce0e525ae5a9b78349b365911a39fa46f803ef1faacd6daa26ce32d9bee9032c3b8fd211465a0a46cd526438f4b73aeb4addb83bc4f5c241bbb1fcc1233213ee71800309d329169a31220201a3dcae46f79f7c96a17d801398c7bff238eccfb2bb340ba26acc02c718f3a37b861ad2d261d2668cc5177250a5a673f83810d89c8cc10d73037c1da68e1b9ce6bde52f75c530b790afbbe61247fc8c2186cd5dd9a39fe3b08a05911cffbbff3091c54e2f06e75a1feca8491e397d70a41c178083aa19403121e801b6da9582617c316f951d59fc456a608d16eefc82a2c2a9b546c4f8d835d7826dd325752083bdae2a78be25d5e5d9d06980e2e9224575549869336e22d4869b4066354d76875ce3f7d38a0615ceacd81929d32bdea6424f14104f35ce42934e9a4008ea8a8c6f19ad15006b13d26007d0782edb79525c140793097896545fb2fe9261f63b9e3566994571537471fdd4a45bb3eb1adbe912385783e2ef0db2a578a328c1e4e78a43120b711da9e371649c6ae7357c6b03b8f08c110288e5fd5a51ad70a2b59af8223570881d497577b7a25ba2e7aa4a9b6b92b66c25086e34fe62d5be1569d9db2d8ac250081963d5ad36c561a65a64cc9655074059704353197d5ffe422d60f4b661115681361bc77a6023ca666353e0faf8ac122c86f71f2c278b5561ad0176396f2531210acf6be52c601dbddc15680b5ce30650a7f5f255612f4c97d0e9e60554fa473b787a2efd79674c80674f5560b32a82f5f3ed70d4b61300dd6b26881233aece0d2413f09014b3c7128059256f351f4b2d674c5b5bc29e6bfec4d9f2dbe0b7c1d28ed58abf6d5689948e6b714ad3f94c060aa70651735b80c63e52d5dfb26a984513dd0918728c45ea39428ae7b497196a580286ae3514e5682fcc53e75805a94ce256549dce72171ef72e5c6c9605c938793049693ffb70d6bc9f4b3db3c752f8d394b3a319e7675c4e0ebb75b34cf940eff6c1905c5705f6c69d91a80eddddda03b83a79a069337557461306a7d3d86f4e1e4e44eba1b68d338a4be15eacfec8ce12805066740f1d93303af21fdaf1c6a7c549b9bd17a35305a1f2e14c368b869818c43dfd2984168f1fe2722474c286827888511bc8fc3fc4d940d82b7339407db8d8dc8c6fcea66752007c19b57ff3ce111e1dbb7fc28595df784214923ec519591aaeea6a302d15ab5c035a12d81e9b972708c0154af3f323e8ec035da5d093f302eaf33d93075c85163894f637c006ddc41b82d851f9b8b4ffc0dd6565dfbf7cbf2e353f06150de74df307394d96aeaa0d6cd43a0c0a6e00581604cc337ede6c4b20cc3f66452f18a572c020288dc64314aef3a02d5a6c00d140906186b00e4fe93dbeaa6850f0f6727a06421b0efba3bfd072b6142f75f1398f4d67fcc5848bcee60b72781fa266a75a4398f68258a9314b41145cc945b069c05884e9bbaedc98a7207e567ac1489389490e9cf0c9d763f5e07c053bfceb3c1f4112fa36588ca0fd04ad3dd9315214ceca6e86f9b65215b1141002c9094c541a06793f39847bcce490d6a512523cbf58291cc28a79b94d059ba150bdbcf6aea5f06f959db9a359c15942eceb877d605eacf1932eade60e46bb47cc4c78a6001badc2f67d52a3e17a15f3f7a1d0bd12155a7e101c0adbb146fdac25b3541e08c41b19cb7e83c7481c691182b02d4a8f6e6530637bdfecdfb271c407439d6837f68d6333adaf4d55001f0bb60f0d22acc14d8d0f554b29227882e3b2d1b80c49cd5fdccc0ee0ff8857b26312b435a9eeed31cedf752f1d7cddf2974bdede842b4987c1370017ab8af099e181abaa76c64809457d68376ca2128ed0a5f492cabccb8f06687d2e0c69e690eee7b8e51c889586568454264640e279ac4250cb04d4765515c9092f59a10170ebedce9a30602e344528794c38650c3f454ae2dc3b436c57ccbb93ae7002bb60cbcbb2df92ca08619f98afe0b5a22d3d42ca560c5f42998fe5d983ca999d6b4e300f5a5f4c057a516c013473b371038aa1e4b6e09640685b72cc9f8a61efec8c1bdc8386e3c528dcb2814c979932887019ac4c69e2a6546c5ae046321e5bccb761185e2b9874df303637481b45ca40a9f42b2dc05010193d7ce2435f373508830ad6af8e9e0baf9193dcce1f47dfd4e9cb84d765617081a37c3da038d817ff1b082fbd2f90392e0d18c046dc3e05887dc29ba018c5603082b608d56830abf82c6db8293f96c0da9cb731f92da160d7ea17ea8b5ad824cdd5e98a595f8e539e9a64a73a451f293a1343e57b929220704c77bcb1d1d689916ff087207accd5359dde75cfb2a37167bf76c2a9c725076b5037c15ea9d5bc6160a55d8d4a851c68037af5b99a135693704b81637946297d98b34901d4cc528f2d363ce1b593675a01ff5e098e61e9879dde0672115224801e468f8c30eb3371615792f1fb56bfe8c1a533f3d2e142f2500c3d8239aa82d91fde21cf31aa729dd57ae83de0dc8fef31741b3306ede11f9df76d67b7a4b8865f21819146b1b47c5a5fb331e628c7122dab64cd1756448b58af821a8be56b3712601002371d2144088eace42a68d3d227d851b11195c40756f0cb8f209ae409abec32294dfdde9cc0f0e4f7cfe84610c5f8dea5dd761b25a3ef0a5ce87233bdb5fdd742869ff25ca61b6e9c785445031319072f0490c843062bb12c1149ddf6587574372576aefc9b3a78c7e449a0bc01b03588cacccc4b23f19e47f53e5d43a66f84ce32e364851e01abb2bdfa053235e1daaf1cbf3f0d189d7ee1b6315adda80358c45a3b646d93049e36e6d2572bb2c1caa66e1057499dcda766b1d072c4feeb4b012537350f5bee504e3da822658bd475a9ff6e231acb16b31985128951424a9cac059e0b2113de0b60507f48dcb874c0f342293e282321e32db3d2e65a0f999037f0864b98b306842d1eeac5ecf09e61b77dbf0b8f560956415307c4c9e398529428140ad57a81ff52d7720f913b0d5c93d4a151d1788a540571c0869940013da6b48562f70bd9eacfe5b6f6862d4401c8ae94daf64b6695726f89d6568a2c4a57a8688c97409bdb2d6d057286c9a77753f3222f6171b559fd96b50a25999f6a593a0156d05a161a31d209f95ca25d55c31f6b4f4fd0993377afc9a57dc2d3cf0b83fc573b92e9cebd3a923833ff5eb91ce0ee5171c611f6aeec8adc3dd000210a798ea418a488b001d80848252d417cc11834ec53b3b954d30e4c721094602b4f26cee6045406d9176a054b14be50dd0e13f38b0e9573d2d754db6c9beeb4ad0b0a52f0e52f115f69181c5378c67e80c1618a128c4482fa26331ff083285d4f689fce40cf382e366c2b9da71c22f09c1538f1ac72015f3a78078f46fe4158621ae6ba9bdd9179ffa7125a6cdf65bb7358e9a08252bcd00d608c190aa2af6df613b038dede9e8a7ebd1aa789efaad28e40807009fed8b4388028eb9e852a942ea2152bbb505c0703bc7616a737ada1ad1f898404f6404a6cc9ae5494998e25feccfab5a7501e8ee8b335d6c4399276ee97df9f0ea3e10c25fef36d62661b9f3813c33c5808aabce34f39a7da720555795ac32364ca4972d71bff32061660735ad54cc54318e33db92beb1621c4452e533eea317611ccd2ba6e3c0ac2dece1dc1ae75b1c3572c068241a6f8f36de1e74cac9102adbaf9c9028da226c6492f9e9a6c470aa2964ca2a3588bb68d18506073d36d6c045114dc640f29796733a5768ded1e71aba5ec688f38d32d82bdcad5df537d337b4fad08ecf15c463ae8180271bfc0bd5902738380924c127434fd4d94ec1399c8d9b410e4e4dac1108f93d6cc1140bf84bf74c874f24d0feb50a8daad3903d73512c306b5729ac112178f976852a24e68a2ad31ac01ecf8b8d87dc8e63f185e7f863db42adfa8a59605882bc9b4e3b39b90c52a9b7a9940f60c5751065a0f0154004a16917d967de9abaa5beabf5c4a74c44df9c20636a19d36ce312e3ed1f0d3097a1ef253f0053a36ccb53fb158cbcbe0741582544a43accfb48922cc35cf48ae2b7de95b918a8b742aaba09132fa80dd6c964150928deb7a7c99f2fb5da559c15f4d71af01dabd78bf01a8e286a656b7cb39345c888fb779a99d955541d0a6a972d147fb4e44587f2246a35d0c2b671050723b54a470b664b5ed0712067229820a5491397aa68a0da3108c69ddfda09b945d18514d21e36b319fdd667177ff38a0231dbc6fca1c2d9a3d7dc4f73f1b2c0637081b1148642a3786adbd5e78c0e281ee255a582e7f86e06de1aa9bb33c0e59d90469f31fa01a60bac18ab18e74d14447b51662c082d1790ef8d11c39acd4ecc8735ffbc12f285b32a72a4da7af31b044ac7182b5caa92a2b63c2f9a6ceb5153c6d76cbd125abafb0129d3e92e542d00a90c48ecf3c846257ad5f0609462c175906736989158930d0af2283104712cb9f061a90e2e635bd40a512e3662484bd3da5ee9271a1ff8f0e4a40368664dffb2df3cfc46e55e58d092120b668d674841cf7ddbf1658ecdbfe65911dce2d0fb335713aa1924520b34bfa41bb88bec642dc754d47241ac3ce47917fd8fe3ac61e1448e2b53cbe4ad7f2adc16cba4f5bb0908eaa661686390f777308c70689748965fd364909545d21cb4950cc4b5176471f70fe66d1078c475d64706c4908846869ce1b812a030aaceee42e55e388e20becd4fa11a9d64bd788d2970b84e1ddd3b0611200c671e4437d1ac823ca7fa95d8fe17cb860d781a88b20fcdef56ac4683209e96af46d086d70c59819cea8288c37cfc879a79c8f39be1146ccd1ceb0a377b25cb08647e8991e6133844a9ce4dcace21aa26e06b207e35e49aa69bb1c1f1ce1d8fa6d60860e485b34119f5fd8ca7fc8bcfee5ffe0fb63f85cb8a6785e3d8ee5fad6a0daab74bf7fc7a69c0762ec5a79f8e7cca10a625785274d4afa21aad61621cd7510313791a2f43fd49c76ccf03fd8298db1437b1d24ca22494779fe6241afdef0857824e96d1c7c0e4a67daba046c8e4e8b8dcbaee11ce3f67b98aba37f5a8f70f02aa7453442869c4e0056380e0afc98582cd80fe8d3bcc41d9e44dbea5c460782c7fa4e6cc2645419043a0aaa4348db22e2a99454161bf2f97c9a53ea93c831e9af76ba5ddd52fd61bdac9c312489801942932a2f129081bcc3cfe31c3cf3d7b161fe8316754cda868bc2906751b2d948154b7d16ee0a80a9c5cd75e60036d03e7cafa6bfc0dafe03b3b08b484b8751217d65228746deba2efd120911102477582bc0d6c9dbafbc9ce0738e6676453daa9e6b80d04fa8d38cebbbb1bd0ff4e8c92ab0450405e0f773fa4972b36a311debbdd3a282b4fab679218db1b2d71117f95d04defc0436e15b526bd5d58c605f443ba48c1752df4f81704dea1cc6aca68a0d8948bf55a02e0cd179059d10ed21b5d2970c1f33191a0f1443c3c8cb32f4cbc361d2b32982e9cd374c7a565d9b72d06762178a660efa694b4cd2bfd8171182b1ad4cb90494265f3849f33c0a553b6eefaa85de9f5969d3a0068f64c5911c0aa8adc54ca025a7ea40a0a9d4e72f3393619e909c32cbab5058d0704ef6de5568d230995f2a42c2320ecd92c2d736ce13815441f748c813c4114f13a1e3dc239c4cddfcb9f6f85e6f285e4f8d68ea970e31a7d6d0b8de1b62b90f2a60154e7d3a8b5ec9399d841e845ecafa1a58c304a7f76d98a229146bb073736895374df9c4e7824852decb52a219c5f2bf4ae3bf7044ab0480ccfbec2a968ef342d54c64c222d8ff40feaff965c99473c0c1a8cf34ec6084c54cfc59367b0c1d0fae4f6d1b93a1a431c374e83ef5f8640d447881dfd7dcb2e9f0e7f3fef34bcdb76c3a96227cf001b650b783cac2e0985f1661c6ee0d833742281603c1c06cd75f9d69cb5da7ceb1df0177a2e8455be9b5b27f3605b39e0dabdfa69d5dcd5652dac03ed2248fd5c7e93f9a9efe22683f2cc6aca679fab3c34206277c0e1f716953c7542f9be025dd7eb4388d18419cc78e0c9a17d36d9ff4304dfd99dd1736a14f73261d3f190dec6849cc2eb4cb6a75ffe1db425cf587cf3c6aa2b41fbc5dd7d0ae7282171b91d2ad502fa98976360ff7462a00e7a8ccd588f4c75d8cbe039dc9a102ce691eee91f31c2d09e800fe6fe84fc9f0715d948ace2015c1bf19436665f50c1502450025423f1318abd2bdbefe06d6df3c5f888ef02814b3383a93a0c8eddea5dcf7115062fd5fedcce08ee54ce934c3aff74aaf8164bb9777a21b934112df732287b6e1d62cd78905fb1cca3170007610b640f481fc9e9f518acb4f496b66cdefe5c805c96dc8f06b2cdd5833ae318c1040770400bff997e73a6442e211baf918ba7df916ead2a9b8f5c63284c2d66a8a7ea9cc4d52b647a3505b47ef7336262bb0703ca5f080084dfdb9171d2d19f520990c77d62cb98bfb7f4a76db1968cf7b3a2d18528994db93075e2c3326302a0e6665b478584648d1ebe9a80ffca606ff4518a33945082d61bbbb017de0445b94ed816f04e64eb7e356c8882b91e13acbac965b47bb835d85bfcdad7a17e6ccace8bc9c0e1a2796737485bbf42a4232bc241b0ca274767a0fd3006c5a5176c111baad30cad65ce1cefdfe2c8acfd1fda6fe2643fb50d58327a2346de537bd38baebf0212555781ca72d127fc6da5cad5078eebe77650b0ac138cf922742a3f57117d0b70db9d95c1fc73386f44db74770c51c969dcd499a3d32b9079ecb65129a52e6fe33009888aae606f698ee52ff217d86429932efe8e462128d44de8feadacecaf9a5f0a5773412f995731b95db380dddf15f0c3426fc80b97d92fe82659b3b599bba6104b098a9aa8c7d8c127e13e63f7f21eb8755067461b0cac8662e18415085a4a421c8e4e8f68be276490f052bd975608c87abff05c969567d4fe1b9bf244318d40240182d618d7b521ef9edd69c0d6dbf83a05ae0a8f6082b94a084e08a4b801f720413e27460de2235954d582cc188f680355d5805132babde8c33e7f3df3fbf5885084e3f486c4b4f0c34a9cda23d842e36ab20160df7c7d8dce5dbb362e5899d52c07520232afa38c91d76b71cd781adc6e4d03188582a0d910f3b19e6b90971c4119abae30a8b68533d2fa292d4de03684ce4835894b52a4e806dcbc41218f47babd245291e4c612ce52b61aebe032d785334b5bfea792a79a272975e0503506d44c5e95513d8fb232c728b9ead048620e8fff51706c7cf85ef8c41e6c3c91a2cd9329fc0a9e5a151b37899266cd40aab0ea9d815304947941c0a0986b09b662e705852ab5ec1be5d69d795f16becf77e2ccabab0f0c0918e0df7fc1d1381d61ddcd9e3ac7e6d1678067a3e5176677846e669b296bc16105559a4853ee9b42ba944618e633f68541cd16983d2b7ea30847ed7d6b4136852af77247746353a17869d17f5bd3f9a495e4493ebb42fd23ddb0dbcadc253a726fe75e79826f5d0dccd82e16ab29a846601f2d83e647959d8046a408d754e40f7311ac657ad1f3615816efa48d85bec19303fe1b733dc08fc012c20bc141a3f2aab34caa175502c6daf0d958448f72de5b104bd7a7de789cf195d8d6bc3cc714dc3fb23ccfd1a2cbd53e4f18d78b84120096ed4ecaa9cf0dc48934a09d39453efa327d97b603f8180b1ad633c5afd71f4338b26a6d2aaddf3b6a13bb732f4a660cf54f9692f8b2804b31b1d11f91572ccd6a95a57b8c184cc760ab408deb04cae1ed1e0b8919ca330595c75af458312b2a8d441d3931289b78bc4d8c0bd2df2fb897128aba7e6b5759ad72591a95b5302aa860e2934aba7bb638d681f0d4f3f47d7ca38480121ffe5cb24414efc54e535a1a26467a96065b06dfa4fa4972314b4f3cdeea561cb5044fc5713bac16a7ebd538976012ba9aabbcab014b23673599f5df22f7e84ccc0f439dcd3c768fa505d826b85081e135f430e3ba5441e91b03fa96f368ad9d8e0aba1f9bf0df0f7574b19f4ac7710512e55d71fcb4f1257d3d5ae49a5821c5a334a96664c90984e6fc97f9458c19b123600378476ef879ecc78e0a843cebf81bbbfcb025d6beb094a8263d20671a325c33cf963b015cd72806167006d1dd114bf1789a7b43482174f521a137e75ae091da0a18e066d8244fa2e89aa46b3a51e56fc0f093f50b705b3c987cd3bccdb29440e876c2ebb6fa2a461f9e6985bfed7f51bb2485931dd1f9caa41ab41c2298cbba2719fae017f22cc1024113a97167ad6fa4ed7b60482335312fd25eee645511c979075ff0df67f0ead4e9ae24330b775c3afa283c4eda0c4233c457093f255d628d47ac66d6bc916589a9909710e462125660b207acd99cc7ed6c806cbd8794d77490c92c41171fa8281f6d0cba2fd79d3a09686b1ec44020ce1a9c82f5fd455a98b4a4bb96cd7a40ae109162bd8c5dd20ddc0cc361c2c7f04cafa41cf0176757ef79609c5192cf424723296a440d8db63aa558dad82c619932178f23b8b008c3707d96206d608a05c3c387561ed587c4459868ed331b148ce3880b598715bd9e4be60a4f92655f13bd1df538a6eff55959431faeebe41ab4ea4319f2f67d77c7c2ebcf953655f6d799f63ec4e63dd9d005fc02f4281a1412d7fd7a080fd68ba085d2a35d47770b63f7ef9adaf3d7440323f7df01324616a61a29adb054480774ac1d66781ffbe68bda34fd9d35bbc63f0b5d9006dcc8e7406dcf4aa64608fc73e1646e156b87bba1418440ced0b9ae7c8006e464275f7cbc2cee211bf39c50342cb27dccde48262154a34c264d79183cdf6338c9989fd836cc2faa52a07c3fa8111b1e07739d040a1f929adb1801e8ad62ad306540246a444c00fd0f59a1dae26b94442b15d104201fae4d6cf57f4f72f41994075a780f56478ce0560319a230e07357d2d9251c1f4be96da83a9c58ff72ac966131f94037d3c077b26d5a7184c5c0b8bd49156d481e7065c1c96d4a6b2687738a44d3e82d476f89436a30a184aebbf9e5f90efb05500424b400c8fb3467e18c85fdc8a81c4a1b96ab1d94da6dfc31a5676dae4548a9fa1f586c810c28adc3236e65abac0447d19bad0fc8fb3b345065482e79f45b020deab8537628c535ee83729a8fb32a2f960fe0b796cda430c1031bfd867a3cbdf271067631aead7a39a3cd3051d6ecbaaf5d40f3d23bbfaaddbaaa468599c7d17e19d5491aa50238500b34cae5410e6cdf94a94a0a97879bfc300ffb20f67183fc585a098ad0700083a59ef1f25ccd27f2597c741905b90fd73ba8efd5a9b8c6b716b10b3aab8104fb92dc18fb7f0cc2100014dbafce6ba2382b27914ae96570ea43a653039b085def00863ee4f932efa3b1b4fe94cb21c7c812a5b9d149579aa8548210fe5665d1c866880c0be494e810c938f7d98cf429af9a2afc23a7035587a6b82d56d73fc394394eeda5887b1ff1a9814cd51ddb55441d54bde81a96e905879b3bf55653f1af8bc2967e77fa1565e753bab0bb6a2ef5f2e87c1111d49a7aca616eb0f6ad0dedfc067cfbf0a74cb797aa79c8a7bc6d1405737275bec3d6a48f02165b2ca3fa856762f1526750ed902bcad1050cbe1908ead6a76f84a61364024db0afd4a3dd28bad4c04e26331a1dd37fd72df9a9aa270985d63ee4a0930ab1a55391109645015be1a1b034241b8ffe97e304923b0e848210ea6d61597a107bbe9dbfb007f0b137a696a944bad929e57a352f5279dc8573ae44332c87d1da85b1849e4062b070bc94432c123ffe82cb736ccce98ac68ed5caa1cbebfde7a34b7a699f2f37d58308f39043a3b73127e2d3257bf807d7c072c9de121e510f62b14c700fd43815aeb01570a5b19895e7bfd75af07fe9da723776685de1a32f36861773688a850990da0d902517a81590cb1e5cd491444a0ff440625512e045c3e5ccc0760ce964cbcc03d5279842bfc822160d58e43df12fa9a7cddc77b62bd4f805cafd16aafbbd674e9daac702b627e87ef26396c9cb4c402b122c1f995a04ee17ad08b97ae8b6628ca57e017dc6833dc0259bf1192ca04c7f7192c940c6e6da7d4b4aa6b62a4570bc6838024696725ccf0b971fe3113d7c9a738e2ffa83cb50c7f0815ce1a6f3229b0bbd1a7dd09388bbee6becb13047d8a61e42f1f76eae85a981e330496ec241a16020dd7bf0ab4f346ed59a7126fc7e8fcf8db1ab0aed7d01867224d79f78eed46fcb38ab8e0056839e9ddf26ad95655d9304cd99adc424fca82bb731d69f0f0c29019f38c9c8fd63565d9d0be5c88766b25a137712c9bce1a258d05ace0950585767e8a5ad41dafd98c21b9117feeb5b8f9cd6db50ba473c8bcbe922256e9dba3fa4d389d3ed18f61c1756a77b87a05853dcfce9c07ec9dbd6af99f2be5b1459805043978306351bc11bad5d94b44e5cc5b27d40a863f65ef7693b9b6ed55116e720141b08a4f77489b35b5b3285a2da378efe0ebb511c327fdb1410c4d758780ed3c9d5b55268ae2425ef54a9bc53e68f5ec1b57e4fd302d8be197b9baab5b63cbeabd6229195009783845c6a232fa141839b00482c4488c4e389156e613203471afff08309485ef796bf9c1114738e7aafec7f735e298baa5d3e1c7a3ecfb66732085f771717e303c110d262822981dfb843bbc9b5b996a329fbb307c3b35c405277ac5acf60312b925c08e6d56e43cf9addf00a85c578df3b5e46b7139b66495cfcc81ff158fe7cf065263c6bf0c68445242a65e85edae0993a9e7a422018144fdcf17cba478dfcb1b3df7279ae5e3782f020fab915ae96fd7485f49b55b18765ed4ad820f3b7e4b63caeee6b6a9537a90f0beca1435625acd67804b65cd0a795b282f7b67afd9c2b8842c1c894989e9ae4f8907c750258497408d094f82c8024733c991926bd88cab112545d452223736ed8e6c0c3fd1e370e577a9e01eb5661f83fcc6f87796aa05cee7217beb6f0be2f6aaa9b4c04c18fcae7a39adf8da4b08fe436fb8bf59b573097b45f169d2e8f2c8e5a78948bff650a7c809a945b5db5abd2d7d6b02a51d41d49881e23463214729e86c4c5be21588b4d1bfc0c35575b1e15858f1ba9736c0ce0d497b1ddd7cdcf240cdc2667a19e53c55406c4b6ad0121b9732b7bd62bf62d843b256a62ab236e868fffd17e903b3cc34edb99d661c33ddbceaa81f9296601b124febdbdcea9395537c59ffe5378e78996a39a833ec30c69229e783d5215ad18521335fb49f00a0bbff6896ff7b04b6d884303d952ec7852775228c3c09958ff682a3e2e96947aa8e3e5bb7564a0f77ff422dfd9cc0102f3cbad95f9731498c4077bcd2f465f432cb68bbb37d5a8b9a2e50a32ed3bd8b5fe8479c571a1ceedbdcab024846a83412047c9fca82a8166e6ad6e2f394d288b4d6bede971040d08fad08b6cf3281f53fa6322d41cd30215a32e841c0c8fa1b5f09d607640c22cb69c76ed1b79a3942eab8746725c9b87206abf6eb3d0c505546a45eff9e9d24caf8bb21af1ce5e1aacb08bf82ee9737dcfaaf4fcd305c08b5952ba81182baaf3014788e3d9a38681dac1fcf2cd1fc05c6c5d951923e101258d9b01dd272b95299b96730da8d964288621b1cc404b52545ab5b82301c462d3e3953af263917755501e4b8e76f3083f18621fcbbc504e6c6d92c7c4cb53a0d2df489c110a907b4c65852219df6f8bd79de9db35826f66d8eca1f9120ec516bc803a3859e781a32be0dbf270011140effe47fd8176c32f998437c2bc564016c103a2321642d08b7f2633bef71670be6f282fda26930e4dda2f15271be47dc597273566b008bd60b2f98fc5dfb0335d814eea7420b985558a7385ecebf62c928171f23c6ca4b03e0ae5f7f12cf41a6465f81a210960b769aaa21a053d2e3a346018b39800c8bba6588f495e70e6bef38973348512c16b2584e32e0fa3262a0e3cfb0b80ba8d543cc8401c9260504a1ff92ac80844be7cebabf1c51d69d669a32a687a57ec7b1adcf5533f9e38ee0589dc8782b8243eb7be681abdc9a07f2b5311c836defeb63da3c5d91bc33be88f93d4874c9e0aab5d8c2342072f6a3a605664c0c1d4750b66d5bc3ad5d679bf04f1b29fdf2e257d2e2d0531e941e567b1cecc53aa10840d54822f5f195aa8f757409f6c127e47942bed77f603284fd2237de983917b3a03fe55f067d6605e893e6d636e88e1ad0aaf2ca9b38d46fd20e927cd4166d53bea7561b4f826523f0f9acde3bf38ac233ec7071438b8c43545dbdb00b834aba94c2fd3df253fa4bf4ddec3e5c41696d75af49904381dbbe2e2927f6e80df65ed6e75eb18a953277c4e187db4b5786e043488a32150232a0fd7bcc4cec4a56fc1c1f0a890ce72d2239e4c613808697092f51f7064d5a719c4aeb43793a41f2153541209b932137d0bab2f3c730e101dd0f2d167c36d4affb73d5cee7c2a6304d323d3288cc0267612507a06ae16686daf548761a70a3bcbf7d429b5613bf3b468e30963aa6829870cca0abea5fe6eeb063766fab0eb41e87e6aa49b17385b62015a77696ceada9d355ac1046f50852b5c45e72f4ae3ffc436b5874a544f850b427b14e3411c761fdd6d9fb2101f4bbe1cce0368f0843a6b90ced34f137942c1fc8ee7754c10ead8b77d9b16ab6b0c75600896b650bc058d604d343a492b29f1a1f77ee5d3e9142f4de995da848fb27005317ab63cd4ecb1434eaf98ff9df4f9687286d3ca130c6eb2b77cfe8ec3e1deb0deab6d9ee0364a5780e6f45e3c9d410b550c57b33d28beb47ffb1a53ad54f7ab4f9f609f220482547b05d4afda2b6e7d4f2a6408f1b1b12876b301639b7ce6c48010205b89837407fdc255a22f61aa9f6ca376af12bf22d134314157e2469e00dab5cc9e1dc5226e9c04312777338092015682d8e5c3f8883f6863f789832cfe8388e11d7009e55ec9d3bbf602e65af9a0908421d8ce19225788e87c9b5d219732e7f919352d9a28111f5271c99800c11bbb2929e0e1e8204e1a1472f8d9f53590cadeae95cf5bfbe7dced7889101817bdca2c6e47dc0788db2eaa6683e877411ed2e40fe7352847fb07fc7b34e2621205f6bbf2bfcbf0c3683da499b507f8694b9a3edf77fbf7cd838ffafd7ff4b32660c87e8a068b9b784c98796e9532e90b996825c0287d482bf3b645de08e520b4206304516a0c010900899e844046446c342604ea270a91245fcee64835f5004e88d4f8fe01a8766e668717c79ad0d4d552a561d26d9ae0b140b3a0b118e98b2ed0e281f5b1014c77049794d9ee0fbec6a1272e30c03a109c628fe8877b6aae773ae6154f16fd427c82e8dbfff3496c0287675de7c83c21b388795e8adcaff47c843ff407903995798d1acd7a05ed221819a5153edff556bb76d81c8689bc508e90920f7b3b114ef2c7b2458e5408e48544a50473d2e6ec80f4111c0b891a0fea05cc60d90e403e7f20c91582f3480e3ab4e6b5ca01d3685681cc4f57d3f97c39ebd41995a22d14a3c5ef7b2ea252d6c7320e834ca643ff6b18e318e2de3bb029fbc86bf2cfa0ff0be42d8bb93ebbccc3bb5f4069a411c1fa18be5ce60f8fe88aea5bded775bcff0a254ffcd377244365d14c3d5b88dd540d144025e6ac2d4867264d4e324425c0fe4ca6420268b469c206a7d98bc38d21e73309d46a9833430d61dfaaa542a5638a4bb7009720cce7fde5f29f431bbafdd861b57579b0c03f72597fb870333e5fd013d5b1994b7fcd9796a438071528de078e9f8e246818f6f7f85c9487a2da53ecdba5d46773c20224b1728270c2a8a9806c486f9b4c53dc0e0672d73142fc15c37c9ff5232b51001f4915310ed1842f5acd3e24d6e5fd322e3f622d4161f8dc2b87251bc004de880df1a997a4018a25bb24e5361eccde9ae07f25f83118652b0838ddfe8123b0037887e6eb59cab00e495b371ab4d0e4536b744ef516cf7e918a1bb2611b1b948846c88b8004a1019c6bbb434f6fe377a08ab4d00c5e6b5cc23c8c0e0580efe3822e94bb5736f936f8422f080ce957d6a0911840f41b6ca547e06c9c0748a6d2725e2ad8e0e662630b77299ab723939bb67ba368a6ec5867c71f319be79f7ec3e70c48958595a918c0f18313b86e8f1e965b2af29bd2146589c4c5aa9747d723c6e6298ff4386146b7918f8cccb953309a8bd21e6ef01d35fffb4743929dc771787e9dac94c6383b78b3e09f91185e9788fb8a668b981dffd215b549ed45df8795533e0566fe8e1d372fc7b31699286d809e1cf41c0ee7d288d0c16fd5368aa3c1c32d8bf206a08218411a775712aed82e9522a4b399fa55a69a858b5357dba5a5d76e995c490802fa6dec6cafc01d8d111ca0c157fde31ab61c2a133c563467841d60e0c5decf4a11519f36ccccb3a263551a9b5b62ca4a488d87a5986f6f40eea51a9ef2aead90210857f58bdce7b50879eca91c084da638943901b651a34147e3be065d00d9f8e11fd820f88225d7a02b69c0407c0aa14a913a331bfeaf3d97a6581e26194dd224d9611c07542ccc6d8c0830d6177ba342a786d8ca9a4e8ae5ce05fb85bec12f9b059d8917cdb85e8406d0223a8e2a4094b8c06b39a9dc203ac50a6a7f27eaa1cdc3dc0277933764ab0f174406a1cd0d1c7768a46b540e7d2d00bfc73f260c3da61aecdd027de860d2556cc0434f642c69930ac5fbb09a854151eac310f648189dc75fb35419616d67540b2e8ccce8a09c318c0105b5266bb2dc92ac21d926ca77d5975af0250f7023d66bbd7e713d8686c3ea6b417e22e49042d1cd7111d7f0b096e72b2da44a34555fd38a70891ef2e4ea1d24253b6bc14f6c3abdebcc3d2f3dd49b4abe2aedbd9a853314eb746e65a2dccfc50311bb0611e626dbefa94da9b73d08ef6ecddaab120f83a90d3a2f0719bdd35454c41b6c59d8e25570c44965d065c0a8a0616c456c975aca118d597fa06aea32050b285ee3046b01b236cb2f02008bf67c21225344429f0f359b835c3eab9cf549aea8d863072977d27965898905533fa117ad547533f3cb49bfecb4f210bb252032eb019084149089a7b239c78b14bd16892ea63a54492a67143f9ba7bcde859d593abc682a40a50585bc272be9ef13d93868d35ca5f52fe95c5e0a82a101ff3317bf52effdc7489bf1fdd5c02e9c1bbea842881746d15a85988f6d6c35bec9a484725e968962ee839761d662818b38a81673124fbeab8512499176e04a60d20bc3d76dfafb7ee888782001cad3d19719302807f967880ea4a661b08c7e557979263d11c4bb40fbeac8c6ff726056b16ac1b06a60c69e97b3cd833a8925ff41fcbe09c1c5d53d539c2bff4c9d05fb9395c6e7ad49132b4209dedccdd4eea9917baa309af3877417677084055313d018b1da694113dd26505dd52d5c67c39e145b6999813796044c660367fa03f88ed4674c616e39eb56a0962fadcae69cdc158c6c188a030acc046a6719e39ae5bcb9ffa88c5165becd182d05f00c046a4eeaad7033d48eb4f8221d87e2fe3c8fb91097d25bb926ccdd8db1e2c7c4c24fe0078bfd03640801bc9f3993324f31f75c0a1ca2860fc4a07a608857e568ade00d357a548819315d562cd14e13a8759230ff3ec57742a9e81ae2e0ff04ea2083da1afc342ad629c3a072ea48d7eec35f9afdeb32991f506687bf3a99743400ab4563553f2b4a33181fd5d30ec33046a0b839759309c15a703994ca5d75abd56dfd3eeabcd9eebf952b87665ee636f5ed44d8ebf7eaece9b8003225cdc16cc2909609c161c002e6c01895f92a8462045416c468b498fa0e7ebe1e5d287154f1dbd6c26adedbdbb4929a59429c97b0941093809185764e67191a8e1fad94f96bfb578e94d5fb2fd326f2b353cd46ec868f9cad9f0af61cf256bfd3188a3a615726bfadd89a3e6f419ddc6c63d88a3268f0bf11a227e84c791781225b9bf9d388af6d7df4b1c45fb3693dca56e82aa16c94d92525222726bb24d109f69205066fa7b386acefce00d67c0febf12ceb523a3c4425d3b9dcb84a88b155b24cc61da4494af56362b1bc7c1f970becf776c7cc786f2dc5beb17adf52f5a7b6fc4892dfed6c69d1969edbd36d6ce5c3bffa5d2bd373bd696687821351901192a69012bef2cd1219205f0f431292193ca99b8af2fc2a1c38dc7d119c7db708ecb91e3455f39130fbfc38b62e42aa2b01496f29737d6de7b5df2e6ad953aa6d7b94adca50427a2a68d0370607032ceb4f19ebd0cf89dec7f3d8cb7f408f0eae7d59871fa5def1e6085137122aace4454f56ede1900cbb37c0e8e478e7fc0f3c0f1b0c38b1e83000fef5508601c9e21f03d7c75e2adac92230a084d45610b1688a380d00f0a42b2bf0de2282cc5c45fe09228e840a0071e38983d80f3ee639f83eb408c07c0efc0f1e8408cef3e002f7ad077b3178172b054f6df9e7069cbbb18bf31b9f4bd6b66c557667c6566c67b8efbc470170eeebac15d333a7057904b88cdc801363036a34fbe0decd90660ef32002f007b5626007ba51cb0f708983cdbc31a9347e523fd8b577914f64a2aff82bd8b03fd6ea01fe90f403f03603fbdf80260af94455c9d81ab39a96a73fde709e033704dbd4b6a009e7241ef4002f8253a3df900192ed141925babf8d3e3ddec01f5e0cac9237a2f7132dbf0508b895a0ddf5ce8411cfe8df34e9c4783e962751ec4c95efdec4df657e13cdbcab6e773f3695d34d99f851b426601702d367cc7997808c07700b0773fc6c30c00cec4c37df912f3686cfafb30538f7e0ddfcd85142d1e641a83b34dbcf37824dbf0aef100b990a2952453dcc325dbf039c4c90c351b700d195c0ddcc9bb2abdbaf361ce54dfce68d78e77eec43b9f41bcf3225adc6b67271fe146de4c9eac632349f6d7a17e35a7365972e1b84723d3f09e4b6e1b72c7c8b059bebbc45d3817cb09b7f4dec5aa1f0c0e3ff6260f0d79f244140c1e189367061bccb3193896121637606508850cb1b0c1975bfbefde97ef7dcea93ddef9c785ebc97ff1deb59383a4e1680efb6b663b64d1d592e57359aa64f981a8fa955e7e7334b2c7e323dfa3e1804b71644f3f7b7903cae2d2f7e48d4c223f1fd2604b93e2f630f663343e2d5dc2199cd11faaad15ceab3b5ee5f12a18b2bfd6a3462e3d88bb589712ef5838d087428f61ade590d78d50ffca9bb895d71ac78438138eedb5d7ae0ccbbe390c7b2eb93f8b3e3298af910a27738907693ecc1be7f5a0f1e1bc1e2e79a6f0145dac0b27fb14ce445f9a3edf993e8499a19a836bcb3baf1f16d70e57243e28dec81ba9e1c9f3897275baeb9765f389b7f04c9e971fed3993fd3f59b85efde4870cf7e25c3a4a3f4a5b07b751a96a083ca83bd9ebe727ec8611fdc3eb05b038398d0d55f66739d17094c34025aec262c43e9ebcabef4929a5b427c727ef9c06ae4123267bfa588dfe48c33befceb4fd23f5e463d7c9bd1e59be3ed8f46e9adfd973c9fe550457b6dbe81417b23c757c1016d72b6d271b0d714e27c7ba5ea12b959698c9fe2c32eadc913fb7534aabf4cefd3b77897d4c27ae57ca4e3b0ac11ac69340d85dbb6b77edeeb17512ad56f9cd79b6c7962336054f1424fec1fe5a2516efdc995015cc61088446b017928129a9124d2aeb48b2bcb2462aa94ac9564ab6786aa99354aa8a3315230e231075bd97563007882f9c52f2205ccf7b62b7ee06848bf5123a9dcb12df912e95824cd8e4f93298501d7909bd23c82bc29403cb3157ec1191fb3d1551d3a626abb462ad26f62584c8d87ca6138d25801cf1974fa6485c903d3f41e00810355711e6d03fadd0c93e6d9830ca731551de035bfc572cef610d812dfed448f65fd16945f68f5445846b33cc42892f47990be6da7214e2b126fb471140d41c3d8c4a5898037cff5811355ba29f14e311ebfd9bad88a23222ec95f06c8542958b32704614e22d111545005bfc8964ff58a3a24e501a9a1a7f993d959b4fe69453c8f4f0d8ac267bf4084f44794f761a5c8faa600e5b80def3d9965ccf7b7ae07fe731a5dcd87be08c22a8aef7a7491c15855c38cac4169f3468b8b86415ac15c662ef892d41b82656164930b91b5545949c51024996d9a3aa6fe5592841247b8ebf7c32455243f24494af563c79b501e1422da6947d0567f8dbf05296334aeec7df6a12f87c3fc4528818cffd39646e2138290367f8cf7e810e1665607d52c6644387590696cb951dd51094f0997478e75d0bbeeeee6eff22caf22065600e8d77803380f84b0fdeed5c0fe2746cc2addfd97b22cabfaf62aba22aba82d844bf5390bd4e01a62baaa2aaae51c15cff03066b0d02f033e0dd0fad5a6badf507fb04b89693b0c52b2243ecad24f064983de70870270784773a94e5b7a749fcc59326168cc3338bfbd38fe6f853268e823ef8e89124d99fb26c55f2c81e957c22a1f80b650104a224522ff4ce9d74c7554c451928def56471e52ff5525512ef625c7574900782207a5c714defc19dea2b4f55ef50bc13412a79bc731fded95cf11537c57bbcb832715eccc9be8a3ab127fbc79c9689406662905414e22f3754e32f291fb8e251494ce24524d9a9ca7bbcc57f84bd2f5d1ab077e90c2b883d7b59b0774d5ff51c6ff967ca1ee6956d34bf72a29a6232ada46c7514451ccc1ee87dcc1c7a1a7a528c9567293d5dfdaf70cff22b2aafc2d130c3d3b0f22cdd1c0ccdb0f29d92f295f376e4fa8d4ddbf7d3ed453f4775544775844d1bde0166d18b449cb723cfa736e20b38fa167d370785f8ec81954cc48f2c7afa19d62ac2f41bd61f719ee841a359e193526aca4cf131495f310fd38f308f19be8ab89e2a3f43e8ebb79663060cbd53f94ac3732c1f63e59b8565053ee4b895ef95faf07be563ac40bcf22b1f6365a5445574b5f2ce455f7a1d58b9d28fa2a9eb43aee1ab40b8c2e23dd194b26188412291e763d61a7a91e8ebe7110d2933cc1023060b8bc9b4b2a2a2522ac180f1e20589b46da391489492726f280402695a9661d8757d32fce43699f0af702befd50c6948313d0b0df063fc0c3156202c000b5ec12930e521c41e7dd0f7a78c469c8f99ebe8b7faa2d08bea8b60adb5beca8b444fc48f0c7f72de8edcade1804f4bdce8613cb5913dd08fb08f39b3ca835444a5d0c3e0bc1faa0cfa171c55d11589cb914350881dd987cca12851a2e0cb15b1df37e52d47c9f0ed801eeb1bde8e4cb1d75a1f0439baa2aa2e5c48c43bf71ecff159e52f20ba8210621fb5e7c39f0fb10766a62f448c123674c871b18d2546591bf277906f77d081f5c13a78477b749025ff311f42e61e5d6edc3253ce9a3e1f1b3a74a0881e98ece01f3b1560c37d7ee58a44ac83b7d8b06286fc130d898b6cd9bb192a79014fde6a164c5e060cb0c7acdd1c853d94d8f77b5f610e9b67e461b91747dcfa30531f9107f8364b0ef230b18f98e50b217166adc7269e7ea4d89fce48e78c534adbb10ad88754736df8bd4edc64ff8d25bbb5b615a0c30e32760d1291eb7d26bde07aff3232a904266574a2e64f271a45404c233a13f363bd462ae7943456b7fdc9e68c715a2e6e7fbdb125c6887dc43c9f472cd11c25b6def58c5e8face75b884d11c3eccddc23cb8e9bba1502165557c21c6a6ee2090d28f77b420b083816eef8ce450acca14308218440609454736fd7c42afbbbdc4d06d4e618ae7fd6f3337f99b671b65de859978804066fb84d08c95ec47dbbb3c0e00d17ca3d41ad8560da431913880ec7c1df334d7bcc83383568c84e461d2478981fb81e58630f26b93fc80cbb7ee074c0ef7df0ceb3ede6c8f283bfc80fd6f1437cec037dcb793d204e0bee0fa726d99f860e1f601305743845640f1ae03e17b7bef732ae026878e7321ea6bcd30797e4533cbd0c9c8c7926af77ee9d7272fd4b2cd1a1d4e13b220aca4f477f4d48810af3cb071d6492fd65e7a2802caa3ac7e14e7161131d26ad1cd92e45ee49bed745557429a454829ceccf728a4adc2f793773710091647f99124244088dbf8072b7165446b8c2119bdc4aa4c79efefe08c55f7a09b91f4e22170af1ae53dd135bda57d1097764e4f6774f2ba260b7efe4761c4054109e93db8d90db8190db7990fbfd88a380d4efbec1630dc2de77a1bf6f53b0a5dfde9df9f057bab7c85ea76e1004c41e0d9d825dc0dea26b27647faf9190ddeb2264ef1ff40e82f858b8332bc7411ce0436d3e366d805d4bb640eeb6410218c8ed6920fef818d13f66bc9480c11b6ed7952095fd5d204b9e3af2a9c7a9e49d0c814da69f2be9e15f8783ffe7c9f5bad3ec5cfac385ebd9186d82f4d420d72b954aa5ee37820191c1a8397a6d1076e8ba20e7fda819862a09fef6cdc1addfb51bb0b7afa1d0d70a6bfd50e846fd8d23759eda8dfa23cee2e0a087dbe83df8f6dad62074f922a3671f9edb13e0193efc6c88ce304a14ce6bc85dce420d6fbf6192ddaebf58acb96baf770e7b6499f470db46db36da6e3ed78744c29043b25541bab68beb1befae8d743d89fb84fee26ca60f7dc8b9411eefbf95fd65d88cc5e5d270d8fffc7663c3be71b07b7b92e7f5cd7561886931d8876aae5d45df80b41b8d613b22aa032f3ee5316c745dd7b5fd88e371a1ca756d3f1a997ebb467f55aae8045cbf95467f5754f00af63c8fbcbec95b6ff7faed47d7b56ddaa6e4e2785cdb46fa46424a923dd26bdb086aa2f74037d0bbf1484584798c3c10f6e119d6c8bd036bd7438e7441bd3dc49c67c2d7d68188fa17a4dfbe916cd7e5adbc460a6931dbf5204d0290c4b2824dda86bdceb6f79348666d65b493b1d168341a8dae1112d19738d2db8818a6c18081ff8537840ddf8318a6601eefa568a71abdbdf610f3d86c44d9f02b87e82d080223dc5560b87d8ae93ee9b50c77159a77ca24773bc25e573b1abdc0de296b2930235ded0669bb978379dbb66dbba2fffa5d4527a03b9f1ca5e32663ad69df37a4c748d8c4c3f5a48fb99ef44396e15f4eb4713f465c57d105d03e85e3a08e0fbdc6d5b71151278c81b070e35fde7cecca5e061217cd8defd92c2332a27ff86c9922888d8c22b203f9723e646e681d07ff2b8adbf2e3c3686a5c62f116ff0b8a6be1e5821b1f3ecc119e3c7a126e901a28b7588b5cffe63e301ac26d99f88122bac2e0ca3c026c7e949303626980c880fe0c01915c9964e89da5516112cbb20c946520ef862fdd2dd07bf5354b6369ea67f541ef815ec396a6a63ee841d8aa6c4dc5fd0e5a72b3b72a7fb13495b3aafab6467a37fe7098a599386dc3a307ba59e104b134f6c8ccf12ff90be6fdbe44fb7ecf01296192b16de76275e2641f4aa9cc5e7f15a2884c3d99ab7f3e57936bc70928e5f3f9c3a3fe7d1b11b3aa2272ed6c43efbfe1382a140a813ea47de804efc5933fa2e654d2299119eb1b695663a6dfb73b6659857bf15c4fbc73ecbd8953e39d670e644b03675055fd583d1b5f7a1fecc3b33555998140e9b1d114a3a5b13516c7e658228f8426fb5b955b56764b5f86bf64d9d640ef8e54e1564c6d8db75855557947a373fb3d4b63f1b605a5b13556d5f5ba62941ef0bc79e7f3273e4505b4111c6fb6da9b13a7415a5c39818a85c3e3368ec495d49cec6f1fcaf03e3c9904555cf8966baee248e17a1547e664ffa973bd8a932b4e5dd2b2a58a288beb12f7e6cc94913b5227cb59614c6cae26371f27b93ec90ee59339b06fdc9d894e931d27f5ab38de559c21fa238c1f1eea5449fc3b3fe2f9d34619a1c7b622cee0cc8732be24852bdf2b45e14a52092ef49cf6cf97b4e3b892ee124ccd008337dc520d265840204b66c9c1ae4fb96930205726e3a8b38a8bc51b7f91108b191b5186900932108b2134d9a32ab77448b0449e4938916f62bf44f9247bf1489c8928e781d879bc734dc707bc73df71272dd3a9eef92d33670f8ec242d8a3e152df9361df63f9bc86bd2d7b1027c3deb39f52fd7cf309c397b59f7b2d861ef14d2723934406480b894ab20f21b3d7323189b7f8671e6f6462cbc4968937374f5c0fe2449bf50e3d402c437fc878890183375caf699a8689aef972ba0911285919c21bbfe2a66955d348dcaa9a20352507e22d20295caf695411d6c0fefa9bd051bd02d8e25f831a2341ecbda5d2c70e620fee340d9ce1b05bfdd1c0c7764494b5b769a00e4d7d1c0dbf72118a773240e48cdcd138f6341041ece8a6e13a9ddb792eb673bcc5dfbdbf0d0a9db5d12b42b2fad2c1e00db761733b829042103b80b0e198bdd6ea64ff6c07104f36ef1a1c85c4207126bbd6bbe845e6678eea56c2e20e6964de02b1d589c2958f41f82820bcc5df09ce1328dc0e285c0fea34845a84453cf755296036964ad662fa58a431c2974a3b3ec5130b590967c0a71d838061aaecf5731cfc81c820fb98936511f40791dcb5e53878e825f6e211af6bab3bd334edff9bf3b4dc0f334dfbd8cef960b8936d2b9f52fe7cb0a76942fa57b0774b397b08b397da8d4cd3fa67144eb97eafd5d67f70cda99f8649495caf7eded5561693e1daca31e5f09c3dcc5ee72c04f243df231ec9f4bb05f7e5b7ec118f645a82c2926c7a893d1a596a1f0dc6dc6f6106751a321161096734f67ac423b9034c9cb885a8f8fddd116bae5570c68a0391e1c2556ce9cf12172486fe3bdf2b7d7cafe3fae23a102d2ddd89553caafe78709400ce50790765aef7b88d72fb3d37721b17c1297dc4146818fb69023486eb752bfbb72c6c59856053879483db3c5b689deb59964db1529686554aa54e5023c4662c3556da56eb58168b156d52ac548c361189a43a5dc0ac75199f89a8fafeae8239f46c459decd0729f697fbe0ff6e77ff0cd5c4d969d2afc70863f5771095f9e2571c66fce27a064ff398f743dfe025da6eb2f3ebefdb5e4a9f2eedac296459f3d18101978f4186b444abbd3d78a3d19e3536c1bdb866d84ff88316ac1c2272465e5e02661dda8b070e94d0ea8cdcabf064b4557f0bbb951a97aa05bc080c820de7ef9107b1e2f0f9fdeed0f67c089c5edf71f60508687c5877046ac318b414454fdf8bee32ff423dec9fe75ea549d9d283f4e4c7b6693b9337570f0fc2cced4f9d8cccf4ecc260aa1472892fa56dc49e47654c119ee4f754cf033c1b7ff03a6553fbe0f35c6b798456de8cd0fbaa298aae08c193e31a5c134e5d1150c4d519ad80273a02a388302ded8933735a22aaa383ae3dd4c6ca982f218117fb49c509474763c8124fb03613316276da3833e7c989b08a7038adbab56cdfed8aa55ab1e4618e38a6b22adea086594ab9e9169957757a92861dcd15b04c9ddad93636fc46d43c380c58732aed6e91df9f1e7677a5067ce97b8757aa79bccf75a67e2def1ae09c4d7bb76e3f33a0de45efed21062d3856d1e62661f327f1eeb0bafbf7cba3bcec454a48932d65a4a77787a74acb519c5f95aac2ef0a0095cd895cd8daa524a2b776d56dfe26cc6a65c265e5aeb67fe52b1e743668ae516175a7be7c316ff39bf05d78b2b18759ae7899a1cbb493f716129127137f1169d920e6489361a179edb7c4fc8647fcf598107dfca64fbd5c2e76171e9c26a6b5b19d9fe1037e653082184d65a7b5d97b5d65a6b539fcfe763390ff2bc0dbfdeadc530ec5dfee55ceff9773dc49ee33dc4b07b6975559f4d4fcbd8e8f02eed5c9d54ab84c3136d8d52df5cb1d7363d2b11d53099676a3c5d704115a4903dff789ef44c26867085e7a928c5f5fc6b1eae73f4960687703dff6057aa59e0078cec5844e28dc27690d758a68a54d453db8e5649dc34adea1aef3c7234aaac69e2bf340863d9853b72c4dee77dcc9cc9ab6e9a7c909431c608ca2e39adad73935afc5c59e9921eaba5ef58be722c35c67b329b4c2f023d7d1027bfb395fa4d1fc4cd979cb723cb783dd5a42635a95df22f907745ed8aa02b46196594515e1daf1eec6b2fed53199f04e2a60471d3827e82240ffb1ae6b1f2f292201b57fe9343e525f66298443faa22518db13e36bbd61fd5d1fb88b98e6a8ddfbd8c8bbee44aaf6976364d941f638c31aa400845228b9b06149b26c60fbdae092595d95fd74b8d0381e6c738c30c3162b0b0984c2b2b2a2aa5120c182f5e9048db361a89442929f786422090a66519865dd727c78f6767cd716691097b74655445d893f6657ec41ee83fdf3f3ded3fdcc643f6d715a354f98bf3ae27e2c7635282a2f6301e747d5ebb3e7d71a512977dfec5773193d94b8d8706e4ec69fc4c3e96715cfc2ce24e92c99eec3d0c4c966234debf0974b2bf0c9a9a232eda97fc25c39e68f45ae3d2157245afd9701027fa8e236d24351e6868ed86c857dddd36bc94f2f2ca4f0bfc4bcbbeb72bfb9375f633bb11d53019c63a63ef1d4d471ad92b199f464a9e243229234d8c349911f133034083ae1f9c54dcb8b17660b41d6de72bb010925dcbfe5366067114494632a9374e78620a8b21d9933d19163ac8de042275ec4d127fe925586b735adfbc993bf526cf27fe6267cf8442677c26cb9b88aa3572f2f3ae25752a4be6481cf92d7106cc3ccc7c0abf24eb4dbd8928f97db0fca48efc648e6ce2492615d793df7cc98472f4ab49bcc56d9c8aeb758deb4dbdb18de5cd4cf6dc26c916ae276f6e92dcfac98b0c485869f165a8850caf38821472c906a75bad961c29b1b820d189a5fa36fce4a85ec596ef582c27ab262b264b52a9d40722aa71705a70064eabe08ccd89546915512ab0c55fb664a7ab889237f4a156bad169d66aa569a10bba2150a66532c6182bee23ab52d7b4c48da670edb73601d851dc5dd28914abc2fff35086e3d0ef9c751cfab7d4edcf292dc9102a51006c89df12bbb5f56db8b794525accc98ae795514ae76c6c917d691757e4e4648893e1155ae8e456113982c9207b1b0e849bec4398fafea788fabc6cc1f8ff6023a2ba04e53e7195130fea589c8c23e6a681336654bdb251f5aa6dfaa65536aad8aa50885229a794f4b5491f14e23090a669196e221a675b7503d5c7765f437631bb6a600255e44653b826db5058f8e9300190ecef0313216236e1889ebba78b771ee36b9d0dc5f81aee4e2e5e9741d8e5d402ecef7bdd8570475fba4c2c5b3021ce04833577ea3a1702f0c0788d4fb883d9eb328e98ed157544540b6cf137008469c19d6e84a4dbd13a9af3ba9418451cfcd8d20de2b09f31cb300cc3b00f6ef3c5d98c715007cce8066d53833c3bcbed8033fc2b47b91f9cb85e57a32776c86a428e785ad01318bce166df9cd78f610f71afbc6b1b0cc36d73c4a68bc86f0ebb788b4f1fd9435111d1cf2517de8781f6afebba2e2be2e20fde65d84bee08f92910ca8739453e86c9893ddb3d3f7b9965b807efbc07effccab62b5cafcbb6957b85bb52af7ac9080c70654f7dd3a59c647f97d5912436bedbc84ee9de6ce8b0430f2f3812b771234ec4a5709283b145a5ef6a0bf7fe91b7e1df69d8eb4ea715156c62afe42d2ca54d2b2a2a2ca0182c1ccc202f9554341cd7430caf842df0e6e6f61137ada894e2c576f017edb3efc15f42dd7456ee226a64c29e4d915bc45e77b1777aac8371dfabf1029f48b8dbb0b77e155123ec37227cb3ba5961185bbc74630ed74bfae33ac73bef954d471b18e38c308d135b9f77def365d73e3b9e020e13234d4f8fc537f326bbc5b68874f116dcc1efaff40642bc82df2b9778951db6c0b7307e67a34efd91c598094d558e813992be1228819e27c911abaa5657f94bbf40252a243973268e7a9122429024d9592c1b252a26d9f39cec14ce2c814e22973a115fb9ca55302f23233303e31fab1773e24397c93e131dab9cabbcf355632702e47a4ea3f21a6780aa945d356970b23f8b8a08128a6a9eecb94d56713388b7cc99197b23f6952682eb5d9511f147c74f0b3078c3fd1aa954e7a280963115910f612277634b0d0f76adea66bc7f277ab2bf8c194722c3ad21e5d590ca563ec53ce8973e24ed878686196260afc46222fd0afd3a57ecacd85bc11ed78a99cf23b3f33f34523e691b89402ad8b375628f885a032b63daa419a33263a5fa3504c9b2c2e052fe05873d0dbd73f749dcc689381057c30c4d9dbc1a3455314d7d6868eaf34f314d7d682a471c4aab46ab9559b32b2f96d0308f99b5b4f435ec75ee11674cf5b19735624b7c6bef2d95febb1a397e6872fc7cf6a50f1fd2e35ab9479cc9d97b3de45f9fc2f917b20fc21ed7ca52b33522ca7376a0e83c69d1f7e0b71267b27df9dee7cbf16b68e2fa1a663e5c9c9993e63973a5b88626ba00f2670d4d74023acfe75a11d53fdfe374f2fc1a66fcc525cc4246f88f2cca308241913159d051d2841d0c39021060e20b9c4062fd04bf829c2e68acb092ad1bc13029a8a0a122487b01a322091556f40bb6f0cf6dfe532d1556f487933058f0041704f9b4a0810a60a414467aa494b3de8d6ed2084bd2f9822d8eb81b28c38f8a25d9bb7f048370860e3f2b95b2eb953794e147c52aa66a80b23010063eac809412cef02fe28b3619fe0a082e1d12e79491fb5ad605466ca66052634408dded6e440b28188162a4c7c84ea6bda00ab9d4634408d81222342590d48816f6838160197e469a60c405b62661640aa885133e2043195a5d407104d482081325a8197e4658a42ba04b6a2fd8dd1b80728aee54c3c60e3a7e5892c3e4db6e664fdded7e2a72aa6163071d4b725cb5ddcc4a29e506e49c4004810359354e2c26beec3d101bd81184119b79d74b2c325c6878af24062d9eed9e6aadd696b61b035669bbae0bc3584a9b0c4a1b28d3344d03814a34f0a04e097246d420f73f146529da8d9494162d46a4f5c31769372496d1c5a0953da823a305e6003f2237f818ecf0bc4002467a028c11c660158328f2101e031a26e0cb6488c94065a594525a6badb5d65a6ba5b3d6fa52ca5a65adb552596badb5ca496795b5d65ae99cb5d65aeb947456596bad95ce59eb94b2d65a6badb5d65aa9a4b5d65a4bb5ce2e8ea833c06aadb5525aebcc9452be0cecb5acb5d65a2b9d5dadb5beadb5d65ae9bcabd48b28ac86486a7b4a2544802441eb14753660e648953e1021092ce4800a4668908202a06066a584c614234d24b162425da2c0054868e2886a0a2a6e64184922091bc5ec3b710f9022522831caf05b3da1012d717110b12069371703e3a512a568c921dded71489229a4949322a9476aadf6b3444937d484e82859e47a83ab262b26b904ca344dd340a05b448a8a39e1a30af291f2b2b62e81839c215ce18912d4a85652058402298862c50fba587d41270ab78204aa24f67e5440b8eafd4cd5a4595029afe80152a9134073de2aa51c019d2a2e3269a5bdb1852664a8e8f9aa90e48621416216669418a2026da5cb426248174a0c9901d600150a7cc816332d08c3ce13487a84bc00060a95172a1459283164c96748124830c4093076ea653f2c51b5f51bd74f1352e2563a627661af943209f3bb978164bebfd0f95ac423baefba5065c9bb799b474441c266f8a980586d8b1395524a49b3a4d3044ccc5b23b3a494d28f620a299f6293eba60c18c50ca494b274c4ac554a29a57c29a594f2bdeb9712d30cbf28aca0d7122fbbce15a595bef4d97d3f9485ce4c299d960c47acc0b3032454a11a41a67fa1e022535ac2d7c2f497e81130f4af77f4deed83a2953f197e506491bdfbf4084c3e166a77c732be94fe313185c5d85a8c3451404a16966dbb3786c638a78c9158e21fa6095cfff9eb83c48f4cb5984f77ac368b1ce9089f189a8346c9f4b108dbb194315e5a0ca531a6fd7fe48bd2bea0fd80e4c3f8f26322fdcef4477e029661d77cffc9806f9a1d85920f1f0bd9bfa588923fb5fa9e2b8d2db1c588e8910458b40ef27864ffa415ae673579e3051237e67a77b52e8c893370061138483848f29978040205ca93274e9c3469f2224bec9f0a935076bb476b1d66098960f431ca75bed77d46ea31f35d8be96c732419e1fec890d2d83487c4de8f1c639667776398a31673992660bfbe0ff623b5984f8ec658c219538bb15bf636ac6af1e90e735229a916532960bf7ed57cb0b8626ab508d0e7215f2071f1d659e27bab1643f37c2c14d30fdf6a391acba75c47c9f6433f157e40f2b304e8c4d08d903fa657286010bb3e5342282194104a082584d8146307ff479e5a0ccdf2312a85e828210a40182048648f3d12d77fbe35d304b2c7de870cc7161f2efcc130b67c4c4ccdb2c6c01c79d08f5ff10b246e073d4629e59c73524a29adb5d65abfcf55aee2e161b13a353169c9ed87b4c648bf622cd4b9e6b0fd15471938839423113848993e0e528e4fca1447cebff853888ed25132d4626a9638cec019908b337046bf73351b217f54cf90d015143370f71827144be4fb17689821068b6945a504e305a9e913b03812a5dc1048cbb0eb632b9d323a082e067390ef3f610e72081f3bfa0e3008038b81f00367f8434eaaa0a5029c0fb42ac801f423b07e975689899980d67ca69841add55a28aab8e40de8ac1306588b589dd2048731c22464ffa885edc2c248440c51742197a288924b5046d8b5c9154090422e59d511b9a2711404d954ee1e2314492e20cc3927a52b10926561adb59f0fcd13951372c93b6d482a66f80d09f2a9b8d8246866f8b19000a99a8b1092e00c7f38e3c26f4892ec79880b3f15949ce1a7f242be1bcc01be3f0966f80d99412e8140205028f4ad80c83764c927c7ef500fb263af880ec26c9fedb37db6cfb682bb33f10f83b2bbbbd3ef7824126189407cbe65729b949cf46c4c22c3851443cf396291dc24b995bc748daefb8f5f8c2c1cebeeeed25531a668542b9b1bebeeee9327c6283363dddd9db24e3146168e7577f74ec568dddd5d72a1bca3d47379dcdd9d08d9352c0183323cdfb0e79fabdcbd4736372c1c1e7777114f0fcb3da6b070be96ce4ea776b8cbbb2365e3ee3394a3ccce0c4faae7e4eeeeeeee9fbf8032ac61edbdb0667686067e9489286833ffb40c6d8e4f44f6af6324c16267ef479e3146189d093ce590bbbb7b9492f3b698cef7464c6758bd730c519ee32d4c983469029d40281902c910cae8eeb9c4d5cac6e6e686e59d48d9bf96ce0e4f4f8edd3ddd23233333934a45efb46557f9cae686859363b3da3be5ef6bb5747476727ba7516e9e1e9ff154d3d0a854ab954ddbdc9c44b95911e76be9ececf0f0f4f4b477cadea966924bc99d724b7355dd6a7d1fab4f36db114f11d5cd947a2e8fb592bbb9bbad054d6c1a22cbfe2853c310a64b6d6b67c9a257bccd9e9ea7bbbb37f40acab01cdda3872e09738019feb5db96fb6d862f6dbd56da88b22f2c35bb5b964de2eb5d3b84b0c3325eda0df9d17af891a377c642d25fa477fe22337cda350b18bce1b6764e80a415a8cea814cdd755410a118d000000003315000020100a078462b1683c9225c56b0714800b869a4672601d0ad42487518a21a308210000000220003212240900555b49a470edfac04979d9237ecaa0603fa35f6260fbf1583c1fc182576d8b64620877cf12e26e09af5f32468dd0bc281c714848f3928542b9e1a59f44c25c0e3325cac6bb12894c35721069b4bc85ca9c4ce335a74cc1cb9fd9ee78ad923f2217d97fead8b45c3f1ba2f967b3928036fc97b4f741d3d8df047f2fde4b4eb0b9cf2245a209d1b5481fe8305e2ce92af046499e808330e2665db43b139beb56252ed0f538ca7e92e4e38e83f13e98fc31be9b96dd358155ccbc31dd39412d2a2c0e88495ba287263d017b9f4d8471858a3f4461c1aebd30d88300f375da42a27c84e073490eb0c936dbff08182c43ed604507f67a6a145211e869897ca5b2207323bc2c87098c3f1255a75485f93f20435c4305e07d03ec0c2f13cc3e57aa0e9f4cc3c4f495685637071fbb6c3c82915fa1df33afc9016ee21143247e57b056bea3a47c85a5b31be3ce007f9fd6f7788da13edf77a07a9ddfc83727befbe658bae1852caeeb5b7c106f44be468e99c41b13800d976f928b9bb9fb289db441791ce345cfb2d9b56ee3e425ee4a3833517a3a43a793e84f3194f0e642677f4d77449276b6a57da5cb0a981bb48d7d3521eb5be369d187b6bfcb178740af900a890b9b8cfbc98f28c6c0ee56d632ff66cdf06685b50b593e0213ead0465456cd4bd8d0edc89211d6ffcca48b77615455077067321db9e97fb4b9999fe0e5a1a7c3427f9194e0a5397badad1f52c4bdc1dddca82c3e3c0c2f7839f548e280683b7a4c0dc316007378618872fead764806b6e03d76a093df3c230443052419468ab36fe033cb86f519ec93b7f949f8a9459734e6114fe41a536c54cb68cdc11a303aa5eed0a03c944e5d647064d280bff42adce789d68dfbf9d06b04f71d6da68bad02f8c8787b50ebd1c9ff8190c143326cc18bbdd889ad4f6ce849b2794b6438e2c76b1896d43bc80471aa3d32d4cefc4da88e95b520fe4a3c568aa395378afb0098d931e9be28499570b9decdb11ce1069d2052254f40594f15bfa06eda0be88ab00c3bacbf3ddb4dea69a8a1d85270f4290b3df22ef058f14ddb315153318c00df5e5115ea8550ef48c94faf7bfd51679751ff0e005ccaac52d7492e6e7c4fa62be2521cd1c7912b686e5888a1f1a51a5611adf738b759be2ca1f74de8e53476ca6aa38409e1002fd314e161a4e90baf5c01fbc5fbb9daa317d9bd952cb54738b67b827405cd002ca2f361bc3e44658573b7e04a9b663c5394bb6c1a0f0321a5f8c0105097687112e976318c00d78ccb10c10e2808f5d79e5bbc3b74298fe9f211ef8e46d469e9cbccffa32d4bc67be57193bec159aa5c9e84ea537e83a7057546558812db23522d56dfbee1246aa7dc7c150e73fcfd27750a34b2fb1c6b2fffac39bd56c75cd840ef85e3aa13105122473b20a091361eb7ff483d71a5cbb624dd04c49f41430aac0a6e2958fa3b75c4fc0eaf5b35d7209770810ce70fde165b4d5c21f21839a0dc1c9a7347342baaf73274c92b9f945de2ac696a574a84e89371b32561782863977ed8b81219a1914eea39480e9720c346d651414a062140e5066b33535c2a99f68183e74b9c725f69bb014223cf8c879a12f84d24c5c914262d59eb058ab36e2a936af5d68dd7017439fdd985ea0b10564bf9525fea4a1929b99b64ee94cb974319ee812e1943e1e7b1d79b4dcf8b01e40f34e1e93e087498e7e1d7938db81108e0ded3eeaf07df21655c40dc88bea804e80d8ca271fbf9ade3b10178cb422aaab00658c0dda337c67fe081c922a86b7f3ddce682558f646b3cc59cfc0d758dca8811d7642cf9be1c2dd6ad7f9c3988fee2abcc73688a428ce6dc04076cccfb816e0b612a93c0ee72ba44b2ff158dd8e4144e047ba7bc3628bb79d7933bb14d371863366080ed9aab2cfaf969f54b604f5c3941e4f25ad4b0d01942b9e4c20760098e2d6fb1c576c329912d4ebe3a68e2dd6f2db07308d522c62b28944bf10f48832ea96b4c79b09870746ac5f7dffd819663d37c19c776a8bf54e73d419bd01d6e57a776bcf9e5819d4139ee92d1415ac1a041c66ac01f7cf30675b9f0a345e98e154a1f0897609968df054e17afc8666e07db58d38ee458802d55ee62372a4b59b0006f546ce49adc70ac3669818efab9f6016a42e4bee2b518777dfafa646551f239e432638bbbd843c0e2384a17a51d54a91aa9ef93c1a6e39d25e9a8ce712108651907ab571d9926b53b052aa0bfde0f5f781c648332c1839a43488d69cf5eb44b732d0421075d676b20507062eab339b4e4835394f45270e8f1b287e82d1c874efc4e1735dbc6c8dc4e3c7c567b56734d91920877728737501a67abb596cded2aee586e2644764953eae82cdcf299f8a2b175e3c8f60544e23c89d793d2b761d8d3df8092956e5ca7c9fa83614f0c62788a72e41e4bd5bffa064a1e42d0bc1294646b543687e9db4745c955967e30fb55728376b2ecef943ae6129f218ab95238f1ce91e1d9eb325603bb9dc31931154be51d94609e7d46ec36f4bf1c6062090051bcb47689e02dd9bc7b834cf8269521763bc87a8ea4051ca74dd04d3a1d7d8f9033cb51829b67967b4d680b1a6c9b0ef7bf7d1bc57bd8ccff13ba94c2a62821fb8bd656a74f6686a1e774ae025def64afd5376d714167940da96adf0eb8960ef25a7f3fb747ce658eb8f13626e1cc3c1052bffabbfe4dfcabacf430a57bd8520a7bf85b433be776fce552c189a09c967cca366a9caf44bd82520d7850486aecf0fdccbd9c899633f7ed43422fe928703953375afbe7586f1f55bf24b309df53ac53879b58491fa8ff43877f9831b2790b094429b29eccd30cb6d2e6a4c7f10e7d0819a413e0d644d57c28d5e691ada62dad0f5eb00125a2583886689f59fa07b5490d3b1f6464193c6de8adf3b1a351bae8d5278962b6df8dd88975c7977e5dd0b17ba99b52e7ee0042cf5c0807c81cd3c1919110e0f132c10e9ae9653906da27cab060b1ba38eee94e15102fb79b7692f5f17f621b1c2a448a6f578d9055f7b7d7dca1340549edeca309b37abf55b182a18124cb6d2ab6d67475a9543faacb0beb2ea1c138e671037f1d4082db66b1e17d1bf2f53f11eb048a0046f77be9c7f92d3227acfe58df4292096e76426d53774f188c79b0d4a19f8dbd76890ddb97d6d5afeabfe47f152f1f7c986a48b77a9d4f2e60a36e019e8b84e6c279a6c581a2d6819ed1a1d991323b7f2db6115be26a1594fd0ec45699f695ff55769d03704fa7a94edb0e8066c5c7f71d71e8e2f9cf52c00063c32d4c1193195a7ace07a307c7446e01bd691ae8276fbc0a78645a8a831bc9c59712df495353767816ca983b44343be2dec7fd2f755733a5e4e5b8559875c42b85d30a1f04e6ce1de06e59d76c094b9c4af91172380266ac10b9a3119574ed2877c79adac61b9fe18b6e7f6497c21cff939b54e4406f79f3153d99710c0bbd8e2fe14eb096bd456fd3f4e0a6a81fcab0568b0440970f187f8db3460898ed3f6f452b33419f3a445fd6490123b16b48470877d0e183978c7c814233e9a61db5fae8f2bb1d4cd7d0854d33cd0da34ef4ab45c73095a6074e91aef1f6cc924eac94fc2a1a2ba45609b9f01bc2a5845c38e647f2099371155a3e55ad9cfdc2f59bd233fd8e68bb852306627dd0b36ab6873c4fc3cfdf414f684b838f3d8bb459a410e47cd13bd67686f5a531c482a01fe2d0463c751160c12e82f1f311a7891a61fe791ed8154c868c652b897337f7d5df7fa000e0028b2021fe725c17ee18ca88b004d58f9fc7fabf065581dd24e11676314a6027548ba6ad189ccb17f75b9ac7d2c32d06e4e796f2518955f701bf55359e6a4e39c026e50569385a7b0195ff1d32f9af760f653135c7c4a9382e222c42500d4cedcaf52881e6182d04451a4b12176dbf0aa14e3e187aace6e772eeae522077454cc50132cf638a10ca630861c4ca0c6bbe301542a443cdb620ecd5189aebc8b58eb393702b932af415f3f349ac0597d952d4b8f5cd911e2623eebbf497619527401d02be91c3b09a6b1f2040a1c6c484392fe9420be2199a457922567adc5a20b97e39e267f9f30edfd3d6f1ffb4540e1f6c1958321c148022a8ec8dd0fc66cba31deb212f075170d3c5f058d3342845b8937ef52f93d7569711fb0620e2f52d4192e30e5de31fbfcb0519ee8ae5dc18887cea870a83beb423b7945293acef4cf471c809231119574a0766f0587e0ba67ff7c84048ea76b29259924179759b6adba6d862d793b0ab928ed7df1730d48991e461cf3ac07ae92f6589206e6466cdd23664cba81bff0fdfbf4a77309a462a4844f30a0f03aa08f0ed5006a991907435b91ad6a9a7fedf4c5e0fa48e8e830f8a9dba6f8374c5f61782a6c9165cdb3a9899b4a3165959b598c6b2c151bda707c306e03c97bfc28630df406330e0e0e7ca04bb02d0f6e716189281f28816cae6c90e1b14b16bc94b116c5154cff0898fe0f8ba742a635f487e044c9863db1ece6d3d3593aadaf690d8336bac3eb3566a79c716d720a1e692610b7fe2f7cad6cabe241f96890106d00b4f148938bb92cc47ca45306da18452947b6e2940a981fec4cc5f558bfd3e250a6bbb486fbaf91d637c9f397dbbb77809353ad6e0664729e60c707669783d956a0bdd4eccc57bd4d1e08d8456f4b70a0f381402caf57f7e514417bf10c7413e43979be5ab465303ab4b87fc7030255b989b88db48763cf4659c60a4694c43a5ef85a2a2d3b704e6b9d3d10f16e239500829230d8ca6820b89caa6b17f6d1ffbfcbd9f6498c440e95213ef197e62bec2f167613602d209723724c4d16d13fbd2b084a86336cd109caeba77215efe5ba6ab665d5c7c97219ccb95956700bae392977fbd9d5972a5c1a5d3b9e62c7a8436097ef00de792b7e3723af982d104f00004ef6913e2182e4397e025180c79aef082513c1ad9edd7f92361ba0a8de56cd2f5d82e3bd3ed6244e77f40e2937d07426ab2d1da010dd36f4046b2601c6080a80a4114dd758d1007da44c668dbeb7d7050c68e4a2d4ced0a58335b608c44ed81c919a999dac58dbc22128cac1443dd891ae0fa49501b217a4de2ec19dc480a9c8c955ad75a0193820814806076331746625326b740539646aa07632394db00411e2c1631318000e04f0013ace1fc5d8af901c2441351865d9ca79572352dbd3f6f68563b1983864ba080d0508237c4ef031931480645f06d220088c28827b77feb1624ecdd7c6feb4d103175e02493ae18453f7892080d7eb1e77af5fb37aea0786934504f150fd3f54a0d1ed6e921e883874c82b8afe04e84a5fe7915f5780b8834eec46d7451e22044150f02c4c1851b28f951ced93b06194a6dabb54f1534fe452cee7d10937000ba332be7e6d3e0e493a1c150ab8e3c5aa0879986abe2f26dc9b9fbc5338edae84f2eb7ce3a1ebab7f7f125c56f242b7020a16e0f71f33c0382c68900f9014df390dac8d038dae4cca8928fab9d3c3ed5c26a32a8e68f2744a52d79d321041795155588d49ef9e77d98df10babe2831e1e98440a284141bd944dbdd95517a4f8269b2b1f34d353712ebd21176dd7e1e74165e4da9802352c5facdbe702321a70f77d7f9dc83a1b42532f612239d3b09499cc8fc284c68d2229ba6e530201454372afb4b90e05201872fb9a805e4570e94c85e0a593dee3377652b357e40ab6a977ee54a69659444fe050431ff8f3995a2a4324a77cf058a4ffda4ac10274c7d420396b23a8e4e75af72cf049bf5917b62aa2bee2da06454cf339109aea62b5e9f82117c2d8146592f950ef9bb57023d84414f909a1721db294a1b2db2dd76cd9e73cd4b24efa24f4d530d2b8060cecb77d502d218942dacfaf66e09614a648003e97e0d32262cfd8918179e898ff0a20cd5253df6d1d18fe1f77fe36a98f545076c1b2e3f80fbe6a50e66b1c7b274624a94a9bc524a2953a2d250a28194e1ef6b6a03276da812b53a434e7e2c75d5d3895d992cbd0e35609272952a4979659452a64ce595514e192595465d3341dbf6dc92d9fe6d38df923814763ae1c39a5de0a065e286136d0c52977315b86b8b0dbb67ba2e775e9c8b6500c1f5e3b3571f0446af375d4b9234c83c429660f8fd61babec7db6e09bf1ec22daa2c75acc3814e7c74e4e58e3316352ea835c2d51715348faaf4a1aab85094d0e96c6e51dff121d554478cf355c9f270b740bba8172f92bd18f9584b83a6381ca1436629cfa5049ac4a04bab44f5e2d3bb3dfa258595202737b4f1cc4a62dc2c6b34ab26cad1a11913bffb4a66aa9845908c7760582914bcbfeeaebffd9aaa0391850094459de1e35fa366f8fd236da14094213780d972fe1757e37b255664bedbb2f587ebec1cf032fc4bd7676f6fd6a57c2162297328ae05ff2954a3d5062a713042cb487c39cc90e6031154c28422204b9d9da2643f0b90f98d2d7ee380fdad273001923d06467f9b73a8914d28277bbc9d1e322d661017c3e05c94eedd9ad87e013d75af959ffdf7fb6787d6b89f0c9df830f6fa7d04b72852849c1d34f1fe14a14358897dd7588e5dbf8cb727193beddc807cc53620c361daa12954df8b5f8f1a24deda742d5de2c46fb88953db478d0788be1fb70f7740fa4145072ca5064b05fa23e3d04bc48d75b5b4d3e2c214f3904eddcb1788adcbed7181a0f169461bba3aebe2fa1dc466e2d781f568c00eb534102e74792c28a8292355df80c0e197180794f1b65739ee55170ae69c61d2d3845a136c2c7bc4caf9f239ec1833d49881191f34dacd120145c33ccae0083099cd7050093f2760471695330199d24e57bccab5a6b6804bc0803adbaee56fbae94883c0273cfef5da46f42e86746f22ca1a7a455c0ca5f891942cf8161e5e4a62a1042d07743125cbb8887f86f0cf7bbfc90ad2469a36428c4c58293dd34db10134f47ca7dbc0ee5f1b01a574810a906db1050791367f8b7d574794d82b7f26861e888f1c89fc1c2677e64e70a427e19b605bfda8bd96be59bd39faa9177786cef88e3db33f40e9e1c42ec27fad5c3b9d7f39c3e88ecd9032019eff2f010cd832aa1fe868c4df4f73ad7a22987944047716d2dce9f58ff9b93bd8eb4f19f655c21deac3c3b452930c41f1c5549442dff32a235f4c34b1093bd2ca98446f02b36b8a006517ba54a5ed760e414ca11e1fb796ec0bacafd886600510d302a2ed7a2b535f4c98d074dbc2565026969b9c1580c1a6fe98d9cf2665af090c9a0b524491c8897cbc1e1a6279d23b411881de1e02845f196ed2eb6d5cdf5ee38e3dc68c1e247e5d02ef709e8620ead323110733d1aa8a5324253bcce209d03a04da884450ef8b60d4a84a65885d4460dba94009bda77e7d7b8d3bfe381b63048cdec1baad3f11a020e3809810e5e3814bd21de0fab111d813a52f33824f857c878dd637ebda833647f00934ce232883bd4d57900033044c6f85b8f5c67de48c00e1da5f7c071823c1d3b0bb014711a41feec02c9451b57b54c4edfdd24d8d7d1cc6ef8e1108fde4e8f4d09c70bb17075fef2acdfec85b4eff05c9620d380367225749b73d88eeaa107711c5decdfbb0669c5e8d34d674aab3e9be5631efb82b43568074c60fc115a7168abf7e85a72016295d97f0b5b430496f7c34f72e70e95bf743bf79477324c2cf902af6f719a5768bff5084a243eff9a13be5c2017e019bcda75dbbe6d5b81940749d63d7b93d6947cd783e877f94ee37a97d1301c0afea291522f038f1e9fc18cbbba119047f41443015730487131589b409b05173f105a2b6daa066c34de1b9ea0c7090be8e90afb713f50637aa2cf3323e67fd9c6e471f3f09bbb58128c0bbdd0011dcad2fbae0d99edb246c2486fb354f641312b558fe21332dd27c78ce7b6ba2c131eee39365c72eae8ea7a0e916ed1d208a0b8c90c1a68b2082b0ef22301ea82ffe8e82f515e3a8a2bf95e2bb0e94fc20d0980e5e0716482fab2ee1710984cb5bbafd8d8aaf357d92ec18b564c31ff9ec0c03eb013f98e0c099ae20f4f199e4c99b9f0686d342e24de84e81caa106f60f784792130ba818833cae2e7fedb05e8b9d22b2a1f96504a0d3fbc6282f71643d9eb4ee143f651bc7f5ce97863397f479db8a61526aa664bb26c8b17b4c0ba51c63ac633c2de3b6b5299dd817b2d632aab25bceb6c0982d127908e5ef7061fa5029401344673fa522822d4ebffbdf23ebdf2fa1258bdcda6529d5e8bad7b072bfc8e75070744d1dbbe154d914b53075f3827eaa1662245e404876c0911738ab59318236d2809fa41b1e38341cdb76eada937679c17abe740f31788d30fb40114879bcd459830777114d906ad62e2822d1b747ec310816f0ed30b203fdd170e4956d13e3d48a20fb77712eac72de36b5e2292908512efd45a142e8cb7000c0052acf76e01614b9a040a2b098d94d942cde48965d3ba16820de297a2c5ad4e1c4aea55a8103c47eded4917f56fd3b109786e9d0322c31ecf80d26b26f21e7baa9716869de5a8e2302476218514f4a2b6f39cc37c7cdedea1817a4a7c90c26fbd5845ce839176220856b9c334c563c7eec81f832a7186d656cfe874b22c88b714c70d148f540ffc66382b26908d0abc7a6c6be251a3b775ae64e225270129fcce1b7824c3b63348e33b50ecc19260ec391ef276ece36307123e7d8cc25d849b5db39b616b0583f03e72d155f4ae193b6a06f25722133fe24fb4b27088cc4bf2a118e80193f6e0158b65c2d0aa661ceebaf2712c05c16e82ffee26d17e6e7b90fb0bd875ef08eb91ce0fe473af69b04b1f702d310ba103b3f708ba83aaa65d6e5f819762d4dc8f37b53a9a7f8ed3f0fd83759257882951603452e052053bc8e3008c47e7da224c82e6e4090073445a3d49a073bfdc90fb11dd2daa5835279aae63c57633108ca7f39312d5a7568fb13ff1566160f7aa7b5b49515dff9e64b991f0939d2302594c4d77cf5d7d5b4c6d27368e2da0bc21884e137a1c851dfccb19ade1a291c5a4fa855a0178c48efb5e8f764b5b2a9f9167f83b300c55d017431ef7b61698f9ee04c28e8f075a48b438dccb2a8d890bd22a8b3c104a4303e96d05d33fb5f3dacf09c76ed522108f1309ac0ed4e18682282237e60af3731369e891cd03db216e062e4369dc5c27500b85c8d91c1b505603c0ac41b38ef9a37b86b985fc5294e5f92d79534df1444c7f6be3433c2f39e4fef04a845aebc71375341c8d6742b069f4de30439ae03e33de4738c36a085d49369e6fdfd3a28b1ab4fe41c04e024175d6f1238a0c0495d610e43b0e4fea480fd677b7fab988f043c9e9ac74636c96abec11bd85837625a15dd588d57bac3bd0a740608f09b8faa5904bc60ae52d4fae7347c1cf96c22782d9f78d3b0add8a603d83ecebbf69fb2211acb14f0988ba4d72af3a46f8060674490d5abca36a6de52a04b23317f5654cfdf970b3850bf22fb677461337abb4eca6df94bd73c05a950a5f6cb15e2ef25523c1e27c98224fa1351636e23b6ef4668640a0e31538449e3955638455f5b81676d5c380561c76ccf4f3373f4a37263ef95cdc91d613b9f2bbf70ea3e65fd88e0dbce12c0fea6f6825f9be129bc8d712ed7170652557b68b7feb6c8b5afd2e195fcc1a3bf88ee27c6a58b63467da12a397c8599937a9b10552a67e8ba6655ce4341221aed01cbd0da2cc41c0e303e02907d14c0fbf7bb98db040a4f503d46510faa69ff9ec1f277e170ec6023128e126e46eb84d385f2dd99882fe15cbbb5dafc8113e1cc99c78e37a456de28eb069ad0469041bf80a22027cc40da74105786b3f9d3c382c512f5d85e6b781e4b258664b9a99d8420cbebb7083b3db6cf1c7f87acd97580567ea86f28b0d2f926090a55809eb979664c5081aed0c1c012094c5c9386990a4c334d59d5a8f146bd2dfbfcc478a16be2bbb4090b576c3b0a7434541475799f589e290abd03daf920aa92716d7d76dd2bc8ee1c6a03dd359ec6d18c595b5ddc7b2b0d5c98e5a3249fcfe28a2acb7f448bbf6500ca591621b49d45e89ad24c274ad031d004a4fcb5139e52dd6a406bcbeb307efad768a9d42d9b8ae18ff7d0d24a71c0c1a871fdfeb4e0680bf1817b770a600bd502f471117dc601f281d41148d162a2dc19d67858e5bf2c5baecacadf1e04878a284206fbd24ab62c25015f3222158d9e69aff9286127f8879d67443e49c25e8af5afd839f9d2093a7b305db377cde92ca47fd751487eaeb9ee7693cc394eae1b8accd8e702b4409eb4afa9e7df66ec633fdb2595e9cf9f9e48b9939d7a6c07737bd47262a4f560c7388f2e1e0381bf01e1ed3c4a3f7d245344dda1e4f2bd9c5f0a18aabe50c49f8f5b2851352efbb98d3c57236c7db2e2cfa063cff8d4e265c3285452937dd736e55dd0039c120b971624ce44584bbc0aa6273f3c9c3c19d4362c25ec528657f861529b1a222a65b887e1add83ce88554cd022b755f0d224295882bd42605c6b72dea15a962276812af0da48508a77783128a4355d7692f8c0005ad5e93610c3599ffe77b5b48ad7cfa03c7a063b9fe5b68841abc68ca6c4d87de7c5315d7b1b25f183a3279055c5f6426df788645d7c9cdf165ca236005dac3abeab6775c7ca1702a1a83648273a62b062c2dba37e7b3f66ed26c1ae6dace3618c3fad320d6436e4e8ea43f8f72dc61ed28b27dca2c58a87d4b66796682fc334d876ba48450f794576ee037f54f80753011cc29acba158b6e90cf245aa9bc2fc49b01c5052bc6a1b2b14daed2b36da65eee515e5d9cd00ea3a615ce0e079b68b32e986e59e54d1ad150d7688b83d1c6602c017ede3e11dbaad1314e32053f844b2383b3ad7115847478c7f336570d2b13c9d53b07ce44651459ca4ca5486c959ea683b01390696aa8ee4f52898f93c9137f80ae55242f37952ed2971998c90a197136921e92e89a1f7a0578fcf0003f3551b6aba3d8fd9c7cb49b512309687caa169b85a508b5062b70edf28e34f86560589030bc1de68099813c293d6ef71e9613288610bc158bbfa8e8a658a47fbd2dc24b515e1e0fddfbad42a93c0bf40eff9c6db18159df53249e7c34f903f460d64a643281fff179395709665a06a7263f75723dbd83bb9161b8a70ebece7c48bbc4bc653ce32dcfcb390bb23a30a06bc1f65a3cee5c799dd3209add4fb1848485f0442cb66cadcd4b286ebb860e4d37d783bf98bbefa6fc492f3c288e7d50b9fe5562ded094652aad312d62f0ad0e68dc7827fffc2a753a7e28d85ce543f6419770fc4d1efc0a20e61233671b9d381be9ad4fd99bc759bf720db9696332ccddfeb2215c2f3d49154be88954b4674a11c8d394512a1d79b4bda5c3a0007ef395aa577fdcc38666a6b73c6763218c105d87989f47be96afa28b4ca7b16aba1901cf457f1bc10fcc115a0e916ddc3cf52e95bade5d00b239da417bc80769a582ed5231f8f9d8b503d93cf7e5b7cc60335bb30eb2231b28948b5a830758805c85e8a73d5b19fb9af3dff6be75818a4cade98162ec5d8fb176c28103a19feb8816d8ff2551ab770ee99da387e9affb222b2c9c0bb396257bba5a0842fccd45a7315e7c0f2bd3befa915eb986d2281482e8e1646ceedd249b15669146268de36ac92a1a3a32543640c7b8ddab28b9b3c88271a93080396beb03d1769c9ba32f0c0e9e54862ef44e7101edcf3a000d03274120dd226024c17aad55aae4f691301d2174431175df867830845c243dea6fa2245457796d3ed26f43ade67455e82a0b86739eb069152c4b8bd3f35ac57fb33d2a5bb86b39252f45b6a6d8c29dea34cdaa9d0d57ace368c9783c0f70bfa6d060ec38d7f0025c4b381e9a404392bff518cdf8e47e73f433de7368fd65268913f4440063107995676683ab897a7bf9e1690026f09aab9c1d4171fd00e6a713191e8817fa2e46cdb333e7694bf9f172548915208c9b6e3c59f6b46320f3964cec65b4598fcae81cf282e29a972561406ce2934f73195b28736389d2f88a6a7d9c8ddccfa9458d83d963844bb520328b81b85864a202aff24e788ec07be36260f3da950019793b60ea986ad18614c83a19715035982629752e97ce0a83200c8cc740889d44e6a34661b668310964c8eea5b9aab10b2ec50d497af28a22f8ece795f7c7513badf022923dcd1f2073a21612bf4b2bb2b0d6dae077262150fb980b69572d7a141183644244058df4830a8c01786c684789538fa3df231036bb1b9d16d09a9245eb91b7964d540564906676dd46f47db41cc3030990ab60e37fab696f52fcfecec92d56a069b9a98dee2befc705e8a6665cbfe1e3328458aeb56e5a7ad80227f71c9600ba666a6ac52e3d4b222d78f1cc1f7fa6c04365fed8926fb3e8e5cb6589bc34081d7e5178a1fa07aff9c6cbb7384fabe7c5a23e57c8b61c242f71019545603057202c46c020a8ff5fd81847c9abd40f2eb067bf3716f7ee15e7cc62fe373502fc0f3c82fc702a96f52fe8d4a7c8308f841c9f08eb486201fbcdc46e6098e882d678bc3d3cd4ba835251462066f8fbf763fcff3a0c4a602565894a1ef7daff6c8052b5e7ed1aff18c8d45aa1233b9d6418ba78cbcec81177b3fa5486b3fbb6b6b87c7cc87a1c0e82f6adc2b06e6a8c845d09f1626c4f1ed8caaf99407ce5e4a3b5cf810bd0cd69a7289dc0068a591d593457cb6c23f2180acc7d56a7d74e801cac19fc602cb369a06dd36fc4804e9bc0ed36c14dd81bba1886a0b2c37e86356a76f8e83cc1d3d0ec2bf00de45b2f3568f766f99d933eb64619be35eed76232865cc247b6ceaad6c75e87871c6758591b6f28d0fc34364fb007d3d5a912cd4426bc1e18b7766306cc13a0947989619e20ae9af618cca050551d359827c07b3c189eca90854626177234fb9e3ca6189c9b479d7f4684d49945eb44c48a401da8fc56d164e1f879e70984612520da5ca61c13cf5ab978dd6ba88e89558556bc90d949f03c4fc072adc138be29355bd38a724c4e365cb77af8cc4c3f0cffbfd03b449a93abd46cde9ad3452f047200073f43f9cc13646a4e9ed75ba7730d911e5dc9ea092830095db6a8063ac727886c81b073a2e6b8ed27f1e82b18576f86985de42213777860647c82b89159311819ea26f670da3339c9149ea81525b56f0286026fbe1debce1ac30087bc006e313389a14f1a6afa0f91f2dc7b1b3ec136433e431d451f974918c414e432d8168d5b9e12169f0041c97537d8cbd09fd4366ef804ff65bf83e91df67730efcabc17fb5d4cf718decf7017db9decf7b0ddc17877d65d0cf7b2bfc3e81ecbbb59f762dd93fdde0ca6d49c48e0cd114a9a9aa1aa0d0817408a4457f729d2686526989acfa5a77f22dc18059212680940f654e3132cfa1d0644d5cc7313ab3bf804239a8b9ee3a0a3b8eb1d9a0631f35d50f37cdc117a5b58b3193e39ac967401ebc71e9f004b1fab0211317486a534d911d11aceac0e73bb8b112e4a7be4e0a788b3cb010066ae26810b8dd208f8e4285ed0024234e4c52708ed66cfd09fee28d0a0764c3e7b02f26c15ed73093a1928e6a5c42780f718329f66806e950b6b44d9094444232d108c7517859d4536139c5d2f906454942b081ce13fa6fac41a8d4326850b154f1ed97edf339c64eb327d3ab8e8e13f128fd1dd267d850638c266f8039fcf20be60b043c8ffad26a98b97fdd8e407e608e2b1641ee5950e4706d68ca769884232ca4ae9bcae5f182e6fda7efcb19f0f4bf500f757c26e77c771185fbf90d1012e8188f147fc93447b08e6e48cbb5038d0ccbd58648bacc2998cf0a340ac72347d85f82c71adb1974107bdd4ecdd6e21afc990c8a903bf800e0dcbf25fc000024d399aa732392ed3ff59a0c3935770a64919a487b2d3ffc3b30ee57c386ebb73e75d58de10536528f0d2ca05763683e2aa3a6a3281f7aeeae5668fe5b7ef235479e9ea26b303c7dc31c4165d0760664630f3147b20836664cc7d4fe76acc67af1d7251077895770ebddb06b5e1439eb7556c01505f20e7eef97c17d4da21d274ff82a257b386f58a10e83465746813604c8e212453f4258815d269157e40ff7f95f89f48b5fa8208eea4595cc65380b316fd95521eb196b21d8ff505a6ada85928001d92ff5243aa860510c818db29721512979990c67089ba6646d5392775cf02bb64c63dcf77e890d03c448b64f7dd3d24afc2a5c8fd1084004ebafc2bb6c075b057f092d9e1acdbb5a85ca3a2545f146c71ad04672eaf462ebba565abfcedb2b3c66a0fe36d4dbdd852843d39724096a62c18995395b88387115314d207b7ae496ecee20214a6b0e3bebd99aa5c2869c7e9fac0b8037520a0f85b225702243af2187a37f6fccae3247dad0ef919478d678aff1fb2e06bd938465981105cc2d310f90765bc05383ba40fb84dd5c3b91c6eb40b6e776309865aeff5c30bd165d71eef75dd13ccef6c39437360845faaf3aae3c3385dfc462c467bda58bcf17903a25d2c3146da5aee82c30aa13b266468db1282e54d305124d787fe3202ab53f3257e9a8413e2e18983d40946e86895ed2f9f5c527dca0da02bb634299c3383a493c198cd89f311939645b0eec5bcbef096a9663781659082aa18052c7b0fd8ee84cae630803a5aff1c15e3b781b900dce350f6780a0df9a3d4732d5812b828d83f771b708b1755761ce28a3d91f9a31c776b4235d4aeca3b82fbc58dfdcb6a215c279b003b7c62c02c5702355f281443372b8f24b26fccf8760ca75b9bae7351c1b4d86a6df81c6b329f933756bffa8cd4b2243b775d57c2b66761b0b6e015e7b751af94fd187d464bf876a61b33fb9f4577bae84adba916f14bbef8edfab692e335d28627deef5c765b7b1acb62c5d24b03cb52c37dd06931b4d0690686717fb4d253f46fca9b4ea08b5785cb4d8697216ddafc846c51b6dc3a13da8183f60b7c44537805c599ea6230c62c4a6a2e88d9865627682f46a4c31608669c7aaf0d40163cc75d8a6ce982e575104b504f4a57ac712a94f657c064968803bddc210c8f1f9421f87b56f2ad99e4fd19df4128588e62f3f52e3d810a6069e9024e25ddc7e87df67bb5dace978b1779b4d3e502f3a352840430d608c34e32b2b034d6d3d22568e922e88397e5770d9f05e9e6614c7fc947f7143ad6266bb1c26738875a992134024f2eee5a78372b9b447b7fbbbc443451b2467be29fa5689b616ee5b4ac8ba25fa6107465c394523410cbe4f3d4d0291ad83a241b8720ad4718fe35a610646d6673715ff1d2d706a34d21edfa8a4c2b44a0b730ccea8d90de4641e59341a0ff273566d4a62d8c406ce00f7065619fc1bd03902a3cc38af9da01945bff399d93db4730e4b678ce856d766c3dc061206af6064fe886e26565f88b9beef85d2673c041eab39eb81114afb38f3d9f30c669bd195de60dad704439f940f5813782845c3013ee10b027ae015d608b17a315d30a57df13cad509a2493c89cfc4fd20ac972dba589cb85612570ed4211d3c7f7f78a5fb13af2cbd8a80a64ff4449954b1c61cae4ec11b6bcc0ee519843f03bb77ad1bebacc64dca1d4c3efc03981ee8c810c4818379691b4b79f62b2daf0db444b675e38b9131b798c8c562f8073f486d17604b8a8ec69da3816647eb34ca9eeaa8eefc22f4af48a0e6f3b96ede638f36920bb80894d67fd82f9257692b46e59addcda11bb985e3c4d2801cc9ab504224db325e8e48695fd2658000e3b0a65f33b014ddce1bff42a1d35f920ee1b5c9fbcc43a9358c363431e4cc18984209a8b206238d91a79da07c0583d3ac33f16214cb8bfccd867084b7f5aedcd618655432881ffe8121a4ba89ca54ad4660d6c5186a4ce37ecc5f00e8cbdb66ca3dbe713249a63665bd035ad483b5c04e6c7d4cc43a27e4a1ff3749e00b8894d74160f480d782de2f5c8cb6a0941b6e0233c12ca341529488e1f241346a81a2a473a340dca7f102edadf97fa7d82b95a7e9e9c0e4d442c8c8b9281bb6acbfce9661b032fc22ae648554cdd949d1d2f9c3aea7763829631c8ec2d3f304872698ca8e1689cb5a9d9196cc07e1d353db9a76244328df80b0a61ff54f5ced10770b5b01d487b40bb61c2acd042c192ba0c7277c1a192c898e7663aa788b1bbaaacccd12dbc39bd72d94be1ddd5bfe7e7c94a69c7ffcaae9c87b4f0ca4c8be0f13eb1e6a5230aecb2e4eae75b517019b62ee8e86886d2ec556173e9954ecc280be52287394c05ef4785558a064b2a6a3180faef904c952134775fcb9c27f58900ec0ac896ecae4f5cd0e4c9b4412934b5ff0f5423084143582a0e07c4d23a9880369abcec4fc70d4ce09226c6b34ed557431964591eaf327fe8556bf888ca88dff30bd649f22d40f079c0fe762d8707a70ec63f0dd795d4539627c1a1a3db978a79d90daa85633075911335a56ab40dae74714ed8f8734ed46ea8a20734c036cf2f9f06fca14a009f77ab57f6c1e0960c3f10761f898f2faeaa83c504d74209ec64397411956fafebfa15b0131dbab4f6195e9297e818b9d1856e2037918f384991659db9e8a6faa102d2cf64fd80114e7750eaa4c1b81ff5388dbb95701a323cb633a25b84bcb8a3b7801f0b2743812e1587db67308a0c2397f1d651895d0ddc28c2a0f430ee60b224a41643ad577f2b6039420f0163bc762703d61dd17ab8d8800444d378f21b78b64b6b3c5a273637b29caf5f7af4ca30832dbf70281df1a12fa617256d03239098dfa6861969655808b5893a8a9671e1169667948ae06513d3120f176cc213a55edc34a728fe856ff35ea10258ee0966dabd84ae1f74d27195d82d6d300832d1fa9189122efdfe902969c8df9415e301246c32812037fe6009d99c11b331ee70ffaba9fcb26b426fe3c61550aa8440480d8e5b32b5b1c69a2b4909ef2ddfcb937a741b9b73e9917e5196d1e69f91ea257f89232309b48c90275a54c63babeb5f09c9e74dfd773d30a06ed5d9227d68ee1018defcf4dc8d11ff94ddb141a09776f5cf85d1a01e7c9f995135b86e43d2468ff970c7cbbf4b9995166e54f23c248c7ab0585537aa50a65992e5767e7bdff6fde51e8668191786d82fffdbc5063bf5667e13c8d632bfe8bf2bc06d7c1298437b861aa5631b6f32b09ada119af0d08232f3eda9a26e083ebfc4aab1edcffd37a374b9fd7cd7846c4902299d564312686cd2c5c4b5fea85b5e6db909afbe544a5068cbc931c4dc6d6c2149e5930ae55d6720f97b3e8afd05c7af6a7d76523ba95ddc4b031601063a90de44dfac71869e3251210423e4f2d3ab1f1bfe1385ac302b7d6776dab84600f83d8c4fa5e9cb74cf871453f126427821b3f9ea4655f7b538251cfba1cb5e2404b7a1cb6e9100eceb438673f82aa24d30281a8f5b70cb7685f55e7c3a2da4b147fcb02cab5b017c8d59f9d42c96b312d8a9c8949f1a9d130eb69c80224f36d245d6e597ce20d8a4e329cf6515d21605909a74db6605290ece30ce3d5c2264d5a380f53ee71be94009cd8d2ad8a109cf42f865bbc90c221d54e89cf2e690d18da04a5303caca36dcc3e296fab9678d0ea28a6edf303d93076125d1e5888eaf15c930328fd6d89080cafc1faaa684db637e444cf49eaaf26354b53bdb856bdb347f0949ca3f277c081321286a9b2e7400515517440678a6787000094a7288c7b2a6e486fc384b8b69b9caf7a2c75293eadd987a834680bd58bd68cb7706e58c0bc95c0db046a4c599b9f4c6afc6a4a1218a717f65709beaf0bf796c1fa5d3d235b4824c124da1dac0b77d37055b928675c65d6c8d59f0970d3f12e7e804d38459a11bf3021edf07de0eaeb9fad2335b7299f252550b0eb7c19c38aa35352e28a3b8ed265b9846430bf7cec73fc3959bb66164d2af0190d37c09536b709edc34cfad59ea519f7df83b47487f19fb30f72bc9b66e19a3248b7ee13d3f486e8e2605c21f47ef8a1d91121aeb0265081b6c69652bf535940cead7edb2841d53814dd230b112211ce99465ed6427a4314392be4ac70cc1410e8cd990bae408daf6abc9352900d07f6a488e848f05a2fd1ae8991881113545d01b0ec82bbf0942c2ea54cd74cf0f34f06466356cf99a72d0c481a42478ba7db7d7765d880c41c5624fab734fff01b10c245a7d4a49dfcff69c32f448f1e5865cf362f844110d5b7a1b31f17087beab744c10200b0f08b4bcf0e21465e793b1a7a2bc245238ec92869b99366161b860083a1cf788f49a6212f99e29b685ab16ce3b8403a4e7af511e1f040e102237ca6ab257ed4d0b2e714b3aed3d675ba3713389431bdee0f3ea4fa269dcc8e0177cba5b5543a4bbb833ccb1211a4ebecd685962d56995a4dcf1e1e5a965db4798c05e0639a9eb05f10bfe73eaa5d00d7126fbe5db65b829aed80db27487a3e13281dd004fea0feffba35259b83867f42c3d4d4f21a1a22a17872046f6d6ea1692d8f223bd74b23aa8d04a20ea669008401df012fc6a31ecd6810eae9dd702ec2cdb852f5ca02189ad4c42030d5e7cfb59be8c9b510e12558f4dcd351892521ec9d0a2547842fb50f7210cfc634f3616e68421d6d221d28e17bc0083f405e4da0743b7e0af41a311aa719b0cd5b183eed0825b8c5c4e3201b567792f3692cbac7636386e94d95ccd5d7751498f755e435384622903d432b5d4e6739bc49e36830749aee563e7658233b8f1b92577c84585f1967f8330da987694a4c126f78f1cc2fe63384c1108945e7de63d713dab236c8f21b39c951e7cf3c1e6cedd20dd7b7448c120e1d83e0098c07cc31ea1647d400adc7cd38435490fedc4207630a4017478f13feef920ded6e835e70b0c70a8c1a763695edde0b99de5ed7ae34a3d87578a1b5fede5f463c1b04143c9747350c885d335264d93447be0f0a0edf8a377001a815015b58a62de2e0c52956feff90520261c3e295a35eed04b39518062da24b1d8a7a9ec830700d9059d8640483a5d34876a6a342817932ea69158f50cfca1ecec7c3143fe1fbec0499edd205736a56be3d27a47727c12efc9ce315d11179f23478a7781d0775cc8fea8bb14360e56080e592af59792fddfe222f1fcf4c0b623215b75174f313b380a8004e719103bfe1d80e057c2aa4e22d2b7d60bed41e5e6b4df5250ce7040a21dda394a7522a2e4d058b54719d1aada782a554589b9a57466ad8b5e327c8db4dcc97a4f5319dc97928fb54fabd2640852227d449d9fb05295d1c21459c9c50ae26f843c64f7b5cf560cba4f33f671aaf07919c6704a0dc9b67da1d1ad95da2c946bb82f038dabbe873a31cdacf3bdfbedb08870d6e7d23928c4ea5d679060bfdb0e1928b375fd561acd0c61e76d45bf7c142cdbed11c6a78771d4634d77d3c38697140b5eff83e6c9181831a1d57760a7d260246442f4b707c4b5daa6e36bf27cfae30c34fd039a20738a813b45ada00c08441552387cd770bc9fb2115500d7f4b51df800f526217993729ade605ba7d644e11534a5ee690590c4b75ba4b606c2210f707a3266de74a640d3ab0f98bc6492e54aa8116b1878c13eb492f98c109e82221f03c01c7064bcab9dc583fbc22fa1d5f4ad4d86b6f113506c0c04a36d6c9a334fab30ebc5d20a424baee47a350653760f2861ab8e8f23beb34ec50d8874936029378bcdd117a750fb39605f556da74af6dbe68c902d46dfe8e33008cc600d768960fbc0fe353c44ce31e181faf2831187652cd78826b94be739077f7b364cb329d066c7e528928c8e17c3da803c148ae052e33b70a02c97b76da079a584b196ba2fb28832d8ffd164e76d98cfa3a89aec1007c83a6919eee47c4e93e3f3a05648e81270af47eb8ef11546d17006729330765d338ff8e35e5de6f6b64bff49cb40e936af4305458fcf51f7ae53b8c565b9a0582e58799efbe57b04b1af399575c283d624057cb6a0e93926215cdeb77983c2f9dac5a1368fcf5f05a15c769fa4047f4f7ccb4038ea3b00947af33c5af45052c63f41b9c08d0b3f91ea152a628c6f788df019ebce6c0d52d8ffb3e9f2d4826e0ac690b61d02f77ad1be2b2e8efbe4557cc75b67ec2e9a2d5513ddc63b22d40983f318846671f1527acf60230a81f2f576d1637aa6581dc7e11075ff1cb713592908597563c0e4c47fa28b0c103d7a71365261631689843ccfe5fc9c47325665667a4aa96dd83a1e6e9d538c06f3b75c5eb9b30881f05bda36312c4a1be16afb7fe0175eab3f7b2b02047e0c0e7d0f42a60cb397ef3a9015aae83a25051beb10353112ae7d64fed47bbe7bed29cbd376fe94503c9d7223cac997ece2cfcb07179fcff10b83c18477a405dbe7d91282082d053b720b7d1e921e9f3585b6221708f6e0f3027c402b5530fe468a15371fed344912bb305a946bb4da3d48c45025ba50d1edeb1d5fca034a08205749942e5746df1e3ee5de6ae8bb786794900adf67c1c9b3177a6b2dd67628b6bd3cfd407b459a2d15a4fae8d75d8d5e635bfb160d8d1044801afef74b2069b1d8dc957cfee5c8dba67b7f6913d6295eb072440344c86849191a861bdd590b22c4cce2dedf2d7b4d2f9e4c5ac951a06aa3cc7bcd1ce27641bdfae8589fc3b3e42aa70adb4fd80147068e077032976520c47fd20f7da92de77ab89cd301ab530e12606a2c53593392d21d21f20561bf29a9becdbc5748fc6a7210451671d0f7c78baecb3751260238e2cc0573bd37a7fdb2b2002e4aa097a5010a15798a6c2a04ce1c212572d1124edc9ce01049f5b4484c0f74c02a20c800c476ac128ae157f963448b8e2d4293ce5c5f3ab1c49f9266fe8cac31b1bd441b4475977429c20e5637e55758c4eac61e88c9ef1a572b003fed582aab0458f6f1323c3ebd45a62dff83e0d89debd6e1cb6088a6538bcaa68b5de23d0037cdbe8297316c25f586260c0cf0b0e1cc127de8eead59ef87cd70b0befa3a811a0a992d5d0b617deaca298739ba844e63ee1661f820995fe0af3efa515e3fb283b301bc734b0019e1189250e1e14615cae000102a989eb622e95a8e077169d60e8fcc2b2ecffc29c1a010bfc1d35466c0e8fad2cc1d85f7a710b1f79572518d7052c09b7e16e38049ed901bcf06ca333cfb4a52a3bddd5a0ffe543b20d645f9f53864c0e5843517d6f99fb19d0ae2aa1d0e779439ef476e755e7b7edd17efbb009cf9ed62be40fff06b5ff10ee5ab6a6ab45fa3754d11e29fd053f872996cff38f503ea0af63def807cc80a0ae11eb544eb4a5f0860650f887ef3377483d5cc38d1c856f21c9b2ea44c368a67b49560015f3f87892589b7886d14e77c0fcbd219954a73dfe96b5cca12f3186475b99a53d1dfa30f25418bcd84ec243cec46137a8786b485eb40bf13c72e5b7c6ab4b4da48c329a8fc5341e8a3f4125a65fefe491888b1beed83c688f556f1aa6122024175641767241bcadf4759e22ba8da436e672582564738ab36030ac5a5b5026be8afb7d583b09914b549492b8c5e70e2516e29d6fe7c2e90baeb145707661654cb0b4da32b79605c76067155bfd59ae584fc1e19acaa1211f6b4b1662fd3017374c8be4a4718981e4f444bb3f347a7efc3e3c8697a2a2a86ce3c472f0271a7c75a4de5f30f0b54822f94cd6718715fb3f217ed629343c460ea150a2d28eed922803ba49034b908310829d3d2fd31e33881077dc9fb3e06bbc712ea502915a1a28c0b017d72a572cb6da1e327cb84e0571abc2993f471a4188855434af658b7483fddc763dba0daf3e170930c63c5bb0a1a6b21636b273ef727d986dab91c5f3f684a6a2fda708282cabbab45f582f99d67790c7b01d69dcc9080f5a45092be0ec0820cd7005e086b6d2c765a7f73430105e994099b4e8569c8396190e472e54830044ff915c791bdb1085fc80ca3d44b95cc7e567e727ca40b1229f8feeb20b2367782f88297b8127b4af868d3bc40e0c6641e0a7583d6dbef46704c10035e278086ffa987cc1e81bdf332e9b62843498b28ee31641304f38d41d42882c7b70dc5e56260a3c0b8003f02272ef26d1f41a22bf7f59031d47f490769a6dc74de529336c02f08a1b7d3328da18804dc940faeab88610616c0f00ef4a7a6d026bc4e0585d8d95a70d008563a69a75f8df87e1784cdf0452af750028429aef6ed978baa88a1a40f009a5a19677ff7067ff88517b81f9a5127a4cb5ac987870e31b37a735b5e120addfe89f1f08febe81bce34af7e3c251064724efdfa0750e5458c92ec0ecd5a958302bd76683f392bd30de317583d1c027c9796aaf81a5b0c3dd7fc833a2a0deb5d65523435fc08c15e237ebcbcb4221dc802190b9a5fa340d4d1dc7b44a621cfa6ecaca2c1688ef242f39c4e279240ad60d852c03beb068d737560edc748d509c455ad355210ed74e102a0c77049d8c1c7da30df3b18497364f36ac780f8724af6bed2b40c640b53ac6c704caec1061f133144dc1b7fc3c00737b174ec0b2e0958965aaa07c6ac4aaa5228cf808c4d9a567a705f5f5a8b5db3088ec3cde4ef24d60212b0061472d31bfae7fe3ff6f022b567a020b0a8e58dd0e86790265fc312709ddf6b693024d007267196de0ad40b982dfa58e819ffd38ef14027e4a031fdbf28628d63d227fc3f57a0aee25142416bbe02e7db1a5bcbfb103c39844acbcc9732636d4a801d1cb014dd85721d1e5617ac6457b7c939ed2fc51efb0de152b7f0ae444d2fb3694be74373cb7fc0082c7f9b757624860712271a329ea028d08522284a910f4489c3925235905067e575568fe4478ee2e5be081ecac0ec96ca1f8ad784003acb71578c37726ec0ab602e92e0a38c690ec5a20775012adc73d735db807bb020707b8d679c1abce316e2fb84f3a2001b3774b8473e8bd939c8394fe8024c15420516cc648401f3c335d5e73c060fa0fea2f3fdd8dd97af4422e38e99b8d79f210bd7af30b29bbc3b2883f935f1de5fffce3b2e3a77fb454f22c9eb791f74cdd1c3dd925fa643d430708e7f232ae1eb0a57f91d8eb98bdf7c6650ba6f6a6233d2a86360cd6e5d562cde8220b97ee4469096ff6fc759308b4ce68397bec8e07e4d27b976ce47085492bfaf6b2dd92127d72b9e52d893985078abe5742d3f0a281d30de34cccc7286a0f0f7cefec2299a3fada0e9dccfd35945fb1c02961cf4cee038e792de6770f26e979f42fe944088a5431563f32ff65d6533c2714d2182a0f6f97d3c089cb490445976468cb82550f1c924ef31c33c4a997b248e5cb54c8e221f4276ee3691261584293de3957889a046e9d512f8dfc5697e1f28d3d9db61d71d2c86ddecc376222cb6ca5743a1f0ff0c72ea617538d3b5ee4591c364cbe7bf361154fcf506f88aafed492f7949efeff7d15e48c7601fefefbc6e394c53af13aaac6072afca3341f20ff52d989313b11a14b0c7b8806187c026407001f5f144c543db32111d241a281a255c1535c2cff2bdcbbda8b879cf586057a29c7a7c7a2a2948c8aa1d3fe1aa00622e2b0e3f390c345a848e25231714e05262eca61216b7e6e4eefed34940199cc04773846f7418c447bcd8df49c1844b1d20ab5a79bf44b6812d2735b3b22affdf10cb2aa911f9087b73c49d7e63b02d0428994406e2cbd98c2afdac8d8b849b24dadcbcaa29e774f8cdcada7e782a64fe7789b2ce84c78e9adb066acce8a877ac974d8d30f2b4d027fd062965983c40231d6f47ab1a30cfa55ad6ab970007496290d3016e2d4b6eb3cd0312cca2afc2bea73a7284a12e99fac46aef7c241d73805d5fae083c1eaec439208215a3b3fa48e9c7f5c4709305d4122de0d125d008cf305120bdbb89a6061f4ace4aae6e5084de69b5194301b94085ec23ed17b8306b7b747393123e9cb2ab2ee56c69c0af9048fa796ae246ae2c971c87186d38ab95f9efc452857be6a7dfee84556c2ff620a22ee87dc20e8a881bcb547ee9359c27d3f89122eda7616faec561f30b00635eb0a79f11ceaae39b64eba6c591bff4c8ae210686e69d4d7feec1d75d9028217927fe694496df168bb04cf17cd5d713f9d2ea98fb6cdfdf090163df880976ba4fa2c562e82f8f26d09cfe422f551a9768a9debf76849d187e83c6d9cdb22381a40aa930cf6429854829bb74f09f026a45cc8b4d3cd1e10105747f7087bfb9f94b4ad8df3da3408ae8c0cc6764e5c743d0b39233b5d67c10d5394e5cad5c464804dc55bc688d0e117a0587396d1d8e792b8273c9fb16f7f40bfa6332e16f0af98aac59883752805af9b55d58d5a70d63fdac735bb0e9bcbb73ed1647cae1c3ce4fd71c98456dc6614d0366bdea83a3492043f4633e2739b3edc0994b02b7c3488bfeb458626a1f0ca9b1ae51c0147f335308603649e16dbb657c7d6f5dfb939526a82caa99ac0d59a00c4a856dc2f25e455489c1407ca15710e06806cfd97a500694232ba615a296f2210a46cb2d86e0ebd526b8f56a0f6684f84042ced798388b21b1bae6184c359d745af0f1c0f6e7f1e5c4db0130e14edaa92f6f4d3f132ddc6724a2ed6676c1fd61bee55cec1b871fc1824d0382591bd6fcfb81d9540949ce2ae46ae6ed0fdd211bff8e5bde0c58e4a73fb0add900f8925d2dffa1c803b6a4b3c6811b1813c2402b40f1b418d981a25fc393aeb77463aae1eb323b41fb92af7eaf40a56f48c8249f1adc50573cfc61780bb1d776ff9737fe3ee221cb55984b889b3a88509ada06acadb92c4befab0ef1dd0a6769dac7bb9fba1506b29e572e729f086c20213bfa19050af4ae633a87068ba81f18e28fd1fdad7018b0aa05f362b95006b91041f6a52dc37071b2cba59b36c5839649daaf9bc6dcb50fbea4651c1b6b60b12e1f7da7493a97e9af531c70c2d72c7dadae6bbd8b5572e70824e5abdd63ac95c018ad781142aa97131cd9c54309361275266f5f96077dad06569127501ae94cdc36ccf537824cfda585f965cd4b3c2415c1ca52fe7a96ee09d11b73b42702a6af7b546878e24cfee1917e103068a41a7327d1ba8390589db6b9e679bbe81101c5b7d606f676819caf6fade89d773b60fefa0c0cd764b97bb36aa839017099566e53a67463482b6f28a5f6b2fd0e39abe9b058bdc88d65b930836ac621846bd23a01f268dba2899e95099cca9d1bc0bb4768ea3ee27410570af93d98673f2639dc43e3f700eee62b1214cc787f3646cc0ea64adc514f2741b88cff56247a06c5974dc6d26e681b5edf3f1e64c3f84192d19e17c04750afe2dd8935e051b2c09c2a1117729254a74a6ee0df7c2cd7139cf24161715193cd903152985ce6957e759b39cacb693e646fbdc1f78ff09157e11e388bdf91f478af60024a75f294d9abb20cd354e907041caa979fbd10e28fb2a0ca01c28f99ce2dd3ec5d0a1ac884032d0278a76556435668b2519ec65a2b068355652b73eb11e0d17991c0223e5995aa8e8be831e6742b1dd9f5a097b20713163ba48243d2ba1489ce4a0d5e45658d65b9e213540ca5094ae2330ebda04d07da4a44a10d45a4cfe320b01b742e88e8f1194a3c4d99fcbe87e2f69d65ea0770ed03c2954b08530000853b92a5d4e091922c86ecf6d9651e3b3520ce555d6adcab56279ab2ed330e80ba8d228af70245fad3973f1e78ad488616cbd3f01b4d8e3b7403ae54435f6c065963cbaf2591ae723899b6bd80c9cb4680c86ae94c4319b1f0b21108c5e445c81d1019f9984874a0f8e0563640ff158f3c21d206c67091e9e3b07d741f46cb325fd19fc2f9fd721093578631150b2ad74eadfcf6cd28db0cef05e13a217812d6837f73d47d6332e2f5f7bd5a0c1c18164eefc49449186180ebf605eb3a1c412c376278a18667167b1730eb76a0156fc304ba2cfc0dbb6a001e7700cd34ee81c4258d6f65b7c3db580885b50f7eaf94bb1c6be39a8e498b2a6301ea6e10be51589866a1ee526ef30804fd17d857adaed52fab8037958fae51a83dfca5ebf65466c90375b002b2facb8e9d1857d5c37749dfd0e2d02e15436d2375ac45869d5f6dae1d6472fca898c6fc2c4b93dea1f8cb611e0ba394f582883e515de71c9d4866bc9a07f8a3d70415702cae793a12bd531c8c4395f720e1d4bab8b422cfdf7e0d8f4e42c9995243e4661b90bfda4c0ec75b3cdb6bf691d9aa48cc0fd92c5152055827a9e59ac64dc407557454e6ab515eec8f3c70ce3014c51a6c895f900d59309c3d43653d4fbbe9d32f9c9cf6d8dd8a37c8a1dbcdf8d1903a7443ddc3277b25ec3dc0e295ac12e02609f5c68bc4b2e1ddd7ea479994c49c869f0b20170aae44f7351801f2435c1f10bebc74fc9d2f65e16d6f01202a81428079bd3d642fc592a32bf0475023c0142a2e60c74433cd3db3904ff21bbd96da287042b5ff7051eb32a3f3bbbe3696f5575b53322036ea3fa2a5defe95b638c2cd5866e22fecb52b9cefda01539ffe463f8996ac78d0a91779e9ef4189985827a30494ef0d3d467824abedf0747df568a824e75ece501e14d0d45d3b8e70737e6200adb253e3addfe9643f7908ab53fede81eb2030c1b4c454184877a907444868380a6388d4557ab2237b3e4fb7e27a8679d31c67fd40f38b787ee2bb4bd464456d28be2c0acb09f0f20e17ff26de60e7b9471980f29a7e5a2efd19ab7f922aee6fa1d1e59a24b0a0e2ea9d33c643c04285dd131126a2a22f6a14d0268d507491859d43f5eadbc3687d1697aa31a95df517891c0bacdd6f8bc438fddec66110486947c1157da94214d177afb2515520db5fc50499f0608a0ad19de099fe1a72d8ea337036ad260b1a829cfa4ea72423e37df2f0cb7bd05124313ae05957a163ea97d5293eeed7c5fc00fa237f8f07001d159426b8cbb7ca40eacfa060bdf8b55b08206ee569a08266d21e73fda6ee4a515edfa4257835c415decf0925dc79821fc8aed1b9a97bc5aa3db2d07f630028b3b564af2e28a8846f0224afd2f69f622269c7fa64e9b350d07c970cc121a935a5b3c1fc8d51d1d5a6aa07a331d5b1eb093aa26cb2f30da2d1dd2bcd45be8771981bb505ed62176b14f36c929b26d849adf97b20e75b87b151e42d71b449709c73b9b8586ee83fede2156bb5c80d9cef0bb15002a0dca767197c758d94ece337aac5b7c79acd8ad32517f5b0608f8d0d788e260317db2774a82b667db8eccda0a7a109c86480b63879163a610e21e2f3b66299fee729b769ab1ec6a003d390e5c24c71134628a0f062fbba34d71382888dcdc92cd8d8fee41f2eb41118c0966d8068865c754a38a55a406e0e61407084d8bdb16758826648484651b8802dbd38f52afba2727864d521dcd5833e9453674486a87ae4a2e8d859e3ca8c13db6a7ff0897ea82a69490c866cf9279413e2d8ec077ba6d3820b98cc52f92897b0306e3d2c6319914c77b643c261ed7709163901d091ecedc55681c199fe0e340f1c7f349626204c4932b48e5eef607a2241c4b576bd860134706763542f8c6f38d8c29d617f562dc1698b904a3cb86abb9497303bf5998d37d4c197f5b41b63082e4568cc22d8108b5e881a829e2b109107ad16ba350a047448889dc0653f24d454cdad4fd606fe38492f6069be0c0193e5b22b48378070970daa78f853d283b09d94938e55711ed099d52941cb04e9861117eb1a7fe6d796070bee7eaa932d40ca87eab982f800dacfda8685841745bf0a239827bdbe5046cff373496c699fbb8969f9ea142291ed5f1240ad81fb2ce570d40bc8a23fc082d440ffca1d8cbea6d25636f9c8e6c99bcdc16fa7b5b291a280802212f28861a8d367cf9fedc8fb49a212c6e94a069075fff676b72c086a04964e3a13d46f3aa88a15b931aa9b587cecc63c4a9d586c7783e6e0ce0833ec2bc1323004c44a7206d094a666b40d211ff689917292e54055a26e65fcbe0bbf26b5b4a4eb58bf1c108ae748c81128044de018f064161370c41d61d90b9344e80e616a7f4c7a045c4593215866de32ccaf51973cbb4555671b5e5820e445d151f67a6c0fa98aaf8fc1054c48c91d96a51deb25236816fc70404bce8b9bd57b7e6403933557ba319b94dc6dcdd92d48071207589ff9fd4345017842c469a3d0e05b1029abe9ce85adec25f58896d4b35631330604484b568734c5276f0fb43f7b8239e851bd6a6a0a6cbe5dd5cd4825fdadc538a18077ed095eb4f900161c4878d01ddefff5d698ef256fb4b9574869e2e0f1f807ebf84ee133415a6c2c4e5d0c5684bbf2942a597420956c2dd5de7a87d746be02621bb0d47803bf7c8b61915209d85143b954002d9ff6e98ca459c08bc6cbe03f1df1acf0692f279603a77b5b0628a779c30c87e3de1f190ff66fbbffed5482ad98b8e3e5d5bcee7ffb50b7528851d2a645ceeb210465e605511ca004a7a81575bd39ed21f18340bfc3f6c6a5cbe6e96f7406e4e56075cb8570e6fca66080858207f09fbfeb4f5ab1bbc69c0f23a3a91288b6d8f9a78747b3553edbc399e0488ce5445453ab9169303aeb031b36bcd7fc111b2b55cb533fbbb6d0ef42b7402f1801f7885ae95d279218c4996600c040224661011e9e26ea2b0a5f782e8fffc870d032f0429da75675730be3c557bf5c113b3197ff8418f1800281ac1a792192c64c358e3a75d1db60e3ca1261e14bfebc75aa3c7775a79bfe3629e7229398b389321ff090a8f363b3ad094eeb0d728c3e350f390fd6a8719beb43ab89e9c720c20075b33516c1af621b7b04c0d53b96b6c28bb49d7f50396a1bcc0f13688352e7734f9cf46278ae5d1b3ffa2efb8de44f565c9f3a39c7eb4c74f4b64a08edf80edf80759913d4a0fc981fa7da0a9250e469f415c654fb4cfb83b06a23c35b9334f0289c981e2c766c67c05f687c2b954d99373868813ce127fd86b34e0f33004c572503ebc4e29b2a1f563a7f0b6b050125ba4d61a095efd8d4933cae97912344bfc01cf69673c0f578a66554f1c71fe0d4a797087e058c01b0b517be4c38ce580fe07e8b8c5e2daa786bed17a065bf97365639f6aeff658aa185ed15f122414398dc8ed441e1f5c8c423a36ded253c39f7a732b0bab3effed740beda574c51592badad9924aa762c87f2161897c2f2d211f57a599c39736cdf00a4b0255ab47ca517d4446aa16708622c84f8ae729b87bb148eac8cefba6f8dc7db30eb2aae6bf63afddb7b95e3bd11b8bfe038621af3c1b7206b30a676e1095c982c9b9704eb4c7bd8e2029736fbb0107d4efa20b89bac3160c16b95732d9bdb6a96c4568cf48c46f69392e7c49bf9a7df2e4bd3272f6335e3eb31c37c3f4d52b56906971a1eb9ef64421d602937b6d8b9d087c466846ab178ff74c8ff3c214d050940adf93056ffe1f19889a9a97b6ddc92f451ac127ee2d6283de9375489a353ab4e990445fc4296f826a5ecd925d0f33a34c88190de83d89290c389a3d6728d21260bae6557eea151314d3e2c6414c983e22aaaeaace12b3710db3ac8ac1be9566b610ba9fa4018428c05189370fbc3479080b94fdcf9ebe80a91b38becb7591d17167d00f6f52fee4990fcc4dea6cbb4913ccc7a27a0494969362765e87378ac3ea6ea55d7f009044f1cc70062e133cdd52231fbbe0df6b14678e7922ed6b93037b47bd2bc659a9d6f3c713c9785ea51dcfce0c2f1da9defc9dffc61156ba82de036070e09cb1f522c23a150021ee7bf1743acb861925166184ee9251b0dd5493fe37d87838cafc7135c3e62b01f1c564de6652197ee06178280dd25c122060a005e04f4cefc6c9096e75bf07838aec152868856bb10a82466623ea9f325ba18b03586322461145a6b402afe7ed7651fc11d439d27e3a834accd9b5b9f020f7e47f72cd2ed067ef7557fd54344cead278f5f7df9de5af57b406e90b0053261c6910b90c2de784563d7b96b6611dd07ac1f502248c76e6badc4f9a71e98596e30703a7b1874a76f189707476d44491ff648b15586e76b9ac92ca32c5965e202054fe0b3f42ab68f12c1b729c50c580fb702f498d71d5fe632548afb1c18580fc26b45d8f23fdc48c2ef5ed148097780ba233f29ba99f7f2ec49a513065f8cd2fd9f5810ed660bc5ce0a6f31fffb76b6f09c65b2c8cac5499f0816ee1b7f326b1a43c0264aacf8c8270f1579aeaf87852ca5d66ced54366e802e78e908f1019c4f0658bc5f958b7781e1c05fbb145c68129808dd5ad3a5d9cfe10327dadc52ea1e40185de789e3193a1b80489da49b68683cf5da6a8b0fd65193a05988cde3e18318907b5aed6bc89accf5233d25a668cc6166a08f88d89744abf10f557085dbac16c9ddf817aa4a9d2a2c2d52fd776ebe211f29352d48bf600aefe0d8a2df9a0ca4a5abc95a0cdd8002036dca1a44a17627d90aa788ed12833b5d78b50d4a61330bd54ee02cd9205abfe3409303d5305d5befd753f1fec7962b0856ce9eff885a31f61128f87e73b0b396b421d10b2cdc107e8856bccb8022d1878266264ea377da81b8c7bb239f3f66dd66b0c33a561a4f958a2b29eadc7913857bc6465071d09ee43d2ea86b1a141f6573928057f8caa221904a258428d5b7b1db1a30d1884feba0044b6465efac0180c24c3835cc40ad786876c58395187adf8a8f49190b2a337037ad38ae1fc37a73fe30de116c1c741c02c80cd59d33cc45fc03ece2bf191af99539645f4f6ef9b21f6e97b803e6796b39f670ad6ef299dfedc7472d7e814534f90a070f8e825760207e5dbfc422943bf79a0db59e961428ae33f486d882c1b7197687d89b188d5ea107cde78016b3094cd3d9d02344f007d969f7bae51e3f4e7e3b3530e64ab75da6142189de3e3f645bad53ed0d645168c9e0cfac4f1be888c7d9f7b590dc86a480d1bfa141ebffeccc738d859e27c11f5b7f8433097734b9986c3725292378fc4440b91e5c1fb7088781b4af3920f577216fe74d1409f123cf24101f1ccf399819d9ca306948063168d56e195ccf14dfa7cc3ca4414bd3d65174c7afd5b8a4bf0c9163a99bf5591786c277bb91572715926b27d19865ff6032bd332097c5a0642ef43df57b30d5bcc9c92bca09d6e8a02875f18ede876d54dbc03bf97450c4ff9f0604c5778ee9ef182ae0ce9cdcadeeb5ce3bc4cc3b9f3cc92bd51861725c1597a88e07c0b6d1a4b18318410d36b4c8bb8158644df5f44f0dc7c669707a482c06ded1622dd2bdc9d7f9eaaf47d5ca8ec526623f2341b4806d6b36bc4b61536903501580e5139971ea80ff8f5424c2d0d57b51318c787277e28d0eece6b1671d710cbd93a68d5f6df8e908e8421eb5f97548c3768c73162a09f9a192cf46ff345a97b66ffabfe504a56ea8a260927a867a0fdc544d684c69b7f61711194b683e22b80fc3102fd2a8ab84c5624e36ce4e880cf60f50efbd01ae3692a3a292527e7bb1365da94c360bb9adf750d4d84511e3d6ab4272689f771e6e592d2adb40f085f750633a8ebc266246cce3d4cac9c7ac68369727af1d681398eb64e2e3072d5c237d0e4a68869594d9a8ee0f15987cee6735580885848581febc836009204b2c97e7db808116ae347fcf2f6e6479d6d0ce26326edec431fc6fcb7662f130dffaad2fdc3d0815ee9bfe4fe4e88357b8ee544b393fc22a6095b273f6ba59524e08284daab97101b6117081db04384225a082dba1b35a2951565166948ad4adbcded9a9bea0529a87cbdada237771106576d5d79c57929df06860c79381c31b15f768be6057f1a7c8e138c6df323649063160a7a01c549e2e90483670aaeecd7d50c8abcf9aca58b9d8d614915fcf3d747d5f38b885a73a65952e8cae15db2e98103c6b547fc7b66551a712cd47a68733f12c6bccbe8c81c2b474730ffb47e6666c4346d5bb3c8723452fc1b48ca029b79760ae6871c153a98b6215dc3ae6e3ed88871c2df778055904caabc44932c4f58dbda937c46594699d6a93e05746505cd4c1ee55e2621e0552186105cf6a4d4d8ca595ef40d02ca9567998a70c22e8d7a10a04d915431293a29db5553a5f6f1c75fd0d2f6b3b1e98e8624f396a42fc5b54412e9e2bd3a47c05b3a4f939489c88e6d6e4b237464a18646591ce62c6a6a3d497f96216237822f3a468b225d2182f5a91283515600a4b384391179df67d911a418f19feefe32d1b969c6f1c721b2764a3a3499b89c8737df76265691398ac3190c5a7d6edbe5601553ad4b25afd2caeb02fe282220492b3ed4a37ecb20f550c765d713a98cb89f430389550fe489b060ebdfcad1c5b58b8558c4d7b9553e162a4250618c881500f37f75e13fb07eb6d30ed177a11cd4a3daaa715e8069063e12fa30e06cc96f81d25c4a1443ac0f6ccd2d339b81d7077a36d64c5078b5f303aa99fce50e65aff39d19870e195141cedbda85412017d7284329254c0039c190652e4fab01128c15b30a64d415b988aa33a8ffad1362f874e016f7a56e05926b6a84251fe2e955756baf86c88425a3b6119963887c43e05aaff8676b25a3573e978258c2497abd4d211855c72e616bc1095746be2e509f6e9aa0f9491d416085c37b8d1600c357151aca3d2cdc41c12991e7cc0e59ea4011ef90c7af99fb54830a3387b67f6e228d51e4efd6e1e2f18faa758493fc25c8b83f2a519365e53806911ed7f2d214364f936fb9bcea11511479529218ba97edfb9f5bc847c5bbb13fd8be67c35ebd5857c306b48741db8e9a03f02c84a05aa63826d0231934ba05dbba0b30975d61249a00c1a31923c4185fd03e4485b2c167e0e6eadfd01e76df4db3d6f4f44849b0d29e61586112eff39bd9c27acb207fe9d0c290f96e74314a511c4b60e8f94ff57a37bd2a9f4779dfe5c517fb34b38025d0f4e7d5b4462acafcc8c65209fd18c4cd5df0b7e0169f27889478846be3b923da0a5b227f944c419becdc4041e29bcd119a839bd9ce8586c57749bd000494762cab11a2cfe9340395bab54bded1b4c3271d15109bc763645ab1b1435e9113a073bbac2e27e555858dd243800cdfed9ed7cfe2932be8160d2081c07bba7391fad6b2033a91c8d3d8134d6d771dc9a241d54737cce6a60f73809ff6dac0d14a48bf81d4fc9b46504a01daca6f1964e0589c41b48e4f78262cef64b1b3f38fa0ea8a86bae2ea9b3955b2118c134ba037cb8fbe5ce7ff17786e4c1dbebac094e89a5df82bf5e007393edde2c1517ccddf14d0b37de744623ab0daba89e670c1c731c861a3153f3ac5c063ab0d8e50a7e9b6d1c983d6ea01371973fccf79eac32cd7ce4091ad71022028234bf37e841395d72cdad98d480488f839b68804f0c8594366fc7964665ab7bdf78d7a1ff979e75d7c471a7828d14a8a3e5978eed279acea6fbb4f8d0df304d125b304d8c0085ac80212ca78210a86962d281409f5b470e735e9bad91bdf9a44f631a4e1cad906cb500b797a9f317aa24fd4ef08f54f4380440fa67a590b1b723261ad6f6ec8b1dc9df6691ab665027faeee5f7a380ca77bc0732aa66af0c6818561d4ef5e4d7d0cd0f94cf06a1ab0e48d5c4883cc452d9407154076097873267fcf5f01670cf119803a9a1fb3ffef4036e22a19400e1848365cfcfc7c4218c850ea6d163ce6bb837fd9946e90680a9403d9b136483c7faaea6e652a97d2acaa3873e4e4999d23364e937f696acf5fed00acf99e66380b74b47dee6ffff2c3e5d0e009061c7cd30f404bb1870709d26724f7874205a2e3d8798fa73d91f9aecc099f13272f0e31144778b2fb671c6811eca4afec106785b992069c44b3e283b39295622dd046cd3436b27e50d3f744dff3d87faf44856caef9b8385065be1037040bc678f60303c96b888d443c30cdace1b243d531853095cf548df180ba9a52d658e6026bba866e823a2d211f088ab0e0909aab0fac4df6ca11bc209b37fe7e4354a2b5997a108aaa68f2c139a9369b7e6d23f42b207f40e81967a809661a834dd409936c00cf645d2f4588609af0bf6d2b3ff4faf4f7b35d5956d6a045a56c3eec414eb752355a1631f012d4c7056462b217d02771a05420da77152f1f34fa5701c4f2e8f81ef38021d1dec1c4ccfc88ee8b02bd5213555ea5f19842272e62a9a0de002a944b90508227916b059f8295d13bd6ba72468800a5828cd118636ea564dcd3cd034a05ea8d04e1518a4171c124a14b83793a2560154b675d90c8e1c218442986802158bf93683e3be666be6ac2d6fa8a30ae3808f6c9b6e4af6dabce404e85d387f36c907a323376f61733d91da3ac067aeea40e2da8ff028993827b57cb10920d3a73983c9a32483aba9044c3a28e8851f75611511bb07a88a72db0686dc0a605f43b80ed44291319b6e4f99b75ffbe9c1692b3e369667f8b8c98d80e3706435c5c85e84d81a820584ecac34d8ef1d02b6b3127b37e23626410e5033b1c8c9c09415465b9878d2799b38ea92a56e0b2dc637a37cb5d2c77b2dfc17607e3fd19f7b1dccbf80eb37b8c7766dd8f7147f67b98eeb1bc9fe53e963b99ef63ba2b6c5a5f7e7c00bd97c48a5bb9a7b4fc05ee6bed0ca9b90b32eb65a92a5673dd10877169a61acc187413bbbdd556d87d55c5ba58363734bcf34779159b894d0f27a07c6ed4f9a14b5d2ed042808072cd32a08c3d2890975eb96ddbda3d7a7b36ce119a0f9fb219ddc4cdcbe724f00c16dfac1bbd0650da29415360693a624e11ebb053a33aa2c566e924f22c304096efb160409a1020b32834e81125f8178d738d476094b2c4d0ab160443e714fbdc50f7c1ad55d1025f2074f5c5a2f29e2d864e4d5daf5d4181bc487a082ffbf6044dd41b0ec92ba0f2581e366fdeca18e7ca32062262f9e1419be5a443bd0e94d8317e302dc7da191bf3188758843db80615ff17806373ea291bdc87552ed1fc717e24209a9f8adb3a73842f1e6005b16f5c64692e53afd7c607351756ef01f4fe053ebf85f812551060896c3ae030051e45852c8a0a5914154a5954c8225940cb9b948c4af7826062ca2462b71439b6945b3b428da4dd4d6ed74b649bc224ca573c8a05cb19dd4e92c46c65458344ac6e6766ea2c8b20180ad29bec14b0159411d211b9b44ce0d7c0994c69353c6b3058be96244b1cfb71de1900b4e87c6d0dbbb5b98667cd618fef37fdf5908ab3a912e117c21a75a3d6b001ae9666f0c5216c49a3eecec7fd9036d98b34f314eaaee900343c010c9c4e1159350089d08a5ee5e0872988d1c4d39c00ec4a023040835e4d210ba2223c1a5a5505143b189899a0398f40a5099840a3461f1808c0cdd5aa2aba13dce890d3aa212820c48422ef8e59f58062079f6ea617b460481380d0dc099278a2019426bd92a1022ad0828da34ea994808a58099a7ad504194f9058a18d46098265f240461bddab89ca61186994128278456ad0d38d050a3c25f121098d02c326488a0d1b7ac5040222f024a401bd4a83882b46d0f275df00026c4c91038b46a18147006e64f145a37c18b148c1d846a3e02856e0c3cdd69d0c84c6e89e92ba43426aeae103268dc2002a74d08013846895ebc440081e68a3573d2a00b3f82182561d618b8f1b23a6b92e5c3e5ea823e8aea8050010c2e901ddc12a8d8af399509c4b7b9b42b81ebad578fa7a35ae3ad5291eb85e65c185aa16b76a1c9c0a06ee06976293dae98e8ad40d2b544a8a2ad5715cc780f21ad55c10a91eb85ef950350e14ae398e53a970502ca8e638ae4305e1b81587e2b80e85098a43712b140c491c87c2ad1ac5b9781d0a05c5b5e25c0a854a3de1521c875ae1a480e2545ac5a550dd739c1214c7a15286a06840712894148a53028ae350505c105c0c1cd7a1524ea0ea56373818388ee3503da817523a0e0b0ec5a1a0380ed5c538546a450507d5c2f9a470aa1c3a1eb8150a95aae95650282e06870e5744aa8605488784ea54a320c0a53a574a85e2ba5621801302d7a866b158cd3597e2505c13b814540f8e43a950a88ee36eb8192e856b41a1502894208e070a954271349dc722438a0e9c4b0b33a012c0a950327029aee31a8584f2152ed5288ad2fe7104e85ac709b8f64105a88e43e1522bce85ebac40a152601dc7d3712854ca512d2a2e4ec5712b9a540d0e341c6a052505c5711cb7e238188742f1a043e15450a9ae897b41951cd7c9702a2c282e65c5a17c40dd80ba016543d75d73383814148a7349b1ba144a06140ac5a170a919a79203c7a242712aeec60ec7711c47038a68c5a282e264292d2b14170497c2711d8a4b7141381b503da81a502ca8154ac5751c8a437130ce06140b6a95e23a55c7713b5cc7b93815ae85e3381fdc0da8956ec5a5a43814c7c1380e0506940b5c0ac5a9525c0f8a85eb5037705d8742a55029ae0785e26640ad702a5c4a0ac5711c8cb301b5b2eab8544a8ae3b81de772f448f9d1eda0e23a4e854be5e05454602c4768b88183497128140a6af51ceb051a96201c87e2501cc7c9f4aac91e22094e0d219ad02e8416689421840e222ca1c814c2058604e18c5ed2b18356d26206af3465d0495a848145920e7b1484164ad4409a383e08d1e20628049935d0f4689163a667dea8c04e105c72d8d1b1c2e90481c382ced74603743c0bed7d57b841e6eb02f53a2302f6e5343d76c8e295060e9fb7e0e031b4d0590020497faa02b4a704d0dd7577d7e3d3dd4558378ce0ebcd3cc3184a93951d2e785aa9ac5452375274562a9d0d2d4b4a18bda4b850565278522d38b8540b4a2c65eb5cba56ca0c012ce009e5066aa5927ab9d8c07381a715222d61ea754309140e0daa21290ee587099e781022d412002ab5921212438527232cd1a30c253815ac85830f4aa05233743224a7c347b5c30d9e505070406af2020e2026ba1f9418c0930c2a455a5c687181099017c814bc3285a71f59e587cf00ac954ae7a2624a3911851229a91b283670386e9438c2162a3d70d024658d04dc40b1a87c68ad7a5240fc912f960080cab5026445071424a91eab9e2540a0c50f4b50600a1858344d5c40214fa0e089a59c3140002e3638382235743e5632e828b1b2ea415949b9d1ed10fdd0d9b002640a4f2b2b2217a59420340c01595109d2a214fe00c1530ca997ce0a0a0c002e282b2c432f4444e0692525c80d32289e541d4bc5a10481b2a2f281d2c30788a554e1911204656525838b904a0e292395185ca841871960e891b20310493a28b192e2ad6e5c6e768890562da9d50c2a58a7a3d292e2e13eac54562ba9191510291e1f38150d9d0e150c342a2960d733e42347ca0a0c2a3b4a0419b1e0a4b85239a47240a1c0538f1b2921d50eaa1b547248d580a3a6b36189276f86eb669d4caa5315f142c401c4b015031728638c2f3040012e9e48e20827cc347bf02302c91046880c514212128020309e1b970e3b603ca58214b491c6128ed083cf8e9719645865018317482002410cf500b3e185161614148411020b7421012e1ea04516580c71f198f118b08025a536d888826c88349a4082986d19600a3af3f1b1b2eaa2004f76547460c604ba80f5e8c4e002cb4acaaa061a3ee001241f1e19058008c85003a47062002d9c9133020c5c8002491421b2a393c385d40cca8002111f1e74545628196822041ad8a28a03405184031ad080298e8c7c7cf068e1aed05901b5464a0d6f020a8dd4115041509dc1ed009503140e546ed06203d40c5032408581ca40870114534a09970387438a0daa1a5c6440c5807a8173a10500550ba816c74add40b1a856502a2929a8d54a854a711dc7a1b40b8e8e864e8ca714019e5242507a38b7928212ac083ca9542d2b1d76a0444a8b9a540c2d5c5400e589a794101518566ac8218027152152437437b06494961420293c282b9d8f1c2b2a173ca580f1e402122554763a2c9ed0028427551b4faa961970f0d4925fc47852c97103b5f2a19a5151e1e405161912b0442a8a271c3a70e8e8645a3329395a6d2ca1da218567f5a3c3d1fd48e1e2a92baa99415941f1e2a963419921f562a9e9b8544beab50244b5c34a08941950565094b4b8d0e2824a0e15185642745858026586ee8b2554643ced50921a3db6c38614ac05074a2bc575325d500aa9250614d4aac88a869591ea851b1c0a4ba74ab5745d87ea565d4aa7b25243aa5b0d59b5800369a5b5425971dd2a85939a49712932743428a18283aa024f37bc50a28592a221456889141096788979b7918523e8c08c1994c102324a9a52019e0c01f5c0c38ead69346186070b47caeac81047466dc4c00634c0610a1a2b12e0c30280900319ac80041fc08004663c1daa28f314f84ac1096af4e00636484107924082082443183932fa01080e37c4004318224802031740e288980d35d88ac30d20fc60c9f8d44616a8300524476280a1958315a8a00424f88007323085144ec48810a2c89111910c62a002188cc08a203cd8810c569002128811012ea06042004e502307372081186168a0c9d38744432d17358a400420b0200522080107265000027c182302c9912244433e60312d1719c480055830a0004d3e2422004440867cc06eb8a4ba084490410c5aa0021184800319988001a468922400443cf880ede0d4c4b4d04a751b4520c20f5ac00215a4400421c8c0040c50002908d04408b124487a98f1d8b882102070dcf0410d4fa280c248119a2d0800c5cdc9022a6d745940614175059415522a90a2006a0228097036a89a8e86f35864ba1d3a870107540d1c0dab193a19b81ca91838185400d0420b1d2b85a3e506cb65861619586a5869a9ac52505628141495aae3babb5ddd3d43f74a77ef68560a152fca66aef492331f5a90d6d2866e6e95524369560a8c9562d3dd3a342ba525c65dee1f525ca963ea99ba8fdb9d77d6409fd4573b60e5a04477df68d6ea05dd9fd32afd9acd635c3cfcf04a692f5b5dd1dd2ccd5a15a0fbf399754c3ddf64493ccf3b42d4284168ba553e5ac5a3bb7168d6ead5f87af57ece939cb9798766a12001c5069566fca1d7c03c47cfb63a7e1b7a8cebc15b5acc42f1004a161dd6cfd331ab59284f61fd9766a118a1fcf05aa6d5177d66ddaf9ddd99b13fadcedbdd3cbabb86d282af776be0f8e3cc8354c4adb2c40ddd2a45a838d0dd8fc539fbf2e6ee46a5f074a7c315a1bba7c67dfcde12ecd1d3c3d3b3d3a3d393d383d373d363d353d343d3d3c3c3c3b3c3a3c393c383c373c363c353c343c3d3b3c3b3b3b3a3b393b383b373b363b353b343b3d3a3c3a3b3a3a3a393a383a373a363a353a343a3d393c393b393a393939383937393639353934393d383c383b383a383938383837383638353834383d373c373b373a373937383737373637353734373d363c363b363a363936383637363636353634363d353c353b353a353935383537353635353534353d343c343b343a34393438343734363435343434323a3e9feeea6a159a91bbede58d6993ccefe5a30c9cacbb5e23ac28ff0227ce5b55284bbbb777739dd1d4e7777d3dda9ee7220c228a5d2dd2dcdeab0a084ee96a1591d0d1cf67d0e5b797d9fc3f2ec45f7952f26d768f4bae7d98baecf61e18b74cef0e48187eecea6bb667516f0c25f3c78789e1e3e1348eb24bb26ddb06e76b737abfb69c7349732774cbf961d86c35a5a99cface7d2e6b2e8da7b876cf65e0bd4dda8667535747bdeaa5928365c88218cf61f3fbcc6e57dbb1ba95928057437be9e8c8a359e8d5723833fdf643337363ce0f7c8c29e1e1b1d10fc1a99d1829eacac654abbdd8c29edef8ca5dd09ce8813b4e2ccc5e54cbe5636bbbb9aee8ea6bb9be9ee1cba3b29747784ee4e6a560e5674775e7732ddddabbbdba1bbebd1ddc57477ae9496179a85eace5424b17f797e2d348bb341b738b988a1591c15dded42b3b8a7e6e13eaeb4bb5dba5545704bf87aa11d67c06f626d11041dba1b866671acfaa2fff097792896b6863dc63175b9d38795fa37d9f16f8c9c36dcdd2adda8b0bb7334abd1c0d7cbe3ac79d0dd5c7739f4b5f7bed7e9e1d75be6bf5e2dcd33d71f5f2447ea99ce9b9d5669ce73bc76e6b3bb55dd2894eeaea159ed84af077e53cc36ef0c78f10c684571cedceebc322a76773cba3b1dbabb1d9deaee72e8a1c90d3ad0811f546218c38b980fb0c008241f88b13493010e125ac421970e23f09401005b8a67052b9660243ac1850acf4b8c036aca00800c4f781d898572e8418913261e905203560f9e587a8ca7a79fee583dc0000b0b0c03605279ea07d54b121d17009646e9606111539a2ca104ca51a90ea452a994ca398e4b62e54b3a2350029044ca882694ab72e72a55a73222004974291d4caa972546a0549e7a518272a6949725dd4f6a8911a954d775a92e954aa5ba4e09ca51aa08b0b412160ea5838545d5445dca519a508e92d2b124c70f13ea25ffacbc70295792f2b2c4889fd50b1391cabb17251c4a977a59d23f291c2a0c16189c30c2082450de39129ca7dc080b2cad1cc58d68e2c481544b2aae7224527cc5db08239040f19517951724525e9c38108704ca8bea4500ed48a0709505062740281d4d704da49a38e1bc89946e07e5ed04e5a48993d48b0596f4c0d479fff4183f9d734572b052291d2f64819572ffc1a26a6f8ea56b59d1c101a11ce5e509e52c2c9ec2b26a69d1d1402a295741a19aa48e48710e95d202c4a22389a7a7a7a7141d4df400d4b98a8e264e38a0ce9be80128e5ddd2d2d2403a5a5a5c65c59d70402a4d5852529ae83842c5b99497232c70c48aa3585d8cca575a6800e2e24c2e2f12b8a17cf522815be73d2861b5a0b4acb813075269c281549c6b7979ea9a0800471b6db4d1c6114874aef2f2d43571e2409c772e43b05a741c8144e72b2f4f9dbb04e1b2d4394a4587130e48c5537438e180527c454793267a005271271cd08ab3a0588248798b0fd1398ba3e868e2522409a09697232cb0b4e29c1fa1c2a2e38815e77434908a8e262cb0a4879f957340302cc17a6192c00de512b8a5dc552e3404e182847214a494b70b52a752a184c10243132c94b3a0baaeeb70a854ee8282c3c56505e60a1c2d375a5a70e0b8e18203e689927ca3e5377074ee38583a1ca5433971328313273052c0480123058c143750ab2bba274918810387c3448103e60a1c38562e2aeea243090c15383898273052c048d1028b05e304260a968beb60bae18da38503878bb780c35be05aac165a7051d242cb53ba1d17bcf5a2a405962bc9296fa185165e94e4940e339c3849f94939613999c18913182960a48091e2090ed40a082c37609ec038818902c6094c143057c038818902860a9827a89513272b5792594e5c1c95729617253a52deb1b88b0e1d67fcb0dcb8f172c3597c06189e60bd889d131c386ebcbcb4acbce4148c143052c0480123c5939554ca1397aeeb3ad54aa542a91cd5b242e9545a50a816dff104d5b2e2377430b1b4b4b4dc68f11b2ba816d48d961b2b282aef5c502caea4c55d5a50293baad851c58e2abe40f982957271717159a5505c5c522aee826387153baad851058ed48e27291c3bb8c0418403878bb770786b49d70287c37d40cd00c3132ccf3bac4071958aaf58ae6495c2e1389ca503c7cb8e2a7654b1a38a1d557438381428b0a494ecb062856a49e91cf5b2e3c90e2a50bd42a1522cce579caf502b254728d9c1054a65c7931d54703e503bae58ad3ca37658b1c30a540a0a8a2b113b948acfc0f2a244ec565ec4ee8bd56a47153baad851c5192853587df10507c0f882450a161d2d2c556029e9c8583959392163e5848c951332a8c0b2d279b2a202a583b2ba02a593054a8765d5c5aa8b9517292c2b3b9eeca862c71336d6583dadc1c6ea89ebc119ab271629567a70c68e2ab899959735c858838c17946103337a700615c820e30565d8c08c1e9cb1a38a1d57ac9cac41c6ca8a35c87881196cac9caca22063e56447153ba8d8f1a4236347159c0fee8b9f2fbef8828c1d55acbe600983a54b7557744e5e72a8b0582c50b894e1a2e30536584aba2c50c0e8623a4f61e5e8b278c10a2c261557b938182861a08c51064ac7c50c337a90e2f202e344e505460a1827285ea07481f24517289d94abbe40e9acb8ce59a060713f4aba2c54dc05460a6ec605e6898aca0b5760adbc51ba78c10a2ceea7f38e8bae8bce8b2f501d0723050c15285da0743a25285d161d17285ea074507e3a470103258c0e058c17550ac64997454a0be72c3afa4589ca0b0ae7dc8b9214141d3052acba162748800609cc78020b0bc7ea6e4f82e3603852ce7afa41f959add1324cb05228f841f96a0c2030fcb8341152bed8f104a5d33bac40b93a7719025b06b542c10c33c0f004e75ffcb4b88b2b49f9c2c55b5e9a9b6969d1a16407153fa9d48e2728578a856b7139e2e207e52da8ee8b1f252935524a9248e978b9a1e23809971f5c5e9470a91d557033294fb90f9d4bf783d2fdb830ad5ce52f4c81a5a487f0c5171c4801537658f1a324858500ac1bde712b2c49fcb4e8d841c50fcbcacb8e2ab899cedb85e50c6ee58394aa5b696951a1e050a1aca1061b6844e18c2598b1d339ca06a81d14323a477951a5a85afa27450a9827289721554bca8acb50eaa5a3828c2e2585c5ca91c3dd4533c3ca531c45878a13161455aaa3a273c2d23971e99cb4bca0744e549d93d44be784c5c551542a154a8bca5b60ae70d1c1c482e2ddf2829272417197961c393ca58a21c74b0c2e304f7e501c8bca5529954aa552a9542a158bab3ca524f59292841129d52ae5305730e570247e522a47a57e522b4f719828523054c0b04af1d48b1298273f2bcfa81f174f794ab7c3792ae585c9c57378ca959c914aa552a9542a95cae1ab1c342a954aa52ae3a5c8c5553a5e6860f1145fb98a1532dc68c18517520ee3c461a2e07ca41ca50b64e017c3f9a2dbec38d3d9acc41e7e9ed11ae68a74f76c16112098d9a6b921c206bf78abd3f18f77e2d2d2a6bf48f971f8e3acf7f36cc6c2f9b27ce7d732a6a20ca63d0b5ba4ee1ec31b74c3f845e2f16a64c06f12c539621b96d886258ee1197e7e5c034bdb34d289ad08dec2afe5d3e648ff92b5a4515c130b455bc37f6b39f6630c4fce653aa0fbce58184e5979e78be08d890fd609fe8734168a4f67b1fc9816964a62b72c2b712c0ca7acca4a1ccbb45c825f36655f4b77dbea4c5c21846e4e88038216ab7597a36ca5bb53ba5b2556a918ce17fa912e85f5075f0fccf16abc1b19f0430bca8ca093cccc083acde019186c049d6488a061254923091afd7d8e9bfcfb5ca61eb917d3a387cb71b574747156c77fa7087ee83e05186964b10021d4b28d859ff137e1d8d3ee8fdf44f36ca2f7c3189ea2386378c66a609eb222841fd2a62b08d1d2dd0de96eaecbe126ce3c43a7be4443ce8c479af3e3a7dd921ce914c1ff3bbb3f8b3d78edec99fcdf590cb44db45cf2b1f04571661cfb6c6b8cabbee8cdc4c7cec30f0fe9d85988029732840e43b00c91c2d703311d67badba9594234c15f624c676ae0e75ba677923333304ce65cf34cba8ff0efd368f4e65b8a74cefc9b28ae3ffbd0a710358791e3cc466ababdf133d168739d35a4582c0ce78d3ad94bfe2dc9cff5c7f0c15ada5a67ece6642f2933d299223f3a7c5cfeb59546148b89229de1a74d3246ceafc5f2631ccba5ad656acb8f9de8ec2f191345ca14ab656a8b31dd39feed6e1c7a18800e40dd48b413974ea2bb8768d690339abb51856e0734a0afe8e9ee2ba2e801740fc089263fddcd0413d727bb74d31ede339ea2fbb0f11d60a5d8699c071d5e5fcce9eeaf01608693eeced1cdb5a2c0038eee9e426320a6bb2df0d2002005ecd0dd4f7a74f714dd48dd44ba879e41d62ca51765325a716c3c1a195928f3f4669e6e8e0938dd5c13b81d70610075732348c114545d74b752b3c225babbbba54eed20e5447713352b2905d61beebccff4dac2f9572664d31483c1708cc441241144ed6e87f9cb613fd21c9bfd757d9e197c2298923f989293564572a4e3ac31f09b6224b6d9a0fea11b07b0017083315ae87e2d1f1d85b6c69ede1c2331496bf8be6cfca221f6fe1037206bf45428144b5b642c475a6991cd8a0f14941fe39fee4e29a95a1a342429d3910ab97f9b42ac5192a12188946242434247414643b1a4a3a4a4a1d890902142474531233f45f761b089437048694827c7c6da969e698a40429290ac11bed5596483a8cf6497ba3ba49feeeea8c88766c5a017cbd08e1e84ef58e26a419cc9f2f3cc4a9f547f6e0982b6fe083d0d7139da66e1e7f917f497fd945ea9e75faacfc4de99ff9d40f2633cc3afb649e25b9da35bbb74ff364517e78fcd953a5932592bd6b2d299675b83aacd56a63a24c666459983d33d9af72ec7ff33ffd162bf4dd26df65989fe96b99c55ea53e6b57ca9cce7ac8d36e312f4bc4eaf6289ff4e0f5f145f36450fff6d8e8eddc7e898fa12c67fc3703aadd24aa3589ce592afe119c47a38818cbabba26611f1ccfb393939393939393838383838383838383837373737373737373737363636363636363636363535353535353535353534363436343634363436343634363436343634363d3d3d3d3d3d3d3d3d3d3c3c3c3c3c3c3c3c3c3c3b3b3b3b3b3b3b3b3b3b3a3a3a3a3a3a3a3a3a3a39393939393939393939383838383838383838383737373737373737373736363636363636363636353535353535353534343434343434343434353d3d3d3d3d3d3d3d3d3d3c3c3c3c3c3c3c3c3c3c3b3b3b3b3b3b3b3b3b3b3a3a3a3a3a3a3a3a3a3a3939393939393939393938383838383838383838373737373737373737373636363636363636363635353535353535353534353d3c3b3a393837363545e2ccd78e235177bfba69cdf2a185797f2624fa4a6975c85eda5487c4f94a417f91407abf3e6dfc4cd4ddf910c20244771780ee8e28fc3bcb25383696f89966c631718eb4d29156a97befb76bc71fbdbb0bd2ddfdd0dd019141773335cb2714c991360f6e62f8a5389bb82eba7b6c160f37590ce3498273763f572a7373b0c47de43a2b1de905310d7d2ceb63d2473c6dd806c11953a7a199a750ae7fbf5689babba14e88566968c117fa2471e6096492619d9716bbe5598cc42015652592cf0dc349b35816fd009f484874ff9166338b1326c9d1497273e33e78ca231387e087444fde966e0f84cde4ed8230d8df32a8065a72e8651308481291b0fe642b92e4c4d98a4ae1dbc2b759519c31383aa5bf70744a1708248948a55344badd39b3f692b1d96db2b1d96d72fab01291250e61b0974d590c97b83eae168c9138e3a7ddee1ce945c2f8abd7404b3e98ad88b3d3e76a837279548980241179d9041a02fa01ca2599cb2320494466d65e242049446224d6a919721f09d32aade5d87d12b6d4dd3b5200204693eee6b1a91912be1305928245772b6956cfd70d83c548dcd382eeb6642c7c273ae37ed02d810134b17840902b2d695406d2fc632dd33b67f05150771724de3b045a51fcc1981611c1dc1b4fcfba5b8866ed50d1b53cc9995bb6f16a3c1b193bab54e6c509e20e28857ac66592e35c7fa43df65a9ea48be20f0c763fbc160603bf2953198d0c0be9540d3a5456a8a2e8eea366e97831059d271d812721a4b40edd7da4593920e8984e0edd4e34d5521acfa6c6a391c14fdeb2cc4de6df95d2e83dca29c2ca49cae94e82e408127196199ca3bdb31ecdc27900ce11382e1f9a758346f7e7e1fbd7f28bb2f9d918c6a5df447196758e7e3f4fd15fe675829e38cb9036d1b052aff9696129bb11e3e6a9bb932079f9eb0812ef652e8ad4e6619d7e47abd4dd3634eb26897593a39320f1f02f2d97fcf557f83570fe753c6d619d356f35cb860a36642441e2af90fa1124de8f16cca5b571a267d69bbc243a400b3641b4571464c4a9639036dd57aab6fb4d47e137d1073f0917cd9ad3d0907008d721409c421a234b7b697f6d50582910b1ecf4d5e707f844f2e3d9ccc6fe5af076731dba41d8e0d2784153eb6eefb36d725aa5327fc9af65c7d346c3c30c1a5f68c1cfbd0f2de8408820f994d10b625989fdfafd5aa6bfd4dd3f9a359345773776d23f97e03bbddbecf34ed27f666a6dabedabffb0665c8dcb1f34c2f935cf025f4863f34ef2736fde89e4b3fcd0824a3ee927df9995664d41fc849fad51383f8858865f0395c2f941c2cf3324877c6883eeb4b2d9eca8daac10add217c11bf8332a64de8914fa84f7290c8683c2bf3f9b9540b93e2529f8d7a7866790707e2d062e1963b996168cd1f0488e37c833a13816bb1fd6c74f9bb1f0c79bf1974b3e29a83e79448e37c8673b7e9238412bc42724fa41cea2ffbb04841f290cc34a99b21571ec479a67d65e245ce9a4fd582061a540d02aade1292ad5f0acc53ecf9086758278a6593b9cb103037670d2f769778aee4e210defb491e50e34e3670aa4593dca709aa37f2d579bbd34ffa659fbf2cb254e8ea57f2d7717b5ba25f470ea6e97d3e8ac5ad06fb24cc7fba4d759cbd78e3c34ab87abbb31ada50bb37ab0c4a0d1dd3e32b97ec6d4e9bddaeab33e764c3dc600ac1827d7588ed4698e96f63526876742b16ff183eeae69968b06ae2fdae57ecb149ce4045dfc1a7e9e34539afdfaa0d3dba63b52515210ff5a581f77b74eb35c64378d637acbe4f8411409b97e60b962fc2656eb98c6968ca1f3e0f86913e31f63e19db66ab3612c7c8c1fb497b4f799f8ccfab59836d1d0e7fdf06df64c8e9ff3fca6fbf893c2c7f385841fd6a15b38ff8a3fd9e98d786c6a4ab739e3093659bf4ffb5c69065f89acc4997c109cf8af0563d5e707f8447c42229f9048e8f64cb1dbfd260b621a86ff3836dab0ceebf3200d2b8d4d3bab442311fe9c7f6e99fac4541a5522e22fd70ff089609c5f8956a9389bec25c91ff09568953281132853908aa4d31005828a93482e494c85f2b5b29f707eedc7fe90ebe3bf48f466fc49e153b204c1a3bf36083fbdf9ef48a71814cebfb53cef4422c919cbf5c74aa3184f929cb16bf314450bc260364d3018fe269ae9482f0983553a6be0bc938c651b4e26d192e08736a8b92d58b52b76e0ebe968560e5f773b0f3fdc611fadd24ae7f8f7f38c27e90fd6d914d609faf8f0943fc027128a47b719fdc1f969772eddf07d3aa3d91a7df84affb4999568f83e91eeee8709b426fc78bef849304ef0b4b9284e50a859303c3f34eb058d59f3e9958e9fa9bf48ab14fb4f77cb34ebe58beef67029b369d60bd9ddb6862f4074f79066e99842777ba2f8363cfd45ab34e34b673eb3eede4d14cb9983210d1d7fe833ebf827fcf133d1f89908d7322df22239daa0f03359defbb912d5c03c816a6a88d4d0d4f4f0ece8e4e0dc10a189d1c46c88e4fa14ac3ff8366de2cf576b7ba307af05025e0b24fcd1823e383aa59d55a27987be8966f0e75a7ac998bdcfa4da1acb788a93c44e1f56a23a492547a2bb8d9ae534dded65fc345a893dd76874f4276f79fa7dd95856ff5a7e7d2d8f25edce5af677db1b29d9de285b51e947baf4e592491e859502d1dd0068160e41e8eea266e140050e3e784990642be2575829d311241efe1a9e22f6cf13a4225986e1678a2df961aedff48e696dc9bd6c45ec31209d51f0492c1356cae40aebf42ff6f87b929c35ffc24a993eafdf446933ebe1e76bc9bf6ebd4ec7d4ff7e6de9c1fab3d9d14dfc5be639fe450a5f142910353cb352f861b540a2b54861b5b23aa4123d3849a51aadb475285b235aa5377b337ea1f099402b02d5278f62243961b09e9a9c1c9b8b61b0af54ac3636d2587e519ce4fd9ca96de9697324ba4fab1408494312e91c87b2a549b22f224eda0bb94d91c45428149f02b9659aeb8744983645209902e9e4d8fcdfdad2ac29e9e4d8304d107c2074726c664dc9e6c636936a6e6c3389e6c636937a6c6c3389c7c63693766c6c3349c7c63693726c6c3309c7c636936e6c6c33c9c6c63693686c6c33a9a7c63693786a6c3369a7c63693746a6c3329a7c63693706a6c33e9a6c636936c6a6c33a9a6c636937a6c3389c73693766c3349c73693726c3309c736936e6c33c9c636936a6c3389c63693766ca8e1eb85f5b3d3c7c027f10cf84d333c33194ececd9c618f0e0dcf4d0d8f0e0eb823abb1a90165b35943734373d353d37333abe19901332eef0ccb069ef6ae0d2b5ef8b89c64ae7f6f1994311572cb8f63dd0dd3ac1a48d05ef85424c9e9f55fe678d63c3ff6db74db1b853f96f893f0d34cafade5f2c7f646b99636e87eadb408adda5b6486b5b449362bc4daa5bf16540a3fe3f2e63aa4bba740672da81e318153268a134877dbe045d914e96cfaa943b2ad617256a56a29c67494954aa2b5282b6026f06b7f917cb8652a5219c5f38174773e98402b243412c519542dcda56895fedaac649780e0fbd912f96b8bacd1fd26d12ac160f72b2da289d1c46a88809816fd03b94f9be607c9d68836817e9c4a95285ba3b0961648b6461f5a23f2b1cc68c302b066f06ecf3c2a7e1b625acb5e0369cde6afa5f071e9a4ebee966102323c69b7d9316d8a330f49eb5f569aab05dd660f9fdeeca515a28de85a8c88ee5e6a560e34ba6d3c1aafa66908e8286949e9e39aeb82c3d77b99bd19d3783632958af74796ae87eecea7bbe3a15939be784ae19e9e94785a79ea7e7a6ad453774fedc453430145f74aab74b793ee279e5ae5e9498927289eba9f9e9ee8a725ba395aa5372bc1603112677092a30d82c1c00f2d686795e8c37969e490a48ca7109a69256242c5592990a19b48923f3e184f118cdd279de6c8045a5126ce6c73cc698e3e3faaa5993c729a234871a5373b7decf194dd472ae2637353feb88fe43447188c0330b032f8f75ad0b3ad38d768f46dfe23cdb5bc3ea3a4d33ba6feb525f7f1c5ae8d85222d655ff8354c2b9df9fd50a42510be1ece74a4e2f819df92c0753ffe2f1010d31106c3f5996c86c1302ef3cc4a0fd6294ea0ff590cdf2679bb36cfb0ce2271de278fc4395e6b84f114836a609e24a642f83691ba1b49b35e00407b9ec723bff8caf32fcdb335720fbb38a75882e204bd96a9cd6995daac38bb1fd6d2ff4eff2230f19b5e8c4d5ce7cdb05ed22c178ce8beb3a4c5486b6bacbb6f9ae5824f777bf86975d640c72e96335ab5d7e6e167f0f3871ede59fe405a6bf4b4796d56c2d7abe1599b9901717a7a9e463653633369766e409cf0e6068787e677643ecf9bb1acc433383c4a7b1be25ecc374e3cbe7e9c5e9c7d9338bfc97eaef3ce9256c37f673ebdda26a914851a44e189287ced85380a0080c2185050020a3c3c61093ebf6b67d21372d07002039c1084136020430d266a0c49a38d349e90461669387d1f10ea4e8fe7e732341f927b7892b3a451d93831fd5cc6b3f94ec795deea8fdf92f49bd8042734418b26e4eed1e3a7470ff75e94d14ac3af36f419f5ef6f497e7e9359d80f464446493f45bc3a84c5842730a1034c1099e0c212d0e86e6fdafc16f37d2e1c13ba3c3fedcebc84279680b3841cddb7ccd3df1679ae04279450a3845512ae90842ec29ac1e9f44a0efbb02bc9fb3e26484003091040c2029010041258d060011a4ca0f1e30845380217ddedc97833eb3371d65ee6d58e32308ce47de2fc6bebc513e89b5f6d9ef8b3f79990b486aba514b4184fffaec5329843c068951cd3a892bfee83c67dbc864bd2332e03c0a3f3d5f00cf2f9ebf362746a5c1efee753b4b559ff4e991f6946729a45331be37acf77709b9b8f697ed7667002a1555abfac2db937bfcf6736e34a4b91749b9b300ca7df271f4f212fbc3dd317e39ad96742f1e798fa0cc3e9f536ff824dd7de9ec9e537273b47f16bafbf33743c6b8fadd18bb25987dc47b246611d32135fc91ae93062a43b168bcddc4831b4e3e7497bf1c3276f39f6e46da9dad90bdd9cec45aa89e204c5f9f7e6647fecbd6f6795c8ce2a8dd5f0acb18290638def3bc38cfe39030c72fefd39e349379eb63368777bf528fc24a35209086b00818b7102e1090834e093ac1fa0d11e88672da4202d957e0005eb0748dded7ddfb5419f38c1210f880fd6b0f799c8545bdd0760b40f0ee0737b207c6e0fc40ff089882295dd47ba3d101f5ad007deeca7076474673a7e0faee81edce081087870011e24e1416b076b78b7fb4d31df4471fd60304b6324fe5cfec528b98e3e87c5ea043fa74fe953f21d7c075e90f36b8e79c8c6c7f847f64576c064075ff71753e33aba4cb348074dd041163a40d2ddde7f9eb704c1db33c94a5cbacd6e6dd24decd1a3470f0f8b220542079c195e98b1851906306389194666a4b887e9dffc45a8e7352ee3c580352e33b35fd0f7c504b98e3e97f13ecc04be0d3d97f643db57a51c9c31b3af84c493a3a4e451cfb4b4b289e727b917def27dd25ed25ff21caf05c29383f18bf3e4282979f81ff2c8ff837bcf649b2ac533cfb0866790f06b7949cff843d1ba9cfc671abd48089e32d7c1ddf36a69edfb5bcb8eabcfa8c7b8fcb13881b8f7799e6179973e772f632b5a9cebf729b1f98c7e312f186cc9f5d5f0df99ad81f967333b625a670dfcd169953ebd2f521194c9351a15414afefcf859c333080cb6e4729fb3c8bd8ca9e89fcfd28f6f14459ab17fb595ceac4c2ead5b9a675b9d2c907bcf8462994ae7cc12b14898daee927b168bd35feeb9f77d7e93797e25f7c818cc0393737439760fbfcde42ca2d9ecb924c519e3958a33db25f7848866b52527e7d7603f4e23f0492522bb84c37fa3a1d106556b248a33088543456be3c46e8d6e00031268e00b1860018327307002064f3060820125adc7ec7039cc673c6687bf76388cb4fedae1d5e50eab651af6241f5a10d6ada2c223b9400830b081418e18d734a39bf5022be6872f28d2dd65f8d72b7518a55921488f678dc420256d4ec233cf70f64978e629646735566d75caf30e8d30d8d283d556996a296ec10e6019da4bfaed6bd931ad527cbd90050508e924eb906fb2979c36cc045a31168633fc3b6b3836de27c9f1732d3d6b84afb7022a2c909d55a2222b50ea1eed05826d56147f6eedd660b00f6d2d4b720cc3ebe158198bddc0fa74949538f6a10563f96d5f639f6d0d2d183e2e6b197b264bc6664d640c060b6b397b8c699869f876fc311686f3992c298a33f6b994515ae993f6b1153316bf92e3adc5ea93d6f635a4327cbd9b2618ac0434e8d70d4e93dbec374df87a189720a504abee1a2276e97d0a30d220c01542f024477c60b0a55828da31b2e8ee2348dc63b236ff8c41d45e38a31e3e1569285a1f1e7e0dccd4869320b96fc3121f41e25f5bfa6a85f08f0d4ba5db0311d2b0541a23a5491084eeb6359bcfd28fd991edab930512c50992c0871868b427c600c4108018aff66ecf64fb1af3d9be7e2e0f4720811114d1dd40346b0434eddd97f16eb87c89e2b4856183301e10461461e430c63040561834221842cffc70188f8686e64553e33b7ca238c1cf5dc68b71f9677a6d0e24e45f8f5cc6c3e1fc1bbecb783135ae2397f1f9e1305e4c2986e997ad4dfa72fd5a2e7ff08cd9b00cbf96311b96d88625f66ecfe4362cf167c3522925dc410434dd2d82ee9cbb10d2ac1020cdfa736d2685b2d31bf9f8c0604b3f7e385920186c29767b26101000043b600c018c28babdfc37af3f6bb54e91fc8b5f24bd6abfd8e73657ebd78222120b8c1f36ba7ba8591ff840fe40ed033b3c40049607b6e8f630f51a58e2986fc87f2ecf37b1da2c8ad456cb56e6373bfdb47e7ba619bddf646bf9afa54db3f6324cc7995bac4e91c44f9d66117e3ab34eb3c87fa44031e45fff4097f19acfe51ff8f9fdfce3bc93c4d98a78ca6c7f4b1a9dd1267a334833a622c543403f40b26f9a42211348afcc623c6b1e06653cc51a385f3fd2dc5ecce370fef7b9cd3e2bedcde5af9729b9178a4f6f1f62ea55eb75be083aa61353c799de496d36887b982cfd2b152b9d7da8e45ecc6399759bfd46da9bab682d39b3ad5e2913386ff62fe2de67f4798d8cd1e737f13fac137f2dd3d7f74caafd621c481211cf3caa0dc31765b3d229928ecb502c494bfacbae9dcdfba4cfa87f3f5aa52f66e6badd792d39fe927bb7c96467fd943e192347459666f6a3f96e99f3e3bf5fadbfcd5f47ee7d41967e301a12125b321a2afa614829667444b41434246949c9e828289634246434e49b59998c33a6a287b3fedbf2cb7c36b3321fce9b7dfa33cdd1bf887b372719b957df3175720fcf2c2d7cd1662b934ca51694995e034becf8b1256f49de89ef3785d3eb7c6c6bd3f622394ea7f76b81b847c6587f2cbedfee37bdcb311dff4ec7febadff4365bf317162d68b3bda483b446ce4bab54889f22cf44ee8df7b38354bcc94a715629a5552acac649f36b67325f3a32f225a52145b74c6f09be92c3b8d723d71769aea5d338a637314fcfe9bdda8e6e0fc451078280a0b5ace5f9a1ffec658ea343848dd7c0891fa42801a0b8404560a41974519c36db14ffa21240fd1345caf4bdcd7d608a515078f96713d7f0bca00d47a7f419751f5f6dfd1147a7ccb854124e077f30add27a6711d9d78304c8e82f5b51e91b7a9909581280494087045c80c15ef6b2298bc007da93a974863aadd2974dd9bc938c89e2ac3656a715439bbda08c38417a6dc6b4963a407793cde2a20a2e947081d42d2323f378d6c8584ce6b958e122c5dd37900007a8e149608e1cc9740be8a0666dc1467f13cde1165f74c7b88fbb5ce636c5e9986e51bbdb85666d3144f7ac53f4cca3da6e60056293c8d2de1fecfd21ecfd21ecfd216cb6a6648decfd219e09c51fdaa0707ecd6916355932e634c7f0ce204d16c9691691b1191bcbd0d2fb484b75d696307e21b7297e188b61a2db145fe88974f7149ce6f84ca852f843b81291e30de2348bf0f570391d308603bee8f6faa22d7280936e877daea50396da61f5457f599b1d30d3f87a354d305803bceea6f1aaf51086f333812590cd9508237d932d725aa5244999f0674be42fd2ac09a9bbd3c0a2005830219981c170b5146311d4edb07002c53aa65957a8d1dd9ea73f93df9ee98a30ba3be6cbdb33b95275e62914ce0ff2b43b431b647ba3ee6e0821a4ee4e88ce08d39de3fd3c8b90e30dd2dd1521c71b249747385b118fa3056fcf74bbb9bedb9a3115639836653223e8743f36824ef83ebd77ca18d00b78c2027400c65e0ecb34fcfb4c73a952ab241613ad25f3cc339cf9c7587efca2bd31998ce76c866bc1074b01618dddcf3436da3b534090b05ad90cab95855fc6feff3649313fc6f32f58299ef763b6cae6fd2a964d95c6f2cfd8bc1fb37dade179efcf3e8ce1fb6458adec6f0dcfbf4c2065c2b49828d21a18ab748cdd44929c3ef7ef87f7c3fb3018ad52126391cefc42d65e3297640dcf20d9da1bc3353c83d4ee87f383804f2a29d9fb43dc32457ada755a7ab05a234cf1d7ff614815b0a65b8234363637b6991412397d5831fe1106fbc9a59599dda64a6566b7094812911a9e41802411b97788e968288908102368e40806d3c9b109e24384001d04a050010648f31c6d2e670dbfb6c4a24246c5019e70802bba932079554b96329b5f771e601e00a76d5f6d36c019d36b9601ace8f68430008c084990bc84885e4790d8ecd3c359f39f025451001f9e2ca1bd2fc65f21d1d7346b5ecb59e9e313c519f4f97c7204eb89d0145198e28a4e82c45faf2c9618d3502ced14b4297e90428db615d32ff64c337f7e0b6758a71461b0a48802bf8e20a9337c25297e20c0130870457bb9b41efe4873bed65f9366eaaffb4d5f6f93003e088013c50fa280220a1f50a001051549907848fde537513665f6928e69fda67abfc9d2bcc8bdf049d2def026ca28c696f4af655cdafbb43ac3189b3d9c7f5de34d24fd825324970c41118027a2e0dd443c6be1fb13187882004ff0bc66f84dd89db8821344e869fb71420c27a8e8991d72623a91a33b09127f1d41e2e5fab8fe842fd20964093fd35c7a7c0b9fdec2f938a90ec9f5957e580340c04da6a2a2b2f27ec4bfb6a4a2a2b292eb370d0de06b6f56ed126b0029ddeddd29cafc6de28c8b9b00a3899a1753146424bca4d3d326727439a767ca440fbadb63220b268274cbc049629f596702a7e81393b3761fc9bd4a3dc6866eb3f71e75b9ff0dd2ac266b78e1e7bfa428fbfc979a94d1edd12abd76d6e403ac265f77d32acda5bd3eb37e9b36b7d57139c1179eb626aef6c25adad983f5efcf04a046a5e3fdfca1bf0cc43c04d04537fd3e01bc545454563cc754454565256606cbe0190cda50a6d239ce58ea7918b4a12b093e12a4a2a2b25264048df888e20cf2c13725c7d3977efc1841233e236824e30f7d7c7c625c3f46d0880f911f4e1648891d9ea4c07a32c21315ede1a220239fcb78ff32c7f4d6721cad28daec34f49444191eced46df6dba45fcb3633e19f241c0932babde9f5996616c5f90a1f97b58cc488c40d48dc38228cf6fe52fc21be767613b3cd66ff5cc62b0a32e2b73a9df6d771e9b7fbb46a45b7758a25e833e9081b8c08c388041821d461298295d26b67335b69f4ef37d9a5ee0ea25945d0226445e060920693264c9898a8dc36c0ba217577009a754371ca825317dd6da4594e4836366c60747b8f670dbc25e9ff332f0a32f292b9329edf266973a532decb8adcab659b6f601e3f5319efb3b909893eafd3efd7a7cdacff38ecbbdd49413afbfab2cf65bcdb14ffba6a8cc4c4789e0bc95fb9fe9d482e1b239fbf0ca4e42dbb28d222ee65a7877d197ff8b90cadd6699b379c5972824c985ecff3657e9ba348e7ccd619fe57c7f48b7d7eedac462b2d59faeb1b3fd3d8ffeccbe037f987c36a6f93f47f209ecd2e4ed02ed97cb0f168b2421317dd985eeb2fd8f7b98c97ad4d2a72d8f7b98c1733695190915a76cde62bb19a6428c52827d0dd449a552ae53558b9099901ac4cf3acf7f8d1e21e3eaaa536dfc45b8f6c6b0f4cc57286f1836089fdc761434b4746de8773ac96d69967769c5fcbd852ea957e39e634c7cf1a7937519c34df495eeb379186c7ef6bb6fae3bdc27f89b34e8f851f8ea0138e899fc3fa18ffe0dd640e929eebfc6a1d573a73b541a23883f27c2c5a2b8b619a4bfb23cdf7c36a49fcd72786a7f4174fe9bac55e769be32d9c9f6474bb5f0631824eb1b03ebe0db856bc1c96f1872e2c528c6e875d3bf36e75fa8cfaeb693363c73c32754cc30feb639f9ee7fdcfe6a67cb967b33f13156deecdac8f6f735c33b6a3e3e92f7c4bfb77e6d1de5915c51ff7b0786793db6c65f217527af8f743fa773ab6359be3af657f7d5fadd1e73322f766b628c88867b19cb317722f461427f519f51acfb854824b97874f92f3e64b2739b35f8a93887b974ed263becfc37fb97c6675726cdce699a628a37e7b20dcc3e4bcd9f3638c9fd22ab5b46abddbfd72897bc69fa7f8a26cd62140c29a450a8446df5687bc28a3f97e93d02d93e3d0b535b0ce4fc21348483881ac91921388b0a2bb7740e499506cb3bf8c09c57f1d53a735cc6242e2797ee836df9ea94b43c911fad2a6ecefccc672b57716ab3496cb1b8e89d69232a3adb15ac6329eb3d8fd0f457b73b5601315678cfc6712c519bbb50c7990cb58a54c33e32704805f046b19cb8f8998058d8233bc98d0e54a2878d25e0cfe47410dffa0c0bd18bf767682344e9005b6a2e7f2954bd909bef3243f293fb642322e85c2b7d9b00e99400d137cd13f2670721304e9b6369b60a60466b4384bd0055009c2eeff3b8bd9bec2604ba1edeb181118c3c8183a9441822348c0438c36c49081182410a38a11c3084830023a0257c3b87b195f8a79dcc7e50c80bb17f3e5cd2e779b3dc6f5c2b3e6a238633f5fb4d6f3c0fcfec2b47993917fc9d2de5ef3ca5e31df97f4f38a5f79d672ec45d98cf9a5b97e18663011461161b8dabb4df17e93cdb994b98ce7f46206a7d3900866084115426002a610b8008220802001201002810d087200c30c303600c6113060f840123e10810ffc0768babd1148c86dadf4c83f3cfd366d4cd7dafcfbc25a8a13974230d8d297542d0c568f3cbb8cfb17ab138cfd2db13b2cc99daa48e432debf92df27ed4b9c20cdf4562197f1ae7df1b81e28c3035b78e0001ef0c18311c75cf33c58ae73474f8ff7b52c8adf11ff5af6404b07ce686fe9e828e941d9900ee40ee470400d0e70c181241ce8f1be6cedfd1cd3cfe50f565bff86effff7921ef3117d2e2ffc2e906f1239cda2ea348bbc9166fc9e4b99676b549fb436e334722fac2f9992783f2ff19db46ac5f9e1c72f3c9bd90fe77da0ef13c2bfeff323dc7d7c669e42fef2f9f163a435257216f1e0e42dbbbb17e1fe2225470bdafa7ddf90c3f8b5f96b4b38d35a26dd320d69b9840af9262afe90ff40cc17c2b73a8b76d0dd479af555d1ddb65b1760c2fbd9c4a5acbe1e2c437b73a5ad0ba430ae164f26d00a6102ad90ff590cc47414679e421ae0a2b0400ece35f1420d47e2b6f0028cc6e185119eccc58b1fa85505d810e2da6855e04913adc052b717667cbda74017dd8ef1242920340135c2c7652d875f7ad4272046777b49901c41e2f567025ffd99006b76310605bb78926ded2246026774b71714623c6b12f840db44e00211b811b801026af48400110458b868021721e0420b2e02c0450d3636f801415b48610b335a5b40608b28ba931cb9b9d1c2025a4c2d845a5aa85a5934210b0d6451b3c0c9a2866e257ff90b338156886387611c7f619c2ffc9acb780ed069001b0d884003886880102cdac0820858b8000b8c05cc1545b862075708e00a190698c10025badbe677f018579e310ff6d97c2ee37d31311bafc665e4a7e873d897a717857582b44a69f7476cc3030f5ef3854f6734b4632d5fa1dbbe629a67938fb0fefd26eb185b5bf6a7dd2f22526991f77d4ee4d91a61a759947f6c56c80f9e1de5f2082791e23e49ab76568968445a0aa041b70f4682c1967e3859203cc127628512ac7881154e5678026490802c120044025cf0be9f36353d9028fe646aaed3c604ce0c96f6766db535993923f2fe8eb76ac3f231e9e157c1a48a20ddedc5b8f08cc1604b1301532060a93d7b455bb38d5fcba3cd930a2fbadbb3e18f0aee001738801007703100180670320090345a05d0a2000128c0ab550097ef73b19cddb711f987739cfefabe3afdb5e41ed3d11714e43a72d8e30984dfe59ebdd65dfe7d0ecb75ca5e29e6e1f0831a8b9a0c3d6525a622cd65f8749275924af3fe146b747b219d24cdff4e1e4b538c61e4de140d98c2487b79deaf3f53b8bab1146a74b7274516194b91448a94b63e64a88ffc04e8a2bb6370a61ed6e93a2200015cedd5f2b5368f228a29a2f811454a7bcf346faf9b289bd91af9a44d4990bc8e207128cce8f6e80f14587477e757420a1f88f0ef33dd09622a148a47e1877422cd3bf4c419dd1e7ea2c98f16133de1edc418ddedd5969c70e2b913d79d209d60794ed6f0849c94e17db9843af9a2db7342b693d75769d167b3e2006030002406e0eaf666a6631e5f6db594c65cdb84129ab0c2c3b44a99c2fffac35213b5eef69a0832fe68959ac8c1c418ed5d3b6dd5d21f26b2f09820bd5b67101341babbc91a4dcce8ee6c8d9a3ca0bdd07d624e73c4b3bfa48f8f0ff844907c6c6e4a9f586c2ceb123b28818396122a50e22a41c313159eb478129204165a495821890d24218124909298010914642472e86e8c699ed8b3ad35db8cba58ce48f16b3e7ab6b586ef938e2b0dab05aad4e64eb3e8f3a6cc574b6bf7ad63779ae3e73fde03768facd803961f7fb5975d8ba7cdb375c41547a41831052398d032628ceeffdb447218cc8dc8dd5e8cab080e14f1805611498ac0c164064c04c0648749caed03377ba3710a7ff689e27c7ddff4199117f333ea4af2fa91666c63feb1cb67df64477f7df56a8c0b069b753ae1d880608ba2657bb2b9fa5667cc77c4f51da943bcb05a59696f95d22164e961f8d3f4a449a809555aa055d2d2d5ca47c84fdafb24cfcae68ffe7d78de88bc0f06a30f963371624ffcac7b361e9e5e0decef1cbf8ccbf093653af360b5a0e3bfa58b622bbfba3b631be02fbaddc3578dcb010adc06b42e15d75e1a96ac600917dd1d8a47b637727f392ca6c675147313adcb6f628e91f924d712153204248d3422672059ec09ac53cb1ab1ddb80c1d4f71d298dbacf8b259198bc57cffb749badcda96f03b909087b6e8fb6e200cb6f4512cfbbc4c1dbfec4bb2ace1566d6a55598d19d7f8c279cbd4a912f9ac12b98c67ebe82362a1250e610643dd12a368894c44afc54404cfd23beb83d8459132f9d732568a51721db997e4fb57f2be5a24cf9acd4efc7f6718bf633a8e7e4bdb627aeaf63091122828d1404b094d490e33b740d552972f1115110981c17006679e608c916b66797c9fbf1035d2a22cb51dd498a8c9d08e402b00ed070d8659099c6633b394f7c222699f749b3d2c7ae1574b96ee61a66b5fd6a3c7836e6bb6b19616749a2f0bab95c562958e9ff7f01cb7fefe1116421c844d3c5ab615f46e6969538ceb652f4c6bf9c7c31c4035babd241f0c3613a79237c32f4e50096402ee904941b685cc4896639ee1e16a6f39b33997f6869f698e459eece21f877db696c59f7973690269cd9dd9ad4f039ff87d3cdd3def90c360d81ab98c37c1256fdeaf8f1dc6bb899f69a5335b631a883d892169c57810a146b797e92bf3a833c86158c6bbc9dc6584bc6284b88edca72711c1022296b488f0f6aeb535dbf4173dcf243048ca40920592245a489c90d820e171840aad23601c61c01120ad21ac30440686880d5183f7f76b8e6d88a94de6c9f9b5a689e4eec5b89ae89d797a0cad52578c91ebc861a14c8ccb8d3c1cfe741de509bacc8cfaab4ed047ed56e737efe36bbfd8e732debc2f5abf4da49610196809c184109f4883bc2021781829c22bf49b985f89b4d6883c8ad5fb4cb85c426be9b73a87dcfba6594b72c4a763a65ad640ffbe1c3e7f7c7ff64299d692c66d26470bbe6e32cfb36681bc9f77e83e12f6e67dcf96c9f2ca66ecfd26d68f566ab3a2d2f73d4996fedf772d8dceea57cbe4873119f7f1cf7b8fc83d99f7799fbf3ea70ff1ec2f12ec7b81d40271ef56a9917bd73ea972c28bf97a38cda2cfe54e73fc7a5c0be473f94cbe333f2e693c1a6fa7893631cd4cd7daf2571cd6af2d615aa5e1e7338a717d1716459f33c967fb0a83dda7cd3a8bbe2360bd61af144f199d640d2c47b7d95a9d24760fd74962f7e69df75f5f12f711a355fab1239fc3bc795fe65e3b2b63c612bc140caf7d707e17d350ccf5c1fb24add2fbb6886646e4dd328ffa4d7768de57723b43636a596df6fb6c8d5cee51997ff791c2bff67b9ce4c317cf3bf41d719bfd4e918e148b41fe7ecbe4f899477da24c1d13b95799c452e6363bd374f7be24f30ebd5cc6e71d3af2cdfb31f8e77dff822c210d09c584483a5a52220af279493efc1db9ef857f1367586728da5aedda4cb192cdd65ef37e9ef76f7526f960b0233e69130d7f1ca9877fabf326663c85b8777fbc7606837d5ee9b47f6d917be41c73a5a1c7b8bc1817be3d130cf651911c5db4bdcc5fbfbdb2adf7d257cc7fb7678ae1afe9d2c7f356a230c9f71df10f2d484e6bf3db8fb3faebd2fc18536a9590365bc333c7bc6cd63a6daedb03e145dcb3b34a5f3c267c97adfefa6888f0b497ced1ca1cbfbc78f84c737ecdf8f3f55bda59759bcbc559f307eb7d12cff7bf3c6ee013f1e9984726722f7c269032f94d9451f0da99177eb5a0bb87739d2415e787345ba36c8d2e9d48b85a20226b04c42ecd3b3b2a97d03a24ac3f4ad91ae13a49a54a34817038814491d6828cb0cd0ab17629287f51b64620a06dd1f3424f4aa5ce5386f33c69f104c1d4fd15bebff3b476d4b07d6ded90d1daa1a2b593c4ce929d0fbfb025ab7bd8dac1a17386cd56afd7bea890fbd912f9bcc286881029190d011912f298f09d4f92f34767096fde579af71fc3ba5bd52d9d1b58dd7da35b3aa8560e1a315ebd52dfe1b39c31f29d39870a5aa5301c2534761c25704a9c1127c459721e5c9c96bc65faf279df1d0c0338400d4fd2dd3b74734568dda0416b1efea6f922386995faf80be74a2dd2bc43f3be0f1ee2f383a996b5a021b44a99402bd6d2a796c917ba05b9b1799f16be10251fa75914fe009f88d38795c63059626ce47333fee113f3037c223ee013a9e1292ad5213e3efefa4164b3b7c496741a0a629a5929bcd3f649ad9a946e6fa48e7964fa4df481a041c3a301c31ab5689e89c68811cd4c11333eccc4e091c05b800744260d9905b4646a0d7be14add8588dc698ccf3a7f74611e2e44e42f53bad5570e5e1f784dd17a2dbdbc1d92d0dac103ad1d9ae8ee1fbab5430f3ba0c0429990cb7cf8f64064a737fafcf5cd8e5e9f4cc865bc18170e69ecf64c3018febc5af243cfd8823f0e0b1a2df8b2fcd8fbf0ed99be18ecba3d9392777ba61dfcfb98e617abf6bbf96935f0cec77ebbb35219259fe99b3c7c7b26cce31fe322e197b4e6d71211f9b146b70722c4b707c21a5923140f2439dd2eae9b563d99dbcdf8c13addbfa37577b3ee4ee9bebb0bbb3bf0e9cdb36e76775f7717ebee88e8160f9a168f1cba24dd1d9294ee8e7477eb70467b31aed7c18a16226ae9707fea33b12d1d7c071addad1d5dcc60bae3c9d6da11d4dd9e38c1bfb34ea70f6b2b8723ad1c6064e8560e2b2d9812b4600e00f343e6ef6cf68ee98b14ad17f1e5a7f5a2434b47192d1d64e870ea0652a94cb575327114b45c097fe17083160e5f74f75f202ffb3babf54766ff02b9a10a39ba7543105a3740a075436ddd10a4bb635c3e53f339cc73fab04eb761da90830d396c50d550851a78d0aaa103ad1abc68d5e0a455030f0d41a0010c1a064043d10c6bf4677a8bc4bc3091c370383fc965dc1d0624e4323ea4a61c3fc7998e435ef8d7e297cd33eab0ef73190f53d2cac05cc68b91f9eb8a656b93f02d6523ade2d7328fea39fdb53fd91a656bf4784825cad628d7af73bc8fe4020b5a33c8b4645842b717137e13155b3270a02503e9c57c13155d2d1978da62b7b895e309b5fce3e3e3af1a9edd0d43b772d4b472742b060b74f7906ec560a41543aa0583055a301c81a16bbd5081a36ebd80a4bd6cedf59bcceb91574551acd1a88743b77d8d8519bfecb36efb8aadad81f565b44a69b429bacd86fe795ea7a1a1a9718fe6bd874fbb5646f41f4bf16713d768b4e62ffbf97dafc73e697ecb3f4842463f493f74ab5b2e04a1bb7dbae5c2035a2ecc5a2ee4d0fdb5ecf7b36dc2e553779a45ee89f60b89f27d9be37cedac470fff5aa642449e1ffb8f7b3eb3fe921fbfc4e0a7201d6db5e08b7556ea725cdefcb9f7b46ab37931feca2e87e5c77e73ab64ed12cb9100e0a7301a95b9b58fcb89f44d54888fd18c853e3f8c7ee8ee1bb458485a2c1f58388daf379b37748bd53283c34877dfe0ebcde0d68d1db46e90a0db6161a54cfe8259506948ebc6ab71b5d90a0416d430a3bb3dd0868fd42e68b9e8f02d7d3e2bc9b1c4d9da24db4c12670b12ddfda568c939c2603bbad5e2eaeedb33c13e4ff17ae41c67aecd2d169e164b8ed68ad8f87a353c6bb56cad60c1f36cadf48422ad81f87a5c926ea500b597e948f17713c569c93a9d3671e99f27add2d2de6e696fce04ce9ca78a8aca8acd9f8a8aca4a7df12b152bd10d9cb41782c387c5624647444a49434462433ffc241d2d29c56230180c5b115fcfe6020eaf164a180ec3338847b7506e2389dff44248bb34bb9febe3ebd12a9d21cb0f47d06966fcf87ab7da6c285a0bd6cf7f63b3d88de5c7b1fc98c95a3146abd45eeb34c707ebccd892e32471cc698eb9b4b19b2c66c198cdd670ccd6587e5ccb21b5c5be06d6b2bdcf64c670cc8a6568c7d8ec36c56e53749a638c1ccb58cc698e953e138ab18d91b1b1ac31a739c6c83146ab54cc3946ab34dba6d8ac89bc81b85af0268be5c759b8c9824d16726481d5b1fbb11987853f834b91bca5bfb0a083ee6b6323e854696c049d60b01174c2c263c18798381df67f4b32762d1b66b4771333c886153364c3a9bb9b0d24dd78feb0a1c315d2e8f6b2edeb4f18863f61f8b7440aff0a4fbac3a02bf8f0226da27782f883d4c03c2ab5c217dd4a567042ade0566079d7568106ddde4dccd5dafc12459d9ad2a7866710519c416b90d1980a59a08219546842854c051b5830850a4cc1c81452524082142820052495be5e983e2e332e9594f6e67f03ae10a8a4102af7a91e754ca1991110010000005311003040241a0c476452c990400c3b0014000372c86a9e4e1ae9599663c8206308190000001000000048030082b2f47087b4bd89ebb33cc7def06c504ea3dd54b5ab45ac63beafddca25cbfbe111c6d4aede981b4879e50c396c219e771fd642fd1c3691ec5854f7ef0e61c0d416fd96014be8fa00e1551ce876ff64e8840e00c77c7ad40c60d38d2520d934681129934657d8abe4b2f65d1fc3e1089b932bddb1cfdc202501d58d88f1124b01db558b6323537e064c6b392f58db2c4f56355eb73d6cc52a648a12dfd9b6331b31b2d99152b6b1f1989db54ca20c386e48a3a3fbfcba7cba2b395626b8f9ced23125081d7b7227a724c733518e8b844ce36626a3ab1bf44f3c26d954a50b81e2e9544352d5ae0adc79b0eed2db85dd158430e415d9d249dbeb24493bb321b287ad4cb504b7eedcbaf77954f2e103bd6d9d4b04db5a3206a15a203bd9fa98cf35c33f6312468526fda44fe94a4f7dd6e18cd80f3459d447294b4f3a6a1cef421fcf44df9839c97d1b40e6f324fb153d6351aa129ab733831405b3dbb940bd24d0a10cf7018b8fabca952dcd1fda4a53f2532964507ee2782983e2d2cba49aeb7c09916e73f9752bcf154ecc38dbb5024f3cf3e5232ee7a0f31e91f6f528b908ab4ea4778028a51ea617bebb571111f23e2e37204522e6b8b4f7f47408651b49ca4f1e2e5b24a489b056e5980f065161e973aae6ca8de3c339fc0779c22834c968d9d296ac9be4d3ecbc464fe986305e5fe5a77a9cc83ffe882bf3522d15dd9cd324b2bcc4d8f4cd26d65a52bf7f881fd4c910c16840b4611999a0b9c0b1b0c93dcae5e6655076f5b5b201ca42f16b1beee495d595864f240fe164aaae6973fd6986c34a3a21e70e549b1dced8c89a88c104c7d9405c5428d7f194ffadc96435cbb2c7df05cbd2b6340c25d51434893b552840aa64ae353364ddf278b9b8149f450b06bc72b09a31435c8a0aec6f0aef58fb51c230333a2e7ae71ec7acd31f245c73ae1c070b769ceb71fe3e799e07ec1ea9beeef73a5edb6bbd3997ad105ce5e70d196fdf99dbc2b726692eb30d057d91f80accc783ad6accd2ddc1af44ddc91aed220b5736f924ba197502452f2fd78b2970c84bb0139ebb96bbc9d71595a8a15adae6bc28516e7217aa234923b5b36f4f85fbef5750d006580bf08f3f5b00842504f4d56d9334ab5ff39dfdf0996e9cfa1a56d265f7b24c3999f91e59b59e9ea3b79b074c8910f3c2fcaba558cfc5a9a8957bc86c0cd66d5dcf4fb5eae34761088656dee857576c15c97f8383a5debcbfb8a71409d306438f25553028b8d309325242029e358bbbe5fb760787c8d2f6deab3b02142d1c8db9acec8c42d015f1b6cacf418af296cd2bc55fba9ab251211c451cf8f5c59c4f4294915baed5903a0113a043950799ebe2e594c73dc421f082c08189313942f11d2ce37515210f62fb067099b454b7791327d1887e0104faf2476742a5d439a6fd32248d2b48a0ca6181de9991cc9ffbb0b52a365ceae6b7dd3f6f8b497af309c1654db50030c9df683b9beefd80be19622bd487d4eccdca3f4fb8bdf96398054891cb398179f94b6022a38883ec1ceccaee85088cbfc1fbd9268fe6d55727a8721b5ca3b906e7951ea202f9aae05eca8b3173c04b45ad24c2877756fb13bdfcddc9ecbe83a2d16a7562b4668c560e313a9b3040e0178154f77de8c882523bfa747e8f240b19f6c3d48fce2d1df074f8c4594e28a2ece9cecbe00aac164ecc1e3686c837169018dec24ca6406c642351f20f0f4c626ab1596841a59e07ba28a59563ebd84354b881e3c425d2b65dd9106b34dab59101719b1b88a18c01b7fdc6d9a1af5e6fa535e258b53da3d4d0ef1c6bfa41d0dce89fa9ae2fe28da5686d2ffe8199ae01ca66b000865b5b0e0c5290963422da09066fafc3e376d268777117c977f9bb95e54c110e4f5d79f4b8f192df154e4278792ede71f8c667ace6191cab74f80d708cd019f13b72d9d1cd9f8524390850057448e0bb133636f43c7d617e26a64559d40516f0f61e12d489bbcdd8abfb10eedd0e07f382d98c5a41c50bf9d0d5fe068b01ec21092cf3951f3e6fa76528493a4056fb7f92cb0331515dc5670cde393f4087cb824236bce722f9e9ef519c923868929b156374d43ed129a73380f7e73499cc69034b6a993bf0ecbb021812bb48bd47cf233e9e681a8b5462bb9b8d4d9f6a39616f916a00d769556ec80c6378b40712aae4c430948becdc62becc4df6392cbacb5c85a588815566f0a7c2f09a65a042bb2662c03f60e3b3122261dcfd7ccbd09c3713aea6fd0bf616e13e504a93beea44ba5ddde77a9c2dd2d3390266687d7199fb981825e8e30a07e0d006e95b75cb35eb6f2c11da0cac062d2c656265a4b8a979002e53563d2f48b8dc41a701b0582e69802834a6b8792480880d9f699caf0f41e9e63e3aab58716720ffb67bc2acc075144db9f33a9b8267729e3f76f0532341c664c8804264192bc47947003508f16cd08330d692ae680e407e251706327f1c5c504639a0326d5ac799a7b2fc59aeb3aca5fc2c63ce12b351754cc0663bfda76afc5e80b02c852b8ea7e8957fbfbfd1f6138db9df7825b5064e39ef3721f58544679bb0bc6f161fa307ae50c405f1f40d252fa0791e9b617bf0cbccfb0aa92a9a268af8edf35f02f6f3ad522f1ba8e9693556dd80e32ed57f1a01540853481688613cf02b08bcec17d15a9a107f1beaf98911cc58d2d95d31dbd7cf18c465ea81154a3d6d8ae92aab0baa7b32e3483a5d9b669821ce763d88df17998a6a6a9a65bcab5742dfaed4fdd2fd30913c901a06f0bd24acf96f90de1702aca96b39943d2bca5b069f59ff5722d7de1d223c3b7b7640a4d74937c88b8e704733c7355d66642600c63c88be1a29061c60eaa01ccda41daf09fa9caa5bf802a253fd85678d60b614ef57857de594f42526e4604d60c7080f04445dddb3b4773b239d9cb55478d95db3d712e2d6e0e5ac88a8a440a051fc1f83e82f7d4e5ddce1f9991e3438d331f0f967566536f616a735ae5dab7db9c08d3ec3e5ece56e63527b40ce8306f50e700e416426c1c7e9f2be05be5986ed9afac87dc7dc97a2cbcff2ba75a4ad5534525c282118a29d7b5eb1813bedff84951e904ce7143807d945298066f52997c2860d7929336492e9fc66b47c19556b27b91e9b63bf7a70b29d05a4562766f2ee62a58728f4a19c0275599d52dcd632c7afe33ee91c12d0c8c9d3de3059457abdd1bf04f88c80bdb7187c503da77d6058ed6fc1dacfaa30a16176a633e0d3356645877af126f76c99e8d754a008542888a0756fbf38a0e7b5346ea45e73c9d624f8b6ba384f7359c2f2990f31f392600e8b198899e955c92ff0cd935bd2b03faa839dc0598890dacd1317dcbf3bd7f25c0277f6effc2c24e1d2c56315f37a2e602ae33c8f81fa0fc0fc48e3269f385177c2b6f7acac077a3c91550e578681def4971ce12f116ff5a5b951f5a1c16f00cf16fe1e538f8c7c682df4462aa66a7790a229ee196409f408ba2a84d969b5d6cca72924bc42f02b1bd4aeb7af8392c312c7523b1a9716b4727a410fb019ac521220974a12ec9ae83d7776119a0f233abacbee50174de74bea127560bd0d3a2f0f61c10000a15591cbfa33a8a0583ad83cec1932a022441499ee1782753500ead7a3f78ae712944d3a35a5311af6cb921c04960f60aeb08f13d10caa547247e566e48f8221c0afe4f56bf390f7fd746b34301a6737d3cf578fd4c08cfc7d4bf5375c34e773968fff5fba8280bc2232654c39192cbda19bba1a63290b17f2ce0926471dab400c1989cc4eabeab0fe034424473d735caef11d9b51c2cdc2bdc4b32bda911425b5b7e58000af1a8046f3ee31788798672a55ee5b74f1fa991663fe13364b817e6071184bee6c8648ecee4c17681613026d7ddcfe1612326b28922ea5d69f47b522d0a0265945f23ce45a94fec82206b81560c709b7cf5f905dff1992831a5971a53fa600512aaef18780f69a8c819aeb89ec57ccceb8039afd4ea7da46d40eab4e48393757f1130e3e3b9cdcf9a60501db05165fc5aa339bb9073f536be12f3df794143e78455781e3cd020eee011c8f35fd0be330a9c4d852feb0d39233f12f0e9fdf1af3983bb411bbb441e7849490afd9b2e9cc49c36346309200d9ce20a295e30f9efbd2e67b901112f6b8bd0fa81004e1da0097dd8904bd61d09755470afef1fa8406c440e6963730ed91dd6e01030e72c8887a9a4cce988b90c0956b876ee9783594fd9b90dc3425e73c06012cf2d84960911f2e5e5b005f45b32f743379dccf4d79b3bec861de8d0219024e2e5d4e04acf0230c57924d9178e6aeaf11df18f4fa8f5cbddf1ca3e38994b47816dcdad9597c3e9f86dd4ad24e831d9c7edd07eb3ea3745d9221e8524cf83cfd6f73e40e33619b29e2e44f00ffe7f2e75d2ea39c63e44784d450c2f5afad61bd53293f9d65a9554206ab2bd309ca852769fe91fea6d06ca6433be7f6188ce4354c7c9fef743eba0b9326bd71c4f37a0adbb2667902e1a150c7e2d42739512e03c4e9f76901498eff6a9c462dad79875a2390bab54a28caf0c3e102423fc0579dd3528534d272f3dd21a2477bf0c980e3568593e4461141ecbde19f79f7ee128485b159a4d5a6f5102a565c7379d7b001e33a5893e2cff9c3d531323c47ebaaee0a59a47f883ef6c98193601d7281a50db0dca0f5d4131f4ef1d271e2eda599ad6e9b274878a5493f9fe168262f0c53e87852667380a061db6a621c374b1ad6e346cd7497264219ec152056c714a12e3136d966341bce72e49344fb91fa903a66df5c26f4e14c9c030b09d9c2b935da54c9e3e9e948e3e23e894a1dbd42de3a349e300d6260db298a013e9bcc8cb332992727f0c5fe0400bc84cb4b64b387ea637501cf6ebf22cabb08a0c5577a767c0809823acc4641b66a9e30b5d70bc5719e1dbed50b86f08db1e4238090187fcbeafe279af2caa095c63babb5ab24eaf8345c289daba7cfd7347f36d28d9701b6fedb8077432cde8a7e6d715a20a7b9f7179aab62cb53749bce49482344ce552b74463ecb256cba906500c130c6d56db7dfe404a852621f64fc0e76de1bc0fabd24e3386b8f7fe53e251332998018ee36b6cc0cf3b6a3c1b068039984792cb93c209ed0214e03a3ca003e1b53f7f12f0cb909314b09184bb17d1607afb5142a1b01ddb2547177ed76e0fdc33cc060e6001ec1202c713949ced47dd2203ce9357e5fb02f39b23301c6352658ae505f78cf9d73befc20ccde09c578445c4b2b6ef4f81bb3cc129886404af5995806b069e333719f0248fd79438ccc02c3ae5c4b4eec99c7790416efc8234b36e7010f72a2ba8ed843f87069696e0dd69d5aa5db39a299883c1b7548f6309ec2667f0fc390e73b41141082635c2550a205c27bc89837c6af33d787744ede3abde3b0ed2c6196fdad9feb3fbf94fe11147abef49d35c2602b2b52f191fa9bc2ff5aa609be714211c20440db6750bc7410aeb1973891ad5eccad82a9190907a0c01ab76a85dfad4339b2d8a85fb10c87ba1880c50cf9e02724d43eb01413b4588620b2ad9af8b066736669057aabb9b645860ad12c5be7ac97bb6315fc9d7cea3cdf4aa65a2374da2e27b68f01dc3970d29a3aaee94dbd0f893390155e3acc638edd64eb9e7bb60d92cc48f8cd41c9810890f84859ff519e6f305ddfc73d0308400f49daac35e352b1057665f9a2fa007fb555028d75518c78fe2b3eac0b8b492c722a3e4d38af20c63d2885ba1013eb3cb4f1bc0e8a3fedea8188672a57ef1d1fad605845053d68a3342fff2075c6a6928a17dcd553154c842394f3cc6f898db42857e7319b1c9004f00609e437f7d79847abb065929b69b495a80d1b280752eed17555c7d997cbb8f054a11d8309636df12a0b0d4442efc8a489d1707e561b68ba72c20f04efd1f65c67ff275afa9547964617e17d04303f1280bfcc2af311dad886f12ab2a009a4f95414a9a52bcec2aa447f3ec611e83c146990f34ea11d4f4d67ea295751e37e8ba82dea7721de7e80c0d7d3a45b38b69538a7b04fc82cbafda6457383a250723f83e37eb6509a5786ccc54b0d01a71a1889149338fbd42259e84ff06f99e36dc1a61094a989ebad9fd54e5f38f520a6e8dcfbf02a788e8910794aad1717b2654585ed43a0781ad251b74858e0729ee11ab96a20ecc7c613a5664a402dce0dbe24c62120da6ff3d71650abcdf91b1d95b47cc3514c159e8572eb5cbfa00ba5dae2353fe168c439957e7f306871756fe510b62eec8ca0c270e736d80c5cd10862495297e265d6e31e92c5e8b6aa2c3b0ae47aeb60ed5ec5647ac0f87be3c71f0988114ffd628982859aa4565a619d9544174cc988cdb26e5a8b96deb4701cdd955996290d9af6bbc6172f8bf7721a8c7f4dba8255e4a8c9a900058823ac53f30ab81383fb66fde6a10ea13b3ca5b0d6f86619f47df4520e9ac1bc81414431f94dff2ff57231a51016da844be762ca14d0bc414dfe9cfea277fa53f40999853ed9ca63402e5b6273debf24dc958f1bcadecfbbf1470831e1bd5a2c4b39b2439bddb3829152b50cb7bffb201312b216444bc7717bac2eb32936a202b9ff3b6ccc2887046291f0ce40c5df2fb21f0ad0b9cade93d189eacb9bd35e86079f07049b004d68e4e18ac45a4296843e120b22642e4fd27eb075c00c78e5648e6820b2792d5470f1a4099c676e0c4af0b4ac89a7015dfbbfa1ba2bf6735a4ea1a7c99e1bc6f543d2b67c0d604977ce8d9c59fb9b3ebf7a0db37c5deaf395ae3f6668f6de131f7bdd10148bf904498a6bec2c97468974064af86464b2f15ff958e717489483c61aabf90fb38435ef98b5698be2bfd0ecff505e0b1f35ba7746677a757133a78f47adbf6807ef157dd37b3ac2dfb92a341f7e3936e0b93e180f32516a6b697251c4b5fbf4e1be9a094761b0bd39131f9d2a4179d2c74d46ba12e1beef1eaab849c7a665d22e1ca27981aa2bb4c4ed2a02258515025cc65de01f9096d174f132d9868d279d55566293c69151735d330e23d98ca0b0cd2defdc3d436df74cdebba780a875df6d7d99cd7ba636420238d82abf428d08fb66ec9b73e39c8d4f00741483c140b826e6f2572e7e490e318dc853a13b8492acc426e74f55028ec577f3b5f822f917a1efe851c71be2a745320d4ff747f60b024e59900e115da0ee9d7b5e07cf0723d2010f4fcdaf639f9ef43cab487c4e092a6dcc623cb6577c75de1972ebd47c8ca67c725ff8605ec2bea70ce596b65a28062564c1a222c3e8e0c5066e90724e79fa77a3e33488b88ef6b091651228edb0d5cbc80896d3166358475cc1d7f475f143caf183228829ff734b63ecf95fd1a55c895b9a181e39156376b221be294744a028450a6d7784b73041b94f7b75e0f7726ebbfdd98322c424e3814619461901f8372ea9848a508952d866f5b022cb0d49d1944ddea07ab965e21616600b3c4d66b53b54125ba0bb2d495424c9616a025527a72e2baa00106653449026782184bbbbc95cc63e83383144e883ba996db591b01012bc8031667dffaa18c5bef4a7a8d4a4633a2c75b2296b8167c4a702f4d1f6e319972b4ba2b1af99abe9904c8f62a02a1b85be73459a64e5dd37c7bd40e79081c063df8860a5fae491406e3fa9bccd10f0e6ac633513910433ca457cb0af70e7c3f9aa5e8ec947809cff0c0583ebb7fe8df81fe8c46f7d34f410beba8de78c34268cc40297fba478b41b17b722660f76e72adccc0dbb93f4da577b7b7cc05f0e2e9273e0d84d2e2c7e347b564b690092cf4860786b827558ba1280702b116465f1b21383b02200ce44e09edd0f824a36a2e553e1d22db96fd5082a281398c00467b4be72996eb2497c8d89227b0de585f1c3880d174b59f6b5ebff988fb2d9df3a9be68e81e2335af746790fdc757990fe2586fe9ce8baa56b34ccfccc69f90ea8336aa1408dd4db61c23f74050a711caa726023ed722476f98773ef46a8463cec101d80d31d0dc3bd176563f4fec442f7d8f4eb67a5fe31581926ed28e17f97f2bdc1e1e90956b5a8a77bc38a9c019d5b092c931f294446b87a95a85e75027dac2724133a0c6922b59592e334e35ca4ef7d27fde0a7fbd6cf051e0e125d469384e5d35f6160cc47fd1c75e1f903e6f9e2740cefed464beb410878b0d13b0512e0b7a67411c45c847805a5cd6dc783a08d9189dd4d5843622a49e32895a42a0aca58012aab50e9d96d256d8b50053045eb8aeba3a04729933dec944713fa39063327ea227c9e3adbffededae7ff5a8060ed40190b9b57c4fc14d23141e011ce07837d57100487a9064bacef5106ff6ec7f7c55596f5635570bc2ca762e47537c609074207d0647515df113118d03865e0dc3f999f480ebb71282d85238e07311b7c249a5360feeac71109345b10a54ac4f3b358958693effbed4d88e7ec49f6d3c1c3955b9a77c42eadf98e76665227ae0afb5fe2be64fbef1678b447c4cce28346f60d84f0d5f77581c3ce82efedf8e5ee0cb7f90e3e3f6f91d7f8ccbba87566aed0d019e1d9960bf8a9aa4e741e3d9510b15112f0e9b3abcfbd9365b9efc1aa97b05ed8d95dc2fee7fe7e9dcb9c3f9c4e4c73b12fa61ba9f506ae3b05c66c9549c7fe777f7fa832be0063d48acdc8db091c9b1bd6e2e69c386bc5602bca95b080a51c9d50528efd31425b918285a643c3d787eb8a0e610ccf41c00823c9dc7c08d95766ee313c57c4d5c48fa98dbc5424e3bf5e869c3ee1b3252bdca7ff4fb25150bbf56fa79cc2e51d4a5b57ffdb0d0738c00d48fcfe57cb707159cc9ddca66d399b5b470c56eea415691478daf6bcc919ab8521dfc623585159064af015569c064bfcac70a1eb92b8952878516250ae3cc9acb13f126c2c8cda3a3245c4dfa917b5d8030c2c5d6f8b3324fb2b96d2cd6a9ca946539492e865c189ece2a304fcd08e304638d9585f7725fafa56a30c10e1f2785730246e5f0a7f420059e00e887e6d7c01e198bffbb02e185108e34a88cd80dd09b25f93fd0b34cf88ff66234e49f8088b6d9445222a267cf552f7e5f00c79ba15328b110025de000654e4f3114880664917fc490453d80b8594af118534f6c554a9c0afab9dc6fa73571ce27b8b98ec2534bb909d4788c3e64fdbcd2f39e00d00949eae66c981e6a374c97e0ed161f6eeffb7c1e0e3c530c31c1547fde9b9047b4da38c4cfeebeab1008217026661c2fe2f88d2a3b6c3d100e9f564b54e1aead0d5bbf4766c895cf20e93a6d45e57507df5d2b006e5bc430fbe69807cb73064ce6098890ceeea1e0923a968140c6e770150319ce2de351e2acf5b2089ade22c68a836d53a234fbb4e62ad5f954619c7163c8b95ae377f5bdbbd8efde9e86e78cf433026afaa39f02a8303fd82527d5624a0267cf81105f3314c6d2efd54971b526ba23961a30d0060e711917ad29ccfe9e122e82aa389703141fe6d08514235b5ff60d19f12a10539a2bf05c3156ce73772b5417dc443be7b7e383ef8b0af0207c030edbc0e4a6631898ab29813edb5c989f0e035e8980cdb061e318345e0e6cd9c7162401f7500524aaa00d233468c7ae72484a34e35b4f33e7d09ae1e1d82cdd07c40e1ccc1fa63214d90850de84c474dec41ac9ef1cf8bb43fca7786d507b16d5128346ba894161349a9e599b10c17d6e3a1c0a0f2286375aff0b5cf2cf4743a10dca5c805233f06a27a1ded627c52e546a553f5808f5c81db8494eb761c149d662c3547f38eba33eecba9d2d82b18678dec044ef8b185f630c2345fe618ce38dbe14613c59561217057a68d18c91da7cfe3610a27770bf7641e940c1a45582bf4fca576c8e609c4d88a4314a4d8c5c6fad666b22f641b8e8a17e95483a5712c48c95a9a814afaf280b5d3bd34e488f489ea3c31795e739af41acb6c88f3b7ed4bcf4931fe726b1a0aed652d8769a5e208d2a1127ef67fd008695066aaa42ca4dcc0cd3a40f2a097e1d455ece98c23c4008f2f06981302c7c8d44ecb923911377083addb79de1d13ed20a17aa76075549781c33210aa7352890432f4f3523568fc43a2f2f27e55e58697b4bc5b47872fb9b64f82244d94fa7ae01c89cbed8c40a95fe91d3f89c3dcafe22c8623638e5da50fc7f14839f9ed6a90571bc57d8241e634c1e4b11355d634b0356d2322103b17a691a878c859926c0112ac0dc58806cc03db2a01b09f28e947c459016c49db6c203c835ffeb466ea94f497e5ff36346d2529688f0fd3f7aeb2a96b35c2995dec1cbcfd35c514c2f068386527ac0ead460211d6ee68d0cefa545b0c542d91e82189f68b1ee8b9865ea07aac5eb6cd9ced6c9694f86be3284ab0ba4c5589dbbc5e99dc163ebf6577b661b4ac732e8b76e665478da30aa5f6292e8cc6ab700268bf39948d53b171b0d6d2bd56f25f63a2a88f96ddc48a4aebf3f9fce041205354e31ca0914c6b298416ac3f59e04ac7ebb8d2ff064c63c61db4b0362a232f63f46808bf0c0ef36f77b78c4cd4f97799f11a329e1961a28d88afe2129d00b87a3381c64f106cf2f3f391f4c29ce42c0d6be8309c7a70ecabea20bb1033f3f0beb4a6714f20abc676a2c9979186bfc652303e33e4450623eb6eaf9d0a434f2f4e6260ea490f80bf05ce171155718cb5d4ee37f2a0e1d72f429ac54b1ef56025cc9633102bfda1547594b76df9cc4487002d0a06f590129243ab0c3502937f766834b5cb033a7c9a9e5a4e5dc388799fdb131bfeea15c4ca8a04ef3b754deae419d1346951cd758de0ebd350ee43485a3d8dfb236bda641bcec9b5473d946d1df1e26378fad0eaf3d97574f50437bd10f0ecaf649323a0f3f123ce51a4a724245d59ab2a90cd2f1230370372ba20d08745ad70abf6d2bec86ce4c8f3212564eb0748e3127852f2cca1925fe54f710d4b57ad9ce6fb1bd813c8499db9cd4819e999069ea088ef0cb4850027ac1d13b3845826c317d5cefdc0ce010f9d02dbd46ce56f5c064677a3c510e8834715e778b9139cae59d7df8a6f849ab52ffac6598a27148e0f2ca79051c272672c895903e4a96456c2186e0f5fba2babbe814a75ff1788e7d75e6326206e13169d3d8ea11ea877501b1bb04c218e91510fb137b3c2da0c0de489c2be62625dd1e87c87704631316cfb349143124c8ef236c0cf7e0b239c955016cf9e32b103e45be2b6f742c1c56436c1c42f8ca6691b02cacbc14962098083ce6f01b242721abf760b4c987d3975140e2a930b30c31c38d7a6a3d1a3b7c652d4d79e4cb926894d001394208a0ca1b900f3dd858c530f639cdd410696c5806369ab560d076fdec65a2b5ddc3f08af04902fb9c2f37d98eb9819e98e4a494f21a5689b1e4ad0c480fdd882fe65f064e43ab0a1f7e24c2ad1a597593af3af8f6188ff615288da89c36ce82bef9a9b3897c4e3930cbc1d7a5c677bd6d3c1c965c5b9bc2ddf28063a26241d0fb14ff6dc81b42221e9afa41629e7bffc8a754f34dc50f29dd8579bf967dd84ae750538c3c9573d9db866f725425509a928e9678de0b796fb6976515fac21fca6acb2a919f665d011bb422816636b77caeb3e86df729219fda32a30082266a13d326af7aa792d8d20731ad8519c719555ab7612219dc209fb670269f36123b01c75d0240bb266537030058145bb5159ead308cee68440e69c52872e4d2df8d6f070089d7c6ab3cad6c39cf0a67b26b855d1d9866fd8891dfe4b9059bbc264368628c5b73ec9e9e2fa3cddb40960a5ff96fae29be0b2da955abfe45c7608f1bb028a6fe632787164831080f107554d651362628d1556913917a30d649956e03ccda2f953a7e3b36042cd8bf8ad427cd93e534a70aad7eb9b94b16d9ad6d1ed4d2e5112642e8beff61b93db30b8f7d7c85fcc29b69fca4a5cdfe49ff8e168219dc2e748ca93d63d527f83a32cbb77715c21e83da54887e937e6005b15f57e669c047934d2ab59781545fdb501be50a52aaa825331381fe2c83929359202a56c894792f3143bd7c582cc1dc6b4243fca7324c94718431bad683570f1d1b0a51a30dde001432117bbe564c8217bcf8816f980c1919b372235d18a20b115afb4d220c3df21618a0a0800ec7d6eb04b1cd6c64c1e524bb9fe828b480379924be61132d0ac90ab269590ae1cb6c4b59ce86e8dd1261ac8c13b7c82c49c1e77df2d12b5cf1998f9da5b56c7d1a80357b89e972abc4f892548f55d068749b5212c102465c409a8455149d5a652771546b8a0f03ad15b402922a12af00d51a365fc70b564e7328c60482684d6bb0ae7ace81b1bf6a814e0d7dc96edd3b3a2d458a4572b12968700ae5a06bb003502cce8d5963c98896fcd0ff4db1ea7eddef64d6be804b03114fde337f34445989729a4dbbb883d0cf0a53130ac2c961539ec53ca6428975c159c9cfd4df14392c888ff2e1174ff41ed1166873808f6c3e384f817928540c51b78c2ce4c1bbeaa674554a3d3804537100d48f30146c3463cc9bc9d65d2169b7555a8c1ed4c4b1ccb6e00eea1715fe7992b94182c0dfda67e1192de11f400f415ec4fc4ca045b355de5b704291de36d36baf176d8f8a2f15526c57eb8a22932f1e272455bc928d52ed355cb0323ee5668c0a06c958891e3834e255a6a9aaad671d75514d1387be5d30de5db12fc54abd78d28a01c3541bf0f04c917bd03530fd794e223ed37b26d78be50fb83bf2b9bed9c883e72390abdb0b14b738f32ef9dec401b0fe68546f7a22267fd7928da9aed161a7c9db420d63d2e34e7fc983595a5dec98a96836579e4169aff5081f4b98d21a2ebc2952447048159c0b6ce8b4886cb4610ed0615a174dc68c11989a519c1ab7d91cd2dc4d93103040ff0979508c98c8c2814cc3a0b81126d5a6cad33134855a7b4388e0caba9daffaf1eac9b741dd4653bb4251c8046cd87d18530bca5054b84e586f8d1eb2af4b0dbbd755c9f6804c46db75897e6718e6350591498920cd33261c15d29d62bb7423f72a9740d14b6615949bc4e19a232c0a296eb52690c88a0906419b6e7e4817c97e8f3aab9593ec4ae3c17744cf238b8411b39eeaff527c18d5b03968c50f5e3ad76cc8cfce87c3a19140ab35770e0511d22b3800c70448a3048c4e1ac91505248751a6f3e223f2fb15ed5a063f634d37c1a0a693d121e8a7c91f28c3b3ceccb4018e20de124397c2505e2391032971f485a1fd7841bba802dcebfce85e23cab9c273de335352ae596d37f53014d2b3f53c024d1ad11653d8910658747e82db6c04871f371aaada874834937df5a277013731389df26ff64fc4a2e5d62edcc213394d50fd717f67bb0d4601973ce9962bd5b927c2e68032ea570cf22da9988680373a72201ff13d1f0e472ef3fe10f74cfdd118326e8f745dc27d28d9d7618551e6350dd79a1e6c555c9a52ec365179ff52e60a6a452bedac97da303ceb9111796cebbdefddbbbbc20f57388cb33370d7fd8e338e5cc50b10b58e3cb558a5c506aebcabec58996b9c1759893ba0b7d60dc8fd62b725a07c6c2fbc1b561fd91e1c924da017364981665f4b6ade737df8c6213573105706147a4d1a33425b20c39e5f4d0415e82a0f327a99fd78716a83ffd1dd9fcd73d4c2f453c118472291209a6555e5a5862233ff3b8f71c5582631e7573d54e935487dcebfe36c1283de4f1b7fbe438825b4f20dd3dc432e7165077a570a5713de31c8d9bf52cb8d27bfdad9df6a14a6e8d99ad337e4eae88f475d72e8630b4ff6098a54b00d0a0c693728a7a94db27fea4cbef0d5fca480412ed448025b9c6d5ba9cda650a5a8e8a95c4418acbb77a7ab01e690b82a00b49005bcb8a89aba9e6fad78210d4fd51d970c4720d4412f26dec8bacd53fbb10f750f90637368c0e637580465f79867a64ba20aae20032545090d3e6b3b0656a7d11c54754b7d653070a1a2e808ea5a8034ac0f337bba76e7711b413d52a35a834050d69b0c5aeb902cf40c5452cf10d91b40ebb4037d6487a613a680663d100af58998d24c86f36dd3d01d90979304a8343b0a662b1ce397284e8e353f8fdacb531c23e1f78efc75f22c2ce0d7c4f10a6a58e46c6f2b55dd0c39f5080cc2ccb61674f37e2c188bd6d1efa2d09845bd7deab052c146afd5ec2cd4e93be2ad1ffa62381c4913948660008c7ec2cfc03eb95c15bfa169ed9880b84fbb360ff58a0b4732834f1a3eba769ac9fc6e522f5f22c64bfc53874e434c03977b45c46f2d9ef473940f8df8f11d9aef4c37509b2123ab41c3d9ac9b73eed9f0f4d528bf28d49e6d7afacd782a5e1f67230c59642031087a679dd94432a6379699fd06d8610e3b01180870fbda89d60e64beced3b716a250ba20391ec5c26547d2537c5522b36c43b7e96cba422a0618d30f9eb2982cb00cb0a05033ff172b803c2cec3207a029125209818a3d05409841b9e566fef8039bb5e8cf6ceb3ae3e5b7297f899dd9b6aca6086df1f8dc98bae9a5f540dfd61531d2b6ad7a03566a3d23b78da6ae3c6b090411b708a40086237dfc500f3187fcbebb7b9fa2c7b2e2fae0d9b845fc44f2051ebcd2e24e0672ec6a1995c27fffdbc4b036d544c9cdb3d2b34dded8fac0feb9e80e652d474a3a5bc843ae3296802c1035754ca2efacea75fd1210595249b2c2988ff1702ae7df469b2740e5bc98949ee51c0147c798a156eb801a3464d3eb12e98edf9a08fcf7a31331883821e5309cd75d098b16c3bf06338857465518aaa9019a250118b2338c1061b1c3b663490ce75dc2ce109be8cac270bc8b0eb552ec9d0b0e3563eb7cd31076d1087eab76ba752db99ff7e8cbf9a3ed41960093dc93a4536bee27bb5704700ca2fcb5f6feff13fa5e6d2ea9e895a0877a8b7666a24c921582252dfe668128f2d3aaca2dc9be314ff29010157822210892dd6f65988055e228792ca17ccd2307e3083b72f4ae9729b83425273265669040e8c7983f667eb56999f7351975739e76075aeacbeb622978049863976438f24223184c85ecdfa305c33619a1f6c4d341fae36b152d8cccee21fab0135394ac4f58edbbb4f1c08a7701afcfde6be64deae96f95a7ebc8229f7de643b67e1553c854bdc024f13d8f85c0339797b41d837d2606ac0fd69411e24eb9cf74e43f4b174819e3f4390a6059d487373319dae0d4cc8c04a5efe1059d3f09fc7a6c571398f0dbd3678ce65e1cd73d415af9b409f4d7f844db95ac16b6ad68acafbe1ce7a96d47ac760c87d57231a4c0e9cbaa1ed9a3530f7bbbc9a9e34cb99e0fe954f4791499c66c8511dbe707c80abf28fe11060805cb5b1e794369515f23e4301bb462f7d75aaf2ab8b2f4ba1d191ff0c0ed0f5e5ae5f5b3bba2fe56c6e026ba59a3c973062ebd6dd114076a3378c62d1e3784af6a4aa33918100849f86abaf7d4abb68c1af8d7cb22ad56c31afd014015a0bfa779609b7bdb6163a159eaf9c46cfb77d492bf6faeda23ce24b9701cc0bc7ef52b8c30c4a73b96d49efe40a38537be9db30c9bbe205f1ca9d8aeb8a3b9839571f0b5ac31bb61cbb78dd7407ee69ba0684a4dcc92ad563fefebbba3bfbf72e79ac8725ae5a4e645de35448fe59bb515b492c346c7f700fc48f90527080254646bb87f88588c22fd74fce168b2ad9db707eee7e5818b083e90440083e4147fc0096b3f9c1d13519345298bf61ce3edd6083937e50dca9c7d039c8c88d366b3840c0230707222e4c3c43d3e37461a4cf9355c69ef8bc2fcaf0d3a5c9076179eda4138d8852c011d4d347cd092d7258dde81fb60a8067933afacb01c79ca194612864ed668826fc3fd2957f98f840a29ccfa82a41fafad242b43a7ed53bab5b4df4624eb65e41c210b8d6d809b6fa24dbef15e3f37325a5a0facb6ca2987a861bbf30092523d8619c407dff2c190a775fa67c074d45be781d8d534205f86d4268f52fb4d370df23fff3f8ac96334c86631ab609e12a682d370887c26e78ee842e88aa8f840651b7e791388fd5f35e6a473d6243b43e35834afb6ace1f21f99d7dec1e854c5cbc02387ce5c4bf617c483d391b8ff1c1f8d514bcffcec4a1f422a3a02620d803d67276318b058ecb1781dd360bf97d152fc21457c9b8ced6fe13f0baa2b3db062d89a68490554cb61d3c029be9bced120ff37523605e580d8c670dba06ade2a0fbbb84fc3e27fde2779a7de20c0b90bc119edb51a28de43040daa78442dc88991d0376e19935de1286847c4743ed57fe3651354942ca588c9d76c48f86a48630a69e5135a14d15fcef574a3f067fce797537d94bde6c12969b33bc394aab909a1e3176e85b6231cdb732b60ba83dfc0df92e406748015cde53e8789205fb2b604c25131f80afc277df3b14f33a8246a78e16dcbab9e5b1f64ff8abaa39ae6362f790eb434f23bfc59bdcad11baa7a5177ccf70476aee7f08c7161c722da162674df049206ad18d95de1413c37924526a98cff49f09b644446e53d57ff75cbb96517972f73e861eae746fdd1fb4b08348a7e12ab109c1d73c270d28e3b491e212447fab51ad84bbeadf55da33959774b6ae0a20c983adf0ae1910211667668aa02bb2693f82d6c5465efb7a862de80a15422121ed2d3de0e72be6aff92b46f5bb55d7bd08fe1fcfd04daf063d24e0b3d4a7838b4087a7727d4bb42726b49d8104c05250d7c251012a49cc9118e747da64f5b14a438d0e9f2a087d785d7ed5de26e25fa26156cd30c3d5bd50ed3231bbf78a6d0e69e94ad4a53d53114c822c3719c51b3d5a5fbaa6b0a2b537110f7c3cd51c98a5aa0fb28fb9cbc1b15ce71543bd2d2463e5fcf0c1dca286d2e6ed1f5cbf4a02e71a2660d82c006732d7382fffb994cd8689c5f3a0739bf5bc4135372121c75c97d7491a78341d0914a58f860b1a68c13b3bf0834265ff2ce07e94708b7bc229b9fa2daffb95bfa001f9eb16750d51277fedc3c26171b6ed4563f89efbc0d9a234f5c314eeb9d2913317ed08f74c2f170b059c48da14d9789dfce14387187537d54887feb7bf57a67d2dd8b81e113dd1aacf3e2dfb4e5bb9d5fd9dbc6c258d036faab109895a4cf2d5d4108846c27c8af79be356afdc66b4da97a48fd1e268d20438aecbcea85acb6bf253e843d37884e59eba0c0692ae2534103e5471e02627db5601e0c744e142c9c34d6ad99f4fc4e41cf67db0feb70f83822a127f96458b08e6b5644f2d63f7281b72fb58c6ffc4a309cf00686919b68e17438c3ae65ba27b9e109a9f4da430ab04c7d65e2f889a75c240a9b2df9c438535d068fff7da983e91d9d78ec1c2d40761582aae86d59b452b6fe38c5300866a245ded598b7484b9cc6eba88022e5583ff053389fa10336d08e11afe3118924bd94ff6781bde9c0c27ec6eb2c2e912a790e1f2f4a808ae2b13704b841a63d11ebc7175c4838861ef15bc7fb8f2328ef057cea2032295652fcc8223b0385c9095240612c89ad12467b64ab5eaad6577238a9fac8281d75cbeb719e994e4e11327de8280a49ca0235513abe921409c6d7f80db2ba370dc267f08a19eb5cfdafea7c45ce578385fd1db2a101b18cb11019db2b0ca7a51ecaf467ae0b44ace62b1277c78dcdd9fa036c5333529986836c30016480d84b6a2fb48cbc68dab00892f3b5abbc777e1988f311bdffb0644a7327ebaeadc1187945c87d551e8d1bf65cf65af282a26033cdd2017469688d8f6bbbf725b2b4e069a53e0bc6f3705aeb2b80ac0c03f390ae719dacda6227705702c6adf4982a8ec5b8ef3f5ad1c87119ba05d0f19e9845b8ef28b84249198b2394bc596e5641ba23742b0746cb5f59056a5181b12886024845588b1cd9ca4d215d357e0cfb0ffc30314006a71275c976dc2de7bc362bdb9af73396a0c11ab565154582ad80a96e14713f75f715e537978bc9235433d9ba95c254e60084a87c16fa86cbee9008a134bdcee8d18736fb2239b3575dbc03318a6df23cfa1807bd07d8a0fc4ba1cb7107087966b0f4394f975fd7c533d5dd3e4c2dad07c6d5a6dcc5843850586ade59ddadf27fd12f9c5e4d0366898270fc6ee82ea8f986604c0cbd6d428d13f63627124001653a972af27b8605d62b313776cb40b31e578ac517200e0fe018980d17e51609de21a197f2695e24f3583acdd791faa18ac0517d9dc6bddcd7b5a71dc6ecd8a813ce239687425ef7df955e351c3a33b2c8c164220cb8003d1bce6bb79a0151a6f8c903578c57b81515c96045f714556768f8f5d5f4bde7fc2d62258ad9a81f93996d8b7306b956fcc160d27968fce57c2f735876efd2bff8d38231926a91db23c5f8fae918ef007ce34e17fcb13d95c91e9646a0e65cbaf7e05a7da92e7c838f01070e0ab638bd58aeafa50496525722c054ce88674d5d2542246faae41c7a9e93e180e6b808eb372441007f8dae021249dac2edbb67257fab5334c14f2668dccc15deaaf1ffc5f9ba46f8ee279c54cbce88688528f6b395002bedbda3e34b7d71cb633df93d3457021a8e356fc887ea7f6b57622c2ff1d2ed2e98ee7282f08720b752c883fdea5b42fbb956327ceffce6cd73b8d5e1dacf676b35e5378d2175426dd4bf30a2f6392d64869650803d529ce4f8d67f5d5eaadae0916a971b95398fc332a129f95d22191a56f685f285fed25822bd2a7e6d96f9ff9a95665fcf74be2ad8aa31467cfdfdc4eee561a1167cebd721f87cfa41432ed02a5fc6046d1072ebc57d76245a81d9fe818f35279d4ed91fe208da753099b8bf6cf35ee9c3ef134a8332de5aea0e6b03803644870ee7cf1ee471b6c3447aac56151c9f9914a7d3ac47ae95d47961058161762d1be7fc4c81cb6322eaff0907b68ee05938f8c30fc961943c77202ee3f53a7ded60b002c24760e8c0b64a6050fdfa1b46201034288a0c4bf3307ff7260667e14f3e794eff6f7259b862c68e58d3f86dc15b13fa1101443f4e7fe5e0159545431fb6074db874d61f9b06344b531caa482c83ce2240003df651b5bb26a42f1f4ba89759a1db2633df9b39718d549fa275565f9ff500041831db6aa75335a4bcf69ff9ceb43a2ab041452a54d193a7bbf74ebf7d8e277178a4bc5a0f7a08c19e26f1b2c2ef652c27d6d5fc3c09d7fb305729630a1429af14c8ea671bde1da4924cad63a09ad2efc94231bbe127c07b1253808388af01b5f77d62c7553c5bf998f03fabd761a5009faf2590fb61471767fd691ea787c3206636bed798699b8ef791c27bfec2229806553d09e260c4e83ec4b353231c0696dafa40b0642398005fa28e81b07bc0c69ef5e94c78f4f6c02409ef05b8458afffba1759daa4182b47f72138f54225a83219006755e34fd6290e089e6a71ea7401947f9a3097a9af6e892bf9198e2a95bce1a5321f1655c9d7dbc6b9ee5cf6dbce4185feff85f5e9f81cc5c93a5c14410930a2fee0a44021ddb9c575fb221a79116d5bcaf2784f0bad4f5c383e805b20b87252ca87765ec4b00e495e6902547571e1d09f48d85ee65d54564729190021f0b34233c239a6e47a5a3a965d55c3fae0ff3e7f10644d63acb018c3e951be0397d8000194001ee5b9d379fa7f785bf9a24c1bca4068b40bf0e6140f09e9ffb486850201cadd639eb0f34a4d4f5139e1799bfbe0e73e151dc7ef3fda2b4dd817fbd0680d8f8a4474e6cf571014c7343a3fde9ec619d822c985433b1d09b8e0e6f060e3f38f9d63fe5e7e6536b3bb0bd4ceb178cfbd9709f321e93864413b8d994b830780dfeffb47cc8c9bbcd71af33f7324f9e78ab97f1a73adb7d99110bb721ae3384b6d2f996d431a47460d8623ca7c34beb9c83e7cca1a83ee209ee18edb5e21e32effd02173af77cfc8e7d3f93851c48f97c4bcad479551d580ecdfeaec3637bd52c1d627e28e196a4950bf873d3409f6a07eaf9bd8884104841afdc92d17e95cd3d413f54b0da23bca48486ea060721700c59275d2633675e24f5ffcd895bd17c45bcc545c1a77bc1cfa0f9eaa21cdbf2d7d9449447ef01c05c59386f98d94983e59601543fd3da190e77fef35deb49e24eb64303f8b902ef9c84318e69566f5f1f24ade827946f9fcc17caaebae5a62e40091c8439880a7b97c7e6780efc4b40f2396fd0d3bfeb1595812c351b5549a7b4990d72bee91e8511905ef3a72e4af144df1acf9011752ff2cd583e1bf7413e29443050b9658507a9987a6b6eaac1b27533f23aa70326417f56408c07292c267a020d3569303c86fa79b1309f7399a2b267bad06dc8346fca12dbc60691734486159a58d2158a3fd28474d08c4ddd75beb1638af2fa1a980a48cdb1c6313121917b4db10da40dce62eb5ba0c2ae9460c8abfc6a9a684e559d343f212bebe7705a493133e08fe7ebaf1514b16094379d007552c9b3362b1dc44984f6d5488518d29cb080cde2dfb5b2270c40ee79f3364ebd4f8a8992ff4464665b1b49d473adb1c41fce41e8885c248a09a7e4be556950eadd730d285016147e065ba55dbbb87665e2e8eb420c0b71210382e6f6d21b796239152766fb9a88df4e4fdbeeed914dc85087ca442501ad58372184b45b09e70d7e08a43bc4a807f022c7bfb5b5286151a5f50d2aae18d6c5843f7ca0d04554b5db435bd8ddfc91d9ed5a3e3281b0d6faaa68acf0fcc0610159a10f70823a0a5bd90763d437986b0d7141e4813968f8eb2d73c6c124addfc545076a700a71ef6db6c1868f2c6a9db48f1363a3cc12d0749f7b2678d38fa229969f2687f54bd194ccb0ffa14074f49e8620a58a83a83f902746e1fe0bac229c182f70391765e8c0f3080509c7f198b5760c986ef015dbc80f7b1f954d4ad698897dc950d7d1addc0d0dfdc013e67075a09c881761b5325705a98c7810dabdf0bc17c119645c4f9832d79598199aa51c82eed9022bc7d701ca5f820c0d019806d91cfb85e3b21b413040d533e05e413b1afa3df04015f92abfdad2bd4e79e5bb5fb641b152c92e0378b9ff4cc362fff326cbcebd0c59b7d7ecbc8277566910173bf8d4607a361a56341257ed348ab0c86dc53bc53b885f3530e09eda60a0c6be665222403b8d1fc5ee9233170ae1a781a8e0af423a2febd6ad18647eb632d7a54b939c6870cdadff77bcbe6639d329068cf3165332101e8255feb92a4e232676e4b441a5336c05773cdbb3ebdb717a3ed25967d830b3dc6b000ef2d9671362238bfae8943dd5d2dd369901dfb0b601306d2d161b3784df5466400a1bcfbfc7f81edf9348d9ea6e8d0ce2761034b703dbedad10c1901b7a2a890690bf7f28819623e1c47a2cae91e71c6198c25ca6ab5e6012438ff3c55673c74ecbc89dbb9e59790444f4156e6a77c10ffbbab7066e4e8d21cda742e4aef5eec7be182ab1283080fb5d982c119eb11de102ff9a48447e6ff044e65dcc0f220c5e9407514a90f747f82afb6d0c69c76f9cb8f73c9b754d7474f86eea3279a727453e4e5d8e3768ee30f5399c7a48c85d38d164e8e235a779a033ba45bdbef53a8a5924d0441125cbdd89d5797022dd474c0a40dd8df7259a3c684b764d4ebdfda9820d6fc4b51fc230be40d5ed44c40db8aa486539a8560291c0f2b82caba50fd386ba3f1bf18713905b0233237e3ded0efee281bb4e98ab3a83f090373c49d6c8d95c19ea42901d4d4e8ec5060dc2a5dd4de366500f7bcef80e0e3ef25bf00402847edade8cad2f1037f0f2acd94acce431abf23cfd1ee432d08009f643ab41df85fc51fd5ad6006059076df65c96b5278b970918be7d00767d6f0201de47949a06b10fc85692f8609038e6fe42f55951d22419864723b72c95526ada49146eca1539b30864c4f39e3b81817b703f6199d058004bf38a60366fa88d1f2d9e9c844060e10953ac70542908de1d30b3d6c3db34c7f8049530629c276f6f4c5a28f0ca284f8d1d900772eab1a4292019ec393dfc71054d1c150465f7dcf294e500fe2464c77739ee1f84eca7d35a00d43a6875aa348b8805f098657d576fac81bb354d232515d9652db712beaf667481bb153cd9f70a7698c3a5d11692ca194557019305ed232d14cc12f7454402c73bda3c02a9411dbc5a068e4e8f23226e30733e821f0bab08abdaddd5d707774b6e7e3bf67b0bf88be5323a201a87ef8644fc2658ae64f458f229c98b98501957305e7534ad172cd2383a8dcd9a8320e631233f45487830473f62798f064a4599a7d317bf6b61857e39700fd9da29d3a05d80d83573fed518add830307662e46b82ba268a5fd3f0dd3dc280f5b7d8599933bb8c10994e7362c930e47ee9db95f126f5853410585c9cf75e0f9db843c625fe58ec23544b150768e40df222a194ef972ff2456dbe18528bf8389f1f6b974008ab8df389661cb81f62de31b7176cc95e09c523f9478197a61811cfdaf1e907c06f590e1f0cc6ab17189a6080e4033755c56e2fbfa694cabce6f6a49e0d253aee04c6f30aabc99d6a7bff1597181a8c323be133e8ba3563e63c6a510e1e59c911b84aa8f00267cda101968788a07684a182342acdc4af5bfc0d01227f4721766030b75caa837e596755f61860f867a1367bd8f1657653241681a1ba8e61dba3ad3254f86395472f72309d17239a71b6b125c4f2c49468c57b4dfc6a70c4b1448d554ec9838e3e6b50842965b86721a2e1770b52b655af1e5e7a554aef49a43c3a7ba6a08366812448e24930781bc418f60db2f466cf4745f7225f78d4fe209ac209f9ed12640e8e624d742ddb2eaa2a4f3417e519e792c8e5cc849807c66f25f985a846d3e92a2d995c4028a9782d68a7d4cd881e10d313bc5cfedb758293eaa46714be2cc53bdd4b8feb959abd98e95f4c45d53d8f4643d6fa39401fac1d84881f186ce752ada80c06ba3d70150fe7af3f849297107a7eae4f620d833fdea5882c9c4e08cd4bb3346193f70cd4e7c3d6e65d93f07f8f5268f9541dd6cb5ed18fa53ca234572ae8d65c4b9523af1aba79e1f896d3d19aadbbda407c8d3f740fa41e49431d0226c6ba35866a8d43fa0df88952e71f04273fa54ec1dc79a46bcfa4b128e94ceae073c3c6ced93640f7e20d296cc03da59e0244320130797c342a1bdefe8ed7ac9243caca02905990a2c588f21e47dd87fe7e2ab583792e52251f2cf11532e5b236bc580e8aa2efef0c332257d83d40da5e024d279ce1ba0f00312a5b86964265b104e56c98febdd92ea64be3e28e212750033ae184cee82bfc627d838c48d5be5557c8886f8a0e999155710ba11ae1ab1e421e278fb1913fcd9283ac38336b4638e27f79ab2f9d1bb7760299268827089d105a5201a5ac949e02380f93a1ad6af7ed5a8ebd99fa303b42929a29d29415eec29c9fd8bb48e0e6137431ff3e1dec03a09a07ffbe8ca70242d73b964c9d495afa4ad585f753e380f2b2133a378a824dc7700ad042d21b4079f4e4e380a1500cf3d27c0d9628a01991f37207f50786f5c9c6626215164078b4a148ec5ec81ba3eaa90a544816a35a45a3dfd08e8488d6a7e4a0233921f3104fd04e6e2527bcd495a404dc3052a3ad3a9925fe044b4fc79c0e4b261d82ab3f48595865de0a58b7b29a5824221b7c00c53954c5ff292474b3947838bc7b018c54f824788e5112c8e51314d440ed71004c9b9d1e2e78e5bebb5a13f9b38b61a4d01152508764723ac273241fc42c156c4262c9e39789fa6a7bd19699719165b106716883f46c750bdc2d1bec18cfc921ee61b98cf8d6a5f768ffdd4dba259ba8cd050327b24ab4560d76b4a29816153b1b59637454746838c822e87d2b74493c9feceab4da8681b978d3477cd951155ff8417729ef809f9f31c951d5253e066bf145cc7be598afe43bc4b74a6fad316e01f9e7113c03ef25d8688c0b0a63d0e20584017fdb907f663d3cf3b0eef0ad94575bb01b6bb2f33b7fd9f1bbff84039d50a653af6f980f5418c492ef4c5cff318d23ebe1a227bfb1bef84bddd577148646f1933f317ab6cc7e75dd28c477a8709fe2bc4451a235389da48a9a982920e245fd487290f8f095a60cbf5979a7e44c5c0ffbd2fa2f5d2fb6422ffd69242c6678081158acad3b35048d557bbacf20e634bc1c96340175bfd31285e7aaf3d7b5660ea7345783b534c872888d2833d357d0300f22c6535eda752a8fd51f3215ca8c01859c39e871b24f56bf510035da54e458c35f6c2638ba4addeb0e7998c5ed5bcc07f913f0dcee502395341ffe2f5cdf277c4a674d446e15dbf6b490a5f42d2b439f402d566c77b3792e438b61d732f7567426d059e3817546a8ad1eba801ddd0b25bfe63ac50dd9881745dd7917943e8876997d29bae5bafe81d53a973d6576869f9332605428dfb99b131d30ced4d6d6e7b16d46bb0a8189b33247ac41c21fe87143201764a8617c03733c806174f1c5a601b10a49cda08941a28a9f5a49e7c8a15dae035b48e31cbf26dc1091be14ac4c8dfc679d8b1ac19d71c97f8eec6be37989d6e1a320ffb3325d963c2fa00ed4abe9459b398b5216fb0fc4e7f71c309bbb505642765a6399beeb356464b1ad1a7b8696858049c1c341686b448e83f377b6afa2861b01189e45effd672483eb0466a7f4900adefb03eeeab960ffcf9f2045b062858163b2057c6d42a09e37b803f7ae040eecc23492ec811974bc7848d4f25bdd4f59af8a9ea71d70fa9e1e03cb19918165f0c74d3280571fbfef8d7a834ad5fda0b6104795f290da57e76d1e4114f4e9088f1e8e4357d85bdab76ccfe029eb248adc70daebffedf73d02d7356509e1fc5c4a0bfd26a56611ed5937a27a9b15f79c408f56f93368db0acea094f704e04f224b3a2ce9863e0fbec06e4e37eb5da3d4bd856b47139dd820f1cf3402d58ddd40c77c8831ed6291150987192fac0cbe7803e544884b7b6ff705ddfc9d74f3154fa8494156b8018cfaf5f5f6e76bd43985a84cd930f42ad113fcac36b2f80312fed9e64738fa118e860af3d5c9052dc4c092b630e1c379ae5a00997e6caf1e3d35421df8a1b138d8ef6016269246aa294b1f4d9774fae3806d860fcdcd89a9799c4b6042fbd3571a5de9820f555d9dbf1792518e2da68d21e18f2210f5228747959b0552794eee3680830cd8a708d44b2c2edb53dae688bfc6389b0382d5bdf46319f6cded747fed339fb73f40c1b34532e1f2c1edfb3ce9137870f60c30a0f148109d828d92c622429605e4be5ee54495d2c75470698a704d0360665e4ee7c825426f854625ad744c6cf767f40c89a51b0098184e66ed8e5009c7d9593ca5e69d4c5fc49035d5b77c42084e769877bee8b3ea62743ea3ad8b36294f3c9ba58c9e42049074b1fcde2633f274762b437e8177d369cd3f0ec1fb0759c25c412068618dc2c2817c2bc4386d83e74a40c41eed3e46dafc4cb12d855652e26ff6467bc2d0c75c0a0dac763f482f62ea87b7c96f9727203123b778c8f1740aff1a6831412e77471e785c2615ab86d959d9ddeaa6cdf38c902227980921817770dd416b48fa23fb0cff79a400d24639c9fc866810466a46eeb19e4313710034bed2cc420da789c0a9feb480c8c01cb8f3bfe24886b792aaa5cbac7bf13d8736d340cd1af8ffd231a1a29bcc5c5760358527a93f5886067ba3b84f3b6325c9e06f58607520dc95d2ce967af244f47c726e73bd711c7a39249ab553bb60ce68205b1552c2c5c46724ad219cfaf59f9efb650455608d97b63027ba254ee786b9871b8ba0892e0bc23fc4c9e257fb9806711090ecfc2f45e096aef88a466bdeb793a8251b7538a9e1368a225bdda108ff3e1c640fd1c426acf8a27170cbd91258ab556a369d33d3fafa09b0fb1513e0677ee1f8650ef263f23ef6ea2061df32c861afc848d6721dff08b1671b2ead8b6c1c0fe2d343a5921f65c4b65c0eb985c1bf259228a024daff20ae1d0e3b62becbbd2530dd84af9f1286c86b998adc884b19bc8ed91fd2115669dcf069b1aecb68b7c28258ad933b7947f9e60b6912608e887c91f301b55b2e85f0d569100960097f70dbe29845e480b26cd89c3d9db34b42d583179cf9086b2fcc481d0e413d401ed52b87af20f243773359c69f25bcb9f8650d74f2c79b39b4f156a68936f55c099d4e0676a100cdd254739207c36df7198b83247f43caeb0d4e173873a7a37a2c8e53b579937ba7bcf23e87e373a3893193ca2ef2dc9c832ccdf3ce1c18eb9ce2d6d4ac013188cf3ade4ccd8c0da030c5865780197aa16d0cd7127a98f1206f6202ada8825bde336acfd5be442a0a452234869eb96d7699dfada531087b463e1fd1b07e0b101c5e5e1f200e9b39a8c54a0b3e9095a870cbc309ef0af55b57bc969aed95862c2dfdda34e6c86e12327cdbf9a45ec2c4b6d27abe73790f1f452afbf2c1f256d1860ca6f0799b3a563a02bae5e1d25959df13f0b0f4e396f70f8079d332cafa33edd935b302d453919f1ca0d2a19459ad5fc26fc21f71139e956ed7e0589ec99adbede60ef2327ac8e183d6cb3c5e79ebe50198a0524dcce28d910e31a21d0fcb473211872363f70c1db0f9f7a550d8e82867de073e9fc05fd10ae29680b0c84318217eea1394f865f7ce006c100809e6c5e157e0c88c228069e58a32c1c43d801b779c31c199836f24039a439c7478871023746745e65f73039784967616ac984b63f5125436a189dcaff1f5dcd51ef5bbe7403ed1557e4d36f2b89b479e4f466fb6a1f072b1307443b4aacfb1061fda8ae2462b20a637444029861170041c8adf0d810f9ff8bd616b6bea7a52fcf13d04055b8103a0f4486ea7a77b3fcde9df9174682fd90f9ed61ee1ae27c2feb5e49eb2741e3c434bfef396c118fa22282cacf87bdbfd38e9ea63a5f29ab9dd9ba191e6dde992cd86839bd6ca5bcced1dd4afb3c5792011f07e7c8dc5fecf9109725588ab0f341e001e3d5bbb554a680d36d1a0063a14438df77206f9f4b701d3c3dce913e50d54a11abdfe6c5346bbbae39de5fb2959def1df440f755da55d6d652c7eb4fa6842ee0de6b582cef795f34673605ac26297674e125f43dd242d2d891b5f385768147d6c726c135244afc22821cc51b202d895a1a23314cf883f78fd48e7fafe4734c6dd3ff9f567cf75189694ef95f370641b27e512cef3992b619e034c63c687adc599ffbbe9fed8e1f17c949afb286b0ae6448660c876cda1ff0afd3550a3377a0bb75fee6c537e724e6de5ee2b8d751239d63c70c670ec2ae18c68e76b196b1cc15ea09b94b24825e662ed470fe521b4bff644302666cda8a6a95d4a53ef0a2cdc75f7310a7da2277765f9b2684d9da3c138b808d8e24c142327e2e08a8c3dc92478be02aa356abfa1ff4dba56fc814b018445e2d50127af7ce154cab036e4e380ba972016aa9403e4be41482f015fcd5c1c19ded8052a8fe5e425b4180c5d24568615df6d139ec16554942a0226ec0ef1b75abd9f3f759e747e0074db67650a1f1c71564c5ab9bed293843a3537a406b9861255eb1edf8b8b6cba2d8633075f181402c833430f3d649cbcbf70a015be847d0507f0d8a0e99d9e9c6fe22d34d5dc14c5976f9fe04938a94a68deb4309c35355fa831c98426ed8b26700136516fee5e5f0695830800dd890a8ba8334553a6857c8d97cef07b05bfcaef6b7659296848a2b9f73cafdb742680abf30524fb6521fa40ab072ab1b5bec0541e12cf457f76c8b8cb0b424793e2f906ce3e41efe02f6916a6b253a4fe8fcca7453665515f1066be95e85e450c7c8bf2607d00b483007089c9e02d18f0b7907fa1b3fed9a13d3cbe311dbd59447da17fbce48b7413336f598e9e9b6840a78b2adcc489ef940dbd4926c6c2ad3506742387be2603097dc737f8f26a03751ea430c2e88494f621c2aaa1d2fcecb3763d8cd12548085676790b06e409ffe7f2790ad0d3663f9627ef4bf23f56b2e1969ae2dad2c18b2e19c52e4cd05ac32f1f025fdc556c9f826505b3eb1f5c2349c55ae703e1919684b0eb15558719b49810f177968b05f54b2bf08a7c0845bfa23209efb0ede2180f6e412115d3bc51bee5289bce29ce7c27fae20198badf1e73a5649bfc3a79bb3b8441e08d3bd328b926fcc9525091853f5cbe7e058984643877315fc72ebb791bb3ae218d8387212d0097b9f3284e8e6ce77e86cbc73355d0a08490b5d34e9e18779847529f444e87f91910e0848c57079e4576ee96ff53016e811abbf2a7ec41f3ef5ef726e04d39fb43ef003e70a704de6f6e508ddfb73bf300f86831cfcfb54f75437d7289fbd3b867ccc9cc70083b8463b1b7795278b4ec0d8d89ba6a2f5531e0c809ee12f243c4870253ded22db0d30459c7710e0241d6740501efc12b94c5fe5ef72480726d3f954ddf0003a9e76453bf10e6cad098ed69d991b59cedf9751125ad7dba1e4e115cb478f662dc0f90db83d24a7d3f777dc9dca1f0b782fc6bfb329fb4320e7621690e461d05bcc1c41a9451bae8bdfa36a9e4b7e464d55d52d2f3d35a67e97937c28d72f7f64f0a5faccf328c496877be19935fe355e78941b0e1ae649b18d44e88ed6f34b6a01a75fe8ac5648ad89a9a7a451bd0014ec57be5b2fe59f86ef32bd4c94a28b616693314d684627607af54c9eb05607bd72847c589de9beb248d9578610acea48c2317da7e93fbc1da4945ac7081b86dc7a1ac2828eca2b5a4fe8cb771b7575e33191ff91896e4d937fbf13d7b77866a02053e2ff4187a74214239e314aa13d1f0c56dc9057cdb263c9fc2072881a62b5a7ced6b445d72b35d3dacad1eba01040aa12930bc734f449d914eb7da35dfa29a7ebee7e9dba6a8f0d93ef1f980fd8ea72b48aa634f416fe1dd19734090b7b934d3b78e9f19d26585c8308e822320e3cf9de01faffc0367b28d978ca2e37dbc1e74b087a357b2e5340c2bcd5fe803151cf262febfc0af424032c784c120efeaf253135118a1dccb1eab75cf0fa6da8aab0f88a463919d493392e2731ea4be2169e63af0c729496be70c64871f6b316944d5d9777a129603393f44913fb6592351ec5e25004cff9f1689a772a98e96a1c4df776f3a1535ab20af5e3ee99e0516425649cce3ab9418084effd2fee102d52581bbe76d6be5aaf6d8583686b9a8d63f8bdf101365df9f9a5848536547f464f7fa3511e8d5cb855fc2b1dc660ae3c5f2fd3371bb5a18e017679cfc3456968bb2119030f61a88f09347b78a3f6ad9c0351b1f50ef6f78e53ee432d612235ce25d4453c63a1baa90443da4c78fd6c3ef3cb62ea91be7b9ffee7d5d531dd74125e136864e6c74ea67dcf58259e3464f75a034d0ba7777d25a691e0d6d2ae4206edb9562593484c03798db83184add32a2b6878b6886eb668e4180efb0b9df6043f2af61783d204c75dd67a4c8199d2d30790a6642826aace40789fde5a03b7ea920804f1c97b1a8fbd181df468110322912fb63650bfa78836ea7643ec72d9c71052eb951d8d3613941fb7a38166e4d3fb5a5d593242ac82284f08e5525eb8b7cbe4b8313cba453c19781c8d13ab2c8ef44ad082fc64a01086e2c5b57e56508d083e0d0ff0baa3dfecbbdaa03d67064a2aef7b04c55aed13a1c98286250a0410ed48e22ea5b2c38433b82dec61cecffffeede12b558f067b0b1d8a2501639088e40f208d583126a2bf9b9e9f0d9afaf9e7a176fa00e8388eb2bffacaad02789967922f023299fd033de577e3df757ae6372085eb7f35507e14686df9aa882c110fa283aac5ab20f347cb3085f736d0f4b7ccd1749a4840197c8074754544fee6efde2409375b725c2084269dfa5416917dafa2b5a041e303c6d77c95b60dc15b4769c8cbeec1a60910d544fae8c83e19adb3023327f0f99eb15013017de502ce5c35c44d7d96951258bf7370746ebe914d90610b15bcdfcb51f7546cf4ee3b60a90e97f8d25ba1789136e25ce21fe6bc52fac62a57163494434e270a59c550b327f9092029869d6e81a3069ede04fbd5e966b6d30a4aa10a5092ecd7b814c82460270ca45238ec1597354fceb96080a32a95eaac606f30b3a32db66fc47b7a5f290706e19721fa45bb8660d3df1aa71a2342ed8b55df907b54e917eb833b3f1f16066e2fc729690e8646d0d13e2d3d1093900854df9230d406853711168d73fb6b0e395f8138aa6ec75ee37bc12dc0ffdef116023d3c075c09a3abae49831da23d165fab4edf53bb06677d1d9b04b786b37c8fc550a62fc9094156ada805c0e9711e6b86e258b13d63467ac0e357e5ab54f7c37d28b3b28a3e47b7e19958d43800da48a9b03780c4584d2c824b7ae196c16aca50bb2fea2e08bf7d8df4f5ad0790b086ca6c56b93ecfe6b468e9c52bf4e3ad3aa0aeb938973f8d16e1a984e99533b65b599b5a89d887c42c97d8b098075931b3841783fcba2d7a0c830221033472a639a1daaa750fca07a324ac85d091b9019d19abb03d169a6c992b22aa53ee2c63db5cc8491ffe6e456ee7c860da07f2463ae649f0ef9ed3274b8bc09428298ec03c6e0ee16d71aec1d5a3be121e3833a2fbd43773fbaeb73ba3bd5cb95ca7f84405e02588d31d411bf4fdf4e3ba6aa5f51913bc6267252d74cc4e68f1f1423d1640485e87905ef143551e4c2bd8e2da4cf72f71d2793e743d6e6a8c5012824dc559f03e9b035f0fee2c227440cc7e172341d1d4a04f52dce51e75008d04908f3e5116162eed43664b53ee06f57a65835fc8dcbb3d324cc559e3e8fbfea33eb5267b1142b40f228522c4dff38261aef66f129eb1135512825078af9b6c3183c2887c5064d8ce4f9da3b48ab2089e05647b0f0d4a11207b6d6b0c5ac937200642e82176918e882baf3af4244963be0d5f08094ae66ce02e42bd1e9c5bdf14ea02f9645b4fd4b9a13d0d7476bc841f3ce026ecd87247a2023801b2860e688455cb21aa4896bee95d6bd3a2393e14cfefcb541ed3b1ae21b4c9a16615ec6551999cab5502e985cfea0e87f8abc7c2f7eb36a2c39e53d3e924a10793b42b83b5913e8de5945ed321b05460365f5afa85416dcb86fe1795bd316f04e52c79f6f91b84f65df20e10bcb0119e44dcfd0e5d23892b5ffdaf61624258a1bd0de89613695d834ae71c4aaab76a1238602ed45ce12496e955cd9d5c357ef3fcb63ed241b6c65f7ac521539163dea87c8d82224ab74594ac3ee2ac2bb9eeb3ee87c1a0aa91fddefdc0a7ec15fb8838c6efe31aa5346824d742e35d47c334ff24f9f75b74d5b9a5119130fd2d41568fab1f53ba94c2dd8670ec9ec785d11dce2ffb2cf98c027d20f886391f753c7a7084798aa3c60a17d92c9c613ae4b1ce5be8d49527c54c896cdd2df8a8bdbb91203a24f7524960cf8b2ebc7594a7587bafd3aee35fbf07bbc529370939b92a1f010e95f8251b9d250563f780dc716c77dcc68b6b6e8e9cffb6fe811268ca2de9873fb960728ff0f6b7eb549f99d3960825dae71589c5ac4426beb41ec9e33e6763e2afed5ef4bc553876431920217b4fc6fdc494834873ad51227557f6ee265883f3154b904b8dff602e9a09a17c7d28158315677ed5f4620a452bcfa21d725b85611fd71c38cbb3b6d5b89cb376cbb237e97d2181a41ac748d5dc933e14f4a136a541c06df0b0845df3846fdb2701333cf252ab2ad884e1e8e697a749134e2d7ff3e10e5d8b697d92ce09bb546ef82933f9a63d225d204c04b41170779eb9d87f489a1305ff2c9ff41bb9c11edcb537ca93124065858a3565a5d1fb9eb7cb6fdcebd071b169b59ef6f0538221d1e700c8697c3a9a8f5c50d99ef326e504b990a6620c2e29fb3b5496d1cb49986b960d19e5fa1cd24849f2ba10bf49dc4d3da78fc66b8cba39bc02edadc0335101af23901a27b88e8ab5b5c438e4bafac9178090760ec456fdc2ceaecf5ca4ed455fabc446cc254ca9aff0441e5ecb9fb0b869d1fcaa5f4476b7c3134da4ba0461b0337f0cead97d0edef696a4457a2a682558265e7ffb8659a7db185dca9cf8a3a193d5f58e4b145af3aa5296fe7ec1b0a6ebee8f766453ba5bc196246bdc3df35322233329080e5a14e84d2cfacf1209ea4acb6f8df5eaca245aed850864e758b982e5606766ea57045fd7d3c0de7af0fdbe33b8e3223015fa1e991556a5b6d1f7fd3a8fa47749b585fd477d8adfc130eebe64f0eee7767b686a828352d4b3cc11271ac006c43f23450898dfb62e095b99c27de5f77ef862d8e509d8cff2293917c4d893ad3099bc78a3e8308ef72fd4a39b9de4a0ddbf7d5195916fc70adbde22c10683f8f1fdb6dcc751b2a08e3b427ba261928014c74a2ae83047d140d666e14f37bfcf8bbce5a4abc949cb34df440c63123ae1afed75e210f06323fed4f28800fb25a921f819f2a1eb8976b927d1a7f8f53fa5b10e33b2c51297a47a2d00046287fe36c9d21defb02d2d7c5250959bdaf346d9e67a4ca2fe404760efd890f517dce904e15ee18cc152354a89b52a84b9c3537f3f8ad98a75cd7e17271314484cd8cef5f49a09ee8db8704c9694053d1b01d65d6dbfac963e7ae18d75f471a884f7abdecc689c08d3d5fa21a73c463a98ac9ad70d30ed1e16bb2b041872091edd864cfb4e73a804a4e556bd68dff9f52fcf4646636cdd0a64c9221311352803eb5992dfce1c7710edf41ea1f21c09d4e278773ed6d56b1988d0f8206336c38f8253909c1191f5dacf8ddc1c22b858d47bdde2061518de770e211e813187c5aeba9ece58ea7b1523a3ac0e2b8152ba385f1fe2fa2813aef95a59fc94fe421f8236e74326fc9aa28252885a48971ca040b3c94280a0e001674ecc8d5c8b5e26d332645fe8b4b6c4697dd0d2bcb504e977bbc2ba453165bcac56be6ab8130a7ce3dea63acfae2ffe64d672203db8c10510ac7e65a9f9af461a80987f57230e7d3f49eb16f5a4f3361b4da3fb59acb1abcb53ea80a037726b12db91a731babd004c1afbbf2672fb677f215cd9ab6ccd80bddca50d2aa0d9aeb23861787cf501dd121c6c0430a91fd641707d6e1744f6ab89bc8f96df34265f4c3317db6f77151e339a084112a3605df4050e332af40c3d70811a1948fc2a5af38643d2ccb52b2e425be3fc7beebdd6d40e17f2b709c78ab3c3341b7283a702be095fe23cd5b93051913b9fbbeafdab66e9de077be356454ba14ced9b10ad7fac20cdf1017fe288c246532ccb467e1e151021e5a48ceeea6ce154b2cac6a56a8cb09745847ed14a6bb5475ca8a4be5ea9b2366b86641a93d9c41d66b8b769265f25552642a6412aa34a84a57dce8c3bd2ae584f13917728b4e4e8f2e8778113afe716364cd167f5340763d18ad5ace4ac7c05bba1c5e59c8f607117b3899af7288750750b5fa19be6ed2f257013bff36507fc2a5278074779fa3c8f1ac7031ec9eba3248d9b3aebc8eafc7fb9c25636c390dbcc3b3115565ad381eb4d5f54115c36f7780bcc7e31c95845b3f005dcbafa16a922f7b0dbca3cfe1f5252c7f12b08b9bf98a676c760455a387d98be66d7e14b4f17723f587dcbd004c77e7096a0bec751148fba3d3cae775c85c16dd922437eab7d1d4463a1bf1d8885e23658df46a84a85112e2c2b3636cfd7fb8b592efeb28f2f64e8c5e61ce1d2ec1d7f589c1ea49b5d305f85b7d1abf46918b9f0da3f59fc3d690647fc711b47762a48a72ec7e295ed74f0dac7fba1d97c3d9f2c138358b5ee06c182dfd1aa6f6a4fb1d8fa8ede9a35598da5dd2313a11dae3c18ad3b84631731ecbb6017dd29a2b901d7e06abb7be22e5894d625b7b0e58d9ac1fa7226225a40f71148f96cef4b91d8ea9acdb57309a2e7ea6db046505dd0bc6356df3d537aa7fc1cd7b6dbdd046c93523090f3cdb4c86c3ac2ec298d193399b66693de81b784d0105c39cdc8993be97c58fcd24a5190cbd50aec365a58c095e73036ffc4a9a86d2bcac75fe6a851554c9aab221e2f97de5645b4a2e85247ccd6a8e31844b557e198c7a9b3028eba7888d389073d685d86f5d956c361c0604ef37bdebe852286100828c0f76c10518f4a300ae8140cf8b8b9a25f0fb1b13bd74a29c4821f0874053457ee21f742b72a3e1510e3ac053635dc418dcfce730e060899fed338ee715bd8461dcefda68a4f4ed3e469bc9e7952dd22f03fe44dab16fd98651049f9ffea7b399d264e862ea182c24ab7f81b98554d7953da0aa7a9e9b5fc252c85b2a140e8fd719dcbf3450ded6d558707618669388df81291844c4c390274fcf55da7d34d365d05f85d8f8c5db5aab9a3ae68a31547e867296aa18d1fefe75a607f57e06a3ee830d8b957fd9a7793b72d81c4d78dc4686279c3c76f4603d004f9f7b12f2a4c11f8e7cf6c92b31180b47c9fdd86ff02d4fc071caa49ae4ba061902e38bf932018a5fe034bbdafeba735da6cc3268fb93c461277bf084d66c4f555067cb13ed82619cf6ff2ff7a5fd4d6dcd2a682e6684c95942658a4e224cb17f8a5db11dd2f7c87df74a2fb2579d8a93083329269c602d18e84545991faf29791a6395e8324f29ac5e389576ccc64d1614de96e02321025f88c048dc6483de589886bdc8f65943f26a949ab460e9bccd31135fdf8a6c4e5ae064d6e8aed4f907746e1e95275854e30e10c2836378d8c22d8633e97c2e619954fe6bc68c3b20cf54082d859d0046959aca463b5b1162cf983157d4b74d8868054766b6eae91757e9b05968a68f54665421bba281fddce7ba43e6f0f86afd44c3839f34ac4ac6d2bc5aa0d9011f7d9bc430f50220a17135d802c383b81babb866cd9d5917596905944df3adb69b927bd41312b0d52c58897fc2cf79fc10b29a26543c58f97dc0f7cbdd7b6d4d0109288ea5d6328329ef6855d830fdd9e00aef9fccc444755c8414f9b781d4a4cc24d13e906a9668f117d5c5d4bd227fe08da341670a50631e077cc29d0d87eec07824037298fd86ee60ca81a3d8cb803d4878f1d6018e62702d7c9f0bae0ce83b4c5ba0d062d590dd211768b40754ebe4e44508206863ec45a6b306b189a2a045ec87727b82fae36221c7ba05b02a3a3491ad4d0a4a50e4620929a411f5b801129c9451fdcc896fd95dc4dbaa16ff32c17abc3060eb4118e625d449a4f48f7be4a35db15d2a26dba60fd3d3bd5f3601a38556f0c632c7707b6b056977e0b166e637a8c778f43b31e027fda2d8b87ab9361166a464ae526dd0513ec85d458f6e107ba8f741811fbc431ad2fce9c0f816b1d3f26eea651251d8dcd7b190652a9e3d11fc799700c011c219f143106ba6e9bf40a35a3cdefc149d415b397d1f24d7a229ffabb2375c1ab8875e1cae2fef3b09f22e6782d01eabf7d8e1f4f38470f3284a6fd10945d72eada7cb43411c208c520a283d094a022e4a2fa8affac9be8917cd0537e4e745caf5982e13d4db0d9216e3478295d373963eb35add967e20d41585207bf6e73246ababc335e8413f9aeeeeb1a58ab3e3c8ef1122df11bc05167208327098728f3895af6f5691b0e68d29b53230432a50e92cdb7a54ad89fcc8cd1a4617033a37fc91782a924305a431f9a7cb9e2c0d342b9870fb2b19720406f90ca56fae8232dcfbe7d1bbcd677344bd0fcddf89d8d95d40a48f66f7791fe0b7b99fccea5bf1d7d699be49e506a92f6aa277a583fc8bd518b1a0fe1f8b1a5b06b4f198f72350a37505056699b58eaded047e4d9374d564827c9717584ff80629464bc6f352c381a546607a02971375582c04a34191ecd79a96f649a8fd7511c394886c0b77defafa62799e4903e728714dd5cb9072331f629ab543670325aae3ab210365c2385244528829ae6b2e7b489fcfb9229946ccf3778a3bf9a5b3afea8f72684facc751cb322907ee31a42a079e2859cbcfe4065389fa06c199c4e4a624bd8437d7a9ec8e76fb2f4569ce6de9ad952b50657a5100ff0e027a48c5974b163ad8fbf4be07f6fd9d203c4e839750aefef7eae477f35989fb833dffa0c144fbf279f19399f37a0ed355f6f88791b6f0971b12b9cd23e7ba9667cc949a6b523980c9c406edf4572281c0959a44b4cb7156b78289fdb996e1e398bf075df7484612e43454f4fadf80d2cd6ca07bc5b80e62a23d5d6d142e2988861961b506fd68a9247a3a4466ce7deb107142c217cef86056d45585464b88796cd06db0db9e164e28dc8d8c299227dfd8d2128d51fc09b7730cbffe90b06f801aff65340ff2f4bcac61a49208ec45f381fc54be5ee9c21a0aee3e334e7fca3e5c5236f36c7386744944f18c9d275ef2daa44a64ee1836c17c1345edf4e424a16f67f98b1d83c3d84a019428e1f158deb87324a09f328262d776221255130cb37c522b8fd0b945c42ff8c94a04c58d95aa95b1f809aca98fa6bd2ff81a89af2d61b53e0d15a54646ef2ed3e87ebe3a7a54d97d151ba7d134502e3f94d5f32f30abbc6cbf52f9ee70f111c51a7c85cd281f83c27ad77f4b13946365562513f4631e3c898ec1af4826facb767e82dcd76b1ad8c668ee2dfb7cea0567c2ff8c087bea5c8581f934fe4dc17b07577663540fb82916e6773ce92d193acf371207c42a1ed33ff198907f1dff6185dcaff5b69f20e965ddf0d8773022daa74979a9ef71b6bcd6ff3d1e8765384de603a25f0892873e290c999c3c8319fde9c6412f8afca6c85b01faa7bffb445b06713e0a89a4e790f5fbf721237686dfeeadcce0f4db7b439dd47f7086d6fb151737a2d258e64db61ef855d81c9cc5a5be626a04d4e3e83f38750a188694b16b1effcc4b9cbdd883824758776deb50359c998625474e3307fd7bef128de0ae5e38cb0244a3d75dd56309d030355b437360d436f932c560aa8ff9fea40dd904eb3f85dd67d077bfeb6e949f92fdf318af7a0e5994223dbb7ccd5443177d71b86d8aff89217d95af8835664a4752f6f348c338d8085cf6b21171e23ee9ba1408a4b3f56bbf956d793194fafeeaf5c7e81718598db87c91eeff8347574be16dbd49b210ee25ec0f0bc204891716a673dbb26e1f1f841de7d8ef6ffe6e38e371dc2f73a7d3c66782a47df9efbeffa0f4cbe0e81eba927a3b1b595068572a0d676fc01191be18bab93c3693455fa976283c7b57696cd1b49786fed217fec2dfd8ba43252d91a17b2e6026f3bcdd597b4892094bca1b8cd37f5456955467f9d20d1abb4ae2d0361cccd090905d7c352204e93017181ccd0ff20f4564dd4494c495b16fb75e821f3b86289c673ef631d93e9863872d0ae70a522ff1ec61a170355e5ad1935d74b72d60a5cc513daa839edf5b4d5f27a21032d3f1598ed7e3cf40548756d2dc3507a05fba89e3a163023474bad8266e0a0401ea0f968b01092b74e5bfcc63656be9f9f92aa0317cbd03e49d37825c3aee8d399323bb8cd0708e1d08ee98b571dc31e5ea96c8ec65b019c488b6323007d2b61e44b370c42ad3fb930e721dfadfebfb162634d46894abb9e835f5d75af5054e8b095d21a10dbb946b56704b634df9a78e6ec086699b44889897c054b04c2dcf44f130c479b04cf0d57ed88fd982c9a5d6e95c2cab93690bbfe10b6cd9033d647d0c21428c28d40b185798c3d47dba22cc65e6cbf8150f1850fa504409feb52c320b748dfaf49c6e157efe2dacf8be63a09bec54dd52c74eea8a908373e07a37c99ea01ab6aaf98973ee9d04c3de82f8fdccec89b02510beb613545f093b9fb57c0584d683e5ee61067c1d0fd836867945b20d50ff0cc605910762ebbbffe1f606f02c123db6efc8f6ab3f8c1a758c1a227572a30f94817b43f1907d039c3cb4c943e25147491380bbeb6b93b365f31b5212cdd900c9060708ae091bf9497db4b993e505be9a876d3120089cd6722d436dfed2bfcf8cc2cca4e66ac2a0276254c044fb6677f99e61b26bb18bc4fe5ce9acec1621e75c1db6dbea05661547ef83be14dabd800c2043c045734f70a04f8a96a06db56092ea3d105e34d13ace2be01328f4423fd75190f8d019e00ce921738ea657379ae52fd3ab220fe442d19b4983df445c2cc35aa8dd1cf1e926d686fdcba7a0599ddd0daf07675ac33ed0b6bad275c97db50ee8e06dd1eb7a4d548214a677c191d85b4d6db934969b9c70b543dbcdfc64ca3ff68d208dd6fb7de6c77fcaff995b54d52827fbc26b7a01ec6aaa30f5fe2ea7c3701bc977f06cd7b8711b30e33e1e23d4684eb48072122258123f62f029772d1ca91e09e060aa7cf20b5b996652784dce984d89003e89723eb41290fcb040e5a7ab753c3a09288aa9f1825099ac1101551e3cad1c533aaab446fb7e7fe4df65c822fa35e3b70769c3fa41422689ae054b1e963a231326e1c108cbc44e4cd12dd3d7b8e8bdec19bf6aab4c1057f252f87bf5bf71d8d111f5ba80c3a6868b34507198bcbfcecc6b0462eb38181387cda6a06c0d80b244516510cbfbef5aa461c84c0cbb7cd7b8711920e33e1c03d46827aa402813e761c367c44519f0b00d7d185e31b3b568393064c27420853ddf60c161ba3a2fb78199ab1365516421dd0a17d37896c7657daf5c806a4e7f651a34433c2a3f3b58f4d6992615677de7039645b2cc41c33a5e8136a531306a3de710062c3c00b42058313d7f2e914fb0c119d334ce57aaebf195c67412a1986806434a9d77766140f5b42972a5b2fbcb89098ea226bf9e22aed93a39904f29b29804b7fb405e651ba7503d2113c4915e6f7ca320371eb03c588c7496539537b7e10b45f3cf949a29532120ff2ead8c98cfd5371747327bd46c0dc870b3d70d27ae92e23ad60db706a888efcb65a0ecf7e2304e49d657a4b86c346c891e27e5e3aff199e7c78b80a0700e5401f1b8854fe7d4f50345ec9b964439981a3dd09ed27da369df9659f07ffb3783edffa41b99140dd8a807fd1fc477f6e928e2bc4ca793eec3689aa35000be1199716ed23d1a61b8df0e63374e026ccfe9bd665d8b5ce4e56a0d988abdf2125ebd330b78f1fcbd1024de7a6c03042a9309964c361d549ddc6a4a846015471149d7cef0a2cc2eb8037097a71a8ea6eb4b5bd5abd3b534d472b5a26bf9a32d7274923d2ba03c4763d7f563c6eeb564ec1e3c67cc1e70b24f31f6984f2062bfd778cc2ac62a8d08d6f78371a5bd961600ca617a4b44889d3b98b8ef0d93d512b3c9c703883b0a674a89ffa4517ca3e16adcfae87b87e839020cfb5e2649aeb1417d6fa057c63aed10a6f31283fabcbedef4a3618d4643ae291561dbd703e5c4d3043644e302457cef35413c5cf44344e7fc2feca28f99430df5ca78dceb01d8004182a8933cf8de28f062223bd65834b415e91adccc7a1fb44ac4edbdb1511dad56929bf8a65884391b2a986acfd2e016854484d809764e325f7ec2bef4283ed8d78d47b0efa503fb5ef99351efa69e134817d8d705e19e9c99201a024d4163c2bfbeae393ab93ec9cddd1df0c031467883dff2958c5d4ec80d7371edf557b8eb7b9334c445743ca6a30999366e00989d7c4c2057dc7d95231d0137c12b1232a6450f296a194fd15bdf68a040a84ef068e90712ca903e5d092f5a0c8971f6cbc0d5c6d5d6d782752ec8688f56e14e3bc19a68aead2f61df820897314c3e17b6337c659fd1c7f65bc7d8f712f7be1143c4485cb0b2ed43ca66b708f5ce09de27066e2a15982c81c8ccbed247d4bd20fa02bef8ec05fcbd058868810a88173e3ba6ec06fcc13307b7069b30acce8f8d81d46d68ef06888b175b1b08790adc104765ba090fc0076e121675ae7682d05abd64ac1229a64e0e0e5e60c165edc0e241cd571da2efdfacaf0f46aeb7d5230593c5ba9d3638e9ce1f77637fa897db07345b860af8d0fd609a4a79d67ba7ee51c24e81952a3a8b0b973af9bef9eafc864213e2db503fe79d5f812ebae787d335ceae066fa59136bd1b4ba73f86afb499b6bf09b1fdd72666c561e62df58061f707a701a82cd0328f02a996f8355a4ae339708b6709d7e8d01779ef580c262ff5d25f7124ace09568a05fef55c45b016635d603b1dfd2e785abfb815df7f157058e0a888644b170a258f99bae599101802c42125cdaa5b49faa3f94db5e9fb8a8d4c193e1ac7f0e32f32bf1c0ca3146afd33836559c14efcfb3c4e3a295b55c7cd35db906c5a55eee5ee55b37eca4d5c18088def7318d96098fa9d091772c1e5b300aaa46abbea61edce74230a774bf5202b25ae0c6b61fe8d92be5f1d9c4e8fa878b1cd88df4cdb8558eecb6ca9132661528d79cadb28b958db9b86919d7cd3ad58fc046771bca658e50d412b2cad1e82e335cc73ca3bca67ff8b05c952907b6e9c3f9566597700396928ae054e588b5bc4dde798f953ce37fc86e1e646111966b31740a5474e6a44c49c656a9f231c258b0b6bcc21d7ddeb7e577902ac7a75ec7edd457977fa2c3a2ca416c6d2d4079bb286b1014f1b74a0a2aa078f5e310931ac1971c119aa8235065d7d2932fc7e8d3b70f306c865a2458f665125e687e19079d7efa7250940d9ff1b46810855ae968aa03edfcb5e1a42d92fcce972c38e1baade9f7de9669bfb574303b06836fe2dee2a3ded15c95f14bb672cfc1f43aebe59e2521807cccb10343586dc907de8620e8a6cbaaa836f61166e533c0c45752586f0d7f2d408faf2c23d9f7d9f041a268aec1d6d42571e6b744a9e9c02b86d851d4d123f5651a99450c81a25de5de5c3ef9617ca33051fed3c991bf6bf6342ea339a19e0342d62e5db3a73446cdf09755ce0f2a63b36aa5c2df322128768b24e7a7ead57bf7de8896c51bf9544e6d4de2801e627100765304ca7c3141a6229dd5aef9f00c1ff24402f4b4e3dd448a2e01211d88e6eac910a53c6deb8f9338d58aef8093233ac429711d4b5688ab71893de4f3f7b5067d21ca2e91aba28ebaffe69de773d9ba58751041aff60df96688903cae18967caa73d97710a485b0ab313fd04d90b080aeb15e68161b6ffebcac265d1ca765a0184c775df82640a73b8b5f063090f3e73c9a8f8dc8a141da4fa97d5478b3d77a2ee0fd0a2354b1ca817aae0041514ce85be10ffd8698fc5a2311d86e3d7291082ee01fa9932687a124e28dd64b197f17f0bdc89f2baaa303be2e72c5a6592c81dab180ef67c8689556ea7113a3b5a30596351879331ebd99bbfe33086df3e8854dc73d972a95dc8b07161fb52c76eb7c59b6f99516a4b780976abadb3373b1b3571f17b57ba3910c164ec7ba2f57190444fe769d898d27b419a08bf6aca8e044118315bbf752315b5f367ea93ef4c63263a0ad2dc3b4941c08a2b6813b99e132d9a635299d54cdd435ea7565dd29fad78be4379d96e9b454794edeb1f30b9d86a66ed33f78439c6caa8a331f45434ebd1560b5f9b690531f680b14ab3d2f2734e475d1983054e0982afcead5145dd73e0728ef2447d78bc37519f4e0741bd143f5cee9b0864d9c96caefac524e26e252430498802e1cfde8fe1a666b98bc77cce488195e9e0d6637912959964e57a3742d5f133cb12c3ae31a86feb5f0ff36e80c3d2ea622711d02089d1ee57ff905626c8c5c8552cdd32241bd04e8391cfd970b14bccfc409bc78d4b140af87d26e6caff8adec570b387b7fde0c6a1fd473001eeeea60fab3f02303214c4cb66bd747d4eb020e9a1a2e6814697a09a62b236690c6f9a1a6f46dec4a09a3afaf79bd2ea8b1bcd9a4b953a59741513e629845f9244f8c2be103d0265ede723c0ddd97e975db3ee53fa4bc4c2f2dc40f710ae9b383be7fb3885c3111e42dc01d18d3ab16e62bfe0048bdd3f890faf9dd1c2310dffb78121ef2514614f3238abce8ab01bd0da5e7f6098b309532594d70df7dcf03de8e609c0debe46929b3de2df6ab79e51147caa608d693632425c8c677f8db13fe2dfb9b3202dcb5c8debcff3b1edcd08d4a6152d5ffcedbba37ad39af9e80045f103cc7babdacab9753ac46f7d95c753df4cf68f5060491c1b0cbb81e5ae2e26fa2e34f9a6c38ff54ea48749d14a13358a5aec9bf368b9810c47805cae91299541048cd361d801d5e0e2054638a5e0aa924fa59d3cc2e95179290d795240c7dd48d110ec9c8df5229b694bbcf428de49226360ba3868dd77e2e1fa3ffffc7a2ad3aefa11da13a4d0e618f574307de74ae5eb39802b60949097f091d6544d6a77b996cbe1e08d3284e74d01d53dd2d436f4ea06c4e9adcb0b1dd20b1dd8ca0bb837abba9a1c91cb15ad985556a75a6e2575be72b966b5ef6a6ed1ed34e36d1d2e4cad664d5e4859398ed54849c6e8ad198f5eebea49dca710d91f591ff45919e67159ff9af67410b735a8bb89225251bf73c257eaddb74d4ab508cd14b3078698997945c91ce24862551c9478b6c6c962c7922fbba61e79d8c6101eec489cbe62b872069e4c2349246f965a713964d1ce931959b1c7b9d308965f3657a2cefcb2129494a1c49d1fc22c975c48586ae8cdc89131752e2487ce84a093f8cdefc9f7d99cffc7d16566d8e17f158f32c2d575bc2b53a651f76d52b95cdd7fd0773cc9e5c26fa3d76dd793f53ead571a6f37527aee9a8d714bef4cae60b77aac78e337d8fce2c6555365fb2f972efea50a59eaf3a5bb97814b4cbc25aa75310d15f30177dfd6ee6d199651367536265a50447091325362597cd97772f74c58be8c011665ca8fbc7d7fdc3ebfe31d4fd038b4d179846c1b289e34d64f3f59d5df580a3bb676f363e3acae6cb3b9a31fdce569c4489eef6e8fcce56cf492d2f5119ddfc97d5f3d912fd654591a47b8b69c42d26d18ab9a3952dc6d07e2a792d7c9d4e38d7afb24af1947927b899d0e8f613111c53177eda4c18d84c36443fa1886ca602f889c87baf99c32a5ba9077eeaf12a6dd94ab85d48ce74d75e48ba74ec90b01a499023616294233e74c71c55b71d1192eb13ed90483f74f72f4ceaf98f246464a63bd61fb2f735f212b3a3a21ed94ca93953fba01a305d0376d79c4edad730e9a2f9e19a12ecfd2c2f847981029dcad87ab7bb777a53401d0a80c1a60007282005232c30c283912123344602b015c1afcfc268b6223634736c345fd0f0b0d1f0d0f820b244249146d1a333669d4890cdc9702036b7e2290ce92d010990a2e3976a387596525b02620920c0e6020c5cd861732186ad853331b435f7daab5a39695ec27fad67617eaa7934d3e6540bb516946c2c9cd958906263c187683255cb02100498b12140890d011940804e77a4a1a1c1d60bfaf901728530fcd70ff0c3760027db01601892c6902d4320b00d3961139246774be94d880684e06c2bbce1ff729bdd435b939ee78a5957113fe2523a1297f887b61520b0c200361574b0a920824d85d6a6c290eef67f59977c4919838e78902371d87495db7ced7c7d58aa7934c6daa4d5b2f57c962cf666b492f2399d16a024fc4b17a024744cbf6f5e99bda0a49e8b2ce5f178dfae70d1f4c937db15abfb192cb4543c8fe6560f24302c62b8ab4f2f0f1001bcfc46802d752340d71dbbdf08e00318d3317fcd33dd063007f0246843c18c2ce31c5a14b0e86e160a3827c0b19d20a64bb24a69270c6d27dc7447297d95ea09f2d68e8f2ac877807e7c7cf5e33a3b51a2a4727c07a7a5ead904e045774fe94d00459b0046734627589b1faed50976d37a60e8ff8abd993083cd040c6c26d4b099c075fcbf36cffa9ef4988ae2581b94c5aeb25d65bbd2814c77a396c08022759ff1dfc716db0fc5443aa6983e2cce2fac3b1eff9bf705e24abd58cc9e6495ca2a9de1d9b3a437123612bc7428a37d25410b0951babb3bd5bd47fbd5360218bbda46d0326923d89c01c2a53bb50161bd3cd754df8008e9de7e98e9b8e4486f3fbed03eb6fd90ddfdb3fdf08eb3bb6b7af361a62326fdb5dfc86b757a9e93de7c7499b4fb9da7361f79e689bad97a085b7fd9ba88ad71d85a686b12f220230f2dddeda578aa79a66abd64c2e30778a0000f1cf06872c71b7708f1d5ae721e30fa89dd35a9ec906247113b7ad451870aea2822d151071d34a0a3083a74a08301677a706606677a3843e54c0d117240840d10a10144386108678690c510bc2108418c10302004991096cc91c61c5be6f8e668418e3029c8c102393c398804410841a82208afeec6a1c77293e7cd9c2b5ef223347f8c7a8e33f5d2f799ca2849add64f12959b22a925b3dee8478ebcf59ea9283fe001a31f19b32f78f45209e3095eeb7933c791f8031c89b764e95a8ae98f47a944662f7c6f12d1f08658928f43b7790aa9ab73e425d54966d2c831f52496a58c2f75dd9f652b95b829461dc3e62cd31a923a5569348a59241e83f488bd3e683f85ed8af63cd606ddefee0f7e7a6d55d995acda5be5da7cc58b8646dde44a2df833dab595ce2f8e311d4797a138b6a4e278d2dd71c021060e2edd1d537048385c78634cea8d1f704e753f64891ee815b6f2b7dc20e3061837b4746e58d151b9c1c40de769e34c1b63daf862576d6ce96eb531ebd8460f6dc326b621840d336c74a9d5e96cf08042a16e8a2c0e6af40af12bc4657e88f815e235ec5843056b14b1865d230a0e73245d3bf2e803cf07517c500035bc50e30a35865083a6064c8d01f40006916482954c12a8c68a23712bf95b3646fb5acadfea4191147a30001e8499410625304406fcc77830c30eccec80063b20c10e5e3bd0e9483a9d8264d7a57450821474c0830eacc0b0844964a2a3ca2133059920c86c800c1432034821073ec8c115dd244c71cd9b753af64abf91e329b4701996c0106dfc880339128f6101314406f869e8ce6f06ab8f0344e43dfe647efcb178e74d238e19a4d1250d0aa4a1040739c041103818c2810a68943109491babaa2bd24d51ba295b3480d0b0416384146e20c50d886e604377d79f295ef3726c20840d886c10cfa8e30c37ced82285333270c64d77c4d24db1b33093b47225d04cd51b7ade9defe58c81c09868461e668431e305662061c667460c668ccab0a30c39cae85246ab0c9bee483a9d623fa356244912cb9d84a3e3a688adc965cb64eaee9c8d4cf8156253e759972c93b3463f24dad791e39a5718257e8558fa95c92619389081858c1d324663883106106384631811a30b3172e888e51247e22dd902c37c3a054958c5964aedd5d52981708d180b0823076148715f21f68f49e9b517eeba5418388451240530cc74b7f4987d853805460962ca88b9811828c438214602624231fec5195f6cf14511099dc217f78b166a70a63b4a129023712ba31fe9afc44b920434fa914afc64b2e2481c08484a29ff63913402e7a5d5309246f9659134c2273c4d3687d3fff531599c31ea77de6b63ffb179a7d740cc9726af1077371beeb24a4b5116df4b31eb5f2de7bf20fe9f242aff595e79d451bd70d1f4895147e5f7755435b0197b8538de0761144f9cf9c38528a55b58b534dbcf3d0a9b5ef3bce932fabab8f434e5b1be42ecb8e69b34af10d3d46a8a4068d98143f9a9e59aad34df075f612bdb55f7cfb3aa0dc1686ed527a234bc429d6b79da0b1cdaaff6de9d500acd46f93c753a6b69b078fef34c41798984bab1b1aab2b14a5345d3a786a2f91fc340395b7abd297bcfa3f3fb0ee525d2cc53c74b334f9dd10d4ac86689ecf534ef29cfe954cb9fbd319bb12b0642badbe6700b3b3a8a2d2458cb710b0f4a6c51c28a12404c70c6042630016b33c18e09461da50b89df26255514ba56fa9128743a1d89612c8a47931f89dd5b4c63d624fd084e7912619258220ac93f9de415c7b394c427914209ac2801dd4a5080587fe6ff98761f872fffcfe21c249a40c206245020c1142490dd91e62f058b9e06ffd02c63a2eb773ee9528b05e8677469e7590bd609e372032e28e0e2002e458e3073841547ccbafb4a2d96fae0cfe924aff811242eddbb6cab1f8918bf8f00042378c03682183623dc30e20823848c80c108224574d1b17bfc0a71ad79f53bfb79a5d1d6226ad88a284204184468e9ee58672724e515ffc75eea3e1b65d57ab59f65e95db538443c19228e6d881e0cf1816d88fc9ebd43f088c08c08c474c7f7ec7521b410020bc142106404f145105982b012044f103e425047089408010d819410f4060419407401446d03020240a000822b3aca98ca63167ab3902c72e444fa6a8bc47b6d3704a343a6cf991e8933c78bd44a95ce7c1fe6b1fb4c3f766d6cfe872b856595475c23a54b82a0c907d6f880151fc0f2019fee6833d1671adea09a12a359156ba9e84b5e9ad65ecf5a1ba4009b195c56e94f9fc1c2964725272521be96e625978d121b25af982d4989e9b5e047657dd04ab734cf6bb2d9d4a93aea35f7bb8e56957bd6ce985bec799368e715e23cf3d294559fc1e68e478fd9c6f07f1636bd7e210c36f1a5590f533c5ffe1d2c7ad67a34ff4dd910a6f198f5ac0543d05ad062b13608e3d42cce10a640d9aeeecffd21188592edaa3ef893ed2adb559d394f347bac4efd2845d307ebd43c8cdf63b146a879d6b25cd8b377d23a1545a1826ee695558a0abab1f7be2793d9ec425d177ecf0279d6b23ecf7cbf5615d0bcb928083f6a7797f0c34829ff04e7d72308ddb2f140868725bac1f9659cabcdc1f8fe50f7d73e9d77a7aa627f5998886e707e17d0e9b85dc000ed27f7268ca24c289d502b2ff5dc54d09b0fd44debd526eb747aa150403a3d3737b0a7f2badfcd07d271e158874275aa1b6fe66a51dfd91cda57146ea14c20a1485e1addc09eca7c750fce0b6bcd3cbbfb209105bbf93357b55495736f88e77d18aae746a743654be4aa656af3c251bc94294ecf4d067396109d4e39dd0fc1260e6aded7026e5a46ddd5bb1f8f1118d31d7104ac8840cda3339a474027d5fdb5f7ee743b9cd9018cdc01ec982bb53b30d1a14c37bfc72bbda61aea30021dc0ee18758061e600460e14c8c18403191b0e4b7494ad978c59ffd855fad51e873a389090a5892c55b62cab5a1e5bad89da03b6daa9880745401451a0286e4527445c7329b69ed764957675628fce9897e857aa74caa8f739a68af5eb0cc7541e6d9536cf98f7f8aba541b1d134d01d85aec4f85e47f3741c8fa167f16b3a7edb956cc07f281e419a0f3fbc81a6bb0718210ce4a444b2bb470bc21e72a8bddcbb1fa1b770276c409824f453e8253f118dbce40d2895e0844c464cc98fe82157e0947db2922d1329b99312be0253b7d985e77defcef72e1ee8c10d01001c764b9b6d955dcdf3429e6c57b6511064089a4675df7dd1f499f259680b9c3708e75a55e0777b80623f333c7b667e9fd80fae3d94199e3d3f055fcb83633d359cef2cc67f653b3c1867ebb5be09b652b836bd07c25d0d79aae020eccd0c4e1ff0bb3d45dfd57030964d9c8c69946b79f0bc9315fbc1afb0054e1f8c314ee5fcd7260b77f37b669e3a7582ad500a0627cdc3dfaa413c8776fbdee8ee8f06dbf7822f093f7d3974777703a0b7ef3f297eb2339a975c37decfe0eca6ab06db3c323c3025eaaa1316264c125e516d96298ef5f0fd9d211038b9091dbf885c99be86644799944a6b688863eadd7cefeffd58cc0ec1ac97c464c2e2c5071e58ac787dd0623982e500588074fba9948b6817f7c1b04589e8ee3c3acb79599d405d0219aca095e81f2450d3dd10682b3374b730d4db2c87ff64f3ce403a4878612664e4dd3d74e7d20b4a0d44da87b70fcf1b1a6a1fb37dccf6217d481f477c1cc9238f3bbac71d5116bedccabce972270a4eaa2727b503b49aa2c50c3db2e80186480b7aacba9bf6f65bbab578b26ed7d691e91e18e81e12f00145dac1d882d505621f329c7cd86cb030dd266cc10aebd2dd1b0cec7fd554584f847977ec5e66bafb15867ab0faf242fbfac251d26c95528923712c4ddefc8e36049bf931f6d64c467bac0deabeebbc9f1b587c1f44c10c5a986bba7b47a8830c45d1dda81e154867f8fbacaadd5c77f08d2ed792154e2d81a1c319d3282aacfacb537b28cf0ac2f3eee4a25fc52e955cf42b0c4ec14f7b746a0fa57bea81cf736dce0ccf1e5c7b283e9eb5ac21d8cf7272703cfbd9c6885818d30944fb150b83a1bd3478ad8fcd56a7ca8fabc5a9d4d650a94fd1afa260cf4bd1ecaaab16a7521fecd3a95ab8fb5f75f37b58f8ebe719057bd6b28030cf0c4faf656355957a0f56a7e46f7554a77b3cef0ede790fa437285baf857596c030c50675d8b396f50a5bd7f27c6ce23a05d77ee7f19cb170ce94fbb9e8575d0d5919cf28dd5f4bbd3b776495d6f0b2f06415fd0afc6e0f7e9a8b7e853f5b2a3fb9fe677d4ea7209aad1b153154c05099757794dea8b030658d29664ce1619b021474c716941fbbee7b3f34f3e94475a4c7ecc89590b037eb8ff49895b2f67acdc0efc008d2d28dc31b1ea36ebe085a40c49686b6f379c354a4d387aec521aeffd83ac0230ec1e99d3d7264d21ea7014378060de19951424b6000920d5442ff26c54b47cfa37dfdeb9b941fa4f4d0213cf326c5487b9e37735842fc4759b27b8294e5a68ac39f33ddfde3457777ecbfb91ac233e807fc6175c79f6d5b95e92824a7a7565fbe5a5df9e0db6ac9b61a4047d2eceeb3628d81c8df84e37f670d63207294c961201ac233c76abd94f16455955d158902050c294c1eab507c8022bb75a03029cd5e5084743e35ccd1eda78e7aa55c6f358ce91aa0a82177b79f8660d69b5d7dd97c9dfe81032b5eba1bc53a9d50ff4dfadf5c750f762854d0cd7b601804bb813d151abeda8d862f5176aa9aa401075b53fff39f6d75d6d2e079291a9874b790de684861858281604ac5538527b523c74e981d2576c06d47889724bef6b49364078a3c491294d18f8c3bf53d571cb984b2e3481ccae847d632c5a54c69cc7aca232ae8a65349d44d15e9313ba7c752f25f9f65d1af24c6ef7362fcb0af5ebad1eb3a1ad25243d6bb08f860a38a0d0d3075b13df9e109f864d63e723fb9909fae2431d532bdae1ca6ea7b2edc83eaa8ebfe832813bc84f2129370687e95e92a7afcf4a351eace6acefe5ad8869aa164e8d3f15f984fac62a56a767c52403c93de3c6945f8f1fd998273fd0f091290ba475801080e40b20001c00b5cb8a800373aa11b8e1a3028f7135743444d77e323227eca787a35367ec21d90e66ab817ec704244e8051a74e34c5f2e2744dcd59d689882f3c2acbb8760d6c3316153f78f4d295c2dedeeae3905c8b884c82daef3720a08d29df10439235774b7acd2ee1fc61929f293119bee268253c44c47ae0817aec816ae884dcc1c8d99ee08a3194c47ccd1cc5e344c3a7234257044c05419e588f8d0117344868808898fa7c490f32fbec5dddda63be6101c9a0f7a4e80bbe95a2e015cb804b01220c401cdb9e0a5db0556b760e9fd4c2fcc5dfaf0005191b605ecf5415b5b6012b39885cbb120c4b15042fc70de8cab7dd8f4408f4380cd08e891d9031ce0871066bb6a733cee7007b082b90378685fdc9030dc1021dc873ca9556e4809ddfd4d100b09d30901bbeb1412a4bb5718a39bca0fcb8be6c7add004b702d8dd51492c615a5d21c8e454289a9f0a5cdadd33b6a0732ab05a85201d712d9a1f67002e66867d2c16f3b573fe07cbf97177c24b52303c319da549fb550f3382c4a008ddfd5928767d168a33b63db1e6d5743c4a27314abf9966bb4a69f6468a9f7a77be2ce55af3d59a6a2f532c666bec05699e4454c54a39a636bbc01085137028b4381446e8d8fd0b7bde7cd1af5456df5511fff4da94756fbb3be70453fe35c8e99d44988618451a49c7b16ae9a5f9e7529246f9b1c49f857effcdcb43e90c4bcfda97f459e7f72d8f18a4990bc0165c006cacbd4aff312fc988414afd274d825ff8f26c5b1e419a2df69a909078136f1e7124fe1f73554bb113076976e5f79a90409a47306fc25c4e3cbf9724092d651c5e29a5c797974820cd6eebc8b1a9e69972b5d79bdfcd2a975990669ff965dd666f561a93525a90e64b8968fca7a41e98a9177e2917d33ebe0862022fda25c35fc6a8d3a9cbd8056220643a760fc40b07448b4c71409e4ceb7140ecf79ce57e44f1631673ecbd3aadc7fde871d2dc0fce87195dca66daed7414a7a7f3bc54f72cda733e84b4d7703dc6d420ae47976eaec793c9f2c8759952fe1ad75cba4b5ccbeec8f5e721a6bbd23cbc74c73c8a22fd2d8f517708031e63647870e96e1e202a76854751ecfe6b78b03abeec4efbfd878790a03bcadcf10386e10ef00e56df81a91d318851ecf71f6ab3c388ad23a80e2175a450042a8a3054849b2224a1030d3aa6a08346c70967d0e88e15672f45896bba1ac6aef526b2abdfc4e53fcb316b6a623abd6c7ab123951e8995cefc1069b7732675c6486c49f9439645043688e0012230e98e5d0986a78c4ef09b4318d3dd73083b6c432809a1074258a23b4e8ca5c4f771e9ead4991242cf1c7344fcdec43ec70f734ce9d8aa967ad37aad3d14e9cd2949345d0d63b0243590e67564247d08366fd0a5b93e7d5d8b3b9cba535577f2581bd4d51dcf9b5fcbda2070e6dc27faf9e9280e0fb62b1d1b54ebe60dedf73eb14ba58790204ac0d0dd5d7d70c250f7bbc7747635e4f9cbba4ff42b4ba3f8d0d2fd0d4a1c09f51bc722bd896cb15851fcc6a9fc41a95b0a5d911e7f40421c5274c78ebe661c3a6c7178c78ec2282dc3f145c251d470dc78297f638d378000c3dbcd2e5396c75447713050f76f30e9b87a4348b71b663a74234c901b5dbadd280a726301dd1dcbd66b838aad0d21a2a95236d460e3036ce4b0d1a38c136580288353e68535c05863026b94d6a0f181988eaf9f65fafa4cd3f4b32cabb559ba8914abbd1efc2caca4a332bd42dcfdf57f7514c723e9898a4270ceec851fc535eb81dfd1970fa4f8a00435a450e3888edd4b293dd29a7a9f85b3f55a3866bd881397495c4a8f36477bf35f97368e29d86af9dbf8cf32ae0127f6196c621b25f44532bd423c725ad7d1b943d3551a2ca3b95a0f0c332d59965de5f06704418e40a3dba50317c87841464b77c435f34e4c6358699ec9286d23131485aec88ef62b32416c0e7c1083b61c741db1e352a7f2bc348890061a696c200d273898a3fbf3521e3f1bb4e160880d074f3c5a1f04eda4c91c5a97847dc5610d3fb1f67222ebd179f32cd1fa1d68cab1f7303d92bf76c4ef8c754f34724cca987a758e1cbf42c7dfe75af56648aa8d70fdc97635ef64e1f93dd082103183335463a88ea7c684896058c7788963e807b3723a7d78c304ed4d91c5c1b29b9a77b2cc3063061366583143487794b2477a9dd379ca0853460e9d857aaf590603badb01bd919106195fbaa38cf2b3fc05dd27c78a93b125026076f7bc9395936be7754f869031c68c0176471cd23abf31c6b07513c38c184274778e7b9e448c59c74ee5988a318a59314a886184d1516d6170e9ee30b47487213b0c9a8eb4af2e307cd8c06880183b3aba27c6026274620c73498c8f2fc0c42fb67477ac810e6aa082ad063c5edce105165e5c2f70362f8074471983d56aca93b8a49b620f5dec74b1020dc8e8a8dcc6c64689e915621b7aa301dd68d0d3cd9fd56c5c64e1e2062e485c0c81406f3360c10c9cd866f0b3853113c688304538d451c5eccf82bc4891188b59fccf930417291275925c1c8f455e533c26e9bed2acca6540870c9290c19418e011832e31606d3108b2850dba6389d4e39186c6bdef7e36cdeb163b08ceefce12383fc7b9e4a0f53aa5b540139cb4d6e71ace7d569e3ab916de2949b134f2d87d4d0d5f1dcc239e349cedaafb9c5a06bf1d70d25ad9d6ca812d92d858f591c20ababc20005a90f12edd5adceeb5f02cce64f12566f143c4350b10ccc2a6bbc19ce9ee6bbd03a3820bc2744749ab79d263d9054531bbe0c9b553ba7bf0b44007dded13fc3edf67c588339e380b9015362c4ae8be428d2b6490a7bbc74a3d4792a5973a7eab33ef64d9d55baff553347d9000c2d3ddb752d9bf50f365c5996edfac18a3ad10811539db973abe8cd15149fc12fbf2a43b922af5bc39f2da9db9869e259a5f82a4aa80a30a211abf67abe8b1597654c66c15469a8a28a8905408608a30a640620a2952d8214513526c8933589e9f2acefb5dcc7a27ddd43d894a61a5bb1d96920249f739fce9e864755134d151b8a2b0429542318634f214145a3a925e7ead93e60e144fa4f184114f60d99ef0e8eeffdf1340bc7c89f87e07b35eacd495171668b66e4ed4e14497ee6a6bf3b3b2395142843531a663135eb626b67413565e4d7877c47986377c379978a38564fd289809279890dd6d73ad4ecf5a103361e345414b94e9ee258ae88ed66217edab0a92a4604c0a88d85230b4a500022908000adee8ee6833c9f52f97cdae212b5ff93f0ffa593d68e392a8e434659f67962880a1e08482215b1738ba6cd1054c17300a49cf5a107b565e31b9ab528be5042538019413b412586c01110b188cb9363b0103f9b78b43d7c622a95ad8c85fdd0bb8b8f1c30be60b9c6871460b31b458e264fa0b6a61c357fa69c1026cc2ba07195998693f5d30dd5c161ec882280bcfe61adeec25ecc3bb3b6c0e4c0b3c6fc2f08dac89c194e00218548be75f77c11617b04e2e38c1897bec60d3b916eca005578cc080210ad002195b2d187d162cde98516041022cb6c050eea70e8b1416056840a700308ceec6cd5d211bdfd83f8c84757a138642b180b5823397722b48a267d00aa0ac8049471ad28967b055ca0a3bba392b42ce8a18bea8c17df9d29fb517d3d41758165a4519ae8a2fddb18a2ddd5d85952a5508715151a669547ce9ae92f343c55f3b9f4605aba6865408e9b6969be24c37378510d57a616c0a15aef4a250a89f9b9b228be3a2cd4be4ca452fc5122e0a3bb828c474e3988ce20528f280620928a87050f03cf183278678020af7c4102f66baa3b5ab38846908966a93e6b5ff289e341b1449a309f323478e1ca979b1afb67a995e4c7062084e1cc13931c439a1335fa552aaab5fea5c2e97abd5041b4d00d184138e89373826b860227724e12423b7195669ad16938e694d9e4e32177df56073c6849125c2e09680220a499b4f277925e83eab68fa60ef352fac846fae99eeb3f0c762a7d3c8f184d13a4157c6e1e7f2d0d6425b0bba29e1591464028ab8e63138bd974106c714c48934f773fe178de3f97dd46336ea7837902649e011e5c4f36379d6d4cc5c53a75f10cf60d4f443d58b2c2d2894411eb17ffffd2cd73c2dd3f006892b1dc952ca230d83d307fbe789bd366759da94ea8fc757137cab90945784a4bc627386b9c7d74b4affe6df8cc1d0ffc3b6ca26eddc8b9962fe2304463cf951c48f158610c10f0f74770e0a102f25a217fcaee6ddb93334bf8ae7853c93955365060b7dac0d9a77c7f3660e0df603040b0a1574633f0795bac1a96a296d0275ff7862ef57ead3fda349b73a9d4815e735da89c57e2a8e08c874f66b1f3973ace1c3e6c71b9d44c54acdd787a77f9968a597857d2c46cab039aa3febb4fe52fa11773fe1988dd834cb35358f7ab43b363632b813b791c18ff8fd222a3b9babfde8f4521e876c94789e276c336cc63cd7cec64689976a451f2916d6b511733f7ce906e0ff4ab05ac3013021a7abf3844f27d5fcc1ebf611816ee463050ea0c1012bbabb5ad7a1c2f2200ecc3860b30121b414f292f498da8012dc069e74479f494e03e1a59d06bedca981d948033ddd3da4390d38e8393e98e9587d0813391fb474c43e58f1c1a69b8a65f9d08398ee590f4af450d4036b5a5bfa9bea21487706ca449c012edd1167404b6780d59d8120300c7cc914c4df61404b0f069e74e43050c26f09b305dce21d678a0730b517e64187ee488ab0fc5e2a8d4a947e16dac25eeaeb94fbd3eaea94c9ea72706678564b659562ea33bfe7da9c337ee4f183031430a10236dd5c0550e028700705b2683fe510cca1add4d5b9e6b5397f2d0cdf3c5d78024c2450a65b026024a045029c049868f1b4bcc0da8c8a597b65c434188185eec6d4a75379964e204380d03cc595cef0ecd9218a1db4c8bb03d00e425a0ad930c37356eae8151b64ac5687302d64835fb1c1a30e321d6a72e801978309623fcbee33a01cfe74ffd1a01c6cba5abf1307331c0e5f1a071087273874086621a3dadacb1f675ac234ce720d954a1c897fa5b9ce2cb597a47decb3fdb2a9e6d1277a79f85afc4db0f539ec68ab6507173dba9be873285fd3de1906e9f6538c08cc5d34918c6914ff5950ded2dddfcd1ca5c1301bc1319bc3613bba63584c77cf38dc05cb6e9fe1181ef58cbb336679a8b0b8dbe5efac2f938e379ce16e804177f70d4adcc0ea8e37b805cb741c08caee9931d802fdbe8c2d986e5bc4d99c2a473582ab41b46c655ef3ea775d88bfb3b09cff65e398c66294fb80f01591e9b558e647f47406cb5e88b3252a75de0f3c223c9c213686423084c2d20687050a2c36705862e8eef831cfc6286de2a1f99e6ce2fcb2eed6f0ad36df5958f5d875292c02a035a03f74778cf1d6aac49a90459f749cbd81a70f1ec880c4cdc074e3990e42f28a90149279466b933655dfc9eec4d4e3ecea0ce7c59834eb3f6da63c4effae756fe8fe875f3b413f2bc76109e39a8bf16b869dc9ca7cba94ee04357554f3cece2311f56678c34f2f7513539f976296c78e0a4979c5899ede9ce3d7d44daca3f2ea79b32624f1158f3f1ea5749b531e277ecf4bcddcca968a4eeb3b9bd3238f1e2a6ce93c5d1d4a36ef77f727531cd794c7e1ccc9d395a70b855adde0ff806e604f65dec972004e77c4377a34871ecd21b6e2a53f0b9d653ad43f0af09303220757658c6e205654291a215565862aa56ef0bb33f0bb332a666a5ca7530d152f1d95095061d22d853aea2ad55e5764ace53bc58ea644de3d9eb4d49424a66c692934c5a75b0a95ae48ff091282724160773f93e6826c5a662cd7e2d21107b5661d5b4c80c6f4d75e1c90160e88c549a9d5c374e4a470e928058c36526cbabb5963585d5860f4e6cb7a32d64e94557b71a7eaa8abbb5168ee87033f33703f2330b8550fdc2a864892b6620bf3b9810f0f9c4f4e94335190e0a2041145a7bf7be367a1f84daeee31143938285e40299ab4865e841aace06af8a10602702a34544380edc1629153a9d0a305d7d3a58745c3196b655eedf7f9d74ab1945ecaa5f4297dfed0c085a3a1ebee6879b8e078a8e07888389eb8538616b3b54016bf561e43f79fe5fb39b4a89bfbb54e3c6f153f3dae934e1f8fa66a6bac545667b7e325d64e942496975423e92a794d7ec24e7a8d3c56eaa439fa8ede4fc21ab9303d9df0742c59d24d1e3d3ac5e3df5478b3ecfebb242b5e728d24cd8a94249797ac8cb0c413c3289177d5a335c8de7f406dd2bacf32a53ef883f1d74cabc8aabd436290021f46a46c52bfcefcb22643ffa0c49f4b9ebc6333c8d13d836b062bdc0c2830298363f205c7640b935577db34c7c4058e017274c71f3f49d329d6e627dd14433fc9589b9f7c19497f6956767f67c6b8687ef34e70f49f6d797e5916dac25efb5893b393a75cad67619668e669adf7d96d3ed5eea41e2d1ae19fc1668e47dcfae151f1f88db2b8e3114665d6c326ac22fae1b600a39be433ea916ef2d881261ce9a6ea31ead7faec242589e433eaf1128e9788fe8223e9a76fa8522f478a0fc6dd54ccf0ece97818d2dd4373d67409d1e9e45a42743a51709ab82436f409b82405e82544493cf0a32e0ace58c64f387ae9e8434ab4d2383f769e08a44d6770262fdd7ec5a4a56daae9a6db1400ae1447098d1298f6929fb01317725de14a60e54a534a1d2787248c0e87844b8a43223924a4ef8e3881eb4ec401b405a8747516dbde3a1a0900802200531000002040502c1a10c9e492e188f00714000059ac46b4744c18296a102a848c21320000000000000000008fc81b967897e3e44619559e2aa895151a1839ec6802022a4ec17b86d9f254d233e8ef6ce58ec8e35cfee615e90e5386b5d9761316af7e54ca0216970375f6b1571e627e842de3d4b8119f656ec9cbb817aef3e49b53e2447522bb7d03067144e3c3f4458b1c7c9e23d3d39567b04d4f421a737b933b7128db337841a4243f6f83aed30479db68c3916e94f3a83ca8399a390a58c504f5b5ff0291ea4cc59b26b73dbe4e4e66d9bfba591efa8101c7264a3dc8309d7f801ceff182b8c17ebaf42343e37c115ec8dd67ef310bf07b1b5372047297e8d0478c41e63e7183b8c112f28f9f6a0bab510b11523c20986ac2b0163131fb5677eaff77a360b3642b4b23de06d3c4195991d5396d1856955c5bbf90caec086d32637c81ddbf1bd08ac327aa3974e38c54e0238cfb69c690166704fdec663d8e1bb363f07478ff7015aa1f6ca293fb91bd0594feae7ed1c0cb1b9193ebf4e9db8b0730dd0a95e6745b87396e638fd62f1e556627fdfc5251cdb8b44cb66d4031f0b3eb9c04efb435cbd62e4efc64075fdc85c2859cfea6d3df3d6fd9fe4658fbf8f261673c9173908317e8e1dbdeacdaab971c8732116fda1efff3559ebf43a3972fd76e0fa902f6ca84ecbc88b68de1c3f8771b760931ab986a08082c21ddfd081f2bcae18b7a6c0afd465498fdeb27d27755c0c6104f1d811e6b5e90bb700bac6b0f71d0d5877dc7493a9b98c01998e9280de544fc55a8d60c4ad030543a79b466a19abbc468f3455438752dee219abb7b94b47e565281b954512aa126bfb6f3474c0bb02808144fb4414bcabc4cbf8ef4c38e9b31981b926e74f21f50450a7122d8968ed65ad2e351a3308a53b00b337715634aa5984737ce7b44e50d5d53941060f803145632183e204a755c4c433bada395c7604ce19b4a7d2b9b8cc45854b511d1a4abc2f40926271ab3fba3b111db9aac7978c7960408401d504491d2b0a8de845819578e26d234ec01aa20eaad74aa63426bb191f30c49ef2d024c9d59c2f6e55abd21ba3c86e709a504fac68ea3023b1bea20d5f6879c159d0dee6f575e28fd03c9a29adcb27a62bd6924e171b0f454ef31bd33ac504570812321a3837b3ca36f440929622a0d35c99ebadb60029ca357a94d4b43043b7ff1b175448b29291c5e3cdfd664a6e0f7605b3b565785607446604ed3360e2021fae551a9306afc9069d8c9f7734d934e5870969f5b56f31d22d25808d89fe734e6124b398fcccb41600399e16295b41af624b2698a6f96464dda98ac223d6505ea75ac041fbbe99be7ad189c1d1397d170b35bd30b9b4d1a29fa004795f4193b09b77147e79143f52c97f295ec109dc9280f2a7a8afd9e738769072c7e566561c90586c51d56249ab341f5353b9e4ecb0f33faa20802ffab49b61072515d4d2d8d7975781da5c63e8d39b1c0459c07547daf9cd88495470706cf24db5bb03b7c4e3a234780c1f1c1abc4723d38a9c12ad0ebd508c68c4c371459da35ff429551efad0c979c23c432440011ffea5a3ea62abb4929599b795e5f5ae119fdff49d7423a48c6eae8df0c874112105633c166b25e239c859cc931ba0d7a97bec2d9817ab907c9718c4d3a97fc3f4543fe556cec997c31d216b0c0c93c421db741dd0a4124ec2687a7af8907bf5cab84f0b2394118e53c61853f439a265e7c73493b257ce375e636abe8a8e07f19e2699f0751cd1ba85e03688caf4cad19318bb0a44090162bd32211d907ea11a8f12b7140199c1a228e44e0c817368e8aa66938d74ec69b95c1c02c0813a16c7c79e89dc2bd2400080aa3253daf2e90098892d46c9104c6258d3a5a9519b8c5b19a3078e3962e11537b3ecac4c638ed335c900eb85a2d8e954c5d16add080a34ea8f04821cee979fd7f491a9b671c4d900e532c0099cd854823212957046025353c54fd2a90887d38d6b909af6e1600bbb4ef7d984adbec42eca04eccde4f08de0fdefd320d60076c184a0514898f159ca843309744398fc37dc095bea46dc74726878313a1da73ecde6e8a9bc33252eed1eb5df6a15317c6eac063fba6e8c2f4d7787f4347b19b14349a90dbeda0ec8137b96d89419062a04096489ee28e7b50f4c24af32e02ac06f82d07269d9db1c2f33391b352eac3929058af529f9dc7805070759cfbf1be940704f99b20582f8b8c24fc2dcd3034eca4e2dc180b263742b4dbc7ba337ef057cdb1b60ff2a664061b7dc08b90db95807c1813f7ec07cf8e585ea11006b0c3a26c9facc93a77247bd475c281345034e00fe6fee30e6081d31d9b50163087a04f3967c6027b4f316fa2062c0e885ff7f06791d17d40e6a57942174d54dc81bd66c2714d2084a1bc3082d4c356389f1abe7db3584e4dfb5f85dc490d5dfae36b1c33b69d48e35351034625841c6d8e1b79d56c070c3465959063d113d7e8882ee6dd8d14fc6d4c80c3da19b65d6d2679ab2cd95c8924b66518fc1e2198e196419676c031eb7dc8c697a28f2006c76b02703f095417c3add80e4d89693b6a01f0009cad61f39c9ae7db2cebf527ebc9ed73b5091ff005b6d93995251e944b39555facf56e70705876a03ee0e7e49ad307927d2293639093a1d27a329b51af4fa861e2d105b713e551c9cd0ab1450ac5355a9a898b6cb2718573eb9cc6bc56eb57502d95ac1919b1663c438fe86707102e22f48355e1fd427b25e8a4989acf0790f80fcaa613eace1160657029c6c03c300bd786f5eb8d5f6705509a64de5695152bba42696d8d2957711a805101e03c14c87edc5499dc19fbe14d96baeed37e149761221f9897829447f2abf557b6260e33bb250b9e10949ccc84c208cf59740713b5d7a7e638de61334652a695be3db33d0dd27db9ed59f617e232bf9373109e6b7904248698d87cc7a9c0b8c322fe1454aece3869893d75929243d393e50986609219c7add15531dd32aa54168e2906b6526141ef5cab99c9ae47e44cdfc8caab3837d83c594844a74fa77f56bc4df2e7d9d978986f82d80e1111b990f58002f13165970e844c98acf13bd088b6df53b76ac660ffe1b9d3255fcee2ac073e2be7e8abce79a815cca2e9a3a1af077c7e7050444662f4197ee2b61a6e9f99cedacc932429c4faa86df7a5a8519df57e6a3032e10d813c981b220fb7046fa0bfbfbdc66742dae8c4bf50fe3d946ad52f26f4c83ceace84021a1208fadfb7c04db6143434b286a7bcf67aed4ad585dc70ef15c741d068b75b7d0c0ca59d9744abce1344472c347e911eb4c89d6b97074e035bbc6a6a0bc9eac2bacd19897ee81c2f8eac1df9bf10ec895256081752686735aa9632a6701c7f6aaad9280a7639e065f67601784a0ef279c81363655132bd65964f52d10b6edbff4f5c94dd1d6b27e3d443a86ee9a2574ec2ac476103e4765995d986aaaeceeeb439bbe6c01e3bad3158adb26da91351c9ceaf0241962a56149724212c2f46e6f16157f9b677490c531f5c5eb90efad18217ff6a30c5581503cc18d90f3030d22f2669e4fc71f34c2a70ccc3d9d16bb93270d4b5f1c9005491f886b66355c7080500b49d639c771367b369c0277d4936d0069522027650fce3af4cd66ee4d43237915406b298884bc20a78c9e0f61daa58e174825a36c295c59adf2c2f56e0eae80aab01552dc14d9b7addd0ad0e4ba686c1a2fafdde76829ae6f448dc068f62b817e0fc829b1ada73260efcebcabce0c4e6e8b030876fb509d5c4d6fe362fdca3cef6d69cf6daa888a9c67f781f5e4b02c946a5fe9b06a5b856b1544329c7e0b67cebe1204cdbd915116144518cdb9f7d59ba229897c68b9e810af54135b449024ed0ce07dad54340b44104212dd67a3839a79bb01c84b7dd11d41d3ca5c350e9480877fdf192c81403cb60665fef94ea8b026f1fad7575b9d338102b2c5792bba1e7d60bf478023f1cb5d824cb4fcfee3adc9e04d0d330a0562ea75959b880c29764d73c241979d6a03881ee6e2e09027f73591ef2372a4a8f5a1f6a79edd8f9987a0ac5ac3211c58fadb3cc72b979e11a733763a0313a2a166f54686ea080c231c0bbaf3ee10feba17d20afd80dacc67a7d3034b564ed46878ecad88dc62bede10f3b8c15cee3ec5f51c7cf3c212e430123c9ca9474018671309331ef9c9dd264f0db4642b5c5d0f59c9a3ab6cebc6da02ab07bbe4b50090ff50833311ae2d05a4449add9b3eb74a057d0e835d28ca7560fb18ef83fe09d4b950b16c59b20497e2a0e3b28ef1259a22e7b245b2232bd12ff1bd91787e3dfeb2b60db61caf8b35e87cb1097c7115995282da7f53f5a537e41be3655bc19ef00da9103902ed3e35449efadf54adc30dead0b36b74eca82bd2845e33fcf8b965d2fffc79ac2c9c8b3ff6ba6bf79b76e8656b9120b7c21bdf1a5f407708b4743370cd4e07c4e739257126f6c036cf256547a5346d515c81a9da0295b024933aa7a061605a3a7bd3a7868ddd15d0d200b4fd6459d2fa3eb3de1da1280e164544687c3836b0cb0a12fc648c6482b040cc81b3f165db0412dea766f383523495446d7f4195eab6a0e1bf1e88b67e03b1828230b346a3eaa640c6b788e62244e2d1bc8853a8f3e6a009c6f6006f62ccba757226f35694877ceff2b1a788842ca50bbf7fbf5dae6392a807f4f44b09210715d4dee1dfadb8c99e2bc2e55b649e1d315cbb3ed61add7b45d7a585723120a622931aff4f107b08639a3b5f7aab53d551b7312f33565ccf6dbfb9a748b2ac58c1965d3cc5895486a64d227cce7229726e347b0d593729607250e8e99bb3992224563c56f7592b22f4a8ac8f62090c248c88f47cd71f14eeb8f287a0fc37551eee1f541ada8568897d9164585d77d23e0cb278d1e311da50624960c00f8f4cc397edc02f21707a489c4e2e19143c1576c0afa655a6eab396f2f6f0b99d3c7e090338645417d45a2d0e4b6e262f0ff0ba601c07175fa4747f881590995bfb77ae2a0efcf26ce1f4552ced6a8215c15dd9c46085e0a72f9471822cd6efc0c09e0361676a570aad21ac1b680fd9724050e8471917a33cb3625a699a8e95adc91f5e30f3d4ec3597b4abc13a91e59a6c6c814e32e7af694391167da41d112bd51e2e8629c849f081170732dd5722802067df79fa18ca4ec328bf6e355615a146ff8de56ee2d4e8025384cc445453b4b6b6e0f77c5bf8f42deb7d08d186dfa6480de4386b705e25623aa3153de8d31e06f385c3711e110a600f0b809515f7da7a0f39293570d4728d4fb0b44cdd4999afa749a949652b477bf1e0bfdc43dc68459ed1b995d576a371894b8b74afc0fcaff4a83339521fa1ae551e27f951437748a1272e6dfef58ddb907b467caec6c6da3e836086ca970dbd01a781652f80ce56f232776bce5ef595f8c4c80469606ed4eb7cf3362c33ef0fbdcb57a61f159623f68f97a4f7596e0176b091a78ce81fbc0e940dbda40028057819b7ac9304ccb188c12ee90a9fc66b0919deb9a610b4e8cf3a0ccad063918762f3be00957294104499c763e694d9e3babca2ce9475021a076974cf166a1da311ea6dd968871b0ac93ad801da0e683ff6d5aa0f0fcf9542ea8e90bbc2bb8769180cc61ce9504a6d0531e7694cde57a42935f15700b330a47cabb4adfdb7507df229656bc88e634d7b83e6fdc961dac72a7461f64dee41cfa32a4f658f9f50e629f842da89b0a0f6abec611566dd51fbe374a026aa977dfd2e4d1ded9c6cdcb763ce814b558299a0d0806e5aefe69c8d5d79b43f611a1ac7ec8f2f7d8b2f48680613813523ee517e239082cd4a07d0e3ba9e425716d0a89ccc90abecda8642481e779685cab3dda6715df6a2a2df91a32c5bba5afbed7bbbe2d96d34df5c2a8dba1d3e371e51ac19c183a82356ddb0f3773f990c26f8da00e763dae417276619ac1125b58a357e29241868e9c2c872011ac30e8e532130951405195328e9b4f9c676570b19e776cabd5ecddbe30c00b2e40afe3f1266e063a5d2027dcbf41563c3c5978390ae0fde17a26bcdd37985f34accc3d9956a07726e7a044527025ab613c4bee7ea59bd459319cd70ad4e4a3f534aff0bfb79a3022552e22f4852087cabd070e02e9662b5522d97a9ae9c1383beeb212b55f03e1db6518ac11ef913b04ea370ca03dafda9e54b4db805159c12d671e18a760559416d8315185a0c6f920f7821d203a5e1b9f566c76159b276d95ed89c8d307453ee55c1e922ce0f14bf6a7aac17a870eb3ca6ac1939eee52e2991fbb6f12d384a2ae4f5e273c982e3387b7c4bc94191d54739447a4d08c4a829e62a5dde8fa016e12ec3cc83a4bd76342cb131a1e44c150620fb00c0f519710e52e8eda4f6143764aba1e57dc69f473eae3fc49cc0cc3a36cb59992b866e53aca57d2ee568d4fa312238143b4e22311ec304cfceac4b040eb0fe7fc0b6c2353620b4842c90110336d8067827dd9fdbe234b8e494b35216ea4772649fe48b141e96f3bc058b528500ba21137fc49fd112f06983571e7862b5bc3e7ee6f8e285e5c4013975b6c6276dba8545f03b970d9e1bb3dc3012f996d4c5bcae0d5b42d106a09cf9d898e34b10d79b1c73181005f835dbbb2450c26aa3b962de98804251b1f803db474524141ef52575cfd98dc55d2c805ff8d552cec8d94d7404a343da5f120ad8e76ceea960c07ca551180a3c120affddf743887b9b3cd70db2ca6468b6efcd208b759cb20765eaeb18be98e39ec254e030bcbcf5ee34eeebb5b53709b4adf060e86e151029670063d11ef03afde5367cc3528053d2b1d7c2f70b658d800c23985ad2a8411c6532a45899ccf6b2903a433062544cb868aadb76ce46f37751e84786e7bc620a45ac71ba8b1ded6eaf92397c6786549647fc753646a076af1bc5f462b0fa42c66f597fd32ad3c7a8ee2e80cb94371541cf8892c3e95314cbc1841d0f055e506a91676706a3025dba10f3e940607b7c8bf2e3c9e2ffe08651a5733890b6e3a1b6f4c5a91148b4240e1c33e7b82a8c2af4c8d2ac4766d64e60b120a99083966d20cad8a4ed812f5ffc152497cd83146bc5b2f5fcd01f1e5424bd190adbfa50fe1ea616b655a5f362b2bd2b0951d2089850e1bf2bdf71443d17751807ec7d529fd3fb0a2ea88883b371068103ce614f1c4fc63a1076426a1b252062cf57276757b2acde85becc2483306bde14c2736d7ecb5b6c6c6f41d0213a748db7dae869f66a724c0daae48375a2ea0de98517026af0e096dc8457904f60fb4289b3a4b7403bb161b5bd26d5db0af34f41a1f1068018891424e2ca03936f0793cdd315828746422ad1cf54d04f0ed9ff75479bb31090530ac467a79396c5c7d893f5b697136fac29ea00248c25ef4dc430be2ed42a06dc396fe52b6475482af96c359ac925133fac0ba3089d94b945418e085e0d228c8f6c42374deaae843baa7f7bef3e997bc93ba26502b20fbc85198a51d928111dd62617f49e1b1e492c66a1adb7af447109c541e9606c80457201db861ec659d84ff500c74fb3707608cd7449f6a9c242ee4eb80558c20e773c2a36f5a46694c6c7ce87d3b042bc3593d9cb986104b9895324ed31f84790bfd02c311420f2ee5b2f84ce2b063f71373681c42577a4e206ec5133cdea22af883476431ede33f3fc8eac05a22b89f2132c7bb58560b134298ed60e6ec57b91eb6f158d201c13ecbf4b85cfbf6b0f8f430c2920ec7e9880af6082808092d034bb49264f21494cfc5a0a80d7d69f5446e06e88e6fddc9108b76735ea1d3120abc5fb1f29e640958f845d592fa6ec465e094bb3016ed8562f7fbffde263169d9e39282ada6c172f1ae38293661a5066b98962901db01e5bc2aa1d88e6516c59673f28f5543b4e9057fb7e025cefa7de424ff924981910cbbc06d385fba1cb970a8fdfb1bb4f287be2bbb0595ccec559c932e0ca668ebef6963eceb95011cba4d3a8f690188d3efb01b1f0eb3b8119e0ee737d7c88498517ecbe4157cf88607d7b497d4c5214b798489444591dad065377f8cf390bcc9bf2764e9f077fbc467f10e21b7a0704142294a874c73cb205a22cbad351d28f890545a6c579560fa439bf1651c736bc43fd6e670dbdb45a0920df93ddfcc7502203eef241c7b39d867813bbe58ea451af00df4bf6539c949a590b4aaec8933b857f0b6c285d38930181c60a2760ed8d1c182d04d0297b36aae03fd2290cbe6faba60b910676240ad3c35b080d92f663638c50291b6991ef969d10e20eddc635782efe49c7f98093feb63a12bc632d1d2345a0ce36f5b096f4e90545ed0100f6830cb5c56d26fa4848a11552b1595d8601e26788037068ead17a840ce72650369ccd8bad91fb4aa2fd37d18907ea2de5724d91de18a4f9cfd6eb77e28f2637ff522789ca00c6abd5ba0e07dadbcbd3643a97d579a3d34c9374346f65282d3afe9cc2e01b92f299cc186477e981cce379e17522939fd4222c0c656f3046b172c7605e4a3af346018dd1bf2be5aaea6b4fd6ecf2f6120a1f5bbfd5e7a59c1b8f33c60258d331c1fe6f0d2d23f345d0cb073b138018d2c25daabfb42b0bdacbb5444cf0f731f4e72064a8182666a7a93f74f1e7632dc3b01a2ed86268bf100c8d4defebb7302ced54002c1513fdd2ca56e2771db011b1a62e88174c9c49deabdd3ad8c370c68a4af854358cf1299fe6ffe3f33b0a6210b90c5da9000ad990713c92f8251086a906b3271bfe2045bce31ec7d06b8328d0d0d8c5430aef1f811fa7f1569f911a67c32169cd08ff197e6c999e3f1e2b3fa20a2ef3cc9cc3d1aed7588f7efe9e081219fc1bea5c7f37173e0509c98a2cac8d149a9d29f50ee91590da71ab716a630e69a3ceea4e37e64c31c041a30f4fcbf649d1811e04cc4565081288621a1439f024f86d90741bdac2be3e5cf3d812a2cdd96a5d85922ae1893b3e40c2b7c94ceae396c1688920cd7e17b0062b20999da20c77c122637f0a35ce5f5902a12b2343748de8d9d9c3f31ce8db4eedabd7d9b2c79aa333a06508bd18a74dac2dafcf11386d8865ce3632045200b0a58dae04dd9395914ce879da98b33796051ad35ebe3fd080a52de0536a3a26c9f885e0b7077f605ea46545fb7248bf5afbe2bce2e0552af1bdd819bd6bd15a9ae83558c09f634214e980e02b6520726366349b2bc4ba18c4312bd3575999f6ac151f152fcaf83b117c1fa64ae9a62baebd17c8a10445efde208336801b1c9ef5c6b6af60c4b6e680ee94f248a2316733b27b1ecae366e9ff4ae71f52bf30e45f242a321f48631aa0d0f09515fedc740e38a77a7a67c4e7bb79ab6ff276057d329be7ce37780babaace746cbc825f0a3e255fc56c50a89c4320b971624db4c03eac61017d40d471bd44ceb088c0d4066bdbe2838409c482773f8674f9a9ff983f69e9033c64311b55e1e5258f861456102f44dc20c490fafea918ec905973dd3d012118dddbb6330f37279a8f7e0e3940124e164cd56378375731b5d53fc7e34865ca9678e1b147696bb1a93b9c1d34a73d04df5020293c2722fd07363e8cddcc6f518799ba372d93df15cca12f2e0f7e097836b9bdb08e6b72c94355d6f6535901adb5306580f3cb29e6c0046032dbec6a7aee194a0c1c0ced42d0b7cabeff3578285064ac98030c2100e8812c4cbf3c08160d7ff9c8a9252f313427772c0cb500c98b523c8b524f154cab84d53ef9812a6b9bf851dcaadba53e80efe424fa29ecb521473dcf0c22004be7d743afc1d306c40f8865620ac28b117882340eaed836f678c8899452b6e57933eea5d18a4b4cd023524643bbb19ebf54fbe6f3a43a99af7f1a06d6755f39ab778b4944086cba4f0ea68574836279a98bcb3aeb36b13d5e5fed856d379908e3dc14a3fe12d44bfc03afa090715a745c160be73a1a2ef069a7017c868a2a3b4dce4f0b01d03dbac174a22f6a9fe114e778d00230053416fa8a30b9772e1ca81f8f056df403032d6531d7a8821dd0b1068a4f8ad7701550aad5d51bba4b06aae9a9cbb7871282a755049b0e059dac04f0440749444cdb47f5672d968c9d3a24de0796ba0949a604f95baa5fafe47098c35385c30665774966bb1bb662d7169054f57dda98eefd76f49499f92c26252ae8eea6b121278b38ae3b7bbedce83812d9f417867914fd77083b235f928a1df430766e868480ef5c08d89dd61efc6a79c2f79f9a3a520a6740aba9cb1db466ec4b958d0c7cf4297136de4851b16771e6c41228b4e571039c11732519ae454b412e17048924d8ff7feb1aa66bb6c9f4c65a12ac3aa81291ac6797a962b567eb6f9e9ae52198f1247c1eb13bd515e16c1a4dd645e1a14db008f25179627aa7c958917362e44550b6a118de0d6145bf0a2741288a3949726be5953b9f9993b489901da419d6d7c6a2ab147c17849ecac3f5022ad69a2726adcec024cddd78b6c86b2d2759d64b1fd1f6d060debbb01e86e0dd332b273187836ddeb1a2e87f4131ef786b9c2c2a401000d280be1fcc2ec9400d07f6a044f482b80df0da222814a5e134aacffaa49fb405adbf38080f34caa0bf02c4751e747d792a10588659dbcab48f535d50cd0a29ab43b2345ddeb9f677875af884e0b8e893982686753c2651339966f5270772d0508ce50a7a94f75aaa855939254e1065666503f06097054beda27421c54998cfcb8bcb45acda00ee85793b9ca8777f33ccbb9de4f099a50b11f96f86442d799661735cf7f5af25b556601560e23bbf9c84e368f59c7cec94c4a715f591a90aa1cf2c1cea003fa1a20004c6b2b2ddca4016a50a225bbe1beabae6b0e94c71c671549301fef103ef8bcdb9f94e9c67416e3d758ab8854f03e5e501dbf8b57ab18fcbe87a5c8bfa78bd0ad7dc394204345664798f9dba9705fb614288776bd68d210e6fdfe6f72d4f54d7f727460a9b8044f0950d31af862d30d5273196d46754ebcb3a021f34f00f4ff40feac76df0ae1d1bcffdfc22d3c438cf6a6426d166703ba745a5f1d65c743bc8e9d01b024127e2cc8c67bc5a1ff2cfc45bd3610be7683a964678329c7b4de7fc0afd3210d8116831d45afc403ec3a06288e0d2cb2477bacfd152d827d523f6568579ef0cc83751a4c9907f39d4647a2d3332af24534e484d069ce21fcc97efb6d918848beea4565a4ad414cac2a6f5966ad7a1545c4cac980eae1a6ceea37bfc797870c688012b54db3720706f328e98f48e134dd669aa38eed49e0317e61a36719a49d81204206aa5e47cc8044e8c7b50418e1bf033f9b73afc081aa1e48aea633ed068b6ea66a464dcd1fd22043957678c6b7ba4b505e0559a76d198c734663840538768be8f6bc09534e9b74c7e5bffdd2089dd0820bd257975c9cc67ded3d80d38da91656caf3866bc1b18b1646208b76cd3227b7537907a28f3f9c64c9092632831cdce30a59e3d63e7485df5488baf64ae086db16217a0d2450d03ea085a0eba8b4a5bca1b2d876eb91bb2167a43d1fbd3ba8f41d2a5c5ed9edcd0003b1f514c6d5029b9dab52481c88c20a1981a3a91116b36501c43f3a87d4939508345d8f9ca113ec8c74e4d146469db2106c78e5ed240b7706d2767403ee2e8f64c4999478ca6e2767c72841f811cdef271b9aa721c93384ab42b702b6a4e0cc73d96d22ab2d5d94711a948d4d0fc2d5b3ad69fd4f518b06c2ffa7b80d58f32bbd0923420e7c76aef208088f9638d470d2c2f09ce2842d270adf96600532abad6d55e1028c09c15889dc7a34b5e634bc7de83ec23474e6623f70396509012086b5655fa2d5fa9ba63b022c5795e379c480219ca0f694641b7a83e89d5b74d73194f872ade943d4c8ed1331f7a5afd6184878fe70d89787b74b2c6b5859209b3fca9f4ce9a5e2c1a01e0364e8b060ba981ab35ade62fec64c8bbb8f561fead34be8258ab84a0a7c622a74579836ebac058e0b7bcf342ebf71a571a856a53c3dfb4c3c463b1d4de61511514a9ec706c5f20d015c1cfb800202c53db83212f65cbe2a5eed9f85f0f8772894e9724d5b0b5d30974135897981c7a6ab9b961e187378cc9ec4d09769c3206be60047fd091fdf5ec743069b9267a8411214114d480233e035aab955b3674ee6f4d212df42dc6b1f2233cf8b153112fd0074ccb862647b4169d4f3bba5bb5dde3ab7bbf77ed8bcd919eca08b0bcc6863fd76791d7e53eff0cf71e05ff5a6159f804f98c65026fe3349b30cf4c95e2918e046592c1801f430734bbe65b008c7e136dcc5ede66f5e9b2de9b5af377e44d167bd0fdfdfec6cc0ec1b9c1b530bee7c39ad79013461f4ea767609955eaa58fe7b3b495e01ed17e5ef41bab23106db62e27f011b011047663bf44808ad880828e022e33c8b4f5c1df68b5cf7fc4403c27995a7182eb5ffaeacff08b157531a031d94c1910c314412e1fd59c9595abf39adc7f8418472a98d9497482f1d2082b230021f1353745c6fe8846fc1997eca2bcaf33a1af4f0cb7d79a9771dbc494cc567284fde6a7ab0c6082c08728700d9bccf24cb004d0eee5a0243fa8dc94a29527aabc5735d71abdbcf401d045eacf058a796de255f822ab5d4fef2264e7d4a519b604fa0979f4c674146a6f04e2e0b5d631441cacf23e54dce598ff3d386ee1c09bf37d36b638bcd1a7bf721cc0af410f370b57aa6eeaeef9da9b5783de0ae08340ace69355c6fe635d1f8f35db8bdd38296d8c334e0ef1504c13755cc6a18bc98a3fd41e880093ba5fa5c8f0ff816a6c38beab0a14a26c3c612a0113deeaa7af8d7b397c5304e1184d582d415b7ec1c13dee8ee6f82eb12784e6bb4b36b15610f72933833a426893cf0207f63f421b70b5838a5fde3309ba71c85c93dcdfd27f04d6a3831fc73548a42980dcc557914969f5e441d06364afc6d45a7345d022d8f1108c5b78a3036fd9c9e07c576062a868de377e700c03e6542e2b9d09797df65ca5de226426d51e5cf74c5ae24419237f89ca0b600d03b23e9a337745c59a39e3841345cf380f9f8ec19d0ef70c0d84fe6f880b2349f8e5488bd2f24a073f0bad7aed4be665f6076b02fc087e800feb5028ce190e5953e9a96ddc495bdbad0535538d4f5c7651474f3654ea1575168026d9653ccbc55c6ff022552cfa0fe79cec6acfd1d20bd4b847aa634abd09e7d373f8810f999d026255a28e051d54f2b3649301d89603d99a7863d1be4aee688691df621e7db9dc3ece8a64c00c24b752d633a5078ece479b4ee644ba6f1afb0a18a0c82f2a62911688a5dcac0f0c69e0428a9727aa11ec1392d876e8941f4797d06bed2cd37d6e3335c0a01264516ae8bd68c9fbab07881b743fef731b21ebe934a65f714f6826d12320770af095e4bda630ce2b1bd1c91d17eb948ebe69b6dd0962e14b638cca49756fc835645ba12d6f4213c829c147cafe6df45e287d04cd734a2790ccba65e84d788cbacaf62f1a7f84ce27ef8d65457b5241ad3420c3bb44a231b7db46eef492a6bc4fc494fc45560432649f59404f4b42cdc5fe6655e4bc237d9bf1e8543cce1602bc06c346264b9eff0b1b7cc7cf39cf80d0e3435ef0eb5b1c53ee1796b9e83949faf68dd209299a0a3ad47f2bbba60660ebee04701ae6af5db0d4daab80d0d40343795330f7ce0f9dca57a84f74365f0f74d6ae3e91f98477f144f640942555bc2401826b6509c0ee28555b314d015dc7f49108d57b0a3517c21850e318df1019f70f08ba7fa2f10cf60343e2607239ccfb97397c0ccc0465f3d7d7375b40cb42c8d76d8ada90ec44260ba06955148f4996a6ba64f29d8739d4257cc8ce18fd0ba2c5a414f915ee5103db52fa70c0e53ec0268adfbb91b01f869be73e5775c76a4c3b79a965e9f7e66418152692d286996a9b7e73f98a769e5b014b64659f726864b28c00bc19854ccdf7237112720393330f498f5d9619081065e3d6709a772564d0a419ad88d34339077736364f5df961d573ab9997848473440ca4c9147fd274afe75a603916f04d9d674b1a0a35c0a36d043bfd8623c9d7d300f7e50c7e23efdcb88ec681039e7f6e4cae940405bd7a6877234b21e53fa57f336c413b826fb323a5a4faefbaf09447574343168e670a749db08dd7516a8061ab6a1120d3dc0cc1df56689d28a9f4c1dc8ef421e62b02334320d57d470e8871fb8f58dc4a46346dd8d094931256dc66360dc672b40ba0e523d2c85782b4464211058706e9e1706765eec8ac09607e2ef575dcb355cc1051fe81a1c620eaaf7990a31372fbeba075780cdb964fcdd6d4dc56b33a0f7f68159f8e2858759ef89487620544362f662235c916b41aab7a33f2842d0a60506bc7cb3ca558619102101d1a02221894ce3675534571fe8cddfd47efbb3326673fee0cb9027838a63f08cb192eafef19f41b111aafd7225138d372203eea0505cffbc6c49c83a0ad0a68fe719ed259241aca94a3372e7b5d53d61eadfac2c568dff5e15837634a716785d7133c0b502830e37cb340a60c37dd82f50c5a42198204eadf5702e0c99d09d40a529abbe9812383f053aa866b5ebe1a19320780486820ba9160f9ba252f0315687908eff594711e16583b1597dc6ef5b6f8e08ca285f6b2aa6a8c5bf6cd57c982397f19f1b4276284236656eb32411c0b42bc0ec4343481f6f37a171ca94c382fc2690d10b0d08838ceeda2321beac1d5a0c9400bfec1e86dd00d8e8aebbab9a9e9d42d46fc9457f7beb8de0a3c26d5883b2e7c97910657ade29747dc45794fc0ef1d8b6518c2924309fca680f19eb783a55084f181e5ea1dc29c71a5dfba06332d1ede3d20a6e60097d1c6cdcb287e4191e73587ab0866a7be2d70703eaecf65a4976cc6cec57445dec7908d1c8648b86a9f86174b08d02c28f265b906792e61ea8abc8a27ffbafa29a3f52436bdcafe205fae66491673ea47ab3fee0ea86f1d57893ab9dbf74f0b747974b5d5ecb36d38220083cd83e963c993e0557c56f55878558df736b02f61cb186559ba6d80458a22b90044c9381246391d66241f7e1fb61aeec719ae144a15a2a44b50c7ec0134561b90c444baf1e37a2749bfc30ebd9dca087a7b456e33457386743cb867b3e8e3ffc3752362b6efe4f495f436f841a3dbf002913cf77e252b6985321739dbb8b9f11ead927eb48d2f5cde711b0a1e16a9f5f089ac74f480c1f9e8a79dcf20f21ebd19fda2a6a6727f0c3fcd9df6a6695bf5cbc59959b04fe8fd16dde169620922f41391a82d7621e617a7b0f6766d34bda48e4c117cec5b38d790264eb607ca5ccbea2dac45b494404534ce6e92bd0a74fc2d27fda3be04d6d8e440e178cfba44b4b52441680ec4f3b1d733e40a9b7bfa3a5545035ba6673e858c75371ea8cb032a7ce51801cf95c3a0d03636cbbd00e0f6f6cfd2187eaa20a7aeda8e9fd75420b0c048be0b8e14b49455fa0e5f27c922f0e92fa4e5f8f6ffe5d443050328091435ee84445bd111dd84e05149d97fa74ba1dada49540c37b819fbf886212f52a705908b335ae861cdf9549e3dc19467dce805747ece99ee2e2be0b1a0c0af864468b4b4035b2225c899f4a6a7e359c051d85e16d20079d1fc3fa33cef479bc939a1bec75f74ab6db079071ab54800cd0c1acde7bee673feea3ad95af77fc30370bad68ab5c92fe34cec598b365169ecc0e710437c30355c370d96e89c221e9c809b8c4a8d7533bf5a8623a64c4ba60eb40bb3f9edd895e8cf6c7ab828477401b7cad359ec55cac1c958514dda5a56089d8fae012139363d714f44cd7cac815b03222e38d1dadcec7faed5465e67f482595b376b4754635142453affe0bd3d604bab9c0e404962f434ca79b2f32bedeecd9a8d37fb00aafa526e6f9de75569ba0e4c4d1fb18059e361722d7f49c4ed5f5c8ab1b87a1a6c4e9147146acd64c9018c0231bfcb13d960549f39a7c7be40b8d974c016784b5e7fe13ed7f4a4e918216e016fbe5ddcfd66302185fc4f1fd71e7431bba0f75d3249283bff05c747223c17da2ad09a448643d2431d57a2e97fb5d240b43bfa7386e7c696d399c19a949a7f849179510398314425be0b60b45018f3b21afce43b0dbf264ca5451d77e0c78f611b71a963bcf44a90bc93a4e7392df774e7049b8d46bfc1c444b1907792587ebb79bd356e29c159e53008f5004e7c5f18df85f1922deacf3c9ffe14cb82f6fa141b82e31c40f15dce0223f50af79532e17bfb81bc19dd6ccf9bbc028c2f62511c436b8eddf10797b879a7763548cdec0e6c74e607d35a621ab440a062ce5b44273ab0c12fd0e192eb186adfcbf4e70a7e52c9cbb480f4b289bb9bfc6ffc783163025efe03bce3763d5dcd8af813891810d60414c5b95440f4f2b6c479bc590ef5502e4996a203a2176633323a2f3a2c682c82b693a86a1058cbead5129e5a8cd94b7ab8a1738066d159b454c70237589f8de28aad8a903aab93d1f8f8dcea7cfc1844d2b454dcdcb72ac8991d7e0daf4d9ed6450831dade4744aa8d1fd55ba5000faa717eb835d4893595bc8225f5970c61cbde46adc5aa62b1f34808cadcf48a65149fdcf82dbfa5ae4de5f47e092be1cdf459b832d3c1f878b1c7e099111264f76b5db80cc490fa861b52730fd4a6f74255f2b5d4308f56467cb0ddcf0d6090b4884b484e5f1431a11ac2df52b45a5e43444c67afc3664224a03f2323068348e5d6a2a491f27bddf956ff03444188aefeac3eb3194a537510a8a312e9dafadac02d50c4a675ef12967f9d120017d4a68d2fe0ae56a4700b6ef04f50efaa3d50784f400347e5b2356c5507733ed5da12ca430e85d1e3893946af80b4f6aa9f7d7f66ee3a74726fdc674703653d7846dd2e28f1f00985fdb098b45f39e903ed615366da613df6d5f523540259eca2ef36199d8a12347eb9083f06eb5721b2647d163a81b6ee85be5d0ef4624ecd46acefd89bfe2d667d0e1831e6188386ff6c43383e08ce8a4ea03dc3dc1cdddc38b0726c5b75e827c1573086479d498991d3952e3e9cb08c87160ba818eea8b391421828fc9d576773fb4678c54c5c99901074beb0703709e893fbfb4f4d4abe1dd1e1f5dd9e6d8ff0db2454f3e6053e11d689df43e99990a4a36735db18b04ade638a9f5e372468d27d241f0a7662cbab55744a4f902e289f460e590e904c41f8c634da13901a60cdcf54407565e9ef8faaed92e82c00e732c4b5cbc5df81c5e25ca2efc0f1a80d682c28743f6ac31a05707204e1e38c144efb312a0e66901119f0cb15a7c15cc6438637468a13274750d6f36a7020165dcb2a2e5c96a83e8c0ba0aacc8e85ad4c33547ce3de8c3626f466aaebb0f2067af046880450591c1bd063c8f99ddd26697374c989bfc62fc3b4662590a8a72fb05368db0b5312e027ce3a347cd8469362961bf5f7a7a98b21f7c4f68210cda589fc5538f843363c0b0df748e8cc5753ed91596b2136e426c0096fcfaf3997b8166d80837b9df7952a1388f46394eaf09891205e846d132a170aadba998daaa8f5ab93853ea600427242f1dc261b84c5141981417c83822b007f8b48904e87fcba18897c865702024a04ece97183958c2554879d6040b857de07a6d43a8a23de831e496270c4294ab3d7c7962e30c1f7639ec18ccc841189d56a911603a5040350ca884e5573cd4928319cbc1dac703c1cec68ad5bc2580927b6d7800534a5fb0184da1a6597dfeba0779503d809ddb3dcc27e46b1345560398725d55d5e342b407d95b1a01d63c350272783fb0b22200c7fce6ab44f8f2a7c294697697d6b7e6197081cb08e2a6e4267c34fe846603a3c0df34a0834743f1199a85e041ac20ea891ae3ddfb68653a7cbe24f55204a62b15ccf4518c9b5af3eea3eb6a49d9e667a3485af17b122c12f05a0911b89761a9cede57a34cd5400064a4adcfc0a3194d416edd386d3010213848fd803a1dacc52ba46cd205b747893f31bc715026783481ca306bf291ddaa5c1716c99e353b2458510dc51274ca9d1c6e0a1ac5cf00e60ae20052f1c8f7091444038d64583a70a8ab55ae72658a34f8a5a43291de9ab3563c7dd46bc736d032c2bba9715a359419722dfbb0d6a0355074857b97974de650df29c46df751704f85a28c09ea97864eb15a5c28e07689b937da68223bbbc1726d4b925a1c65eaa3073a1b55773a51b5500c811c020f2ddb25092d4f25e7537bb0669a56dbc8503e25d2643329664c4932ce3bbd4f0d4e75ad88b0473e740e5c70fc3b4b722a8d4dcde76fe77f699bb3fd123b76e73db8011ce16d6fc8b107467bb6a0c588d57bc5f89314f1c6a71d9e6b489e8cfcb6b42559b9d3397d10c88dab3790974bc7201f4d549b66e93807dce90c369f053f0eb0e0523f1cb683595a3b0d2c67413de078afcdc98532dfdc274cc7234c7b41a8730a42283741a75fe73d0cdd30767a504e440526a167e99965e7401264a1ec249cf53ca03d1befee9ad3772b61079e1e493d3aabcc8d61c3c609e3706b670807c918e62039c064ea897cbd48eb824872ae8e7bc92acd0809c39ec923eb16437ff6238ee299681b2db0c1f94ee5943c3026b12d933f6a4a634491b04c5a04fb28bcf0f031da7d1112e0519550c83677eb80a68140a8922600aa3e291b8d07909528067d3db3d1d07f4bafaafb520fb61775bade1cfcf20a69f985a725cddb9a18d31659e0eb7b7e69038b2b946dfdf099bba4af380046a23de2ae0192dbdb23c92439c2c19f42473d9803c487fecf4df69c6594a1024b2b9851c574e872216a6d44ac0c2e19ec09ae156c0e4609fac39225f88882261f5cb1dc18effa76c95960042834e30640df3d060abbab910d5b513b3915e6a261fda9dfbb31d755b5c02dfb2d87a0256a33d061fad3d70e43b9f82fcea311cc212a8564090437591af32be76f7dcfc0d34895212908a72783b31122827b791aef3cd0012c30ea8a8c3d4765f55fd88b965722bc3066f955ecd5952b9dec3408d21c7442167fb92b6a7b5ca0f1d03361bb0c037e2172811f79f992b2a168454a2f2373b4cfbf0040b6168db9188e97df0d1bf8ab240fa226bf3d5fe1ce03eac6f80f9539ab6806c8fa810ef8c6293f86014819c122a7233a12ac9318a4f95ad2245030710f3ea8adf1c09ce95f20ad898f7fc0db8b73ada9f6da8198310074de325598ba2194218c7f1de9363b007b32848c5e95390304d7365a808d311bc12a772a4ff72dacf2a0b4f7536260b065da28377f425da93bb4e2564780ebc29d0b2c1af85e3404f2dcad26369c400ba2d2e0c432726593c3bf702bfec0afda1cf9158664e578910a25fa6d41aafecd41e4f8e59eb5d82f2361486408e6ddb93e31cde14c5ea2d4d03da3c3ef6e0eda038079781c57294975d836888e1640092331c44e7b0dc2fcd3958c41820e1b04ecab68c4fd95474f8cb0141e192765deaf87728dced1d520f3b852aad5828c47a57f24d79a3dc4d5f5cb6e5ca0396bb202a23a005a0e28cfab10bdb7d1b5046335f46039a2379147858a34717979382e52264ff1fd2c9e33e85823bd87530e9cef00ef9d56a580e45812d9f99654008e32f73d5ab43e70fc87ee13a686991f4c2c6841399c3b2b0bc53c959e3e3da1ac6171835f9eaad2c97f993328cf8e04e96833661bbb897a4e3c59c069d2c34400e9b1c2eefd1e74b727651e72b4c3f52bb1661e85d60b056214128b37b1e24648b5c439ea9cf4e452df6fda8cb36ad208d4ed26fc1308422d1b0d84d334dd01dd9bc271852a730ac6ec71833090c5c041da0676c0a8287fb83ab15ba019ddbe1264ed471f53f580086489c43873aa95a7e06da0d5ab88cf79a9ee75faf372b9720475fe0ba27e10f35706ed5a425e7dfc6680bd7f0ea40122cf4eedeef1cbc4216871068b059a5a645fd117c1529c7be89dd8982d830378035d1e2623169ef575a0a47d4fdd8e9b522497cd528f9f5052dbcc781903fe79e0694ac999fa20ba3d66d12f7ad24b97f72f8ee5b2a2acc3e7f0063c83a53b91b61bab657d6a37bccd1ec5e572267a548c73c6bb7363f40d1f10f4088b9f4156ae4c828614d136a73cd9b26286c27b96bd3e8018fc407962c19e24a69d9a139e244525eb9c2d90926c92846867de2e6a56c4ebf80bd7746790def3879ee032efe5b6899e01bc250f8e5d375ccaf18a6addf0d2ab195ca6117285fb28cd0496c15f10493b2a0fc6c6048d8d08022d32ccef5c28f97da087b627336ac6371517ac48bca9fb874adba6986b769a2d5779cd2ca12878558e9f2db30fcc131c17bde69fc2b00e25a5068ede71c0c1f4904e42bc90d93d2db75a13d2e1af53db9fbd1478448b732de38365de6f8042423acce0b18decbb9c62f440e7ebc2b5c945ef6be48aa02bea6a20c533b30c89f7a83bc3226131ad61098fd6bcd160dcf6200968009fbbf285e43fb6eb4b54dd8fc4de774ea0d1fad857632401c420353595db7d6510c5392a202c8e51e610cd23e796318b11b3a4291f3e28074fba38e28ea04f7c9e33d7890a08e8852ee8beb278bfc81bec83114c96da98eb5bbedbb45c30daee9bdb329da7a6909be26cdb06b400a176cb0aaa7732c00670d6dedf0b61c8cdd071c6b5bee42839430b931c20a799368dd145028b7201f9a9376263bf61380cdb0fdbc39324012996cb44c0300b4dd6c95d76e5055a7e604d5b53df7a35b43e04f61351309404a5a44c11d4d88025be516336b1cea7e90dbbd1272969c51bc94728e6ace0a5dd8a7d8719639baf64a16c43be031753595ebe105a860a3163d1a05b93761cf85e2f96fe08d90a20a9edba64f39939f029f2023ce697829476977e063009f7cd74c07498ff686123933ebbb8d9bfe9a7aefb70049c284bfa06e8f6c762f638eb1e1259762bc2764baae519b47f69fc249751bf432360c6fef0709280bdb158b25b97edf4183db0151cbaf3bcbd9d633f466b4f0b4dd8da26bc7ea356fb81888af14c094a1f91cc86210c3c306543efcde5e2de7a9fa0f135a1545e9503faa085fc1c472b15d3ad1868cb58f8404e3da950fe3c2fea2b1b2a82f9c227ce8cb32426528476aae628c84e5cbfc25bf305e71dbcd91edccb14bf15abc8f04b4cd0b56142f46d2ff5a4678c94045f9e5c924d4c3bdb0236143aa617bbd36e204bcfcb385ebc5eed691a5bfe08afcaecf6b38a017f71faae2d5ef7d24c610e361dbe5495757b9ee69ba02098186cb419ee281d1fb1a44a877076129a2915d06075cf274e90e0a4c9381bbf2daa5926a46c2c144ede5cc25aec3233c123851aa542814803f052b173857c7fd036a53e715f92470c402cd74db0cfb8b0d582a9a9a795ec1892757e107066a0d6398df655351c1be970ca085174085d313d1eb3db3f423b3d685e2b34038eb38f63bab468ef09dfb0b2a3544944bd6a818b77c0cdc17a57761f728cc7f906d36b01f6f02104089915de2861bb4655dd70a1703103675038005e1b27cf3205ca0e63d677863e2d861d98fe629b5e7647db3ccdb492e88927ba73f75676c83634de67626b00fe30720b2c034bdb579a7355fc105e2f5e3c13bf39c505e481cd58c618b62065ae851ce88af6b8d2cead55c89404f52d49939ed9b8ccc637477be3761af523f86fe0696cbc7e825b42678caa369397b2268eebe838b5b6251c762a7f789e3a5480a7d2c7479ab996e9ae85017a7f83993f0fac2ce5b8df145371a9a0c18350d642e8845dd788003657ccb52a5d5b5539678ec5a27e892226848461026b49f7966a7911fead0153897b16055930e2c3c9e4fb32d87d6dcc50e92647dbabaebd609fa544e4f013e1f4552927a37471aa82310ba133b0cd700a54bb8d31fe2fdecf5a256a074f7f035e1cef66fc6593b2ce08398fe9869c01acd63646e055521090061be2c0c5f3b14c1dbd32f9e025c4e55315d3ee488e1ed704099b2a3dbb859f2210fde2ef1a85f1d3e947e10d32602348bc7b5106c647287e8b3512f1d0182835d1c5e0243cce4c2a56efdddcfbbd0fc48305052d0ffa96cb41f6de6885d1c7099e4addad8e5885bd189309da5bfbe48755d22f959387ca714129744e8e1185e48f0603fbdcd327f732bb16611b16556db0943452d262ea64f26813664176f0ecf1eb0a0a1f5b351a63f33c0e694171f551e3b3dffd6e3ecb09b930b81e1694e73357362aaa6963c36fac73601a824523c627df8cb6566f92891d9e6c0e0360b8c9b506e41a0e2001fab346ec7c3a0ece27d975a6a45cb747a7d449f4e0f100ac7ff3b24ad042ead592a1ec9298ea0d3cc2ef6cc395e860e43208cf5b9acb67aad2d81ff29e21b012650ca398550d9a0f58de64949a96965f56761f637d25d4d132c145d412c9e8214e1e87f58c1a9b303a0771457bd11abc613f3a6b7bb491ca400e6bb5e92077e453a3344a30a320e63c2d6194b8ede5b5f25375041e1d1ee82e0fbdd68e7e00920f98ab2494ec6d96d30ab84afe422b03e49a7cc600f5298ea2d00c7af108db2559226a61cb94959639571ff30bc2fdacb821fde8a42324fc1c48110b12845fbf5695e71270c18087f5d207f2142d6b4211c8d68e93170306324127ef7f3644e9e04b2b70d39eb443ee68b33c172ea592676a187d719c42fa7998acf9ef85360d7f36cdc124d7e2d32726772d4d79dd5bebd011f814a05667d9775216c9781c16fd27e4322d6254512aebd5f80f3f3140d99fe300318f632f0e4bb1f54f25c876cff3a797f381509f770835fa6956a181802ed4fcde847e4951b1849bee4dab04571401e3cf60c8d90e5b75cf7b1074560c2edf3b8ee927a3dfa05bb684ea8ef36b591a186e9f1a5d32ec2085892f7766b7a5aab6cbab7f6916f41805a34bb35468f1cd198fb3ddca8dca2beffb2a83fe3ca884fd1ea55aa9cb1c158ebdd0c213c1c7c4706cb46a7798ba063a36e1e948c284417dcc1b631bb1841304bc38d2eb7d32d59df789d1dfbcb429a099fab531cb6128e7b964264aeeed524cee5412089ec729486133f2f3264f4b907ecd27bfd7fb2cfd92ff8afccbabdc1b4719161280cca8ae3a6eefe83dbf617e9565cbe501f658c2aebc8975fa7a39f57afe3985375165601442bb546305aa9689a6f85b872f287ba011c0ad3af0fe868bc79ceed2157dc4daa3f809a20e7eb076f6af1189b8cfb9a0e975d085d323da3eecbfa82b1c1265dfad8e56a53a62c2332ed021b662b37db57248afdbec835b917b98e6cc7d0e418e1d42e42e26b82ad1fae756700d99f52eed8be639e8ac28017ed5fcd5a5c8b1d8d9f8f412a14b7082133bf8bfc6680e5e0b4e77741377c8c2729cde5f289f3a4e128dc06f2e66382b5320bf73d5bec4413f95982daa1723b58418b5851dae5c0051550f1558ad6d276d8e2c181b6969a8cc9265331cdaa6706c473785f7902b7096b5cdcac1d85cf5f47849fa796a1d99199bbf3f82ab868c5cebaa610398d3082a858d096a132429a42d17984ccc6b1a88f069bfb14f50e7402e33ed2d0e2c1ab173132939f864b868de7014eeafc5427c76e8f88d1cb8c721921ead21e7c9275619ec20ec4fba18030bc5caa2af6aa1bb6a68a58e6d861ac7b0940d5136c44df14123bc71ef38c8e855c30d05f4df94748db9592ad4599f6014a314ed1b02f1a6c8f450b83ec812d97d2a4953917c978e9f3ce12fadb85769f64f9ada79f7da7c840e7b8beb2e7f844acd0106438ff50fe3809c2231648424d9db62178cbcc52a271b5456bf634bfd688752ce5553ce618da3cb681b86a81597cb9104eb6b87dac68b9ca2b042414a6031631230273110546b4e25baf1925376af5ff8d47df7820ce1a5fb0e8ef30b52ee0d6d0740d365330888069d20d4c592903424c2f780d9493e28ab13e65ef889b168078fc6afd52396119e5d7038d10c3e62a51028096e7691f31d3b433bfbce134b2104dcaff4628eaebd717a1885e9022b68ec59d49c3476411357c4dd80f9588758ba7c7accf89afafadcaeddb30571cc2e89a00547e3a168a9c63a086742eb7e29ef542a2cb75693c162ce2ccec080c0d47bdae87deb3d4934b783b2aa2c611a540d4fa05b2a603e97fc3369734a06523d3a93fb27a5b504ab33e64d820d6dec6b266f473a91915614c8ebcc5834883ded5d5a136c94d05cb7011840f17bff6956fc1becb60610b1801c6807028fa40152bd085752647e662bd45436d86a7f92a89e5e7b5b1610880edb420d724c0df28db6c5c411e0efb76f70a3074a50773af1faf9142d35f76a533604960f34b24a14a1902f5ac260df920339f8590b73d93504e9534e0e4f4143baba018366bfab4b047271b89d05c0796b32c20e0ee93b998c7630c7449582a34114a4cf4890fbc69221c63d3605f6031cdb37b421c6f566deaf1b004aa64527fdb53fe3a13257084968f5af8dd8ef0f3b75e221caf0a51d5e56e6dea16b57e02713cfdb370d0e5f3fc2867c2e35de6183c4f2cfe1a07243216ae8f434f1c94d527667a0fa660c82577ae40a59507b987a2fa65ef83e658003b6a00a8274c2bc5e3b2d52d86ad2a39f126d0f2afca173b189f097129d8a7eeff4700d9a634d88cc632c70a37475562fe18da129ed09dc6ffd1747f45e9c62542ca4e20f95bba0083868cfff0de5771cc9ea69be5d3346b88481e2772d06df6fcb94152f06f0eb4fcf381f4fd59fb763f2986266663d1460e0d15f2a8dd0253acc1ee5ad8483f2b1c28435a8a0fa8607c5fdb17e220b3a7242b951553077283f6c4d127ad06073f5b1fabdaaef62d0ca12771e070b50d253f273ccf6f932386844eee0bb20f26239f058b6f309b94dd1f5a896cb97e2af2734e75277130b0793686d9919e79e3e413a943f159dc574dfd30972c3bd80c537275b2d00fa6c15b8ac9c7bff74d14392b1c0015087315034167ab702fd9ba71ae1da8b3f9137735b3131c8d4d953bf8eb3be94b2856e844ea0ca58f804e1d0b1557ae6cacf764094a8a89cac84b530b5b92a221026f678b4c6a359ce5a3b7a43145be18adf2a5c8c930365faca078e5bdadd5e562f7e9b3c4cf9bce12a8d9aacc8b019588da766255ceac7e4544e0bf363700d324c1667cb046ca72263e34f38574af83f07ddb881be7b40ac60ace11470d6f3976362bece5a1181876d5aa72fc278173045b6110a5213c6ac989c10df36d7a0072a69e05146b7223fa1facbaf5b871e52b7867408aaa62207efab6a406320075e9a688f0c28c1b00ad450843362fd835861d91e56ac653cc7c7affe30e9a61db7d524a8c223ffb637fc7c2661ec985bebee720cd1450e1b82edc40201e9602551c00126767834a5f1f10581c5eddc92ba2ca9e376cf7b9848b3dadd35048098f374084d5367efb5b50ffeefa7d173bd8b401861e59988f0c307f5dbfc099a9361665dd2cc0d0300b3c6363f79ba906cee4492bf5ba15e9830954f1b142da9b5d60402a2b7907ef8d21c2d80d06e56df404c033d4ee658997ea2e752cbdb5a49894aec7dd0ae5f5a23db9f9413cd258684c359ace79318dea217096bf86383ce462d6a97bf06b7a617c2405badd90c8cbc02cc95c43fe22d7174a3dc5dc9028d1384cecbf91ad49fe9047914ed0a405780fc2e2eabe511904e749267ed44aa9797a08915ea351afe0c1a47212e77da65b198cd00539c9e823b791aaaa0852c172c8529bcecb024a859831dfe02d93804deec958fb2f0b7a170bcfee658b5242f4d9b66396811dcace606a7b931de8badacbc2c94b6159d14b74f7b52cace773ce1bb3712f07ba01789347b7780dd2de992478e6bdf3dc6992f3e23121acc688682035c392911c206481b8044113c0b5ee1eec0b14345b01470cdeaa0d629422eb1b513bc4980da08b65397b798280f8c9639e0ed083fa547f71d8560314b383c5cb5f765e61b736b958a00d5d271281842119888159414b14ee04dcd63b38596baee33e250332e297b466393c93cb85ad2b00bd6710ba5b07ea0b053b2ffc3c9d91d2e61cd9a6072f79b73cfbdfe3eb8fe876774a942229d05b0a29445b8f93ad96184fd0bc95820712bbab8d8660877713ef390994bea9d5189e3ed582c61fb2c68fbb2e0bdb4e39498b87a9a30f15b5c09d71bd524aa33c73099cf9e555562edbcfea2a9b7c4fa9a56a109bdbc1b04589a5171c3a895e37ea0d4e64f10df86ef4ad067e45f0ce868129acd68f4467325dd2a63e0ea916645f943dc33d0e8c6a6ab4264de0500e7ec3b5902d4c9e0eabbc2286416f6e1ac8f6621b162e349c7eeeea2408e1736d171e052143752e4f7f12a96b922c23d558672245264b7cb4ca688771ba1e3c211f04955e2496673d03ed2cf65decfe632a20287c3064af24563980d19f607a9ff035ffd0387be93cc5b634f25b3daadd24192c83e9622c2c0c429f1ec4f4d52d512ed39fdefa4ed9b0d7c7c87eed59a65c4eb0bf58ca617a10f08393b082dff1c1a7e6505754b83b5022b58591347b9d03a2cb9a0769ba16dccd014539e87809da5f9e6cc1e7b909d431a53e7b9da43a8550dc5343b0a48898c186ef8d484d4c0e504c9e392535f850dd134d8cab7cdefb9a8964ee7100af252e681d33f01f92b3c2fcc5bb029b03af6aa40721d7c3022e7630ba4ffa420adb875a39f8ba6948615eb631d8b7db096f7646b10e50c60ba7b41f99afb53cb978f27a1282e8ed1cb19613f9dd40ea2f23cee2307eec511116843761db7fbe323e5edcdc805bf43fffef624f322cf1dea26cc72c8a0c3e15d070f4eaecef4fc8237d228ae26cd7d5cca57b3753195f4f3d081fbaaa65ad841b44319ba9c1c2489cdc1af00fbadf9bc73071fd79435d9805e55c681c5d92da4c5f0cf264cc6b17baf9a07d1e4b20a71f6a5e26180aa93815fa2bfbb42824276fc79eb57b21975a87dbc8a2c0d9ac0e58386f7a03d08e20990ed1432773e6258b854871bf5be7c94e6eb079eae9e52bcad58dfb3be3418f0b81c4d80b804f14242e543f5ec45d5610e6af2b120183c2fce2a7be4e4afa3ac268598c7ad11b164f3c8b19027d391ad2c2ab1e9eef1f7d7e0c705afb60a059e33f72f52610ee2b4807789d6fc6b3f4b6a9b205f1949e9635db0464ff406a5b9f4a75ec85e360a5542682916a7a77758b0646d26cf1266aadbacf0c77d3c6702ab655d14107a9690e72e945e240848e60a381864fa16fcc3261d157af005abdeb316598902dee0cbeb48dca87384a5401751bda60c874d6616fb2f27ffcff5e62eb4c96c00854fafb1415fb410b87196885547419bf2c3df852b45e11bd5904f9f584325cf504e1a6a73985633f0de3e625a9414c109b0866bf824e0fcb9c046fc7a7ac368d6a2fd955761a6c327f3a5cee919bbf18818480db21fb588d4de6bde5c4f253f40937b7d59740968301cbd2c07a56846b84e45c49da24601fbfb6939acc1b225197751d82ef49c4aecaf31f72dd59e75e93c48a48333a60b6ae39a504507f78558ffbf0db53cb3b374119c30a243245dffc2adcf1d93d36b2fa3006f230ac35fff245b333ca40d841b0b9e459aa1f002c3a380a9f25acb091511abf97f0b07e7aafe0afca81bced308731125e8d03d30d2d890a08aa51506cc7425f47de3d02b82efca7e73700d90d3156a1e677f820f9433f29a0f5328294c3160f8c1feb9cd30a5783abd630d78f689848b8d746bced66935aff2dce5b5ae23dce1cda23f16c032f8ee3882228387bb918b7ce875ce566a6105970b065e058f5229af6948afc3d5ca13e707ca41f71087affab9e1fdfedcff39f94a18774d21e7440e01d1fa419c2555855af5c896f77481075f2c3bb10d835724b64dd41430e98e185235e76898b77f246a0947bd45d936eb13a4d0b0b6d98167047641680e37db4090a0844e48842f2d02536827c4877abf0503a59bfe5fc77d41bc9913c55c1722e4542c628b87a79b57a793e3f19a44ad4b895e0500e20fde92900c3a2e6d8e4a0269dc2a87f04b6c6292e3462d1ef142ef6754b8420db986967d706cd106118eebd4c63200f68d9ecd0f18db3eee7e90b6b8815b90c3b35565d6120fabe6e2c1a6faef5ffb6dfd3a5036ac265ceb169a7000c097fa07b0be6030d86704fd5814ff022e7e49ca2f7756043b5441073bb69d85e5e0da721b9a9c05e218ce6f4e6ba5861c8529e265fa231e98eb35041c49dad6626de42b71879f8a55431f0b7bbb554a400919c0a7dfda20914080d1bf44a711af00cc52d25c430a6e26457ee0147f8ec4caab728b787469686010087b498d3aaceed77e5b49cc1e17e70c01c37d361102c148d4d957435963ead89b98cf06536c0dd2e3ba1410473e266ffea41e149d4766ccea2f8095f025b23c2c18dbf3410904e1d6355e242443b8e609871a1d371723e97753f74bf75ef43ab350c49e067392480f477ef2b70bd65c271e878382f8b5c7355e1e23d963c923d62fcec25ec69fd7ed068ce78ff09b65887ee62fffdbdc1f5fda9a5d445e0209986d7b087406893b9d410efa20103a839439dd46a8c7a05a6f4f35ab664ad28dfc3619b97d62d507a875f20ff7d3c01fe9fb9396ace6957f2254982179d3ae997da59de781da38d2c78d9f4fd9d9fc1b5ab5fae8fbba1b3c0e457fd7815ac543dacc41691b51697ae1b6ccadb6b733d547202ba91d73806e9442e316ed404e555193b1810e8572ff7f33c257774b9947a4fdd98ecc7add52db638971791e86a02e9b48b8b0fd51c30761006a66fff7c265e43f4e0a15b7c16dc9b9cab3337adc2f22ac0b8a3605d958a456f881bed6d64a5e9f7c56c212cb695bd552b16ea97bb04ffa9d1c608bbd3a18e4bcc16f26fcbe3b091b5649c8b85d059cd49c61c256a1fd4d56e4da57abfad17328f350e8e0011f4c95ea668271a3c4b762164b68804f315928274623354e8aca1c35681b04de46ef4c51843924191c56b30d9336621b8aa35dadf77ccdfb7605b7ad9f35773ce891b13e14a2e0bd75d8a06439b38c0a4ec9835200a7e25724df6a04a68506eb3049a62cd3b13b06a2c8bcbfe342aba105793f8e1a2e99e236ac4c02b590b8c7929a2ca2a99f2eda02832e9ffc1555dc91b4c48e504a0e60d02851abe2b6866c2a6fc58a67814e8c4c5f9f6e22e5f11dd978dc29d21f69c0cb8ecfdfdba5d9ecf17a509c09c027dfa64db87be4db86a8c6edc745b7fbaeb502f15249465e0e9ab0c74fcbbc8f4966c6524e534cdf5db89cac5cba59b0639a4d0b640c813582fbdb26d2a3ca019db39378f72865143f2a8045d15fc14ac63e5cd6c6af93fa9a021b350e1bfc9d31c04cf5668891b4c69f6dd1912fb2928bc6000712d0f293c3dc04401e7a1f84d3951b33fea84166c22d458ba4cb726136291c735d1c4e9b1d704a600624b4f5308a34f136c23ae21536cf42e7aa622ddf17e8328561febf38ccc1c35aa913779f1d0c0dfba90504cd1e1fca56a65d3ff875e88496ec479a0698f4a96ac5edf81b4635996a79ad6acaff2771bb116b7273b0a4dc930234d7aac9931675a34e4cfaba1338dab2fe1a4db564de77e38f6b8378cccd6842e540d1872eb0cd9bc3f266b91e7cf901a0f8eaff54a8b1260218f8f7c6324503ee9a569a80deb31d29f1948cd53310b5c2d2e21fe0ffa1fda186deb6167b49851357f3cff3c2921f320c649f75e66bf5e3106ecc19e3b9258a27cec051916ad682325c9e273b26beecaaeffeb2dfd885a6f3c14a9e82edd22328918864765c4bcc2b8aed0a709bb463b421033f84a83cc3c1281ebb7b034d2358a0f7208737ca28da534829dc8ff51c273fa5eb0fcfac40a7afe3ce5f51026847c4ea547a2822d638c93ce8d1d85ce342d7718889b96b967f2aca429e6b9269e78b9b811d8adf4f42552da14dc53ab0c711f4393566a16f28bda6a750934493bbafc9f57bd9061a1102f1b862cafc219e1a5d15f3d5fbb1b28a1773ed6476d96bb3a8f415a9356582bac8146b715cab8baa38c34e20b093a9100cac18c2e6e315e686d263919b71d6292f18324549e7d6fde1d2b320e20109d1aed711d5ee63ed15939e8ff156f5c3371613132fc502e955b10d7d3838c97c911a806caa0f03301bd2a9d99d7e3b98475913adad13445b8b9aa8ba4c41e1e0dc4ac05667a3cd7f61594af1f76c176e645afc6e8078bba4f704824f6a4948117ba90f72b4dce6311545e119dffae7b637c3d1e9d96df776570c4218115fcb313464a14f9f5f0ff1d38138c3335101ad25fce7cd750385080d2cdd04669c4da3946f5fc75107ebd117ecb6d91181323ffb4e3be05ee5cfd4b2537560f25f01ef2255376c852aa9e7042ddc0c581e23d16d619614025cfb24ad6214711124ddb2a2c94bf942b9e316e2b45ee15ae00372997d58e84e34d676e10225502421116d08d7c4ae4f5ae5cb278f39f169df1f8c8834f3e3b1e7621d2cc0693285dd016c375ced3ddb43d1fa10e17078fafd7a0465111544bddc465d29ed4ccafa677fd27f3fe02c67545d848de44d4771df611d5ce11a7f604a026c14e6d2a90d17faca929da37c7abcb3c7b3905407e66f067a54a9ef5de52c587daccd39c8d89aad5844fa8fafd71d346cb059372e2227eebbe6e8b1eb6aa9578706659d5b31d90d74887781bb3fc8463a3ff960c73dfa90a6ee4c163e3ee18a489f98a1f704b222bb6af49a7e9968c613116698ac2e935a0d96d0d2fa7a6d68014405e43ecdb3b5ac77621211329e1ab6e8001154e4a6987b2c54e792d76a1808515a04164ee808477b5a2b208270d0583148e1ea6e1b22008f8db972f6bc33da334b4f339c3b3f46dcb750151ae6065d61948bf19c65d8045aaf0fc7a5474c36a46f869ce2a91700e01cc8215816f4ad3e22dfd5be25e0a7ba0ccabc6751d40120b02101fc90a80f2f4efee745da5dffb141a9bc46a070cb9ca5e42d421f703f62c6f24fb60b52c9811e6a49c6de9052eb801a1ce997579bb83c93b6b799ba8816cca0fef7f31ccb3d3c4ef2b8274c37eb25b012a9dbb7ac289ef15a56df36a65ab4791299d6bb91c2d3089e24a921115470796b8f78d4c0f90809d6cd7ec5d6728f927c76822c5561f14ec3a31213c213819948daa0c8755f48234261316937dfa8f7c5e4902261d8fd4aac058a2c4498b4f560cb2527bab922c457e4716f0220a82e4a07a9a363478a2e861f4a2b77e1754dabba6f83ad0128ff5dbadf170875aa724b6c661889b72a8ff21b703ba3a742a7214cb3dbe9445ac5ebbf33ac464637cd0438b1f97ec1423c642a5fc224efd098d36e347a95e45d05521200ff6634bd872a0b71f7d87e0dcd4aecff9c64677e25fe05561b2b6b99c20bf1fbdff47c22c98a4fcc134ab507a85ea0462f060f2414ebd61438eac62427a91de1e7c84812ab4a62ee8bb92c1d81d327eee9ea6c64bb86d86aee5272550d90a042b2969ec32d69f4fbe508b861503cb83363452a72dc71161bff9b0e06870251b8732767c27d5b10a6ff55c7ed59bc18d3559a2ee2fea4b425eeb9dc2cc1ff7dabc403d80189e752dc894981190a1812294c03f55670b94fdfad946c21883289ddb2c778e485139fe0f40ae9acabab53f1d7ddfe84ca8caa29934547e92cd23651a0f555281701990d376bf13c861e9bc9b99e00b01387161e2db7e5068d96ca2f524e6811833f30265b8a494d081853dbd415eda9f1fce81b4d632e002b66b479b8962c3966b79e3f443eab3b21f89ea9588ae18a0d46897494ee81a008094c447f9363b2dc4eb497ebbdbe58583716fb5f9002017a7b3be992436d4b8a3bec3a60c04b10c86a092256ff14ea6773f577d91528d5993805f880fea09909f8f96385a7c672b136416602907d04b2e318dced3cdbf3b9405416ce60b303637e949fa02fb53e33af0582bf8c8b679255170c61c3bbbd019a294d506b9c7beabf93fb837d07a94a81ba5d864ea37181edb2ac77ee6cd56a09e182c22473d672953b0fbb21e1e0554e1f6f3bd8afd7d446cd0adc05aa22be00250be53e1ca3f6b2723c47f7fe4c3b789043475931b08ae8d03ca95c8c01d54881710e659411be51170cc9f29234a02a844263b4773e1df7352cefa65ae062c8b4a0ad194f5c507253105f74f55d90f13421cec19548b76c074ca47b797666c575a773603bb9e2cae2d71bc3606b438cf370b04e205a804eefc28d0e8a93aa1b2801854b2e807d73c4232cee58bdbd6046e9a6b2ee0a1807dddec1b21525d730a97199ccdbd11c48bf01e090f7d181a6759549b8974b064bdb17d74e5ee8a3551c7666224013442d4523541f4c1086098528b9412d839e3dab94bf730b8841ae44337c0d4987706fb6f4ee8470ba557cff393fd73101f767f9ccf7a6f6be7e9ee98d09eed511dbb66e0456d3d4136b56c56cf887e10c3141c2ac201eaad5efa1dc4e8f7c75f24ec5c710424ab31a30da4655475af3ae1233329ef6573e5fcd72d7ff4e98907711e204743d035cbeeadc365776b615e105d150f445afc5d65e555035842844096d5710162ea383c81595650f1744370d8ea35a66fef02f879fb17563dfac82d91dd551fc3f461d82a28aa5cf9e7c6721012af81c4145f1c242ad39d1b2eb3c1706defaf90dfb1236831f5702070e727d3e7329095330281209e8c09fe5b57083c0c5e1994fd1621c5876765deccfb7df4049358a8c6f2f5d1f9d8473cea2d60de17f599fc3a29d7f89f9af3db77f77b49851a0e23a17796796c1fc61f85c107877066b309b9e21b119e9f73e6ec758ccb63e48ee14dbe043959f34ea6c4b4e14d243a797dc990d9c22f6af51e7659bb40651f3934ac52f25dcf49d2162abcbfba1c4721ff1c0682aa546a57a8b8dd1c2127b870c047339ef60dfebe5a64ce215ed7edb16a2b2aabd65b1d76c10770620b5de53d01c8e7810811577c04fbadff20abc926483c46b68668d6fe63144395c5047add7ddab467ab05f5133eb4e82516fe49496923d1c66466e84bc896e7e2106f09ecfac7f274166d643b7fec90cdbde5fd84c853ed978a8df5c9237763656a489eb9608d0155943bc6eeb031bc45f90395c9488c8f99c573a0fe48bb1a2fe591bfc33a9ae0f579ba9ca4faddb08b7cdbd22062767aa31abbe65e5d22849cf4551ec3a0e0ae8cabc4882a4211feefea179d752487485ac716aa37427d91ac9f1a87ec95c009b63fca339f5092ab8fcf5b065d167b23bc48f12db5c734250c9271e7f231af953d84245e8fdab741c3a19276c03dfbad76a78e1afd77c551d514c7ac3d09f0092fb85bc66b410fb0b5c92f9f7da2889e450bb6ecb92f033cde1b9d0fecf79ddce1b51ea5b995228249fb69bc01b3844c5f75ac5b57fefc11e2c1178f00de6d91c0feb54bb40b96b42c709bcc9d04a217b96fc0b4553f42f17f8270b92f52f79436e9acd85d119ac5f78633703ec7543a88835d3bbaed5a7cce701a77f6ed0457fda99386be4e417c4025166d7ecfb5081e8bee05d0af545333c73b6552d6496a6599c66ba0e3fa46411c3f839fb0e96e33290f1cda2e33ff63f015ab8389d08f22e43ea5df4e410699858d22b297f7d174e6a05015d31e09c6d9e5264ccb389658999407cc2804f0deef04b40f78bb098f0e8c3cb58b565fa94f70db763ac15c550f84d703f2f5ba23529075d51623fcbb3fe9a12ce69705eb9c30871fe806990437ec74c414116acf536c7104d6be2843258f6d82abd93e1e443fc2aa1d9fec7924c94b124e101e7b1b626e02d112c49349200a4955a8720132508f2bb9cead87af314f5026d8b2e60d6e149f91abad0fd0bb66613b7e34026491a9c547479121b9c7cf4847c38d3a7d7a48bf18cf16391468056f4bb0da1340117417ac42bb24986daa36aaa1776a263908dfe2f94e872bc9d4ea284e4bd4de570a54140b1942ff743dc3fcef2702902b6454bd3eb6a7a1d8d1e519292cabbe51ea512a9b304ae41b0e24dba8762f4addb8a1e389e12c7243187233507bbee43c4b9c490140bd0a68309a9de87efdb8228ac0701edb056c64eba3e0e212c8e31d90958634826fa788d3838479cb6a351b86f726247326cc934ad50d971f80bc60d30efafed9b7af875b5a97a9a316059b284e93a3f374d3c60f78d126e1c6f5d0bf04d3391c64b287a574763ff001edf2756cbb1d0b1c9f37f17c2919895c159cd6d9057f15bdf06e5c405ad56e56e1c4200c53a8d4a6920fec2fec6a8290ffdb5308c71c2379bc73685508269572e5f71a051b6588cbd214d974fe1b35dd6f61b41abc1589b9f2aa0135f4892218228f50b50aaf60540bfd0528ddb7830c9ad2b8291bc72627646871edddd776f12f3624e61080337d20dd038f87cbde9b45f543660c75865bd58fcb1623742a9c00e011b2e4dca2a4a9d2919bb5dbbd9ff63b1d4fbe1f4f88f310294c1412bff77a16157e834fedde223b735c4fde22e95b05ab513248af1544c8e8fb2fdc50dd25f71bb51615a89d05dbf65719ff4bca6c7bfd6af69ca2261898a834ee416321f361be235be05ca4cb658db8346b85b16ae0f001b0004f540e4e200d6182e9b7c05ae60c1abbe17cbb317f20dd56705c5b4c3e2e8f5f640797bb57c793d767de760bcae304c7a1c446aeaa2b7ca74266443826515e804603fcc8cb005b8833a7ff8c341a435305000e1b014f2e36a94e4c3f3f1e107702d7337d88ed1cb886280cad0bc0bc4fbbdfe89c32734ca020e851e8d61e061e9d7e0fa23e73bcfff38cef1bff1d7d8cd2338d2ef189d933fb1603b031b321ba1cb881f271794f57c583239cf5e797f77391bc4d0ee27d6f5fcfe09e76d338b00f82cd17b230ca39891465df99adf4c47283266b488200256c0db88da843258085ad43adf6796739be020ffbb3edaf3fc0b849a985851d4481fb88e819a522b8ff81ddc34ec721c05a535f6dfe0777115b98c9a1ebecf936b0abccb9610bc90d2ee421fb04992d1872275ba19a6c31c4f80b7277de0d505e227d5568a7da953b93d773295eea19a87816ca7562a2e9670153f54e5a0d7597bfb19c7768707205bf19fb739160c4a345459e6f48600c80093f117c78baf925af197f914ab48b980db59499d0560e0f940712a003614941f2429ce7d236ccfb31d577ec4a2f388dcdbb240f1bb4c2be66b5a69dfb3e24a902a8e497f4d6cae97b8ef2936a20ef6a2a90f0c9583850607ef83916ee7dd1c4cb643fc2b364be990460c1a60a84a52e246c8bc9446168743cdaa0446c7d1534f894223e3564a0141c010b5985b869c676bc0a2ce82ebfbfcc466c02b89f21a7e645faee16eddfb43fc0f078c207ad92672fa0a5a712f88d05c30f0abaab8f92c6eedc9eb95581aef4f4f8c0e440dc52ac4470b0342b014ebc62850b2a0ed1c94c831ae0c47adb9561c1a0c53e09266c10ff6a5ccb53522e32b284943c622e12b7f61310be568fcf5e910501566ddc3c941381a8190131408e3e0dae67aab2e8e8e833e2305b8c4caf9e2a197d620c55d1b40b9813d7c3bc6f90b9182f11ad0e1281eb57cc2de2084541b09c0cf809adbf910d9575d35771d4b41a64e3232bbfa90018b581eab4c390419df1c07e000b3d5bff8b0692f99a14c4400191ce4cc64a24abeabf6c09e56eab062b8b45afe4c8c3b6db78e13b0564febdb8f9712b540b47a50972b53b75520ad307b3283c11fbc3fc1cb057eb2727a35e656ee50b00336a2089f10b91fa4cb34a98af58608a89fc9c54e9853c14b810c2ba227ebc29f1c0a8a856627d999d47c3696341a6ecc8702148317d9800e4720171c7e9961484496a9ce7b3bd8a7d6cdbf7874d94f8aec6f9992e4d384c9a5149a6143694e9dcd4144d528ad054c8011302854e19244a2f01261e6164bc445513e3ae1e8cb52e5009e75c0e3579fec0481834669b4200be0d5ee0fca648b223364bf917059c06a58ddf2cc48340a9a5c5beacb236423cf8976d7ecfce897e245eac9057870a63f567b0321dbcae932a78e126c35165138d3e2b3a6423588dac1d11903a02898e531511ca448446d51b41066350ffd72b0f3388859757e27eab6849b5aff47a0f337c11132363dbcb833659caa136c1244eed58ba4148e6c72080b4061434ae35ea47912218dc6d508080766fef94851da76801e3b85f7e9336fc55195c2233372777b03e6b70ac92a59d337e94d7f30dbf16e2b18839b2db55f60e3e1ce2fd7a175046d3739734e0ea683ab5f6f47ee4cef3715fee4de39da06c420b20954bc46e740c80aaffccbae67b097d2687e8880464351563f7ab9e387661693ce82a99f334bd2ef4b681c57d3c67c81a6c255dd6407a01dea1816fa904af7da2430fa6c0c73398d55286be253e0251ae930bea835710adcb50b81487c59d3603689d5171792d57ef835c6e80951ca6805959ef7a53d0651cbb03e8e9141f1ef343aa0fe14d7d84b4e7eeec94042a6f686ad71211b8907ccf86a5767dc9e39456e0904a48c01e028b377ee10bcb89a12cd676b7f8aab06c9924f694cf562744e919529f54986ba18e1de01b7b5830a5c2e1ec5e0c9abcbfb9fee5fa02c0caa9e6b41772c48ff3de5b2da03d5578ff57c17a8d99ea9798333452a89c092c8e0118cee207f0bb610131344e1b54e47a4ebccdf35f4efe205e512caed080678577bbc73589d064f9dad6e7b6451414f40ef5aa3fb43501b8cd6179ca320ba1b040c5de9a6b610b95df0fa788a948206cbb9212d2b5ccb7d62793bc91702914532480060b14038503da3b2006b53578dbb39632ee6d58eb838c52f71b36b0aabbb571258753d2d2dd360588c60573484a159971f780107d41a9e7013bc859e00ec04545eabdf81382369a895817e8bdbc8174d1b711a4e122d918d138057c08bf18a20d710c384db827a4706c99cad7d34c779de354c3f23160384e7987268f85a3f6a42c7565671b88eccf077701b05c4d1e8c4381df3c6c6a45ed5181c4ff8c821e79dd329eccf81f0fe4a34529b0808987903ad49d66bfe605e503f284299de5b1cb7a9515fd19c4496e607471bb385bf319cf6719fb7b4eb0839d212af8b04ca82f7b63b68644e40e29e1648f6e8c3b3178f5f56e4fe6008a7ca23ebf27e9e509f44a8df839a7e3dbe4e5a88a8ccb00624a6c529d0d4adbb1de49c4fa6800a9f478d535ed1bc6624dc20475420d900325ba81de6fda32d5a8c8d040196378ddf5afc07d8c31000d787727abd67fde881d0075e78c77ebfec90c882a09487601500f020a61af9acddd242017da919915579660fa08cd6d76020c93875843b7ad84e378655c0acc3aaf19b6f799d437858c944fbee9dce5bee00d0b93a3277370a79f23b887591088c90e08029da27f6c0fae15d9b7acfcdd8b71c45697e410c96ceb9b7c45bea60e05bcda71081c9299137ae6e9881f72b747182f7c3093c3fdc377fad4481650bc5a1bd1015fe22581ce168d8d160549edc8ca767ad19c5685e517c6e60efc32c204e05412bfb49bcfbbe269a6a8299a0e8c9efbafc478238ca021b4828388c82977744483633565ea17172d8ba5a6a6db950618b8298e765442be812ebdde2e234ab1f665506760e461b733c965e1a26fc3a77c7395cb1f5fd8b09ef87bb9977aae3cf8c10a91ce7c19f076bd39392730cc7ff3e1808863192d84f5aa7575eed7fba0255a251c63fcd38f3cf2837b0a04574a06eb6a56191df8df715c11044fd013779c7358433cff4928171b9e759e5b15753183c1d0f447ec3189439d5c1eb792b66cc44f31643ae5500054085b1a31f15147a6d764a1a83163f67e65b7b74881594f87a958a7b8f96a22f619ce574963515d032288c3824ea4a12ca8352ef5eb2370ddadb419b4426ebef6dc5657ed57e0ae3df7246d5ca29aa0456d9c5e47ef1a11b963c234afe7568bb14c691b8a57e7b45e00f82ddb3b0d24d99e77c508cbb2c60fd8007249c09ee2fa74c621eae76cbca72291342d6e09590bab529f2600918a316b262c606c23da429b85199558465441ad7c7b5462af6ef365e9111d02fb3023b070127af1ecbe4e694802210d297cd0fbf37f317e2e1c29d010004fce92530a405bd59b30768de922c6fbd9a8641761a03845fa267e2663ebc972dee8827a9f14c36b522a69820d4c25dd1f67f335b4302e5c4f3dda5c8e5e67e6aa3f8c5d29dd0c10d231f42a3f8ed1e808bce50530d5c8367a2ee9c766937158f478bf6cca31467c36978c48742fdb37d5a87a013ce86bf1c7165df8e1aba3bd4174e336667baadca46e5b54dcd695f45634a2eef11f33aef08d26eb7d6146082ed14556c0459a6db3a6d41b9a99cf8d99a4d424cd9c2fa13b0e199296fc498eac76c437141b47d0a72c162a38988ddb7361fb06c4a0b8ae0ffca288209c5334d3f965bd3a78e6a69cdf2fd01bcff46e91c4487b0859b7d4bff21eeeb827fbc9fcea3c6a592e82bc9a6dd313e5b6fe16be64edd5bfa0fbb3b0ecfdd5cbb439b9bae7b79bfd4360dd81ccf2b1c05824c35b6ea73236d30c32cbae71a19ace689aa127fa005413b1466532a99f6abc2fe6c328f6969aea144edf1b29939385538880c6a7e3f88722668809cf75f98ca484a4f4b4dd504e32015503e923a5e67210f7f87c4136082bb17824c2d57fb7cc03557de5c3df75e204c364e9a571c392a4c1939f70bb170c25657768b4d3c07636160a2660e83d2c1e0c6b3eb1cc838aa3984bded2b7cef0f4a7d2bb41e00a44637970554b6d7e281372114ddead09d0a6f79d7552c023d907b03c7ff1badf260cb57c959d46f689dffb6b6146429b32f8380a14ba7943f86ba7356a3c98cf3e74d248ae2ee4f38d25b914c63122e92545ac8152f4ea807cd49bdfe40c14d46ced8ae0840faadf19c8bbfa1d3d5643ce8de580a34ee23458d353213b90b9194e8c66e5f6acf7b25dac468c887b6d7dcf98d9ac5acb6fa8de95efdee4d4f98c251e2fb857b72f736f3ed027456013b08bb2be79d2b8db1132b410b39cb77fe93ba6add41d02f573400c65f377d00dcdc6d1d4606616db03f61df0686d587bb0ef99808c99ea9b2122b1676302531e8074d245916452ec4c882956edd45bc03eef914140019d8f4135bc9be9e37bb3bcbf5b015b85ca4718b3e3cf03c47e554b059845d81adfcdd51d096512b9d8c275c61576135ded548cecaf2849aab38c6bf070a755cb3c01fb091dad21070227b18b536757c05f6d119520704d4f727338c632ca90345768027e3a7de1881f23e71ebf16116e47cb00839a456a8de7940fc469d7d576f70b30d1e7d7d95260179b0efc25981bb24c38aea5c6eff7a5007d934bb1ac548bdff74717f450777d04cc187ac60579ae81d34ddd220419dda8eb5efe27576c7c0ec18f83b42c9a5118cb47f03e7b26bc94efdf384e27906adaccbda5b1ff948b52d570472442bc05822e940fc2ee629acc0013a0841e642081945c2d88b393fd9b275bd2280b99894318f94d0deef255334fef7a36a4d18149449dd0c7d5df40c8d80bd2fd0e1c360dc0ee42cd70eaaa21e12744f11483f9440935886a91fe3f7a7496ed0854344be97a22615082a62914fb0f661b764856c0105b028155430f7cc1729bc8a346314469fd9044abf0444f4c258c90cf975c254adb2531323d8075134b15b755ecd58001440acd15c0f20defe51d8b6077f9b333e6723a5948b962d5183bd6539e064447b2dcc2dabcea7256d9c1cd1c64fd3da0e3864dd734f9aa4b3d135a6c2926f83e35d03037bcb4c1aa4bb1dc2a834853bd4ae1b43ffe979b11b70e8f5eedaa676b4080bd5099e533b621541c235542922aa31392dc931336d4db1ca80a1e5e2e93eb8577abd3f0dfd095e0557d249bd1a4467399987e9aa4d6182a677c50f5f7aa37e0cb2a7803860b625d8ade2650172b6c0dac967c474ea4488ea95454da054b841b9101e100438ee052d706a9f9a17576b8eab1f7855efd20093d880f543d98a878fad897bb2cc3eb31eede55f31b1abaaac8ba9c2b0f98a83f36c2618e58259e3cdaf8d6f3c120d17ba7e6873920d3bbeb9b096b8a9b41760e737e7db1857ff8c771417c005e6a343465e289f20929fd9a1441b1ec7f18c994b9975501d215c507ec8516eb67fd5cc466cf3ecc348888d7fc52aa671b6d59535663835a00b4bcf1d4e90e46dbfdcb7d3434ba3a3cfa3128c3d5b90ddfb87057f2ce68961487ca0dd57a4a9777054065ebff0fb6f8b140a47e4bb9d43df7d3cc279d3674f914b84a2f2045b00eb19e6ee87053d46e2584556910729caaf68d9d08c609e1eb872facb1f8476884f1b0286c7f5b0a5f65afc22593ca9cbc5c21bd0e374c4f3f79faa4d2517640366a07b3d9c7f39af5fdd7701536284119ff8249b4ebfe8a743712eba8c1ee96bcbd0faad174e20bf64201608f9c589927216f25f044baeba08045a7c1e29782e142f04e51d5a851fea2031e4807022d112a1363c3a3c0ec0b7ed9d44ea72833ac8c81af446c51eef9258e957a3f5af5cca78ae3b7185430d09a7e6c93b1944e8b7799d50a7e12357a050caa6a8f5e3f2cec0e31222a39b7ec7a9a059ae70f0fdd6a42ff7c994438653c39c1a3bcf88db33db86c49fc7cc666b03a58a0075313d0445d242294743dac21d4041123326fd0c10f99320d6a3c2947d54317636c0f7f80ed3bc7e1990bc51fd59734a5794b77d6ec29e92b4425c23f5ffa9f02c9a8042cc7689761f901b35eb3815d5e92914aa8d11be901d9485685960ad8f413f2afc184a7032c22bf834f1edb745363634fd6066643f358f74f58ff9ddf3f9215a414189ffa1ad16404651051cc09886b9d6569ad8f77c482b95288db6482104bdccfcf181e344007bd0675772d1afb001ba71af9d7d41fce88af8d2605ae13c3737f4fbc66e902d27b8d44ce101bd038af4bd5f3e0e2cecc1a1a1cf91d26ba6867c5ee2a26ab689da02f562a6e05bfe5a7c03c096f2e38880fe334fb4e90d6a46e41c3411240d442633a8300b77c2ef4f8a79941f486db345f4dea5654a194a90422daedfdc8cd30dcbef9a82118dee9817cdf8930a0282a26ff49272841ffac20fde89e9f56395313df78fbf9920c2b2c40968667780a7cd8930653f1d386c071722bea269c2d269aa787808fe03706ab4dbf5f7bb4ebe2e1a2aaf37dc2c812d806e16620cba2e7cca1ecff1f1916d60cc2b0acc95212d5c4516ba28d12342407fa27e397e7cfad3175af50d44ff87ad5623e7b32c584f48fba7f8124846885b13885816d557f4fce0b72a4db200ad386445dce18807f2f3a05224f190da03b10ecf94aa0aced177271de420d9b6a3e4092395e2b20d6e50938f368bfa48a114c835cbeb8b65c244fc65f70cbd0ac234af0bfbca743eb2fa0bcb1f504cb306876fc6a6ff874a679b731e661ef36cabe7de9ab1bca4519e2a1fdad583f618d0b997915bb03cfdb20d24329c919fafc9e350c33610bab21e097b0a3d5dc1f77bfa652f7b9939fc292a1c8180f823b549ece090f1fd5a25634a2d8ecd3d997b9449dbdcdf7a84b241acf1e598beb8ff2fc96fb9c41c58ce7f4cc7c10780953b94294b45b52ba299828800fb7c6068824e8ed0b7d4266d907f3d49c5210a616b0163e0a4e7290410b2f2bb6393ac7dab223fa92754c67474da0e39c8dc7f1e413d524d72ed57abaecb746c9b723f6a6fb4bb9612fefbc0ab32cb99ec9c4a22cdb43f2b90532867621022d50a322f35271ba7d52433714c40ace2bbcd4c10f1146e59365ac498ca94c227f3106c0412414686caf2868ff70a32b3715bc630979cd70352b3a443d82ae469e0ad4ee4590f27e358099e9879fa21e1fc47be52ed94c5af50935004e08573940935ed9b7454621ede4a3c8f580b0d2635146765a96c8e3ef8dc95928d00373a2c3afbff4b9f27a8eefaab4dd5cb997ea986ccccc78c4bf6d71ff13ab7f5a5eecc8a6e4d2903babfa985368a3d5f9b65d02cbf1241e99d73c03bade80234319cb8ede0006c59ccb663878214439db8bf0560e030793dbd090f0c19467b0a403899fb05a2de22d2e182980a6141c877b7fa83280eb14c803f8ab9acdf119913dfaab8f636e6546494f4389b084a1fc0239dad95654266d839bbfd155817fe030dcd1eca84d78d99eceda6816950880b4f22fd2c5b5f684aba7126296f6741a7acdfa52836ef180f17444aee1f8ed5179ba1db0e8fff1ce9f9ce5e635303ccbff7e42bb3f1f29e37f618d692d578ef2c97b02b8fd61f43c8d91c959d1bff84654d6935fba089bba6b40ce0a800c76572ab10583a200fc9dbc9766a7b49b815983e87d22d759f6f64ad7b19b4321040d7b23576a9078ff68be0b127f405b5608ac264907c9da6f40d7162aa136e7be7433098b20ab1a982017948c4b50aba569cc5ff7b11d6b4d6913b27142752e7a2c50890c9c432929a925c8e0b8e4958d25f95ee98a173b2a952e0cbdd871d35c67f75c8c4de0e98f6a4ecdcfda10e876ee11b42f21ecaf9fc0cfbfacda6a7ad4aadb20563d0a5aa1dbd4d70d366bcd5d09959ba652e90a3cfa1465d79a8851866f59982d2eef6418c6b29d68aaaadf6bd296dd73a6058ef08920ad0573cf5311fab988c0f11d09eb3456a570b90302e594e6556dd54104b5845afc25ff5894ddace775d54219ada68d55ec20314682f8cf73c61c92884c487520f9620169656137c835d10824a00a989d68b99412ac2e303abea8d82be8e5fe56dd3f18954cc8ac44bfa58d0bf0faf621ea445351597651172c5f5f23b92f6624190a060905c957176b15bb94b9d77aa41f8d23add9d10347f5404892d631df5a72e88898787045ec92960e8342cbba91d4a07c7e7a149905a25134c512eb91cda118c98caa4ad62969f07a306b0df20eab9f1629380832d8ad224cf27580a68205bf722fc37ef792304ce7ed4605d690c66a5f2bb7bf32903bc244fe32689ebd06380824e58a82ce69dd65c65b3027644e686bb9124cf5d0af3749ddd10c29cc58abc3902b3ed2640607efbc16c03b0fff2e726a8da9ab6d2dafd7307147cda17cd4b1b498bfd61d34a47f38613ec686670b777d1d6ade71878c7a5d911c4fcd13a16a4799addc8e42605613f0c218f5d5781215793732530933c3234defe15bdc9151e1528295b19b66ad292cf537fca7afd95924561072849a1640f614c07ca6f46de18def2641906cd70fe4472788ead66be9489a7a2153ec8e159e4bf606d85c46950db97b0af969ddd984f7dca4fa0e8b3c0a06122de14c440764c4cf57a31868e58d86c16208a7f3591c837880b42a27b0d39386d4dee7ea0d439edca7bb279653b75c56c83b75bde61f2d4422b7c9ed48c9f98da1600016b33afa109950953ae755c0676c117981abcb1a9992490d70cffef2056cfbf28b6b0bc0ea34ca011c60726ae61174f26a054c6724dd851fdad51dea3b079f4ed4525877827a3b482a269a914f16167eea8ade2ba3c851c711fdc10ead82116cdb3ab771cf69daeb461601348c05bc193437f83b924218991c5244db0b2d96fc3b6f9a7e303a741270a2f2a3a35e1bced9a7c0d230d413fe34ad768db2760257a52aeb530634d6c26194fbbf099991af361f43010754e5f149812504ade2404b0240c1d356c4f02e33a7e87fc9de24b05470827ec61549f9c94d0521d8654972c4ee67a9d7fd9f779e6745291c41278a8ddd3cee41781f0e6c4349c269641807c0db7faa5038f12f71a8e49a227e0bafb3af216d408f7e190adfa581add03a8d1c9629aa9c0032b3fd57e6e87007787e1f392ee449757bc364281edeee741bbf63073fa800f6fbc19ff64455f9f7acf3db34ab2de85e3c6cbb68b3f50b6c9c168c8243891ea37969035bb057cc7a5e7792b90b1a1cb2a9b70a862734f2c405d31e19d9e750ef9d5faf9b4bd9a85acbe1f72d95f879db5f22195a39bdbdf054483412e61d78eb96c2b57b355557ebc1b3a7329bc0251daea18906f1ce28cd9e2b6e02a36764134de8865571de45691dc438326a09bf74b12087913cc2ec062cf50dd83e31ca3d57e5d2dedd1be463891f3bf174eb56c0050698bce85ad58990f422dba40d6f3c96d84a0fd7f05d68651feed8bd44fb0f132392f6334dad71e3e6fe6fc6e0ae3038faca90840885a5a8cdb24ec5604e1c48c488cf02f40cfb49e61857cadfc58634e18a011f88f91e8945b8a0df98f561e9138d87da6f4ddb47a68ee1d1ba3404f23a56e40815fa81c6cce2fa5e9c2395702550e7f2e62fe8898782bf0973a94661ec1aaa384713580d08e4804b589ac99a61c6d36b83ebb63a79dc3d3445cde8d6c306a013c88cb92994ee2f5555ccd5e3116f72d7dc8f0bef986bd0b8111e000a8f8ae1f644b311e7a4c0276cf2ef457a8ce19ebc389a4839f5f1f52f38b6297054a8309fd7196056b7c249fa8d756aa88f856a091d90409c51f9f0295043904b651964442234a06aca20cd983947715f984e4ba00abc961731b007674e313b0fc4d1c96f5fb57987a1792d171007ffef7b9c9064a23d0ec7c26042ff07d4a2127506119af753f190d01a35d5b0d855ff01f7d0b9650617c56f10f247ecb8b36ffb9d25155003926438c2493e44812bbd0ba7b3d30ab9c9eeec87c0a90240952cbacef86d8e83699ac00dc33d0fba3af2fca8ef1b4d95a04e276a6d0c11e83eb73be5ee552d3aa539d856945e37d87d606a205a15366247a61692944cf8ec70af67b8e93118bf5dd2b1895b42db3ebfedf8c47d924d98abfda0e7e1fce2c2cb368fa26135d0ff583f2b49dc42ec3336fd9917dca6a3896f15f43385c99058f93399fc3c9d9c3da7f08dd651fae01e03629c4d6d5bfa1cef1c1013376da634072f71a64abcde84f03e83a380b00579ce9fa278b96ba58e398896d9906cbebeaf3a15fbe8289803727ec2cfa77928e4ac0c44c6dee06de5d2fdb6af1eb16b08a35c3c4e173c2fc8c0e16705fb24369671da69509f1e8f81deb76fdab048fdb0d5690b940d969803885ee26490c43f6aecbde4c9d8e6ad1618e0114f5c6c77926740a991d3d981a96eb24c53d5cad35ae722b0a8cc0ce6838c6f1a155d2c1a668300094fb0d2f38333b5eefdbecff7d4b1b81b6c4cc59c3de317215d688611b468cd0023c31456df696382297fde45117a146aabb35ddd295a05184077805d3e2305c6ca693ef1110f57b914bbc23a3d0c664ac350f8fb01ea3573232a0edd6a76cd4a082dc261ca9cb0fba6d6a00dbc080fb17c8b2fb7694fc624239b4417b6fb9939cc40fe16b6f1cf88127e49fc426d2b009d0e13db98a27f0414e20646ebc6203d247a61bd3a94b8b7fa5a8eee19b40812cb62c8a486f4f6dd79bc82b14e441178b8d5551b32f770dda94c40dcd13657fded794d48ecb857c798272891d2893b3a5faeea2530204314069821db8c62050630fe0993bb1c8904c866b12ef072769006bc66796fd11f24cab63534e0177e514bf9fe708c5eac3ed1fdc4a6c2c14b123ab509591335f086def66b66adfb6bd86c7ee391bc7a985c2674b0d733d5bb1861d3e13736e25c7dff4fa0e75065fdb39e2f69a07b020de15ded31370b02886b099e3c48ef8231aba91784ed50d60b5791a6e25e7c3ab839d2b2a3e917a682d42d426b1230fefe7b3517a5c23a4ade1f28d0de9b997f95a8f540f3cba075869b593f101433bedac61aab3e28b43f547a6d970b618c870d660859b06556e40c0f2e9183f93ee8c1cb8bcf1d9ad9446d6780600bf70e67bbe55ff64b50ab4109a0094d1e2ad4b0ce142e8042b973cedcbc7f95ae80562ba39b9c1040ce6b944e30cf107ad5abb3033d8d7e9d0db4f251e07b5b4c84d635bcf04d3233ee9d7c7a0a89681b3d8d5c64d53ef10644ef34840d95c7d4bb566b5b39e55a86e1c4f2569f89e13f71f6ddb11997619dcce4df757a1cf86f457ad1a24a75bac672b9d91a35271c6b4569c8c3bdea203ec864250e8181acb1a8e17a3438c370a9ca4f28c84330a70e92a32231f8af4d12a4dc29af9b9a36c02a080f5c18802b9506fd18bebcaf0da2f5bd4a59ca0f29b444ce9bf10e0ef61d3ffe0c81e39720ddcac193c185070f088e790ae7cb1a723b026293c4ce2ab164ade87b0f84cc0cc2c684408098f5ed1c8ab00d11b44419ef293ad0bbefad91a0642de7f31b33a1a03dcadbbdcb6eed3a2ad47440809946fbfc90adc4c6c31dc242e8a3b667b476c273e18b28fc26c04709e826b9cc14b5b4d25b7ce864a78bbd871636277a030e18e63c54dc2dfa922e7c34a564529e95afb217c1ac4691ab204afe111a63bbfd039f7083c23f9b8b8b1ffb81cb56fb744bcf480a4a3f683a5578ce108b942ede4321afb2c97ddedf4fa28a985cc73a8fa93d3139d0dabf6ee17ff47f0e3093ab76711160c1f178440772707898c0ac85ba820b7d1cf766c93ad37db218f997bba8d4b00f36ac68cf367db306cd8a40b74d8b33984f23db050650f0ea2e6ac3663bf0cd2b6461045d306d4deb302b730b27801fc15fc40d37677a723c4289e2bfaeaa6df518439f6e7fa28b1166bc8d59fb5f94f4cf88a92dac087c1da8b6893fa77c72ac4da28825962c542f1e4c35ab10a2d732caaf26e3a702370110dab30417faa61977fb8f94c9606ad0c9c71e3cd433d01e6deb71a7bc0cef47d380ce0fc2adc85a6799e392dcb1e2272354104fd96e17afce7e0ace4784bafb8c9b9008bd899297fc302342d5e0de54cdd7f54d174be689d672f467b42fa11d3a0badc679e0926652e4674da548ff36c921a8867147bb1a595fe66723f8bdc6067cd9e861c2d611f90221a31eb407423da0ac718f2f85ea2e93ac0bbb5f61f03f20d8817a369ed53b5e746e6b091c43d7f6f674aba5870bb5983ecf609f4298d10c72d483e88280c5205d2fe333dbdf727bf5ea48f4a017745f82e56d903b7bf4181afa03491ebc23f383a93fcca6a1b2de61a1628d83634b84d0f1843fddf0f1ef17a8e88e71224c01944912c610f4dc4a51b4c45d144d7121f34b4782ab1b269f282da01d58af447f717ee6f73aa66bdfbd64fa429c1cbad8dd43840dc456ad17345797b72bec060441abf9c99f2135ea4952ee50ea53d8864bf9efe384fefa71bf03aa9c0518decb76ca8ec50b79aab7c7815a81e9a61a1e6b5b0cc461c5052cc19e048f6b320f63302d6b0f11903b801ddcbfdcc8fecd8a1cdea609ccff331ffcbe7c6642bd6a4e8671eee87596934cda7eddcb8777999004d1b13d8a209db01126efcc6a43765f0817743b4a0d4e1c34b4b43d3c5ed35e8cd3d41df15a2ee1d0c7602799a5cd4c7218183dde5551b72e56c47b6cc66950b8744724039b870f757c7868fe240b8c2e7202c406e4f8678e10eb839ef6c93c11e37cc575e04f7052a7b29fb04ff7bbe23658cf79ad7517ff125b3fb5a3e258cb3c4954134578c8c7aaf2a446fbae7783f40684b85d999565f64b0b548d8edf24c69b52df451edf15b3defb1b79ffc3c5fc90394257e282ffb7dddcdb66a48615e08bf85f62f0cf7968c4d6dd10ccd27f17047adede0f98e29cf40ff077e273f69001c2bb1d814e43510328efa669bbd683632043c68f262af876bdf8aee7deb50f36b2536ff94b65a06c0f46b4ba4db41c8ae4df45fa036c6ff88c15eb41e2f4d0bc1d5d304a592ce0335578b623580810677992b68a28f4b4e6f70f7245cfd70cecbf7680681fffed81e3ac5b2e89a7b66f2d9583d929c1e66382799579d0837e66e2afbb377927c1609392befd0384cb52e8de7dd7beac43fd422fe8b5227c37e84d4d6b63deddc011669d4781d3b4891223e0ab4439feb3537c56e37100d35c05e70d3a42bc43575f3bcfaa26bf4fbfadec117a4063f9d67539f0586a0ffd216bac9ba8d05dcf68f5cce2a5b79571562c2097e012030a2ae106c43a98e8da7cbb53d2ddf9969852f0604fa72742307da5c7b3c671278fae16d261fcc38f79832ec210e8b5dc07106f7b0c55fbbccba7649f6764d52fbd19b1d4d5c33cea48236aa2dc937259907eaaf7f2b216d97bd15d0680d0044191979c9b53fe2f38effa6727c0c15d709257b56b5525e16814bd564e29b39515740c5c1291662da0f642f10c6a96a46e02d33a17ccd1c1424338a05b7139a9f82a7f91fa3313c10109af3e4f8bfaf128d4af73b471d2dcfcc8663d5ca550b21f67ac817d83109a49f14259782de3dc72c2be0e7010d0ac1bd9a9a871b9cb390e5be7054aba8345e1b0d38d518871045a3a3d9f7fd134a47fb57e33f2a638de532354d343b4fda6d07e3745a81116c7978db50e12da4baae9a9d931c526ec1e40b99a1992b755c26feb1abd6c1877144db2066b04b398be81826637e3b16ffaccbbe806e8fe7c94629add6ed7bccc8733788fc74e8e7e801be47f7d14f4683351c75b3e26f67809f37c31503970d0dd16468c5ac613feb9f4b7f7fc9f57fb42227f8eba03b00737000890713850d3b3203d8e4bdb5e837994673abb4b85310bdeb905dbf416a1a25133a086407dca2814f1b92bf315f8a6468a998f5fe4b1313bdfc0356309514b64edd7564171972d88cb40ca438295aedb253c86b4ec8d26b00d8ee2045fd600744cb380f21d79c3b27e6e12646ae082ad354285d7a735db312d4c23cf27165cd3ebb35807f30e90d199bd27ea4c2c2ec5f6315d9ff1261441c9aa0abc1e5db5eaaf69da1cf8d3fd08d0286d04a9340c4ee23425171ffd2df0e163775e608078591a1c748c4d55581c5e5d7490d26e18dac97780959793e6052109d790deb314d94b8056816dd54297a48b641b6dfc2c9de72d2b09cc9633e44925441ffb0796c641825fe1f364b6d4c5e82e53816e27ffc31cf7bfa48d67f33026387834cf6a478f2feb8014ad38021bcaac9b26a31c69d6751442f0cc6301e9423bca313dd79245aa07120cff4b8622ded0b0b046370bc97173345791aa73e4b6895047527ac9f144d53d297dd8bcf8807be08482f6d24793addf0da32112438a015dbd08a9592cb0a15ce0ca608da15b92b4e43dc4ba90ae0db6b8d77d83cedafd34a59dac4f5b30a370c8b62214264e926184bc195c643488289bb5b9094484f475d2968555d1907c5a9acb0349e50eedf2847640b7720891282f94c24bfd31ea9a0621702f067db89b3d81b7b1334423e808562b96fb5bc2ac385f01a01c0d7b291489d5a93f0fe95650e837aaabd46380636e8b41872340a6c235faa219f8ef1e98d659a7eea2703a62029134288e5b7bd909c3b927c04f04af4d9305b6ed962553e6e10676a268e983103f5cac4385ddaa8d9396cb28bd78be7a83d7b3b6da2504551e3b0cb0e60f32ab6c099e43bb3990f0e83164544ca4aac1f2b5517b3c8162b049e9a0ad45aee97414f7b8ed4011313172ac98cd2de866a813d63debf66bdeb4e58d3b42650337c27365f93b51229d1b3beb68ec1482d59c216c3a0224f399d62d70b4b70e21f772191378d494950d63d8b98c08aed50bcc5436847f22629cf97f853ae6d56ce1216011bd227ab68c125d5cf22ae9305fb908aadb04d2c6b0e8586c1926451e46e9b4b70d0c5b3e0c49e46a463046e750699134c10508e266dc0351a5b387a2f109d936c9cdc14afaf1f64c651e0689077131ea0faffaeb6db44618d246d3a4dc3ac01885a06bfcef71b89eceeeebd9037080e5c4719d4fee7247cfbbf7593011e19b011b111a5aa7232c59dbceecd9de79395bb54553f2794853ddc17bf197d0e3a86f661a9aa1c0f4d327b3f9b510bbd5d3e01c91da4f5c9ced166f99ea3b6545508d061f6ad93fff26c4f63b4a552aa49a032bd7ea7b34c1fdbfba5aa7ad3a9c7493e27d44f55c51c66c32addb4ef997de68ca7e727150507ebe883ef8fe1bbb632fa37c8ca0ee15ffada653fb963c33b6cd8689bac9fceeba59de6827a7e7c7874aaeac787a7aa7c824c54a454eb1e339c113269a3f4aab2210a732b9f1f4a363bc6eba50848c9926b95b399bcf175c96980c0fc0ab92dbbedbd3dcba5aab2a8af2a2a3bf2adfb8eb4dd6b68e12c55150a2845da092227881ca0209f1874aa1a98bbd6676c18236596ad54552414149d8f6e3e0b2d83f05fbdad545530d0601d37da7e9f7c7656064b5555b928df394b3a1f5e395fa9aaba9c505aa05076682363d7ae8d4fd62f55552915f453553b519e74692022307d4ea725d2e77422694191484b22502a084522bd00a54b8652d66e0a6dfd0742d5f0ac7376c62fed73cc565aaa2ae71ebcadfa7bebaeadb667a9aa807c2ec9794c3234e95ce9bc923639a7bcb45455a4aaaaaac75772738fb0d5c77ada56aa2ad49b986b4dcec992c1ebb7d95baaaa947d2f3c9704f45aaa6a2727d5370055ad939a21074a131914f004860730e94b05704029c563e2b94d9c00a11aa8014d9a34400b4f2a01312c80014d16900383fde7410129e00205910c90008621a7fdf89c9c44e22d11b61f7f8980061cc089011a50802704e0df7280171a0c2ea40ad04293013840000d08003b61624d4d7a38ec291e1f05dcf00b365a5ca8690a00000b4c3af5b8b0827d15480c48418b89478b96530f025088b0e59ce0802507a06102ccb820d3804e27d40b31b331a9fd96eea939a317495e4e5d80482503880a1062920f0975026a1290973fc0120015376082107a9f36c5dc80996416000034c5f3d32415427ea890c20ae49028a2ac55d3421d8bc900ea5892c20ae4103051964ccc4814aab2a2f48065d5f400b46a7a30c15a6b006bd110c300e80e55ac9a1d3cb06a769864d5f0c0560d0f3fac1a1ebeac1a1ece58353cac60d5f040c8aae16109aba607d8020d1b45b0b961b26c6e08b0840500a0b0c4460f9d65a30705968d1ead879665a3879765a38713cb468f2d968d1e662c1b3dde58367ad4b16cf4e063d9e841c8b2d1239165a3870ff4902405165040e1a6e6ad9b9a08ac9b9a1ed64dcd95755353d74d8dcfbaa9e1b26e6ac0ac9b9a2bd64d0d1aeba6e68d755383827553d382755323c8baa94164c9cd1429375328b0d64ae1841a460ab06a1869c0aa61a4ad1a4676560d231258358c0051c3485d827363030908960d24722c1b48f25836901052c3c810cb061245960d24445836912c593691bcb06c2279c0b2894467d944d2030b03000001c6c802670c3316ce18722c9c31f858386318b270c67864e190115a38640c60e19011c3c22103020b878c214e50c1859b299aac9b297e58375308b16ea6f059375330b16e2ad0c8bab18020eb660a2ed6cd1462ac9b29e0583753d0b16ea6d063dd4c31c8ba996207eb660a23ac1b2a68d60d150158375440593754ecac1b2aaaac1b2a6acd9200dcdca860434bcb86a6960d6d62d9d00d2c1b0a8265434db06ce80a960ded63d9d041960dfdc1b2a1952c9b6a8565532160d95474d9543d2c9b2a886553d96553fd2c9b0accb2a9b45836d519cba66a63d954732c9b0a0637372e702964e170f9c1c2e1728475134910ba28a0e6051c0230c161e2424d006208f3b370c250b170c28cb170c2c8b170c2e4b170c224b270c21461e138c164e1380165e138018185e3840f0bc70923168e1348ac1a32bcac1a32a0c071a28a85e3c4190bc70937168e137d2c1c271459385d4e58384e50b2709e60b2709e58c0c279022e9c277858384ff82c9c27b8b0a901400a293069c18548ec58379100b26e225164dd4412847513c912d68d242cac1b490cb06e2471b26e24a1eb068f396e24b961dd4832c4ba91e4d78d24a8c504478c7523c913eb46922fd68d2469ac1b4956b06e24b9c1ba9164086bad144ec0818300cb068e18960d1c352c1b387258367008b16ce0d8c282cc4d4f12aba6c78a55d333c6aae94963d5f4c4b16a7aec58353d7bac9a9e42564d4f0e564dcf24abc68766d5f80060d5f8bcb0d672e1e6868eb76ee8f061ddd071d70d1d5ed60d1d50d081070a378b90b16e167163dd2c32c7ba59c405eb66111aac9b451a59378b4c120000dce03107215916131c15d60d2176ddd08147cdba49800056c01922908533c4220b670849160e11340b870817160e11bc70880062e110c1b36ee81003878825160e1156a0b0428d0a3678805937784cb16ef0e062dde061c6baa1638d75438718eb060f35d60d1d27583778ccb16ac81863dde0f1821b3c02593778040067094616ce12485838606c160e9818160e986ad5b481020212b0087080550004c400030268d0593834e8b07068d0b27068d0c0c2a1a1030b8786162c1c1a0e59383450b2707404b07074e4c2d1b1b270744e0b47e78a85a3c3c6c2d10964e1e80861e1d460b3706a78b2706ae861dde03451c1c26992c8c26922c9c27182c2c2716280b5160b27ac909aeb2695c3ba494d60dda4865837a9d2b2a9fc586ba9b0448513ea583727fcba39418f75734220ebe6841cac9b137cd04200c498b26cc4e86523c69765230613cb468c2f66d65a2b3499b26c9a6059364d8858364d4a4c960aaba673d64d375937adb36e5a8775d357d64df7ba69245258f2829765f3820696cd0b552c9b17b458362f84218016560d1b8aac1a368ab06ada4061d5b4a180b5960a382ffc51c5aaf9038c55f3470856cd1f2a58357fd860d5fc21c9aa9952c7aa9942c8aaf141051f645835538858355398583553c8586bb9908000bcb0444bd6cc8a11891e596b34c63202ea0449e593ea2e3a2914941910d0c2aaec039db47c09fd30390019a49e140a4aea0048689f1829313a317386047040050b40614a0a05854b87ea922e6f92c1920153059e3cd9a921c78917cbd304e8fe940a08d40f40f7a7e4e4e4e4982a80811c2f9687f45aec93b678a37c8880870b644a10a6869dfb3d324dd4a093f3801cd3f79048b6e73472c38b2c3383a4aca3523eecccc0852898b87065ad9caaa2020ace91e1f63c94d762ff024c5a0083025776b0214a952836e4e8e478b13c22160a62328023ac140aca0c3fed33c36804a138d61ac5b1960d8dab8a716959b8aa189785830068b05816cef2262cf6779c3c692ea889ce088eaa6a279409cb4fa3ae3cea75586bf44613fd2302201e13cffd1bd61ab9617b788268e3fed0d313c5f6f004b1d6888dd4688da0bbd6480dbbc35aa31014117916f1d61a4d7938cc2f8d4a2372735f1a858a524f3d5252269e1e5027140a076bc262c2627b7a8272b8a1a5a4fe73d062e2a1f2272adf531be844c5f69c74c0e174bab2a3e39fc5c7bdf4f4045161219a104e88270414220a21859842a452517a7aa2ac25a204c8a380e0ddd4a9ee7153500ea61395077a949b4e33a808d65e0c2aa2391e461f68cebe38f2c06f596bd401d6bcbc35edf0e57be89180ede129d930e20010aa7fd61aa1c1830aeaa90284ea2a5fec49ca3bcf29cbfb0014c5e7647aeb7332553175e9caa34e3e34176477f8624f5280784c58b8f0f4b4f3984afe579e0b8f969fd2d33cce638378d8d9694ea7392c394f66908edde18b29ca5aa333daa753413d44b142e5871daed840050b0f2421a2f87032916e98b010c74aa1a0f0c88cb5d6925119514288305961051ea02ea58268f89fd3a9e7881c2a3932f8f47c979cbe3d9f32622d12dbb1b2d6888c15c3c40061d61a8d6184475270f2a613952bcb0e262920218582027482215916d0cf8f1157f0a450de3e393418e1a57d1690a393e3c44bfb2c6006249af4f0bce7cc908384112147d6cf69d90facd409614ee8593d3ded4c4ea8b2d64af5f034d05bd2ff3d4167add3359db080b5d6094b9638b2d64a7df92d292c264b0659a9e761b2e40e2f6f5263adb5a48a455a02b4d65a52e587a79492613159d2c25a6bc95acbf2d034b298d0dc41f381c5842689456304139a2a281f1f26346cad54ea7b483405a089596b26086b2da04f31f10813334c66ea586b3dea8794ba5c7e98cc80b1d60c98b55224d369c688f5a5ceccb5164042c2c73299a9395d4a5224263281ac45220932891a8b843a5d520b8b894c144c644aab81da3291b961adc544a6c95a32352937389245621233481d4c62d058292631513089f959376e686112538549cc5c6b2d81494c0b4c468fe49c80726c4b41e980e58694169ed4c90659f9da52729ee8a04e3654150a96e794a5aaaa8a947a6b7a6b794a3fa913cf290b290574ea49a14a3f3e41247edf814422a1be00ed00f58d793af0c05acbc785b02175b2418de5c7e7864675152ba9467515a054e770b24156505fbe00f1f4f0006179ffe129a57e7c1a28555bca5a2331c0106304c6176b8dbce0a28bb5461be062adf5c5cb095545cac90659d162e2d9d24056507f53a6465d319da88494e8a24483187bac9012654c1ac0bc510a29818339aa366a90135ac249215410276a849680028c89041394424b2c418f598019441102634515b9a38039421aa8a18568840b0a0931318042e01285cc116a22015e1e1a4c88241486070c7747961972420991b44456901382c2911caec4034b42534489837372740859d1004518045a0442599c60c90c1608e28e501700a802458915f4088971c1c850868f22213486a0c3933a1e99213596a0c8030e61219010090aa9e2002558c922b402492871c00b3e4284fcd8e30e27b40b9850224d70a48910683812320216351ad085048a886cecd021062f5e5088c80d7107034c60c81ca20a74f1b38041282989b070801a301481051d447e502360c0c989c0c8050aa8a180d6e6880b0b0249c004748c18f9c04a21393f39441113d4c844001655e29051c0953b0ef0c61085c84cb2c832801fbf4219f01281b5d6aaa4924a2aa9a4924a2ad90112a04c328693d2fae38b3bb060049242560abca8c11d5a1c91b3d298838b43489250b2ba80816d189e98633d41051152eea0618ee52507661c12023e8c583d5c3452033ae860aba5508297201472561067905470411f422c2a2730a400622c42c6cae10433dc05f811c88280137d70c14404312c5a13660f2c5a80c672360001840b35611694150ee00420397739b100164c48d2a2c500278644b2250137ac04d4328c781c50c03200134c20c80e1c0066bd20c9027ea0849ad06ac14112a6873f42b002b082189808142f2c9c2860e062ca12452c1b2af698011759105900c023c70c31ea1c605868a28343f8d04163a93047051cce1d928049c1674a8e1c28072c146c68048c236dd8b14e982900c20c46380066890e28f8c063a3048606890238f144160aac19387a7690461d57ac9990e9861d5ab0c392f99c0410910800221053c8090680c4095aac9821b6c0c28d25b888c0c807512a814286d31da326b874e087027080193589e9c00860a0e40e112188a4618300a60023aae2c6043f48d8dc21da210f94017a48021a2216e8174fe860ca091592023a0420843c58480d36249002306c1409652003227843098754096591a3055ec02f72422e0738dc00478e48424cb2104306239864b1284159d1c312fc00b312613e389018912c3d96008a018635c0587218e00120381da0c9e2801f3c4057c4a0b4b418a2064054d8d16131c1c553010b6e04b282a6e4316509174c593c241c7c59c30f349605d6a8d2481b728059584e0883270c0d72ac29b6020e20c2cf5a37a0a1009c9e3aaa5835a481020d9c70615ab2a550c22789b8f88e26324c4411c97a32822a8328e0057dac263118801218c028c05a808d0c1000c3822856cef5d28713128861198000ae8d497054b05e60001b313d08639135800c2c20cc1994042b002efc418219a668c0ba29c2198858690109960d4d0e5b9eb8628705802901e02b7444b256b063082f68018b0a4b052178381da202282b0501344105324892837582118ab081890e92b096100167912abe10ad2528c48083225650c5a2998e10200b362659334940e20317550461c90c7203834140c0b364745a018fc0e0c48a9183001b08830906560c8d03051c68000bd6880f141c418b3b7a8d4a8f943ee0833cd6a806ca0a6908328125ba0348094352be445e087124b4086989e61257de601556a8092590b2c81c66acd01e7900215281b84264284009257841065608a503a447060859a1296004cdd024092be4003d0e80003e9aac900a5a6a702f3080b5243900036492f062ad42c458830d3cba58cb055dcc10c9972c6bbdd1872170fca0c85a65d0d8480c50ad65450d171e620eb09612295852023332b0161235402414f3c65af78611973956588b0844aa48921eac0504141418e48520d6e20186d2023c10662d2961d4a07d91c45a340cf203e48099b5200b70683a30642da6034f1f32886b3d80040321a09ab0560c4668c4016b8cd68261e5e137f8632d0420f102299a30c55a058080113ad506d672c188191c518201d612001f2bb049e384b5985c0009236240c05a37cfe586480059abe6093670f0c511d662a1902a0c110110d65a218b130ae4f1b3560a4a60a1864062580b053c6ac8698109d63aa10d045cf10036d65a02471248ec60046bd1f8610a830f3cd6a21155008a153f586ba60748500802c05a326aac60832a446bc9302144911e48592b268b2ec21082c65a312ee421cbe863ad111c2b2c11401a6b8d7e7802060f38b0960809293071850c6b89da7003a70b39d6125d07bc0f02584bd48014d4d104186b8520e9009425446b85ecd869224a09d60a6191042a8dd0ac15d25245474b186b85a4e811660973ac154ac011b08036ac158a49820401b063adf583500ba401acb56610efd8438bb5561d360023872b6bad353ed0c615316b2d30de870513586b45d1031b3dea5aeb024a28020cbcacb54c1818401727acb51c026908e088b516059a4c01470f6bad2a2da85008166b2d0910e10b173c6bad08746090173cb2d6aa6ab6c8a2b4d67a4e82500489b516141cb4c0ed586b39a0058645066b2d060442461260d65a09a0e4081a10b1d63a40181d8e886b2d021c71020a1a586bb580861411b862ad25000470f143c75a0b27913cd668b2d6b231c40947fe586bd59c60c8183d586bb150f2611265ada58224271900b2d64a018d2d60cd5a0b05248ae0421c6bad13ea0b047064adb5c447074a3461ad45b30518219c60ad35e347cf9462ad355300230ec961ad2593012c16986bad1821044980006bad181301ee90b2d61a25e18f3a466bad111715190d586b8d22941d36b0d61231f2c508d4586b89be0063c695141a592b32333333a65346f85ce3c8a9d30f159d3e5d948e4e4bd1a972ba523d50a37c0139a9d6497df91e786c509bb4a4ba51fd633af9f0344a0b0b8afcac0528425a6b2d458428c11b75ad50471a03586b8928f003441b8430a984086b2d911a1d58a30a0e1d7ac8b55608025b10f14316529451c75a2b44051010e00425a3d3c65a2be482d11234e061900b400103933374c0803df8586b8d2679c40224700306613cb2d60a0901c80ce268211142b4586b85e250618a2b0480e3073bacb54635f8ec74e00bd11338d65aa229384060075434808a23acb54601c02210217c01461d33586bcd88d10525a141aa264460ad156a64122d9258c2173a906bad98318ca009a3c4c71189acb564e8624d0f94fa202a19229141d6ead22867ea7242d552aa4b3889c4f183cf0e302c16d65a3989e490b49878506b0f305628269402216b5d0089320e41446741f19489ca972d623060fa9e9c1a76727e7a855828cae8ca9220140a0723724c554573012628f4a1c5288b43c88072057588106b410922074a0e501f120f799273880a3808c25a3878c15a0b0768884c3db2034aea7738c0e826068c22c410e1cb6f21256054490c96181c62e4153453502714eaad3dad35b262ad511531cb8d1bf4b1d67a7b3275792a67dc200b15dc60428912aa4048c40426c411aa41e807782c1c1b54b1be98daa1f497bad6888ab546535840d4c4166baa2afba62e3fbcf5b54652ac358a22023530e22768cbe9d4b31614544c3c6e4f261e14d04e969c273de8fcb40fe91f05544bb0d64262e10c120913151a216de9ef32c3207f0cc20614fb39ff73f2548e3f175255f967596b04c592c1134e846962c4c448030b921d80590b92b58440039d1a5388059ea0c15a6b35aacb0cea583955ce4fa3bae49c80464b28214ac2971914e06467780e1c41bc586bcd2c1c41b2604190272b858222c80a84088100012790202cd389a7ca90d3fe5996202116043265f1fcf40c0b11238cc8e92b807ce0b9b00c08a8a4924a00f9592ba792419402e2a96b8d32304ac2da16000e204c7000c101a466ede43cd101e291b2d608035e70c0b2d652001c7f8449a1a0f4f4bc5fe04b28b41611bc74593ca041c38f0f2cd1c15acb020bc78f256bad96e3809c9f7692ed39e5d450438e93263fed4148bc25f9739921653af174210026051884e6b4d61a62313940ce5a232e6b8d82b6fcc8e06392e1a2b8acb56ed61251e9e3ca42e253130a93c19a1a05c424f5c828ca12bd70131ac2e263f171c81aad303a61ad33444cf0a10210ea949a6184f2192161bfaeb58c50813d88f8f1712fede323fa81090a2a340a6886c6658bf30079e18902f45650ff5652413d3fa8202b7fc3f7d8b0b3034f0ae85329469d78bcb48f098b7d2e3cff17a8be359d48403d5de2c2a3e54b90141dbce050558ccb8e8e979394aab2efe554abcaf29076769c34419d807ebe00914c3c5a4e3e24a026edf89c5039006183e97f7eb0a1cb53f9f141e9904a4561cc6547c7c785a8aac6e5491687156a000cfa582914942006054261325ce04b1719c0200913cf0f4f973b60c002ac41c6a28bb7dd2346527465095fa58cf9639f4f8c5114f6b5c7925ef66c6bb72d140e462b5dbaaef25dbf8e327a821dbc0f697c362dbb17474e4c0af9c1185b42afcf0c825118d62fb2eb381f7d6eb939306ac29b9cd6ffdffd762c4e33464c30eaa2bdb661652c596c608c34c0fabd9c919b6185ded58b1198c854c6e79c9416b2fb0cc586a8125a65abf13276564ae95e13de7cc9d35b32075bc6b8858809b2d932cabab6c9d0a15bc2ab8ca53727278d7e212d43a4043bef74ef98abcfb3fbc910256136e93e7a93b56b6dd19a214202641ca7bcf7afbdae4d1651c27ebe3b2d6bf225b45daf888ed0229c2fca78df5b77b665a9aa9ff6a9aaaa524264046f8ec6c79c9b9dfb3802d124955ad74c46ef572f7d3f9c40540459ddb584ec0dafb5cf96404404099bce669fcf6e32be2d55d5a350a92a1a426d8e7d23b491baaef6459250f6dc8c72b41f65b38c02a248a03f36bbc5c8f54969fa9eaa22019d7a52904086703ae7fc72636d8640240406dfc76677d228afad4df4c864e6fd90556e4f56394b3b4f226c5880226c5896100561763ff6a09494bd31e9614440703efb99bb2f1f5b6eed2715d280e80752beead53da3eef975fba0ddddf9dc8b6c727d878ed0e7ffdbaee38c97b9eec1834fca2abb3eb31036ca0306fdb23a19ca585b8c6d07b0ba6a1936cab899de5642d448b52fe9a4373e1b99b9a983d88e4176d3a1dbf044ca93284d841031f2cfbab365566175f4bd455c8310bef71c9332467ea0b7f28448118790a1ed79596b6f6f89c8e80e299c8fa16dbf5e850891c8ad657caf36fbfcc29703fb2ca3ee1d5efbb7673be45ecbfe9ebbce59e7d109110eee7b56efb51ed9936dba254486cc6e37bbc1e7d872b37a83faed3ea1dfc7a8bf431f9eeeb1a190af97bada7f9bb5b4f5674064837e363ac71a9be93bc99210d5e01b76857e9ffdd208a78f881027654f47e563cfdd67e10f4faee8a04483c06761ad5fffc6f76f170a110d5ade2a67cf16d932732ecda0ddda687bee3d7a9d369b787c046177e9a54f9b6cd17a7ba5aa92a2402ab5cc2365d4d9676fb254553d3c55b5f3c3932b4f7cd0b9a1aaaa6a4704883b5f0be57bb5d1ea1d86e80f6899c7479dbfa38ffacba201911f8dbf3eb7ecdaf72a331543d447c38f6ef675773942ca5f88f8a8fcd29dba4baff0ba0686688f28a974ccd6b731d6b78fd4854806936d84b7d9189bb93a2b15911ef6d906d99f7dbc14b6f34194c743382564f3ce5be57b56aa2a9216130f16510ca0b40df2634e7bc659553b5a4e537c4ea81cce10c1e027477eefd7ab737bb147f40238ffbdd964e3f9ccdc372e5595ca4184875b189dc5f77f1b6bea57885cc09e9595dafbae578fb436216ac153dad2eb747f6e6b6da5aab2427407bb7bb0c6961e65f3bf5c8858e0905628fb72a3f1de1ab110ada07dde1baf75f7fa75524a21b283461aa7bb8e92e9ecf711361d747010d5f1a883f04136238d8c61d4a9223adeb563eff43ebbd81a6ba0be218a4805ff6eabb1bd93b746ea226c3a90b48852305bd3b7b1ad83f6a5b421264473c848bd3e676fdbc6f1dd2a2214c8caed3939ad6cda9a75a9aa6c0305fd987638427482fba685d7df6d5252f75ca9aa66d0159109dc5d67e7514eae8eb5a684488e27674f3b1fbbed96fd2c416dfa51fa3f26afa3d592e041f7fe9e5deb0c728c23b0b6cacab2bd4b6d74ef71d40aa3846dce78d9a4dc22389eaf75e797dec64e4a671910bdd1b07563f7587c8c7bba24442278d7fe3ba7ed4a37df45911b2cafb5fcb3a7acf1d61ba242d446b7cbd025bfcbb2e3f352554d9952553a28111b92b6fa1a4316df4d67e71a8fb5ebd74e49fb6b6489c3932b3a4788d4e0586fecafee0dbaaef18a42d0af637cecdc194eeb5e1ab0d1e8e4f5eaa2064420e84a5ba5cfff637347218fe803f56f9ddef34566df9e2d893c40a17c389b328f949daf12a20ebcd7faee2f42e639a5ec399d2a161107a08d16de496363df62ad22349c5f7b265fed0b6374f13eaa4a16d119af79b4ff1893eec5daa6c88caf74de3bfb7a3fa65d4da2326ca57d2974e6c8dc7c930c0aaf6bdab5e9a5ccb999108d51e5734fb2abfc6f3ae844627873f11d749442f61a64a5aa0aa3d1c662b7fbb7dae7e64a55050663d2c18f344e7eaebe57aaaa2f60bc3e696bd3c6d9d88c3f88bc78a7f47ab5b6bd7eefb552557da9aa9d9493263a55445d583be7e3e96095ed4e16451b70eeedf1ecd65ec6aed78b880bc892c1efd76c6cac5aab85680bf7b6ef6d061bb5d6a52721d2a2baecc9cfdafaae491b4da22c627bcf60339e6c3e79ad18222c9a85f4f575ad4efb946d115de1f61bb2e668a4d4cd7a435f88ace07f6f6d8b105a5b25ab4a88aa60b0df9d905bc7771fe394888af6ccca7fd051d61eda67453405d7c8ac8b57deef18dd93c23175ad5aa72ff657e8a268cf694fbef79d6cd0422824479ed3798d0d3a569fb0ce55eb2c4ad6ea3f744e3c848eb18f959fce2a6d18099bca56697d0c69c3d804733b0ad9844dbb6bbb4c34f68e5f63d755fa5aac1aa811cebecd3b3ef7fc5a1198d7fc75472a3d4a485956f25da16c8ca784f1a56d4d682d9f94cfb5bb3f1b734c9830c24867b7646eef2fe13ec61a657ffe9e7b7c4a78cf69fcfa55ba6e0ed624b0840e764b581bceca1a126eb54eb2bbd39f6cb3414aa07d51fa337925f7bb7784eedbcd9bcd6edb60934690f031dffb7ee98bd679921afbf973f3a5d3f88c16a146ffcb17b679658db61221daae6dff39c3c713d221c47e52b6ac5f5f75fd5612699bbafafcbd35d6dc23710f5e0ae9bf5ba384cc90d01869eca64fd267540a6132ac9735d8b31d656f8fc8d7d83ec8e4acb6355883e03ca97d48397afd3a2510e0bd2da97beb9e3ac6ee0fb8da169b6b4b77f9d97825e403f7e9fcd5d72a776be71cb193d69eb4f5634fcac64a557543555920d403c6d7355a633f74f6de3c787f06a973f7e69ac28a81d00ed8d3eb2e6358dd3f6bd1899427519a640935f29a317b67a3eddf74fa3ca483dbd2bd299f3a63b6dee61262c441c8773a1ba79b949d23115a844af96073d345e70d61f3404891d8d0e9bc734a2aa9d77a44289157ad7b85f7b6f659d993114204324f2627657e686b7c1b3c9403bfde24bd5752292b635702a143987593d2eaee743072331c48bfef228bb355f7f3ca1c6cc810b77e59bbe9fc5ba4d4863810ba819df0c5d6fed2d82083b15455a81a2a84cdcaeeb46db9a76d7c6d601fcb1a9fc97facef65208e08d5a055faed0c5b8dedb9e70b8408b913ce19ed75932593adeafc101a84ceb753cabed06b75b395aaca4993af3a55f5754b8806733acbc63d99be47395f8be97b7abae452423360f759dbe39475be7b2c55514282d8766b64edb193723abc52558134da0fd2162d84d1315f40628cf35586d63d852c6355cdc65f4f5515437fccb6ef5b53ebd4baf7be44223909f9519b42f8b5d9a4f776ec9e1b437dbc689fedcb175ef76cc6d20bf141673fa7b542dab77d7ba9aab49ca6e4a4fa34e5e744a5aab49c7a7466680f9773fa95f355c78db52e551563916f556d69f7df92139241a591467f74f68597d1b792d2e9901e0d63b33ce774a60c42f612cac35a969236d7dafbcae20dc54036bb313edbcab07fc61a82019bb6e757c92a3f6ea72fa0ff9ebdeca8adcefafc2f213cde925808b9c045dbdffdade3eb97e2e1010a9aa1164887dc3ffbc63ad9592c85ee90b2d6faeabb65b5d6089308b1a0bdb2bdec9d3d09a1ad57422b98ccbba7abaef66baef2ce159dd013213b6c73191b7b35522b63f312aac3b584943b3a43d8f3672a75254447577a676c16b25604951c1aae1091eaf9f1e10922a4028e3f9fc95b2963b2a36b09a5c03a689941fba66cdd22cfe1add6c622e4afeed61b0a26739229adcf75ac543218a113d88eb7a98d8f4e0a6db58d0be92715143241ff6b3c9dbb73d3c6d8e4a0b2b1192ddf78e1b38c9eae6987254225f8eb7f6fb4b15dcb97cd109810092493d17175513ee6e2e4d008a863edcd36e37d92ce774b55d5e54d55aaaa0404d4427134bcd3f1cffae08470da52ea4b57b9265297101ccd5dcbfc319410be6b250dbde1b2dd37177fce8e6fe30c21115ce9229dcf74cad7b7be525555951bd15a5be9f74bf62cabb6a77b426d30697bb66b79564a5d633658fdd65e5f768da54758aa2aa0d71243688d67e97dafb2fda59342d6a2864feba073eb0d2dac9195aaca4d3c55d5d33f844230ef477fdd6a642c326e69d09f1fa584979d5afe09821bdf9cb33ac7ae639bac54551f8096ce191f42f9d8bbf04b3b3f27d40d3f210fb8c96db9d9a1e5c8ad49b9a10ed4f6e9dddc6fe5281f0b718041f622fb7ff7bcb639436844c8915a565f844cdd8da5aadad9d9e1c9151d142a07ff1f2b5575c54367c82bdde5c8aca3d55af7d20e0aa8dd74b2e1452fa72e57746ac80cc71ab77b681f6db30b89545551426540fa2f36742c7e83fea2103a3984c880b1d29f13566f8e39da4855b55355feb6b9209dfb4000795539490789d01893457fb03e8c4cca6ea9730232ed5055554c21311ec7775d9bbd9dd387a6d3fb34eaea14110a43f2b35beba43042c72c2c5515124f02f2aada410287ced1e91018d356fb60a37d258d769eb874cf2569e1e9e9f9aa02a2aa4e40408f024af1a0be888f4667ece3b76bc9433af100358a0484422255553b4a84bc78b6f6517819c26f0e6ba9aa767662d0098d20d405ed7fd227a39259760f96aa6a4beb72fa0922b40129bbf9a46d367f766d3d015515431caaaaaaaaca9a860871412feccb2aabdc58649296aacacba992b678f7d4aafa1ea01a945a40680b6e56f665d55678eb65b254552753bb95aa42754f7baaaab67c4fdbe7820af21d425a30b7cab6ce38e97413b2aa0a65c1cde5bf3b5d94b4ddc9212c1cb54f3646d974cec9eb764257f88cf3dfdd858d3aa63c56b4beccc6465f95cfb9d9a454c1d2b9a3107ebcd2de095fa4c2e1acee6cf3c7177efb525559410159a92a199aa2b6fb7310b6377aa1a33e84a4700c4e770de5c32725651f92e97bbefc9cbcaa768ab8420495501497b5ca22ad12bef954ba2eb94e0b41f15136ac0c9d935c5ddcf16277d0a9aad792d2e121f4c4b77e2c56276d7c31726d2127e2fc0b3dda4765ad36520e85898f1f7eabcf5f3f57176a02bad6f37aac5f1dec9fa51013b25186f7bd32bb5be74a555555eff3a59f4669a92a7b721e539004421a60333af6ee7d14be7aa9a380523a1c02e3ad3de9ff1cd31b239455e72d11dbf4ebe6b4d6e79bf7b5eff9090292a284cfca9cbd3e17df73ae65a059f6d8d8842d3275294b55e548242d41f56d124c52682793f4bea6d27da9aa4e40261ed28b41a44fa1fa8731c0bc39de497fca37997b36be007d2d617cb23dfbdc2e2b55555501bd15f9c5b1361b9ccc34c23829a55e58a3f53e47d7d76d84b00bb5dd1e337b99b58c3672a9f7cdf72443376b930c065d161953e6b27565d775090a50e3f7a08d0eabcbd6cd526d69fbf84f36c694fd2c55555559a95070f6ab0cd25be1bc0dc628b6ab54550af55690985d9b198b6ddd5fbff7e3b5c5c81acee8bec5eaa5aafad23d7cfa093936cf2a21a4555e194c96defa1daff36d50be07c587af7ddcaa33d81a85dc3af4dc4629f5d9aa84cdb9f9aaaaa7e71d872dac4161cf2db3d252d89c35ab25a83e0f47b40ad9ba8ef39fc7f688a5aaa8f03cc9ee5cdf182937483b02256a1dc6792d8bff1232ad418b6bb23e7dfe58acedb6756eb877320aab4bc9badd31d69e676d461b7dd63a29db6b09aa7f430c3accde08653bc8d039f72a9974e92ef5791fabde5c372d55d5930a5f3ebba5ccb57f9c574a4f7aa794ff1eb3af5ff4878011d7d10adfcbea18ec7e49ba81542f93cf28c76f7732f9a5aa327d0fc9cb5b53140b400afbe77336abb4d3b15255d950c4a3f2528ed2421a61f52f55554fa3b4d8fec90156c05e7fcf994edae664f6a5aa7a318804e4736720e2767d0ddbdd8c3c2d7da5aa4ac5219eb2086dfb2b25a391d15255591ed2ce175394aafa626aa6809492c6d8d3322a1f9bb554553b3b3b334807f5403be8d85055f6797eaa0af5403c31e8904c3ca49f13ca56150ae8e7248435f1743105916c8280f4ce2719fab40fd97da55355bd9b7e30e550555595fa39d12c2c19b4ad4ad9dc95b627589a6c177bca479d74d90fe54aebf6d8ded9cadca69c2e8395d7ccde777626dd41091f10cd3e3fc89155d9b0e3b3a7388166e7a493ccc619eb75d79eaabce6e885cdd6da5a73269ffcc0dabb5eef74cf6d7c87a5aa824265cad92dfdb63a9bd3c732f8f09279fdc7dd952ba5317fb95540e606f0d51ba7fc4adb4dc7b3900aaf7f746f6e28e96b59c8d8a05df79a3b86ff917d645ec8d4c072b5adb1bf123e678c26214388640f67654ce5acee3938486d97b293cd5a74ff1c8b4286062f79bacbe4734d660691b6c9a8a493d22a199556670a19415a7dc9dffee77df45d86920984b68cd559e4d8aa534bbdbc353d49430610579d75fcb71faff79d2fcafcc1bed1075b7bcbe6b79462c8f83129734f2b6d633f65bc41327d3c658d7d7cd798dec7fe84ca18327c744387d23e465f7b74eacf8524b347ad0ca96dacb1cbc880c27f16c676e7d04a06f568d0a19555bec70a6dcf3c1ec779278cb2327819ca1834e5e72eec6f8d4507210c247dec2ca5cd7fb9caf68247fb3a1669c30a6165120fdbd761f367d5c20aa1bba052e96c856dba943736db82faf3b97d5e635f1a1fbb23b6c971427fcb13da972c88def21f93967aadd27b0513fa94b5bf7d7f94edd9f1b14a2aa973d1319fccd6f1d23ac9ae74b4bfba673ad89cf64569df35cb8c29aba0bad772de7faecd19df710a26b5df8eab5bf6d2e1cb41668edbe2ed36d95d46db3442060533f293d72d7dfc9edd39c1a511fedb1a3fb6772c820813f09dce1bcb462dcbc1a4f5faef3b5e48250b42a604cce3db7f28a1bb6c8e3109bac6e8bac6d76865085fa9aa6a9019817350c6aeff648c3b0dd437002113c7b37c2785dc28edfaea171938e0952ddee6e06bed58179937aa9cef9e3273a4dd4f4b45c888c052eb24a4cd4c25ab1d2b20e386acadcde6ae7497ce2e97aa6a089936607de8fe3ecbd89327cd05e984e89061a3bdd898ede9d1bdcc1a56322baddf37e9b3bf5c72214e326abc670d395afb6c63d4c95255edf8b81058644240193eda71b2adb7cd17292093468dcfd27e6d5af7dc1c12210382ca2f9be59573b2d7ef4a55b583cc076c73ee65b5f33578e94e103a2f8154e75891f10075f3e99dcc9dedd79424d3017f7f2b377d072b7d3b3e3cb1e149103a292064381021a47d6b64b7397eea3268349bf29b73dacd0cbe0f42e60c66f67d7b8d7ed7d9b49f9031a3d6faa864cc41e6acc31642a68cf81ccb39bdf6f3939586aa9021c339db2fda6f7759ac9046e941668c8eecf132fb26ab1d6b532123466bf746f9bebbce32ac386040260c076f6c365677a5f46a6bcff3c880c18d757333ba7656d9fc5255c97c311b8d95fdc726fddd3b4b55f51f8412325e44c85e8bf335bdd5b6e352557509a20b7a3d32bcb6b2eaeab4a7faa8203020b301683fbe1b69b3f524c3c57df35953379dd377592c55d58ecc168d3156f9a3647e1db75baa2a3464b4b0ef9d3ae6b0d9f8f4be52559d21934533b30ec268d95afe76a5aada0143060bfad5cae790758dd445b723819d2b3a1fd4d31fc445e60ae7226c8cced6d752c6b3a7a76d0849216305b3d2bde7ac55c4f8a63bfb73c722db88850c1510b207edc7bfdd7ca35f2133c593ce5d7b6583533ef658a9aa64a488df5c5fad1436586383a5aa7a521032517893d4c1af92369b8dd6525591525d64a068b1d566a755c6d9cdae54553cc83ce1ce696b93f28bcc24d35255819171823a6b72cec69271a5f602f91f11c63966cd51675add63f395aa4aa68977691983f77dc267faa5aafa22c30433e9f6329e90f95d4603ce658bcdfaad7e19b256aa2a1930f5d97dc7f7fa75cb2e2c5555ea799688a9846bed5ad94dd92cdb764b1988698264e68eefee61bcf3de525575b9400c13983e7abb2d4f57aa2a286296109f8d3032bbec39e99496aaaa8b066294c0e8eb3a2774b4f68d4124c1257b5ebdf963930d09d1b2f61cbee8b69dcd2e5515256cde7b994f7654c24759a9aa8e8822e608114e3b63578e134ec7b354554ec418c1b97eb49d9cce3583574ef22c643badbbb4717bf1444ad5a054119e41bff65d8fb0fefd58aaaa2e4dc410c15d571dbfe5861d3fb2982134f6f3b9e3276da4d7e1162e3c3d4dea92458c2492a77d77e67769831c5f0bd04be0272692f89a51f794615719a5271103099dceb65819631ce40314e4438c10ae8df4bae8ae3eda18b70f4f2905850b0630a043cc23334a8f954ae70f467e5ee269d415246282602fb4d551066b370ad92c55d54e113140786c3a6b5bdbd828ffe3d20f1c83942b735f65fdafac54553bcc87181fd01ad9d9579b9f8c8e76a9aa1a0e318e40f8207d343ac9ccf9a7a8c4f4c05f64919963d4bdb58c4b55b5c3430c0f6883ceced76c336963e49e981d58fb2edec6f4bbbdf7d6088d0d9bb39c36ca87dc74f0eacfe85ffb3546985d09656c956dd35f84b173e6b2dfb59f1e9b22d19bd1ea5f1ffd27994b84ba3bf3ebdc63c8ec1822ce2c3d5ecbd727b51e73302b830d7a6590597e97873c5af9db64b65678fd461cb8dba67dd42394ceb175863085ee6a5bf7eab7a43778faeab3d9d6a3930db29842a0b3c82f5aeb0ecafb6ea9aa76acc4d8a071ed2ba57bf53163d596aa0a55c4ce176f54907b94275edeea1011c317d4951122313568f3b16b67942fff3d7531845c39af4759bbcaebde256931f17cb1599ef4700232ed10338863b71b9c8ed5e66e66200318c080163134782829ab5ed96d7def5fa9fa20247652a71f2a616266702b6b3052f86c73b1352808f375cddfcafb648b7d038994d9ede65a0312bdf97cccbe2d43e7f88fa6f5b9399f526afbb2f3c39f3736bfb93a9f63d2fba08f597d48db64d2b56af9983eadd36f9651086bfb1e90dd497eec52dbedde288309d93ec6ccdfccf2633d66a4b0be934c56273fd23c18b2a4cf8e46fbb3b68cc19cee6cbcb76d3fb691c260b2f4cb5ac6e6565fb617708574b629dbabb3426e7848ca943e6bd545beecd518174866777e27b54ca97cb2056f5d64ecac339cf75a7a0785cf55686f93efccc6c702269b9d516b6f7be53657d0f2496ef542086d9dfdec88d0b29eed3dc247bbc23a583e3fff46e1642b25d3c1ac5e099b794366dfad2a988d32d7da739739fadc4c419bb6c9e9e29393b1d6708eae34ba4923b317c248515059ab9321b4f72de5e84e709f756d69ab1442e99e0958b3f2c2a634da87de5e0ecbe27c69ab948cba7b2f8143f998bacb6ee4fa580a114382facfa7e4c9dafd37e91c8164aef5597d7fcf4a6be3702f7ea58c2fb570c849598b2f4e4a65bfac6f48f755c647ed6bdc289d22b873cefaa8bcb03677dfba312f63ada743682f7437db607929fb1ae774ac7e65362264cb28bbca228d92df1af2ca0867bfdbfa5a065d8dd9384a2aa57bedb95b6d082c9512bacaa6bbaf6eba349ed7c8dadb6e0daf8d13046fc2d67d99ffce361b7ec0f6659f6d365a29abf13df09cd6f95c844edacbbc75c0e3758dd57a1f94d54118c301d76e9d95c63addbae6cd0231685c781f6c97b572744823e9648a1273866d90c1f71a95f29bb55e8a31834dfaacacb2b2a5ed2034c594e173ceebeffadd9ba55caaaa2e8d2201bd96efa102316450c91ae3a6b23d6be37b891923be7dcf7ca3bb16afbc30460ceada9cd31b4a6959a45c55241ff71225268cbf0ddaebdebdccc6d9664927f4440c18ced90aef9b315ec7dce5d493225dd1715494aa72d39714c77c01bfa54b7eac31ae3ffb81be48d1c112e3853376cdbea494bed8dce9987230a57a62bae026ad8594bd8f7252af4e768a88ee4913ff2c5462d0f139a172087511b301f8d669bb737c4b24540c172c2b33aff03a8f54322b5515698be9d2c2cb133a65cf395aaa2a530562b4987242fa9a3ecb7619b6aadaf1cf42254b4c16dda69cf05a38eb653e6f2985c59caebdb5cddfbc59b35255a14a5a785046c45ce122a4b121dbeae2bcb5a54c1e630573ce5affeae2ab5daf2c59a192327d4c15aedb747e7fdd6411368625c65001efa396cdd67f3b5a574b556577ac508999021523457476f93d4ee7f5abfd52557d410155d54e141dff2c30260ac920add0c246e5abf69562a0f07ff0f6934d63ad1f59488b9827229555bedaf16d734fba18271c634c4a6f8e4fb6e936268ce34b1f6dd65a479d74f64a4c13b0edab37b239af64757639d95055378689daee9551973c5babf3a6b4c46880efe5c8f046e6d155eb8078a4545555fda4620c98db28a40e3ad87e4af75e09d3aef4e17d0c529fdf04bf4fe53b7655b6f61e33813e33395f6d7b195bca96f0f23a742c9de5a5ce4e25f0ffbbcd2bbbf639fa3009d73acbbcca479ddd36fa76840487b7d94707db744eb6a7c49d6cdbfdce55f8d8eb1198ab1776b3176f5f97d708eccd18e1643f1db6086b6934496bb6cc9bff9ddc20b445b0b5daf6571b857c6f8344688ed93563dda275d4d12138da317ef7a3eed8f64bc2dc7f7c57eb7dae4a6e91d0c82cedbb17e9842cce1124d365ff373adfbfb41596aacae784024ac5e02321747cec7e4e67f091c8b7da7750ce8ed13dc9ca28089249c94f1983d5d98dae5a52aa737c180141c6ca1a56a68f7aa5f26d19fd60dae993dd9bf5f173fc525521f13dcd03f4e3e3438c7cc0acbb772fbbc8dea50f961cb91c9d79f7e58facca39ea017bd7de97b4c5786b3fca836e11ba931752c626bb76b48326afc36f8da973a7b5fd306ac4797cd7a58dddd7519656463a6094fe8b8db9c5c65a7358468cb094dc8de17b7cf8b796de5655a370a8aa46fd221effd963adcc42675c4b55751f889e9122d7c9eb2afb337fbdd6914689cc774ece179b6b34b6c988b88f535ee728dbb58c3695510e22a5f0ef3fbe74fab5747448d3fa6eed2b27addefa95aa2a8e7040a9955fd9c7d7b75b76a9aaa28c0c71695f9cfdae1b6bb5ce52558d6ed08cb1a78f52673f3667510d1815c25a727517326f8d4dd7a5aa6a27231bd4e69f7d2137ab01a451ca9ef656e698bca99e27a14e243922245af996c1cb68edc6604d7555cd301a04b6b775f63bab7e19d2110ddaf4c7ef9bd7ebaa8b928d6620597df29d33f69619778a04943a954826d44b190962a94756e17b0f4aff2b6d1805522d3f3ab9419f5652fb5b4680544a1ffcdb7ac247ebedd11fb2728bf4c9dad13ddaa6cf0995831fcdfc36acf0afa3f5b98f8756c27bbfe5dbeb5a4dfda474a28cf8e8c86abbb1bf41a771b23d5a37672c1db23965adacd365248348df657c1dfdbed52dcf294b10233d6664335eef76f6d44d9a079cf25ec83e366e6f875c46317091cabfb63e7cbed2c1403e851332fc2749a31744e820cbc92aa392f6735f4678584be99bf146feb7d54617d0e8773e6be74fd676366ac1abce9b9cd03ebdc346e68eb2a5afb5dbda8e18b1803a06db64d91e1fa395ad00decb98bb67ef8c3a645a4676747b2c5f42f766cfa88e6f561f9dec5cf5c9cf4674f0d3091bbb95bde6747818a9c041f8ec2f74b6c16ed695aa2a05735ac7fe5865ae50d237c77c773699bbf5d1a78ca2407683d1b5cacf9959ada31338964eb95d58997ad31f99e03d5f7a63bb7db971372b4672b03738eb74ec6f848cbb04cd9d9f6d7772b3c77f578c48106f777b8c76fbbfadb12c4623f0cab652afb0a9bbceb5511c4caf6d0db695f7d597ee338243ce77cecfbc23dfcb6c488ad11b133ae8daecda5eb5b7aa762e8a8b4e692402fb18b3ccf3c5f9ddce4aa447fd903a1466e4c6adefdd173f3eb3462fc0a3f33db52fc033c4a88dc85c4b69e3f36776b1b16460c4c69417c279dbabb24956a98fd6f0fb8d49e9981f95ff34c4c4488d66e9e265cc2f634d36dbb152553aa75108383a072f952e1fbe7bb554555c782c104f9d8d493d8cd2f866abb3ae213b73bc4e8e40e0e27d4d4e6fdd4a55d583450b8f94aaaa461fa03436d9fcddd7cd5a12cfbda42b5976c82187aa22751979a05957f936e954ba671d4ffffc6c31ea806335c2f6f61bdbeb9096aaaa870465c401c972fe3fd83a526e11da50553a3c8cd06877ddb7af436eb0e33d83795fc9b42d9cb26309e824a5aa7a7e0b0a7532953c85c3c80cf8def2fb0a2d531aedb4322ac3d667d09f7f8b3fa58c1c3422c3d17a1dc2676e8c51ee316cdb6fee7ef8d6b58fa59d379d7a6c88f224879118133e495bcfe7cabca3e7f064079d9ff6a1340a43d6d677b6e966b5ee5af7419d72f89eda40a85395ea0b508fc0e82aadf5391d7cb68e2f959fd117f61fb5b4ca76e636bbbde848dbfbc80c61858dde5255a1fe4b04465d502b1f337aabdf79df6336da00cfc7d0654379194b7e1d1f465ccc778d4d5affed6bcdde10a32d1cbc12be5b9fb6eadcd9488bd8d2fda3adcdf779d9288b8eac1bbbe7beafb1e9e54d55b5833a0175151d209e9e1f2b28200b8cb0803d297dcea7b4935148af68f4bae79ebb2ec6c866b36164059dcd4acb6ae447ab4ff7f23aa0becb698a1b55c15a84d3b9ebf04a59a72555d51c51e1d57985fe1aab533877e70770426aa9f3cb2ee31a7f8e8ff41d4b1667a5f5b6870266c8a8fd586f9d0f9d4fe0668d3f65ab4caf6dd84ce06c8ccfa7adcefd57f972b467fe8c52fa5c09dea4ec25b3cd294b2625099cda265b93f7db3d7d3802f6c7a87bf5b18ef45f1c14bedfc8d6c647dbf38363ba7cb7d3d6e9cf64e337ec7374ff1e61bc97c116c1abf23e86dfe2f5762f2e71e3ada451c6099b6449595cd2c664669ffab30c46396f2f61c3c2cbfa59a4fe0ff2f335aa3f69d99cf2dee6d5991ad0b97be195b09f75e9bd24040f3bf2738fda6791ab4de3316b7552b774da48a597aa0a024b4000a5844caf8cd456f8f13f207fd6f6acdbbeb4b2cbc22cf1807b391b7db4b127ad7c48329d78a6bc604907a0ede798ac2f23643d7909075acb5a7f36165fd3f85b96a0e19cf57f7f678c7eed6953e90aeaabe0b0e40cc7ac4fdabed1671f3335e3b16cb4ed7ddfcda46365bc8f1fa7fb763fbaf546063fe3386b952ea93bada49f2563d0d8626c34bed78dfa5331d8b646a7dbdaec93966118ddfddcd997af017d4a90256078630ecacbb5a1bff974ca163ff52cf922dae9b79b7bd3122fe03b26b931576583ecba54555575c3922e5c3fca689d6c21a4ffbc814a1fbc16dad7b84ec82e17eecdaf2ee5437b5d97255b3ca5ace96c9445e8d39d16cfae3e69affb5b9b5798857bafb2ea6e69abecadc5a2f695afd9db24b4b459bbe40a1ba764d5765b6ed7b5ada0ec79834e5e3b198c714915dcd8f933758c461ab9a998fe4fbbc63bd9142fc2362375cc4de67e9648e198fcf611b6d63ee3644ba260f5999b8cc57fd3d9512866df762a595b6ed6fe9ef0efdab559e5eb4cbe5ce2c43739d96cfba2d366bc240cbb37beabde3cb6f9181c634913ce59838dca3befe37beb12261a7dd175f5e7674f695ba2816967ff5b48ddc2dab1917e580286d248adb5ace994d63a4d25f3518e5fa343e891bdacaa9d2b3a55689ad0aced66b9393ad6aeba1216d30f5545c384c8906fe5666b7defbd13274d9eeca0e5a9f8f034a184660975dafaaaf383d1bd7d89058d129cc9a6d24eeb6075be074d122e7b92f2372adb8c115e244487cc55075d7ffd76ad0a1a4a18ad96aff5cb94a7c32e5595e9f4c4494f4f500e4f6c93273f987ef8498916a139429350d67fde9c63ce761383c608b63ec88dbd259be4dd199b5dc6e46dcf6ea329828cb0d2192fed864fef23c2ad4dd9eb8eadd697cc43782eb6d74c5676573263923c0a2b8dddefda48fcd1f82e75cfb1f79d95061229aff3d7a47d6eec6b6d5fbe87278dbf7c0f4ff80b1a217c6b6f6aa775b1d9d9d13c225947c6167e6541f81ab9328b6dad57361b109abd909b3efb5a838cf6f740f303b6feec5dcbdc97fb421f30bf1cf9d97d6b2719a471644e6e3b1fb3935ea7d7d2f4003a07ad8d554e6ef8e835f5f7d800940abac16978f0d1363a1bcaa73b60cf5a09db3748a53fbb455c214247079a463cb21aabbd1d7560d9f1b38d1bd766868d1169f9dfa5fd9cabcdcd2e55d569ca13209e0021da00cd228eaf6dc6f1ba3827937305348ab87d97be161b972da4dbdf93a5879ddb3fe54996273d3c010af2a1aa50bf05d53e978a49c4064d22df9abb76696dacf63ddb5cd093e6681079d3326c4adf8bb3c2697b78822a694b4f5025d1e4806375f369bd8fa56c501ee24f46dbdc5452af97b2f62c6870e01eb6c7a86d77266f7586481b59be6d9ff106f025650f9b356dcd51a70dd014d2d1514a69bb4bdf6b1c4b55f5d35d5224d3a9aa767eba8b15d30f4ef809fb9e9fa02b4d742e8d0d24a5ad7d3ba4f75a6fb1062f327e7e657326c45d632f198424d489443388ecd6b0e763d85cada493a581ff756e2fef4316d0cca025f3d94e3aed779b935f7a7e7e5a053482c88e2d520aa16db59fab813875f9dfa2bbccd17e0372677b50423925adb7ad6b83e68f7632d6c652b61b656bb554553dd0f8c128c7c8d7edfbaff02708079a3ee43b95df725aeb32ca0b031a3e64b556327fdea34a072d6bad42cb1f1f9a7e787245c70b8d0c629d2ebecbaebbf5768e468f8f56dacbd7db8432ca5a7768f260ecb8b5f8d6bd1f7f8dc1a5f7e1bdf756796df40603282facef8f4968dd756c0c9a1738746caba5ae27bb94f3891f34783c97ecbdd758ceb68c3485c6050cb27a5bf3c78ecd597b7a3a0b4d0be48b7d21b3f6c167aba4b963daaffdd52f8c5dbfdb0e1a1678f55add49d61a77373f9106a159416be8f3a56d7ddff77ba5aab23ba81bd0d8d15a3edaf7cd9ece4d5f1d8c9bd5be0effb6ca68a4e3de67e16dced1696b8c1403342a68cddaf3a433053636491d6b17638dde3c476487ecfe65eeb5eeeb5050dd74edbe69db4bface8380a03901bd2d9fd5d6ac53e6d82c5555151a13b8737ea3471b2774da038d1c2e9fcd676b217dccd294c0faa457f27bb376b4918604af71e5764e320619a4770474d2cb8f49d694bd36481347d756d994d7baf8fe5c4d5555a481633ec71e8d12525a2163f6466d91be8db27663499bd388a0f66df79ab5ccfe999f1b94b65b67795218655313cf490b50d08954054d1bdefc7d93f3b679af75346c5477c9cc5c6dd3dbf71a365e66236c1c7f329c346adc675e213b66b6f1435a9a004d0866ad75c216dfbb0e1dc62c4f7a00a24983cd365df37dedbdcb5c2b55d53d9d503f2427373c69a253555cf8a001c1b3b3fb5b5bc73e10a96395a7f376ad7356683c30ad64acb6e7914b5545f282a603eddda79035363b567f9503cfde7b7bffde884665585b9cf0ca8796b23de3a193f22763d62d6b0c9a71ddb53e9f8cafaf75edd19411dd854cb2176783f55d5a32da35a3f69d7c2ece07df18fdfe90b16608a9b7e762bcca288bb1a9736b6b8561d0f84fa58dd4b137065989068ceb1cb5b1e973af44f3056ce9ceec6564cf5a7fa5aad281c68bc81f9bd576ff234bc9251c52a72a25209e208aa0e9e29932bb4bddcde7de62a9aa767e7cb0d8f00475f2712174b69878acf8b81055f5e313b405cd06983e9cce35af51fefb7331eb9333c608ffd6face4b55b585b5cde08c11566b3a9168a0d1a2cd6693cda6d5fb5dd83459d848ef956c1fb39541374b5545aa2a2368b0f0eae474262965f6f8cd2bee636728dfb7c3069badf008dfffb35fa97cc8be0ae7dabbc690afb3ecee54c027ad43c93cde0b9974b9fc9068a6a813366feacddee7c61e8d14f2e37374565bfcfacfa390cff83d3925a5733a7ba1b0343666ddba779d84b13ed1af551a6dc79e344ec8d92e638cf12dbb2a254d18f78c5d37ad6de6ccb095aa8aa6897686344e2b5932e753d03071edabd41b3a6619f283341a78c7586c56ba39e77cd269c05c2b1f4bca1a5bc96acf54f21c85b1618555b6ee54ffcc3401b6f3736b3d67acb61d13aa7bf5fedbae94be791f35b38467a1edf77e4e07237b4c09eeb57e775aebafd2992440a66db274cc5dd60c5927e4811924d496f1619cce36d91c634ad8bbdff5597ee767af35051da19fc1675e19948e327da5aab261c608b6c9f8daacec1bab2def244c5ee9e69defb1b46d7e17334570769ba38edeca33bab4f6abea878b1922bc3f94ee545a592fdf3784dad1b6c672d6d9cece26094776e1ed6afdc5daf56631130964f2ddd86c6506ffce86044ec69376e50ab5b494392304f6247b6729ffbea4b63ef2f55dd82d3a172bf77da5204c492164124e77edb5e5b7272a740608cfd6c9b272bf4b7db2dee1c90f2c6dcbd53d32f82e6be94ac48c0f688c5f6b845076adcdf63d91c2cc38326d6c4fc297d7db63caca98e9c1f576ee2bbb391ef4a58eb29b6f9bfdceb80377afecbdd17a1b69ccb9cb1c6b7f8eb6643a68bef4a5e309e393b03e46e09c703ee4099b75aecd45263316e5734357243aafd6be84d74b55359348b36dbfcc658bef3e6711f1db3cfabb6d491b4acec1f3d86c42dafe499939843e37f7fff56d046670e09a1d950e3666b57163432c83b5beaeced41bac7e0329ed84cdcabf9725e35688bc1fe96ccfa4fb5b5dac666cf09c7bb3c63b1ba57eabad0137b3cc7aeb0665d3fb25d2c9ce10722974e8ff2cdda47776098799419a733d239cdfdcb4b34d2b6668c0d5b2ee269db62a6383a5a0275fbe87273fed83123333788dc2465f84dd9ed9638234f6e2377cff0839461ac863a76fe36dd5d63aed03c2984e0aebd7c7cffd4027d31fb3def6337a7b764ef6b8e443429d483b5a66fca02ffe8bd7398cb1bac7993edcad8e63b5ad49679f563ee0acb7be4a1daccd41594b55b5c54f3d41ccec015dbd15ca58a1644ce51d6246063da773af5455fe5e5e88193d989cf3b9bbb93a5bc22e55550d3379bc6b694fd65cf4493dda5255d927cdc4e0994f1869d3967a2e576660f032b27ecff14fe8edaf04665ec0964237658dccfd7e743cfeafa48dc9e9b0e594d605cd39d792c6ebb1d1f9b705b6b9f9d89dac2ed99be2307307f4f62c95d1518757daa9c30c0bfe56f8fe0c9f5f840fe630b302f790b1a5f2be6719f45baaaa1b66ec70ff9cf1cbcacd554b5f1d335e76d239d9ec95f2ca2866e870f8933e378ddc4cb22c5555941915bc7dced9aeef60bd37da14486a297c30c6781fc69e9e264160668ed75de7b7fa9c7378ab8a871914bce4c9ecaabdce5aeaac54555545c3cc09268dd4b5caea9bdff4a10960bf6c10f67cd2fdbf3b23876ce7afdb3d591d6bf44bf0ba42aed3310b493f3324b8b6c559ed37c9ad3e93a5aa9a19c1656b5d749619fa4c1c71b68d6fce07598daee15b381e8b90bef9fc954e3bf90d1a5f7d5a9f945636579fe4261e11fc8dcd3aa5ce4a47238d6ec019216cd6b67adf7d07db60ee3042e64fab73345236267dcf30fe3bf75cd72f3de963660d765bab8db6aefcce3ec462460daf51b26e7bad0b0137085d7bd37eb6c1e734f83936db5ff56b2f37faa4340302fb145ac69863b119acfe05e8c70707d30f4fac89a787274f8e98f9006571c26ea6377ac0592a99e5db161f749f5acc7480412b9f8bd7422a1dc6cb0187ede23b845cdbed636fd1b895bdfbe4e3581f5ae94a559572134f9699339e8b16366eefbb3ddb6846bb4cba369bb38394af2cc3c6f9dab595d9d9e6b4b654552c9821e3fe37f9bcdf7b6ce93d06a3ee4277efcf6df4f8389811234e7eb2619d6cdee7e42c55550d66c260d932c66f50cec8a46d413f6040874fdd64b2cd76ed1599f9e2ca56e9c3b6d63d9b8e5231e3059bb2394ee6315ac7ba7774bea7f620335db0599b85b4bf75bbb576034c325adbb186adfddddf42eae9f6215560860b3ad93ea3ee49dadcbd6d0b5bdb329491397bd60fe78c168fd24aef837ca76ced62a9aa28309345e4379d4767b3f18dcc251316d65eaf946f9b4ddfca4b3ad52266ae7829e775979d84ee7d642528335644f77f15b686cfc148a90566aa68795f6c1336ee2b3354b0d86c1ba595c578a3cf52553d9999a2fba5b7eb906784dceace151d2866a470aea78d4f3b4228e13b9209cb4c14d33f7a83d15997ccaf2df5d426cd4001677bc74cdb6d6f9df524669e681c655fc69ea1737cf302334e50767036ea6f32f920dba099307232bf765fa785ef237562a60936eb6b6be1fb7f3be95c628609589bb96aede5768cbd8d62460376520a5d8371fa6b2ebd340346debef0295f7efcf66125d35976fb8efd2ffd277313f835e96cfadb6e561933c13a6e7829cbb6b63a47c1c82ce17aabede275f72c8dcd71a8091925d42b277d66db3ab351ca30324980acd56b1fab906d83d03123c1c6da4d526b1f32dfcb49c85072af7b6e1fe5c8ae677547f038dfbba5d0e36c798d00e99cd2dda5cd3e75154ed23ceb6449a79db7b2ec21fd8ece159922341b27ac4db27ef14ad88e68192270741aad7cb07e7ca7ac6432f54faa9219c2ede9b3cd092ff3e94e4ac2cefdde7c114676e9846ac84412f91bf2fbdbac6396af123290bce44b9f777c55deea5a083dd9baa6edb5797db6ca3ce2227d6ecda99ddc3e3d08b13dcb5c7b74b663ee596620307a5f6bd62ebd373ee51f991fd87aaff5da22cf56a764a91e191f50d998c7db9c955c6f646628641ca977b626659c5e6dbcfc212b647ae01abb8cbacb66955a3b6578309b7317beef566da48eeea0b94316ab73d1dfab6324641a89ef3286dfe8bb466b6b202f6fd2c263450b191db808d985f7ef63163647461cb67430b249db3b85958a8ecc22df325a087b4e1ae7754e079d1b641471cea833eb9a8b21303289d0fb5276b4dfa8658f239041c4bafbba3ebf6c9ddd974fc8e4a0de672fb9b25308c81cd293ed7351c629696cb27e91c181e5577b3a6ba17b3fdb19e21f9be476d9e90b9686a8e451c62361248e822086010004c14b950d00095311003030342814c9a3e17844a025f3011400035564507a4a2c24910643c248200c833008a3200861188681280a82300c3aa7a10337590edaaae1a63d25d9ddde93bdcd2134d9d6846adfce8b00d821e60e1ff6ac042b3756fafc798129ed361241e18cca6c56fbaf487efb8df819150b37bc322b88601574c54f606751891f3b6c47b3d928af71cfe3f9bf87e8cda751384e9822fe5cd4a27c67c30395b4e6a08155f1ebfb5e36f6a0e32eee165d065b035359cf5a198b2e11157e0c2fa54e508a03fcacfe7b490880b0b13275946cb54564e968e92cccb696e886e94994b992620a5c475be2d5aac58ca6bf99b16f877fb66668cf42fb4ed8813f0e4ca429e9d7a3815a85a42e7374ff222335a16d6d82d85748c1727c49dbf6a37c59f0c35f581ebd515acc53b725df5305b9ad19ee199293ddd9f2713ef6e335144a852a5626608486d539206d87423884f57141fba810fd7c711042c0d2cb6f7c53ab806886f5e986beb214df2192d76d25dc0237c44c2e5dcb757efa1108de98022f8bb8e4a65696ea0d1510a76731136aa70b33288278255443ff70298baf320b174a08e22b373eb50e4043058fbb8d79adbb6c0767b2c97790e6e883e31e9ee0ec0b5901647744ec7bb3ff95b59dac8d37c1506528ae386f7104fb8ceb1b95ad983938bbd122e93a9d139136a94190d69a3792dab8f469c746d90b23fa00ecb3a4cf0a22fd3d421f9020b777a8c608bbb89414ce5139020d402e7f88e8d1e466ba5880738b65e5867d7604f33fd571d1ada7203cfc3eb85a01c776be78f331da014a167cee7ca9c392c67bb1a772067d7763fc1f8272731c0e961a44475b38e7f8208ededa43ff779cc3fe1ca220c86ab4d9d9bb80b823f5f1e48d6902937dce32a425290ac65632fda8823fc163d012ddb2eac852d0a2c2dd56f60612eecbb5650f34ec84aa08868bfbb92ecacfe674067141eb6f13bf0f522f82a892efe79bd407bface2713c52442d284a3a96ceedca354d69dbd5661432f3d60d269f9592a4c84d1f89c38a5ea5a0521b0189640414e4afabb60bcf37900db90c52fbd7f87ed519a1c7f7b129e8b0e7d24901450ff1cf275685c048f22da9d5ed87f7aba179ec07a9bf27920fadac22d545ea22bbdcc31e55223bbddc449f80084ff6f71b6cb126e285f92702f1a3e3874f14823bd6ebed9e90d94746602f4223a23cd1ed303df496a175bf9b1f8ea830ee010b599199d2f4003ad6ad46ef64cdfd74f3c6fe9b3100231ffaebfaab0a37e6d6dec2b041687afe76ca732d869a52deeea5900d7d5e6733719c215ffab818b5ed5f72555a4f7cd06c1893a6082ca23153e23300338fa2bc3ee8c6f9c4bacb37d693f704b11f27dccf2497a461af4a9a1e4291ed54ce16563067c27ccc42ef665d54674f686081506189e5156be460a148d70b155c787589a3c990fafe6b43a0428d65fdc10712be3be5d69431a953cf762eefd2ab0ec4045ad63f2786e933fd7452b20fbf4c2dfef772ad0ee828ec0cdb1554274261d58958a0001d0a7aeca86a2cf655979b0988d0383a65ccfb30dff83086742ae8213f8fb383825088f7920a76a7a6fdc91a5907ed2cf26deec474bd9c2d08e4cea9130055d5eeb0cdef8b33f75ee34ca048280a07514597f6649a128b7d5892f8bab4dc4f88daa43391febcfb81894ec1d1fb3af1dfa55140c4a2b3b69474449f0c3ac4f505a040c7f54a089db1383bc9c2636207d9710e8013bfdec97bb07dcbfc5543ff869924367f3da784d6d08ae0c92a82c57591264e10d8050330d971768b5d2a3922aa779e61958724206739b644254555b96eff7421f9adfef3daf4f7ff28c0651e95043f1b4722ab1dfa3c204ab532ec1708da5ae44059d986053301bb2cecdc4ef5811f0412b11d824cae450249248853eff77e5a6242709856259802197fe919435fccb7ada7f06551325e0b3ba213f0d715200cd35365d4f532787b500d302060f8be4a1b783f1db59973c4e1458bf5c37638e5ba5bb5fbcb67956bd97aa0b2242db29688d45de81e59465aa3ea495e6c65e3fb832677c440eeaac7c7b2237aaab84904261768f50ce4a30e3281602bf11a668a0eaba5f68b1c9dd784e16ffc22e0aadc08702ffab94b6e04f7f2ab5de47cdd0cfd5fea49429770a8bad6bb357c559c726cb8e31ec83b8564b719ea9c7908faec823086916d355ccd9bf12099414b15dbfdb9d66a119c40fb942a21eea48447913c8cc4efcc551c91d8adb64e9cc90264a91bdd62e7c6450e1b15625c6981f9011debc66b1332f827d9064e04f32f7369780486041295ed2c87d95b9362e11c87d605be22a37f57553b7905ab78ee37200c06903cb5bc6a2f7dd99ddfe2b6ea6cd825250ab13289256a826e17f57df82cc22e08baaff1efba214810b5133a5019f565fe26b43bc386a5b97b81cac88445daaa5aa7d3ff9eb3675a516eafcfb0dc4f2d0f1d33a05392a028689740654bdac8a9d2588df5df0b56e6611bae6807781b95082e11b7e9c001bf18698df17d8089631f576380b1232ff46d855ea1732071b7b3d85ce0b88f4cc6db5a1f58184589b068190ebb4806354de09628ac0b95ddb517be7289ba4e46d8844629ad6f291237832431d2e27b29d6a36c1768233c51e5641ad1c7b8f7d23621c4cd73c67de4c2e14e279f0c3fdea944e348d0f40d0feef2628b285ccb9209c77cca084dd22e162e0396346166f341f5b195e9432bb8fe2989da7cbd0901fa70abc5b9cb002b47d5e880d72da7cc8c1750b9354b087af936783bd46774689c6d0177c5f40416dc5b1b1f6e54edb9e3380badce3fbc89b93f88e1a4ee42ece939c86d07e482364dc1c0b790bfd69042638a06b7487f40e8c679b68f2899857e8b2052704b17111650dccd7ce8069c8990a202f4862fc7a12f84620ecf0916dbb2030df054103f693468b7a270638ff991be85f851f5ac4db154568aec676e65430d75e438ffd333816e60d6c6e8b1523f1346707547e1ee66b49f2f6b312081379deeec713d9e5dd8ad14d505ccabe7247db49b183915f8344d7fa1cf9547159addd4d6906d8ecec8c65dd459d3064c5ac5a31785cd89c11b38b1b9c23a4c983b468741a2cb0a7c20589e3e23fe2e264f6a46b68bad637c91c5be45a1ac8e73829c2922b768631fb04755ff955b35fd2cb89d808a6ffc9d71e707dc5758f279fa570135473498b305fe2a70f3f6af4edf0116e5e0b9dde3e45a154bd64b6515ac89e0c6c8ee7964f752ac28a5bc674ed0ca3d8be7e5062e4dcd643b1c663706e26c0baf916f508c5981dda4d834b25a75721698f95b45ea840d5642c3d612ac9284b7609d30ef74d2a5639af92ba6c418bb034d5aa68d4dad98b751434221f42558c7145940ff566340b2cc021d583f16c8cdd06a6659a2be06f547b32c5aae179234449c890078d69979191cc90bb143fbf43b70d5d2d0b797ea4f20f7fdb14d36d0b2651a9d962a4b7400157ecb9be740a63d6dcb51c8164eb6a4ab0ce1b5872c24473aae8d65ea8f3d9ad036927cf7587eac8e7884a20deb02cb180507adc55b6d33d05753b015e5673d99204d6804cb0369610fa97203096675450edccb65deed944f4f80626b15e87e4306a4855661ab463a702fe5b9805087227c87892437a85f648c43d21dec13a5b6ed2dabe2fbc5020b9ae666ca620d40528190117021045e996fcbae7b99834374ef2f1f9c924797a222b013a7e47f2819005e385313c541c95ad379988cad013ad1197891b6d2666ebdf6e33e39c711db5f353c8f586c609caa0f2c0a79e17bea6f650c86b7b72f5f690c63ec5e96bc0c570f3b020c0def29631fe09901adc2bca5dcc9c80a0ba3bc3e7aec10d366ca040b241a181008b2f4c22351804ea1774133632e80682a458f1a0912d844e8911db90429b1603f85c53e00df0726ca9da54aaf5ed9d4eb5c0480767deb7083988e9549aa684ad0054af2db6d0a5bbee9469e89cbde501f8f50dc20c1b10e75dfc612964c2d0f2dc6b69fdaedf8fd13aa160727f407cfe74ab8717617ecba1af7bf6a6843c58ac99b6bdd99f5a83af0736b929bdb71a26e242c00a694bbf1513d7f385c208d281c2ffbccccc7474ca076e76e1a1d366989ede894d6238338d14dbe5719dc722f31a741602e453900e4cd6b576637ce260173aea7393fa3adc700d1eb69b950e4017c9b129edf9ea351c3374ff8a394ba98af06e8ed1f8429607f50455dc4fc4f0b6b7dcd1eab0df97eb5019bf668e24a3e88d1c7516539a55c3bc04abec0e00d8ef9ba53f41559ad7620d02e3b086754ccbb43b55492fc02dcafe6ab24d106c76fbf340c19a638fca9196ea2018c8ebf77e5927ce15a94dafe574a9550cb3eda6f55f01eefc7a84db09d6f3f16b62a318bc1a09169248bc523ec0ef624976fb1c49c645b8ef7f33ad7e9b40145aec85082d314a3ab77682e160fc7babedde8c42e1c07618769d69cfd04348c7acfc60db3596c7c89b6b281d74bbdbd995652066a474a0bb6521b5d797449054e880fe9877d548213e7c4e467e05e2fd587e6589db99dc6861dd8b47b849b695ecc10ea4a3949d90c402b1108a522925b4ffb7cd0c039ed6ece6ecc40b65304be127a01fcfc24890cb8596c3bd4d6f4eedc5c599d27f6097f4e2b5da406afa0d17cc443563752278c67ec991ac7abd6ea9e879bf868144adf3a4f95474613ce41464150832f547764ef92006612caece0d89dd03b331ce056e095e398ae00bbf4a35903ee97543cb916475fa969f16624e9047a9fd70c06b454e9033fba6301cb19f462d5ac8a3781e585f4aae4f6c927eb6573507e98387f50172372b0513bba60ab5a831faef65c72a70513d49c20eaa1d337e4ace75e9a70ba43445742f667ddb6f7dc41857580056d25e882585700c533334a05f9a48b066be12285bf8abe333248bc1bd6906525e39c4935dcc9146066588e7c27ceccdc14b67cc5d00b054f93cffe5b69af012c9b28391729d0f123c41727bac7abee89f4b58dc8e297f5e2fd426993e1cbad9da8946ec14572eb54f41548c4e0a98909830c09b81b6425390ed9b81244c8169e2df8283e8cedb68e1e6a889ba27ac1fac043bcad25b49bb1b571c58e61b55fb348c4239307eeba339f26bdc34dcd0b4681075035b1ab9327d25ec351aa80838ab050060285ecfaa154203d81cd33fdf3d8bf9b2e791982a782ab56f92a0d5de0d2c58587e44ce1ba504cc397caf2c132bc7fd64cede243c5932bdd49f0dea94f444735f02548d0995abd601fab4e4e407bc24c3831cd172dbcf1a5dc7a1a6e48ebb1ed64d4aa7a8a8585041fd462a7bb03e8d5a974892bc0b9a1cb9118ca3cf3a203f410ce571b56824bf9fc9da454ec124aea851677c5517bbda5477a27865fd11f3392d6acd52c87aa71cb8d361f20ffd00543a41f7077b6e8e0538b6d28cb77a7785b5ea2226b93507e9acca89a69bfca651994dcd2395c1c2bf1f6370eec5a04db17d8356dc52a86c4efe36a1c2f1462aa6d1dc6d810630638a31a1c98f0d6d7ffbe85170383ca9b392d39eb25cea0abe2173daac5d587438ab41b957929e0e95e5a37acdddc91312250eb9109958e667295b24028a494019b17da505da156b8705a3b036ac37b462d8d9b136816f5688b1e8004e27e410e162d73079f1d9e27b09ef1e4ede8e328e059cefeda603b59ece9effe041df4c1dbe828edec9714864158aacf976149342f3f37d3ea95d1cce2e0e73a54f681b44bf3de37570b576d17bf6b8e4b972bc605d7f5cfd55ae3aa049a8b83d456be50f42fc070043b262ee8f4f9df0de0042d58a1dd0382038661305de0ea552d97c90d60c4d005c3302848505ae686337d80bbcc0bca8cc5deb8917ae9a251ddf3554869abcbb1e95b2d37d8a4a12e1169b86e65072c1200578e6e289ae00b25b8f87e6c5c633fcf0b54518854b4b843559eeabc77619571f084e7feabee168ab761e9de631e0a468fd584210fb84f6aaa5b1c54966b0a28b0bf220a4b79f9410cfa7b49780ab967081142d7f9e358f5f2a6c00425a7581dd6e53eb0997bf719bd500950c3432c8aa06f27f502bb9ec762479722cfd7457bfc4c3726a1a1ba05cd7cf70a016fa8a6bef12e6e8798fe7c4d6800052e5c18f8bb36676f7d54aa59973c78448e89207ce74e4d5c91915578d611c0ac7dc99fd61a7ded46377a0cc767b7bed37bb6a0b45ff1c7b2913a719b48bf141281e7d206d858ca39a3d5fdb27a3aaac150cf8eb60c9c4f7feb7ec2e6ab3859503da515a56e88982de812d4040c0e7eacc8dda5781951c1a40f07ac4d0738071276d8ce1f4ea49aac95bff4fda41a4cf1b2b130484bff7b35163ee12168ba7aca91a30658241a4e3aeb7909903de63d7a873bb2ce61a3bcc646ea6ec52c3f3918545be7a90fac4b2c7e871334d96a032b2cea87eadf9360efb05c2806fc102c2c2b0e2079efe01b191921fb1694a7ab78659199afad4f482b49445c01c2f97a035857b64ff247d2ebefd7fdeaaa28b668d504774e14f6093add4e9a97e8bf2cbee23462eec160eaa3b431d04f78bb1c19c99f8dfaa1224a90ef2b97eea88d4391296411d192a0bdb00d6e124ebe58f9154ca0ce58cbb380a9c5b291d896bea1ab029ac34054b55a90090f49f71dddbb68041c389cc877d75fe1e9036459dcab595635a085c79882b04992b1a39d5765be3db0637d197c44e5693c047102a03ab81750c92e4c168df452607a687dbbf6c55b32a4b0ae5f48d3ad6834874f846cdf6bcc421c41399790ffa607d24822ba0e2ad46338de98ae7c1df8edc40a8aed54177d275ff1103d6001a0d5e5e2e7f021485992d3371444882e20ec860601868bc24f0e208bd8b778f005614806dd99324c9d6230d499413869310124026d016fde1ac1e10aa063096573f82c7a583e6fc89d141d1199bfea3d6188d61c3aa230f1a67c0cd40c9a8c1b04b745813c507fb2ab9c5ae1f8e9a50703a03b4e24690dff7c0518c4f31e15326315022682e11dcbcdca7905c332d71f1b81fe1aaa08c67bb1a4626a0ac5afd51334a3297ada88d85b0429965aa839ebbf6daa8ab07ef7079d13767dea2a4a38cc6e9b431f3e1a9be1377e112a9e00885cc1f20d6929c27411767ece85cd8f2d6455f64f52bcb7ff5f5b6d10e90158441cc6bc381d3227da02912f4462413801aaa230595c1df9b4c341ecf0693cbdb8a907e4c3ce0ea0b48dd92b19123844b8f8a8c6245993c39f724c8ae4ddea83d19134c40b22a63d6cf59c054598b118702ea5049ff09b796596ebea8b27e0a372fa8691cb6202aafd072edf32bd3c38c47c1ecda0ac5062bfed2d71460925f97fa073eeb443cc942ce82ebff0618642e1699bc1ca52c4a79fb6073b8743a576b56dc7ab3dc6a87cf2fbfefe57b443a8f78fff623c020d239d38af9bf067342127797871a6367f6f848e8d6c1159568e30888563c489f86e44fb7354c13565318e004a16be5d130afc36216bec4027e7ca26633e8ac5a72873ec2a8ad250a250630013ba83dd426c4cfeb828b5d73e4382678c156c925f2ec441624579d704bbb7d69d6afe8a5a4baf467181b48dbf56dbb4bcd5b671bb601aaab656a2dd43eb7a7f5b94b7356fea89b9cecbd0c6473d37aded713477f34ad117af6f77bc7be1a1fdeba0bdd77aa3b02b3f315bddbe11afc143f0cf43fd1dca42dccbac9cc0328a5ca6aa84cb5794e1a8d8b405e296ce48f907652c2c555a0957ca4e5c4ee482cc94feb4dc8a92b6128428872b089ad0749ec87a7f7740dac4a0cd4806fce4a3de05f6960520d02961d8f615a124c1f59e8c6cbb21952ec4f7924846b627bb3df0f0c90a379b6e1e9d620c50d9b50b35de23e0a40b4b1a43933177845f043fffb8f88ec8778346dc4ce07f46775b9e2f9afe1cae43e09ee921da929b3d0bdc28f2c430dea48872cade8ca3092881c888f3ce49a498021ab40b7a9354fb0bddf3d183f235a7c892a84ec2b1b36e12eedd3cca585d7a4774668ae42dee287406bff11e449e01e6ac651c2c750376147cfbf345fba570d1be46ab440efdeec013f48d59b94aa3d978f8a668158ae17a662226a12458b93ecd867a17ad5a9d7b4f39a5ac5450b24a3495131bf18ae08a0a161a1b34a506091fd2f513513b90473a2b4a37749fd5216dc7b7f230de94a63dacc224ac0ff3531d81cb21ea3d64d5e2f33bcc11b9523620d93c51d14396f430986d81c77ed8200c30052cc073b86dad050a37dfe92df48e1b28ccac97663f77a2fa76180dca921b4e0e2c1da4b1ba6af754b1df4551bef151148bc2f66534823022ce284935e43a63d9d98a288e52d5097a02df80a6a84d4046db3c83f53805c34190e74f7ad40031159f5cedb55f30946f5677e0efdd52191e424f7dd4ed8a8c04c3677e8934d4e4d79522c9a1706dd028f7695c59ce25cf5a4994d2eb3025c7fab291f35aeab32d808911dad320e0dde7f5e792a705d4c3a6231a1b4ebf51fdce1cfc736d69a74af327b8babe9458e4e3fcf43d1aa5da2a7272d7bded76a04c76d776ee11687a43f96ce662713a862d153c9e2ac50ce0086f549ff45254bbc5021798ca99e47cfada5cd13e826a11bd79d8b1409a4d98f8c08ec27063c5c3a0c7921e4ac27653aaaaecd2eb15a3f4728f8098848d062de8effce5211e08c26dc66c47440ca3fb38c7604cbf2f4ce1ebd5a1fd863d7d728bd7bda62ab27e3271ea77b459f7709b46ac3afc9ca4c37466ca6c7911e529dca8ab7f1fc32d2d029b9fa7e5cc6198e8c2a738c61ccc86ee2f502cc59cccf21b3dac6ec38840d76b3f6185b0e9d7cb31a4f69575100d8b6e112d2b99b1a64f4ce2e0c539266e53e35ada2c45b155c5c4678309a60f620fc7aecfa78e420e6a74958c7c7884527fa740bdfa9ef168ac37c7b181b59d153deb03e0cf2c299642265c7e83b62492853a7902b466232993cd611213d05da5c8987ae62bd411ba65fb97ec43b190dfb11ff2e1c166375e02ef69000e7da408f529fcf70e5b411c099dfd0e64849e461826494e7e684c0d672723a7ec84af80e738386e5cbaaf636b2132281ae0fa9c33b19dfa8c3af7413deab4ebda1332a8a37e0d08e95407871cc617710ea6acb0f9607c4b78859ec84f4f62570118c04ac478e55f758f9872978e101f7be4bb673263b4a9e66501cb8db49b7ae0174b275ddf44a76259b0665f91404aff9487cc12afbbf992db6695bcccc0c2c63c8219ad3b43619c923765d65fa576e28fd3a7d1c965504aad096b5c2d9d9c8a3153854d2865ed339c4b0fba5a804b7b760c2c70546ce80be97d9024dd123c8d6271c9ec365874d994d7ca1b6589e4feff81236eb86dd4ad8d15281b1d8569f4ffbc7d821f25124e9a873bac21ac446ba636b628f7fec2b7613cf4f2ec0e4f52123a23121f329f964b0f91ce84881415653494251030c6e213d5ce1e421b65edabfe552a637308e93f5c6a09fbb55c43dad7e0e3aea8e51fca300162fa0cea3c6d1e78b73e1c82c363da421c0d01e5694b527a672e60154cfc8f5b2c3b6bf71eba9b5d853810ce789ee964ffcb73894de46c0268cd7f49dc43f7f0765703e7ea0b0ff1d3daf979695a0e008829f3fc29ff88901fd61ac8792b51ecae81098d47a8348274b4450265dcb29448deedb5931766537dc08aa88978a17a15cd46089971fc344b0759d240ceb47b41f4eb60902b10a55f99d1a48eadd61af846fb9c682103db4164c0c72620b0103b3b44ce2b0fb4847f19e4ceeccba585e6072824a2cdad899382d0d25bf3593866a1b93284cb3669f7114576f7e1a07426d3403bcbb882c0242460acb64dfc4a5e597034d60ae92bf129d07de86c0aa8f20a1adaea284cf1a0baf88cb7dbdeaa75dbe2485fd781139aa99f12e494fb8674c65e85b2a037165f1798df3468f3ac3dd0af1693cd833149260db4e1da9e90c110b4861471f021abadbbaafd4ef945c338e8a746e2299fe661110894e99417b11bcec36ad91b88c78af72b570eb964f9875b81b1d48fc303a72e2cffdb7ac6f4e9b4b774a752b925a3d4001fab3fbbc0814c0dff47ba0d3327eb04c2ef57efb393e9dc832b1c63d918e5dfebd8ea96e3a953cb3af8c94aba0661c296e3d9dc0ee189dc47b602d9c6155127fbbb50b6675b3fb117d799db619842823ea4d2a179375d407c89880f2b36721e7048ea5462bb28e64bfcd405108df45d68e8411bef2320df01bdf8e37d76800fa0f937270f9b3d7f46dd5acc1868cf163573036e0139f5a5e9ae0a88c34a76c922f1d6576232d3c7a30a3ed39bcfe971a27da8b81e7edbb4281dc7a31f7d9b25f2fb12c16810dd7e0b70558f6ced708160563a8bc0fc78bfb5b6c099699d6295f2a04b9acf1558522ff334e616c721dc00d2061e3ac853219a405a3eca2e3b0159fac18d7cf1c987e5edccbf03c9b9934dec24ecbc268c48db68d21641e69a41f73a5d29eb9b460d8fa50ad692d355e25baddc810cb98450b0dca3fc39e4f0a52a8217c917702a03b329d57b418bdd6bead25f48e4d6ed36a7bf88cd458b330cc1eb38d0d1494887a79567f2922e6cef5a4e0fc839ae40177fbeaaf57a3c08e83ecc5a9e41a7676f8db4149845dab9db482ce3e682dc278a2605a1cc7646db7f050725da66270114ad30ba5927f25a480f88b9cce3359015208e964700c0cd7376bb567464a4c8dab1e4fe903b6c0745709395d42cf11a230477eb81567bbbbb16cd13ffb1e9f0a770637164980214851b48f7b8ecf33404070dda92db90191f08ad0eff3d0a0164893cb80d495ec1773de0803780187ef79037bc92694b8b5b9e9192f607e5592cc28223beb4745cc36a04a02d0f67389fc59093b546061e814065379e12a28bcbefcf865356b0aef04485c351eb78b9797064494c02dfdf3bfcaa8ca00876b0083a966740fb4044196dc787f001852a8ee1999f16907c89dca2400efb3aa2ca785cde6c6d470dda618104c0039f43821ce94d99e44fc4dfd13e0ea87f5a684743605b8e2061e1d51f72fae7e0d717d851ab690c38d7da33320691caac77a200698d984b16884d2e8a7f85954244773594c775403a6c4093b47ca41ca37be19c0982e039ea07e3bed4f8208425fc9801f0162992f8f589c4b0401c377638a3932bc6c79d7b26973ed836a53a830539e00b0998a6e3796e6828180ee52037855adfc28f0e08cd819a336c70230af4d3f89794313b8edf88a6fc61f6711651b59342e5ece7f129cc7b6f12a0ff3235365e7cadbeb282d9b6e2c1061e54ebd70c1810fbb0f1032d7f9d4cb4f98f0dc1107118db9cd16dfdc68a34c6743ca1912226360cc54fe92dc8606688c913d09b686909ecff5c955311dda38777420b662b00ee530725d236e91492556c98266fb240c1b4c7da060aca5e3e74597e5c5222d6b844249fabca7d7698fd029be72d1c5a91c374e6581aff3bc50104d640edcd982c369b9be9d64d2539c8b7e5e862209119ced98a68d2de43d863389a6a83984cdefa57557a2e43cff89cdebc3edbecb9a872edd0fc388704facb718b32a845c76ff2c74f37bf773d69e834c4dff4c888241b2af06fef5459ceca00ef07a0a6fa86fd4191317b20b3fed5cce200a539dc5185b32f491d3cd7879a3e54ed25ae39513d3be7eded76688a0c37b0f1c28662efbbe4a2356cfc109125ebeaf0947137ce877119609fb0378a3fa8bdc60ece97eef2007a4bdd1cd092e96860078f4398fa12900690646c8d317d968f558b4b7d97b635bbf886da859694bb7b2558fdd6a6b291f0a2580e6943d430fab418f2ffcaa88629e1c118bb37de715bc663c6e1f19aa09ae7b0332da777c86080c8d6e9dd3caccc157b8d8f581b01c6d58b64040fca02eeae6a77a669b6b39206b3fcf52a43c0117a3118c5ae47c195e2935c74464372a93e977977e61b4b11317c0a9f0c430842fa8745012138d506df03097dc5aa75dd1f6419cfc071f763bd1e7532fe3272b4039b73c42ccb1a9d9183f8148c206972f3e8c690148259fe8d9136a8aef73ff9dfc3be195f7e569988e83ac68fca750167b6f980753f5527ec323e3e624adbe0992cb04e1a71ac4138b5caaa91d22884b76ff5e0094696cbc73682a62009fdbe369b5c318c461251422d9bf38fe1c1da9012e8f8ad0d83e62ab28781092c8a1b443db28b698c3c3d075ad6bee15eaf7bdda3cce26b6906f3f0abde8250d5cc4d17d74106d3c714b9f97c68a020bf418b9517bdffc644ab442da216df9fc38bacc2dc7152aea2835b7a8cae37690f453733f1ab98ac739a8091c56fb74433b6a5e8b0b96dcb760130547cad58bb2f6d36b77ab9a54ddb40d5d56a50a6b557f61d6f5e68d5be25686d6bb553b8c14febaded6fb469d02af896dada2ad5ce33c39ed7afb6b7681340ebb27e730f504368c3234f2874a232d782f0672dc52be56d0ecf2baaa8b5f1679df34689d943b60994fc6ad848b5d70b1589a0fc157fcf5101171a7be0f2f101d78e9f22e4807659d27911dc7b799e4ce994091fbd70bf4e5511181c743069a6f16fc94e91d85ac7e84c0491365837beb87d9ca3ccba37444118b35d46e1d35b02cbf7d88cd1c185bdc372fe16f7f41ce8afdae4eff1753891238324abd8745e694065bfd3e44cf253af25d368d928003802e320126fa5cfd1adcc96a042d17042c156732a6e6770bf41a9e769b1587af9d0001f65c8af5d485131065ee7a48ad007713bb6d8a705e374eeb9556c1a46562591b3624acef1b2516cbc9456be2391ba9a2df177494daa0f121e96e08440bee336f7d7ca8c7d36bc4c5a16406253813c0265562e52da29da67e0ff72ec5eb064827dac466cb68b19cb69f11343333e72d6191c7832a714f62f0bc8dbb5c3618735bc0ab7eb7c91a08e1c2311c1ccb76fdf494e61b452a2c1d4633cfd4f7491e3cd536892340201a55083011a8d637102fd2c6585184463a51e14d4df1609ef856752a620b58157bd9c78e0cb7a5ff44de1721fa782c41da16fd8c822f124ccc9cfeeb2567503049f807fb796e2b241f932c015dd9cfc902c0dd4ab1a6d3b5a3a19c660a0bab1a98860905b8ec64ca2f819fc9e755e807dd14578f9423d7090bf5655f164317b5426a86bcfbd921b06729fa2921746020b833ab66057313b17cede5659250f1996b536f5300e825d8aee1281496c83a984fb89d0bf2a1bd8b92f72a5c0ea7503b02acf22de0d2f5bdde04b147f3c47411fecc29e5e692010bca324455398fa4441051127a7bc7185ee9c43c475529a811353e15b5d196ecd495b27ed5e440e17cbb38637671a8415868869a0fc37d40d44dffa4867d82f0dd945cd0ab1de5b1f364ad94b806c419ba6c8bd2e7d8a1ff23153e8bfca0359a8c15561a8c6027ee0ff5c5782617f5f2eb3a30758e7b6ab41bc493cba6d526dadb4677ddb9e070032f00f6140345a10311e9a1942e49403c1d56cb99937f7aab99ec8faa8fa2504f25a8e80d64400013f88d1b4418b5ddfb499d46df4b3b2147a0484acd5527fb57cd80fc7ab879ef5a17b7c3b0b886f76c5477574bb612542c542f2a99435b17280bd68a444f40bd2c41d23ed1bd689d193d9b3cd7fceea4bdd31f90d29a0b5c5309eca226dbc913da27d2a3dec3056148669262032baf78cfa1d1cf226649842ee88b9b67771b522aed3a49d582c75c8818c0d0f7b29a2421282aa3580829411893195d35b90cac45c00089725942004129f3489b0e62644920f1c371f01222d26e1b7f0e065023ec2b4e0fac2f1759a10209014fcdec95add84ad22b988a083ff3a4111bca06e308bfec39383e597c7715c67a1b31467d6bbbeaeee8db853c44d48d8ce94816af90d3af7854e59d70976a207d06882eeb41648f439c9c016df9d10615bf7d4c26efb4b791d59a83a11cfec6d8afd15914794fd488323a6839b0a0ac81e0aa44d66699023b72e03479179d6d92ed695f178c142c01b8e8f324528590a1403474309876f6cc02adead06fe462e15e4a8e46f43fca34fcfdd83664faf25e10b5f1c8616fe9800ec221f404ac50a9bb060620d35b44f5ea959c6706f9e898c82dd11c4542b4822c24931d4076ab9ca34c8d586c2a8d9a229e7773ddcd721a01f98ea08089fa6416f06861cb247048715483743616072c433d210123c472660bb3d171b17472f7732f9023ebd2a780266bd4d74c413af1c1f7084e86ed2ec418e244d9496b37608fe2a1b5d23ffe9fca182ecf877aa724edd01d044e8603b536400cc239e0866c2afd2a2d3c3a7cb551b1c27b28ec1ed198905fed61933759d7f00976144e05008fa896982701df5ca25279ffe2daa375c347687547ad444d0ec0dcee88845446aa2dc58bd14080b4969af454e1a17fb13bef502e2b97c6e01d1839ff6d0ba9820034aa754ad41b2d3d42da3bba08608a74ef19dd27809b270e2640ba20366d33c848b36034bceef21f7f0d445121e2f4bcec107b5df09b614db458994b7236a2db33d3a89058d4bca159c60445489c5107c05c4e0a06eb6123176b31065fb46ee3b39d7fc2eb93b6eadaf360d87372ddf40a3abee767d180840e27a1b4b24d4e45cc96a0665958517a412b50d05bea9f7a8985dede8efa683f62f922730143d6c19d7ab0b68438e4e321a14739630fb47d7d18f08f64acccdb46ad4a81cb3c5cded57359f13f041c1e0210341324152332e781ea8a0e86c02afa8806abe3c4fab09a3c22a2fbf33b52e2297240dd0ae4e3440a025464b0b6b90fbf1cd9e21ed1c17ccc53fc01c68eee841c0fd62085f7a34beac5c81343b9e1ea0e1fbee57ab91d9ed4a741627f890f16b6c3f9de84e082d312419b9f7f9819a09e270f0688ea1d0e86e871031f406444a77390d42469bdedbd3251d9083b69fb42d0d6664b27f8c27619a0d0102f063db8dae150c5f5f43bc85b36310a4bc4557dcd5ccd86dc515ef69f4390969b69f380a25e9f3dba2f711182b206a2c7a545c9c832b19ff1a119cab204f93ceec8dd4ca06eb2cca9095e7c48be624e3485a550141955833eac49ee0167d6490989080caf76d660612a4d462015c32c0e8a21ddd6cb871d19f289fa06b87a781874bfd3c1079143aeebd2c525210fb20b3c356926854c1ae2e96a9332de718be636af9f690b6545fd609ebbe4901eec5233a303b4674a0a70742f93ed2a1d1f343e59e443eed3c30170918d22d09339599b1b1a5cf1a33449ab401e25002322fe34b60e2c1648d0da1d346effdc12d32c9746d0c170d368610bf6235322e910438e3fac2ae19b47555ba8e679554c1f91ca85e1316b184a9782e165827611188be1c9683752544de313fc417b0eb64ce16b22162376a8b6482dd4256f7c5debae440ed5ee2f7fdb6410d4e0d05392c88e8881af855a80342f46cb9e5a8d79989b596391ef16a467b9b4b4e28cd3c6334a881fa254832402a8b0a46935aad09ae053334dafa15f5e1aa48bcb2f678b7f2ae1f8f70a00dfa8e6cf625ea20e99047417daa5f7dd4570736e57e18668d5d9feefbbb5d7ed61ca391daa81a399ee4283982ce03e10d94d80b30a70decddedfeb97524dbc5decaf78032ccf27ccf4a6b0746f2ae6242f39527ec4e56e9bc8880e984edb2da1260fef2dd35f8fa881517750204c0b80235c4ba879eb2c0fbaa79f33ef2421c30c6bf08c6a19a9b3dd88ddace3a0a5f2d59551d1b521ba37cc78dbe05542e1830dec338019f635a1872d12530f1bfbc5838f6823aec8f26948d724ebdac0a45fccdc353bbe9c2fafe4672d199daa0fae89cbffb74388e1adf391d8405cfa26b7f8ab5efd15e419a9f8b7bef1180f6cffa7bd9a1dbeb7b6577609e7ffe7d5fc543e3fb9abb0ee37a76dac8ce34d483583e080286357705d98f575d514a27aebd6a0640cf91de4dff71699a741aec6561fbe82e6ff14570631297bf8f4ccb4dacde0fff0d4aabfa3e41ca059c9bb7ee8177b73dbdc434080dbbc19e5221521ad042cdfb34764757b29f97b3f7771c082ec4fbbcb53a9bd3c901f8f6fb9e4bc8ad9ab8348f71b5c93500e7d357bd113d4dda7f7b4cb25d5fceabf0b62cf5c8bc237fbcedadfbdb5fb5ece8ceccadc3e15bff1c0da7b3e7b340bc767517cffb9c4f68870d12475978a2724795b97db9e6ff33f9be76b90bc0b86f1d6ad245941c88663299c7c1bac1769ba1c0b6ac33f5ccb0d5f9d7f13f48d7fdbf857b002f7e85cf30eadfeadb01665c0a7697a19986be5048edb76c7f46cc1d749c7fd2a7edb5c3df7a34e3fdd890a132b627621032cfbe4dfe4e8bd4d062ff3fe143842bff7ffa0e4dd83c8e9c8bfef3eba76724a6a70e1f222d33aecee7e2b9ca507843bd54a4326990cf93471783f2e0d44969face45ec68a0c076de44aa97b33f50e1490fdd27b533883757261fdca4bc9f6ff0fdbcec7a6d21f613688eee9234766c38c5479c6d1439f1c122b787731b7eea7cf64b993ed0175551647f63b9f9ecfca0dde096f13b02178cab4a035cb93580c736188e9c5d9a3e4f21e158cb2fc6a6f0bb0f523b0724a2e19901575f18eea78e0fcd087925c5ea583c89ce31074a3fb32ce6458d213ef779c22472b35d1b3e3fe9c4d2d317a263a11a1d28bc8631f5398c523dbe5ab6b3a55539f6d73b0ea1faa0119eb96fe3b3d4ed7c3ea6da9b56d86c86f799e586edc30d57984bf016928eac23b4e23de49ef9d24db7df3c7879f2b5d3a88fe38363f1d4026bba12dd2880b37fb190c0a3410763655968f910c6c60b46d81f74d8ceea400b0f9a7c4157477eb701dcfe40374a50ec86fc60a950bfb35977bc41fc5cbdcd6be6c8b1099d13cdcd8829fb80ecbe328994cec98bc4ae7f6cf58c35588a31f0517516c2be197082f7e37c2326ef0f4cdbb4667af3c7b5237bf64091a1cd0377e416baa30c8cd4e4fae9628f5d6902e35ef4a5c5305374648c2820eaf759f8e7f60772172763fab8eda9e37ea2b095febd95c6810f271be72b37f0a9bd3492fa9861e4d17f8c29350860e68fcc2c13c24526b023cf6d168621baaa95e06822234b66ac734f559beb509e5260c22750476f64f868f91f41dedba6c2d75902458374a547fdef0f48e7c7f317deea94b126699749c87d0a0fd3c6ec5cf7a6c13b9dea0e6f0cec8f666aee748646ba0e8930787b052ad74554f6338bc627390b4fe88773938cf686fea4d3259ddb6d5922b9384458a1b8cdfa87cc53a5a88af3656582c999ff15a024677687bfb9e8151c5230766ef4b822c4f121331b6374c9bb397411e610296eeccfc651676da4e976bf7078c7841853f7f9740f3a2aa3931ff4d184ef5edc1a532439d7e1257bb2021bffa3a62de5b81e700d1f95fc04eb1f21fc176cf13dc5318174ec23265f918aafa502fd1e814fcd35fe2d767bbfed3b567dd2783fd0041dbf15d4f2a398eb5046ad3767df6b591ed27acfb4929f5bc1de5b7dc17882b343018238ee22f3573c015d90fac1404ce9bb079d582804bd38f443ad3d9ffa53c52f863dbef07f6e6acbd047b3c36db31a11984aa84d00be458fd407b2b03acbb52c15c33395b807f6a582c940377e38e2439bac6f638d7e4524e7f0279ffe17b47df30469ec5a6738a03b9977dbd27e9111303783c607f8fe43cb1e4c1b60987c966029863f9bd3361906c5368d090e3935ffa4b4f4e042386683ff3a6a90c0db327032911672a2dd643810698e66a94852b05947fb6f12a6db2c95cb4baaf923457afbc32f9206f7c6a016a71e283f3f99f313e50793eac7f1dcdee5d8074a5f7cee9f09250b0ee94ea9c898330fe36e7d3a44890aa161126c9827f5d799b68694965bf4accc0145c8bb3015f6b3457d1dcb3783e2bf4f09bee0597f04f35addd2f69e07db05c2ebf294cad70b1e31945f30101de7ae629b50bf511e5054678f7c8826ed481bc7401fbf48a2c9c8f1d9f5e9c576e83d1c1bf2f27367069c3060ffd2c0b32fdd79e1561dcc313d553fbf47f902b8576856688d958aaf5e635b1750119f5e205cc53d5e691aa7a10b0ea456c9d6b1b42be50bedec1dba03b10d6bb5674176dfbb6c6c28efe239e0c922f09096db990a50cea2f426a9032a313dbbc8944b586b13df45389aca6666d2356e17d0a2edd9866155f9e924ad073d1eff279ef2082e8b281d62f8a62df1124d754dabd7b289752d59d2664e6ec6bfcf05b969b00950d1a372e4e7039f8fd568e9d5d3db71817cf246a4c717d1a8afffe66a0a0a1b0c4c09c8abc33181c2031b19febb3566a05a4036ccf522560a3f5fa911697fe30e3ec6f8be8e78a123d80ed0b4bcd7e6bb22f848e2340b22454484963a800bc62aab2b0d2564ec93e322032b42df60e53dc51000b55635e614bd9542b544df954fe4be2e3dc55ab36be5a374eb5bb7e415d754631be78109c021e3ded1371f4cf3be5c6131ae8f2d96ff88f2d79b96bfbac7098c73197eddcbe028ccfcc1a7d84dc65ff2af05934b2dcfba8ba62fa0c97d006fba054c7f4f09362e62ff6bcea3fcabce770e8aed694fe4341d70110bca9cf4c9add947c673ba913167ca725724c06958673d271a74bc65d96efd6cefa3b06b5fafd3e7041d3397e6bdc49f8171f75b25fe58dbeae9c86f4a3ff63cea7d463274087f459c17347a85b57bc795986c19f796ff20fcf40641d57407fa310313e8b303e02d70be51f227b0762f2a7ea295ca1186a3fafe76645b8f28d45bbcbae6fb11cf087f288b8bf60e3a103e55d433a9ba6dad39452c1c9071a5b6ebcebb0b64aab7578bf6da496b2956346117b72db86de98714823e1d606b87c18c631864a84040ddb03a2b7b9ffb54523712083ca387cf7dc8f940a67beb24ff1da5cb171cc71fdc49660b630c08f3f04633f058592c685d43ed6fe9026f5eab907d01cd0ae86fed99b8f88c31b7fcd39645739d0dd1d2579226fe8c6bea5c4bd0d269190ed55e4ceb2b4ff798ca32c40d0741d2f0d31b734057e6c0a8089869b326878b49b420924c1c0dcdb775c7046143cc66417753f278489ce944d47c33986c45bc7b5a9210f092508959e0bbea26818a765522a18b78c304c94384b8ceea4f4d71d2aced094b3764456e49e8e616b33bc4610d447b6e438709c483509d55cb7ac2cc4c714076a2de7efa9113f3c67e0f9cb857673c5822deddae921002a73772f847c02bc90d54b45b7a0e6c15ecee02ae2f25bf22f64e762389d7ff3511a2c2f236880958b1c240235efd524144c01a368ab878541edc016c8f0fd2785bcdf09e2a64a483617c01e3b9c1bee24527c0f022464cfab89c604f8f6e84bb9458db5e8364548fa62d66fb6957eab1068dd128d452424ad966c212103a16de683985635a55f20a8a86f66d873bc742fa713a50e780e7fd7b051f44cc6e3a62b20c400a0181d160d680621fb00508faf910a25bc53ee595588a31896299572b8c183e5718a263bfaf0ea9d47fc4c95803c5781fa009d160dfb63aeb1848319562cd87dbbe9c7555e097480d505d725c86f946e3cbc62a89f7915de4285487e814f18bfb250e173a4ad6e24a1746a7df29b1631f7141d100ca2cc2e0458bc03040f02ae10da5d2bc9abc27d0631051fab1b01c8dadb8ed190a0e93d43f80f6203c8f81b971dd7bd2a280e8865391ce45ca8886420cc6668663f7ea9ab948861a2e32b21ea391a9f88edf9257edee5bdb00003b6f71c8d9514f91356b529548b58efa115f054d156c75e74857d0fa7ca5d083674e65006a63422975590a530927c8f783f2202a6a1949a6d4da02e21484374bbe473d72e11fa46e7329ad1ffd6702b62d988555f525cb8a6a457bc310d4db61226a97b95e3f2bf0a87f5e91077057a6686154f2af61a66ffc1d474502caa0aa363e1914f021288b86f2e9b9390be303ac0ef5ced2b7e1d5b13a0da84efa0b1e4812b1ff3dbf03cb3cfced4c59907dfccf2ccb234fd91d1367c37745d5fceb64055c92666fd334b0383722d68152a1da413e9a4b7607eeee28166d1f4e7b217af25bf939a83fb61c23ab44371daa1cd852613ff19155e93ec754cbd075d7c9258ca89c4c1e199610b2b2a00fca7157b09a35c8c7ee522c6a423f2049334d71d6b866aaf8379b4656cef4bc6f8973c6f2240a4e08852162d0a63654eec34d1700e1f0d9d22e6e60ad8024faf0937c97ff7e3bbc7986981def56d523a4545b209ef479f16f6ee59c9a387cc92d18aab3bebb8cbc77a6bd15c046b7dd4e421f0bafc7138ccb5e4cdc39cbb886745134a483151b6ec88bf64fa8a3df530f8e116e3f0cf251ff4287c4a66bcc4ec04f390ff1683f58910e3a25602e49b22f96bcd9d8ff79627a12d02e1b5c6c704e5f5121de3f00e14c9bf385044e9cf65f5d1623f09358572f8b4988db544fa47a2255e8764b03d00085d41b1f2402813367fc56cbd3d3ba64c5f8adfe092d949034f0804a0860def753ad5109736dbb87ad4bd1694a5a9f4b35316b938b67ec8c375b1303fa4569d5aa63e7178cb211fb791d09db8746daf93066eeb6b2f43130721c0fb424221742959ee13fe88a25a9ec9936aff77fe705028f90af5ee05b601890fafbba0a60d2d885ec465974d6ee47d258c1c1ea0a3f2546c8e500a20f0dba8daac7a25038af9780a6714cd166cdf7616507fd4f50f558b8632db232ea5808e9566f0ba0bba0aa12496db09a5966863ef743492a7fb2d8c70514bbe7c71a96cd1e46be20ac13f3494c6dd7d90c5432b46e36dea1d38150d560b894707a7619ceaf0ad73cbd610878e908d169429cf234f5d81f036df2f5ed6fb8f159996c92a4987afa5343d76c708f35700c6607577997e8d14223e0c36f7b3259199cd11e8b170b7bacae4047ae82933374bc7e658f51e67c05c30038eca7ee4f50692067511c9b9d14a6da1cb6c5af13d04f18c957997e54d196b28fba4ef980a6e44f22190e1fe82871d30c8ff5b51fdc6244ef37358c9be775538efe1463cc2d69c2ccaf91693614406f06dea410bd784e04ebaf34d1a27e2923da032e1c51916156032a0b0d15da14e6e0e65773db574397cc8c9c444fbff676c4e71fd183b9c9344a07071b7701c79b69b9a1ab51887f32633b8ce8fc54009dd29c1cb52cd895c294086d70527a8beabc35f5a473a7b74093a1f8e36dff29a90ba1ea776b130fa7dcdfe223a768d28168762738564431edb7f38850b242301688ddcb1261b8d6e6a76de17259e612d1ed1701ec80abce9e75278bdc374341472efe72526e377c830a3bba5df68ef1fd4fa617fdf72237a9a1a99ac3f3b159f4ef5ac3f95bdf0c2c110c3c2136153bbaa236df1152230309f9f167f0d4406324632359fe416a80332a4f9bda05978dcd075d1a1adcbf42ea47b2db7382517b73594531a037678278460bb0a7ba1b9239e9014e60bf6bf07d2461f51b3a3e48fadfca970e383fa176964ead269dfd3bf4dddc3605e4122e8ee57b5f523ac88f701f83360246a8cad2c50787275bf57916414ae8847f4ff9a854130bd2477b56a592b22b5b5a7e48d2bbbe2ff54cde175fdada328bcf3f50ccc55b8f230cef1bd4c06adff6fddaee569b8d4cd59e4c37d5144b9f6447d32c8cb5a169b5eb15a53f4a3afbc9b31c3ce5368a8eefb6f754f03cc0c0b4b8ae9d76f9e4cd016416ecc07b1c4c3fcde6fd87e993d85b2de1f922a4d31b6ded38dfbf4753c87ab7748e6bf7b77b6e34bd3eec3bc87c65ff10e064c9c38039289c2a412a5fee76147e3460d7f34a71ff7f7133d3fe1474632a663f006f1de5d5d64b56bc8f41851d99c200b2ad860d83c9c6ef6f727770a4b0e4e30fd5af46e512500f494c1eac181942339586ff082c1e5278befffb36e270d4f2564a7d0f1fe1469edfcfefef7faa77c7f677d3d35491afc61c8dc5a9b9f32d1d916932304d4e8f573e1cb0740552e755e4607e8416e0da4c2a8c5ba9d79eb5910c85dbb5c98bb6e7487436ba4fc701ec319c9dbd07b656710e7738c66c4bcf39259e15682824b77b0d7161d3bb9ba930bdb42109f123e8caf1a772a8484ca2850ee62c958436078518bf8eb661b6e36263488d08552222b63531cb24cea4b25bad85af0438a7c52a3b94488384362f71cd7021d07461c7d38dd18a4b811570229c9b67a884a78b86de06ec52f8ed768465928393883ca810132291e12eb0616c7950eb1036a1dc880c1c1f40f35a99b831df051047a89607b61db20cbd2b9e08592cb1bb69a51c7536e0b451c3f4e92f1c8bb38308fc02aba08e5a929e0e0de320ff80b979ee26623e53c097d39e3585a820aa2be700e206c515c221443c2d4bbf819cf9f50d10373785d840b2577ab4e18436b4dc837b5fc43b0cf7478e98809bd103ac58907533df84986188b3ce83b36d47335d0b9e6f7fe0f51339b58864506955669bcec1385656a23934ed02ceec44ac0c3440b0a490033c0c3c0c3c0c3c0c3c8cbee59c09a1b12421b631f0fa7dec943b3725f1afd4e89f71c619675cf76d6bcdda66ff1741b40c880cb80c1f902845da4fd2985dc36d729c8186198f50a522d32c76e6c718cfd1840f479cd22a4a7613f3d18842c66fdf941299ea1c6834232e17c98b6626c693df45fc5b299d88e4c634d587224a9ebd9a62f2f632a144dc1dfa754afb84eea80f3e10d14d7dab58a44925859f021f8728c6a0eb9b261a824e51db5a53acf7ef85c0a397bffcc95b9d4e085185c6897775927efb8328af7432cbd49fa4f282283546513de9d2ea9c7c04223179976ff69e12cd02083be99b6dd956e98b1f7f30ffa24c8ce9e9048f74e8c8c4871f4a6bf1c624df6cadd2471f4aeeb1bea3cc5896c487d2fe68124aea7073d61e12224374dcbc96276b3a4646fed1c83183c48c1924e1430fc47456ef5caa49c6ce839b2d4c8d9e6dddc478f8c63483091acf242e776873de90283173a65d632ce2c30e6a4f995cdf53f2e3a983ee5f9b2d3a6a4593a383a1da4d63ca94f6fde770fe64f255f2eed14de540e5d9949c926852591ceadcf5da9ce40bf1df071cae74b2859ce5ca69b18f375839bdb78e87ec6953c7c8080c3edc70878a139ed5723a63d01e8333cce88f36587be331e23e265f51c70e167cb0e109f79c4d74f518d3e0780f1e271883032bf858c3e12fbffaba995c795483f199729256bdad2e9406c6ac93fc1e2a4487ea030dee670a929666d4a2e5e30c56a6491bbf55be67fb3083c1bf72088990d78acbd0a78c6da285dc44643063a5bdcb1bcc92a88d213909bd39d6c2a4578e18923b6c4a9feb96fc4b3ec2e047d9ce277ade46a63ec050b9ff7d10898dfdd81770573341ce84f43b692f30356fb9b4e39d7ca883c7d1811f5d384e35535dabfc46cb18c40717384162e65c726fdf640b9b66774a6278e8ae600b3eb4b0b826b53c8fe149eb097c64411d2de12d6e280f61d52087d30716ce259924aaa470f96d0d3eae50b8c5d07b7276eb895620325e89255be9df5b1f5528bf0969655651971c3cccf8a082276c8c2bb98c96423f855b3c55c89afb687d42840f29fcf171f75ee3db27f9230a7f4849cbe6a86364a40c1f50a8362fa7b92593736ac9c0c0c7134a190698a29f325df860826739f0e184c5a256326f584d997f34e1f09f0491ef9ef88ecff86002bb1b57c4935c1f3e9650570caa59e5343e94a0bd49f2e5c5064933f113dce0230905933f31f9af2a85471a1f48f8e4bc6929d2a4a4b1ea1819f93842e31f7fa1754c939c634712830f23d0995eb297e5cb261d858f22a8f921ab3ec7cbfc315a035ef82082116f79df53da74ca7f0ce1d7c8245cb248bbb964808c0f216c49dad3a459cd53ea60f0f135d6cf3ed79bb48e919123d40086b95edcb42b499e9289d320a9f18b32ffe793f3b53a1173d4f0457992246f4ad26387e3c077d4e8458296be5b720feff3820cfd793b475f9d353836e091a3c7195e831abb38e7261374af2f7a8574f18596c94b97b176c45c1c65359fdd78dedf202eb45c39b998d41be2f52d3ca9e23a891efcc2c21ab638a610172cdea74f93a9518bc2c931d8a72793c9931677869b324f69eb70760f8f811b6acce2bfd83b693379f474220bcc72c6978ebe4d82678c1090610219d4888539ea1aded7ea1819d95103169fed7c3851d79363e815fdf89ddfe5ae0308355cb1c5248b27a92fc38c1aad583d965d57749578d7c34930821aace0bb2eff939c4fd0e02aa83419ade285b3949b2af624e5cb25e58d631fae910ace5e4ebc99cee6d144c7c8081a89236aa0e2241b43b482c646a63a46464646aec6299e100f6fd2c9d223232ea8618a2b5934714bac4fd42845d93ce77af5b45e265c8314796caeaf3b61ab3d576314573e317df96aee58248adcc725b535269dddd40805666b39535cb11b155003148c5fac7c09cd71e9b3238dc477f058408d4ff093c9d39fae687686c76064e40667c7016a782211d924112da2b6ab0eabd189dbab4b774db45bed1b1235389194ac73ee9e4d3d086a6cc28b55f3d7b92e97ae3a165143134a9d7839db6ddeb93a13e979afb4aa8f09dc7b43589690e7625fa270f799c2c2323cb544f267addcd8a712a50dcba51a6e4db43c259c0cb623b59aa44fff2434d9a4f50a757171aa24cc54929d766aafdf44621933cff9d25cf7e74082d638d7a162f8593b1f51850ebfec1caf27c58ee8d7e4d00c5235e29c298b7cbcac0b5d61c4a196b28fa6bf083485949cb3576c2f89227e9333e475461351ccf593c592f96b7688c06eb5c3b5cb760ed521f88d9e840f161af3a986b0dfe4eb8f4d9ba1268530d789de75d96f33fe8468363cdcfe489e20d5208c1bb7ee3c26a598c405616b8c56f39854edd281a04b126a74bef5c4ee0171df66d1ee3335d94cfeb0ea49266f896e97ba7e203c8949d450d20773df66b75a12d13ff9e05cb69c4ade50916f0ff5fb95a8878f315d5c0f4df978a732b9fe7c92873247449897aeef6778206ebdfe83caa60df51d9292acd23976d92129f744d659dc1cb2ad03d971327762088b4ed1819ceb8dbb79f3f5ca39fc6b669b3b4cfcb45139245bd67cb11dec7cc4389c92fbd6cfe5eea01a1cb47e8fdf4f1fee3dd8851a6fd093a049dded33c913d57083714d88ea88ad4b49b0461b1245ab52c653b8ec2635d870ab47da6e7c7ab57f0dadc9fb1bda31789a59c7c8480e347aa881d84f9a4b9e69799d4b3086091040c6d5484361eab35f9f096261a1c1df8bade7a7e91819e1d1811a67a84bfcaf160d5a1a4533105d29d6a62a21b39ad428432945a5aba41e4eb4b88e9191324c609786166a9021b3dc8e69fb84b3df8c81eb8b0e75d95dde1143f2549e4af9944d2dc30c1e6884606484c7186a9506097224a24618acdce9e39f984a3ce11c397c06a70635c05028f7d4fb69f3854e73c88e16377d3ff7825f5226a65bdd85a35bc4dacfe35a2e5ce82c89f775797c5635b660d2943b69b7a9a105c7d36c8941ccd29d230735b2506d9257be2b6e6c5458482b863bb1eb53e30a4962cf5e6fa5c9eabc15dcbc39e69aec1bdee21a55d0848db67a2d9379770d2a9c3b2e3be342674d626a4c810dffb94ad82b9ffa9850430a7dc4d5b6c6f4d74142418d28187b7f49124d2f49c9a9010534e592f7b4d1c5eaa2811a4f48fcda98d2b4cf9fc9e13478b406c8e01a4ed8438931adc6249694a28e91913478e4a8d1843683abac79fcfebb75d8a55183097b10f913b532a8c99b251cdad6b3a5942c5ee427d450422564fc14bd43685b4a8d246ca3d1a4dbade4737d461a9fa3cf408373ec60470f241c4d638a7f6e527ac9358ea089947097244d165cd53132a2811a46309976ae70d99f7a3b1d35c8d1c363d0a346114a729484b97bc917325fa84104ac048fa1da04eb94261d23233440038d10d418c2319f61e765f55d76ad218444b4624c56789088824197e96db8bf77f806187925ed4b3e1a3e7bfa85a13bf99f655a1d265fb4269a53696dea4a791d2323393610462f90dfb32d4936ea76789891e8c0c3e045169dc4f158baa13646c706c2d845e963c44b8c4bd2a558176d660cf18fbf1b7186918be563b6d349a799f37091342745eedab7692a7b10c62dcef425c7f468514e63b6f8af4df8a924d5631106c2a8c5a6d2a1f3e6ba581e758c8cd8e0e480c7c848192520834718b440742a537a4db9ba73748c8ce4681aa0a1834732d2813066f166a5c6126a4e43846784218befaf35f9defeeda74930b282306271965b6bec7ac76a61a189fa23257be718f2f608e315ff56c6790b353d96240561b8c2d5cd965f63b6c74f85d18a93cde6caa639e6d15c8e2a84c18aa3a6deb0a9cfa84ef310c62a6ccf35be235ec1a4948e1e61a8a2ec9a73250be3ea2acb208c5460796b1f2da3c64d8e3050916019a357554ac689eac83132728a43eb86e7fe9099f2c8514618c230456fa152ec9cb9304a7175ac94d26c933ae5046190828e9d2fc75e388a4d1ceff27c9bbfbe87218a4ace59c3d6e3bfc63f31082314aca99a5569da745441d148a74d52321b132d3f915ee6dccc1c2fcea99e70ef3f793e39b6aefe9db02461b4a3d55c85be230d1b98200c4eb87be2bee9a3a41c7513c40593433b62b324571396306a592e675567ca84a2312b98c0fb2c986831853e494a12c2b8c425bbecaf6dbbc7d4e93e615882ebafb6b0d6e229c99d4182302a41ba6a447dfcfb658c12c5f6ec6ef951243e268c4970e97399241d49c224e5df899b89956922d127d5b87df61e432c4834f373fabf375ad17984565bd6413d8973e28845beb5f4a55d653c1c4623dc2c223f1a3cedb2410e1bd4800c1bd480022008010d4e1a37b0000094100623bcd678957a1e964f6a1198251399df28719aa388a6ab34f449b2d53b5a1046224e1d1e93f4f3d0401888b0ac4bc8ffcc9649cc738c8c9411c6218c927955332dc758196118a2b0f1f1235652f2cad0441885b063a590afb1a4247b8e10990935ef214af35d3981300651f9acfa7e0efba37218823053569e55ca66548128eeccc9a94a2b9b788028e76e584997b33d14c61f1232da3b850c49bd981f8ead93354673ee94cb3e2435ee393afa7da5980f25319fa70bdee9e49cb387d4275145927c93ea776ed24629156d1e5ff7930c2a8cd973ce4f99279dfa29922a77cab13e6c8a42de658b9b675fd12b4572d6c94972534d492da430defec96a29c99d64771476d6cc96d27b554e14c68ec9352b44332d188ac35aca6f8b1e2878f50ab2f9ad73492625c8018024dcf8c4695a29c560297cda29cb1367b418bd473ba94977279e8d1595e24f4976cc8972e574bec65d696637f187c9dce924ac09e642492659319aa9b4c28d4c90f9b74b1e6bd1f4111395609264b55145e3e47f70e312670b6afaff973ec959b2c449f62e59d8f749fd55a270937f3d1b32b6c694389ca79c34337ea4f7499c92580e2d99ef464b24414927cc77daec6c1b0de1462432936faa4bab52850f242c9b9593048b3f022b49d56eeccdb38f8e28e5eec26367bfd2930766d4c08c1e3640e38c347298e046234a8f2b297db8e8248a44b8c188d443e5ade6831b8bd8a7bedaa4df98f35676dc50c4aeb693ee7272c6b1d3686f11dc484492acb897a8bd25cf8508354a4cea727662f00dd121d429f50ae22ee5e08621cecab19cd28eaa5edf28847742c6c814b1d2f57564e00621288b49538939cf6acf1ddc18c41a34532edfb57c574138fa35b7bdb3e67ddd088465312b879bebeb8902c2df13a2e3ce97d82bfdc1d8a9c4ec245ed1d6f961cd9fb299976c92512d1cf88d3e24690efd3e39c7cd6f3ef46e82a5b109b3fc6f0f4961c75d3f74d74fb00170841b7a48d366eb7c77ad73571ed66c82ffad877899a88e17dcc0c3268e7cfac809bf277f07f33cec74d234b3032e55dd67f956d5e1de38b3102f1bca36223a2474aa7061bc474c4a890937e650b68ad7fea9eb9d52a6e3861c8c4b9b5dc9e4be6ab16ec4e19036be9562f2548a9ac1e1ccab5c567a99318a556f602a6c45c9c54cbaa9c10d37d49e7a5274ccc9183b6d28e878f290992ab4ea6c3066f5efaf4effb2d51a8e7bb2e8aedb6fffa786728ad6f68aeb8d341c2bcc57c9972bf6676fa0e189bdca92424f8e638fa0021920030a37ce603439ed926852c6f2d0056e9841ddefe9cd9512f25919bc34b27e9daee9525c0937c850eef754d27f90cd9d640c5bc9a9ce5b44c20d315025d479a5df2a6963c2706d1a4b8d5df3adff196e80c118d77d49ce276eaae4200741b8f1857ab273454ba9b9fde385fa2ad4544ad16233460537baf0579ad8f47732911d2e54ab512e4bcce7baf88d2de8e1953c3c7ff814bba10543dc3e89b5f9e173b80237b26094c974825d88853593859cd3cd4ba9bd7105fb362cba74ce259c7ec30aa5b14a954d4f6bf9bb51054b3beadb23935f0e51818daf0f13e22a59845338a4773a21d37699944a216942524683e498fc45c1bf5461e2ad673231b101086e40e11c95fdf2c247fc7d4fa0c2d5f95e16d9184f8f333ce91b4e60a2f26c6d87b9c84913d4b6b53079b613dc60c225878e8edcf88c7fdf58829f2ee6cbed7c43094a7fdcf0975c53ba510b3792f0a85b18ff24db269a32dc4082264859e674d29e9ca91b47684bd4cd29c8b6e3861168bd0ab1ecd27cb247811b4530dcb47acc98488bf20d2254512f9ab1b7444e1b42b5f626cd855b31b5dc1002f29562b868c6c9c960fcd13a53f29c24933281f19bd8da35b2dad2fd2fca3126e12429c517599818afa199ae35ed051a93fbc1b22f43235e2449e104c98cbe9f2add4525686944494227b75617c444474d269a5424ce05e52b31e2dbad5b92b868cbc4dcb1d5392accb750437ac6b5b98d5a922d2e7f693f597338c9e25a184bf6fa7cff29ee49d222d184e98c1e17c366791606ddcdefd66591fdc70a351e3ca6cc62816ccea4f1314c2be7b0e0ae374a3a5bbd8df78a63ad24f9b5942ef671c5c1476fd4d5627bebad489eda309af7342d75ac28934b89993dc9212cbf8ab5c433f9e7d6bc5b5245d5f7d91bb79ec26c52f19a144d30b9f752dc1c157674cfe7b16c4346778a7fda6dbeccf2a8899ac2a4c173cab937c3a5aa145c4c52f1b692a460dcf34793cf2ad16c1478aec6dcc91534672c8aa4b0b8e1caa42d762e14c99eb6c284080a7347dd0e126fd6a37d82ab92d42e68922cd49ef8f24da3e4513b61d75e0aeab5769289dae08461babd7d356ecc6aec6063134f659809d2394d94b2aaa9db5ec9a161263c318ea7941f0bb90d264a729779d24a0eb53d196c5cc228ab4993b8bfa718b7042f2a9ded84a9c99c34848d4a2461629c5bbab210bf1a6c50a21c77dcfb3b75e59342838d492449313b1ead61ea391e6c48c210331ac64cbe0cf6b2c14624debed815ae773af3e7071b90f0b267b8e6f0d53d151b8f48e42ee6fcf6549394136c38e2b4abe02749993d356b051b8d7833b3c76e096f9f2e46241a7b71d313fb1f03071b8bf8b65367ad98844e525811ffae4be9b56e2311746fce16662c65f81111877ddcc87c261b63c9219835cd49cc9fdb64770db1a6edc9e9992533d242f452994e0cde9e2bc911029bcaf3fd6b1ac1c620be581ab44369de9c8a2032cdb89b6d35ae8502718a4de9fecc4d8c5901a20f962d270f519673fa07ce3d6d9de50f132b4a051b7ea0dd73ccb3da6cf4818f7eb9cc1e2a3ac6f9d086a9872b31362bea44b0b1072dead8ea96667fcf36f460dc66132ffa66d6c6d8c80317ab6727c9ae0d3c98b563ff47d9b6d29c098c2181ba818d3bb4a99386ae6d13300b1b7628dedcc4f554feae6ca30ec87c654c72a8f0ac3b1d0a997f7233f56e5a6c0e9af6c8df45e7a0d997c39972acbbca3d9cb0a661230e49f1538adbe8b6b16370285ef2786e1a5519171b6f302699d81257377f5536dca0f894e96e76e712321b6de02d6ce754624a1e2c436cc05ab37d5da85072b13534aa63a95d73c7010dd0b0a1864b9c4da5ee1d63f21db09186ca3f93ac6ec71ceb731b68d0e4b494b7eb0db9250fb67106f3c484ddcd31666d67c30c5549413b8975baa8ff0c6c94418b30414fde98d8b72b60830c5b475fa7184635b837864b4a5f93cff33a161b62f892a8a487efcd92fa30386961de24d1a4f4a9b101864f5343d44e4e06066c7c61d39b35b92b9b5035e948840d2f78f17230c9fac44617ac3c26745e9b8db247c006179c54abac13abfce46a0b5809927ed249f964756d6801932debea55654a276f230bbd558afb799d7e483360030bbec6be548f65e1ecf2011b57a82a6e9caaf750e2ac36ac60def8dae7a93dc8d465f000801a6c54c1f2c991ca5f49ace4daa0c23b9a4a9e98beb78c8d29781f6be6622d87fd5bc7c848056c48810c269577e5da732689829752d79649c5983241e150f2f8ea4877570a6d3c0137295be88ca5b2fa3ae15ec9934acc5f97d2afc04613d6d9923eeda97b786983098865a5894ea2e5a552878d25e44998b4a429349b2cd950c29ec1262ac5f9ba6ca5e1811ddee306369280e74894f076fa677f8e10d840c2397fd05c93dfa3dc6be308aca6b4a55cf1f57ae91819e91d20d040066c18e1fd689f29530e8d1e39dc2f8046095010011b45b875639cb55849f6cd93c1c3791c33682001bb42d82042624c5d29397b6c0ca14f49afb4441377d7b22184e41cf4be53668fba3118550e5a5b427ddb5a80e15a6ef38d23053e7ed15ab48c39a2a7952d8af8f085f225d58bb9dc55b848e0a317fe5d4d4951cb62656b90060f4e83c7c8887ef0823c3b71f65209699aeb1819f9d805ff9b6615b42d9c17d08517bf414663d658ba7361679d89bb68c2baa6e81819d9c19b818b24f9abda4efc648299f4196e03df61830b7cdce23bad89360b3bb1363a4646464626f0618bae534a49fe544144ffa8855f51cbbe2bfadfda137cd062f1ebd427a755e5928f59f475490a719f62b493c70e335e021fb2406c2c6c50cdd9d5317aec701d498fe38131c80040223e6271cacf38b926c013048cd11a0880203e60b14d7c84c97a72ca939dc0181220e30c338e0e0a8c8c9c61c6d1f1f18ac389b1253cef5bc9e3011fae304af9b58995f67d7fb4e260f1926c9e5466a211b04255933531b773ea64b28a4c8a39758f9427d1d0872a0e31395744633baf0e7ca422299ab43964dffb6616051fa838dc743d98e7a89a3914208307193cf83885f1ab2ccf6edfd7584c71b0f429788689ac5403c0081fa5c82b6b87071713cbeb8e9191323e48718c52cdfce41a4e7845f0318a9397b0b1b3e4ff539a810f511c33497631c2627cd34371cf8f99644ea239f71fa040e2923cf327c8fd7f6cf0f10957e684b7fc5e39f1f8f084b716f56e792d7a313a46463e3af19468416b2a869693758c8c94518324057d869320011cf8e044599661bba44753b89bd8db2f4bd593f4bbfe083e3461f28aff276ac58e2d73e02313b925cb7692b829d9743a4646d0e8b1831d2578c0072692365666fcec991b7e113e2ec19879b4e56ad1afcc872568f1cbc99429ca4c8a0e0f7c5462f1b7929d998a933c4a74e97ea22c93ed4cfe318943cdb4ee68da0c499493e87aecfccdec5c24b0981f8bd8e8586762c60c0209e2712b35262111217c9299dbb6e68e6b7948304eadc1ca4c8cc9af3f04187d4952a6e99d30eeb18e91111e23231b08f985ad1ba549e272edee21bef8ba2ae86f92d28b27dba24bd224c79408427861fe53bff2f788ef6e174ee65df7c61cb7b1a38b6ab435ae58fcfb980fc9459286b7dc9aaa4ba31c820b55424be82499df7dde22a13d8989edc9d2c26e0b6a73ef64a8c5cff469800c1d84d4a2342fe1df4563543163408be49d8a1344f2c2e53b641665c49e98972569d20f918526c85b78b1e8961663e17472df0f9bd2679c3e4302540881c5d19b62af24c44b35afc0b3e3ed545d9faced0aceb4bbbe645a5349b722296b8e315ce724c3ac385eeea7a03299bdae55fc773985f7f58ace8f2a8e7126d66faa54109d37e4ea58a8583ef246b3844f61ea89177d62a81334ef871053acb93eb16962b420ff0e0b48208d905260399e5441a243aa1a8490c28d2d26cb7d64b4e89e1ea70221f042c828a88a96beef92aa49e121418828d0be93653c6ef2cb3714e845d7c9be5831298222319d5071cf13b5dc4f6c52b24db9d96b3c224f9c622fe529b4a76ea8136b557fae4961423bad23399e86a72182104ef8a91f1a838c856f65139c459c8949833a4646ca20438826be34a1ff1d129fcc8419bf3cc262e8701fa36364244709c8a04108263ec9922f2c8612368e811968f430834746ca2843023b40d0c38c0900400a2197d8bdf2ace5cecdd9a68e1e6670882548b31f29ab2b15372bf1cd6d67fcb4c84e134a24de65eef76ce5ed0a8f9049509969e239a99da8391a3d724822b9c377c6f57824944b7127537346c92524de2ec92f2987f8ec1cf208264eb0efa05fee7a8638e2ae6829692833a4116be574ab2509eb1819096144f21ad2e2bcc5fc300959846e17d3097f72ca632902cb96d6ee18e3ab6713c1ab7f844b7cdafce11044982459dd83a6382fed1da2b9c8f6a4213becc418822cd1c414b22c44db7f69c2491f135f4288def7c4daa460afd9198423311b3d63b2c6140922b3ca9e35d3860f220742e9e8ec6d677d9ac44300915699a7ce76b6976ec81f4c952ba9183ce4794e881ffcd1f46e3944a5a9c78c33d2b001193bd0b8008f3784f4411977bf9c1ddca4daf0e1ef0dcfed5fd3fdb68e1c3bd01819294302217bf0b39ff8d153f6ac9140304609c8e0e167802006217a287f4a09973b87cd7ac9437f62e5fcec4cb1c51d68f4383d08c143d27ac6cb771b52c277c84c92a24d3613a3e2b387103b2463614e1a93f22b9a98115207c224d9d43ec93183e33b1843e8c04f6eeeb7d1acab491b1cd71132874d9ad24b6b391d23233b5c0349881cc8fbf4953d445a8aba8e9038b0f1633c71d7c4caabc2a124e533dd1c1e7aa317f2862d3e78216ee8c54237468f3949bc84b481cc938e126db1e16cb54fea222599fc6bd02a3649aa51b42fa7e81819095143729f9f988416d370a6d5cd39550e0d86bf2811974e31654cc819fc1c5fedd233c40c45fe64650daa6519dd71ca9000193bfc8c333440819032345d2d7bd2ad9af4d4e13b72380df894200767041108218331d56d4ceedb3931dde38c939c134020640c78a6084d9a621233ca91103150212d66369e675703274148180ad9ad2f7155098c41021d3c4e0634040c6ab06c62ba465110f205e4efb24ff8c734d98320c40b9569b2cbdefb08ba80da09d1ad391e63e4822c02388005215c5873bcd2b896e59374fb193900410b42b640c63721c63566b9a60f08d1422e7fa6116da2038d1e232325240ba776aeb4b59e0a42b050fd49429e9a7c85d527631093f6d968f281102bec3949991d331e5285e3da844dfb99629d6c0815182b97d260715e6d0e99421ad76ebd97aa127f88149a982dcbf556624a9df6337280468e3e120889425f9ab9c490d4d2752427c961833472cc000d118cd101324210028563cc31072fd93d7c0a790266a2fcfa480971da26687c60439cc08a7aaeb56e8b275c76e01cd0c1e364608c35843421cff3392773fe92430e6182266734f58d57090a10b284f3ca2676266378c9d1313212a204357ddf576e35cb1e2cc3036394608c0b70608c0c9031810a78808c11842421f9daaef624fce48e7594d1830423484108124cc92ae2b5346ce366ec28410cce0839c2a96c7dca7b5d36772146285875942d33a408698827bfdb438870f40c112b8fe9afc19021a0716d4ffc4d1bf5294408465dc8fe14258cacaa63642418ef97946cf2a4b9312d0520c070244d12630ad3b0dc82fc2273f7de64a2dadc3f00f185f2e749647c4ea8e49101482f6a13a53bddfb6e0a25bcf0d2829638e9a95541905d98442f312ae75b6a89eae2dbe471d1844ab2ae04928ba383e7f47ce2777909820b2f486dd894f4eba3738b2cb99f24c96682a6bb0f882d8c71df739b5a901293d800a41675f2bc79acb294f702105af8d3d14bae3b19cdd9e123236594800c0d80cc223179ce501bbc727f0391c5e93ec778e92a395a0d120bf6dcccafe4144bf306168969f468ccf63197d82bae1cb54bb474d26df8aea8a3b5c3bc0995fc3f9056f07b731663891bef2a56d02506b192530cc82a4cb1f38925aadf5c8a12402318834480001ad8a0066604014415ae469cd7b7c9be5a928a43fd58dc7665708da1c26cb1bba5e420155b72c10708e08012b0800c0e809c227d93a4b28f4c9bd614d7499b27165adae904a414f546b738ae15e91fde71021052581b63e975fa4046e16c8ed695a6e731328202105118b3ef467e4df742158a3d7cf543fefe733c8d1ea7078f1c65782940406144f925b1636b50f1e800f9042d1adac93ae5a7723dd18c49c87b0c3d579f016001a413e64c2a7ef31d2710f1b4a129cd436a09b289e3949c644f1127b809698270933dbdaee875653261b4e5ac5071b2f7e430a126cb5c9b37d6ff46412ed19d896a1a2bdff8982096383298d0164af4747d01a9c4395b2cb9644bca5c3d5162fd5c723e4d3b71357f03c82456fd5442c7983c3f2992a8c4201155998e44d9e153c25bc6bd4e4222f9b8b1dd1ed78102904710e526af4754f0392910472ce697720c2669da4945208d5073f8277bdb7900c288c36b0a8b3e9afb32a46364640a208b4066e4662d9a247e125504d172f6dd9ddba142208948922b7ac77213d9ec1b104494dcc6fb3c5574ddf4184e0336830634387f86066890060f1f4102105046021030461909408000ac00728822c34627f27269ba47308606c8e871461a3a4880011043e8be673958e6888f57083273ba354934889f4908e7442f55f23da73f05049041a41a9ff582c7ee6ca620f4cfda8a2e5226295105a2f19243ca2e77e6574100d14d69fc14954f9b6e7301c81f923a63d9a779f0f064470f04f1439f7d194fb816a40fad0932de96a226e80fc2873e32756eb2d41eec55178b516e166e81e881cae11eafe9f7744d40f2d0054bab16cca74f9af1f0e5ebcf4b8ddf21f9e6e358544c1a3d036207c62cedb736c939eb05a943c285973b69c3492b081dd27ed1a4a392498a11640e7c6f8846d9941c4e8209661d91314b94e2905d0e6ed2548e891ee1b0fd6acad77b26c5f56f40a2d24ec9a683b88192dda0be9936e0de192f7a71254939103664f9d79947acaded5ec3163f685a8ed4c06c8ec9d4d8316dee40d2702855bf985582d949028206f336df32c8b449e9037206b38909d7d9535aaf6e0720665855636cadd98eebb659190af156c945d6f244b98a0ce71866d63395108d218be93e7acbd23d260111833e279a747b4c2ffb61702c3dc53f3349fa3a2060283aae89d9193be339c8170e8d3d2fe9ec3f680ec40b55aa6449a742cd4f0a48173e49f498276709137a02c2054f8e4a7296c25b58e6aff2e4f9060b4f0bfe6ecdcd6dd86cc91b8064813b49dbfa938fa2171692c3a59dca113621f6152aefca702e1a2b38ff5f3f1dd3bbfe0f52853baac58a3b73cb7c5901840a641a0de517bbab3290297ce9ce73acdc94240b440a99b525cbb9f69415031205bef204df9cecf63ca604102834e999e41332c62ab7409e60fdc96b2175067182412f5cee352947bc6f02e23f9e4434888bd8204ca03c436def3a6854750947555892f5b3ce7506a284248f1a523ebb931c354812d61193752d9cc77b0c04099d38155a450339c23e27a5d7f6c6553a01314282b4273152b37c9015a408858ad29ab5f235e90c4284ac3a7f45bfb70953820ce1fdcbce66db9e5398204228d4a22749cce6b1da068396f214f5e904185cf80e5992a528f9627ea19eb0f39af349a171faa20b351a2f7b5a7ea45efca61d9b66428b7f86178656aa5cc20715cfa15d9cf62a9f982441a6d6d7c51e53c597ca975cfde422cd3988b589595c9c617233febbe4776edcc2ca7f1b24ab4fb0f16c619cd62749eadcef79d6e2cceb2454e6f56d9cd02231a5289a5e736ff8698c28dc9885ad9af2969e68a6892cf66f2bd13fc9faf62516a74c91972511d9f18545ba7d276efa8713b3e715dad7787d48154ff2892bbc246e8e7ba2c6a8a16b85ebd975b3b9ac5644563c26ae79bd85a48465157e9660497ecd3901ce831c67a071861ec438437399df326ba894b73610c30ca4c7d066aed12b5bb00ce51427aabb8a41062e7b124bde7c27dcd56c10630cc6c9b86dad6a11ad11c399a2adb965ae0d6284a1f8ec395eb437977c60e8372797cb247c92eeff425b99d6a5ff46ca222f1ce6fff2b2e75da0c3c6900f26258d93e242537dde5b214fa8bb6c214b6d1df6b5a205436fae6c0aad7d21cc82771d3787db9476d2b4200616cc6b42a724c999293bbe82192b76ccebd3128bb62086157cefcaaa2478ca56a70a6c92a464e29c674b39a97089ade172fe50a924f90d624cc12815af1ff354e53c1fc4904219d37b29c387f9fd7d10230ac56d485f6a4a29978f0631a09064a12ce3a6f3d6889fc067b3b47969e1a3963488e104f3e5d5c8f5060fb1c568c2595e76ee1313fa2a4d31477cda9e3b0c622c817a1d13fb92245cbd97461a4a48c8143bcd467f93d39bc617c448c25d62dc5cd20b6e99c40b6220c1f2eee0fad9375fa8dd20c611ba8b3187ca26a516b118c4304259359bd039c5ec9fff18c428c2392a662e1b3b513e470731889046ad67bb4c6e6256620ce158aa9b3f698a184228fbec774c317fda130c7eaa356c4ed5686ab2061cc0602e5c2d7d57e7ec2c1970fcc2fd78adfa5e31a5bee480c317cbdcd56ddea7ce51c6d10b52346467ebeca1e725020e5e18ad5b6d2a3544697c177fde38e1c4b45f934e74a1cf4be9c64b29d79ae4028f3d4bebbea1d2f5b830ca858ea594048db53701c72dca94b55e530c132e97d802df524ffd395d8e49b41676a58ad31dd382bf14eeacabc48b9336038e59d05d11db1dc3b2682dc79a97f1f059ee5820135de143ebad4c607154f4c585b7df73ef159eec79156463f794b02b2cc1c4de8cdb691aca1e385a91af98458f6b7b1a4e586106cb3099d731cf4f03c72a124eb4eb3e4d159826e1f6b7f3f2bb4cc5762665354b49f6e02d2a1a13def249d29f424f49ea3db1bba4b7368591b777a1a48bfbd697e292244bb96be9523a79521cb3bfd784d5983aad51f861b584c97441de230adae36954e69c50649da2f57e0e2892adf3b6862a31886b3ee1b8544ed3939358653c81a78df1721253bc93b413885ffa46e7a54ef373c2aad9cb699ff1f19e4dfc9511bdf5529bbed584b69d26850b6d0f706482b4245c1e1195df0c1309795292a05331da4c2ef15570356b2d2d4165e91fb3245e898389f267a1439448ae1aad99b69883af93f8e526c4e22f94b0b224b80b97f354f66c9376240eb578faab96b4c207096a53c89adccde1acc6f1083a9348456fef083ca462865968e4479780a3114a7ee8ce19477e2762c4ba27c54b2975f8d27010702cc25dadee143f6af0dea78043116c0aef9472d224223529acb489ab59cf8208ad674e34cdb9daba7e80e31009665932c6f6641a4e1de03004177ca73b8e98501d2b0453318a85caa9536911a29c3ab684af886d663ec0318882f67df468278da5121e3804a184e624279b64078e40dc9ba3445ae67000028b992bceeaeb7186e3e00fbf5bc5cc5a41c3689f060e3fec9662cd33e674c2e7fa6048dd0a3f9a63da14a700071feecd99b13dc939a4c43d2426493f15a3e3d003162fab8e27b1f5c32a081c79b84a92a42ed1628f6f0e0e3c5416f442a5d3583a360a70dc21b9bdf7bb8e93c7653bfc7972ca39a754f84fa94331c5442d89ea09011d1a578fa9e424a703c71c92fb6493145b35f5c6e5f088e8a7ac9604471c2c8baaa019a22e5e180ed7683cb973c57bf806dad4e39c1cca6624e38632ae6766d5d069a76c032d2796a749468fd9c3062a7a36a67cab3195d41acc4e315d28112dbbbc1ad0dcd6e1ff73a64e1d8e34f856b527f8fa5b9f201a38792fe3a6f8a485cb199266aa448d9f84bd703183d176ecebc2ef3d4e0f12780f344e80a30c74f49c8aebd64a7b2183d749fada4b4b6238770c45eb5ca7d4985a5b23064c7ecf27c674094f2d014718923374f5f42c8ed489030c754e35e539ab49bc123ae0f8c2f2a9e5b3ff070e38bc60f6944992b51c7b378ea30b7a0e6b922c3b9e73320f38b8705ecbd751359e9b1cdfc2d69ea23e27bc5aca75703c80430b966d4a5352f070642151c3fb92fe85f7cd63e13cf97d349576041c5778ed4a9493667abd6c21e0b0c23e2afedfe652b952020390004715942e15bbb54c571eda010e2a34da1926c7149d7eb238a660d6b95e8c99635af12c028714928a95f224f9a49c2d63c01105fb6238db54b6b7bd4121296cb6f4b7d8a9845402647c01c713c818f2e32b955821a2332640060e27f8625dc2bb44c9e7591c4dd884f59833bb59d99d4cf0423b7ee6ec390961691c4bc026c7b2dac439d34f09baec657aebf44fa725e13aef14f1a871c57624ec154cb4f8393a4259ca372551c36184cd52cb86c5b21cdd2902b359ece4d8088b6d8283084982a52da13a8b63086cf789318d8d568bb9031c42e04fbe74d174c7444f32061444827195f69b5965fe3d1918678deedf71e3cea6f917e8479b135633496939beb8eaf4ea74cfeb3c660c3588f4c24b72ba58d184dd919117ed8dd64d892797fb23b28bb2564cda295b4e72b074a109d1c94d4c25b9282ce6e2f6342b737c8c0f90f103115cbc953947fde47fbf28720bd3fa3adf245b14ee9fc4fbbc7ca9e25a986c7532ad95f8162eb4a8f3a44bdcfdfcadfc2cae89b29c8c5e651b9485df17ed66e3c53c96241666ab4684dedfce26d9e13d86082c4c8227133c457a5b4c1f1079c531dec495341bf59d2b0ce131d50a4f4b8ca9c452d84c3e2b788fcb38ab1f4c685b64158facaf893a9eb22a9d0211556c395f4e571dc3351349052ea97d9ecb04158caf67f9f099c829380f191ebff433ef070a22a658ac83aadb872418a30400f08248291cf3ffbdd0d992398614f89858939a92ee195f82c828b60b96da69153d6f54147aa89dd568b2585a139150d015369d547e61c43e1150ac963fbe46bdc9f58bc827b6d7341a39bd6934850c34fe0c114fac29e4e718b5c4b10e4720d2097e2353cccf56f82bc98108274e8992b48c93928587c82698b8688f3177f2bf8b134434a19f6c31540ea76176844826ca75712b548a4c5d1526d23e616237489730db9fd49c982fa65c114b9c25c6cab8ce989a48a412863571cb11669d43a7c41b4cd69a133749ea4426b195495d3976dad41149c2964af195f92f7df148f4fa5ef639e87a34031ea7478e919132ca1081849544ed7ee23da5228f30c8fae78b611471447d37a931cbbc578b3acae0854823b068b14a326946533f3a46464646ca106144f579e5ebb157771b94a001228ba03335d75ab674973f45ac1fd529531a2092882d89d51a93a89fbb930822d8b0cf2767c9afb3bc8e91911c7c08a72d423aff9ad8fb113144b94d3485b5b8cedd2118030522853065aa5f329fed189310dc5d6b644ff489da255880c820ec3e93b4a554aea61211c42767b4bc3987cca80904ab1db6376dcefa1c1401449be44d7fb96ea559fee1b8e391ee9b92fc16f343df6963742e3573db3ed8fea6f9921f1fa323c287eaed742d7f5ecc97d903127ef295e70a1542d2439e92aec885f88eb192074b2e5fd82f390dbec183ae2183c999b45e7aba4362444b85f414ab688f3344ec5064d4d69739471d124a0eb18c6c4f554b470ee781193c66204207642d879c38fd29a7ac013270e0231819c181ef789139d02959ca27b7cae17c8da1ab93d87149320e4b74b984da951cd3c3e10d51f69631bda7f23724499f65424cd3bf7e37f41ff44e0c25f929491b3cb1b472ce26658f1715610323992e73e83d0fa2c81a9c5ab3798b39b1c5c314510371d1bf421788a4e16efdb7b68deb53a3081a9a309d89c94d21b223720634c77c976647e39d6c0e098898c1f216d9cf96be432e1d23233c72d8208d1ecec344ca909aa79cd825151e2d3270157e97c428c9048b8fe18dd34a9149ff64ebe3202286a4acecb7b494189cf1069130e8416ca3ace364ff100c687cf1f992bb93baf385332ab362e6fda3b4225e60ea844aa6f1a63385bb508a51ff84798bb2eb44b8f0b9eb5646c5738d8cc816cacb39446846f854780d225a30076f13df93fbcb691e67a061c6186360a6a108912c18c37ee7f94e71b924793841040b65f910e3d1fc04947105912bd83163bc3b7d132c498958214fff9364f79452aae4689fc1c98186193dce8e1c2510a9c2391d5c6c43fdf504b34c30060f358850410ff12e99d233bc0667c4c00c9129acddfec14f4e9a6378225238c5adf8c5cdda2d1205ca3a3ae5ee92e62e1281c26b39a6b16516798275f28acdc91511276452ece5cdab26dead4813926b73748e3261355e112698d4ab25549f9bdf5bd1d3bc2ba204362d545d2a1b8bb78824418bbc35293b8c84cd84f324bca5881c01dbe0a142e42b582a11314252c86049ee8f448a90b8e9412f7ca6092244d05f353d7c73dc981e347af0f0440766fc396307087460c6bf426408e7b8038f10a8d4129350200c8682a150281004800130b701b31108203844289407e4e1884458ba0f140000432e185e4a2e222418121618180e49a2c040180c06c2807028100a04c35028060329189b0eca271f04e731451633125e737c37a832fb827aa7c4a1b33335001ceed341aa159a07e09127cf58019edf824c5f0e4a13bbaf0ecb20d893ba3e8fdcadc7ef11a105bc19ff42d89924c27867851be5ccf6c0c83fd0793766fc58d2e3fd838bec694fb0d6c96a52c1fc1648da2b1c48a5efd9b4562e2f20c29114c9f1906f6ec99386bef8a001e038843a0358f7d2d8cf57714d82a5084f1c185f073c9719e0a537cc96df1465c0da3f7982521940a3a680482906a8a3f34971cd49bed8408e2232935bd92463343ed00e2d2708172490d714e89ca00c5960f68044bd388c19ed27825fb52e64d41b2184482d0b23dd7493773e2048f0893eb2ff50032e2be785a6e0c8d4ee9b1cae5f4a2cf19af4027edc2a7705c75debfe26cf32319b5069441128e82cef9da6a6ee3cdaf81ad3db8906c03414294484bad0d1848f64b9ea68f7224a887f66395761fcd73d008d36cd08d3860a35d6ab90970bdd8519931b21eb180e72a44396d14085f20410d0d691669d5a1903d3e14a1bfd3db023a70441546d4a03d116046f9180e615a6949f8207b0ff2a08a76a951c24ce872d6a43290b49536510a03463db7871e18fc896a446e0f42b36479984aa823d71bd0be2feb66478192716cabe345fe06fdd271f6c8523a711094e7675c75f4ff6b1725669cecff09aeae6bdb3d3d4f2e5b4c2164943a13dc490ba9037d6b8eeed59d8b0ee2bedef89cb72ab946403db77572bc80076cccfd730f38b133debaaf727518942ff5be19c95768f5789d216f0b30a7d1a882687945cf64d28f46854eeb5f0c12b9438a844fc62e79f14b0089c14f522c49a0b8ea7f1fe6a56a82cf982b646be239c99bdf71972fc9b52743cc33fd5ce9d79b86e5a1cb8e4ac4424b0c923e72e0882465fff4b12887cbab829b7130407a1075bad44993dcf3f3f539902a50006d4e760053f4ef26939a2b61fae128fe3f7f6337e26c90666d293c6970e46ff84d77bf9c75d14187d7eef22c5606eae9ecef57f2cbcf1d4b2fc05c268874633ba077c65cf4bf03d764a304c1e1d48fd8fd8695c196010f11f325bc7c231255f90f3c1dafb42ccc979015f9d50791440824e2f2acea7e5cf066962302e6f3903849090d2dfe14271db38c0a2bfc46248c3efe5994370d3900a7a96818c8e3a4757ab393981675f0f5b36304d441e02ead7f4d30a40b90a83b6ba78a8e4bb4a582cb2df635ae829162e62d2a9a753d59d28b814a4795b0a982fa5a7b7d01201adb7a1937ad53b22719b9676f3f843088c0710513d209f19b18802e514337fdf475d5f0cca9b0bd0b82d1564804433231a1b323a80e96b8c2570c29e1e5292092691e958f807865dfe1e9265e4e8d7f8a68b0088b904672afcf560fbe23bdf34b0b1bd50a170697b4a6f105989f0d3abf40ead69eeffa3c36d7995df4cbf703b5de1dfd6217d734bd5d63ab21dcd9ca3b77e3b00d34d28346d788bc40a60b5b087043856d7b4c96b3a73602b23bff09d0ab4b01c55d69ffafb0eb7fb63d1dbabe380bb282e6c75aafeea31faae8c11d36a31b3379d391475545ad4d1aad1fb0895a9dff0d7e755f54b1d3ffb5e44bed0b075c58af304ef96ad0e50c0874082468f6045570fc9b1e640f274dc925a0aeac77a74d42f87b9495db72fa7b492e70399e97fc15e903d3ab6b96f5c490ca7c0fa26cf2c6568dcad088f4018d84240ab8b64d3ec4109585a122f10015b80257090e0ab64d011b54c3e419e944535b7158ac2aa35a736c7ce7dea611cb996cda18f452579265d52ca8232b7cbc5ec2972b1a41b5742c35425ef9b4e5096dd2dc72a1d5b2b3563f9faf2326ef6175dab04d0124b64da3087f3b25cc9fb50ab0e0fb46643a3ef78e3892dd5fa0565a8d62e979134ca5097b45e25ec3082fc14d872127e95a2923e92b29d94b071797dbce67da3f71a0c68439c3a5b15059c45a336fb034482b520ed8b2874b439de873faa9b719aa8f9799dd8fb7dc4d1248b3a80e740fdcc581d6348f4e07b0abdb1a3b958f3efb22c6b4dfcfdf49b271608f97e069ddb801a78c0b430e296c5bfc8f32a4d7c3239d05e17f1bd81df30f931d6bc7caec1780689a82310c40be7d2e02103916b529295d0a2cbb20fc1ee83edf03aa24a276f003a06a84465c3cf10f2d9df86318735e8fd6f686c09ff4f092086e281093b69e5949c2cd56cf36742837b5328b990c7911bcfb39498357f3a6a3109266be2c1f6247203993c93b267195f7931ab688b8267b252872dd4edf59df2933c79608f86aca3b854631234b121cbde35cda113839647791b7f92c7c8f2e64f00740db14b62202fd137c240b8793a7ab28a75e2b61ba7e64e13a6c50f8b3bf2542685fbb01ab73cc79543b142843710c0095485bd0152fb998b93b93e21a2be020eb82e01de0979119240ea5065d1dce5b40553e1520a7e3a17ea13f3086902f0172d27dd744960fb8e7db73b8cb2f368de273ebec5b5d042987a367bfc562444ef45a3af36afb68586dce7e8a5e857b0d8228a31f7fa8f8345ad49252bd6c1d5138102d076fc8a07c1766623743c91b10cfe50c7fd15834f331ae3182c4387a4d9591db5a103ada9a1c3849ee2165cce7dd7ca2b56c8874595f7c5e0a3e4d896f007f4f003209085f24e25650d45189dc543e72a1053477c92bfad33179ba5d9c2cd7674dd954ba9bdb93e51003a93b9fdfa1c3d558efb24a0f21bb45f67ff3d34fde51331c330daa772b3dd7f908c9c5d96e95900f08200c9e061db39842825502b03d6b5e338c8bb334e11ad718dcf22748e73dbbfb391a9c29868ad56a1e50ad84ec8344fb99bc521a8913e7e0b6087099e2a1b6a332723d3def13ca66157107aa9659a1f8537fac5de3755dba6d28840d988c171a641ef80b2c42435258d7ed1e8a6d24b89dbb5d297579dfdf98e9ac5037003113cd009575a8429581b0ceb27ac408774cad08dff244c9bcd3a3bf40a1b52b97458019f96e54573dbad4eaec91bc11ddfb3879042d7d6808c9644559fa1e2347237746906a8ba8c1b81f636ec240f50ad19c0b6e31d24c0cb0ad154fb36a242d864c2e15b9e67b1a724bedeb3c263c98355949b4be96b0496d3fa2c53be85ac456b2c6d400cb00eec284a1ae5eb2c3f7d6937c47477aa5347679e93b142871be9b9d17b9ad88b870949e179b541ab5908eb9b4502c24b0dc3ee6dd07d67856087c24358e55d647a21a84ec395f3e9afd8009c4f6c99e274994bb0596e8e93650e3033866a740821b01005ccc0b45ecaad655b13f381ed685d7bfbbf9e9f08985ee4c5a9a2a85168073758e8707b180e45cdf09f3952325c4509bfa3b144b92ecfa8cab1e75e969e27d09adcd4a0d30e5218fab314c6c9c9de6a6b276893f553fee4c95b8dcf99f885376078f425291d73915f7294891ed40a115adaa92c90e9aab9c5188eccfdbedb451813c66f01aa95ef228c6ddcb7022299b5f9916584ece3b60b7cf038f461faa7765e3ff210398965d6a1168d24eaec1816aa53971fa4818060caf8d137d91753635fe2421a40b31f5251b963d5e103da3829d4106c8892ce603ff2cd518219ee99995876bde95a32eed773f986ecdb5f4ca28ae1e7dbc8529266ea2487f46f91d041036f1a9d6c13d7b318369c3c641ae90541a76a851cecd9010e42b30e65413ea45f5937d46635d8c4cf99cba964083939af199acd401b80bc3912c05e237236b8666fa42acc5412ee972ea6a742644e5f2f1a2f479165ec11f1675375ed362effac928d1aa41558f6619189a650c65e0569bf8192fb8384c62f7ac991d41a6b1a1770472099854b71d38636ce217027f14128b947449de951b5b252a730c15a086d87a4a6c55cfc415df3b924718c292d50ad2d98e35cf09b161f462077a62dc959d6ae179167376590fa8b4e328661998cd08b5d13d3a1036a35fb366c20346471aa18606100175b568a42781814709bb7e9a8f0654949abb3921be036f913c9d65b11e2fa1798cc01be1c5ffffc59e54ea4ee99004f46a7ab3cec5bf9920b83d566a4c04a86e18a6c0b6fc8089c720efcd5f465cc990d4104044abe3f0045bc4f4738f6da01d30a6a793b467bb60ed6e69de122047ba8da90f26edb65e5a47f7abf794454368fb5c23219796961d61128cf4b1b8c9011eae82f5a42827a84fba4044480c492d1dc29a05ab2ae4408f8cc0a65b0e847f8eaefc1bbc5ff648736060e44b00f6c7867ad41d47d7be88b2f442cb1e477e1b5a59c1d342cadd2ea994aae0cd7d2095134e078678957d69c3aed31302262fc400cbd04fc22d85ed9c69c9101fd9d8c95194001d854791c171df7f7f7a0bbc99770336b45deb3bdad9985fa7988c39ce34050c61d6e2cc6204c22059bd0e21e14fb7e99e4f4a192701e4692a55a61983ef29fd2399614499a5625eb3fcb47f8d857a999dad45f48725744717a505c77277b1f370927b3dcb4f16b2daeaf9a667ffcab4bd5204d01878786c1c3c326cc38a5e0529a661ef7791ba81fb1a4c12f11991e761333f4340d8ca2eb1b7b331be0746c994a2691bfc4ad524682db264951059344fbdbd177cb92d8fd932d3cfdbca13afb50e8ba8a5a42ea4251a13cf9ec36e392a9b9a3e5fb4f55aa9660e656700962f414418fd6292761e2a289021f3b447553f098372ec44d05cac44b38d1b2f91bc7443972d5ca788ed0976bead926cec8cae1d4d66883285b35472564ba10386a017c7677480d843846e62f8a93666ec859d199f57c958f06a0d6b5f2bff275c2c1362accb170252fd8d891b3ba5cb536d9d8db5acdaf94275c2c084b4e3d4fdaecd325f3a07d58e3080023420422da26185cb438a74fc3f8dae7a780af43955e2937e974c1db1ae772de5c43e0644709fc81b954c9487bf3d7d64715c9d596a7e83c199cba26f21f7ddbf71df8246b373a9e4dbb8a2d19e95fa43bb11a5714608071f9fc5381c621804c046120bbb56c7e62c846e2e368f944fd4e787d432d8cb0fe3d1204429434137ec045a11df5d8ee9f86d68016e1ed68b8c9e2a1bb558f4cf6e1e1d3e1facf7f5cdfa6925a443d0b8cb5284379a0a61b839d145ee8138b9266292343d03a3880f3718c9084bf82fd6436efc8707aa0d7873034a4a1be91d09bc5f5bac19932090071018359647085b2bdfab85282dc66c78adadf60c1399ba3d930f4183fefacc6248e2e29c6d62d27dbaedef94212a9e7fbdd281a85cf90a18d89e22bfc6b8eedb6b3ce81b645f44434e45db7aa9a13623c6e51be5bf9fc1cc76166674a0d817aa51a3833325098233b5b7d83963181dfb6624df448fc6a886e1a7457a4c22924ff8854e34bf9411c8418a6cc1c63a0620c0cad4afa0d936c381e44a40fc4c2e84f4223b7c6c064755bf33a011ec628f398a8af2b3a7c5aeef0db78225bdcde93f56ce0cae5ce0dce80c4bd6fc18ebf9b506167f66ba121b11f75aa33a39d1ac7b126c2a8ce3460b30b636b6650e5a5f32eff794ad0ef0c2320dffb620b183456702ccd079e891cc92aeb37f0b9409000b7ab929acc9d120f04ccddb8c794fcfd386eb04c43f8b03a140f16cce012de5c455e11f505e006d5c51cdcff7280a3bc122a8a68e115a2aa62b814ff4836054f86f26a4193e6de80aeebbea6a89df8946f41176e36969cf5c1f1b3b2902b97333122620dc4a04a63be15cddd8544992c62748fdac269ee96137c67b4543c7caa21b754dd8b2968ef923cf3798dcf2eace6ff10e1f78bce2daed96f106c38f7801ea1645c48d1a3a25c98799df9e2a630a0140cd04db8aed950705e16eb0af5c321169eec8dc41d4d975010d66469703b8cba729212cc53718190b0f631e5efe0e2a0d8960c5da09a666036b391517bf3b1063eab16cd01e9d44ba77d6e9d6ab04bff763c0f6c88cff917c08759e1ecf20f51cb161e9d8cd20965e9a734c88f5b2db645209420aa0968cf7f1746b9ce40f5c9a0b001e216e16788eefcc1930292166aaba875737a3f8d84393f99e4c0426591407e296a7b6ff6345e3f6dd14b36aa11e24f62fb898989b2ac178bfb52ed70b7e773ef1a2d9659cbcf7f1281da0c642cf9e9eeb91cd59b9c80b759d77a413980c3bc71aea360ce6f44433d18b925602c515beeb2beb70b85d703d1c9ca71f4d6a1215f4f6c0fa43c50be2c3bb08438737d80567f990d9651902d0567ce78c972c1bbc6d5e2512a4c5e89e95c4b1039c139a71e64da868fafd62e7aceed630988a444bdfa3ad264d239ae650cf466faf11e916b445f4644be40236ab8e3d4378d62c580f7ff5417cced18d37e51cc08da90ce5d29d306bbf848111079d41f78d3f85bad43354e1b282a7c88314d48ec994050eb61f02fb15997edf0dc4cb5897c88f361f69db299bd0d19129342e2bb3500ed8ad0d102ca1c1c175f6b736f9436cdca3f6d6aecc2e2f0b5fad035415b931df409cfa204e91a878b1f4f3825cdeddad2d36cb3a2c1d0e156540b0a5809f5716cb7c92944a9586e35c8f7bd535556c249111791beac11b95901be96105838171203a7d32c398ea258b38825f85c4ac9a3d0ec9e751ac12b1e373e0bf8c6dc7b87edac35400d6a0487c13a4c71d7fc93583b490773ed140d483720b5f0cb10993f6b7e52e93392fce53fcafd3b4c9e7a21ec704c6c0abbf8981ca8a3e530d4b34a3ad34a350ec6459d8314d8a4680fa4ef779bd4175892f707189573ac346a158b58e699069dff55b64bda90b717378af7b45186ae4be04ed01b790a8fc8bd261b93644ddaf5d23354138cff69b1648ab441bcaed57249772055f1e7a6964edcb76691a32a0bcfeb388aa4223d42f440b7e1cc811dc60461431001741b0233a215c4b6a9160065045a2592074d17d1574bcde49953fa4de844d2c926fcf502941981c1a5180f2105d6d13c87618a95ba8ce87a36a9ec0d6a591080f950da7f60103bd5e701cda5fc0d57143fc4c4b2fe2f03cbd6206b4e3e7ea3308c1c6d4e37342ca620ce793e68efae049cf1a62edd89d87382ced234d1b2a8306cf1353515f2ae80ef02168f05127ae040b056952ee0d46baf2088d3826a4dda7e819461ce073fa6a9aa991a5955caf7d6fba1a389127e4a882cb39b5115428145c0c1b17716610a0b7109c889fa895db3ef64e20d974ed009d33b642e5e617b111cc40c932b8f2d8ad3447227c0b10b77815eb627a12d10635ca0159b6694e8d6e45207c356cce16327e092602c5fd36b53dc2234c6325913bf89c026cb70db5f041ede91eebacf37bd1fc5f6a8511ec0122113152d96e1791436f234c947f775f8d2743611273885d29e2f7e841814a86e4735f59fbd63fc0a43868a531e2194564937f80ae32b677e529ac99db1c50ecb9d69c3cc6be5f60ec2704d98bfc40ee8ad15ec042e3cf660ec59587a2fc3612c8b55456e4ce751092351ddfc2521eef8bc512f1f83b97599bf327e550e76425bd28f9f520a04d1e1ea9196396bf64da1ba73d35e693ae9586b00662e10328fec45cf966aed007bd938ba080bb37e87715bce9b88f29ce97215bed5cb064d35b8025a941346fcdebaa33c392bc758b9e38aee5bb324e5734cd16134dcecb0d4bc1ba8d2305927802d5d922311a02e87f86c4ccc0f9228eccc06538168b5e1868e4734471a967683778beff16ce507b60f464f1da3f4961be26cb1d2d73520c81cae6ce3a7e83ea1a89a34437db304287965bd9c067b99fb942ef8d2e5a2085e01042d99631153dfe91e77153efaf8e08a8b9cf84d1d1cbc8039dd7f9372e29d6fd9d3f8b1c513b37d53014d14cbe1c79e5eba1c2cc58b8d552e72cbe392ca6fd9b15c858494a3870ea58c302ad8dbe4e6d1177606fb8e8d7e02b58f309e3d7e82344220fb9df13d023cc6bb01172f9421e7b562237b5ab8c888858614d5c292812cd07734fb0a1316b0587d7438f9ac917132154f9181dc5a1802a3dad0a8f18d3133214b45535792e23552fb9645f27e0e0eb3e0d223b1326d951e0d2f6b27c397c154f21e429810ba71140fcefee3fd8dcf7136665b750d8f08afdc2f09059271659a6791a092f4d654104ec25ba6252d8937c114c8b4e81f7a876f13cd74f42bc7c626c5e933ffd0afde9eab7565f871af41fae080ec2870021dbf07046bd2e02677f9b65371c1f3804fd47e0bc24db41fd691cf7a8cd761a02d700bc1c06d8ce84eb601b4ccc1c8da21f14738e9f10745de7572bd642c4ab8fb3f15b497957ad17ea8642368aed806c233fec6b6bc5b0cf58e13c9f947856b07c95b2b6779901f6b5a95b0c20ff56afa3c8269dd0f7bf0de8f623a39dea1fe3d93eb6259739d5b4febc46fc8d2eaae1128f04c1cade6362470fa80980544e95993f94d48344e3849462496bf087961cc7f31e464002347b1ac207f874adf71f09ec0363f32bb97d597f49ba1e052bc70ac9d5d2ebf55863516ae16a52edbf6b3462b6745a2baf2e6caccaa99f236b8ba031076db148c5a9006c52a406d22e811705c64bea16f359e40d089960eb2552d9c028427b22abff8fe4f2a0892d7b4404371b8dface1e2fac8712804dbc3c8060725ea64ca0dc66ec92070c654a1f13203a03c8aacbff2b79b6b1b0e464bd129ff74a2113ff472c8d682a345802cc5fb8aba97c46637b77f2bd9828ff2c05884b567a285d1b52d90fde2ead1c47d5ebb64b15cc230e42537f9d2cf955f1ad699ec4e5619187989df397ca34e06b3b8bdc4d1d16d2fdb8ef65e108e3d65d1f040abab3defe71cb33bd482910cc26445703538343cd37fbe6fba5392eea73ec67fe90613647383ee352f1070db186dd4e5c6d5260b415d5a631e4c20cb66ac378c9e06b83774522fcb091255036bc33eda43a5692c1d16f492503faeb127d8026c0cd8687df56072388d30102036435a935f063187769ccfbd6563d1272460bb28a75cd9c4259050cdcfc3a00b30cddb357c504096cefacf17176ff6f31c0b1de041bf7e84aa57188327c6ba68e5119beeac29b1e12949eb168bb2bd694616f9b3724ccc9d3b9b27195360bddb3a66823333725b7da2636193caf293c8cd6a488c574879af1263bd59742b499d4d719d069d31756b495d4d71ac81beac3a55254d73125b64aa3aeabb10f7182d3d8d4f39e48dc478ec7b845e13c1cb8f05b0dc204b98b5e22e0fb82978631d26ed2d8cb74bae8675bf28c59c03b2bb446be6133f4bc8b5c05d0e72a12bcd52f210e5ae34cc27e60955e61810dd15fa2798fa338797daed1a7c3f5c94fb06eeee920d7e73596e114252267c0524b62565719be8f6688576652b816f13af8c2d95982514b84bc0c318fe6027939c336bd96c07892521253e47d51a08ba9198b6802e0db63a692ec9a01bfcb0d08e4447b9656bae40ee973bd6b12cd0b4c74078ae166cea49c0bbc357b9eca5548740e5c6bcb247448397f1c3fb342413312fc26be65f23f5f4f038b5fcd47db40233f5a233091651caadeacd1429c6fa3dce4df6efd71bfa3692972b72cd269cb9275fcfdaddf95ee35f23eae4a6ab6d92bdd7dea2350a2e7482a0d0dd350597f74284840d6eddc0d18837cd1266ca9829687fdb26efe986d8d04ae73409b3298df66b16c7bd48709accd8d2dd0df529f4cfd23b06503989613293b93d415686e81404dd393bd9b509c359662018863500af188c196421035a32567c04806be40a14d85074b06793df05fa105b5687895c34d2beb8041260aa08fc210436c8039429b2e661f1cd1cec1657a083f40b40a2090b4c93fb6cb2c3cdef0dcb9812b7d0ffa082322f19792a332d52de973cb7ea74663ee36709b91686ae00d105de321ef2424eb52cf72930d3284bf72a6514a36379b6a06f13736facc1a45b843b582051b9eb5e510a9c8934bd309d89e5fa28261c5476eda63568c86c9694a6513c040b7ee61f5de1070e6668a331c31ea2b51ad31af6d9e0e0894dc67291c5058949d8e456e227ca4d14a7ec6e91863348d469370266201f62ad3a36df8c8337e2388302bf3b18eb200a121c24a868f9dc31e827ca61783fb951ac5d55fb8df0be6334f68b0927be5bbf56f0c20aad54e6abea3f338e0862e1a60e32125e19b888337f42ef80cc493a86f4f1de1192052466d961ef0c264c257ab3a99e0a5999e875ba353b66b45e4b4a836a86dde32be11df111f615e2b86e1c1b36db2d287d2276d290ad72e6e77843e835f440e1f5863175164134aec3b8b02445a8d428e6c0f6a1cd2761b004917dc64d16f8b197cb73ad81875da31122051a50fa27d77f529d5a68df7e0b76a63ee2d7185ae688dfa478c25fc8986847eec22f0cec2ed1e78dfff159d1a6fb0d29112ad6ffa0ccb8fbdc9d8770ca53f305d326a582e8b1fc2bbf0681539b85f590c97b25bd55bf8d91cb3e737ff291fa689360141978ab704240ffdf69810dad820bd55bfbe159c8e46026729e4654ccf636635a435713afdc22f2935c8a8a8f19cc8cc47ff113b715e91887e4255c68c9a7f040864c5ed9a43deed791d4f85f35491209d9a5e3f62560c57cc85ed83ebe2ffed8c54cbc6083b4ea73ab98aac56f74ab8bf04fc1a6c2e380f41b0b03f2a3410a0c2bcaa75f2b908bd38d94b48f9a382eaeb30ec3c21b489d48c30c8f42cd8552c29cc7ae5eb2a6f89f5dc97eb2139b11818cfb7c4e4fde3ee19c2a12ed8cabd0d85d78f488287fa6b21bd54d1461f3ad5c971bf8bca105d10c941de0db558efda559374a18f3219c95533dbb345d10c82029ce062014eaff1c70aedb6480ee03c23a392e36dcb82fe6d1a147d7961da9ccdfe8350ff3b24a63abe6cb7016d4c8e54861fc71cb198a4cbc231492015e81a977a765c4e51b667fc223517720d9cea55f5ed7b9ae69fa403f889950dd1009b044051d22c258890aaf51b480dfb017d0b374ca4e0948d72534dd9524f156788859f4b68849fb6ebf0a0764e89efcb9792e8cb6ce997e2928ba1cbbaabb16908cd55a1c00e9b231678517edbb9282fe1b6b77d7f1ece0b3a5595cb347ac4d020cac1041d746f3da5ed7ecd1849dbb5373242d173a1d44a7c05c9142e2ba47cbfca55b49c766085cb67116ca80cdb9b0cc8c3ccf036227871b89749fa4f9cfb1f0bd65c52980ef01a15c594dc8623f6ae5a104665da6e8a15c25e495d8cdb7ef0dd5f3d57ad475d5689b991ba16da286a076b9bb26d42d8a0105c53bddaccb6493e2188409a59da6311e6e908211f73201f479e001568b315c00cde84c9d23226ccb82f06505a37b165a641ce4edfa60d4c7edfe15d9dbe79757e7554ac0cdc1e83e059ae495c4645372da757ccac496030196e4d8707e0b187dfa3dfa291c8646d8af26598efa5e99a9c4ecc696d32198e146a047a9f834824cb5ec6b3a19dabb5bbe45715298f3dc223fe09ef58c49bae72006db1c25c0898e8de1c5269c367c31bfcbc362777e51d74d1e1c9c3419700acc481f80475d6e631c2cc71c07722774b76084c1a1e00d47ab01b8a78e52c29f5738f25f3086ad8e001573b2aed78df37ff37e56726ee3d2672b178c725bfe4be64c89f2ebbeac96979648f08464a9b3b3c96c8c3c495b6d8ab98a1737c83afb3baced749df196807914839b7776195badf79b5f1de36a2db998c5f9b2d02e57eb3769417f71252a74bb4c182ebe71a3d91c63cf40cb8037e287800ece30a9f3e61a19d328a1d4804e78320dc0b3405582857d937c2b4a5c179b5cc99d54622e61f1dbe46ca1b9dfa23787f90407360dee72a0545613936de72bbb33fd92b8183150e415f47623a35c96a50638a30cd20e11315b12643019ad5f284b60888d6c08d2a74471ec0e44da57b400504b82986cbe035915e0adea6572f25ea4dab90c4b42e82a7f64e1d625cde0e4dfe31028d4f351f82fadb8ba1c785637353eac0852e7b7fef6f260b4ceac56da338a95597f89bdb2ebde5327bc2ab47f43e0542686103b1cada720c948b35bf741a85320bfafa360586220e320ca0b66c51240ee3b6ede2d2eec5b5190f3664f16f634d223efbf261008b04a6a71a0088267eb09c82166582409d28f348475810a8904102f10039a61306001b9cab98ebdc4c432ec1eca25d0315eedc0e668f34e68789340e5ed20caf52db3d29ade06f901e736b9048186d916a482d45eba70b7bebce2a9897c2bd8ca186261a8b5985bc7edb8e23a979beadb6a9e369dcb19c80dd9adfc215ec341732c76a85fd6c6d1132163400ebc23f86959bc063e62e1318c446dac5ab84ecb4205ccf6563b667eafb8c733d8f7d7e2532f9930f3f29bad372b015f8bcb1a2fbeb013f63c8ba88c266cae6f4b73bda0dc2b2ccd341b81f2b1e3ae00c322aec356da27be8d40c88594b23a388b185454583243c7fe06c7687578e2e3fc43b228b61b2c554ef38cd9229386cc01d6043a14690a21f5e89b22b0033974f8681a815f1eec7fe19e3f044098590c30554d4b9d20cd9b8567083b35af9692790ab303ec2ee259b91b6ff8c0a992c0ab3f0c14c9d0764497a3c2031409077dc0ba1a5066fdfbe7809ba2bd09f868413ad78f8f643d386bb99df78f1b8d8fe41489d806d17e50c8a2ca7082040853ed4f171e2aa2dd4fbd37195f873092d399442a45c7643aa8f9a5becb2ba188ba69ee4d472102dbc75603b040e592b9b2426b33361fc00b3472e3e9a23dfa9a852c4d86e0f180365d73357d4da3a041e51d8b8ae265728699d762751f302322b59d4d96a101b7a007a2089bdf88749a24d496352c2fcc172ebcc3aa68f0c13d7062c2726ccf7c21f171f72a5d09843f3c50868b124947c39d8536657bac3a76947d7681be0c6e29a09180113ea861f9ee5aa1d8ddbc20b9f14ba9f7cb047ae0083adeef4f4dc04b603f2a608342c7a055adc7009503edfe60621cdea3930b375d3496ef585118b73b8cbec7cd3d1c7edbf1e72f54389983812c98d6e3232238c396297e152cd6e65d2960ce2204f825b0124cec7f6b01fcb38df9ca31e6054a6ec66ee1ea2b31e603f1cbd897120ef45194434bceca4b02f59625a06eea5b26994ccff933ad4a68c10b5ffcf6041586a03152e4ecb25359882358800f26421453547a331890ad0cb9ad2b77cd0fe47d3afb584fce91dcd1bbba4101a779814002b2b0ee407e3ae7e804bcf9877f48ec228c441c2d72584bb98db40264e829d219a71bc768c58d8bac50c69e96cec69504b8ec0497e83a71c45dfc4bddf117546c26bd0b1d47d664dc8fad80341d9607c8784b20ec830ec9b65751a8628f98d379c0bd1e46c178eeccac65c7c0db84ae5bf4e8b239e4ae0a558ff279c470905b490d7bb97950d69b463d13f52e788aba70d344f53a6f6c0b8d91aea7c2d22b579298371dc73353b2411fed6ee77f1ed5d0a16af818fa6aa52c7926110a8b174e72d999c1c466f03e6fab723627e71622dd31aeb6e4107a201a89d074c835dc3300278aa092387e2f1daa0e2cfb19855b8057470a26171bcb224a30f60964f96c135fb8e382505fa0c302a833da71c1a82fd28116410193b72417d6751164e8465995f8e23abeb81b40e6859af462fa2f80fa021d17457dc1bd17417f81ee8ba2bde0fe8ba0be805e5870714c3761828cf75b10ea0c745c00f5457b2f18fd2eb8d83a880cbc2f12f30265174575919d174177815d172243878de22ea82b63e6c14348fb83b75635e22babe1758f761218f082d6906427e530b1cd469e41b9ace04446c4596f860737653ba3e924c774f9972cc244374cfc1b8181c97df26be487cc52a2a761a60b0e9321758f503a3c56bad5aee077dc9b03da7ea71e899f8c41d0a99ba2e0cc86ca6854258830046054690c2a52b832f9a52ed6eb5ac143c53c583932aa42dca16d18b64645603cd9b205a8ccf85efe8dc8b90501148a085d26d6973193de2e3c822ad8fbc8052af40bb797a69c1a5a73852884a916a103a7d63bff49d54290b74bea7b0e54ed3ab5cf14506ed961367f9e3342fadd0c74a9807d359046fd215b83b1332aef0ba6b2b5bbce1dd661266f0767ddecdda8dab47de30144c9b6607b506c3544c727e62f8fa30c570478ec99c74c1979beabb1ece7d0b72354ede30aee8429bb978d01b0b2fc8d1b29125b074d9bf4d792dc5aade255e0c45b8ba32f9142acd219bc82a13ff99220bf90fcc24c562f5cd373e553a8dad1f20f7559e9dbdd152b9f6d8b4d7ed0463a834b64ef09dae566d62abbbed813d97ba724e7c34b699ce53a434e0122a5f80c0cda13ec24eb4547369018860693a21b214a92cc8ed00323e5a7c25874d3b6b5fd38ef70c5ec1ff76a6c307af99ebc1168cb6b58fa8031347e40cf01cdcd91b27c8dbbf35ae78d5aa6df7b72b6f205f8a14d4ae50dfc18b7d45a909d432119de5268d6a17dc591ee7ae05c15933206ffd5084c89000a010c6b8437290166fc6f3a2c88979e063d4e8fda5bbeba2b6d0a3d5b8dabc59f482126f5b3c196b1d1a5a0f476e1c1a9b87dc4524793fe7bdfb2f4301d381988265b84c6ca5f3d7a8b71647effd8a6e37b10e496dbde07c73c064f255dd404214fa04d9d0f7945d5600a0bec689c481aa5a857a3766f4772f324cd8421a0027ce241c48d4f5bc9695a5c17203bdb801ff8ee5ad3e48a0f1046d415e8f3c31005537e1d89c6d3dd0239099d30b512c611d0686475484b88172656b7fb5d94b547617409d68826688a0dd58b942c46ca51c0570716acc192e4cbb60c941cd4c2940f06aa8780964103d0c5e7ac93f22ffa49d6354b2bd4518982e0011f6ac65e985c701bbc61ce0385fd95cf83248fe94bb69ae2c341a33010dd9b8e81bfdfd0a9525a3b771c2e6c6a16403b0cf73028344db7d5dc5741b8f2e01c1a875c18f178b9415a52039d43cf3b948987b8453376ba6fdb4371926c52154cd4586cbb60ca24de4cb82f694f59b6262b4b3ebbb8e14a6ed5f619d40261612b004a750c8eedbcd398edaad56f1ba721e82b81b690308a2fd53a3dab2a2083fdb662790baf7d61fad45f565102b722ef51eace3b9058a9c5996648ae85065cb531933d3b06639ba0141a67aa339d6fb6de68f9762b03d0869e5679f7e777f6fbda4f3620b0b879b4c54f0e6c2cef6e0f5f4a4e363991bae0856f3358e96a1f9e5f8882d7c65516dbf17bde77190df133b3199ee9be014a347bb01c64d4c7162ceb2557f02b0a4d85aefdacd2480f67ab3c971e9cf72a82d3179abd04934d616a8cb8e561584ad753469469222e04ec7c17074ef6e0fd6489a64e1059c191441a97fcf6af9114eb88086fab96eaaca0a34f3c9dad4f7e8c04931bb1fcd8aa25290330aad3936dc6741743e3cf7e81f8ee09e74ac21a485a31a1db97d280809238ecdc55d552890b18f8058112991c9dc5bb1d79907325ec032a3ffd97ffd984f3c62b3596870e296c3b1c7fd20aec8a6ba38b56515bb057424f8a1449426c270e2d9301ca81566b3220b224e9003ffcf0c30fef9bea5bcb6db3d62f5a914926d93acc0f86ceef9b26d34e29a594aefdbf0a3e21a40105accd25024c067c06a00629139f44ebeaeb2511e9111a6a6316cab444c4c25a8758724fea477cd4205c164374fd6b23b39cced542668540d3a3aa68cc90264384c05b129bf6742cad9a07714c4a63cf5a79896a8248f3783e110d9957c3020984fd727d1e6fab00619a50fdf22ff7875f2e4dd9aa596cec0745ba6e4cfbff7ef973d787de75746e965c5c5dcf8c0fe6ac495e12423c74feabf6d0281d327974d54c0fe97dd16dea4c5fc770551e901e64a8a6f3e0f2ec2078a875f3eda9baa434a3774078b61242beb95a556d80d8c178919e630c7baa45b90ed65ab697eed4e2895d04103a2c9e8ba3d3e7decbc1c5082073308d597b78753b0091c317aba26476dda0b70f02481cea28e2bd3265aec89c0d10382c46bb975aee3ae78c79037aee2c3758a66e376c085da6643c40da60cdcb92c8bdcc25939a068e14e040018e13e030018e0661c3315dceb46f18dd6b4740d66079db278d2d67dd2d8980a8c17bc1b47c769e4234978642ca6cd231457a0a73008206eb9414edb139868c1907398339fb4bebe3a5b16d8398a10d36e771b33ae82c55067dae5d780042865b4fd85b66fde8bc63489ce8c77f976a5c128be19cc5fced9e233ef94b1816abbc5c4e62a24dca604046c7aa17575d965cfc02ca5fcee75953ea8b792f183d3b9abf30eb00a40b06f14b175e83fea41617d22dccc8adcc31fbad03b205d3ffbb202e5fef2d460b9c0c9a4bc7f5f8aa1248160c4a8b5e2147080bbab98b2db81c037285d7d35f6adbdc0a8912727d7e9e438d59057577cf650f5a1871a107a1c2e7995beeb2eaed7620536864d082858ee136860e440a26d3dcea9eeff77ee2a102902898f447531b3fc6773904053b8bba5279cdb298f88477c34bfdbd2f4e30579cce24f7036982e93adad4e749754166c2af2f9ef494aa7fb1e4204b3044a991d7ee63a646204a48758c3719c81b559e79a68326cd146e2003bbf890e9295d4ce639c6f7f5ba9f347a0c138dc1d568d4cc41e8031e398a81d216b4688d14e51f24c6bafdd136f667186b7a7761ac37378461a6cbba9b3a643c5d7ac28d60b4ff95a20513792655607c5f27d74d7ce317594b713ae77c8596db28dcf0852954a9cd3f9765f1cd8d5ea41e4bda557c7f0c262f6e950b3d9ae65da405eb90cbce8c1d3f5dec7932a487ca7023178d1ca5ddb3e4c2977c6ee082714969c93c7fb7c005994555d3a2468b1e5bac6962ecb3fadccf598b76c468eb5479ddb16881ccfbd39aafb74bba3766b14b3adb2ca3cdbbd491c5a69bb13929b9fbeb628116ff93598dd3d7332c1ccfff72cb82ea15b9206430752da55d7b5c716a49e989fefed4b96bc5ae573af789cee62e861598ec14f52dbe8ab42c6bf0132556457b9fc39ecc59922e5c3752d19b8ede97e5ee9131740315976a39df9dc79c02a5a51a557a5a4e7f8c291817b3dabd6a4bc2f3a54069abb90c9efb71fd0d52a034b5d7eef442966e14a58cae9069de4c798c286eab75b93d6310f7493742a1a9edfcc266163da6050a4e683168e8e93e610bcadb63d63cb1d5c72cb89c73bd7dd509bc5ff4205d6e51647338709831881b9cb8b25d1897673db3b44d9459f89cd632e9cd156a62c133e9d37942e816cf1b99305aadce67ce8289b2c4eb7ecc5e2536bc042fd887fe379da5d193252e1d54f6a5ba1e657d2556fdb8639db445175f28c1e8c8d491496e460fde98442ff2c9b4d356765249021d5d95176391386c8e69e757e48bf90489d33bcbbab86e0cf5df78849f369d89bf98f3c3e5884483502e8ef6eccca446a03b686943b4f698d946b8c108dc5c382df76d962ae51b8b40e656363d5f52b59f921b8a784f88f8a69141c28d44b8f1d4e857b5fe743944f0e139bc20be4334ca83c918b3645fc38650c6eeb3e6d4166ba4370a81978e99f45e92f3191bc20d427c2ab46ba8a79dd2f58d412ceec93ad360231fba193704b18b96a7cdedd255d540f8e5f15be371deefbd0108e557ecc5e8df6d32660c37fe60a64f9561d6ac4ec97e30bcc97e5937f73cda7d3094b808252f7cc8f7b3697be1e5c61ed2389f2ebc746ee8012123e3635ee688b8ff461e963b7c5fbad3d892658e8f1f4338010e1c3a749c12e030e3045cb88187ec2a7fc44cf4831b7750aeafddebbc3599f4861dcedfc256e70ee69b9e34dca8035a73294f0febbb196ed001bd1fcd5493a507f522871b73581a15cd7279cd861b72f8f46396f4dbcf75fc7ed0e1461c767b3f4da5e5cf8ca11e6ec0c1cfa8f5b73242e6cd12778b9f994c62eb7e714ebcd449da4812777befcb310ba725a58a04b2bdbfe53511240e7d95a23da89333db23bc3e9d2b1defebd69d382237d3f4f130aa9dea914698cdb4702f1b3cb9cb3261c41a773c65361dbf3ca9e3b4c8fb48c26411f6e9c853a6fbb3d8c260a288459bf7ebce39afb886199344609bbaee45ae4708c748c949c307688c38498f133c0f17ec20f181829292e7918a09220a6fc137e9d0268740c929e9313e553be3134320dd53789ab82c28d3e2269814c26a0fb3f19f23931e47424260302104ea466859a79e867119990cc291ae415e7a8c20eed1d4b2359df46a688d4920ce1bf957d24606192d20f452e2976bdd82f9fc87355c4b4bff2e1b4bc60fbc346ebf1a5fbcbcaa0f098febb1ac64b454fa840f7c14adae5e2e4b4a6f464242d8202119d181bc30d903be392ce45f32d1839d64cceb646a7aeb33c983eea1e184d0722424a484a407132678c054bbade9bf2cfcac3898dc21bbfd243ac9e87f9dc00a133bbce99f3f6f9c7a39a82775d073d29e3efe459793e847d430e375f449c3840ea656d9fd9fb51c07c00c933918b3f52134662321211339e422d72d858f3f98c4e1d0fe623627f25aef91901015c0610207bdc3c2af94c1e40d67f636a9bfbe2e0b4a4b6666662622222222e2dddde1d9d5195e5613cdcc0c2fab5900364cdc60863de97535a6a55d4642427890848494b0414232c201bc007861d20674075bcdfdd7193c5c50021d3ad0c0810347480816266c6043b5c689bcddf988a35eb0864c47c65bc7dc1835df31514325634bbb4199be1ca69190909247398270488083491a5a595b37f13147f313342042689c532eade898999c81cd3bfab23cc8a4373b121272c6c40c7f68990efaa34b2d8d2321214368e38894e49894e137db906bd9b4c6840c7936b519f36655f71929998ca1cceb2e9b1c1deb5d34266230a68e9a944ca548498e90904918d08269d7246747b7e08e848484849c31018341f49e2e39d7b6ebed802700026e23073e265fd8ad4ee616ad33d3727cfc0f1e39485e70828917b6f50b79e283adbb30097eec404111882004334c30e9c262cb0712f5824ca1ae345866132e98347f8a7bba79b5b690df56ef7c9acb66f209265a48bd5849df206e447f679205b7050ff37031379860e1cdc28592f38ee94a7785b4244635b7a0f3a5e18915925342e96e29e6b4a09fc3a40ae77a49f4da5a3cef2654c03ce67569bbeb375f235a984c4157bfb090f64da4905966c9a4bc98cc629c44e1f611427f3b3cc6e950f85d93fafc10e5f1d6c913107fa2455b719393a989138c191a347847d79834e196257d42948af25171c204e486703986084d96600ed1d1eb6032bc7f923051026e7283ca08213b54960c3c0b17aaac3464d8e3e9f359fed331e51290631cb62574644e3d83d418dced27ad3332e7da0a0820c5d064dedc63aaaf889818de071d523343db2615a9800820c37065745d9a7b8e1dd323800823ddfc247399b468f88351bc664fa14663527502862fb8afba8816ade406e41786f8f1e89e466f6bec8b3d3f68901fcd5e5c4a59b97fdf0b22221f20bc380797366ad6e82ed0b60a97ee426977922e94b73e31af6ef7b24b2e58933f191ae24b8f08828bf7c557f11c175ba41605905b989d640c263c3fe8da255900b105ba5d76d3147541f72601a9859bbbeb594e2643e8171cbfe3b4c00c7406105a1cde9966cb5bf0dc7b1687a97fc9b27f4c9c0c228bb39865eaac860665c5c23571e1acfa45c877018185e1995486ddcfd932fa8acbc336a84be3594cee8ac3de28b7912646994b2bca0c35fbf4fe985996159f8c3ffdcfd2c9c89d0820ab40bfce4ddb4a55e0d2a9caf29231a62e15ae8b4691a5e2df838c0a3cb5996cb872d1dd9dc2d62cabfacdc6c79e404cb12979a2f673c6e47920a5c83b8cbae81a5e636649002105d72aab726a73753f20a3f054947a49bfbfa497446134193ea629692878b13dcc8d76397f5083022b6defe2de97c5759f485b1a9331676e4489413c51c77d1f99214827ea4f3997bef49ad00e8413e7597fda9c7e4736de44e7bfb99a3a44eb4613a8b8ff6bef38751903c944559af3ebb65de429b50104136a8686682831c825bccc622a397b324ea76c006209463bc993dd313deb2a611a9937a6af10b2734b0973fe557d165c70512d9330c9b2917184f468422389838e9734fda81693c94b082091d84a7c3f0917cf62124122d12d46abf9503d35ab1ee18d6c28a5d7bb94fd8e405bd2575dd7f4916b23ba93ff752edec8ac9711b59bc5fbe8bbd87c5ac4a6d32791d941d5e42e01518459022df2c30749892778f97da46cc9cb380989a174e2a4796a4e07b7f48e8d5038b1dc9b639688cf9a2746630dca262abf11fe9b0517cb4d144d9462e32dcb22abe5c532613a0d329a3a612f66173372503051c7f414e669cac7e514502ef1a8a6b74e9f1f62d51f58a058e2d4397cb88b5aed18fc209c9217502ae15c6f4e2a2f7e9271f61c25a7b340a104d7f5b2eecbf23e78e460c12492b9c519a9362e32ee1b502451cb632f99ea9f128947f6d55d90d516f43c72eca040a20b17cc8450291f936c2424c4494474e8c8c106e511694e2f7706b9bdd9ec298ed04b676cdb7eb94f6c36a034e29f1979117912f14122c2e3477ef0f81f3f8e8e54020a234c6e2bbbdfa32566d380b208447acb65d29ba20893689fd30e07709cb1011c6770600306d8052511ccb61852475f50ea820893d05f2f6649a8a7cd0ed18bfecbfef2b29c678a216af58f2f4b225a83528873e38be9f71cceffd6018510080fa3b4787a4cc95b47444a4e091a36a00ca25cd12ba3e5fd165d620145107a790c3ff750b62a06c2b0a165cf97590ccf3020103dfae3b3fe639a11e50fbe959ad32cf967963f3f3cfabfb5e5f374e9ae08394440e9c3e69efe614a88281d52f8c08e4cb141ed6cc487943da05a4d0b7ea5ce3aaf06450f6ea7ffad8b56fdcf943c6cf15996735bce8b4606143ca43d2de766831e91b4807207d35c5cdbb346eeac23c7888b50ec7075bcd3496bcafc241d01a50e6516cbcdfe353f1f850ec697dc2d53b5e6fdfc0b2873f063527a5bf729734714392c6c2ecdf2060f7722e6000970acb18134462871f033467eb4ee2321213bd8f13f54101272c6044ace04d0302307231438bcdb318bd6c91c4e5f464242ced002e50d8ad61f0b61b70e12111f28a0b801d5968d2dc91c1650da60dab4a9e739a65dd9d9c0bf9b99878d1b5263286ba84f436731b3c7c63e1550d490d2593bc43784aaf623212169b063b49dd01fbfcc743e48444c404103e7f1b76f7309a532cb1a66fc784339439541cf73870e5a33e63801c50cac49fdd4234688598f52865b5fcccd9f346639cb2321216a90c1a07274f7b718f64b226750c6f06655cd82cb62d599272444041431a45a2eda93165bdce39430183289c6bd9456224c0a1852b6a91b1ac6ac3e3701e50bb6cc796e9b1e3d75871a6950bc808fb0f29cab419dd249c30ca774a11cb57761e19276d8d53083c2857357368b10325f9da60d20bc09fc6910127202ca16ceb2bb986ab32bea3115285ac0c34b4d791e35fd414a165099393ba6dc2bd33ea060413f97d6359f8c7a512e1aa841b9425a52cbd060f5a57ef4397caca186193fda6001094cf0397cac1112b206c50ac853a19e5df72450aac05faabee80f76d51b1f142a2c8e588b0fb1d2ae2b650a6b778a1a39a31416d4c6dc49262be5f389425e5ec2a5112e6e2128a8a9338e8c317ae79a2774a22f2fade553ec74025742fd87158dd284bcd328dd394d6142d531f345e83c650908cb6cf1c6e518630a294ac8fd4bdb5d696f8731199a27f5f31d46c437f6f13f72dc0a70d80accf81f2af8c20419a88f4faa6468ec9793c7c0450d99c5a039136368f27d3dcbad57a2622c87691525c47764dc46d0d0354c88510619edc52c87518b779bc593263ccb52c2c874b2307dc24a93601cecc5b3ad12253ab4111fef031fe4f0f1630d335e3001c63e3ace73d7c7206526413af9052ac49586cfe1ee9ef9e28c17d4e999975eb072e5eb995e70d3332fd64ff9fdfd1ed59c33d9052ec8f19897622d2e618384240d324c7461ce27ec5b5b965c38761f43d73ab838d397894bd23545796ef1e7cb213642bb2c7ede1676d6d27d9fb3a57c5b8bdb55b3e47d967b765aa4c358266d7dfaa2445e98cc6271718fa67efb5d384d64d1fac9d2b8d0ae36eac82416fd79baa567e9cfb58a4c60e18bda6d5619ddc1e415e7cec5270fbfd943e40a2bc72e46467184c44748c8199356642f9aac7c392ddc092b906f2234b6705ad0325985ae556eebb22c42665c159e1e79a1977932e9682a0efe72ce7d9d4a3f0f158b66f91de72b3b1bff3dd2989c62117a36abadcee5655394253e7d4e67c954b89422a1ff368359e9b0a523c2af000813522c07d917b7e7c597fb46913c21b39c2a84cf6e968928fafd50b21f73cb6ba14928909e398d283141e177bc2e9d45d536f9f209637d37271d3c6534f784c15f52d7f4d149272ea50521f48e7aa94c8813bd8bf84f8d6656a11529c164136b12e27afb254fe52f4c34c1b67c806de936e70e6d2ff7a7c62413c6c7d01c235fcca26b134c28bfc9b4b46c4eddda2596bf5a3619c494d2619c5862795f722b0f7aa5e3598936838ea21c223c48900ad030a1447d99b9c2141c30e581320fdcd54d60031320828e1f233ec8c1c303f581dd0f1806fc47491b3e08100022b4071200801f256dc4600001781f9c367cc0e3e83880004a7cbcb781487cf440c00c00608032a870d01119d75d4bfd3d76f814fe1237d15b15ebbb8d4801375172ee74b96fd2b932a2d0d99556e6fcd1ea90901dbfc3ca80428f1dfe04143940194ef8f1253b7e4701ca6802e6f8a163a4e4888820a00c26608e1f3e464a74888820a08c25608e1f8864471b22220828430998e3471072a0364444105049c66184cd9f7bcc4c423ec2676d8484ec781f2241c88144907f8f9290901f3f74e468a3457ca8514106117af88edf5180ca317cc1330beb7a3296a88da1697ddfd9c79c76b3c550344b2d7e0eed4c621163f9e5d813f5a2be0797ca30d2625c53273de62c654b45188c9f0919728495603467b979c5b320ab72602cfb78d233c246c9fc567e91cfc9cb597041def6eb8b6477d0d7a3e99167e3ac11125252e90532bac9cd631b731a155e94e72efb594c9f4dfe955d24d37fa4a9cc155db8419acc39d4bca8f9557291f0da74a73ae20293a7ef5ab04b7b29bf85f192be85e73e9d73638b4e9b6892315afe52ba5aa076f4aeefa588d4245a78ea434bbefcfe95526516bd99eacbd22999d118597c7df2c48c7c94fb5c2516eb7ccbb29edc20a3a52ab04879e651a36622b324bf825f751fddd9e58d39c715579c0c2d7ee5cbb2eaad58dfbe53a977b89441ac40a67a9b329973d08d5791ec9a7639e6ec963c1555602f086d51abb72d651f9554a473c7b8a5366a0a6b4105f6529e6cc83ae11e7441e51499e77839e76a69fad21459c76ce6a4f13fcbe152e43dee9fef7b33b669460a2f5f129ee44b762f8d43a88ca2912e1f5336d73e5e44f18750b52e96cc41f6178a93cdbc942ea7d0ec3f280edab298d262ca537d7da2f2cd193fbaf7715e4052f104325d792697e51d954e9c52949c4e15a6fd5f2a9cc873d2325332b9b469af4d984dd67feca05e76ebd0a0a28905a5d9f9836ffbe92a9970cf9392a92a73a3498407090f91921c212125a860c2b9d13fb79a765b8ceb12c774375aba644c3ab5154b2cb89c7fedc375ec0cafa052095ff6d17236f5551f1f4a14e2c43ba7163db6ef49983a2df475ce9cc17d4968fd9e7ab27564341a89e4eaa70eda29eb326e63041548643fe2f3ac8b3d022554cb348b498e8c2d8eb03cdeb35c5dc9d4551a717a71f4cb3e5a369b5341851177aa3b25ce65c944c7adb208ff4cbb9aa7332d8ba914541481fedc532de6f1ee3e3a4650494432e9c9fcab19ef3df728a820a2302d083f1d59e510397aa051a28384e40515a818a22a8520493c72e8d0714ac0810a214c313ace7a6b964aa483d04045105be812d3d06420bed2273b9950ebacbe0208911c3dd078c1042a7f701e242d8040c50f12a8f4a18408cf06052a7cc8d1030d342850d98356f470814a1e402a7878c4b88c58cb974bfc77b083032a7510c9d1038def43824a850e1aa8cc41842b724039447e7c09032a7128f91c397aa091820854e06081ca1b3ea5f14308a1054d7999d1a324004ba8b8e1a083fc2c95b02b6d6040850d19a8ac61d974d334465b0d0ea8a44101153440a07286d477c593f08f32f79b615229432221f1d163070b2a1532fcf812911c3dd02042fa2741199531945111c348c919a940250c16a8806103952f94fc0f92203ca0e2852e70610b24a901152d94fce0f141f82ce0a860e1141d7f1b83e79a50457824911d25470822ffe3f8f851d221a85c0102152b542103152a60a032050d54a4d0e937cfb9b74799c674508942050a253dda20f1e1039108549e4092c6022a4ec8d1030d1fcf860f921a50a0d2845fa30315265496f0657e8c174b7ef4fd2a4ae0dfa57ec9c7d584d2524249c60428c87000e518a9797cd32e0b19b227c28f1c3c4872d081620c9107508ac1821b1462a825cc3fc6ff472b9d1191911f3984d0e39153862152a108030dba34b89e69393636032518f88fae6d79c1e7e4c48693e820011928c000a1fc2201145f6c9fe388df87bd30c712d5fdc1c39c87474242ce488317e95675dcd3fe9341b50b3cbf9ecaa05db42d7d902411f4226fa0e8229df4c465b666158d29b94035c9cb82787f8817a5e04293d7a7ea749dfed419492384728bfce5dc1a39996ba33e1212d2860bce50c30c3302a0058a2d4cca36ece343427cfc1128b5a8e56a57d6ab935f86428bffb43dd6aa7bfabccde2b13029227ed373e865818c41dfca983ef17bfda0c4e2fb64bfa1ebcee56758a073d033a7429ba6e9f4a0bcc296936bcb15236a2e4a71452febf7aec70da515f8a80f17db47467d8f150bbafaae3a1a1f3a4659852afed9d49e669eac7e4051c59270a925cdd4f24952a0a4c274418dda4b6163291a0909c10105157dbdaaa89abf23c70f2d504ef16f52f3cf7656a7431e24223dda10f93184e7413185f2616ee3868599664b7165106f335a926ea7d3030a2916b386baf4224f76c8e080328aef5ccd25f925ecc5a28802d92a7fa9e4a81825a58402dd72c9d5e8ab0514502443edab68cab01b84289f3073cc3d457d062dea87f2a8c3283992a2288a811806411042e392e663114830503c240f0764b170441ef0f50313808087e260a938188d44e3380aa328866120886118866110068308428a3124b1eafb49a27da1973d346984a8c8cbac8c5dbd53cf9eacde2d1dfbf4c20aeaba26e09aca67a6fc8452391574f75d215aa27ffb4153513f82428cbf0efa59ea98455da1da3ce564852b641a4691843c5d7fae1a3158b765fcb1e96cbd3eca2eab304e0c82a9908d0575eec0d6c86f4bb449178d0527c6e21d730607902e5420141c95a097c2e8a33f05997c6be5b2664e92f63461d5b6d472d4f8b88c2181489c807d4080710c1464225cc0c2ec2081cdb4419facea5037c53e5e453756ed49fd2b753d0c1db143533509024095b788ee1cf1a73426d4bde87aa1fded9e2c5ee525815a7160e94d9511f0d06da68e5590483404a10e6665b3ef5c0b3d84471d6aca2fd82c8629bef4536128b22b2175ab9b15d5ab3da22193d46378e4c9391fd37ff1be99e51d3dc8b265d840f97e4c2e1f1d081cf6acf70f38cf37b97e84e8d15070e555856089c5edc4cc755f25e4cafef4455f4f896828a0e54bea5aaa37c9086d92e569192ed1e454053754f468c41d0f89eee764fe2964dc7e79300c693772d2bf07674ff6346a0cd6584d56341f0bebc1e36cf3d97af05a6160bb6c76996b28ee920e48dcee74a34233feb642e0dd0d172302d8af4629c4878eb209d18c4a48f2483179a4f906cb796d6e689149e74796e0801411bd226a1228d6481b036e1ada2d474894bb51b37b306f1ef332aefeeb5a8b3388f2f3210b673619c9db129d53cf9d69cf5176049e1ef381bc3801a42827a74258c09a9323b448ac5a60ad20823ae4e7a830e03b56cf2fcb1b1b47f82327c05b5f6566cc13c9ebde5895258096a1e43bbfc7be10b7ce34ad7958a76f2310b84df4e8692bc4ef5953be465caa566c957eddbabc46f889a964fc61b16b979746db1687a2e55555a5735d2f35411cd9e4944d7ef473911f7ee4cb3456b76edc376b728b8c1edad9c38fcb80352bd87a22932c250d88c1ea87747d7162f31cf12f343c7859bffc30bb3e5c58154cafc1c44503462cb5512d23468ecbb122ec2226702689938103fc22a299b465b62e8729dc4aef74beea139647b06f96282918ac17e1e4b9607c5e84235e848f6db6c5d50f7891a870189c445e92bb888368300abb881314a8d89646085dd23b60e3db954e42f95bf18eaf518424a9409b44ab94a8b3daf74362d6b7d4fb7741e813690925f4216e25153eb5ecceb68284871364eb409045e2d9f4af3c02ad37d61de1543e908f39d655e4e42f1ef9f2664168174037794840786ad4f220ec968a98d45b579a26e0b7b4e920ac4446d6395341cd388f44796a3c457c009b1d89f05696ab7c1673531c9c09602f8e78ec429c54f01748cbc937f0e8131cd0008dbfc310ca91274939d55b95e11a3fdfc1b3548efe39964ec4bf6393b5d6b6b430f2ae79c1f16cf3d5a46b0e231404087b50fc8e9c33bfc6f6cf3b9827ef7fd98636ec54714331db39bccc4b6fb53d32faf71c90b9dd07cced9c5db66ce0718d1996314762b27977725c826fc0fbd439e4a22ae226c3ac5f3e69d75458dffc47ce7fc40b69f03fd94d39aae70075d6fc2706d3dac80db3f424daae0e84770ebab7cab4d42674507137987b2e577705df7feaae9deec0c7bb0e5004187d4ce08ab7d19a685bbffce9a7387bb20594081900b4c3a4670bc8d623314e07a097e57c02f0306e001cc285d714a9ec27a6d4cde6880c962c39a15cd2e1515f16b8143d7be702ee31d7a920684807df1c9901eb667a30f9dae4b1d51a9573354e1e6708267c5768ae8141c25179c8052ee4ddc074d824e8a9184ab7e58ca5cd847691b0162b909eb38f6b034ee81e42eff39ac542b23cd997f7003152a4763fbead60df39e27f51ccae51e053667c0c1119fbabdf66a0bbc618a063b2a74b485395fd215ab02287a22390d17479d0811166c4303c8a0f55437ffd3298587827291fb960e8c84524eec6b1e67800d1a761ea475aa76d76cf7909c91a266f77074f32b99ead4e8219e6210c8adb313a394233baeb496451e14a6cf056b4cfb08c60a16b3016971f4f2a22a75652098e28645601f890af469f1cf1235f8d7359abdfa8bda57fade5686cfe0c73b7c9f0c9d1ba1e285f6ba0fe24ea7fb058073a141c61dd8597df6a0cfe32d0b1c6d007c9f1b6ee0d31e0e3934dea2c2eca4654d44ca3e23829672eb9bdf942694544fd260ffbfe0c56634eb7aa38801562db6d5a2f194f7a85656788368f9075630a1b737206c3cbc4f4dbf7849f4dccea098ba7173e42fb5dc3fee34f53eac06ff86a4e97536cc0e56db5933b0999c873182a290999159e9f9625d82f68445c5911a1868bd1070efad80f7a05511ef8a9034ca065d0787b53fc46893184d634427bac52d60d0dfea397f215b5da9f883a7e3c6f7e5972ea64a183795d84aa60baaa98235c9156ac052aa011163868dffc190d24abcd5fda4fce9ae2d369f3b4ee798cfa245bbd38a7a0ebad19efe149277e9ecf55aeeeca8643026fdb0054d49be6880934d3416f0d6dbe133633a5f42bc45d72f230ab4ca398003d2d46764f5136e82dd60c5b957b8bce503b45e63ca9b9f90bb39dbeb18578a8944807a3aede276c1c459603f48039b9db5d1123ceaa5d8f43bc6004d4cc4ef2cc6e30f15e594059566d9f56135e839939cc679c6837d3c6a1055f61223e223f51959605720bd707c1ff955c65a431318fd270be2fe4dbbe4cb1a8b39ea46f7d4571457ec017018b6e107fd5bd0db277e52c129f7538a470d1bfc2ecb6ef278a7556fd17120089b23f799fc640cd0381062cfb986a931193064a137f358e17a7a51a51ed798c25e86bd9c2e8bd8af12aeb500c92f89957752c9285270437c4a435f0c6cd2e115ecde2085e940fe80a620c64580accb0a3612e3b299f778a934f1161a72f4cf4a814cdfe7c191242806305caeb53472064d7a19c42547d8a21ef3ef23d8071b8015ebb1ce0355ae86ac87d33409811380b10548854d690d378c645d621ea517699ac90e01a0cb5810c17441ef16ee4060f5595c371dead3268ec2b4ce92bec592528cafaf8322b5d8c70109e2420cc175eb13e04586d904848ac252e78e562f9340c55befe441f61387110cbddbff8793908123da57e04ceddf9c9afbc102d9c47ae6da41928ab5cd455bb0585ae2798ad9b0a926639c4cd6ebe45691363900e1c28cdff1854672ecc32aeb0200ab21991a12dcb08fda1834a0dce86893ef74349b679f45cf5426216b6b04c8a11e9259a419cc91a556051d267fc0b8e029c7a64823c2903f388f8cb01ce72a399d94b0a8972cfe0cbc4a063487c4749b965814105da102f238c4969daf8398055cec5dd8105f2dadc148d185636c8449dd5ec670a7816cbf72b957a4bc5ef3aba557606d03137fa6accea7e629a43811a5433e7dd687626a7d2e958c9c92536ae0c55df2530b337f97f81f1b95cb8e8eb92043545418552b52a5a2987546800c87ed779e8f1cfb184deecee253f6b201630544f97c126082adf5322109b146f0abd7c6e5b69386ab10624295cb8c230e9ff4bef66af25e3b764ba61f1a7990e3660c639026f08a64899c5f140742c0b7a673bc19aceab9aa6e83a8b35ecb2b0730982c9b125a3e6d5c10cf3527273ab4035236d0f7d27cf28f4916029f85e6587123bd36cbf190945f874bfe08ffbcba42c8e1e676f1fc519fece3b5085c70f772ba9a28bd46233aa837d872283fa556cdc3dfc11f9d036c9008a84589943158c722e9865dbd2d8f6eeded7df6fcab7e3a960b43ae43d73ccd9d76b7c5333cd6d9b6b6882a3e1d810140b7366947a8d25eba223014f2526dd3026112cc0d6960392aa336ce0e15c5b715615b6f9e98a35a560e9abb22efea742441e72ac3513d662e4d70c422ecef77889bfe13e8743363d1b78c5b07201ea9304f7d50f4d10ba8c3fd9677fd07a17a3afe1a57632581cae94a175a6afc2cb37760f9effa2edefe821a9d33cd3c360fa8fdde22f84b2448f9aff0ddbba10af44247a5d03740ce922388f2312c2e625693a3eae791d4db965824fa8444c045ce1fd81596575e89b3109185ed488d4fc3ba6f6c1bc863f7ef6aacdc3df0d08d8fff0f97799a0ed87b090409a438328da038851e240ac782a4216b25c76454d8593fb4318f918a19bdb22ac9bf9ae69e32fd2dbac4e7e680245c0d1fd57280dd0129e44636ad47fa608ea36640841040c11a6094502554e14cbd81088b02f0c2124a3ea4a2a8834485a5278ed9fc3fbdab086de5cff4c01cc04bce3b4a8352621047873f917017cccea354008504e637af584b043caaa9c16b8f58b2e8f7c2df7947f8ab1625e1c8ea91544c1771aa7e41d8ab4773f1222503da7022ed718756c4e91dba1f5c56c61a7393f15169080d735665242889480acadcd87297c98354ea190a1fb616683aa6262905235e62984df8456b8752ea2f53809ca9cf7cfb41ad5c48b3060d03c999f127ee5d031b276719854a4ba59828d257811009e4d7bb9706438925148d6c3bb18a3be76ad84086faaf3a30a57b363ce2a487377e154a4bdf26cdf1b41a7289dc66335e3ee96ad3f7cec93352707e0f9c60f94e088c1250335c8d87de6a0dbfa651604786061df244133d8f97ccdc2bb5baa890a62151b8867dd789d798733b869c34afdc6737c17c75c237b4a0bfee675c460379e085e27186150dfe06132ad12f167e861a371b605a47ce5f59d8feaf73fb85b71df3b8810f7943aa48932a59dffdfaddc819cebf63474e70dca7ee884cb758fca6018b93e86ce6e1b5a6d923ee7d6025eb3a8d7ea5c073d114000f9d52555b6c5e5d1e7bd419c11dc34e901becdac4b1a6acc95800e114700d3a481c91a757fed1f42861feae7dd0ec661e02c0358e48d60bccc255b66624a17496067429abd65911e805270382f72d87396e8196482d11990c93eb24b6f8038538cf8c8171ffbeed0ca1a794b34c02c4c3e5d083f2ab3f7bc9e9465cefc4b7ced6b79b17e2174a7fabaeb8d556da6ebc392109879e1fb5e78eb9c598740db265c0e0265ea0f4e7090fb4103fc172a01e67a61f1a2e1d62c23f2662f1bc70fe9077b73204a005db00f2268e3c609f2bb1585dccbecd5ad85e3705ee12cb360e1d05afe6af96e69b06c67980dcdb85ee011fcafbeccae489a1764ffe09cc2dcb77df70f48d70dc046248aa679fe2b11f969ba3755e04b7f48ed6af84bfd4f11cc3c236b7c2dae0851eab7c879eef5b2977d80c6803fa6652480d2037e2f5f0189b8fdcdfb9a73c198e40b0b02953ba7a06cb3ca7ff8003582a7de913f9c4779ea99924398b18d83304a2d7e2f7d74f21f6bb8e0daa537556f3615977843d50513db3cbbbe9f1ee6f59e7c6de4f68fb8686e2590f36684cee982615df13e49788094a0fc214c04812069aa6827af3a5a0fe8e9f156662a583fb727207a4eb8ab4510449fe050ef5306a001189f44819124f60259e32bfadb8be3ab5bd6ef3cd78ec8e032ea0b27c51f1860c912edf9cfe4c217dcb95aa7253cd0627dc2ca77d7eacf1a00c1bea64549f0be064b44fc300a32620ea4f5fc9f3e5baa60770986c11c8b44f2afeffc60b582c75ce54131d657f57a2d40745409375dde8a4c5282a46041611ed6c06f5938f763b1a2857611c5d22d1d878d9e376b108c259841b67dd1359875050e376ef45db12cc116d4a412ee8068bb8440245962feb2b4ec100f3df3401b47765bd21ff281db26bfb33c4c456e4df1eb8dc5bd749b3dbc2dfa195d6fc9ace613b9b33adaad8f81887ac8aabc959b53ef3f74ab844baf5093f1ec60958494d49aeb8c515fc04252f10be54a114c1e3ce97565272acdf31924bf40a9302e347c1040764713dc68acfed112eec05f5dc7b3373374863e3a14ede00f96e30fc513dba31f5baa0d8045b45872b45001ea00b428621d57d96ebb161e2e0d0e7cea05ab7a0f405cb85893fe1658df6dd870a2ae73d097d8fe6f9a90eeb65647fd60ef377e5128e82620f4365efbb3310446ee5d316efd61936e95fae1b63c7f86f2abf59afeadb4b21fe5969c276c4746f64430ae4138fd60076f097f485c70e6bf9251c03adce7e3e0954446a1f3919788682f577331bcf0a8e68225a10e906752aa4638dcee7192df1bcde3101f91fcf06f9dd84c0819ad2962da40528cda52b6ff76923cebc6606f14f33ea38409bc86f85d1721b6adc434a1c078f447a76de77fc42b1fc96f605264b1f371acd9822424061b098758c6af12a84cac4267f1f99e9d0acbcbb76da204c9386909ea48003562eba826e1b36c24a5aae3252015e6aedbe149c8db588b2556846fd76275a70ab17530c0c9e88b0bca2514134f3339450f78934cf29456a3959093aa2fd4ac2363f8e292a2164e3034979f1d3f4558f177dc4239945d62482cba64d9eb61928e779df8507c1b09f2cdb17f918fdec45b08db3a8d12a253a4ae95614251e42f7a62594a29a0bd6a1bdb04c0a5e224cb76f2d54eb968242aad6dea6f2b4bd65c952c568e2b40c4da73a1ae64684a29cf6a94ce7fc2c65146cd6ac490f9a658bc7bfd3076b411a600166d63b6905cdee4c96a9294194e3c8b5a98d033a330fc76d8921ef172c9a474595a41182d985326a72b3cbf3179bd3fbd170043a24fbbae0aa895ed072092c03e702ba1cda61fb50213d6daef080211f0f5dd9a04fdefa425ad3686a5bfed5edfbb1be1f3264e13cef13381c523eca79a9837471fe0c2e67c0bd818528b372ec8e7a67567ed71d8e0420ffbcfb36a532414210da16379b41ba1c3148d11e5628f22c4c6b6f7214078558dfdae50925cf2710d59e931cb8480d845616392ea56b82d905159aa6d96d12fc1dad47ff773ef23c2fddc51fd4aab119a2d71c98c8656da373d07a1fddd4156e6471aa354c5dda0dada94c467e3dcb86d1ae894315b1e8af92cf1173580b43131c8cf62c6c5d413f3281ca412216c1a10dc52a94ed84bab64245fbebacc6a085bc090837311a0a6632984d495d4fa3d1f61763ea5649e56ddb7c11597ff329d24257b18cf3263ea3008f1952007c097cbc72578b7cc9a9d41b3783075e32eddededace9004cb9398b6988eaf85dd65e5a6b4e418f5ba30da7791f724af4df384a001ec3e153c471749b1d28d7c2120d0eebaac49f8cd7072bbe1629dd08066703051f16b992e26ce18a6184c305e3137e701bb81651147a94f415b6d8ca076cc99594cdb2ec13e6e11b8f886dbf666052e0111c9d704a4c1259fdb966e6c4073d151ab3435ee01ebda510180a9e4b3aeb7eebd22ab077809db7b81682b515628d1b816965805ce28d70cb472054ea675f801f8225f0706687e765cf734454205dbce519b9dd35e49fb073bde5eb99419fade5d21dc013a5b3fe06e191ec6838f3fb2588a1cd273f578a84bd92fcdbe8f82002ea13dce646b318ac13b2d8e58c3385d955455baec9f31043fc49a711a39d4b8a48e58c9abd7a82dc539fa948a82b585eb470b70859ad41c09096887c92d0a2afa0db7be1646a70c3383ccc43b5aa645eef272254bc503d78108e300f65ed31522259812de385559728723083180ae14008486d2fda14097ee82fc677e24eb04b22153d95b00fb913e94987207ba8684dc27eaf0857a44b5404a72894aa8d9a916b3cbb1719826533dc2ac95fb954a42b955ae9b4b4e8da0537813a1025b1a0f56cb307e62d901cf9de7e011fd2073994d8a7ca38f9855a68b10e080972ac21e18c3113cee85167c396e7cdfac6461c0dc6e9e4924f15c29f0abb6bcc3246154819cda2fe021deeee2bc602bb3822b4d07653ae74e5452b9f0809bc6928a056ee770f68ddb1d90716b5727c6d494717449282ddfa2e6ece29595ee8ad8c6b734b910b7f705696a49ea3a45b619a5fa2504261d6687191c7b653d341a8cdfc93d3edbfe9f280eb4efac03f31b5c32c446878af87090379026995e8d84acc0ca8d0528386efac665e7b84a2673e10aee1d53596f29b66b87b2f30389f71d2172a76505600836c8f9ee078cf713dfd7b243e622a9c345c7eba831792c38fa320ce8c92b94788a8f78788716a9945dfacfa1016745ad4640fa2e113f5d549e4b6daf144f3aff0a5a9b5acfe3b8538bf80e927fb8598a4662ba934af1d21aee63630d493de60d9fb72f6133606fd52f53ea46a43cfebf92e04e457f0f6b365932af0c4ac5e2bd1c211a9d62741fa5ca8a67dd24dc30ec35f938885f8b1d8156e99b269b36a669f0d92a6192ce10cb2679dad4d0a60a9eba5954d8c4fda43f29d98fdb40fb34b6bf051d6577165b6c5aacdfcad309caf57195bcc874312c4aac934bf6eb017d47520421ba9edfe308f75cc0a171053efa8af8d199b0108666611c2a869932cf20e91df5bd89f979573314dbe072f489dbedada5f30ab231998ba9c9d16733e414663be0617d701", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x3a6772616e6470615f617574686f726974696573": "0x010488dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee0100000000000000", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3db7a24cfdc9de785974746c14a99df94e7b9012096b41c4eb3aaf947f6ea429": "0x0300", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x0400000000abc3f086f5ac20eaab792c75933b2e196307835a61a955be82aa63bc0ff9617a0600000004d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000000000000000000000000000000000000000100000000000000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x4da2c41eaffa8e1a791c5d65beeefd1f5762b52ec4f696c1235b20491a567f8500000000": "0x00", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x5f27b51b5ec208ee9cb25b55d8728243308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x5f27b51b5ec208ee9cb25b55d87282434e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca0b6a45321efae92aea15e0740ec7afe7": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedca138e71612491192d68deab7e6f563fe1": "0x01000000", + "0x5f3e4907f716ac89b6347d15ececedca28dccb559b95c40168a1b2696581b5a7": "0x00000000000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca308ce9615de0775a82f8a94dc3d285a1": "0x06", + "0x5f3e4907f716ac89b6347d15ececedca3ed14b45ed20d054f05e37e2542cfe70e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0x5f3e4907f716ac89b6347d15ececedca422adb579f1dbf4f3886c5cfa3bb8cc4de1e86a9a8c739864cf3cc5ec2bea59fd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f0b00407a10f35a0b00407a10f35a0000", + "0x5f3e4907f716ac89b6347d15ececedca42982b9d6c7acc99faa9094c912372c2b4def25cfda6ef3a00000000e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x0b00407a10f35a0b00407a10f35a00", + "0x5f3e4907f716ac89b6347d15ececedca487df464e44a534ba6b0cbb32407b587": "0x0000000000", + "0x5f3e4907f716ac89b6347d15ececedca4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca5579297f4dfb9609e7e4c2ebab9ce40a": "0x04be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0x5f3e4907f716ac89b6347d15ececedca666fdcbb473985b3ac933d13f4acff8d": "0x00000000000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedca682db92dde20a10d96d00ff0e9e221c0b4def25cfda6ef3a00000000e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca6ddc7809c6da9bb6093ee22e0fda4ba8": "0x01000000", + "0x5f3e4907f716ac89b6347d15ececedca88dcde934c658227ee1dfafcd6e16903e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x0000", + "0x5f3e4907f716ac89b6347d15ececedca8bde0a0ea8864605e3b68ed9cb2da01bb4def25cfda6ef3a00000000e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x0b00407a10f35a0b00407a10f35a00", + "0x5f3e4907f716ac89b6347d15ececedca9220e172bed316605f73f1ff7b4ade98e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x00", + "0x5f3e4907f716ac89b6347d15ececedcaa141c4fe67c2d11f4a10c6aca7a79a04b4def25cfda6ef3a00000000": "0x00407a10f35a00000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaad811cd65a470ddc5f1d628ff0550982b4def25cfda6ef3a00000000": "0x00000000", + "0x5f3e4907f716ac89b6347d15ececedcab49a2738eeb30896aacb8b3fb46471bd": "0x01000000", + "0x5f3e4907f716ac89b6347d15ececedcac0d39ff577af2cc6b67ac3641fa9c4e7": "0x01000000", + "0x5f3e4907f716ac89b6347d15ececedcac29a0310e1bb45d20cace77ccb62c97d": "0x00e1f505", + "0x5f3e4907f716ac89b6347d15ececedcaea07de2b8f010516dca3f7ef52f7ac5a": "0x040000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaed441ceb81326c56263efbb60c95c2e4": "0x00000000000000000000000000000000", + "0x5f3e4907f716ac89b6347d15ececedcaf7dad0317324aecae8744b87fc95f2f3": "0x00", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6cf4040bbce30824850f1a4823d8c65f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x7474449cca95dc5d0c00e71735a6d17d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x74dd702da46f77d7acf77f5a48d4af7d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x74dd702da46f77d7acf77f5a48d4af7d62556a85fcb7c61b2c6c750924846b15e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f0000e7f10262de5b000000407a10f35a0000", + "0x74dd702da46f77d7acf77f5a48d4af7d7a6dc62e324093ba1331bf49fdb2f24a": "0x01000000", + "0x74dd702da46f77d7acf77f5a48d4af7de5c03730c8f59f00941607850b6633d8dec683721ac60452e7f10262de5b0000": "0x01be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f01be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0x7a6d38deaa01cb6e76ee69889f1696272be9a4e88368a2188d2b9100a9f3cd43": "0x00000000000000000000000000000000", + "0x7a6d38deaa01cb6e76ee69889f16962730256ea2c545a3e5e3744665ffb2ed28": "0x00020000", + "0x7a6d38deaa01cb6e76ee69889f1696273f0d64e1907361c689834a9c1cb0fbe0": "0x20000000", + "0x7a6d38deaa01cb6e76ee69889f16962749d67997de33812a1cc37310f765b82e": "0x00000000000000000000000000000000", + "0x7a6d38deaa01cb6e76ee69889f1696274e7b9012096b41c4eb3aaf947f6ea429": "0x0300", + "0x7a6d38deaa01cb6e76ee69889f169627ba93302f3b868c50785e6ade45c6a1d8": "0x10000000", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0xa2ce73642c549ae79c14f0a671cf45f94e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x0400000000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x04d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc632a5935f6edc617ae178fef9eb1e211fbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x047374616b696e672000407a10f35a0000000000000000000002", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000b0d86b9088a60000000000000000", + "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1949f4993f016e2d2f8e5f43be7bb259486": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3e535263148daaf49be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f": "0x88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0eed43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19504a8e42157609c6c86173676e80d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195066b8d48da86b869b6261626580d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195079b38849014a07307061726180d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950c9b0c13125732d276175646980d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed43a85541921049696d6f6e80d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5537bdb2a1f626b6772616e8088dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee": "0xbe5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x04be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x04be5ddb1579b72e84524fc29e78609e3caf42e85aa118ebfe0b0ad404b5bdd25f88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0eed43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27dd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd8f314b7f4e6b095f0f8ee4656a448254e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xede8e4fdc3c8b556f0ce2f77fc2575e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf5a4963e4efb097983d7a693b0c1ee454e7b9012096b41c4eb3aaf947f6ea429": "0x0000" + }, + "childrenDefault": {} + } + } +} \ No newline at end of file diff --git a/cmd/gossamer/test_inputs/test-key.key b/cmd/gossamer/commands/test_inputs/test-key.key similarity index 100% rename from cmd/gossamer/test_inputs/test-key.key rename to cmd/gossamer/commands/test_inputs/test-key.key diff --git a/cmd/gossamer/commands/utils.go b/cmd/gossamer/commands/utils.go new file mode 100644 index 0000000000..a06ccdf94f --- /dev/null +++ b/cmd/gossamer/commands/utils.go @@ -0,0 +1,483 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + "os" + "path/filepath" + "reflect" + "strconv" + "strings" + "syscall" + "time" + + "github.com/spf13/cobra" + + "github.com/ChainSafe/gossamer/chain/kusama" + "github.com/ChainSafe/gossamer/chain/polkadot" + "github.com/ChainSafe/gossamer/chain/westend" + westenddev "github.com/ChainSafe/gossamer/chain/westend-dev" + westendlocal "github.com/ChainSafe/gossamer/chain/westend-local" + gssmros "github.com/ChainSafe/gossamer/lib/os" + + "github.com/ChainSafe/gossamer/lib/genesis" + + terminal "golang.org/x/term" + + cfg "github.com/ChainSafe/gossamer/config" + + "github.com/ChainSafe/gossamer/lib/common" + "github.com/ChainSafe/gossamer/lib/keystore" + "github.com/ChainSafe/gossamer/lib/utils" + + "github.com/spf13/viper" +) + +// addStringFlagBindViper adds a string flag to the given command and binds it to the given viper name +func addStringFlagBindViper(cmd *cobra.Command, + name, + defaultValue, + usage, + viperBindName string, +) error { + cmd.PersistentFlags().String(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addIntFlagBindViper adds an int flag to the given command and binds it to the given viper name +func addIntFlagBindViper( + cmd *cobra.Command, + name string, + defaultValue int, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Int(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addBoolFlagBindViper adds a bool flag to the given command and binds it to the given viper name +func addBoolFlagBindViper( + cmd *cobra.Command, + name string, + defaultValue bool, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Bool(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addUintFlagBindViper adds a uint flag to the given command and binds it to the given viper name +func addUintFlagBindViper( + cmd *cobra.Command, + name string, + defaultValue uint, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Uint(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addUint32FlagBindViper adds a uint32 flag to the given command and binds it to the given viper name +func addUint32FlagBindViper( + cmd *cobra.Command, + name string, + defaultValue uint32, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Uint32(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addUint16FlagBindViper adds a uint16 flag to the given command and binds it to the given viper name +func addUint16FlagBindViper( + cmd *cobra.Command, + name string, + defaultValue uint16, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Uint16(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addDurationFlagBindViper adds a duration flag to the given command and binds it to the given viper name +func addDurationFlagBindViper( + cmd *cobra.Command, + name string, + defaultValue time.Duration, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().Duration(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// addStringSliceFlagBindViper adds a string slice flag to the given command and binds it to the given viper name +func addStringSliceFlagBindViper( + cmd *cobra.Command, + name string, + defaultValue []string, + usage string, + viperBindName string, +) error { + cmd.PersistentFlags().StringSlice(name, defaultValue, usage) + return viper.BindPFlag(viperBindName, cmd.PersistentFlags().Lookup(name)) +} + +// loadBuiltInTestKeys loads the built-in test keys into the keystore +func loadBuiltInTestKeys(accountKey string, ks keystore.GlobalKeystore) (err error) { + sr25519keyRing, err := keystore.NewSr25519Keyring() + if err != nil { + return fmt.Errorf("error creating sr22519 keyring: %s", err) + } + + ed25519keyRing, err := keystore.NewEd25519Keyring() + if err != nil { + return fmt.Errorf("error creating ed25519 keyring: %s", err) + } + + err = keystore.LoadKeystore(accountKey, ks.Acco, sr25519keyRing) + if err != nil { + return fmt.Errorf("error loading account keystore: %w", err) + } + + err = keystore.LoadKeystore(accountKey, ks.Babe, sr25519keyRing) + if err != nil { + return fmt.Errorf("error loading babe keystore: %w", err) + } + + err = keystore.LoadKeystore(accountKey, ks.Gran, ed25519keyRing) + if err != nil { + return fmt.Errorf("error loading grandpa keystore: %w", err) + } + + return nil +} + +// KeypairInserter inserts a keypair. +type KeypairInserter interface { + Insert(kp keystore.KeyPair) error +} + +// unlockKeystore compares the length of passwords to the length of accounts, +// prompts the user for a password if no password is provided, and then unlocks +// the accounts within the provided keystore +func unlockKeystore(ks KeypairInserter, basepath, unlock, password string) error { + var passwords []string + + if password != "" { + passwords = strings.Split(password, ",") + + // compare length of passwords to length of accounts to unlock (if password provided) + if len(passwords) != len(unlock) { + return fmt.Errorf("passwords length does not match unlock length") + } + + } else { + // compare length of passwords to length of accounts to unlock (if password not provided) + if len(passwords) != len(unlock) { + bytes := getPassword("Enter password to unlock keystore:") + password = string(bytes) + } + + err := keystore.UnlockKeys(ks, basepath, unlock, password) + if err != nil { + return fmt.Errorf("failed to unlock keys: %s", err) + } + } + + return nil +} + +// getPassword prompts user to enter password +func getPassword(msg string) []byte { + for { + fmt.Println(msg) + fmt.Print("> ") + password, err := terminal.ReadPassword(syscall.Stdin) + if err != nil { + fmt.Printf("invalid input: %s\n", err) + } else { + fmt.Printf("\n") + return password + } + } +} + +// parseChainSpec parses the chain spec from the given chain +// and sets the default config +func parseChainSpec(chain string) error { + // check if the chain is a path to a chain spec + if _, err := os.Stat(chain); err == nil { + spec, err := genesis.NewGenesisFromJSONRaw(chain) + if err != nil { + return fmt.Errorf("failed to load chain spec: %s", err) + } + config = cfg.DefaultConfigFromSpec(spec) + config.ChainSpec = chain + } else { + switch cfg.Chain(chain) { + case cfg.PolkadotChain: + config = polkadot.DefaultConfig() + case cfg.KusamaChain: + config = kusama.DefaultConfig() + case cfg.WestendChain: + config = westend.DefaultConfig() + case cfg.WestendDevChain: + config = westenddev.DefaultConfig() + case cfg.WestendLocalChain: + if alice || key == "alice" { + config = westendlocal.DefaultAliceConfig() + } else if bob || key == "bob" { + config = westendlocal.DefaultBobConfig() + } else if charlie || key == "charlie" { + config = westendlocal.DefaultCharlieConfig() + } else { + config = westendlocal.DefaultConfig() + } + default: + return nil + } + } + + // parse chain spec and set config fields + spec, err := genesis.NewGenesisFromJSONRaw(config.ChainSpec) + if err != nil { + return fmt.Errorf("failed to load chain spec: %s", err) + } + + config.ID = spec.ID + config.Network.Bootnodes = spec.Bootnodes + config.Network.ProtocolID = spec.ProtocolID + + return nil +} + +// configureViper sets up viper to read from the config file and command line flags +func configureViper(basePath string) error { + viper.SetConfigName("config") // name of config file (without extension) + viper.AddConfigPath(basePath) // search `base-path` + viper.AddConfigPath(filepath.Join(basePath, "config")) // search `base-path/config` + + setViperDefault(config) + + // If a config file is found, read it in. + if err := viper.ReadInConfig(); err != nil { + if _, ok := err.(viper.ConfigFileNotFoundError); !ok { + // ignore not found error, return other errors + return err + } + } + + return nil +} + +// ParseConfig parses the config from the command line flags +func ParseConfig() error { + if err := viper.Unmarshal(config); err != nil { + return fmt.Errorf("failed to unmarshal config: %s", err) + } + + return nil +} + +// parseBasePath parses the base path from the command line flags +func parseBasePath() error { + var home string + // For the base path, prefer the environment variable over the flag + // If neither are set, use the default base path from the config + if os.Getenv(DefaultHomeEnv) != "" { + home = os.Getenv(DefaultHomeEnv) + } else { + home = basePath + } + if config.BasePath == "" && home == "" { + return fmt.Errorf("--base-path cannot be empty") + } + // If the base path is set, use it + if home != "" { + config.BasePath = home + } + config.BasePath = utils.ExpandDir(config.BasePath) + // bind it to viper so that it can be used during the config parsing + viper.Set("base-path", config.BasePath) + + // Ensure that the base path exists and is accessible + // Create the folders(config, data) in the base path if they don't exist + if err := cfg.EnsureRoot(config.BasePath); err != nil { + return fmt.Errorf("failed to ensure root: %s", err) + } + + return nil +} + +// parseAccount parses the account key from the command line flags +func parseAccount() { + // if key is not set, check if alice, bob, or charlie are set + // return error if none are set + if key == "" { + if alice { + key = "alice" + } else if bob { + key = "bob" + } else if charlie { + key = "charlie" + } + } + + // if key is available, set it in the config + if key != "" { + config.Account.Key = key + // bind it to viper so that it can be used during the config parsing + viper.Set("account.key", key) + } +} + +// parseRPC parses the rpc config from the command line flags +func parseRPC() { + // if rpc modules is not set, set it to the default + // if rpc modules is set to unsafe, set it to all modules + //TODO: refactor this to follow the same pattern as substrate + // Substrate accepts `unsafe`,`safe` and `auto` for --rpc-methods + if rpcModules == "unsafe" || rpcModules == "" { + config.RPC.Modules = cfg.DefaultRPCModules + } else { + config.RPC.Modules = strings.Split(rpcModules, ",") + } + + // bind it to viper so that it can be used during the config parsing + viper.Set("rpc.modules", config.RPC.Modules) +} + +// copyChainSpec copies the chain-spec file to the base path +func copyChainSpec(source, destination string) error { + if err := gssmros.CopyFile(source, destination); err != nil { + return fmt.Errorf("failed to copy genesis file: %s", err) + } + config.ChainSpec = destination + // bind it to viper so that it can be used during the config parsing + viper.Set("chain-spec", destination) + return nil +} + +// parseRole parses the role from the command line flags +func parseRole() error { + var selectedRole common.NetworkRole + if validator { + selectedRole = common.AuthorityRole + } else { + switch role { + case cfg.FullNode.String(): + selectedRole = common.FullNodeRole + case cfg.LightNode.String(): + selectedRole = common.LightClientRole + case cfg.AuthorityNode.String(): + selectedRole = common.AuthorityRole + default: + return fmt.Errorf("invalid role: %s", role) + } + } + + config.Core.Role = selectedRole + viper.Set("core.role", config.Core.Role) + return nil +} + +// parseTelemetryURL parses the telemetry-url from the command line flag +func parseTelemetryURL() error { + if telemetryURLs == "" { + return nil + } + + urlVerbosityPairs := strings.Split(telemetryURLs, ",") + for _, pair := range urlVerbosityPairs { + urlVerbosity := strings.Split(pair, ":") + if len(urlVerbosity) != 2 { + return fmt.Errorf( + "invalid --telemetry-url. " + + "URL and verbosity should be specified as a colon-separated list of key-value pairs", + ) + } + + url := urlVerbosity[0] + verbosityString := urlVerbosity[1] + verbosity, err := strconv.Atoi(verbosityString) + if err != nil { + return fmt.Errorf("invalid --telemetry-url. Failed to parse verbosity: %v", err.Error()) + } + + config.TelemetryURLs = append(config.TelemetryURLs, genesis.TelemetryEndpoint{ + Endpoint: url, + Verbosity: verbosity, + }) + } + + viper.Set("telemetry-url", config.TelemetryURLs) + return nil +} + +// setViperDefault sets the default values for the config +// The method goes through the config struct and binds each field to viper +// in the format . = +// The name of the field is taken from the mapstructure tag +func setViperDefault(config *cfg.Config) { + configType := reflect.TypeOf(*config) + configValue := reflect.ValueOf(*config) + + for i := 0; i < configType.NumField(); i++ { + field := configType.Field(i) + + mapstructureTag := field.Tag.Get("mapstructure") + if mapstructureTag == "" { + continue + } + + tagParts := strings.Split(mapstructureTag, ",") + if len(tagParts) > 0 && tagParts[0] == "-" { + continue + } + + parentPrefix := tagParts[0] + if field.Type.Kind() == reflect.Struct || field.Type.Kind() == reflect.Ptr { + subType := field.Type + if subType.Kind() == reflect.Ptr { + subType = subType.Elem() + } + + for j := 0; j < subType.NumField(); j++ { + subField := subType.Field(j) + subMapstructureTag := subField.Tag.Get("mapstructure") + if subMapstructureTag == "" { + continue + } + + subTagParts := strings.Split(subMapstructureTag, ",") + if len(subTagParts) > 0 && subTagParts[0] == "-" { + continue + } + + prefix := subTagParts[0] + if parentPrefix != "" { + prefix = parentPrefix + "." + subTagParts[0] + } + + var value interface{} + if configValue.Field(i).Kind() == reflect.Ptr { + value = configValue.Field(i).Elem().Field(j).Interface() + } else { + value = configValue.Field(i).Field(j).Interface() + } + + if !viper.IsSet(prefix) { + viper.SetDefault(prefix, value) + } + } + } + } +} diff --git a/cmd/gossamer/commands/utils_test.go b/cmd/gossamer/commands/utils_test.go new file mode 100644 index 0000000000..ed96a5af87 --- /dev/null +++ b/cmd/gossamer/commands/utils_test.go @@ -0,0 +1,268 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "testing" + "time" + + "github.com/spf13/cobra" + + "github.com/stretchr/testify/require" + + "github.com/spf13/viper" + + "github.com/ChainSafe/gossamer/chain/westend" +) + +func TestAddStringFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addStringFlagBindViper function + err := addStringFlagBindViper(cmd, "testFlag", "default", "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetString("testBindName") + if viperValue != "default" { + t.Fatalf("Expected Viper value 'testBindName' to be 'default', got '%s'", viperValue) + } +} + +func TestAddIntFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addIntFlagBindViper function + err := addIntFlagBindViper(cmd, "testFlag", 42, "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetInt("testBindName") + if viperValue != 42 { + t.Fatalf("Expected Viper value 'testBindName' to be 42, got '%d'", viperValue) + } +} + +func TestAddBoolFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addBoolFlagBindViper function + err := addBoolFlagBindViper(cmd, "testFlag", true, "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetBool("testBindName") + if viperValue != true { + t.Fatalf("Expected Viper value 'testBindName' to be true, got '%t'", viperValue) + } +} + +func TestAddUintFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addUintFlagBindViper function + err := addUintFlagBindViper(cmd, "testFlag", 123, "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetUint("testBindName") + if viperValue != 123 { + t.Fatalf("Expected Viper value 'testBindName' to be 123, got '%d'", viperValue) + } +} + +func TestAddUint32FlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addUint32FlagBindViper function + err := addUint32FlagBindViper(cmd, "testFlag", uint32(123), "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetUint32("testBindName") + if viperValue != 123 { + t.Fatalf("Expected Viper value 'testBindName' to be 123, got '%d'", viperValue) + } +} + +func TestAddUint16FlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addUint16FlagBindViper function + err := addUint16FlagBindViper(cmd, "testFlag", uint16(123), "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetUint("testBindName") + if viperValue != 123 { + t.Fatalf("Expected Viper value 'testBindName' to be 123, got '%d'", viperValue) + } +} + +func TestAddDurationFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addDurationFlagBindViper function + err := addDurationFlagBindViper(cmd, "testFlag", 5*time.Second, "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetDuration("testBindName") + if viperValue != 5*time.Second { + t.Fatalf("Expected Viper value 'testBindName' to be 5 seconds, got '%v'", viperValue) + } +} + +func TestAddStringSliceFlagBindViper(t *testing.T) { + // Create a mock command object + cmd := &cobra.Command{} + + // Call the addStringSliceFlagBindViper function + err := addStringSliceFlagBindViper(cmd, "testFlag", []string{"default"}, "usage", "testBindName") + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + // Verify that the flag was added to the command + flag := cmd.PersistentFlags().Lookup("testFlag") + if flag == nil { + t.Fatalf("Expected flag 'testFlag' to be added to command") + } + + // Verify that the flag is bound to the Viper configuration value + viperValue := viper.GetStringSlice("testBindName") + if len(viperValue) != 1 || viperValue[0] != "default" { + t.Fatalf("Expected Viper value 'testBindName' to be ['default'], got '%v'", viperValue) + } + + // Set the flag value and verify that the Viper value is updated + cmd.SetArgs([]string{"--testFlag", "value1", "--testFlag", "value2"}) + if err := cmd.Execute(); err != nil { + t.Fatalf("Unexpected error: %v", err) + } + viperValue = viper.GetStringSlice("testBindName") + if len(viperValue) != 2 || viperValue[0] != "value1" || viperValue[1] != "value2" { + t.Fatalf("Expected Viper value 'testBindName' to be ['value1', 'value2'], got '%v'", viperValue) + } +} + +func TestBindToViper(t *testing.T) { + t.Parallel() + + config = westend.DefaultConfig() + setViperDefault(config) + + tests := []struct { + name string + expected any + result any + }{ + { + expected: config.Name, + result: viper.Get("name"), + }, + { + expected: config.ID, + result: viper.Get("id"), + }, + { + expected: config.BasePath, + result: viper.Get("basepath"), + }, + { + expected: config.LogLevel, + result: viper.Get("log-level"), + }, + { + expected: config.Log.Core, + result: viper.Get("log.core"), + }, + { + expected: config.Core.Role, + result: viper.Get("core.role"), + }, + { + expected: config.Network.NoMDNS, + result: viper.Get("network.nomdns"), + }, + { + expected: config.RPC.Port, + result: viper.Get("rpc.port"), + }, + { + expected: config.Account.Key, + result: viper.Get("account.key"), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + require.Equal(t, tt.expected, tt.result) + }) + } +} diff --git a/cmd/gossamer/commands/version.go b/cmd/gossamer/commands/version.go new file mode 100644 index 0000000000..1bf1fa8a92 --- /dev/null +++ b/cmd/gossamer/commands/version.go @@ -0,0 +1,23 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package commands + +import ( + "fmt" + + cfg "github.com/ChainSafe/gossamer/config" + + "github.com/spf13/cobra" +) + +// VersionCmd returns the gossamer version +var VersionCmd = &cobra.Command{ + Use: "version", + Short: "gossamer version", + Long: `gossamer version`, + RunE: func(cmd *cobra.Command, args []string) error { + fmt.Printf("%s version %s\n", cfg.DefaultSystemName, cfg.DefaultSystemVersion) + return nil + }, +} diff --git a/cmd/gossamer/config.go b/cmd/gossamer/config.go deleted file mode 100644 index 2407459d39..0000000000 --- a/cmd/gossamer/config.go +++ /dev/null @@ -1,985 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "errors" - "fmt" - "os" - "strconv" - "strings" - "time" - - "github.com/ChainSafe/gossamer/dot" - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/ChainSafe/gossamer/dot/state" - "github.com/ChainSafe/gossamer/dot/state/pruner" - "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/common" - "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" - "github.com/ChainSafe/gossamer/lib/utils" - "github.com/urfave/cli/v2" -) - -var ( - // DefaultCfg is the default configuration for the node. - DefaultCfg = dot.PolkadotConfig - defaultKusamaConfigPath = "kusama/config.toml" - defaultPolkadotConfigPath = "polkadot/config.toml" - defaultWestendDevConfigPath = "westend-dev/config.toml" - defaultWestendConfigPath = "westend/config.toml" -) - -// loadConfigFile loads a default config file if --chain is specified, a specific -// config if --config is specified, or the default gossamer config otherwise. -func loadConfigFile(ctx *cli.Context, cfg *ctoml.Config) (err error) { - cfgPath := ctx.String(ConfigFlag.Name) - if cfgPath == "" { - return loadConfigFromResource(cfg, defaultPolkadotConfigPath) - } - - logger.Info("loading toml configuration from " + cfgPath + "...") - if cfg == nil { - cfg = new(ctoml.Config) - } else { - logger.Warn( - "overwriting default configuration with id " + cfg.Global.ID + - " with toml configuration values from " + cfgPath) - } - return loadConfigFromFile(cfg, cfgPath) -} - -func setupConfigFromChain(ctx *cli.Context) (*ctoml.Config, *dot.Config, error) { - tomlCfg := &ctoml.Config{} - cfg := DefaultCfg() - - err := loadConfigFile(ctx, tomlCfg) - if err != nil { - logger.Errorf("failed to load toml configuration: %s", err) - return nil, nil, err - } - - // check --chain flag and load configuration from defaults.go - if id := ctx.String(ChainFlag.Name); id != "" { - switch id { - case "kusama": - logger.Info("loading toml configuration from " + defaultKusamaConfigPath + "...") - tomlCfg = &ctoml.Config{} - cfg = dot.KusamaConfig() - err = loadConfigFromResource(tomlCfg, defaultKusamaConfigPath) - case "polkadot": - logger.Info("loading toml configuration from " + defaultPolkadotConfigPath + "...") - tomlCfg = &ctoml.Config{} - cfg = dot.PolkadotConfig() - err = loadConfigFromResource(tomlCfg, defaultPolkadotConfigPath) - case "westend-dev": - logger.Info("loading toml configuration from " + defaultWestendDevConfigPath + "...") - tomlCfg = &ctoml.Config{} - cfg = dot.WestendDevConfig() - err = loadConfigFromResource(tomlCfg, defaultWestendDevConfigPath) - case "westend": - logger.Info("loading toml configuration from " + defaultWestendConfigPath + "...") - tomlCfg = &ctoml.Config{} - cfg = dot.WestendConfig() - err = loadConfigFromResource(tomlCfg, defaultWestendConfigPath) - default: - logger.Info("loading chain config from " + id + "...") - fileInfo, err := os.Stat(id) - if err != nil { - return nil, nil, fmt.Errorf("unknown chain id provided: %s, %w", id, err) - } - if !fileInfo.IsDir() { - err = ctx.Set(GenesisFlag.Name, id) - if err != nil { - return nil, nil, fmt.Errorf("unknown chain id provided: %s, %w", id, err) - } - } - } - } - - if err != nil { - logger.Errorf("failed to set chain configuration: %s", err) - return nil, nil, err - } - - return tomlCfg, cfg, nil -} - -// createDotConfig creates a new dot configuration from the provided flag values -func createDotConfig(ctx *cli.Context) (*dot.Config, error) { - tomlCfg, cfg, err := setupConfigFromChain(ctx) - if err != nil { - logger.Errorf("failed to set chain configuration: %s", err) - return nil, err - } - - // set log config - err = setLogConfig(ctx, tomlCfg, &cfg.Global, &cfg.Log) - if err != nil { - logger.Errorf("failed to set log configuration: %s", err) - return nil, err - } - - // TODO: log this better. - // See https://github.com/ChainSafe/gossamer/issues/1945 - logger.Infof("loaded package log configuration: %s", cfg.Log) - - // set global configuration values - if err := setDotGlobalConfig(ctx, tomlCfg, &cfg.Global); err != nil { - logger.Errorf("failed to set global node configuration: %s", err) - return nil, err - } - - // set remaining cli configuration values - setDotInitConfig(ctx, tomlCfg.Init, &cfg.Init) - setDotAccountConfig(ctx, tomlCfg.Account, &cfg.Account) - setDotCoreConfig(ctx, tomlCfg.Core, &cfg.Core) - err = setDotNetworkConfig(ctx, tomlCfg.Network, &cfg.Network) - if err != nil { - return nil, err - } - setDotRPCConfig(ctx, tomlCfg.RPC, &cfg.RPC) - setDotPprofConfig(ctx, tomlCfg.Pprof, &cfg.Pprof) - setStateConfig(ctx, tomlCfg.State, &cfg.State) - - // set system info - setSystemInfoConfig(ctx, cfg) - - return cfg, nil -} - -// createInitConfig creates the configuration required to initialise a dot node -func createInitConfig(ctx *cli.Context) (*dot.Config, error) { - tomlCfg, cfg, err := setupConfigFromChain(ctx) - if err != nil { - logger.Errorf("failed to set chain configuration: %s", err) - return nil, err - } - - // set global configuration values - err = setDotGlobalConfig(ctx, tomlCfg, &cfg.Global) - if err != nil { - logger.Errorf("failed to set global node configuration: %s", err) - return nil, err - } - - if !cfg.Global.Pruning.IsValid() { - return nil, fmt.Errorf("--%s must be %s", PruningFlag.Name, pruner.Archive) - } - - const minRetainBlocks = uint32(512) - - if cfg.Global.RetainBlocks < minRetainBlocks { - return nil, fmt.Errorf("--%s cannot be less than %d", RetainBlockNumberFlag.Name, minRetainBlocks) - } - - // set log config - err = setLogConfig(ctx, tomlCfg, &cfg.Global, &cfg.Log) - if err != nil { - logger.Errorf("failed to set log configuration: %s", err) - return nil, err - } - - // set init configuration values - setDotInitConfig(ctx, tomlCfg.Init, &cfg.Init) - - // set system info - setSystemInfoConfig(ctx, cfg) - - // set core config since BABE values are needed - setDotCoreConfig(ctx, tomlCfg.Core, &cfg.Core) - - // ensure configuration values match genesis and overwrite with genesis - updateDotConfigFromGenesisJSONRaw(*tomlCfg, cfg) - - // set network config here otherwise it's values will be overwritten when starting the node. - // See /cmd/gossamer/main.go L192. - err = setDotNetworkConfig(ctx, tomlCfg.Network, &cfg.Network) - if err != nil { - return nil, err - } - return cfg, nil -} - -func createImportStateConfig(ctx *cli.Context) (*dot.Config, error) { - tomlCfg, cfg, err := setupConfigFromChain(ctx) - if err != nil { - logger.Errorf("failed to set chain configuration: %s", err) - return nil, err - } - - // set global configuration values - if err := setDotGlobalConfig(ctx, tomlCfg, &cfg.Global); err != nil { - logger.Errorf("failed to set global node configuration: %s", err) - return nil, err - } - - return cfg, nil -} - -func createBuildSpecConfig(ctx *cli.Context) (*dot.Config, error) { - tomlCfg := new(ctoml.Config) - err := loadConfigFile(ctx, tomlCfg) - if err != nil { - logger.Errorf("failed to load toml configuration: %s", err) - return nil, err - } - - cfg := new(dot.Config) - if err := setDotGlobalConfig(ctx, tomlCfg, &cfg.Global); err != nil { - logger.Errorf("failed to set global node configuration: %s", err) - return nil, err - } - - return cfg, nil -} - -// createExportConfig creates a new dot configuration from the provided flag values -func createExportConfig(ctx *cli.Context) (*dot.Config, error) { - cfg := DefaultCfg() // start with default configuration - tomlCfg := &ctoml.Config{} - - err := loadConfigFile(ctx, tomlCfg) - if err != nil { - logger.Errorf("failed to load toml configuration: %s", err) - return nil, err - } - - // ensure configuration values match genesis and overwrite with genesis - updateDotConfigFromGenesisJSONRaw(*tomlCfg, cfg) - - // set global configuration values - err = setDotGlobalConfig(ctx, tomlCfg, &cfg.Global) - if err != nil { - logger.Errorf("failed to set global node configuration: %s", err) - return nil, err - } - - // set log config - err = setLogConfig(ctx, &ctoml.Config{}, &cfg.Global, &cfg.Log) - if err != nil { - logger.Errorf("failed to set log configuration: %s", err) - return nil, err - } - - // set init configuration values - setDotInitConfig(ctx, tomlCfg.Init, &cfg.Init) - - // set cli configuration values - setDotAccountConfig(ctx, tomlCfg.Account, &cfg.Account) - setDotCoreConfig(ctx, tomlCfg.Core, &cfg.Core) - err = setDotNetworkConfig(ctx, tomlCfg.Network, &cfg.Network) - if err != nil { - return nil, err - } - setDotRPCConfig(ctx, tomlCfg.RPC, &cfg.RPC) - - // set system info - setSystemInfoConfig(ctx, cfg) - - return cfg, nil -} - -type stringKVStore interface { - String(key string) (value string) -} - -// getLogLevel obtains the log level in the following order: -// 1. Try to obtain it from the flag value corresponding to flagName. -// 2. Try to obtain it from the TOML value given, if step 1. failed. -// 3. Return the default value given if both previous steps failed. -// For steps 1 and 2, it tries to parse the level as an integer to convert it -// to a level, and also tries to parse it as a string. -func getLogLevel(flagsKVStore stringKVStore, flagName, tomlValue string, defaultLevel log.Level) ( - level log.Level, err error) { - if flagValue := flagsKVStore.String(flagName); flagValue != "" { - return parseLogLevelString(flagValue) - } - - if tomlValue == "" { - return defaultLevel, nil - } - - return parseLogLevelString(tomlValue) -} - -var ErrLogLevelIntegerOutOfRange = errors.New("log level integer can only be between 0 and 5 included") - -func parseLogLevelString(logLevelString string) (logLevel log.Level, err error) { - levelInt, err := strconv.Atoi(logLevelString) - if err == nil { // level given as an integer - if levelInt < 0 || levelInt > 5 { - return 0, fmt.Errorf("%w: log level given: %d", ErrLogLevelIntegerOutOfRange, levelInt) - } - logLevel = log.Level(levelInt) - return logLevel, nil - } - - logLevel, err = log.ParseLevel(logLevelString) - if err != nil { - return 0, fmt.Errorf("cannot parse log level string: %w", err) - } - - return logLevel, nil -} - -func setLogConfig(flagsKVStore stringKVStore, tomlConfig *ctoml.Config, - globalCfg *dot.GlobalConfig, logCfg *dot.LogConfig) (err error) { - if tomlConfig == nil { - tomlConfig = new(ctoml.Config) - } - - globalCfg.LogLvl, err = getLogLevel(flagsKVStore, LogFlag.Name, tomlConfig.Global.LogLvl, log.Info) - if err != nil { - return fmt.Errorf("cannot get global log level: %w", err) - } - tomlConfig.Global.LogLvl = globalCfg.LogLvl.String() - - levelsData := []struct { - name string - flagName string - tomlValue string - levelPtr *log.Level // pointer to value to modify - }{ - { - name: "core", - flagName: LogCoreLevelFlag.Name, - tomlValue: tomlConfig.Log.CoreLvl, - levelPtr: &logCfg.CoreLvl, - }, - { - name: "digest", - flagName: LogDigestLevelFlag.Name, - tomlValue: tomlConfig.Log.DigestLvl, - levelPtr: &logCfg.DigestLvl, - }, - { - name: "sync", - flagName: LogSyncLevelFlag.Name, - tomlValue: tomlConfig.Log.SyncLvl, - levelPtr: &logCfg.SyncLvl, - }, - { - name: "network", - flagName: LogNetworkLevelFlag.Name, - tomlValue: tomlConfig.Log.NetworkLvl, - levelPtr: &logCfg.NetworkLvl, - }, - { - name: "RPC", - flagName: LogRPCLevelFlag.Name, - tomlValue: tomlConfig.Log.RPCLvl, - levelPtr: &logCfg.RPCLvl, - }, - { - name: "state", - flagName: LogStateLevelFlag.Name, - tomlValue: tomlConfig.Log.StateLvl, - levelPtr: &logCfg.StateLvl, - }, - { - name: "runtime", - flagName: LogRuntimeLevelFlag.Name, - tomlValue: tomlConfig.Log.RuntimeLvl, - levelPtr: &logCfg.RuntimeLvl, - }, - { - name: "block producer", - flagName: LogBabeLevelFlag.Name, - tomlValue: tomlConfig.Log.BlockProducerLvl, - levelPtr: &logCfg.BlockProducerLvl, - }, - { - name: "finality gadget", - flagName: LogGrandpaLevelFlag.Name, - tomlValue: tomlConfig.Log.FinalityGadgetLvl, - levelPtr: &logCfg.FinalityGadgetLvl, - }, - { - name: "sync", - flagName: LogSyncLevelFlag.Name, - tomlValue: tomlConfig.Log.SyncLvl, - levelPtr: &logCfg.SyncLvl, - }, - } - - for _, levelData := range levelsData { - level, err := getLogLevel(flagsKVStore, levelData.flagName, levelData.tomlValue, globalCfg.LogLvl) - if err != nil { - return fmt.Errorf("cannot get %s log level: %w", levelData.name, err) - } - *levelData.levelPtr = level - } - - logger.Debugf("set log configuration: --log %s global %s", flagsKVStore.String(LogFlag.Name), globalCfg.LogLvl) - return nil -} - -// setDotInitConfig sets dot.InitConfig using flag values from the cli context -func setDotInitConfig(ctx *cli.Context, tomlCfg ctoml.InitConfig, cfg *dot.InitConfig) { - if tomlCfg.Genesis != "" { - cfg.Genesis = tomlCfg.Genesis - } - - // check --genesis flag and update init configuration - if genesis := ctx.String(GenesisFlag.Name); genesis != "" { - cfg.Genesis = genesis - } - - logger.Debug("init configuration with genesis " + cfg.Genesis) -} - -func setDotGlobalConfig(ctx *cli.Context, tomlConfig *ctoml.Config, cfg *dot.GlobalConfig) error { - setDotGlobalConfigFromToml(tomlConfig, cfg) - if err := setDotGlobalConfigFromFlags(ctx, cfg); err != nil { - return fmt.Errorf("could not set global config from flags: %w", err) - } - - if err := setDotGlobalConfigName(ctx, tomlConfig, cfg); err != nil { - return fmt.Errorf("could not set global node name: %w", err) - } - - logger.Debug("global configuration has name " + cfg.Name + - ", id " + cfg.ID + " and base path " + cfg.BasePath) - - return nil -} - -// setDotGlobalConfigFromToml will apply the toml configs to dot global config -func setDotGlobalConfigFromToml(tomlCfg *ctoml.Config, cfg *dot.GlobalConfig) { - if tomlCfg != nil { - if tomlCfg.Global.ID != "" { - cfg.ID = tomlCfg.Global.ID - } - - if tomlCfg.Global.BasePath != "" { - cfg.BasePath = tomlCfg.Global.BasePath - } - - if tomlCfg.Global.LogLvl != "" { - level, err := parseLogLevelString(tomlCfg.Global.LogLvl) - if err == nil { - cfg.LogLvl = level - } - } - - cfg.MetricsAddress = tomlCfg.Global.MetricsAddress - - cfg.RetainBlocks = tomlCfg.Global.RetainBlocks - cfg.Pruning = pruner.Mode(tomlCfg.Global.Pruning) - } -} - -// setDotGlobalConfigFromFlags sets dot.GlobalConfig using flag values from the cli context -func setDotGlobalConfigFromFlags(ctx *cli.Context, cfg *dot.GlobalConfig) error { - // check --basepath flag and update node configuration - if basepath := ctx.String(BasePathFlag.Name); basepath != "" { - cfg.BasePath = basepath - } - - // check if cfg.BasePath his been set, if not set to default - if cfg.BasePath == "" { - cfg.BasePath = dot.WestendDevConfig().Global.BasePath - } - - // check --log flag - logLevel, err := parseLogLevelString(ctx.String(LogFlag.Name)) - if err == nil { - cfg.LogLvl = logLevel - } - - cfg.PublishMetrics = ctx.Bool("publish-metrics") - - // check --metrics-address flag and update node configuration - if metricsAddress := ctx.String(MetricsAddressFlag.Name); metricsAddress != "" { - port, err := strconv.Atoi(metricsAddress) - if err != nil { - cfg.MetricsAddress = metricsAddress - } else { - cfg.MetricsAddress = ":" + fmt.Sprint(port) - } - } - - const uint32Max = ^uint32(0) - flagValue := ctx.Uint64(RetainBlockNumberFlag.Name) - - if uint64(uint32Max) < flagValue { - return fmt.Errorf("retain blocks value overflows uint32 boundaries, must be less than or equal to: %d", uint32Max) - } - - cfg.RetainBlocks = uint32(flagValue) - cfg.Pruning = pruner.Mode(ctx.String(PruningFlag.Name)) - cfg.NoTelemetry = ctx.Bool("no-telemetry") - - var telemetryEndpoints []genesis.TelemetryEndpoint - for _, telemetryURL := range ctx.StringSlice(TelemetryURLFlag.Name) { - splits := strings.Split(telemetryURL, " ") - if len(splits) != 2 { - return fmt.Errorf("%s must be in the format 'URL VERBOSITY'", TelemetryURLFlag.Name) - } - - verbosity, err := strconv.Atoi(splits[1]) - if err != nil { - return fmt.Errorf("could not parse verbosity from %s: %w", TelemetryURLFlag.Name, err) - } - - telemetryEndpoints = append(telemetryEndpoints, genesis.TelemetryEndpoint{ - Endpoint: splits[0], - Verbosity: verbosity, - }) - } - - cfg.TelemetryURLs = telemetryEndpoints - - return nil -} - -func setDotGlobalConfigName(ctx *cli.Context, tomlCfg *ctoml.Config, cfg *dot.GlobalConfig) error { - globalBasePath := utils.ExpandDir(cfg.BasePath) - initialised := dot.IsNodeInitialised(globalBasePath) - - // consider the --name flag as higher priority - if ctx.String(NameFlag.Name) != "" { - cfg.Name = ctx.String(NameFlag.Name) - return nil - } - - // consider the name on config as a second priority - if tomlCfg.Global.Name != "" { - cfg.Name = tomlCfg.Global.Name - return nil - } - - // if node was previously initialised and is not the init command - if initialised && ctx.Command.Name != initCommandName { - var err error - if cfg.Name, err = dot.LoadGlobalNodeName(globalBasePath); err != nil { - return err - } - - if cfg.Name != "" { - logger.Debug("load global node name \"" + cfg.Name + "\" from database") - return nil - } - } - - cfg.Name = dot.RandomNodeName() - return nil -} - -// setDotAccountConfig sets dot.AccountConfig using flag values from the cli context -func setDotAccountConfig(ctx *cli.Context, tomlCfg ctoml.AccountConfig, cfg *dot.AccountConfig) { - if tomlCfg.Key != "" { - cfg.Key = tomlCfg.Key - } - - if tomlCfg.Unlock != "" { - cfg.Unlock = tomlCfg.Unlock - } - - // check --key flag and update node configuration - if key := ctx.String(KeyFlag.Name); key != "" { - cfg.Key = key - } - - // check --unlock flag and update node configuration - if unlock := ctx.String(UnlockFlag.Name); unlock != "" { - cfg.Unlock = unlock - } - - logger.Debug("account configuration has key " + cfg.Key + - " and unlock " + cfg.Unlock) -} - -// setDotCoreConfig sets dot.CoreConfig using flag values from the cli context -func setDotCoreConfig(ctx *cli.Context, tomlCfg ctoml.CoreConfig, cfg *dot.CoreConfig) { - if validator := ctx.Bool(ValidatorFlag.Name); validator { - tomlCfg.Roles = 4 - tomlCfg.BabeAuthority = true - tomlCfg.GrandpaAuthority = true - } - cfg.Roles = common.Roles(tomlCfg.Roles) - cfg.BabeAuthority = common.Roles(tomlCfg.Roles) == common.AuthorityRole - cfg.GrandpaAuthority = common.Roles(tomlCfg.Roles) == common.AuthorityRole - cfg.GrandpaInterval = time.Second * time.Duration(tomlCfg.GrandpaInterval) - - // check --roles flag and update node configuration - if roles := ctx.String(RolesFlag.Name); roles != "" { - // convert string to byte - n, err := strconv.Atoi(roles) - b := common.Roles(n) - if err != nil { - logger.Errorf("failed to convert Roles to byte: %s", err) - } else if b == common.AuthorityRole { - // if roles byte is 4, act as an authority (see Table D.2) - logger.Debug("authority enabled (roles=4)") - cfg.Roles = b - } else if b > common.AuthorityRole { - // if roles byte is greater than 4, invalid roles byte (see Table D.2) - logger.Errorf("invalid roles option provided, authority disabled (roles=%d)", b) - } else { - // if roles byte is less than 4, do not act as an authority (see Table D.2) - logger.Debugf("authority disabled (roles=%d)", b) - cfg.Roles = b - } - } - - // to turn on BABE but not grandpa, cfg.Roles must be set to 4 - // and cfg.GrandpaAuthority must be set to false - if cfg.Roles == common.AuthorityRole && !tomlCfg.BabeAuthority { - cfg.BabeAuthority = false - } - - if cfg.Roles == common.AuthorityRole && !tomlCfg.GrandpaAuthority { - cfg.GrandpaAuthority = false - } - - if cfg.Roles != common.AuthorityRole { - cfg.BabeAuthority = false - cfg.GrandpaAuthority = false - } - - switch tomlCfg.WasmInterpreter { - case wasmer.Name: - cfg.WasmInterpreter = wasmer.Name - default: - cfg.WasmInterpreter = wasmer.Name - logger.Warn("invalid wasm interpreter set in config, defaulting to " + wasmer.Name) - } - - logger.Debugf( - "core configuration: babe-authority=%t, grandpa-authority=%t wasm-interpreter=%s grandpa-interval=%s", - cfg.BabeAuthority, cfg.GrandpaAuthority, cfg.WasmInterpreter, cfg.GrandpaInterval) -} - -// setDotNetworkConfig sets dot.NetworkConfig using flag values from the cli context -func setDotNetworkConfig(ctx *cli.Context, tomlCfg ctoml.NetworkConfig, cfg *dot.NetworkConfig) error { - if listenAddress := ctx.String(ListenAddressFlag.Name); listenAddress != "" { - // check if default port (cfg.Port value) has been changed by toml config or cli flag - if (tomlCfg.Port != cfg.Port) || (ctx.Uint(PortFlag.Name) != 0) { - return fmt.Errorf("can not set both port and listen address") - } - } - - cfg.Port = tomlCfg.Port - cfg.Bootnodes = tomlCfg.Bootnodes - cfg.ProtocolID = tomlCfg.ProtocolID - cfg.NoBootstrap = tomlCfg.NoBootstrap - cfg.NoMDNS = tomlCfg.NoMDNS - cfg.MinPeers = tomlCfg.MinPeers - cfg.MaxPeers = tomlCfg.MaxPeers - cfg.PersistentPeers = tomlCfg.PersistentPeers - cfg.DiscoveryInterval = time.Second * time.Duration(tomlCfg.DiscoveryInterval) - cfg.NodeKey = tomlCfg.NodeKey - cfg.ListenAddress = tomlCfg.ListenAddress - - // check --port flag and update node configuration - if port := ctx.Uint(PortFlag.Name); port != 0 { - cfg.Port = uint16(port) - } - - // check --bootnodes flag and update node configuration - if bootnodes := ctx.String(BootnodesFlag.Name); bootnodes != "" { - cfg.Bootnodes = strings.Split(bootnodes, ",") - } - - // format bootnodes - if len(cfg.Bootnodes) == 0 { - cfg.Bootnodes = []string(nil) - } - - // check --protocol flag and update node configuration - if protocol := ctx.String(ProtocolFlag.Name); protocol != "" { - cfg.ProtocolID = protocol - } - - // check --nobootstrap flag and update node configuration - if nobootstrap := ctx.Bool(NoBootstrapFlag.Name); nobootstrap { - cfg.NoBootstrap = true - } - - // check --nomdns flag and update node configuration - if nomdns := ctx.Bool(NoMDNSFlag.Name); nomdns { - cfg.NoMDNS = true - } - - // check --pubip flag and update node configuration - if pubip := ctx.String(PublicIPFlag.Name); pubip != "" { - cfg.PublicIP = pubip - } - - // check --pubdns flag and update node configuration - if pubdns := ctx.String(PublicDNSFlag.Name); pubdns != "" { - cfg.PublicDNS = pubdns - } - - // check --node-key flag and update node configuration - if nodekey := ctx.String(NodeKeyFlag.Name); nodekey != "" { - cfg.NodeKey = nodekey - } - - // checx --listen-addr flag and update node configuration - if listenAddress := ctx.String(ListenAddressFlag.Name); listenAddress != "" { - cfg.ListenAddress = listenAddress - } - - if len(cfg.PersistentPeers) == 0 { - cfg.PersistentPeers = []string(nil) - } - - logger.Debugf( - "network configuration: port=%d bootnodes=%s protocol=%s nobootstrap=%t "+ - "nomdns=%t minpeers=%d maxpeers=%d persistent-peers=%s "+ - "discovery-interval=%s", - cfg.Port, strings.Join(cfg.Bootnodes, ","), cfg.ProtocolID, cfg.NoBootstrap, - cfg.NoMDNS, cfg.MinPeers, cfg.MaxPeers, strings.Join(cfg.PersistentPeers, ","), - cfg.DiscoveryInterval, - ) - return nil -} - -// setDotRPCConfig sets dot.RPCConfig using flag values from the cli context -func setDotRPCConfig(ctx *cli.Context, tomlCfg ctoml.RPCConfig, cfg *dot.RPCConfig) { - cfg.Enabled = tomlCfg.Enabled - cfg.External = tomlCfg.External - cfg.Unsafe = tomlCfg.Unsafe - cfg.UnsafeExternal = tomlCfg.UnsafeExternal - cfg.Port = tomlCfg.Port - cfg.Host = tomlCfg.Host - cfg.Modules = tomlCfg.Modules - cfg.WSPort = tomlCfg.WSPort - cfg.WS = tomlCfg.WS - cfg.WSExternal = tomlCfg.WSExternal - cfg.WSUnsafe = tomlCfg.WSUnsafe - cfg.WSUnsafeExternal = tomlCfg.WSUnsafeExternal - - // check --rpc flag and update node configuration - if enabled := ctx.Bool(RPCEnabledFlag.Name); enabled || cfg.Enabled { - cfg.Enabled = true - } else if ctx.IsSet(RPCEnabledFlag.Name) && !enabled { - cfg.Enabled = false - } - - // check --rpc-external flag and update node configuration - if external := ctx.Bool(RPCExternalFlag.Name); external { - cfg.Enabled = true - cfg.External = true - } else if ctx.IsSet(RPCExternalFlag.Name) && !external { - cfg.Enabled = true - cfg.External = false - } - - // check --rpc-unsafe flag value - if rpcUnsafe := ctx.Bool(RPCUnsafeEnabledFlag.Name); rpcUnsafe { - cfg.Unsafe = true - } - - // check --rpc-unsafe-external flag value - if externalUnsafe := ctx.Bool(RPCUnsafeExternalFlag.Name); externalUnsafe { - cfg.Enabled = true - cfg.Unsafe = true - cfg.UnsafeExternal = true - } - - // check --ws-unsafe flag value - if wsUnsafe := ctx.Bool(WSUnsafeEnabledFlag.Name); wsUnsafe { - cfg.WSUnsafe = true - } - - // check --ws-unsafe-external flag value - if wsExternalUnsafe := ctx.Bool(WSUnsafeExternalFlag.Name); wsExternalUnsafe { - cfg.WS = true - cfg.WSUnsafe = true - cfg.WSUnsafeExternal = true - } - - // check --rpcport flag and update node configuration - if port := ctx.Uint(RPCPortFlag.Name); port != 0 { - cfg.Port = uint32(port) - } - - // check --rpchost flag and update node configuration - if host := ctx.String(RPCHostFlag.Name); host != "" { - cfg.Host = host - } - - // check --rpcmods flag and update node configuration - if modules := ctx.String(RPCModulesFlag.Name); modules != "" { - if modules == "unsafe" { - cfg.Modules = []string{"system", "author", "chain", "state", "rpc", "grandpa", "offchain", "childstate", - "syncstate", "payment"} - } else { - cfg.Modules = strings.Split(ctx.String(RPCModulesFlag.Name), ",") - } - } - - if wsport := ctx.Uint(WSPortFlag.Name); wsport != 0 { - cfg.WSPort = uint32(wsport) - } - - wsFlagIsSet := ctx.IsSet(WSFlag.Name) - - // if ws flag is set then set its value otherwise keep - // cfg.WS as it is - if wsFlagIsSet { - cfg.WS = ctx.Bool(WSFlag.Name) - } - - if wsExternal := ctx.Bool(WSExternalFlag.Name); wsExternal { - cfg.WS = true - cfg.WSExternal = true - } else if ctx.IsSet(WSExternalFlag.Name) && !wsExternal { - cfg.WS = true - cfg.WSExternal = false - } - - // format rpc modules - if len(cfg.Modules) == 0 { - cfg.Modules = []string(nil) - } - - logger.Debugf("rpc configuration: %s", cfg) -} - -func setSystemInfoConfig(ctx *cli.Context, cfg *dot.Config) { - // load system information - if ctx.App != nil { - cfg.System.SystemName = ctx.App.Name - cfg.System.SystemVersion = ctx.App.Version - } -} - -// updateDotConfigFromGenesisJSONRaw updates the configuration based on the raw genesis file values -func updateDotConfigFromGenesisJSONRaw(tomlCfg ctoml.Config, cfg *dot.Config) { - cfg.Account.Key = tomlCfg.Account.Key - cfg.Account.Unlock = tomlCfg.Account.Unlock - cfg.Core.Roles = common.Roles(tomlCfg.Core.Roles) - cfg.Core.BabeAuthority = common.Roles(tomlCfg.Core.Roles) == common.AuthorityRole - cfg.Core.GrandpaAuthority = common.Roles(tomlCfg.Core.Roles) == common.AuthorityRole - - // use default genesis file if genesis configuration not provided, for example, - // if we load a toml configuration file without a defined genesis init value or - // if we pass an empty string as the genesis init value using the --genesis flag - if cfg.Init.Genesis == "" { - cfg.Init.Genesis = DefaultCfg().Init.Genesis - } - - // load Genesis from genesis configuration file - gen, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis) - if err != nil { - logger.Errorf("failed to load genesis from file: %s", err) - return // exit - } - - cfg.Global.ID = gen.ID - cfg.Network.Bootnodes = gen.Bootnodes - cfg.Network.ProtocolID = gen.ProtocolID - - if gen.ProtocolID == "" { - logger.Critical("empty protocol ID in genesis file, please set it!") - } - - logger.Debugf( - "configuration after genesis json:" + - " name=" + cfg.Global.Name + - " id=" + cfg.Global.ID + - " bootnodes=" + strings.Join(cfg.Network.Bootnodes, ",") + - " protocol=" + cfg.Network.ProtocolID, - ) -} - -// updateDotConfigFromGenesisData updates the configuration from genesis data of an initialised node -func updateDotConfigFromGenesisData(ctx *cli.Context, cfg *dot.Config) error { - // initialise database using data directory - db, err := utils.SetupDatabase(cfg.Global.BasePath, false) - if err != nil { - return fmt.Errorf("failed to create database: %s", err) - } - - // load genesis data from initialised node database - gen, err := state.NewBaseState(db).LoadGenesisData() - if err != nil { - return fmt.Errorf("failed to load genesis data: %s", err) - } - - // check genesis id and use genesis id if --chain flag not set - if !ctx.IsSet(ChainFlag.Name) { - cfg.Global.ID = gen.ID - } - - // check genesis bootnodes and use genesis --bootnodes if name flag not set - if !ctx.IsSet(BootnodesFlag.Name) { - cfg.Network.Bootnodes = common.BytesToStringArray(gen.Bootnodes) - } - - // check genesis protocol and use genesis --protocol if name flag not set - if !ctx.IsSet(ProtocolFlag.Name) { - cfg.Network.ProtocolID = gen.ProtocolID - } - - // close database - err = db.Close() - if err != nil { - return fmt.Errorf("failed to close database: %s", err) - } - - logger.Debugf( - "configuration after genesis data:" + - " name=" + cfg.Global.Name + - " id=" + cfg.Global.ID + - " bootnodes=" + strings.Join(cfg.Network.Bootnodes, ",") + - " protocol=" + cfg.Network.ProtocolID, - ) - - return nil -} - -func setDotPprofConfig(ctx *cli.Context, tomlCfg ctoml.PprofConfig, cfg *dot.PprofConfig) { - // Flag takes precedence over TOML config, default is ignored. - if ctx.IsSet(PprofServerFlag.Name) { - cfg.Enabled = ctx.Bool(PprofServerFlag.Name) - } else { - cfg.Enabled = tomlCfg.Enabled - } - - if tomlCfg.ListeningAddress != "" { - cfg.Settings.ListeningAddress = tomlCfg.ListeningAddress - } - - if tomlCfg.BlockRate > 0 { - // block rate must be 0 (disabled) by default, since we - // cannot disable it here. - cfg.Settings.BlockProfileRate = tomlCfg.BlockRate - } - - if tomlCfg.MutexRate > 0 { - // mutex rate must be 0 (disabled) by default, since we - // cannot disable it here. - cfg.Settings.MutexProfileRate = tomlCfg.MutexRate - } - - // check --pprofaddress flag and update node configuration - if address := ctx.String(PprofAddressFlag.Name); address != "" { - cfg.Settings.ListeningAddress = address - } - - if rate := ctx.Int(PprofBlockRateFlag.Name); rate > 0 { - cfg.Settings.BlockProfileRate = rate - } - - if rate := ctx.Int(PprofMutexRateFlag.Name); rate > 0 { - cfg.Settings.MutexProfileRate = rate - } - - logger.Debug("pprof configuration: " + cfg.String()) -} - -func setStateConfig(ctx *cli.Context, tomlCfg ctoml.StateConfig, cfg *dot.StateConfig) { - if ctx.IsSet(RewindFlag.Name) { - cfg.Rewind = ctx.Uint(RewindFlag.Name) - } else if tomlCfg.Rewind > 0 { - cfg.Rewind = tomlCfg.Rewind - } -} diff --git a/cmd/gossamer/config_test.go b/cmd/gossamer/config_test.go deleted file mode 100644 index b69f482045..0000000000 --- a/cmd/gossamer/config_test.go +++ /dev/null @@ -1,1225 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "context" - "encoding/hex" - "encoding/json" - "errors" - "io" - "os" - "path/filepath" - "testing" - - "github.com/ChainSafe/gossamer/chain/kusama" - "github.com/ChainSafe/gossamer/chain/polkadot" - "github.com/ChainSafe/gossamer/dot" - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/ChainSafe/gossamer/dot/state" - "github.com/ChainSafe/gossamer/dot/types" - "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/common" - "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" - "github.com/ChainSafe/gossamer/lib/utils" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "github.com/urfave/cli/v2" -) - -// TestConfigFromChainFlag tests createDotConfig using the --chain flag -func TestConfigFromChainFlag(t *testing.T) { - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected *dot.Config - }{ - { - "Test gossamer --chain kusama", - []string{"chain", "name", "pruning", "retain-blocks"}, - []interface{}{"kusama", dot.KusamaConfig().Global.Name, kusama.DefaultPruningMode, kusama.DefaultRetainBlocks}, - dot.KusamaConfig(), - }, - { - "Test gossamer --chain polkadot", - []string{"chain", "name", "pruning", "retain-blocks"}, - []interface{}{"polkadot", dot.PolkadotConfig().Global.Name, - polkadot.DefaultPruningMode, polkadot.DefaultRetainBlocks}, - dot.PolkadotConfig(), - }, - { - "Test gossamer --chain westend-dev", - []string{"chain", "name", "pruning", "retain-blocks"}, - []interface{}{"westend-dev", dot.WestendDevConfig().Global.Name, "archive", uint32(512)}, - dot.WestendDevConfig(), - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - cfg.System = types.SystemInfo{} - require.Equal(t, c.expected, cfg) - }) - } -} - -// TestInitConfigFromFlags tests createDotInitConfig using relevant init flags -func TestInitConfigFromFlags(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - _, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected dot.InitConfig - }{ - { - "Test gossamer --genesis", - []string{"config", "genesis", "pruning", "retain-blocks"}, - []interface{}{testCfgFile, "test_genesis", "archive", uint32(512)}, - dot.InitConfig{ - Genesis: "test_genesis", - }, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - cfg, err := createInitConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.Init) - }) - } -} - -// TestGlobalConfigFromFlags tests createDotGlobalConfig using relevant global flags -func TestGlobalConfigFromFlags(t *testing.T) { - t.Parallel() - defaultGlobalConfig := dot.PolkadotConfig().Global - - testcases := map[string]struct { - args []string - expected dot.GlobalConfig - }{ - "Test_gossamer_default": { - []string{"app", "--name", defaultGlobalConfig.Name}, - dot.GlobalConfig{ - Name: defaultGlobalConfig.Name, - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_kusama_--chain": { - []string{"app", "--chain", "kusama", "--name", dot.KusamaConfig().Global.Name}, - dot.GlobalConfig{ - Name: dot.KusamaConfig().Global.Name, - ID: "ksmcc3", - BasePath: dot.KusamaConfig().Global.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_gossamer_--name": { - []string{"app", "--name", "test_name"}, - dot.GlobalConfig{ - Name: "test_name", - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_gossamer_--basepath": { - []string{"app", "--basepath", "test_basepath", "--name", "testname"}, - dot.GlobalConfig{ - Name: "testname", - ID: defaultGlobalConfig.ID, - BasePath: "test_basepath", - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_gossamer_--base-path": { - []string{"app", "--base-path", "test_basepath", "--name", "testname"}, - dot.GlobalConfig{ - Name: "testname", - ID: defaultGlobalConfig.ID, - BasePath: "test_basepath", - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_gossamer_--publish-metrics": { - []string{"app", "--publish-metrics", "--name", defaultGlobalConfig.Name}, - dot.GlobalConfig{ - Name: defaultGlobalConfig.Name, - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: true, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - }, - }, - "Test_gossamer_--metrics-address": { - []string{"app", "--metrics-address", ":9871", "--name", defaultGlobalConfig.Name}, - dot.GlobalConfig{ - Name: defaultGlobalConfig.Name, - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: ":9871", - }, - }, - "Test_gossamer_--no-telemetry": { - []string{"app", "--no-telemetry", "--name", defaultGlobalConfig.Name}, - dot.GlobalConfig{ - Name: defaultGlobalConfig.Name, - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - NoTelemetry: true, - }, - }, - "Test_gossamer_--telemetry-url": { - []string{"config", "--telemetry-url", "ws://localhost:8001/submit 0", "--telemetry-url", - "ws://foo/bar 0", "--name", defaultGlobalConfig.Name}, - dot.GlobalConfig{ - Name: defaultGlobalConfig.Name, - ID: defaultGlobalConfig.ID, - BasePath: defaultGlobalConfig.BasePath, - LogLvl: defaultGlobalConfig.LogLvl, - PublishMetrics: defaultGlobalConfig.PublishMetrics, - MetricsAddress: defaultGlobalConfig.MetricsAddress, - TelemetryURLs: []genesis.TelemetryEndpoint{ - {Endpoint: "ws://localhost:8001/submit", Verbosity: 0}, - {Endpoint: "ws://foo/bar", Verbosity: 0}, - }, - }, - }, - } - - for key, c := range testcases { - c := c - t.Run(key, func(t *testing.T) { - t.Parallel() - testApp := cli.NewApp() - testApp.Writer = io.Discard - testApp.Flags = RootFlags - testApp.Action = func(ctx *cli.Context) error { - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.Global) - return nil - } - testApp.Run(c.args) - }) - } -} - -func TestGlobalConfigFromFlagsFails(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - err string - }{ - { - "Test gossamer --telemetry-url invalid format", - []string{"config", "telemetry-url", "name"}, - []interface{}{ - testCfgFile, - []string{"ws://localhost:8001/submit"}, - testCfg.Global.Name, - }, - "could not set global config from flags: telemetry-url must be in the format 'URL VERBOSITY'", - }, - { - "Test gossamer invalid --telemetry-url invalid verbosity", - []string{"config", "telemetry-url", "name"}, - []interface{}{ - testCfgFile, - []string{"ws://foo/bar k"}, - testCfg.Global.Name, - }, - "could not set global config from flags: could not parse verbosity from telemetry-url: " + - `strconv.Atoi: parsing "k": invalid syntax`, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - - cfg, err := createDotConfig(ctx) - require.NotNil(t, err) - require.Nil(t, cfg) - require.Equal(t, c.err, err.Error()) - }) - } -} - -// TestAccountConfigFromFlags tests createDotAccountConfig using relevant account flags -func TestAccountConfigFromFlags(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected dot.AccountConfig - }{ - { - "Test gossamer --key", - []string{"config", "key"}, - []interface{}{testCfgFile, "alice"}, - dot.AccountConfig{ - Key: "alice", - Unlock: testCfg.Account.Unlock, - }, - }, - { - "Test gossamer --unlock", - []string{"config", "key", "unlock"}, - []interface{}{testCfgFile, "alice", "0"}, - dot.AccountConfig{ - Key: "alice", - Unlock: "0", - }, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.Account) - }) - } -} - -// TestCoreConfigFromFlags tests createDotCoreConfig using relevant core flags -func TestCoreConfigFromFlags(t *testing.T) { - westendDevConfig := dot.WestendDevConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, westendDevConfig) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected dot.CoreConfig - }{ - { - "Test gossamer --roles", - []string{"config", "roles"}, - []interface{}{testCfgFile, "4"}, - dot.CoreConfig{ - Roles: 4, - BabeAuthority: true, - GrandpaAuthority: true, - WasmInterpreter: wasmer.Name, - GrandpaInterval: testCfg.Core.GrandpaInterval, - }, - }, - { - "Test gossamer --roles", - []string{"config", "roles"}, - []interface{}{testCfgFile, "0"}, - dot.CoreConfig{ - Roles: 0, - BabeAuthority: false, - GrandpaAuthority: false, - WasmInterpreter: wasmer.Name, - GrandpaInterval: testCfg.Core.GrandpaInterval, - }, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.Core) - }) - } -} - -// TestNetworkConfigFromFlags tests createDotNetworkConfig using relevant network flags -func TestNetworkConfigFromFlags(t *testing.T) { - t.Parallel() - westendDevConfig := dot.WestendDevConfig() - - testcases := map[string]struct { - args []string - expected dot.NetworkConfig - }{ - "Test_gossamer_--port": { - []string{"app", "--port", "1234"}, - dot.NetworkConfig{ - Port: 1234, - }, - }, - "Test_gossamer_--bootnodes": { - []string{"app", "--bootnodes", "peer1,peer2"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - Bootnodes: []string{"peer1", "peer2"}, - }, - }, - "Test_gossamer_--protocol": { - []string{"app", "--protocol", "/gossamer/test/0"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - ProtocolID: "/gossamer/test/0", - }, - }, - "Test_gossamer_--nobootstrap": { - []string{"app", "--nobootstrap"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - NoBootstrap: true, - }, - }, - "Test_gossamer_--nomdns": { - []string{"app", "--nomdns"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - NoMDNS: true, - }, - }, - "Test_gossamer_--no-mdns": { - []string{"app", "--no-mdns"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - NoMDNS: true, - }, - }, - "Test_gossamer_--pubip": { - []string{"app", "--pubip", "10.0.5.2"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - PublicIP: "10.0.5.2", - }, - }, - "Test_gossamer_--pubdns": { - []string{"app", "--pubdns", "alice"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - PublicDNS: "alice", - }, - }, - "Test_gossamer_--node-key": { - []string{"app", "--node-key", "testkey"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - NodeKey: "testkey", - }, - }, - "Test_gossamer_--listen-addr": { - []string{"app", "--listen-addr", "/ip4/0.0.0.0/tcp/1234/ws"}, - dot.NetworkConfig{ - Port: westendDevConfig.Network.Port, - ListenAddress: "/ip4/0.0.0.0/tcp/1234/ws", - }, - }, - } - - for key, c := range testcases { - c := c - t.Run(key, func(t *testing.T) { - t.Parallel() - testApp := cli.NewApp() - testApp.Writer = io.Discard - testApp.Flags = StartupFlags - testApp.Action = func(ctx *cli.Context) error { - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.Network) - return nil - } - testApp.Run(c.args) - }) - } -} - -// TestRPCConfigFromFlags tests createDotRPCConfig using relevant rpc flags -func TestRPCConfigFromFlags(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, _ := newTestConfigWithFile(t, polkadotConfig) - - testApp := cli.NewApp() - testApp.Flags = StartupFlags - - testcases := map[string]struct { - args []string - expected dot.RPCConfig - }{ - "Test_gossamer_--rpc": { - []string{"", "--rpc"}, - dot.RPCConfig{ - Enabled: true, - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpc_false": { - []string{""}, - dot.RPCConfig{ - Enabled: false, - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpc-external": { - []string{"", "--rpc-external"}, - dot.RPCConfig{ - Enabled: true, - External: true, - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpc-external_false": { - []string{"", "--rpc"}, - dot.RPCConfig{ - Enabled: true, - External: false, - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpchost": { - []string{"", "--rpchost", "testhost"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: "testhost", - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpcport": { - []string{"", "--rpcport", "5678"}, - dot.RPCConfig{ - Port: 5678, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpc-port": { - []string{"", "--rpc-port", "5678"}, - dot.RPCConfig{ - Port: 5678, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--rpcsmods": { - []string{"", "--rpcmods", "mod1,mod2"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: []string{"mod1", "mod2"}, - WSPort: testCfg.RPC.WSPort, - }, - }, - "Test_gossamer_--wsport": { - []string{"", "--wsport", "7070"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: 7070, - }, - }, - "Test_gossamer_--ws-port": { - []string{"", "--ws-port", "7071"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: 7071, - }, - }, - "Test_gossamer_--ws": { - []string{"config", "--ws"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - WS: true, - }, - }, - "Test_gossamer_--ws_false": { - []string{""}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - WS: false, - }, - }, - "Test_gossamer_--ws-external": { - []string{"", "--ws-external"}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - WS: true, - WSExternal: true, - }, - }, - "Test_gossamer_--ws-external_false": { - []string{""}, - dot.RPCConfig{ - Port: testCfg.RPC.Port, - Host: testCfg.RPC.Host, - Modules: testCfg.RPC.Modules, - WSPort: testCfg.RPC.WSPort, - WSExternal: false, - }, - }, - } - - for key, c := range testcases { - c := c // bypass scopelint false positive - t.Run(key, func(t *testing.T) { - testApp.Action = func(ctx *cli.Context) error { - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, cfg.RPC) - return nil - } - testApp.Run(c.args) - }) - } -} - -// TestUpdateConfigFromGenesisJSON tests updateDotConfigFromGenesisJSON -func TestUpdateConfigFromGenesisJSON(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - genFile := dot.NewTestGenesisRawFile(t, testCfg) - - ctx, err := newTestContext( - t.Name(), - []string{"config", "genesis", "name"}, - []interface{}{testCfgFile, genFile, testCfg.Global.Name}, - ) - require.NoError(t, err) - - expected := &dot.Config{ - Global: dot.GlobalConfig{ - Name: testCfg.Global.Name, - ID: testCfg.Global.ID, - BasePath: testCfg.Global.BasePath, - LogLvl: testCfg.Global.LogLvl, - PublishMetrics: testCfg.Global.PublishMetrics, - MetricsAddress: testCfg.Global.MetricsAddress, - TelemetryURLs: testCfg.Global.TelemetryURLs, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: dot.InitConfig{ - Genesis: genFile, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: testCfg.Network, - RPC: testCfg.RPC, - System: testCfg.System, - Pprof: testCfg.Pprof, - } - - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - - cfg.Init.Genesis = genFile - updateDotConfigFromGenesisJSONRaw(*dotConfigToToml(testCfg), cfg) - cfg.System = types.SystemInfo{} - require.Equal(t, expected, cfg) -} - -// TestUpdateConfigFromGenesisJSON_Default tests updateDotConfigFromGenesisJSON -// using the default genesis path if no genesis path is provided (ie, an empty -// genesis value provided in the toml configuration file or with --genesis "") -func TestUpdateConfigFromGenesisJSON_Default(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - - ctx, err := newTestContext( - t.Name(), - []string{"config", "genesis", "name"}, - []interface{}{testCfgFile, "", testCfg.Global.Name}, - ) - require.NoError(t, err) - - expected := &dot.Config{ - Global: dot.GlobalConfig{ - Name: testCfg.Global.Name, - ID: testCfg.Global.ID, - BasePath: testCfg.Global.BasePath, - LogLvl: testCfg.Global.LogLvl, - PublishMetrics: testCfg.Global.PublishMetrics, - MetricsAddress: testCfg.Global.MetricsAddress, - TelemetryURLs: testCfg.Global.TelemetryURLs, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: dot.InitConfig{ - Genesis: DefaultCfg().Init.Genesis, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: testCfg.Network, - RPC: testCfg.RPC, - System: testCfg.System, - Pprof: testCfg.Pprof, - } - - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - updateDotConfigFromGenesisJSONRaw(*dotConfigToToml(testCfg), cfg) - cfg.System = types.SystemInfo{} - require.Equal(t, expected, cfg) -} - -func TestUpdateConfigFromGenesisData(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - genFile := dot.NewTestGenesisRawFile(t, testCfg) - - ctx, err := newTestContext( - t.Name(), - []string{"config", "genesis", "name"}, - []interface{}{testCfgFile, genFile, testCfg.Global.Name}, - ) - require.NoError(t, err) - - expected := &dot.Config{ - Global: dot.GlobalConfig{ - Name: testCfg.Global.Name, - ID: testCfg.Global.ID, - BasePath: testCfg.Global.BasePath, - LogLvl: testCfg.Global.LogLvl, - PublishMetrics: testCfg.Global.PublishMetrics, - MetricsAddress: testCfg.Global.MetricsAddress, - TelemetryURLs: testCfg.Global.TelemetryURLs, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: dot.InitConfig{ - Genesis: genFile, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: dot.NetworkConfig{ - Port: testCfg.Network.Port, - Bootnodes: []string{}, - ProtocolID: testCfg.Network.ProtocolID, - NoBootstrap: testCfg.Network.NoBootstrap, - NoMDNS: testCfg.Network.NoMDNS, - DiscoveryInterval: testCfg.Network.DiscoveryInterval, - MinPeers: testCfg.Network.MinPeers, - MaxPeers: testCfg.Network.MaxPeers, - }, - RPC: testCfg.RPC, - System: testCfg.System, - Pprof: testCfg.Pprof, - } - - cfg, err := createDotConfig(ctx) - require.NoError(t, err) - - cfg.Init.Genesis = genFile - - db, err := utils.SetupDatabase(cfg.Global.BasePath, false) - require.NoError(t, err) - - gen, err := genesis.NewGenesisFromJSONRaw(genFile) - require.NoError(t, err) - - err = state.NewBaseState(db).StoreGenesisData(gen.GenesisData()) - require.NoError(t, err) - - err = db.Close() - require.NoError(t, err) - - err = updateDotConfigFromGenesisData(ctx, cfg) // name should not be updated if provided as flag value - require.NoError(t, err) - cfg.System = types.SystemInfo{} - require.Equal(t, expected, cfg) -} - -func TestGlobalNodeName_WhenNodeAlreadyHasStoredName(t *testing.T) { - // Initialise a node with a random name - globalName := dot.RandomNodeName() - westendDevConfig := dot.WestendDevConfig() - cfg := newTestConfig(t, westendDevConfig) - cfg.Global.Name = globalName - - runtimeFilePath, err := runtime.GetRuntime(context.Background(), runtime.WESTEND_RUNTIME_v0929) - require.NoError(t, err) - runtimeData, err := os.ReadFile(runtimeFilePath) - require.NoError(t, err) - - fp := utils.GetWestendDevRawGenesisPath(t) - - westendDevGenesis, err := genesis.NewGenesisFromJSONRaw(fp) - require.NoError(t, err) - - gen := &genesis.Genesis{ - Name: "test", - ID: "test", - Bootnodes: []string(nil), - ProtocolID: "/gossamer/test/0", - Genesis: westendDevGenesis.GenesisFields(), - } - - gen.Genesis.Raw = map[string]map[string]string{ - "top": { - "0x3a636f6465": "0x" + hex.EncodeToString(runtimeData), - "0xcf722c0832b5231d35e29f319ff27389f5032bfc7bfc3ba5ed7839f2042fb99f": "0x0000000000000001", - }, - } - - genData, err := json.Marshal(gen) - require.NoError(t, err) - - genPath := filepath.Join(t.TempDir(), "genesis.json") - err = os.WriteFile(genPath, genData, os.ModePerm) - require.NoError(t, err) - - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genPath - - err = dot.InitNode(cfg) - require.NoError(t, err) - - // call another command and test the name - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected string - }{ - { - "Test gossamer --roles --basepath", - []string{"basepath", "roles"}, - []interface{}{cfg.Global.BasePath, "4"}, - globalName, - }, - { - "Test gossamer --roles", - []string{"basepath", "roles"}, - []interface{}{cfg.Global.BasePath, "0"}, - globalName, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - createdCfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, createdCfg.Global.Name) - }) - } -} - -func TestGlobalNodeNamePriorityOrder(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - cfg, testCfgFile := newTestConfigWithFile(t, polkadotConfig) - - // call another command and test the name - testApp := cli.NewApp() - testApp.Writer = io.Discard - - // when name flag is defined - whenNameFlagIsDefined := struct { - description string - flags []string - values []interface{} - expected string - }{ - "Test gossamer --basepath --name --config", - []string{"basepath", "name", "config"}, - []interface{}{cfg.Global.BasePath, "mydefinedname", testCfgFile}, - "mydefinedname", - } - - c := whenNameFlagIsDefined - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - createdCfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, createdCfg.Global.Name) - }) - - // when name flag is not defined - // then should load name from toml if it exists - whenNameIsDefinedOnTomlConfig := struct { - description string - flags []string - values []interface{} - expected string - }{ - "Test gossamer --basepath --config", - []string{"basepath", "config"}, - []interface{}{cfg.Global.BasePath, testCfgFile}, - cfg.Global.Name, - } - - c = whenNameIsDefinedOnTomlConfig - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - createdCfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.Equal(t, c.expected, createdCfg.Global.Name) - }) - - // when there is no name flag and no name in config - // should check the load is initialised or generate a new random name - cfg.Global.Name = "" - - whenThereIsNoName := struct { - description string - flags []string - values []interface{} - }{ - "Test gossamer --basepath", - []string{"basepath"}, - []interface{}{cfg.Global.BasePath}, - } - - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(whenThereIsNoName.description, whenThereIsNoName.flags, whenThereIsNoName.values) - require.NoError(t, err) - createdCfg, err := createDotConfig(ctx) - require.NoError(t, err) - require.NotEmpty(t, createdCfg.Global.Name) - require.NotEqual(t, cfg.Global.Name, createdCfg.Global.Name) - }) -} - -type mockGetStringer struct { - kv map[string]string -} - -func (m *mockGetStringer) String(key string) (value string) { - return m.kv[key] -} - -func newMockGetStringer(keyValue map[string]string) *mockGetStringer { - kv := make(map[string]string, len(keyValue)) - for k, v := range keyValue { - kv[k] = v - } - return &mockGetStringer{kv: kv} -} - -func Test_getLogLevel(t *testing.T) { - t.Parallel() - - testCases := map[string]struct { - flagsKVStore stringKVStore - flagName string - tomlValue string - defaultLevel log.Level - level log.Level - err error - }{ - "no_value_with_default": { - flagsKVStore: newMockGetStringer(map[string]string{}), - defaultLevel: log.Error, - level: log.Error, - }, - "flag_integer_value": { - flagsKVStore: newMockGetStringer(map[string]string{"x": "1"}), - flagName: "x", - level: log.Error, - }, - "flag_string_value": { - flagsKVStore: newMockGetStringer(map[string]string{"x": "error"}), - flagName: "x", - level: log.Error, - }, - "flag_bad_string_value": { - flagsKVStore: newMockGetStringer(map[string]string{"x": "garbage"}), - flagName: "x", - err: errors.New("cannot parse log level string: level is not recognised: garbage"), - }, - "toml_integer_value": { - flagsKVStore: newMockGetStringer(map[string]string{}), - tomlValue: "1", - level: log.Error, - }, - "toml_string_value": { - flagsKVStore: newMockGetStringer(map[string]string{}), - tomlValue: "error", - level: log.Error, - }, - "toml_bad_string_value": { - flagsKVStore: newMockGetStringer(map[string]string{}), - tomlValue: "garbage", - err: errors.New("cannot parse log level string: level is not recognised: garbage"), - }, - "flag_takes_precedence": { - flagsKVStore: newMockGetStringer(map[string]string{"x": "error"}), - flagName: "x", - tomlValue: "warn", - level: log.Error, - }, - } - - for name, testCase := range testCases { - testCase := testCase - t.Run(name, func(t *testing.T) { - t.Parallel() - - level, err := getLogLevel(testCase.flagsKVStore, testCase.flagName, - testCase.tomlValue, testCase.defaultLevel) - - if testCase.err != nil { - assert.EqualError(t, err, testCase.err.Error()) - } else { - assert.NoError(t, err) - } - assert.Equal(t, testCase.level, level) - }) - } -} - -func Test_parseLogLevelString(t *testing.T) { - t.Parallel() - - testCases := map[string]struct { - logLevelString string - logLevel log.Level - err error - }{ - "empty_string": { - err: errors.New("cannot parse log level string: level is not recognised: "), - }, - "valid_integer": { - logLevelString: "1", - logLevel: log.Error, - }, - "minus_one": { - logLevelString: "-1", - err: errors.New("log level integer can only be between 0 and 5 included: log level given: -1"), - }, - "over_5": { - logLevelString: "6", - err: errors.New("log level integer can only be between 0 and 5 included: log level given: 6"), - }, - "valid_string": { - logLevelString: "error", - logLevel: log.Error, - }, - } - - for name, testCase := range testCases { - testCase := testCase - t.Run(name, func(t *testing.T) { - t.Parallel() - - logLevel, err := parseLogLevelString(testCase.logLevelString) - - if testCase.err != nil { - assert.EqualError(t, err, testCase.err.Error()) - } else { - assert.NoError(t, err) - } - assert.Equal(t, testCase.logLevel, logLevel) - }) - } -} - -func Test_setLogConfig(t *testing.T) { - t.Parallel() - - testCases := map[string]struct { - ctx stringKVStore - initialCfg ctoml.Config - initialGlobalCfg dot.GlobalConfig - initialLogCfg dot.LogConfig - expectedCfg ctoml.Config - expectedGlobalCfg dot.GlobalConfig - expectedLogCfg dot.LogConfig - err error - }{ - "no_value": { - ctx: newMockGetStringer(map[string]string{}), - expectedCfg: ctoml.Config{ - Global: ctoml.GlobalConfig{ - LogLvl: log.Info.String(), - }, - }, - expectedGlobalCfg: dot.GlobalConfig{ - LogLvl: log.Info, - }, - expectedLogCfg: dot.LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - }, - "some_values": { - ctx: newMockGetStringer(map[string]string{}), - initialCfg: ctoml.Config{ - Log: ctoml.LogConfig{ - CoreLvl: log.Error.String(), - SyncLvl: log.Debug.String(), - StateLvl: log.Warn.String(), - }, - }, - expectedCfg: ctoml.Config{ - Global: ctoml.GlobalConfig{ - LogLvl: log.Info.String(), - }, - Log: ctoml.LogConfig{ - CoreLvl: log.Error.String(), - SyncLvl: log.Debug.String(), - StateLvl: log.Warn.String(), - }, - }, - expectedGlobalCfg: dot.GlobalConfig{ - LogLvl: log.Info, - }, - expectedLogCfg: dot.LogConfig{ - CoreLvl: log.Error, - DigestLvl: log.Info, - SyncLvl: log.Debug, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Warn, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - }, - } - - for name, testCase := range testCases { - testCase := testCase - t.Run(name, func(t *testing.T) { - t.Parallel() - - err := setLogConfig(testCase.ctx, &testCase.initialCfg, - &testCase.initialGlobalCfg, &testCase.initialLogCfg) - - if testCase.err != nil { - assert.EqualError(t, err, testCase.err.Error()) - } else { - assert.NoError(t, err) - } - - assert.Equal(t, testCase.expectedCfg, testCase.initialCfg) - assert.Equal(t, testCase.expectedGlobalCfg, testCase.initialGlobalCfg) - assert.Equal(t, testCase.expectedLogCfg, testCase.initialLogCfg) - }) - } -} diff --git a/cmd/gossamer/export.go b/cmd/gossamer/export.go deleted file mode 100644 index bd0b5a9f38..0000000000 --- a/cmd/gossamer/export.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "fmt" - "path/filepath" - "time" - - "github.com/ChainSafe/gossamer/dot" - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/ChainSafe/gossamer/lib/utils" - - "github.com/urfave/cli/v2" -) - -// exportAction is the action for the "export" subcommand -func exportAction(ctx *cli.Context) error { - // use --config value as export destination - config := ctx.String(ConfigFlag.Name) - - // check if --config value is set - if config == "" { - return fmt.Errorf("export destination undefined: --config value required") - } - - // check if configuration file already exists at export destination - if utils.PathExists(config) { - logger.Warn("toml configuration file " + config + "already exists") - - // use --force value to force overwrite the toml configuration file - force := ctx.Bool(ForceFlag.Name) - - // prompt user to confirm overwriting existing toml configuration file - if force || confirmMessage("Are you sure you want to overwrite the file? [Y/n]") { - logger.Warn("overwriting toml configuration file " + config) - } else { - logger.Warn( - "exiting without exporting toml configuration file " + config, - ) - return nil // exit if reinitialization is not confirmed - } - } - - cfg, err := createExportConfig(ctx) - if err != nil { - return err - } - - tomlCfg := dotConfigToToml(cfg) - - config = filepath.Clean(config) - err = exportConfig(tomlCfg, config) - if err != nil { - return fmt.Errorf("failed exporting TOML configuration: %w", err) - } - logger.Infof("exported toml configuration to %s", config) - - return nil -} - -func dotConfigToToml(dcfg *dot.Config) *ctoml.Config { - cfg := &ctoml.Config{ - Pprof: ctoml.PprofConfig{ - Enabled: dcfg.Pprof.Enabled, - ListeningAddress: dcfg.Pprof.Settings.ListeningAddress, - BlockRate: dcfg.Pprof.Settings.BlockProfileRate, - MutexRate: dcfg.Pprof.Settings.MutexProfileRate, - }, - } - - cfg.Global = ctoml.GlobalConfig{ - Name: dcfg.Global.Name, - ID: dcfg.Global.ID, - BasePath: dcfg.Global.BasePath, - LogLvl: dcfg.Global.LogLvl.String(), - MetricsAddress: dcfg.Global.MetricsAddress, - RetainBlocks: dcfg.Global.RetainBlocks, - Pruning: string(dcfg.Global.Pruning), - } - - cfg.Log = ctoml.LogConfig{ - CoreLvl: dcfg.Log.CoreLvl.String(), - SyncLvl: dcfg.Log.SyncLvl.String(), - NetworkLvl: dcfg.Log.NetworkLvl.String(), - RPCLvl: dcfg.Log.RPCLvl.String(), - StateLvl: dcfg.Log.StateLvl.String(), - RuntimeLvl: dcfg.Log.RuntimeLvl.String(), - BlockProducerLvl: dcfg.Log.BlockProducerLvl.String(), - FinalityGadgetLvl: dcfg.Log.FinalityGadgetLvl.String(), - } - - cfg.Init = ctoml.InitConfig{ - Genesis: dcfg.Init.Genesis, - } - - cfg.Account = ctoml.AccountConfig{ - Key: dcfg.Account.Key, - Unlock: dcfg.Account.Unlock, - } - - cfg.Core = ctoml.CoreConfig{ - Roles: byte(dcfg.Core.Roles), - BabeAuthority: dcfg.Core.BabeAuthority, - GrandpaAuthority: dcfg.Core.GrandpaAuthority, - GrandpaInterval: uint32(dcfg.Core.GrandpaInterval / time.Second), - } - - cfg.Network = ctoml.NetworkConfig{ - Port: dcfg.Network.Port, - Bootnodes: dcfg.Network.Bootnodes, - ProtocolID: dcfg.Network.ProtocolID, - NoBootstrap: dcfg.Network.NoBootstrap, - NoMDNS: dcfg.Network.NoMDNS, - DiscoveryInterval: int(dcfg.Network.DiscoveryInterval / time.Second), - MinPeers: dcfg.Network.MinPeers, - MaxPeers: dcfg.Network.MaxPeers, - } - - cfg.RPC = ctoml.RPCConfig{ - Enabled: dcfg.RPC.Enabled, - External: dcfg.RPC.External, - Unsafe: dcfg.RPC.Unsafe, - UnsafeExternal: dcfg.RPC.UnsafeExternal, - Port: dcfg.RPC.Port, - Host: dcfg.RPC.Host, - Modules: dcfg.RPC.Modules, - WSPort: dcfg.RPC.WSPort, - WS: dcfg.RPC.WS, - WSExternal: dcfg.RPC.WSExternal, - WSUnsafe: dcfg.RPC.WSUnsafe, - WSUnsafeExternal: dcfg.RPC.WSUnsafeExternal, - } - - return cfg -} diff --git a/cmd/gossamer/export_test.go b/cmd/gossamer/export_test.go deleted file mode 100644 index 117ce0a06c..0000000000 --- a/cmd/gossamer/export_test.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "io" - "testing" - - "github.com/ChainSafe/gossamer/dot" - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/ChainSafe/gossamer/internal/log" - "github.com/stretchr/testify/require" - "github.com/urfave/cli/v2" -) - -// TestExportCommand test "gossamer export --config" -func TestExportCommand(t *testing.T) { - westendDevConfig := dot.WestendDevConfig() - testCfg, testConfig := newTestConfigWithFile(t, westendDevConfig) - testDir := testCfg.Global.BasePath - genFile := dot.NewTestGenesisRawFile(t, testCfg) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testName := "testnode" - testBootnode := "bootnode" - testProtocol := "/protocol/test/0" - - testcases := []struct { - description string - flags []string - values []interface{} - expected *dot.Config - }{ - { - "Test gossamer export --config --genesis --basepath --name --log --force", - []string{"config", "genesis", "basepath", "name", "log", "force"}, - []interface{}{testConfig, genFile, testDir, testName, log.Info.String(), "true"}, - &dot.Config{ - Global: dot.GlobalConfig{ - Name: testName, - ID: testCfg.Global.ID, - BasePath: testCfg.Global.BasePath, - LogLvl: log.Info, - PublishMetrics: testCfg.Global.PublishMetrics, - MetricsAddress: testCfg.Global.MetricsAddress, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: dot.InitConfig{ - Genesis: genFile, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: dot.NetworkConfig{ - Port: testCfg.Network.Port, - Bootnodes: testCfg.Network.Bootnodes, - ProtocolID: testCfg.Network.ProtocolID, - NoBootstrap: testCfg.Network.NoBootstrap, - NoMDNS: testCfg.Network.NoMDNS, - DiscoveryInterval: testCfg.Network.DiscoveryInterval, - MinPeers: testCfg.Network.MinPeers, - MaxPeers: testCfg.Network.MaxPeers, - }, - RPC: testCfg.RPC, - Pprof: testCfg.Pprof, - }, - }, - { - "Test gossamer export --config --genesis --bootnodes --log --force", - []string{"config", "genesis", "bootnodes", "name", "force", "pruning", "retain-blocks"}, - []interface{}{ - testConfig, genFile, testBootnode, - "Westend", "true", "archive", uint32(512)}, - &dot.Config{ - Global: testCfg.Global, - Init: dot.InitConfig{ - Genesis: genFile, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: dot.NetworkConfig{ - Port: testCfg.Network.Port, - Bootnodes: []string{testBootnode}, - ProtocolID: testCfg.Network.ProtocolID, - NoBootstrap: testCfg.Network.NoBootstrap, - NoMDNS: testCfg.Network.NoMDNS, - DiscoveryInterval: testCfg.Network.DiscoveryInterval, - MinPeers: testCfg.Network.MinPeers, - MaxPeers: testCfg.Network.MaxPeers, - }, - RPC: testCfg.RPC, - Pprof: testCfg.Pprof, - }, - }, - { - "Test gossamer export --config --genesis --protocol --log --force", - []string{"config", "genesis", "protocol", "force", "name", "pruning", "retain-blocks"}, - []interface{}{ - testConfig, genFile, testProtocol, - "true", "Westend", "archive", uint32(512)}, - &dot.Config{ - Global: testCfg.Global, - Init: dot.InitConfig{ - Genesis: genFile, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Account: testCfg.Account, - Core: testCfg.Core, - Network: dot.NetworkConfig{ - Port: testCfg.Network.Port, - Bootnodes: []string{testBootnode}, - ProtocolID: testProtocol, - NoBootstrap: testCfg.Network.NoBootstrap, - NoMDNS: testCfg.Network.NoMDNS, - DiscoveryInterval: testCfg.Network.DiscoveryInterval, - MinPeers: testCfg.Network.MinPeers, - MaxPeers: testCfg.Network.MaxPeers, - }, - RPC: testCfg.RPC, - Pprof: testCfg.Pprof, - }, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - - err = exportAction(ctx) - require.NoError(t, err) - - config := ctx.String(ConfigFlag.Name) - - cfg := new(ctoml.Config) - err = loadConfigFromFile(cfg, config) - require.NoError(t, err) - - require.Equal(t, dotConfigToToml(c.expected), cfg) - }) - } -} diff --git a/cmd/gossamer/flags.go b/cmd/gossamer/flags.go deleted file mode 100644 index 076db19db2..0000000000 --- a/cmd/gossamer/flags.go +++ /dev/null @@ -1,554 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "github.com/urfave/cli/v2" -) - -// Node flags -var ( - // UnlockFlag keystore - UnlockFlag = cli.StringFlag{ - Name: "unlock", - Usage: "Unlock an account. eg. --unlock=0,2 to unlock accounts 0 and 2. " + - "Can be used with --password=[password] to avoid prompt. " + - "For multiple passwords, do --password=password1,password2", - } - // ForceFlag disables all confirm prompts ("Y" to all) - ForceFlag = cli.BoolFlag{ - Name: "force", - Usage: "Disable all confirm prompts (the same as answering \"Y\" to all)", - } - // KeyFlag specifies a test keyring account to use - KeyFlag = cli.StringFlag{ - Name: "key", - Usage: "Specify a test keyring account to use: eg --key=alice", - } - // RolesFlag role of the node (see Table D.2) - RolesFlag = cli.StringFlag{ - Name: "roles", - Usage: "Roles of the gossamer node", - } - // RewindFlag rewinds the head of the chain to the given block number. Useful for development - RewindFlag = cli.UintFlag{ - Name: "rewind", - Usage: "Rewind head of chain to the given block number", - } -) - -// Global node configuration flags -var ( - // LogFlag cli service settings - LogFlag = cli.StringFlag{ - Name: "log", - Usage: "Global log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogCoreLevelFlag = cli.StringFlag{ - Name: "log-core", - Usage: "Core package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogDigestLevelFlag = cli.StringFlag{ - Name: "log-digest", - Usage: "Digest package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogSyncLevelFlag = cli.StringFlag{ - Name: "log-sync", - Usage: "Sync package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogNetworkLevelFlag = cli.StringFlag{ - Name: "log-network", - Usage: "Network package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogRPCLevelFlag = cli.StringFlag{ - Name: "log-rpc", - Usage: "RPC package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogStateLevelFlag = cli.StringFlag{ - Name: "log-state", - Usage: "State package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogRuntimeLevelFlag = cli.StringFlag{ - Name: "log-runtime", - Usage: "Runtime package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogBabeLevelFlag = cli.StringFlag{ - Name: "log-babe", - Usage: "BABE package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - LogGrandpaLevelFlag = cli.StringFlag{ - Name: "log-grandpa", - Usage: "Grandpa package log level. Supports levels critical (silent), error, warn, info, debug and trace", - } - - // NameFlag node implementation name - NameFlag = cli.StringFlag{ - Name: "name", - Usage: "Node implementation name", - } - // ChainFlag is chain id used to load default configuration for specified chain - ChainFlag = cli.StringFlag{ - Name: "chain", - Usage: "Chain id used to load default configuration for specified chain", - } - // ConfigFlag TOML configuration file - ConfigFlag = cli.StringFlag{ - Name: "config", - Usage: "TOML configuration file", - } - // BasePathFlag data directory for node - BasePathFlag = cli.StringFlag{ - Name: "basepath", - Aliases: []string{"base-path"}, // base-path is argument used by polkadot node - Usage: "Data directory for the node", - } - PprofServerFlag = cli.BoolFlag{ - Name: "pprofserver", - Usage: "enable or disable the pprof HTTP server", - } - PprofAddressFlag = cli.StringFlag{ - Name: "pprofaddress", - Usage: "pprof HTTP server listening address, if it is enabled.", - } - PprofBlockRateFlag = cli.IntFlag{ - Name: "pprofblockrate", - Value: -1, - Usage: "pprof block rate. See https://pkg.go.dev/runtime#SetBlockProfileRate.", - } - PprofMutexRateFlag = cli.IntFlag{ - Name: "pprofmutexrate", - Value: -1, - Usage: "profiling mutex rate. See https://pkg.go.dev/runtime#SetMutexProfileFraction.", - } - - // PublishMetricsFlag publishes node metrics to prometheus. - PublishMetricsFlag = cli.BoolFlag{ - Name: "publish-metrics", - Aliases: []string{"prometheus-external"}, // prometheus-external is argument used by polkadot node - Usage: "Publish node metrics", - } - - // MetricsAddressFlag sets the metric server listening address - MetricsAddressFlag = cli.StringFlag{ - Name: "metrics-address", - Aliases: []string{"prometheus-port"}, - Usage: "Set the metric server listening address", - } - - // NoTelemetryFlag stops publishing telemetry to default defined in genesis.json - NoTelemetryFlag = cli.BoolFlag{ - Name: "no-telemetry", - Usage: "Disable connecting to the Substrate telemetry server", - } - - // TelemetryURLFlag is URL of the telemetry server to connect to. - // This flag can be passed multiple times as a means to specify multiple - // telemetry endpoints. Verbosity levels range from 0-9, with 0 denoting the - // least verbosity. - // Expected format is 'URL VERBOSITY', e.g. `--telemetry-url 'wss://foo/bar 0'`. - TelemetryURLFlag = cli.StringSliceFlag{ - Name: "telemetry-url", - Usage: `The URL of the telemetry server to connect to, this flag can be - passed multiple times, the verbosity levels range from 0-9, with 0 denoting - least verbosity. - Expected format --telemetry-url 'wss://foo/bar 0'`, - } -) - -// Initialization-only flags -var ( - // GenesisFlag is the path to a genesis JSON file - GenesisFlag = cli.StringFlag{ - Name: "genesis", - Usage: "Path to genesis JSON file", - } -) - -// ImportState-only flags -var ( - StateFlag = cli.StringFlag{ - Name: "state", - Usage: "Path to JSON file consisting of key-value pairs", - } - HeaderFlag = cli.StringFlag{ - Name: "header", - Usage: "Path to JSON file of block header corresponding to the given state", - } - FirstSlotFlag = cli.IntFlag{ - Name: "first-slot", - Usage: "The first BABE slot of the network", - } -) - -// BuildSpec-only flags -var ( - RawFlag = cli.BoolFlag{ - Name: "raw", - Usage: "Output as raw genesis JSON", - } - GenesisSpecFlag = cli.StringFlag{ - Name: "genesis-spec", - Usage: "Path to human-readable genesis JSON file", - } - OutputSpecFlag = cli.StringFlag{ - Name: "output", - Usage: "Path to output the recently created genesis JSON file", - } -) - -// Network service configuration flags -var ( - // PortFlag Set network listening port - PortFlag = cli.UintFlag{ - Name: "port", - Usage: "Set network listening port", - } - // BootnodesFlag Network service settings - BootnodesFlag = cli.StringFlag{ - Name: "bootnodes", - Usage: "Comma separated node URLs for network discovery bootstrap", - } - // ProtocolFlag Set protocol id - ProtocolFlag = cli.StringFlag{ - Name: "protocol", - Usage: "Set protocol id", - } - // NoBootstrapFlag Disables network bootstrapping - NoBootstrapFlag = cli.BoolFlag{ - Name: "nobootstrap", - Usage: "Disables network bootstrapping (mDNS still enabled)", - } - // NoMDNSFlag Disables network mDNS - NoMDNSFlag = cli.BoolFlag{ - Name: "nomdns", - Aliases: []string{"no-mdns"}, // no-mdns is argument used by polkadot node - Usage: "Disables network mDNS discovery", - } - // PublicIPFlag uses the supplied IP for broadcasting - PublicIPFlag = cli.StringFlag{ - Name: "pubip", - Usage: "Overrides public IP address used for peer to peer networking", - } - // PublicDNSFlag uses the supplied DNS for broadcasting - PublicDNSFlag = cli.StringFlag{ - Name: "pubdns", - Usage: "Overrides public DNS used for peer to peer networking", - } - // NodeKeyFlag uses the supplied hex-encoded Ed25519 secret key seed for libp2p networking - NodeKeyFlag = cli.StringFlag{ - Name: "node-key", - Usage: "Overrides the secret Ed25519 key to use for libp2p", - } - // ListenAddressFlag uses the supplied multiaddress string as the address to listen on - ListenAddressFlag = cli.StringFlag{ - Name: "listen-addr", - Usage: "Listen on this multiaddress", - } -) - -// RPC service configuration flags -var ( - // RPCEnabledFlag Enable the HTTP-RPC - RPCEnabledFlag = cli.BoolFlag{ - Name: "rpc", - Usage: "Enable the HTTP-RPC server", - } - // RPCExternalFlag Enable the external HTTP-RPC - RPCExternalFlag = cli.BoolFlag{ - Name: "rpc-external", - Usage: "Enable external HTTP-RPC connections", - } - // RPCEnabledFlag Enable the HTTP-RPC - RPCUnsafeEnabledFlag = cli.BoolFlag{ - Name: "rpc-unsafe", - Usage: "Enable the HTTP-RPC server to unsafe procedures", - } - // RPCExternalFlag Enable the external HTTP-RPC - RPCUnsafeExternalFlag = cli.BoolFlag{ - Name: "rpc-unsafe-external", - Aliases: []string{"unsafe-rpc-external"}, // unsafe-rpc-external is argument used by polkadot node - Usage: "Enable external HTTP-RPC connections to unsafe procedures", - } - // RPCHostFlag HTTP-RPC server listening hostname - RPCHostFlag = cli.StringFlag{ - Name: "rpchost", - Usage: "HTTP-RPC server listening hostname", - } - // RPCPortFlag HTTP-RPC server listening port - RPCPortFlag = cli.IntFlag{ - Name: "rpcport", - Aliases: []string{"rpc-port"}, // rpc-port is argument used by polkadot node - Usage: "HTTP-RPC server listening port", - } - // RPCModulesFlag API modules to enable via HTTP-RPC - RPCModulesFlag = cli.StringFlag{ - Name: "rpcmods", - Aliases: []string{"rpc-methods"}, // rpc-methods is argument used by polkadot node - Usage: "API modules to enable via HTTP-RPC, comma separated list", - } - // WSPortFlag WebSocket server listening port - WSPortFlag = cli.IntFlag{ - Name: "wsport", - Aliases: []string{"ws-port"}, // ws-port is argument used by polkadot node - Usage: "Websockets server listening port", - } - // WSFlag Enable the websockets server - WSFlag = cli.BoolFlag{ - Name: "ws", - Usage: "Enable the websockets server", - } - // WSExternalFlag Enable external websocket connections - WSExternalFlag = cli.BoolFlag{ - Name: "ws-external", - Usage: "Enable external websocket connections", - } - // WSFlag Enable the websockets server - WSUnsafeEnabledFlag = cli.BoolFlag{ - Name: "ws-unsafe", - Usage: "Enable access to websocket unsafe calls", - } - // WSExternalFlag Enable external websocket connections - WSUnsafeExternalFlag = cli.BoolFlag{ - Name: "ws-unsafe-external", - Aliases: []string{"unsafe-ws-external"}, // unsafe-ws-external is argument used by polkadot node - Usage: "Enable external access to websocket unsafe calls", - } - // RPCCorsFlag dummy flag provided to conform to polkadot flags, TODO: see issue #3205 - RPCCorsFlag = cli.StringFlag{ - Name: "rpc-cors", - Usage: "dummy place holder to conform with polkadot cli flags", - } -) - -// Account management flags -var ( - // GenerateFlag Generate a new keypair - GenerateFlag = cli.BoolFlag{ - Name: "generate", - Usage: "Generate a new keypair. If type is not specified, defaults to sr25519", - } - // PasswordFlag Password used to encrypt the keystore. - PasswordFlag = cli.StringFlag{ - Name: "password", - Usage: "Password used to encrypt the keystore. Used with --generate or --unlock", - } - // ImportFlag Import encrypted keystore - ImportFlag = cli.StringFlag{ - Name: "import", - Usage: "Import encrypted keystore file generated with gossamer", - } - // ImportRawFlag imports a raw private key - ImportRawFlag = cli.StringFlag{ - Name: "import-raw", - Usage: "Import a raw private key", - } - // ListFlag List node keys - ListFlag = cli.BoolFlag{ - Name: "list", - Usage: "List node keys", - } - // Ed25519Flag Specify account type ed25519 - Ed25519Flag = cli.BoolFlag{ - Name: "ed25519", - Usage: "Specify account type as ed25519", - } - // Sr25519Flag Specify account type sr25519 - Sr25519Flag = cli.BoolFlag{ - Name: "sr25519", - Usage: "Specify account type as sr25519", - } - // Secp256k1Flag Specify account type secp256k1 - Secp256k1Flag = cli.BoolFlag{ - Name: "secp256k1", - Usage: "Specify account type as secp256k1", - } -) - -// State Prune flags -var ( - // RetainBlockNumberFlag retain number of block from latest block while pruning, - // valid for the use with prune-state subcommand - RetainBlockNumberFlag = cli.Uint64Flag{ - Name: "retain-blocks", - Usage: "Retain number of block from latest block while pruning", - Value: 512, - } - - // PruningFlag triggers the online pruning of historical state tries. - PruningFlag = cli.StringFlag{ - Name: "pruning", - Usage: `State trie online pruning ("archive")`, - Value: "archive", - } -) - -// BABE flags -var ( - ValidatorFlag = cli.BoolFlag{ - Name: "validator", - } -) - -// flag sets that are shared by multiple commands -var ( - // GlobalFlags are flags that are valid for use with the root command and all subcommands - GlobalFlags = []cli.Flag{ - &LogFlag, - &LogCoreLevelFlag, - &LogDigestLevelFlag, - &LogSyncLevelFlag, - &LogNetworkLevelFlag, - &LogRPCLevelFlag, - &LogStateLevelFlag, - &LogRuntimeLevelFlag, - &LogBabeLevelFlag, - &LogGrandpaLevelFlag, - &NameFlag, - &ChainFlag, - &ConfigFlag, - &BasePathFlag, - &PprofServerFlag, - &PprofAddressFlag, - &PprofBlockRateFlag, - &PprofMutexRateFlag, - &RewindFlag, - } - - // StartupFlags are flags that are valid for use with the root command and the export subcommand - StartupFlags = []cli.Flag{ - // keystore flags - &KeyFlag, - &UnlockFlag, - - // network flags - &PortFlag, - &BootnodesFlag, - &ProtocolFlag, - &RolesFlag, - &NoBootstrapFlag, - &NoMDNSFlag, - &PublicIPFlag, - &PublicDNSFlag, - &NodeKeyFlag, - &ListenAddressFlag, - - // rpc flags - &RPCEnabledFlag, - &RPCExternalFlag, - &RPCUnsafeEnabledFlag, - &RPCUnsafeExternalFlag, - &RPCHostFlag, - &RPCPortFlag, - &RPCModulesFlag, - &WSFlag, - &WSExternalFlag, - &WSUnsafeEnabledFlag, - &WSUnsafeExternalFlag, - &WSPortFlag, - &RPCCorsFlag, - - // metrics flag - &PublishMetricsFlag, - &MetricsAddressFlag, - - // telemetry flags - &NoTelemetryFlag, - &TelemetryURLFlag, - - // BABE flags - &ValidatorFlag, - } -) - -// local flag sets for the root gossamer command and all subcommands -var ( - // RootFlags are the flags that are valid for use with the root gossamer command - RootFlags = append(append(GlobalFlags, StartupFlags...), &GenesisFlag) - - // InitFlags are flags that are valid for use with the init subcommand - InitFlags = append([]cli.Flag{ - &ForceFlag, - &GenesisFlag, - &PruningFlag, - &RetainBlockNumberFlag, - }, GlobalFlags...) - - BuildSpecFlags = append([]cli.Flag{ - &RawFlag, - &GenesisSpecFlag, - &OutputSpecFlag, - }, GlobalFlags...) - - // ExportFlags are the flags that are valid for use with the export subcommand - ExportFlags = append([]cli.Flag{ - &ForceFlag, - &GenesisFlag, - }, append(GlobalFlags, StartupFlags...)...) - - // AccountFlags are flags that are valid for use with the account subcommand - AccountFlags = append([]cli.Flag{ - &GenerateFlag, - &PasswordFlag, - &ImportFlag, - &ImportRawFlag, - &ListFlag, - &Ed25519Flag, - &Sr25519Flag, - &Secp256k1Flag, - }, GlobalFlags...) - - ImportStateFlags = []cli.Flag{ - &BasePathFlag, - &ChainFlag, - &ConfigFlag, - &StateFlag, - &HeaderFlag, - &FirstSlotFlag, - } - - PruningFlags = []cli.Flag{ - &ChainFlag, - &ConfigFlag, - &RetainBlockNumberFlag, - } -) - -// FixFlagOrder allow us to use various flag order formats (ie, `gossamer init -// --config config.toml` and `gossamer --config config.toml init`). FixFlagOrder -// only fixes global flags, all local flags must come after the subcommand (ie, -// `gossamer --force --config config.toml init` will not recognise `--force` but -// `gossamer init --force --config config.toml` will work as expected). -func FixFlagOrder(f func(ctx *cli.Context) error) func(*cli.Context) error { - return func(ctx *cli.Context) error { - const trace = "trace" - - // loop through all flags (global and local) - for _, flagName := range ctx.FlagNames() { - - // check if flag is set as global or local flag - if ctx.IsSet(flagName) { - // log global flag if log equals trace - if ctx.String(LogFlag.Name) == trace { - logger.Trace("[cmd] global flag set with name: " + flagName) - } - } else if ctx.IsSet(flagName) { - // check if global flag using set as global flag - err := ctx.Set(flagName, ctx.String(flagName)) - if err == nil { - // log fixed global flag if log equals trace - if ctx.String(LogFlag.Name) == trace { - logger.Trace("[cmd] global flag fixed with name: " + flagName) - } - } else { - // if not global flag, log local flag if log equals trace - if ctx.String(LogFlag.Name) == trace { - logger.Trace("[cmd] local flag set with name: " + flagName) - } - } - } - } - - return f(ctx) - } -} diff --git a/cmd/gossamer/flags_test.go b/cmd/gossamer/flags_test.go deleted file mode 100644 index 662c64a425..0000000000 --- a/cmd/gossamer/flags_test.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "io" - "testing" - - "github.com/ChainSafe/gossamer/dot" - "github.com/stretchr/testify/require" - "github.com/urfave/cli/v2" -) - -// TestFixFlagOrder tests the FixFlagOrder method -func TestFixFlagOrder(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - testCfg, testConfig := newTestConfigWithFile(t, polkadotConfig) - genFile := dot.NewTestGenesisRawFile(t, testCfg) - - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - }{ - { - "Test gossamer --config --genesis --log --force --pruning --retain-blocks", - []string{"config", "genesis", "log", "force", "pruning", "retain-blocks"}, - []interface{}{testConfig, genFile, "trace", true, "archive", uint32(512)}, - }, - { - "Test gossamer --config --genesis --force --log --pruning --retain-blocks", - []string{"config", "genesis", "force", "log", "pruning", "retain-blocks"}, - []interface{}{testConfig, genFile, true, "trace", "archive", uint32(512)}, - }, - { - "Test gossamer --config --force --genesis --log ---pruning --retain-blocks", - []string{"config", "force", "genesis", "log", "pruning", "retain-blocks"}, - []interface{}{testConfig, true, genFile, "trace", "archive", uint32(512)}, - }, - { - "Test gossamer --force --config --genesis --log --pruning --retain-blocks", - []string{"force", "config", "genesis", "log", "pruning", "retain-blocks"}, - []interface{}{true, testConfig, genFile, "trace", "archive", uint32(512)}, - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - - updatedInitAction := FixFlagOrder(initAction) - err = updatedInitAction(ctx) - require.NoError(t, err) - - updatedExportAction := FixFlagOrder(exportAction) - err = updatedExportAction(ctx) - require.NoError(t, err) - }) - } -} diff --git a/cmd/gossamer/import_runtime.go b/cmd/gossamer/import_runtime.go deleted file mode 100644 index c82318bf72..0000000000 --- a/cmd/gossamer/import_runtime.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "encoding/json" - "fmt" - "os" - "path/filepath" - - "github.com/ChainSafe/gossamer/lib/genesis" -) - -func createGenesisWithRuntime(fp string, genesisSpecFilePath string) (string, error) { - runtime, err := os.ReadFile(filepath.Clean(fp)) - if err != nil { - return "", err - } - - genesis, err := genesis.NewGenesisSpecFromJSON(genesisSpecFilePath) - if err != nil { - return "", err - } - - genesis.Genesis.Runtime["system"]["code"] = fmt.Sprintf("0x%x", runtime) - bz, err := json.MarshalIndent(genesis, "", "\t") - if err != nil { - return "", err - } - - return string(bz), nil -} diff --git a/cmd/gossamer/interfaces.go b/cmd/gossamer/interfaces.go deleted file mode 100644 index d4393c1912..0000000000 --- a/cmd/gossamer/interfaces.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2022 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -// Logger is the logger to log messages. -type Logger interface { - Trace(s string) - Debug(s string) - Info(s string) - Warn(s string) - Critical(s string) - Debugf(format string, args ...interface{}) - Infof(format string, args ...interface{}) - Errorf(format string, args ...interface{}) -} diff --git a/cmd/gossamer/main.go b/cmd/gossamer/main.go index 6bc7af0d24..caca7c6c31 100644 --- a/cmd/gossamer/main.go +++ b/cmd/gossamer/main.go @@ -4,467 +4,75 @@ package main import ( - "errors" - "fmt" "os" - "path/filepath" - _ "time/tzdata" + "strings" - "github.com/ChainSafe/gossamer/dot" - "github.com/ChainSafe/gossamer/dot/state" + "github.com/ChainSafe/gossamer/cmd/gossamer/commands" "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/lib/keystore" - "github.com/ChainSafe/gossamer/lib/utils" - "github.com/urfave/cli/v2" - - _ "github.com/breml/rootcerts" -) - -const ( - accountCommandName = "account" - exportCommandName = "export" - initCommandName = "init" - buildSpecCommandName = "build-spec" - importRuntimeCommandName = "import-runtime" - importStateCommandName = "import-state" - pruningStateCommandName = "prune-state" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) -// app is the cli application -var app = cli.NewApp() -var logger Logger = log.NewFromGlobal(log.AddContext("pkg", "cmd")) - -var ( - // exportCommand defines the "export" subcommand (ie, `gossamer export`) - exportCommand = cli.Command{ - Action: FixFlagOrder(exportAction), - Name: exportCommandName, - Usage: "Export configuration values to TOML configuration file", - ArgsUsage: "", - Flags: ExportFlags, - Category: "EXPORT", - Description: "The export command exports configuration values from " + - "the command flags to a TOML configuration file.\n" + - "\tUsage: gossamer export --config chain/test/config.toml --basepath ~/.gossamer/test", - } - // initCommand defines the "init" subcommand (ie, `gossamer init`) - initCommand = cli.Command{ - Action: FixFlagOrder(initAction), - Name: initCommandName, - Usage: "Initialise node databases and load genesis data to state", - ArgsUsage: "", - Flags: InitFlags, - Category: "INIT", - Description: "The init command initialises the node databases and " + - "loads the genesis data from the genesis file to state.\n" + - "\tUsage: gossamer init --genesis genesis.json", - } - // accountCommand defines the "account" subcommand (ie, `gossamer account`) - accountCommand = cli.Command{ - Action: FixFlagOrder(accountAction), - Name: accountCommandName, - Usage: "Create and manage node keystore accounts", - Flags: AccountFlags, - Category: "ACCOUNT", - Description: "The account command is used to manage the gossamer keystore.\n" + - "\tTo generate a new sr25519 account: gossamer account --generate\n" + - "\tTo generate a new ed25519 account: gossamer account --generate --ed25519\n" + - "\tTo generate a new secp256k1 account: gossamer account --generate --secp256k1\n" + - "\tTo import a keystore file: gossamer account --import=path/to/file\n" + - "\tTo list keys: gossamer account --list", - } - // buildSpecCommand creates a raw genesis file from a human readable genesis file. - buildSpecCommand = cli.Command{ - Action: FixFlagOrder(buildSpecAction), - Name: buildSpecCommandName, - Usage: "Generates genesis JSON data, and can convert to raw genesis data", - ArgsUsage: "", - Flags: BuildSpecFlags, - Category: "BUILD-SPEC", - Description: "The build-spec command outputs current genesis JSON data.\n" + - "\tUsage: gossamer build-spec\n" + - "\tTo generate raw genesis file from default: " + - "gossamer build-spec --raw --output genesis.json" + - "\tTo generate raw genesis file from specific genesis file: " + - "gossamer build-spec --raw --genesis genesis-spec.json --output genesis.json", - } - - // importRuntime generates a genesis file given a .wasm runtime binary. - importRuntimeCommand = cli.Command{ - Action: FixFlagOrder(importRuntimeAction), - Name: importRuntimeCommandName, - Usage: "Appends the given .wasm runtime binary to a genesis file", - ArgsUsage: "", - Flags: RootFlags, - Category: "IMPORT-RUNTIME", - Description: "The import-runtime command appends the given .wasm runtime binary to a genesis file.\n" + - "\tUsage: gossamer import-runtime runtime.wasm genesis.json > updated_genesis.json\n", - } - - importStateCommand = cli.Command{ - Action: FixFlagOrder(importStateAction), - Name: importStateCommandName, - Usage: "Import state from a JSON file and set it as the chain head state", - ArgsUsage: "", - Flags: ImportStateFlags, - Category: "IMPORT-STATE", - Description: "The import-state command allows a JSON file containing a given state " + - "in the form of key-value pairs to be imported.\n" + - "Input can be generated by using the RPC function state_getPairs.\n" + - "\tUsage: gossamer import-state --state state.json --header header.json --first-slot \n", - } - - pruningCommand = cli.Command{ - Action: FixFlagOrder(pruneState), - Name: pruningStateCommandName, - Usage: "Prune state will prune the state trie", - ArgsUsage: "", - Flags: PruningFlags, - Description: `prune-state will prune historical state data. - All trie nodes that do not belong to the specified version state will be deleted from the database. - - The default pruning target is the HEAD-256 state`, - } -) - -// init initialises the cli application -func init() { - app.Action = gossamerAction - app.Copyright = "Copyright 2019 ChainSafe Systems Authors" - app.Name = "gossamer" - app.Usage = "Official gossamer command-line interface" - app.Authors = []*cli.Author{{Name: "ChainSafe Systems"}} - app.Version = "0.3.2" - app.Commands = []*cli.Command{ - &exportCommand, - &initCommand, - &accountCommand, - &buildSpecCommand, - &importRuntimeCommand, - &importStateCommand, - &pruningCommand, - } - app.Flags = RootFlags -} - -// main runs the cli application func main() { - if err := app.Run(os.Args); err != nil { - _, _ = fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func importStateAction(ctx *cli.Context) error { - var ( - stateFP, headerFP string - firstSlot int + rootCmd, err := commands.NewRootCommand() + if err != nil { + panic(err) + } + rootCmd.AddCommand( + commands.InitCmd, + commands.AccountCmd, + commands.ImportRuntimeCmd, + commands.BuildSpecCmd, + commands.PruneStateCmd, + commands.ImportStateCmd, + commands.VersionCmd, ) - - if stateFP = ctx.String(StateFlag.Name); stateFP == "" { - return errors.New("must provide argument to --state") - } - - if headerFP = ctx.String(HeaderFlag.Name); headerFP == "" { - return errors.New("must provide argument to --header") - } - - if firstSlot = ctx.Int(FirstSlotFlag.Name); firstSlot == 0 { - return errors.New("must provide argument to --first-slot") - } - - cfg, err := createImportStateConfig(ctx) - if err != nil { - logger.Errorf("failed to create node configuration: %s", err) - return err - } - cfg.Global.BasePath = utils.ExpandDir(cfg.Global.BasePath) - - return dot.ImportState(cfg.Global.BasePath, stateFP, headerFP, uint64(firstSlot)) -} - -// importRuntimeAction generates a genesis file given a .wasm runtime binary. -func importRuntimeAction(ctx *cli.Context) error { - arguments := ctx.Args() - if arguments.Len() != 2 { - return fmt.Errorf("please provide a wasm file and the genesis spec file") - } - - fp := arguments.Get(0) - genesisChainSpec := arguments.Get(1) - - out, err := createGenesisWithRuntime(fp, genesisChainSpec) - if err != nil { - return err + configureCobraCmd("GSSMR") + if err := rootCmd.Execute(); err != nil { + log.Errorf("failed to execute root command: %s", err) + panic(err) } - - fmt.Println(out) - return nil } -// gossamerAction is the root action for the gossamer command, creates a node -// configuration, loads the keystore, initialises the node if not initialised, -// then creates and starts the node and node services -func gossamerAction(ctx *cli.Context) error { - // check for unknown command arguments - if arguments := ctx.Args(); arguments.Len() > 0 { - return fmt.Errorf("%d extra unknown command line argument: %v", arguments.Len(), arguments.Slice()) - } - - // setup gossamer logger - lvl, err := setupLogger(ctx) - if err != nil { - logger.Errorf("failed to setup logger: %s", err) - return err - } - - // create new dot configuration (the dot configuration is created within the - // cli application from the flag values provided) - cfg, err := createDotConfig(ctx) - if err != nil { - logger.Errorf("failed to create node configuration: %s", err) - return err - } - - cfg.Global.LogLvl = lvl - - // expand data directory and update node configuration (performed separately - // from createDotConfig because dot config should not include expanded path) - cfg.Global.BasePath = utils.ExpandDir(cfg.Global.BasePath) - - if !dot.IsNodeInitialised(cfg.Global.BasePath) { - // initialise node (initialise state database and load genesis data) - err = dot.InitNode(cfg) - if err != nil { - logger.Errorf("failed to initialise node: %s", err) - return err +// configureCobraCmd configures the cobra command with the given environment prefix and default base path. +func configureCobraCmd(envPrefix string) { + cobra.OnInitialize(func() { + if err := initEnv(envPrefix); err != nil { + return } - } - - // ensure configuration matches genesis data stored during node initialization - // but do not overwrite configuration if the corresponding flag value is set - err = updateDotConfigFromGenesisData(ctx, cfg) - if err != nil { - logger.Errorf("failed to update config from genesis data: %s", err) - return err - } - - ks := keystore.NewGlobalKeystore() - - if cfg.Account.Key != "" { - err = loadBuiltInTestKeys(cfg.Account.Key, *ks) - if err != nil { - return fmt.Errorf("loading built-in test keys: %s", err) - } - } - - // load user keys if specified - err = unlockKeystore(ks.Acco, cfg.Global.BasePath, cfg.Account.Unlock, ctx.String(PasswordFlag.Name)) - if err != nil { - logger.Errorf("failed to unlock keystore: %s", err) - return err - } - - err = unlockKeystore(ks.Babe, cfg.Global.BasePath, cfg.Account.Unlock, ctx.String(PasswordFlag.Name)) - if err != nil { - logger.Errorf("failed to unlock keystore: %s", err) - return err - } - - err = unlockKeystore(ks.Gran, cfg.Global.BasePath, cfg.Account.Unlock, ctx.String(PasswordFlag.Name)) - if err != nil { - logger.Errorf("failed to unlock keystore: %s", err) - return err - } - - node, err := dot.NewNode(cfg, ks) - if err != nil { - logger.Errorf("failed to create node services: %s", err) - return err - } - - logger.Info("starting node " + node.Name + "...") - - // start node - err = node.Start() - if err != nil { - return err - } - - return nil + }) } -func loadBuiltInTestKeys(accountKey string, ks keystore.GlobalKeystore) (err error) { - sr25519keyRing, err := keystore.NewSr25519Keyring() - if err != nil { - return fmt.Errorf("creating sr22519 keyring: %s", err) - } - - ed25519keyRing, err := keystore.NewEd25519Keyring() - if err != nil { - return fmt.Errorf("creating ed25519 keyring: %s", err) - } - - err = keystore.LoadKeystore(accountKey, ks.Acco, sr25519keyRing) - if err != nil { - return fmt.Errorf("loading account keystore: %w", err) - } - - err = keystore.LoadKeystore(accountKey, ks.Babe, sr25519keyRing) - if err != nil { - return fmt.Errorf("loading babe keystore: %w", err) - } - - err = keystore.LoadKeystore(accountKey, ks.Gran, ed25519keyRing) - if err != nil { - return fmt.Errorf("loading grandpa keystore: %w", err) - } - - return nil -} - -// initAction is the action for the "init" subcommand, initialises the trie and -// state databases and loads initial state from the configured genesis file -func initAction(ctx *cli.Context) error { - lvl, err := setupLogger(ctx) - if err != nil { - logger.Errorf("failed to setup logger: %s", err) - return err - } - - cfg, err := createInitConfig(ctx) - if err != nil { - logger.Errorf("failed to create node configuration: %s", err) +// initEnv sets to use ENV variables if set. +func initEnv(prefix string) error { + if err := copyEnvVars(prefix); err != nil { return err } - cfg.Global.LogLvl = lvl - - // expand data directory and update node configuration (performed separately - // from createDotConfig because dot config should not include expanded path) - cfg.Global.BasePath = utils.ExpandDir(cfg.Global.BasePath) - // check if node has been initialised (expected false - no warning log) - if dot.IsNodeInitialised(cfg.Global.BasePath) { - // use --force value to force initialise the node - force := ctx.Bool(ForceFlag.Name) - - // prompt user to confirm reinitialization - if force || confirmMessage("Are you sure you want to reinitialise the node? [Y/n]") { - logger.Info("reinitialising node at base path " + cfg.Global.BasePath + "...") - } else { - logger.Warn("exiting without reinitialising the node at base path " + cfg.Global.BasePath + "...") - return nil // exit if reinitialization is not confirmed - } - } - - // initialise node (initialise state database and load genesis data) - err = dot.InitNode(cfg) - if err != nil { - logger.Errorf("failed to initialise node: %s", err) - return err - } + // env variables with GSSMR prefix (eg. GSSMR_ROOT) + viper.SetEnvPrefix(prefix) + viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) + viper.AutomaticEnv() return nil } -func buildSpecAction(ctx *cli.Context) error { - // set logger to critical, so output only contains genesis data - err := ctx.Set("log", "critical") - if err != nil { - return err - } - _, err = setupLogger(ctx) - if err != nil { - return err - } - - var bs *dot.BuildSpec - - if genesis := ctx.String(GenesisSpecFlag.Name); genesis != "" { - bspec, e := dot.BuildFromGenesis(genesis, 0) - if e != nil { - return e - } - bs = bspec - } else { - cfg, e := createBuildSpecConfig(ctx) - if e != nil { - return e - } - // expand data directory and update node configuration (performed separately - // from createDotConfig because dot config should not include expanded path) - cfg.Global.BasePath = utils.ExpandDir(cfg.Global.BasePath) - - bspec, e := dot.BuildFromDB(cfg.Global.BasePath) - if e != nil { - return fmt.Errorf("error building spec from database, "+ - "init must be run before build-spec or "+ - "run build-spec with --genesis flag Error %s", e) +// copyEnvVars copies all envs like GSSMRROOT to GSSMR_ROOT, +// so we can support both formats. +func copyEnvVars(prefix string) error { + prefix = strings.ToUpper(prefix) + ps := prefix + "_" + for _, e := range os.Environ() { + kv := strings.SplitN(e, "=", 2) + if len(kv) == 2 { + k, v := kv[0], kv[1] + if strings.HasPrefix(k, prefix) && !strings.HasPrefix(k, ps) { + k2 := strings.Replace(k, prefix, ps, 1) + if err := os.Setenv(k2, v); err != nil { + return err + } + } } - bs = bspec - } - - if bs == nil { - return fmt.Errorf("error building genesis") - } - - var res []byte - - if ctx.Bool(RawFlag.Name) { - res, err = bs.ToJSONRaw() - } else { - res, err = bs.ToJSON() - } - - if err != nil { - return err - } - - if outputPath := ctx.String(OutputSpecFlag.Name); outputPath != "" { - err = dot.WriteGenesisSpecFile(res, outputPath) - if err != nil { - return fmt.Errorf("cannot write genesis spec file: %w", err) - } - } else { - fmt.Printf("%s\n", res) - } - - return nil -} - -func pruneState(ctx *cli.Context) error { - tomlCfg, _, err := setupConfigFromChain(ctx) - if err != nil { - logger.Errorf("failed to load chain configuration: %s", err) - return err - } - - inputDBPath := filepath.Join(tomlCfg.Global.BasePath, "db") - - const uint32Max = ^uint32(0) - flagValue := ctx.Uint64(RetainBlockNumberFlag.Name) - - if uint64(uint32Max) < flagValue { - return fmt.Errorf("retain blocks value overflows uint32 boundaries, must be less than or equal to: %d", uint32Max) - } - - retainBlocks := uint32(flagValue) - - pruner, err := state.NewOfflinePruner(inputDBPath, retainBlocks) - if err != nil { - return err - } - - logger.Info("Offline pruner initialised") - - err = pruner.SetBloomFilter() - if err != nil { - return fmt.Errorf("failed to set keys into bloom filter: %w", err) - } - - err = pruner.Prune() - if err != nil { - return fmt.Errorf("failed to prune: %w", err) } return nil diff --git a/cmd/gossamer/main_test.go b/cmd/gossamer/main_test.go deleted file mode 100644 index 161d06a2f0..0000000000 --- a/cmd/gossamer/main_test.go +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "bufio" - "bytes" - "fmt" - "io" - "os" - "os/exec" - "path/filepath" - "sync" - "syscall" - "testing" - "text/template" - "time" - - "github.com/ChainSafe/gossamer/dot" - "github.com/ChainSafe/gossamer/lib/utils" - "github.com/docker/docker/pkg/reexec" - "github.com/stretchr/testify/require" -) - -type TestExecCommand struct { - *testing.T - Func template.FuncMap - Data interface{} - Cleanup func() - cmd *exec.Cmd - stdout *bufio.Reader - stdin io.WriteCloser - stderr *testlog - Err error -} - -type testgossamer struct { - *TestExecCommand - Datadir string - Etherbase string -} - -type testlog struct { - t *testing.T - mu sync.Mutex - buf bytes.Buffer -} - -func init() { - reexec.Register("gossamer-test", func() { - if err := app.Run(os.Args); err != nil { - _, _ = fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - os.Exit(0) - }) -} - -func (tl *testlog) Write(b []byte) (n int, err error) { - lines := bytes.Split(b, []byte("\n")) - for _, line := range lines { - if len(line) > 0 { - tl.t.Logf("stderr: %s", line) - } - } - tl.mu.Lock() - defer tl.mu.Unlock() - tl.buf.Write(b) - return len(b), err -} - -func (tt *TestExecCommand) Run(name string, args ...string) { - tt.stderr = &testlog{t: tt.T} - tt.cmd = &exec.Cmd{ - Path: reexec.Self(), - Args: append([]string{name}, args...), - Stderr: tt.stderr, - } - stdout, err := tt.cmd.StdoutPipe() - require.Nil(tt, err) - tt.stdout = bufio.NewReader(stdout) - if tt.stdin, err = tt.cmd.StdinPipe(); err != nil { - require.Nil(tt, err) - } - if err := tt.cmd.Start(); err != nil { - require.Nil(tt, err) - } -} - -func (tt *TestExecCommand) ExpectExit() { - var output []byte - tt.withKillTimeout(func() { - output, _ = io.ReadAll(tt.stdout) - }) - tt.WaitExit() - if tt.Cleanup != nil { - tt.Cleanup() - } - if len(output) > 0 { - tt.Errorf("stdout unmatched:\n%s", output) - } -} - -func (tt *TestExecCommand) GetOutput() (stdout []byte, stderr []byte) { - tt.withSigTimeout(func() { - stdout, _ = io.ReadAll(tt.stdout) - stderr = tt.stderr.buf.Bytes() - }) - tt.WaitExit() - if tt.Cleanup != nil { - tt.Cleanup() - } - - return stdout, stderr -} - -func (tt *TestExecCommand) WaitExit() { - tt.Err = tt.cmd.Wait() -} - -func (tt *TestExecCommand) withKillTimeout(fn func()) { - timeout := time.AfterFunc(5*time.Second, func() { - tt.Log("process timeout, killing") - tt.Kill() - }) - defer timeout.Stop() - fn() -} - -func (tt *TestExecCommand) withSigTimeout(fn func()) { - timeout := time.AfterFunc(5*time.Second, func() { - tt.Log("process timeout, will signal") - tt.Signal() - }) - defer timeout.Stop() - fn() -} - -func (tt *TestExecCommand) Kill() { - _ = tt.cmd.Process.Kill() - if tt.Cleanup != nil { - tt.Cleanup() - } -} - -func (tt *TestExecCommand) Signal() { - err := tt.cmd.Process.Signal(syscall.SIGINT) - require.Nil(tt.T, err) - if tt.Cleanup != nil { - tt.Cleanup() - } -} - -func (tt *TestExecCommand) Expect(tplsource string) { - tpl := template.Must(template.New("").Funcs(tt.Func).Parse(tplsource)) - wantbuf := new(bytes.Buffer) - require.Nil(tt, tpl.Execute(wantbuf, tt.Data)) - - want := bytes.TrimPrefix(wantbuf.Bytes(), []byte("\n")) - tt.matchExactOutput(want) - - tt.Logf("stdout matched:\n%s", want) -} - -func (tt *TestExecCommand) matchExactOutput(want []byte) { - buf := make([]byte, len(want)) - n := 0 - tt.withKillTimeout(func() { n, _ = io.ReadFull(tt.stdout, buf) }) - buf = buf[:n] - if n < len(want) || !bytes.Equal(buf, want) { - buf = append(buf, make([]byte, tt.stdout.Buffered())...) - _, _ = tt.stdout.Read(buf[n:]) - require.Equal(tt, want, buf) - } -} - -func (tt *TestExecCommand) StderrText() string { - tt.stderr.mu.Lock() - defer tt.stderr.mu.Unlock() - return tt.stderr.buf.String() -} - -func newTestCommand(t *testing.T, data interface{}) *TestExecCommand { - return &TestExecCommand{T: t, Data: data} -} - -func runTestGossamer(t *testing.T, args ...string) *testgossamer { - tt := &testgossamer{} - tt.TestExecCommand = newTestCommand(t, tt) - tt.Run("gossamer-test", args...) - return tt -} - -var testWestendDevConfigPath string - -func TestMain(m *testing.M) { - if reexec.Init() { - return - } - - rootPath, err := utils.GetProjectRootPath() - if err != nil { - panic(err) - } - - testWestendDevConfigPath = filepath.Join(rootPath, "./chain/westend-dev/config.toml") - os.Exit(m.Run()) -} - -func TestInvalidCommand(t *testing.T) { - gossamer := runTestGossamer(t, "potato") - - gossamer.ExpectExit() - - expectedMessages := []string{ - "1 extra unknown command line argument: [potato]\n", - } - - for _, m := range expectedMessages { - require.Contains(t, gossamer.StderrText(), m) - } -} - -func TestInitCommand_RenameNodeWhenCalled(t *testing.T) { - genesisPath := utils.GetWestendDevRawGenesisPath(t) - - tempDir := t.TempDir() - - nodeName := dot.RandomNodeName() - init := runTestGossamer(t, - "init", - "--basepath", tempDir, - "--genesis", genesisPath, - "--name", nodeName, - "--config", testWestendDevConfigPath, - "--force", - ) - - stdout, stderr := init.GetOutput() - - t.Log("init gossamer output, ", "stdout", string(stdout), "stderr", string(stderr)) - - // should contains the name defined in name flag - require.Contains(t, string(stdout), nodeName) - - init = runTestGossamer(t, - "init", - "--basepath", tempDir, - "--genesis", genesisPath, - "--config", testWestendDevConfigPath, - "--force", - ) - - stdout, stderr = init.GetOutput() - - t.Log("init gossamer output, ", "stdout", string(stdout), "stderr", string(stderr)) - - // should not contains the name from the last init - require.NotContains(t, string(stdout), nodeName) -} - -func TestBuildSpecCommandWithOutput(t *testing.T) { - const tmpOutputfile = "/tmp/raw-genesis-spec-output.json" - - buildSpecCommand := runTestGossamer(t, - "build-spec", - "--raw", - "--genesis-spec", utils.GetWestendDevRawGenesisPath(t), - "--output", tmpOutputfile) - - time.Sleep(5 * time.Second) - - _, err := os.Stat(tmpOutputfile) - require.False(t, os.IsNotExist(err)) - defer os.Remove(tmpOutputfile) - - outb, errb := buildSpecCommand.GetOutput() - require.Empty(t, outb) - require.Empty(t, errb) -} diff --git a/cmd/gossamer/toml_config.go b/cmd/gossamer/toml_config.go deleted file mode 100644 index eb719f8f5d..0000000000 --- a/cmd/gossamer/toml_config.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "fmt" - "io/fs" - "os" - "path/filepath" - "reflect" - "unicode" - - "github.com/ChainSafe/gossamer/chain" - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/naoina/toml" -) - -func loadConfigFromResource(cfg *ctoml.Config, resourcePath string) error { - file, err := chain.DefaultConfigTomlFiles.Open(resourcePath) - if err != nil { - return fmt.Errorf("opening toml configuration file: %w", err) - } - return loadConfig(cfg, file) -} - -func loadConfigFromFile(cfg *ctoml.Config, fp string) error { - fp, err := filepath.Abs(fp) - if err != nil { - logger.Errorf("failed to create absolute path for toml configuration file: %s", err) - return err - } - file, err := os.Open(filepath.Clean(fp)) - if err != nil { - logger.Errorf("failed to open toml configuration file: %s", err) - return err - } - return loadConfig(cfg, file) -} - -// loadConfig loads the values from the toml configuration file into the provided configuration -func loadConfig(cfg *ctoml.Config, file fs.File) (err error) { - var tomlSettings = toml.Config{ - NormFieldName: func(rt reflect.Type, key string) string { - return key - }, - FieldToKey: func(rt reflect.Type, field string) string { - return field - }, - MissingField: func(rt reflect.Type, field string) error { - link := "" - if unicode.IsUpper(rune(rt.Name()[0])) && rt.PkgPath() != "main" { - link = fmt.Sprintf(", see https://godoc.org/%s#%s for available fields", rt.PkgPath(), rt.Name()) - } - return fmt.Errorf("field '%s' is not defined in %s%s", field, rt.String(), link) - }, - } - - if err = tomlSettings.NewDecoder(file).Decode(cfg); err != nil { - logger.Errorf("failed to decode configuration: %s", err) - return err - } - - return nil -} - -// exportConfig exports a dot configuration to a toml configuration file -func exportConfig(cfg *ctoml.Config, targetPath string) (err error) { - b, err := toml.Marshal(*cfg) - if err != nil { - return fmt.Errorf("failed to marshal configuration: %w", err) - } - - // read and write for the current user - // read only for the user group and others - const perms = fs.FileMode(0644) - err = os.WriteFile(targetPath, b, perms) - if err != nil { - return fmt.Errorf("failed to write configuration to file: %w", err) - } - - return nil -} diff --git a/cmd/gossamer/toml_config_test.go b/cmd/gossamer/toml_config_test.go deleted file mode 100644 index 2081c45456..0000000000 --- a/cmd/gossamer/toml_config_test.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "path/filepath" - "testing" - - "github.com/ChainSafe/gossamer/dot" - "github.com/ChainSafe/gossamer/lib/utils" - - "github.com/stretchr/testify/require" -) - -// TestLoadConfig tests loading a toml configuration file -func TestLoadConfig(t *testing.T) { - polkadotConfig := dot.PolkadotConfig() - cfg, cfgFile := newTestConfigWithFile(t, polkadotConfig) - - genFile := dot.NewTestGenesisRawFile(t, cfg) - - cfg.Init.Genesis = genFile - - err := dot.InitNode(cfg) - require.NoError(t, err) - - err = loadConfigFromFile(dotConfigToToml(cfg), cfgFile) - require.NoError(t, err) -} - -// TestLoadConfigWestendDev tests loading the toml configuration file for westend-dev -func TestLoadConfigWestendDev(t *testing.T) { - cfg := dot.WestendDevConfig() - require.NotNil(t, cfg) - - cfg.Global.BasePath = t.TempDir() - cfg.Init.Genesis = utils.GetWestendDevRawGenesisPath(t) - - err := dot.InitNode(cfg) - require.NoError(t, err) - - projectRootPath := utils.GetProjectRootPathTest(t) - configPath := filepath.Join(projectRootPath, "./chain/westend-dev/config.toml") - - err = loadConfigFromFile(dotConfigToToml(cfg), configPath) - require.NoError(t, err) -} - -func TestLoadConfigKusama(t *testing.T) { - cfg := dot.KusamaConfig() - require.NotNil(t, cfg) - - cfg.Global.BasePath = t.TempDir() - cfg.Init.Genesis = utils.GetKusamaGenesisPath(t) - - err := dot.InitNode(cfg) - require.NoError(t, err) - - projectRootPath := utils.GetProjectRootPathTest(t) - kusamaConfigPath := filepath.Join(projectRootPath, "./chain/kusama/config.toml") - - err = loadConfigFromFile(dotConfigToToml(cfg), kusamaConfigPath) - require.NoError(t, err) -} diff --git a/cmd/gossamer/utils.go b/cmd/gossamer/utils.go deleted file mode 100644 index 41c8592cd9..0000000000 --- a/cmd/gossamer/utils.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "bufio" - "fmt" - "os" - "path/filepath" - "strings" - "syscall" - "testing" - - "github.com/ChainSafe/gossamer/dot" - "github.com/ChainSafe/gossamer/internal/log" - "github.com/stretchr/testify/require" - "github.com/urfave/cli/v2" - terminal "golang.org/x/term" -) - -const confirmCharacter = "Y" - -// setupLogger sets up the global Gossamer logger. -func setupLogger(ctx *cli.Context) (level log.Level, err error) { - level, err = getLogLevel(ctx, LogFlag.Name, "", log.Info) - if err != nil { - return level, err - } - - log.Patch( - log.SetWriter(os.Stdout), - log.SetFormat(log.FormatConsole), - log.SetCallerFile(true), - log.SetCallerLine(true), - log.SetLevel(level), - ) - - return level, nil -} - -// getPassword prompts user to enter password -func getPassword(msg string) []byte { - for { - fmt.Println(msg) - fmt.Print("> ") - password, err := terminal.ReadPassword(syscall.Stdin) - if err != nil { - fmt.Printf("invalid input: %s\n", err) - } else { - fmt.Printf("\n") - return password - } - } -} - -// confirmMessage prompts user to confirm message and returns true if "Y" -func confirmMessage(msg string) bool { - reader := bufio.NewReader(os.Stdin) - fmt.Println(msg) - fmt.Print("> ") - for { - text, _ := reader.ReadString('\n') - text = strings.ReplaceAll(text, "\n", "") - return strings.Compare(confirmCharacter, strings.ToUpper(text)) == 0 - } -} - -// newTestConfig returns a new test configuration using the provided basepath -func newTestConfig(t *testing.T, chainConfig *dot.Config) *dot.Config { - dir := t.TempDir() - - //westendDevConfig := dot.WestendDevConfig() - cfg := &dot.Config{ - Global: dot.GlobalConfig{ - Name: chainConfig.Global.Name, - ID: chainConfig.Global.ID, - BasePath: dir, - LogLvl: log.Info, - PublishMetrics: chainConfig.Global.PublishMetrics, - MetricsAddress: chainConfig.Global.MetricsAddress, - RetainBlocks: chainConfig.Global.RetainBlocks, - Pruning: chainConfig.Global.Pruning, - TelemetryURLs: chainConfig.Global.TelemetryURLs, - }, - Log: dot.LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: chainConfig.Init, - Account: chainConfig.Account, - Core: chainConfig.Core, - Network: chainConfig.Network, - RPC: chainConfig.RPC, - System: chainConfig.System, - Pprof: chainConfig.Pprof, - } - - return cfg -} - -// newTestConfigWithFile returns a new test configuration and a temporary configuration file -func newTestConfigWithFile(t *testing.T, chainConfig *dot.Config) (cfg *dot.Config, configPath string) { - t.Helper() - - cfg = newTestConfig(t, chainConfig) - - tomlCfg := dotConfigToToml(cfg) - - configPath = filepath.Join(cfg.Global.BasePath, "config.toml") - err := exportConfig(tomlCfg, configPath) - require.NoError(t, err) - - return cfg, configPath -} diff --git a/cmd/gossamer/utils_test.go b/cmd/gossamer/utils_test.go deleted file mode 100644 index c2c2b0323a..0000000000 --- a/cmd/gossamer/utils_test.go +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package main - -import ( - "errors" - "flag" - "fmt" - "io" - "strconv" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "github.com/urfave/cli/v2" -) - -// newTestContext creates a cli context for a test given a set of flags and values -func newTestContext(description string, flags []string, values []interface{}) (*cli.Context, error) { - if len(flags) != len(values) { - return nil, fmt.Errorf( - "number of flags and values are not same, number of flags: %d, number of values: %d", - len(flags), len(values)) - } - - // Define flags with its name and default value - set := flag.NewFlagSet(description, 0) - for i := range values { - switch v := values[i].(type) { - case bool: - set.Bool(flags[i], v, "") - case string: - set.String(flags[i], v, "") - case uint: - set.Uint(flags[i], v, "") - case int64: - set.Int64(flags[i], v, "") - case uint32: - set.Uint64(flags[i], uint64(v), "") - case []string: - set.Var(&cli.StringSlice{}, flags[i], "") - default: - return nil, fmt.Errorf("unexpected cli value type: %T", values[i]) - } - } - - ctx := cli.NewContext(app, set, nil) - - for i := range values { - switch v := values[i].(type) { - case bool: - err := ctx.Set(flags[i], strconv.FormatBool(v)) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - case string: - err := ctx.Set(flags[i], values[i].(string)) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - case uint: - err := ctx.Set(flags[i], strconv.Itoa(int(values[i].(uint)))) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - case int64: - err := ctx.Set(flags[i], strconv.Itoa(int(values[i].(int64)))) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - case uint32: - err := ctx.Set(flags[i], strconv.Itoa(int(values[i].(uint32)))) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - case []string: - for _, str := range values[i].([]string) { - err := ctx.Set(flags[i], str) - if err != nil { - return nil, fmt.Errorf("failed to set cli flag: %T, err: %w", flags[i], err) - } - } - default: - return nil, fmt.Errorf("unexpected cli value type: %T", values[i]) - } - } - - return ctx, nil -} - -func Test_setupLogger(t *testing.T) { - testApp := cli.NewApp() - testApp.Writer = io.Discard - - testcases := []struct { - description string - flags []string - values []interface{} - expected error - }{ - { - "Test gossamer --log info", - []string{"log"}, - []interface{}{"info"}, - nil, - }, - { - "Test gossamer --log debug", - []string{"log"}, - []interface{}{"debug"}, - nil, - }, - { - "Test gossamer --log trace", - []string{"log"}, - []interface{}{"trace"}, - nil, - }, - { - "Test gossamer --log blah", - []string{"log"}, - []interface{}{"blah"}, - errors.New("cannot parse log level string: level is not recognised: blah"), - }, - } - - for _, c := range testcases { - c := c // bypass scopelint false positive - t.Run(c.description, func(t *testing.T) { - ctx, err := newTestContext(c.description, c.flags, c.values) - require.NoError(t, err) - - _, err = setupLogger(ctx) - if c.expected != nil { - assert.EqualError(t, err, c.expected.Error()) - } else { - assert.NoError(t, err) - } - }) - } -} diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000000..09a324867d --- /dev/null +++ b/config/config.go @@ -0,0 +1,631 @@ +// Copyright 2021 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package config + +import ( + "fmt" + "path/filepath" + "time" + + "github.com/ChainSafe/gossamer/dot/state/pruner" + "github.com/ChainSafe/gossamer/lib/common" + "github.com/ChainSafe/gossamer/lib/genesis" + "github.com/ChainSafe/gossamer/lib/os" + "github.com/ChainSafe/gossamer/lib/runtime/wasmer" +) + +const ( + // uint32Max is the maximum value of a uint32 + uint32Max = ^uint32(0) + // defaultChainSpecFile is the default genesis file + defaultChainSpecFile = "chain-spec-raw.json" + // defaultBasePath is the default base path + defaultBasePath = "~/.gossamer/gssmr" + // DefaultLogLevel is the default log level + DefaultLogLevel = "info" + // DefaultPrometheusPort is the default prometheus port + DefaultPrometheusPort = uint32(9876) + // DefaultRetainBlocks is the default number of blocks to retain + DefaultRetainBlocks = 512 + // DefaultPruning is the default pruning strategy + DefaultPruning = pruner.Archive + + // defaultAccount is the default account key + defaultAccount = "alice" + + // DefaultRole is the default node role + DefaultRole = common.AuthorityRole + // DefaultWasmInterpreter is the default wasm interpreter + DefaultWasmInterpreter = wasmer.Name + + // DefaultNetworkPort is the default network port + DefaultNetworkPort = 7001 + // DefaultDiscoveryInterval is the default discovery interval + DefaultDiscoveryInterval = 10 * time.Second + // DefaultMinPeers is the default minimum number of peers + DefaultMinPeers = 0 + // DefaultMaxPeers is the default maximum number of peers + DefaultMaxPeers = 50 + + // DefaultRPCPort is the default RPC port + DefaultRPCPort = 8545 + // DefaultRPCHost is the default RPC host + DefaultRPCHost = "localhost" + // DefaultWSPort is the default WS port + DefaultWSPort = 8546 + + // DefaultPprofListenAddress is the default pprof listen address + DefaultPprofListenAddress = "localhost:6060" + + // DefaultSystemName is the default system name + DefaultSystemName = "Gossamer" + // DefaultSystemVersion is the default system version + DefaultSystemVersion = "0.3.2" +) + +// DefaultRPCModules the default RPC modules +var DefaultRPCModules = []string{ + "system", + "author", + "chain", + "state", + "rpc", + "grandpa", + "offchain", + "childstate", + "syncstate", + "payment", +} + +// Config defines the configuration for the gossamer node +type Config struct { + BaseConfig `mapstructure:",squash"` + Log *LogConfig `mapstructure:"log"` + Account *AccountConfig `mapstructure:"account"` + Core *CoreConfig `mapstructure:"core"` + Network *NetworkConfig `mapstructure:"network"` + State *StateConfig `mapstructure:"state"` + RPC *RPCConfig `mapstructure:"rpc"` + Pprof *PprofConfig `mapstructure:"pprof"` + + // System holds the system information + // Do not export this field, as it is not part of the config file + // and should be set in the source code + System *SystemConfig +} + +// ValidateBasic performs basic validation on the config +func (cfg *Config) ValidateBasic() error { + if err := cfg.BaseConfig.ValidateBasic(); err != nil { + return fmt.Errorf("base config: %w", err) + } + if err := cfg.Log.ValidateBasic(); err != nil { + return fmt.Errorf("log config: %w", err) + } + if err := cfg.Account.ValidateBasic(); err != nil { + return fmt.Errorf("account config: %w", err) + } + if err := cfg.Core.ValidateBasic(); err != nil { + return fmt.Errorf("core config: %w", err) + } + if err := cfg.Network.ValidateBasic(); err != nil { + return fmt.Errorf("network config: %w", err) + } + if err := cfg.State.ValidateBasic(); err != nil { + return fmt.Errorf("state config: %w", err) + } + if err := cfg.RPC.ValidateBasic(); err != nil { + return fmt.Errorf("rpc config: %w", err) + } + if err := cfg.Pprof.ValidateBasic(); err != nil { + return fmt.Errorf("pprof config: %w", err) + } + return nil +} + +// BaseConfig is to marshal/unmarshal toml global config vars +type BaseConfig struct { + Name string `mapstructure:"name,omitempty"` + ID string `mapstructure:"id,omitempty"` + BasePath string `mapstructure:"base-path,omitempty"` + ChainSpec string `mapstructure:"chain-spec,omitempty"` + LogLevel string `mapstructure:"log-level,omitempty"` + PrometheusPort uint32 `mapstructure:"prometheus-port,omitempty"` + RetainBlocks uint32 `mapstructure:"retain-blocks,omitempty"` + Pruning pruner.Mode `mapstructure:"pruning,omitempty"` + PrometheusExternal bool `mapstructure:"prometheus-external,omitempty"` + NoTelemetry bool `mapstructure:"no-telemetry"` + TelemetryURLs []genesis.TelemetryEndpoint `mapstructure:"telemetry-urls,omitempty"` +} + +// SystemConfig represents the system configuration +type SystemConfig struct { + SystemName string + SystemVersion string +} + +// LogConfig represents the log levels for individual packages +type LogConfig struct { + Core string `mapstructure:"core,omitempty"` + Digest string `mapstructure:"digest,omitempty"` + Sync string `mapstructure:"sync,omitempty"` + Network string `mapstructure:"network,omitempty"` + RPC string `mapstructure:"rpc,omitempty"` + State string `mapstructure:"state,omitempty"` + Runtime string `mapstructure:"runtime,omitempty"` + Babe string `mapstructure:"babe,omitempty"` + Grandpa string `mapstructure:"grandpa,omitempty"` + Wasmer string `mapstructure:"wasmer,omitempty"` +} + +// AccountConfig is to marshal/unmarshal account config vars +type AccountConfig struct { + Key string `mapstructure:"key,omitempty"` + Unlock string `mapstructure:"unlock,omitempty"` +} + +// NetworkConfig is to marshal/unmarshal toml network config vars +type NetworkConfig struct { + Port uint16 `mapstructure:"port"` + Bootnodes []string `mapstructure:"bootnodes"` + ProtocolID string `mapstructure:"protocol"` + NoBootstrap bool `mapstructure:"no-bootstrap"` + NoMDNS bool `mapstructure:"no-mdns"` + MinPeers int `mapstructure:"min-peers"` + MaxPeers int `mapstructure:"max-peers"` + PersistentPeers []string `mapstructure:"persistent-peers"` + DiscoveryInterval time.Duration `mapstructure:"discovery-interval"` + PublicIP string `mapstructure:"public-ip"` + PublicDNS string `mapstructure:"public-dns"` + NodeKey string `mapstructure:"node-key"` + ListenAddress string `mapstructure:"listen-addr"` +} + +// CoreConfig is to marshal/unmarshal toml core config vars +type CoreConfig struct { + Role common.NetworkRole `mapstructure:"role,omitempty"` + BabeAuthority bool `mapstructure:"babe-authority"` + GrandpaAuthority bool `mapstructure:"grandpa-authority"` + WasmInterpreter string `mapstructure:"wasm-interpreter,omitempty"` + GrandpaInterval time.Duration `mapstructure:"grandpa-interval,omitempty"` +} + +// StateConfig contains the configuration for the state. +type StateConfig struct { + Rewind uint `mapstructure:"rewind,omitempty"` +} + +// RPCConfig is to marshal/unmarshal toml RPC config vars +type RPCConfig struct { + RPCExternal bool `mapstructure:"rpc-external,omitempty"` + UnsafeRPC bool `mapstructure:"unsafe-rpc,omitempty"` + UnsafeRPCExternal bool `mapstructure:"unsafe-rpc-external,omitempty"` + Port uint32 `mapstructure:"port,omitempty"` + Host string `mapstructure:"host,omitempty"` + Modules []string `mapstructure:"modules,omitempty"` + WSPort uint32 `mapstructure:"ws-port,omitempty"` + WSExternal bool `mapstructure:"ws-external,omitempty"` + UnsafeWSExternal bool `mapstructure:"unsafe-ws-external,omitempty"` +} + +// PprofConfig contains the configuration for Pprof. +type PprofConfig struct { + Enabled bool `mapstructure:"enabled,omitempty"` + ListeningAddress string `mapstructure:"listening-address,omitempty"` + BlockProfileRate int `mapstructure:"block-profile-rate,omitempty"` + MutexProfileRate int `mapstructure:"mutex-profile-rate,omitempty"` +} + +// ValidateBasic does the basic validation on BaseConfig +func (b *BaseConfig) ValidateBasic() error { + if b.Name == "" { + return fmt.Errorf("name cannot be empty") + } + if b.ID == "" { + return fmt.Errorf("id cannot be empty") + } + if b.BasePath == "" { + return fmt.Errorf("base-path directory cannot be empty") + } + if b.ChainSpec == "" { + return fmt.Errorf("chain-spec cannot be empty") + } + if b.PrometheusPort == 0 { + return fmt.Errorf("prometheus port cannot be empty") + } + if uint32Max < b.RetainBlocks { + return fmt.Errorf( + "retain-blocks value overflows uint32 boundaries, must be less than or equal to: %d", + uint32Max, + ) + } + + return nil +} + +// ValidateBasic does the basic validation on LogConfig +func (l *LogConfig) ValidateBasic() error { + return nil +} + +// ValidateBasic does the basic validation on AccountConfig +func (a *AccountConfig) ValidateBasic() error { + if a.Key == "" { + return fmt.Errorf("key cannot be empty") + } + + return nil +} + +// ValidateBasic does the basic validation on NetworkConfig +func (n *NetworkConfig) ValidateBasic() error { + if n.Port == 0 { + return fmt.Errorf("port cannot be empty") + } + if n.ProtocolID == "" { + return fmt.Errorf("protocol cannot be empty") + } + if n.DiscoveryInterval == 0 { + return fmt.Errorf("discovery-interval cannot be empty") + } + + return nil +} + +// ValidateBasic does the basic validation on CoreConfig +func (c *CoreConfig) ValidateBasic() error { + if c.WasmInterpreter == "" { + return fmt.Errorf("wasm-interpreter cannot be empty") + } + if c.WasmInterpreter != wasmer.Name { + return fmt.Errorf("wasm-interpreter is invalid") + } + + return nil +} + +// ValidateBasic does the basic validation on StateConfig +func (s *StateConfig) ValidateBasic() error { + return nil +} + +// ValidateBasic does the basic validation on RPCConfig +func (r *RPCConfig) ValidateBasic() error { + if r.IsRPCEnabled() { + if r.Port == 0 { + return fmt.Errorf("port cannot be empty") + } + if r.Host == "" { + return fmt.Errorf("host cannot be empty") + } + } + if r.IsWSEnabled() && r.WSPort == 0 { + return fmt.Errorf("ws port cannot be empty") + } + + return nil +} + +// ValidateBasic does the basic validation on StateConfig +func (p *PprofConfig) ValidateBasic() error { + if p.Enabled && p.ListeningAddress == "" { + return fmt.Errorf("listening address cannot be empty") + } + + return nil +} + +// IsRPCEnabled returns true if RPC is enabled. +func (r *RPCConfig) IsRPCEnabled() bool { + return r.UnsafeRPCExternal || r.RPCExternal || r.UnsafeRPC +} + +// IsWSEnabled returns true if WS is enabled. +func (r *RPCConfig) IsWSEnabled() bool { + return r.WSExternal || r.UnsafeWSExternal +} + +// DefaultConfig returns the default configuration. +func DefaultConfig() *Config { + return &Config{ + BaseConfig: BaseConfig{ + Name: "Gossamer", + ID: "gssmr", + BasePath: defaultBasePath, + ChainSpec: "", + LogLevel: DefaultLogLevel, + PrometheusPort: DefaultPrometheusPort, + RetainBlocks: DefaultRetainBlocks, + Pruning: DefaultPruning, + PrometheusExternal: false, + NoTelemetry: false, + TelemetryURLs: nil, + }, + Log: &LogConfig{ + Core: DefaultLogLevel, + Digest: DefaultLogLevel, + Sync: DefaultLogLevel, + Network: DefaultLogLevel, + RPC: DefaultLogLevel, + State: DefaultLogLevel, + Runtime: DefaultLogLevel, + Babe: DefaultLogLevel, + Grandpa: DefaultLogLevel, + Wasmer: DefaultLogLevel, + }, + Account: &AccountConfig{ + Key: defaultAccount, + Unlock: "", + }, + Core: &CoreConfig{ + Role: DefaultRole, + BabeAuthority: true, + GrandpaAuthority: true, + WasmInterpreter: DefaultWasmInterpreter, + GrandpaInterval: DefaultDiscoveryInterval, + }, + Network: &NetworkConfig{ + Port: DefaultNetworkPort, + Bootnodes: nil, + ProtocolID: "/gossamer/gssmr/0", + NoBootstrap: false, + NoMDNS: true, + MinPeers: DefaultMinPeers, + MaxPeers: DefaultMaxPeers, + PersistentPeers: nil, + DiscoveryInterval: DefaultDiscoveryInterval, + PublicIP: "", + PublicDNS: "", + NodeKey: "", + ListenAddress: "", + }, + State: &StateConfig{ + Rewind: 0, + }, + RPC: &RPCConfig{ + RPCExternal: false, + UnsafeRPC: false, + UnsafeRPCExternal: false, + Port: DefaultRPCPort, + Host: DefaultRPCHost, + Modules: DefaultRPCModules, + WSPort: DefaultWSPort, + WSExternal: false, + UnsafeWSExternal: false, + }, + Pprof: &PprofConfig{ + Enabled: false, + ListeningAddress: DefaultPprofListenAddress, + BlockProfileRate: 0, + MutexProfileRate: 0, + }, + System: &SystemConfig{ + SystemName: DefaultSystemName, + SystemVersion: DefaultSystemVersion, + }, + } +} + +// DefaultConfigFromSpec returns the default configuration. +func DefaultConfigFromSpec(nodeSpec *genesis.Genesis) *Config { + return &Config{ + BaseConfig: BaseConfig{ + Name: nodeSpec.Name, + ID: nodeSpec.ID, + BasePath: defaultBasePath, + ChainSpec: "", + LogLevel: DefaultLogLevel, + PrometheusPort: uint32(9876), + RetainBlocks: DefaultRetainBlocks, + Pruning: DefaultPruning, + PrometheusExternal: false, + NoTelemetry: false, + TelemetryURLs: nil, + }, + Log: &LogConfig{ + Core: DefaultLogLevel, + Digest: DefaultLogLevel, + Sync: DefaultLogLevel, + Network: DefaultLogLevel, + RPC: DefaultLogLevel, + State: DefaultLogLevel, + Runtime: DefaultLogLevel, + Babe: DefaultLogLevel, + Grandpa: DefaultLogLevel, + Wasmer: DefaultLogLevel, + }, + Account: &AccountConfig{ + Key: defaultAccount, + Unlock: "", + }, + Core: &CoreConfig{ + Role: DefaultRole, + BabeAuthority: true, + GrandpaAuthority: true, + WasmInterpreter: DefaultWasmInterpreter, + GrandpaInterval: DefaultDiscoveryInterval, + }, + Network: &NetworkConfig{ + Port: DefaultNetworkPort, + Bootnodes: nodeSpec.Bootnodes, + ProtocolID: nodeSpec.ProtocolID, + NoBootstrap: false, + NoMDNS: false, + MinPeers: DefaultMinPeers, + MaxPeers: DefaultMaxPeers, + PersistentPeers: nil, + DiscoveryInterval: DefaultDiscoveryInterval, + PublicIP: "", + PublicDNS: "", + NodeKey: "", + ListenAddress: "", + }, + State: &StateConfig{ + Rewind: 0, + }, + RPC: &RPCConfig{ + RPCExternal: false, + UnsafeRPC: false, + UnsafeRPCExternal: false, + Port: DefaultRPCPort, + Host: DefaultRPCHost, + Modules: DefaultRPCModules, + WSPort: DefaultWSPort, + WSExternal: false, + UnsafeWSExternal: false, + }, + Pprof: &PprofConfig{ + Enabled: false, + ListeningAddress: DefaultPprofListenAddress, + BlockProfileRate: 0, + MutexProfileRate: 0, + }, + System: &SystemConfig{ + SystemName: DefaultSystemName, + SystemVersion: DefaultSystemVersion, + }, + } +} + +// Copy creates a copy of the config. +func Copy(c *Config) Config { + return Config{ + BaseConfig: BaseConfig{ + Name: c.BaseConfig.Name, + ID: c.BaseConfig.ID, + BasePath: c.BaseConfig.BasePath, + ChainSpec: c.BaseConfig.ChainSpec, + LogLevel: c.BaseConfig.LogLevel, + PrometheusPort: c.PrometheusPort, + RetainBlocks: c.RetainBlocks, + Pruning: c.Pruning, + PrometheusExternal: c.PrometheusExternal, + NoTelemetry: c.NoTelemetry, + TelemetryURLs: c.TelemetryURLs, + }, + Log: &LogConfig{ + Core: c.Log.Core, + Digest: c.Log.Digest, + Sync: c.Log.Sync, + Network: c.Log.Network, + RPC: c.Log.RPC, + State: c.Log.State, + Runtime: c.Log.Runtime, + Babe: c.Log.Babe, + Grandpa: c.Log.Grandpa, + Wasmer: c.Log.Wasmer, + }, + Account: &AccountConfig{ + Key: c.Account.Key, + Unlock: c.Account.Unlock, + }, + Core: &CoreConfig{ + Role: c.Core.Role, + BabeAuthority: c.Core.BabeAuthority, + GrandpaAuthority: c.Core.GrandpaAuthority, + WasmInterpreter: c.Core.WasmInterpreter, + GrandpaInterval: c.Core.GrandpaInterval, + }, + Network: &NetworkConfig{ + Port: c.Network.Port, + Bootnodes: c.Network.Bootnodes, + ProtocolID: c.Network.ProtocolID, + NoBootstrap: c.Network.NoBootstrap, + NoMDNS: c.Network.NoMDNS, + MinPeers: c.Network.MinPeers, + MaxPeers: c.Network.MaxPeers, + PersistentPeers: c.Network.PersistentPeers, + DiscoveryInterval: c.Network.DiscoveryInterval, + PublicIP: c.Network.PublicIP, + PublicDNS: c.Network.PublicDNS, + NodeKey: c.Network.NodeKey, + ListenAddress: c.Network.ListenAddress, + }, + State: &StateConfig{ + Rewind: c.State.Rewind, + }, + RPC: &RPCConfig{ + UnsafeRPC: c.RPC.UnsafeRPC, + UnsafeRPCExternal: c.RPC.UnsafeRPCExternal, + RPCExternal: c.RPC.RPCExternal, + Port: c.RPC.Port, + Host: c.RPC.Host, + Modules: c.RPC.Modules, + WSPort: c.RPC.WSPort, + WSExternal: c.RPC.WSExternal, + UnsafeWSExternal: c.RPC.UnsafeWSExternal, + }, + Pprof: &PprofConfig{ + Enabled: c.Pprof.Enabled, + ListeningAddress: c.Pprof.ListeningAddress, + BlockProfileRate: c.Pprof.BlockProfileRate, + MutexProfileRate: c.Pprof.MutexProfileRate, + }, + System: &SystemConfig{ + SystemName: c.System.SystemName, + SystemVersion: c.System.SystemVersion, + }, + } +} + +// EnsureRoot creates the root, config, and data directories if they don't exist, +// and returns error if it fails. +func EnsureRoot(basePath string) error { + if err := os.EnsureDir(basePath, DefaultDirPerm); err != nil { + return fmt.Errorf("failed to create root directory: %w", err) + } + if err := os.EnsureDir(filepath.Join(basePath, defaultConfigDir), DefaultDirPerm); err != nil { + return fmt.Errorf("failed to create config directory: %w", err) + } + + return nil +} + +// Chain is a string representing a chain +type Chain string + +const ( + // PolkadotChain is the Polkadot chain + PolkadotChain Chain = "polkadot" + // KusamaChain is the Kusama chain + KusamaChain Chain = "kusama" + // WestendChain is the Westend chain + WestendChain Chain = "westend" + // WestendDevChain is the Westend dev chain + WestendDevChain Chain = "westend-dev" + // WestendLocalChain is the Westend local chain + WestendLocalChain Chain = "westend-local" +) + +// String returns the string representation of the chain +func (c Chain) String() string { + return string(c) +} + +// NetworkRole is a string representing a network role +type NetworkRole string + +const ( + // NoNetworkRole is no network role + NoNetworkRole NetworkRole = "none" + + // FullNode is a full node + FullNode NetworkRole = "full" + + // LightNode is a light node + LightNode NetworkRole = "light" + + // AuthorityNode is an authority node + AuthorityNode NetworkRole = "authority" +) + +// String returns the string representation of the network role +func (n NetworkRole) String() string { + return string(n) +} + +// GetChainSpec returns the path to the chain-spec file. +func GetChainSpec(basePath string) string { + return filepath.Join(basePath, defaultChainSpecFile) +} diff --git a/config/toml.go b/config/toml.go new file mode 100644 index 0000000000..4c7b550724 --- /dev/null +++ b/config/toml.go @@ -0,0 +1,314 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package config + +import ( + "bytes" + "fmt" + "os" + "path/filepath" + "strings" + "text/template" +) + +const ( + // DefaultDirPerm is the default directory permission for gossamer files + DefaultDirPerm = 0o700 + // defaultConfigDir is the default directory for gossamer config files + defaultConfigDir = "config" + // defaultConfigFileName is the default name of the config file + defaultConfigFileName = "config.toml" +) + +var ( + defaultConfigFilePath = filepath.Join(defaultConfigDir, defaultConfigFileName) +) + +var configTemplate *template.Template + +func init() { + var err error + tmpl := template.New("configFileTemplate").Funcs(template.FuncMap{ + "StringsJoin": strings.Join, + }) + if configTemplate, err = tmpl.Parse(defaultConfigTemplate); err != nil { + panic(err) + } +} + +// WriteConfigFile writes the config to the base path. +func WriteConfigFile(basePath string, config *Config) error { + var buffer bytes.Buffer + configFilePath := filepath.Join(basePath, defaultConfigFilePath) + if err := configTemplate.Execute(&buffer, config); err != nil { + return fmt.Errorf("failed to render config template: %w", err) + } + + return os.WriteFile(configFilePath, buffer.Bytes(), 0o600) +} + +// Note: any changes to the comments/variables/mapstructure +// must be reflected in the appropriate struct in config/config.go +const defaultConfigTemplate = `# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml + +# NOTE: Any path below can be absolute (e.g. "/var/gossamer/data") or +# relative to the home directory (e.g. "data"). The home directory is +# "$HOME/.gossamer" by default, but could be changed via $GSSMRHOME env variable +# or --home cmd flag. + +####################################################################### +### Main Base Config Options ### +####################################################################### + +# Name of the node +# Defaults to "Gossamer" +name = "{{ .BaseConfig.Name }}" + +# Identifier of the node +# Defaults to a random value +id = "{{ .BaseConfig.ID }}" + +# Path to the working directory of the node +# Defaults to "$HOME/.gossamer/" +base-path = "{{ .BaseConfig.BasePath }}" + +# Path to the chain-spec raw JSON file +chain-spec = "{{ .BaseConfig.ChainSpec }}" + +# Global log level +# One of: crit, error, warn, info, debug, trace +# Defaults to "info" +log-level = "{{ .BaseConfig.LogLevel }}" + +# Listen address for the prometheus server +# Defaults to "localhost:9876" +prometheus-port = {{ .BaseConfig.PrometheusPort }} + +# Retain number of block from latest block while pruning +# Defaults to 512 +retain-blocks = {{ .BaseConfig.RetainBlocks }} + +# State trie online pruning mode +# Defaults to "archive" +pruning = "{{ .BaseConfig.Pruning }}" + +# Disable connecting to the Substrate telemetry server +# Defaults to false +no-telemetry = {{ .BaseConfig.NoTelemetry }} + +# List of telemetry server URLs to connect to +# Format for each entry: +# [[telemetry-urls]] +# endpoint = "wss://telemetry.polkadot.io/submit/" +# verbosity = 0 +{{range .BaseConfig.TelemetryURLs}} +[[telemetry-urls]] +endpoint = "{{ .Endpoint }}" +verbosity = {{ .Verbosity }} +{{end}} + +# Publish metrics to prometheus +# Defaults to false +prometheus-external = {{ .BaseConfig.PrometheusExternal }} + +####################################################################### +### Advanced Configuration Options ### +####################################################################### + +####################################################### +### Log Configuration Options ### +####################################################### +[log] + +# One of: crit, error, warn, info, debug, trace +# Defaults to "info" + +# Core module log level +core = "{{ .Log.Core }}" + +# Digest module log level +digest = "{{ .Log.Digest }}" + +# Sync module log level +sync = "{{ .Log.Sync }}" + +# Network module log level +network = "{{ .Log.Network }}" + +# RPC module log level +rpc = "{{ .Log.RPC }}" + +# State module log level +state = "{{ .Log.State }}" + +# Runtime module log level +runtime = "{{ .Log.Runtime }}" + +# BABE module log level +babe = "{{ .Log.Babe }}" + +# GRANDPA module log level +grandpa = "{{ .Log.Grandpa }}" + +# WASM module log level +wasmer = "{{ .Log.Wasmer }}" + + +####################################################### +### Account Configuration Options ### +####################################################### +[account] + +# Keyring to use for the node +key = "{{ .Account.Key }}" + +# Unlock an account. eg. --unlock=0 to unlock account 0 +unlock = "{{ .Account.Unlock }}" + +####################################################### +### Network Configuration Options ### +####################################################### +[network] + +# Network port to use +# Defaults to 7001 +port = {{ .Network.Port }} + +# Comma separated node URLs for network discovery bootstrap +bootnodes = "{{ StringsJoin .Network.Bootnodes ", " }}" + +# Protocol ID to use +protocol-id = "{{ .Network.ProtocolID }}" + +# Disables network bootstrapping (mDNS still enabled) +# Defaults to false +no-bootstrap = {{ .Network.NoBootstrap }} + +# Disables network mDNS discovery +# Defaults to false +no-mdns = {{ .Network.NoMDNS }} + +# Minimum number of peers to connect to +# Defaults to 25 +min-peers = {{ .Network.MinPeers }} + +# Maximum number of peers to connect to +# Defaults to 50 +max-peers = {{ .Network.MaxPeers }} + +# Comma separated list of peers to always keep connected to +persistent-peers = "{{ StringsJoin .Network.PersistentPeers ", " }}" + +# Interval to perform peer discovery in duration +# Format: "10s", "1m", "1h" +discovery-interval = "{{ .Network.DiscoveryInterval }}" + +# Overrides the public IP address used for peer to peer networking" +public-ip = "{{ .Network.PublicIP }}" + +# Overrides the public DNS used for peer to peer networking" +public-dns = "{{ .Network.PublicDNS }}" + +# Overrides the secret Ed25519 key to use for libp2p networking +node-key = "{{ .Network.NodeKey }}" + +# Multiaddress to listen on +listen-addr = "{{ .Network.ListenAddress }}" + +####################################################### +### Core Configuration Options ### +####################################################### +[core] + +# Role of the gossamer node +# Represented as an integer +# One of: 1 (Full), 2 (Light), 4 (Authority) +role = {{ .Core.Role }} + +# Enable BABE authoring +# Defaults to true +babe-authority = {{ .Core.BabeAuthority }} + +# Enable GRANDPA authoring +# Defaults to true +grandpa-authority = {{ .Core.GrandpaAuthority }} + +# WASM interpreter +# Defaults to "wasmer" +wasm-interpreter = "{{ .Core.WasmInterpreter }}" + +# Grandpa interval +grandpa-interval = "{{ .Core.GrandpaInterval }}" + +####################################################### +### State Configuration Options ### +####################################################### +[state] +# Rewind head of chain to the given block number +# Defaults to 0 +rewind = {{ .State.Rewind }} + +####################################################### +### RPC Configuration Options ### +####################################################### +[rpc] + +# Enable external HTTP-RPC connections +# Defaults to false +rpc-external = {{ .RPC.RPCExternal }} + +# Enable unsafe RPC methods +# Defaults to false +unsafe-rpc = {{ .RPC.UnsafeRPC }} + +# Enable external HTTP-RPC connections to unsafe procedures +# Defaults to false +unsafe-rpc-external = {{ .RPC.UnsafeRPCExternal }} + +# HTTP-RPC server listening port +# Defaults to 8545 +port = {{ .RPC.Port }} + +# HTTP-RPC server listening hostname +# Defaults to "localhost" +host = "{{ .RPC.Host }}" + +# API modules to enable via HTTP-RPC, comma separated list +# Defaults to "system, author, chain, state, rpc, grandpa, offchain, childstate, syncstate, payment" +modules = [{{ range .RPC.Modules }}"{{ . }}", {{ end }}] + +# Websockets server listening port +# Defaults to 8546 +ws-port = {{ .RPC.WSPort }} + +# Enable external websocket connections +# Defaults to false +ws-external = {{ .RPC.WSExternal }} + +# Enable external websocket connections to unsafe procedures +# Defaults to false +unsafe-ws-external = {{ .RPC.UnsafeWSExternal }} + +####################################################### +### PPROF Configuration Options ### +####################################################### +[pprof] + +# Enable the pprof server +# Defaults to false +enabled = {{ .Pprof.Enabled }} + +# Pprof server listening address +# Defaults to "localhost:6060" +listening-address = "{{ .Pprof.ListeningAddress }}" + +# The frequency at which the Go runtime samples the state of goroutines to generate block profile information. +# Defaults to 0 +block-profile-rate = {{ .Pprof.BlockProfileRate }} + +# The frequency at which the Go runtime samples the state of mutexes to generate mutex profile information. +# Defaults to 0 +mutex-profile-rate = {{ .Pprof.MutexProfileRate }} +` diff --git a/devnet/alice.Dockerfile b/devnet/alice.Dockerfile index c43dfcc70c..18ffc6db42 100644 --- a/devnet/alice.Dockerfile +++ b/devnet/alice.Dockerfile @@ -22,7 +22,7 @@ RUN go install -trimpath github.com/ChainSafe/gossamer/cmd/gossamer # use the 3 node westend local network RUN cp -f chain/$CHAIN/$CHAIN-spec-raw.json chain/$CHAIN/$CHAIN-spec.json -RUN gossamer --key=alice init +RUN gossamer init --key=alice --chain chain/$CHAIN/$CHAIN-spec.json --base-path ~/.gossamer/gssmr # use a hardcoded key for alice, so we can determine what the peerID is for subsequent nodes RUN cp devnet/alice.node.key ~/.gossamer/gssmr/node.key @@ -35,6 +35,6 @@ RUN go run cmd/update-dd-agent-confd/main.go -n=${METRICS_NAMESPACE} -t=key:alic WORKDIR /gossamer -ENTRYPOINT service datadog-agent start && gossamer --key=alice --publish-metrics --metrics-address=":9876" --rpc --rpc-external=true --pubdns=alice --port 7001 +ENTRYPOINT service datadog-agent start && gossamer --base-path ~/.gossamer/gssmr --key=alice --prometheus-external --prometheus-port=9876 --rpc-external=true --public-dns=alice --port 7001 EXPOSE 7001/tcp 8545/tcp 8546/tcp 8540/tcp 9876/tcp 6060/tcp diff --git a/devnet/bob.Dockerfile b/devnet/bob.Dockerfile index 4c61f1abce..8e68968515 100644 --- a/devnet/bob.Dockerfile +++ b/devnet/bob.Dockerfile @@ -26,7 +26,7 @@ ARG key RUN test -n "$key" ENV key=${key} -RUN gossamer --key=${key} init +RUN gossamer --key=${key} init --chain chain/$CHAIN/$CHAIN-spec.json --base-path ~/.gossamer/gssmr ARG METRICS_NAMESPACE=gossamer.local.devnet @@ -36,12 +36,12 @@ RUN go run cmd/update-dd-agent-confd/main.go -n=${METRICS_NAMESPACE} -t=key:${ke WORKDIR /gossamer -ENTRYPOINT service datadog-agent start && gossamer --key=${key} \ +ENTRYPOINT service datadog-agent start && gossamer --base-path ~/.gossamer/gssmr \ + --key=${key} \ --bootnodes=/dns/alice/tcp/7001/p2p/12D3KooWMER5iow67nScpWeVqEiRRx59PJ3xMMAYPTACYPRQbbWU \ - --publish-metrics \ - --metrics-address=":9876" \ - --rpc \ + --prometheus-external \ + --prometheus-port=9876 \ --port 7001 \ - --pubdns=${key} + --public-dns=${key} EXPOSE 7001/tcp 8545/tcp 8546/tcp 8540/tcp 9876/tcp 6060/tcp diff --git a/docs/docs/usage/command-line.md b/docs/docs/usage/command-line.md index 4ccb57d7b1..e919c6d4d8 100644 --- a/docs/docs/usage/command-line.md +++ b/docs/docs/usage/command-line.md @@ -8,172 +8,137 @@ permalink: /usage/command-line/ The `gossamer` command is the root command for the `gossamer` package (`cmd/gossamer`). The root command starts the node (and initialises the node if the node has not already been initialised). -### Accepted Formats - -``` -gossamer [--global-flags] [--local-flags] -``` - -``` -gossamer [--local-flags] [--global-flags] -``` - -### Global flags - -The global flags can be used in conjunction with any Gossamer command - -``` ---basepath value Data directory for the node ---chain value Node implementation id used to load default node configuration ---config value TOML configuration file ---log value Supports levels crit (silent) to trce (trace) (default: "info") ---name value Node implementation name ---rewind value Rewind head of chain by given number of blocks ---pprofserver Enable or disable the pprof HTTP server ---pprofaddress pprof HTTP server listening address, if it is enabled. ---pprofblockrate pprof block rate. See https://pkg.go.dev/runtime#SetBlockProfileRate. ---pprofmutexrate profiling mutex rate. See https://pkg.go.dev/runtime#SetMutexProfileFraction. -``` - -### Local flags - -These are the local flags that can be used with the `gossamer` command - -``` ---bootnodes value Comma separated enode URLs for network discovery bootstrap ---key value Specify a test keyring account to use: eg --key=alice ---help, -h show help ---nobootstrap Disables network bootstrapping (mdns still enabled) ---nomdns Disables network mdns discovery ---port value Set network listening port (default: 0) ---protocol value Set protocol id ---roles value Roles of the gossamer node ---rpc-external Enable the external HTTP-RPC server ---rpchost value HTTP-RPC server listening hostname ---rpcport value HTTP-RPC server listening port (default: 0) ---rpcmods value API modules to enable via HTTP-RPC, comma separated list ---unlock value Unlock an account. - eg. --unlock=0,2 to unlock accounts 0 and 2. - Can be used with --password=[password] to avoid prompt. - For multiple passwords, do --password=password1,password2 ---ws-external Enable the external websockets server ---wsport value Websockets server listening port (default: 0) ---version, -v print the version +### Flags + +These are the flags that can be used with the `gossamer` command + +``` +--babe-authority Enable BABE authorship +--base-path Working directory for the node +--bootnodes Comma separated enode URLs for network discovery bootstrap +--chain chain-spec-raw.json used to load node configuration. It can also be a chain name (eg. kusama, polkadot, westend, westend-dev and westend-local) +--discovery-interval Interval between network discovery lookups (in duration format) +--grandpa-authority Runs as a GRANDPA authority node +--grandpa-interval GRANDPA voting period in duration (default 10s) +--help help for gossamer +--id Identifier used to identify this node in the network +--key Key to use for the node +--lbabe Log level for BABE module (default 'info') +--lcore Log level for core module (default 'info') +--ldigest Log level for digest module (default 'info') +--lgrandpa Log level for GRANDPA module (default 'info') +--listen-addr Overrides the listen address used for peer to peer networking +--lnetwork Log level for network module (default 'info') +--log Global log level (default 'info') +--lrpc Log level for RPC module (default 'info') +--lruntime Log level for runtime module (default 'info') +--lstate Log level for state module (default 'info') +--lsync Log level for sync module (default 'info') +--max-peers Maximum number of peers to connect to (default 50) +--min-peers Minimum number of peers to connect to (default 5) +--name Name of the node +--no-bootstrap Disables network bootstrapping (mdns still enabled) +--no-mdns Disables network mdns discovery +--no-telemetry Disables telemetry +--node-key Overrides the secret Ed25519 key to use for libp2p networking +--password Password used to encrypt the keystore +--persistent-peers Comma separated list of peers to always keep connected to +--port Network port to use (default 7001) +--pprof.block-profile-rate The frequency at which the Go runtime samples the state of goroutines to generate block profile information. +--pprof.enabled Enable the pprof profiler +--pprof.listening-address The address to listen on for pprof profiling +--pprof.mutex-profile-rate The frequency at which the Go runtime samples the state of mutexes to generate mutex profile information. +--prometheus-external Publish prometheus metrics to external network +--prometheus-port Port to use for prometheus metrics (default 9876) +--protocol-id Protocol ID to use (default "/gossamer/gssmr/0") +--public-dns Public DNS name of the node +--public-ip Public IP address of the node +--retain-blocks Retain number of block from latest block while pruning (default 512) +--rewind Rewind head of chain to the given block number +--role Role of the node. Can be one of: full, light and authority +--rpc-external Enable external HTTP-RPC connections +--rpc-host HTTP-RPC server listening hostname +--rpc-methods API modules to enable via HTTP-RPC, comma separated list +--rpc-port HTTP-RPC server listening port (default 8545) +--state-pruning Pruning strategy to use. Supported strategy: archive +--telemetry-url URL of telemetry server to connect to +--unlock Unlock an account. eg. --unlock=0 to unlock account 0. +--unsafe-rpc Enable unsafe HTTP-RPC methods +--unsafe-rpc-external Enable external unsafe HTTP-RPC connections +--unsafe-ws-external Enable external unsafe WebSockets connections +--validator Run as a validator node +--wasm-interpreter WASM interpreter (default "wasmer") +--ws-external Enable external WebSockets connections +--ws-port WebSockets server listening port (default 8546) ``` - ## Gossamer Subcommands List of available ***subcommands***: ``` SUBCOMMANDS: - help, h Shows a list of commands or help for one command + help, h Shows a list of commands or help for one command account Create and manage node keystore accounts export Export configuration values to TOML configuration file init Initialise node databases and load genesis data to state + build-spec Generates chain-spec JSON data, and can convert to raw chain-spec data + import-runtime Imports a WASM runtime blob into the node's database + import-state Imports a state dump into the node's database + prune-state Prune state will prune the state trie ``` -List of ***local flags*** for `init` subcommand: +List of ***flags*** for `init` subcommand: ``` --force Disable all confirm prompts (the same as answering "Y" to all) ---genesis value Path to genesis JSON file -``` - -List of ***local flags*** for `account` subcommand: - -``` ---generate Generate a new keypair. If type is not specified, defaults to sr25519 ---password value Password used to encrypt the keystore. Used with --generate or --unlock ---import value Import encrypted keystore file generated with gossamer ---import-raw value Imports a raw private key ---list List node keys ---ed25519 Specify account type as ed25519 ---sr25519 Specify account type as sr25519 ---secp256k1 Specify account type as secp256k1 +--chain Path to genesis JSON file +--base-path Working directory for the node ``` -List of ***local flag*** options for `export` subcommand: +List of ***flags*** for `account` subcommand: ``` ---force Disable all confirm prompts (the same as answering "Y" to all) ---genesis value Path to genesis JSON file ---key value Specify a test keyring account to use: eg --key=alice ---unlock value Unlock an account. eg. --unlock=0,2 to unlock accounts 0 and 2. Can be used with --password=[password] to avoid prompt. For multiple passwords, do --password=password1,password2 ---port value Set network listening port (default: 0) ---bootnodes value Comma separated enode URLs for network discovery bootstrap ---protocol value Set protocol id ---roles value Roles of the gossamer node ---nobootstrap Disables network bootstrapping (mdns still enabled) ---nomdns Disables network mdns discovery ---rpc Enable the HTTP-RPC server ---rpc-external Enable external HTTP-RPC connections ---rpchost value HTTP-RPC server listening hostname ---rpcport value HTTP-RPC server listening port (default: 0) ---rpcmods value API modules to enable via HTTP-RPC, comma separated list ---ws Enable the websockets server ---ws-external Enable external websockets connections ---wsport value Websockets server listening port (default: 0) -``` - -### Accepted Formats - -``` -gossamer [--global-flags] [subcommand] [--local-flags] -``` - -``` -gossamer [subcommand] [--global-flags] [--local-flags] -``` - -``` -gossamer [subcommand] [--local-flags] [--global-flags] -``` - -### Invalid Formats - -_please note that `[--local-flags]` must come after `[subcommand]`_ - -``` -gossamer [--local-flags] [subcommand] [--global-flags] -``` - -``` -gossamer [--local-flags] [--global-flags] [subcommand] -``` - -``` -gossamer [--global-flags] [--local-flags] [subcommand] +--password Password used to encrypt the keystore. Used with --generate or --unlock +--scheme Keyring scheme (sr25519, ed25519, secp256k1 +--keystore-path path to keystore +--keystore-file keystore file name ``` ## Running Node Roles Run an authority node: ``` -./bin/gossamer --key alice --roles 4 +./bin/gossamer --key alice --role authority ``` Run a non-authority node: ``` -./bin/gossamer --key alice --roles 1 +./bin/gossamer --key alice --role full ``` ## Running Multiple Nodes Two options for running another node at the same time... -(1) copy the config file at `cfg/gssmr/config.toml` and manually update `port` and `base-path`: +(1) run `gossamer init` with two different `base-path` and manually update `port` in `base-path/config/config.toml`: ``` -cp cfg/gssmr/config.toml cfg/gssmr/bob.toml -# open bob.toml, set port=7002 and base-path=~/.gossamer/gssmr-bob -# set roles=4 to also make bob an authority node, or roles=1 to make bob a non-authority node -./bin/gossamer --key bob --config cfg/gssmr/bob.toml +gossamer init --base-path ~/.gossamer/gssmr-alice --chain westend-local +gossamer init --base-path ~/.gossamer/gssmr-bob --chain westend-local +# open ~/.gossamer/gssmr-bob/config/config.toml, set port=7002 +# set role=4 to also make bob an authority node, or role=1 to make bob a non-authority node +``` + +(2) run with `--base-path` flag: +``` +./bin/gossamer --base-path ~/.gossamer/gssmr-alice --key alice --roles 4 +./bin/gossamer --base-path ~/.gossamer/gssmr-bob --key bob --roles 4 ``` or run with port, base-path flags: ``` -./bin/gossmer --key bob --port 7002 --base-path ~/.gossamer/gssmr-bob --roles 4 +./bin/gossamer --base-path ~/.gossamer/gssmr-alice --key alice --role 4 --port 7001 +./bin/gossamer --base-path ~/.gossamer/gssmr-bob --key bob --role 4 --port 7002 ``` To run more than two nodes, repeat steps for bob with a new `port` and `base-path` replacing `bob`. @@ -194,15 +159,11 @@ Available built-in keys: To initialise or re-initialise a node, use the init subcommand `init`: ``` -./bin/gossamer init -./bin/gossamer --key alice --roles 4 +./bin/gossamer init --base-path ~/.gossamer/gssmr-alice --chain westend-local +./bin/gossamer --base-path ~/.gossamer/gssmr-alice --key alice --roles 4 ``` -`init` can be used with the `--base-path` or `--config` flag to re-initialise a custom node (ie, `bob` from the example above): +`init` can be used with the `--base-path` or `--chain` flag to re-initialise a custom node (ie, `bob` from the example above): ``` -./bin/gossamer --config node/gssmr/bob.toml init +./bin/gossamer init --base-path ~/.gossamer/gssmr-bob --chain westend-local ``` - -## Export Configuration - -`export` can be used with the `gossamer` root command-line and `--config` as the export path to export a toml configuration file. diff --git a/docs/docs/usage/configuration.md b/docs/docs/usage/configuration.md index 19ff9c0981..1d717b5444 100644 --- a/docs/docs/usage/configuration.md +++ b/docs/docs/usage/configuration.md @@ -6,54 +6,267 @@ permalink: /usage/configuration/ # Configuration -Gossamer consumes a `.toml` file containing predefined settings for the node from setting the genesis file, to the RPC/WS server, this file allows you to curate the functionality of the node instead of writing out the flags manually +Gossamer consumes a `.toml` file containing predefined settings for the node from setting the chain-spec file, to the RPC/WS server, this file allows you to curate the functionality of the node instead of writing out the flags manually ## Full reference ```toml -[global] -basepath = "~/.gossamer/gssmr" -log = " | trace | debug | info | warn | error | crit" -name = "gssmr" -pprofserver = false -pprofaddress = ":6060" -pprofblockrate = 0 -pprofmutexrate = 0 +# This is a TOML config file. +# For more information, see https://github.com/toml-lang/toml +# NOTE: Any path below can be absolute (e.g. "/var/gossamer/data") or +# relative to the home directory (e.g. "data"). The home directory is +# "$HOME/.gossamer" by default, but could be changed via $GSSMRHOME env variable +# or --home cmd flag. + +####################################################################### +### Main Base Config Options ### +####################################################################### + +# Name of the node +# Defaults to "Gossamer" +name = "Westend" + +# Identifier of the node +# Defaults to a random value +id = "westend_dev" + +# Path to the working directory of the node +# Defaults to "$HOME/.gossamer/" +base-path = "/Users/k/.gossamer/alice" + +# Path to the chain-spec raw JSON file +chain-spec = "/Users/k/.gossamer/alice/chain-spec.json" + +# Global log level +# One of: crit, error, warn, info, debug, trace +# Defaults to "info" +log-level = "info" + +# Listen address for the prometheus server +# Defaults to "localhost:9876" +prometheus-port = 9876 + +# Retain number of block from latest block while pruning +# Defaults to 512 +retain-blocks = 512 + +# State trie online pruning mode +# Defaults to "archive" +pruning = "archive" + +# Disable connecting to the Substrate telemetry server +# Defaults to false +no-telemetry = false + +# List of telemetry server URLs to connect to +# Format for each entry: +# [[telemetry-urls]] +# endpoint = "wss://telemetry.polkadot.io/submit/" +# verbosity = 0 + + +# Publish metrics to prometheus +# Defaults to false +prometheus-external = false + +####################################################################### +### Advanced Configuration Options ### +####################################################################### + +####################################################### +### Log Configuration Options ### +####################################################### [log] -core = " | trace | debug | info | warn | error | crit" -network = " | trace | debug | info | warn | error | crit" -rpc = " | trace | debug | info | warn | error | crit" -state = " | trace | debug | info | warn | error | crit" -runtime = " | trace | debug | info | warn | error | crit" -babe = " | trace | debug | info | warn | error | crit" -grandpa = " | trace | debug | info | warn | error | crit" -sync = " | trace | debug | info | warn | error | crit" - -[init] -genesis-raw = "./chain/gssmr/genesis-raw.json" +# One of: crit, error, warn, info, debug, trace +# Defaults to "info" + +# Core module log level +core = "info" + +# Digest module log level +digest = "info" + +# Sync module log level +sync = "info" + +# Network module log level +network = "info" + +# RPC module log level +rpc = "info" + +# State module log level +state = "info" + +# Runtime module log level +runtime = "info" + +# BABE module log level +babe = "info" + +# GRANDPA module log level +grandpa = "info" + +# WASM module log level +wasmer = "info" + + +####################################################### +### Account Configuration Options ### +####################################################### [account] -key = "" + +# Keyring to use for the node +key = "alice" + +# Unlock an account. eg. --unlock=0 to unlock account 0 unlock = "" +####################################################### +### Network Configuration Options ### +####################################################### +[network] + +# Network port to use +# Defaults to 7001 +port = 7001 + +# Comma separated node URLs for network discovery bootstrap +bootnodes = "" + +# Protocol ID to use +protocol-id = "dot" + +# Disables network bootstrapping (mDNS still enabled) +# Defaults to false +no-bootstrap = true + +# Disables network mDNS discovery +# Defaults to false +no-mdns = true + +# Minimum number of peers to connect to +# Defaults to 25 +min-peers = 0 + +# Maximum number of peers to connect to +# Defaults to 50 +max-peers = 0 + +# Comma separated list of peers to always keep connected to +persistent-peers = "" + +# Interval to perform peer discovery in duration +# Format: "10s", "1m", "1h" +discovery-interval = "1s" + +# Overrides the public IP address used for peer to peer networking" +public-ip = "" + +# Overrides the public DNS used for peer to peer networking" +public-dns = "" + +# Overrides the secret Ed25519 key to use for libp2p networking +node-key = "" + +# Multiaddress to listen on +listen-addr = "" + +####################################################### +### Core Configuration Options ### +####################################################### [core] -roles = 4 + +# Role of the gossamer node +# Represented as an integer +# One of: 1 (Full), 2 (Light), 4 (Authority) +role = 1 + +# Enable BABE authoring +# Defaults to true babe-authority = true + +# Enable GRANDPA authoring +# Defaults to true grandpa-authority = true -[network] -port = 7001 -nobootstrap = false -nomdns = false +# WASM interpreter +# Defaults to "wasmer" +wasm-interpreter = "wasmer" + +# Grandpa interval +grandpa-interval = "1s" +####################################################### +### State Configuration Options ### +####################################################### +[state] +# Rewind head of chain to the given block number +# Defaults to 0 +rewind = 0 + +####################################################### +### RPC Configuration Options ### +####################################################### [rpc] -enabled = true | false -external = true | false + +# Enable external HTTP-RPC connections +# Defaults to false +rpc-external = false + +# Enable unsafe RPC methods +# Defaults to false +unsafe-rpc = false + +# Enable external HTTP-RPC connections to unsafe procedures +# Defaults to false +unsafe-rpc-external = false + +# HTTP-RPC server listening port +# Defaults to 8545 port = 8545 + +# HTTP-RPC server listening hostname +# Defaults to "localhost" host = "localhost" -modules = ["system", "author", "chain", "state", "rpc", "grandpa"] -ws = true | false -ws-external = true | false + +# API modules to enable via HTTP-RPC, comma separated list +# Defaults to "system, author, chain, state, rpc, grandpa, offchain, childstate, syncstate, payment" +modules = ["system", "author", "chain", "state", "rpc", "grandpa", "offchain", "childstate", "syncstate", "payment", ] + +# Websockets server listening port +# Defaults to 8546 ws-port = 8546 + +# Enable external websocket connections +# Defaults to false +ws-external = false + +# Enable external websocket connections to unsafe procedures +# Defaults to false +unsafe-ws-external = false + +####################################################### +### PPROF Configuration Options ### +####################################################### +[pprof] + +# Enable the pprof server +# Defaults to false +enabled = false + +# Pprof server listening address +# Defaults to "localhost:6060" +listening-address = "localhost:6060" + +# The frequency at which the Go runtime samples the state of goroutines to generate block profile information. +# Defaults to 0 +block-profile-rate = 0 + +# The frequency at which the Go runtime samples the state of mutexes to generate mutex profile information. +# Defaults to 0 +mutex-profile-rate = 0 + ``` diff --git a/docs/docs/usage/import-runtime.md b/docs/docs/usage/import-runtime.md index 759fd936dc..d3b08552d5 100644 --- a/docs/docs/usage/import-runtime.md +++ b/docs/docs/usage/import-runtime.md @@ -10,48 +10,46 @@ The main use-case of the Polkadot Host is to create a standalone chain that may Once you have your runtime ready and compiled into a wasm binary, it is ready to be used with Gossamer. -### 1. Create genesis spec file with custom runtime +### 1. Create chain spec file with custom runtime -You can use the `gossamer import-runtime` subcommand to create a genesis file containing your custom runtime. The rest of the file is based off the `gssmr` `genesis.json` file. +You can use the `gossamer import-runtime` subcommand to create a chain-spec file containing your custom runtime. The rest of the file is based off the `gssmr` `chain-spec.json` file. ``` make gossamer -./bin/gossamer import-runtime > genesis-spec.json +./bin/gossamer import-runtime > chain-spec.json ``` -This creates a genesis spec file `genesis-spec.json` with the contents of your given file as the `"system"` `"code"` field. +This creates a chain spec file `chain-spec.json` with the contents of your given file as the `"system"` `"code"` field. -By default, `genesis-spec.json` will contain the 9 built-in keys as authorities with some preset balance. You can edit the fields as you wish. +By default, `chain-spec.json` will contain the 9 built-in keys as authorities with some preset balance. You can edit the fields as you wish. Note: the `import-runtime` subcommand does not validate that the runtime in the given file is valid. -### 2. Create raw genesis file from genesis spec +### 2. Create raw chain-spec file from chain spec To create the raw genesis file used by the node, you can use the `gossamer build-spec` subcommand. ``` -./bin/gossamer build-spec --raw --genesis-spec genesis-spec.json > genesis.json +./bin/gossamer build-spec --raw --chain chain-spec.json > chain-spec-raw.json or -./bin/gossamer build-spec --raw --genesis-spec genesis-spec.json --output genesis.json +./bin/gossamer build-spec --raw --chain chain-spec.json --output-path chain-spec-raw.json ``` -This creates a genesis file `genesis.json` that is usable by the node. +This creates a chain-spec file `chain-spec.json` that is usable by the node. -### 3. Initialise the node with the genesis file +### 3. Initialise the node with the chain-spec file -Next, you will need to write the state in `genesis.json` to the database by initialising the node. +Next, you will need to write the state in `chain-spec.json` to the database by initialising the node. ``` -./bin/gossamer init --genesis genesis.json +./bin/gossamer init --chain chain-spec.json ``` -The default basepath is `~/.gossamer/gssmr`. If you wish you change this, you can specify the basepath with `--basepath `. - ### 4. Start the node -The final step is to launch the node. This is the same as normal, providing a built-in authority key: +The final step is to launch the node. This is the same as normal, providing a built-in authority key and the base-path: ``` -./bin/gossamer --key alice +./bin/gossamer --key alice --base-path /tmp/gossamer ``` You now have a chain running a custom runtime! diff --git a/docs/docs/usage/import-state.md b/docs/docs/usage/import-state.md index 38496bf107..274b0ee109 100644 --- a/docs/docs/usage/import-state.md +++ b/docs/docs/usage/import-state.md @@ -44,9 +44,9 @@ make gossamer ./bin/gossamer import-state --chain --state state.json --header header.json --first-slot ``` -If you don't want to use a specific chain, but instead a custom data directory, you can use `--basepath` instead of `--chain`. +If you don't want to use a specific chain, but instead a custom data directory, you can use `--base-path` instead of `--chain`. If it is successful, you will see a `finished state import` log. Now, you can start the node as usual, and the node should begin from the imported state: ``` -./bin/gossamer --chain +./bin/gossamer --chain --base-path ~/.gossamer/kusama ``` \ No newline at end of file diff --git a/docs/docs/usage/running-nodes.md b/docs/docs/usage/running-nodes.md index d32ab6907d..80989f4a57 100644 --- a/docs/docs/usage/running-nodes.md +++ b/docs/docs/usage/running-nodes.md @@ -8,12 +8,12 @@ permalink: /usage/running-nodes/ To run default Gossamer node, first initialise the node. This writes the genesis state to the database. ``` -./bin/gossamer --chain gssmr init +./bin/gossamer --chain westend-dev init ``` The gossamer node runs as an authority by default. The built-in authorities are `alice`, `bob`, `charlie`, `dave`, `eve`, `ferdie`, `george`, and `ian`. To start the node as an authority, provide it with a built-in key: ``` -./bin/gossamer --chain gssmr --key alice +./bin/gossamer --chain westend-dev --key alice ``` @@ -24,27 +24,25 @@ The node will not build blocks every slot by default; it will appear that the no roles = 4 babe-authority = true grandpa-authority = true -babe-threshold-numerator = 1 -babe-threshold-denominator = 1 ``` Then, re-run the above steps. NOTE: this feature is for testing only; if you wish to change the BABE block production parameters, you need to create a modified runtime. If you wish to run the default node as a non-authority, you can specify `roles=1`: ``` -./bin/gossamer --chain gssmr --roles 1 +./bin/gossamer --chain westend-dev --roles 1 --base-path /tmp/gossamer ``` ## Run Kusama Node To run a Kusama node, first initialise the node: ``` -./bin/gossamer --chain kusama init +./bin/gossamer --chain kusama init --base-path /tmp/gossamer ``` Then run the node selecting the Kusama chain: ``` -./bin/gossamer --chain kusama +./bin/gossamer --chain kusama --base-path /tmp/gossamer ``` The node may not appear to do anything for the first minute or so (it's bootstrapping to the network.) If you wish to see what is it doing in this time, you can turn on debug logs in `chain/kusama/config.toml`: @@ -60,12 +58,12 @@ After it's finished bootstrapping, the node should begin to sync. Initialise polkadot node: ``` -./bin/gossamer --chain polkadot init +./bin/gossamer init --chain polkadot --base-path /tmp/gossamer ``` Start polkadot node: ``` -./bin/gossamer --chain polkadot +./bin/gossamer --chain polkadot --base-path /tmp/gossamer ``` ## Run Gossamer Node with Docker diff --git a/dot/build_spec_integration_test.go b/dot/build_spec_integration_test.go index 3e18618551..2dfd337059 100644 --- a/dot/build_spec_integration_test.go +++ b/dot/build_spec_integration_test.go @@ -11,6 +11,8 @@ import ( "path/filepath" "testing" + westenddev "github.com/ChainSafe/gossamer/chain/westend-dev" + "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/utils" "github.com/stretchr/testify/require" @@ -20,16 +22,16 @@ import ( const codeHex = "0x3a636f6465" func TestWriteGenesisSpecFile_Integration(t *testing.T) { - cfg := NewWestendDevConfig(t) - cfg.Init.Genesis = utils.GetWestendDevRawGenesisPath(t) + config := westenddev.DefaultConfig() + config.ChainSpec = utils.GetWestendDevRawGenesisPath(t) - expected, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis) + expected, err := genesis.NewGenesisFromJSONRaw(config.ChainSpec) require.NoError(t, err) - err = InitNode(cfg) + err = InitNode(config) require.NoError(t, err) - bs, err := BuildFromGenesis(cfg.Init.Genesis, 0) + bs, err := BuildFromGenesis(config.ChainSpec, 0) require.NoError(t, err) data, err := bs.ToJSONRaw() @@ -59,15 +61,15 @@ func TestWriteGenesisSpecFile_Integration(t *testing.T) { func TestBuildFromDB_Integration(t *testing.T) { // setup expected - cfg := NewWestendDevConfig(t) - cfg.Init.Genesis = utils.GetWestendDevRawGenesisPath(t) - expected, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis) + config := westenddev.DefaultConfig() + config.ChainSpec = utils.GetWestendDevRawGenesisPath(t) + expected, err := genesis.NewGenesisFromJSONRaw(config.ChainSpec) require.NoError(t, err) // initialise node (initialise state database and load genesis data) - err = InitNode(cfg) + err = InitNode(config) require.NoError(t, err) - bs, err := BuildFromDB(cfg.Global.BasePath) + bs, err := BuildFromDB(config.BasePath) require.NoError(t, err) res, err := bs.ToJSON() require.NoError(t, err) diff --git a/dot/build_spec_test.go b/dot/build_spec_test.go index 13eeea7675..f7c512ce51 100644 --- a/dot/build_spec_test.go +++ b/dot/build_spec_test.go @@ -10,6 +10,8 @@ import ( "strings" "testing" + westenddev "github.com/ChainSafe/gossamer/chain/westend-dev" + "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/utils" "github.com/stretchr/testify/assert" @@ -122,10 +124,11 @@ func TestBuildSpec_ToJSON(t *testing.T) { func TestBuildFromDB(t *testing.T) { // initialise node (initialise state database and load genesis data) - cfg := NewWestendDevConfig(t) - cfg.Init.Genesis = utils.GetWestendDevRawGenesisPath(t) + config := westenddev.DefaultConfig() + config.ChainSpec = utils.GetWestendDevRawGenesisPath(t) + config.BasePath = t.TempDir() builder := nodeBuilder{} - err := builder.initNode(cfg) + err := builder.initNode(config) require.NoError(t, err) tests := []struct { @@ -134,7 +137,7 @@ func TestBuildFromDB(t *testing.T) { want *BuildSpec err error }{ - {name: "normal_conditions", path: cfg.Global.BasePath, + {name: "normal_conditions", path: config.BasePath, want: &BuildSpec{genesis: &genesis.Genesis{ Name: "Development", ID: "westend_dev", diff --git a/dot/config.go b/dot/config.go index 887b548475..9f876ff3b7 100644 --- a/dot/config.go +++ b/dot/config.go @@ -8,20 +8,17 @@ import ( "strings" "time" - "github.com/ChainSafe/gossamer/chain/kusama" - "github.com/ChainSafe/gossamer/chain/polkadot" - "github.com/ChainSafe/gossamer/chain/westend" + cfg "github.com/ChainSafe/gossamer/config" "github.com/ChainSafe/gossamer/dot/state/pruner" "github.com/ChainSafe/gossamer/dot/types" "github.com/ChainSafe/gossamer/internal/log" "github.com/ChainSafe/gossamer/internal/pprof" "github.com/ChainSafe/gossamer/lib/common" "github.com/ChainSafe/gossamer/lib/genesis" - "github.com/ChainSafe/gossamer/lib/runtime/wasmer" ) -// TODO: update config to have toml rules and perhaps un-export some fields, since we don't want to expose all -// the internal config options, also type conversions might be needed from toml -> internal types (#1848) +// TODO: update config to have toml rules and perhaps un-export some fields, +// also type conversions might be needed from toml -> internal types (#1848) // Config is a collection of configurations throughout the system type Config struct { @@ -39,16 +36,16 @@ type Config struct { // GlobalConfig is used for every node command type GlobalConfig struct { - Name string - ID string - BasePath string - LogLvl log.Level - PublishMetrics bool - MetricsAddress string - NoTelemetry bool - TelemetryURLs []genesis.TelemetryEndpoint - RetainBlocks uint32 - Pruning pruner.Mode + Name string + ID string + BasePath string + LogLvl log.Level + PrometheusExternal bool + PrometheusPort uint32 + NoTelemetry bool + TelemetryURLs []genesis.TelemetryEndpoint + RetainBlocks uint32 + Pruning pruner.Mode } // LogConfig represents the log levels for individual packages @@ -109,7 +106,7 @@ type NetworkConfig struct { // CoreConfig is to marshal/unmarshal toml core config vars type CoreConfig struct { - Roles common.Roles + Roles common.NetworkRole BabeAuthority bool GrandpaAuthority bool WasmInterpreter string @@ -168,8 +165,8 @@ func (s *StateConfig) String() string { } // networkServiceEnabled returns true if the network service is enabled -func networkServiceEnabled(cfg *Config) bool { - return cfg.Core.Roles != common.NoNetworkRole +func networkServiceEnabled(config *cfg.Config) bool { + return config.Core.Role != common.NoNetworkRole } // PprofConfig is the configuration for the pprof HTTP server. @@ -185,238 +182,3 @@ func (p PprofConfig) String() string { return p.Settings.String() } - -// WestendDevConfig returns a westend node configuration -func WestendDevConfig() *Config { - return &Config{ - Global: GlobalConfig{ - Name: "Westend", - ID: "westend_dev", - BasePath: "~/.gossamer/westend-dev", - LogLvl: log.Info, - MetricsAddress: ":9876", - RetainBlocks: 512, - Pruning: pruner.Archive, - }, - Log: LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: InitConfig{ - Genesis: "./chain/westend-dev/westend-dev-spec-raw.json", - }, - Account: AccountConfig{ - Key: "alice", - Unlock: "", - }, - Core: CoreConfig{ - Roles: common.AuthorityRole, - WasmInterpreter: wasmer.Name, - BabeAuthority: true, - GrandpaAuthority: true, - GrandpaInterval: time.Second, - }, - Network: NetworkConfig{ - Port: 7001, - Bootnodes: []string(nil), - NoBootstrap: false, - NoMDNS: false, - DiscoveryInterval: 10 * time.Second, - }, - RPC: RPCConfig{ - WS: true, - Enabled: true, - Port: 8545, - Host: "localhost", - Modules: []string{ - "system", "author", "chain", "state", "rpc", - "grandpa", "offchain", "childstate", "syncstate", "payment"}, - WSPort: 8546, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: "localhost:6060", - BlockProfileRate: 0, - MutexProfileRate: 0, - }, - }, - } -} - -// KusamaConfig returns a kusama node configuration -func KusamaConfig() *Config { - return &Config{ - Global: GlobalConfig{ - Name: kusama.DefaultName, - ID: kusama.DefaultID, - BasePath: kusama.DefaultBasePath, - LogLvl: kusama.DefaultLvl, - MetricsAddress: kusama.DefaultMetricsAddress, - RetainBlocks: kusama.DefaultRetainBlocks, - Pruning: pruner.Mode(kusama.DefaultPruningMode), - TelemetryURLs: kusama.DefaultTelemetryURLs, - }, - Log: LogConfig{ - CoreLvl: kusama.DefaultLvl, - DigestLvl: kusama.DefaultLvl, - SyncLvl: kusama.DefaultLvl, - NetworkLvl: kusama.DefaultLvl, - RPCLvl: kusama.DefaultLvl, - StateLvl: kusama.DefaultLvl, - RuntimeLvl: kusama.DefaultLvl, - BlockProducerLvl: kusama.DefaultLvl, - FinalityGadgetLvl: kusama.DefaultLvl, - }, - Init: InitConfig{ - Genesis: kusama.DefaultGenesis, - }, - Account: AccountConfig{ - Key: kusama.DefaultKey, - Unlock: kusama.DefaultUnlock, - }, - Core: CoreConfig{ - Roles: kusama.DefaultRoles, - WasmInterpreter: kusama.DefaultWasmInterpreter, - }, - Network: NetworkConfig{ - Port: kusama.DefaultNetworkPort, - Bootnodes: kusama.DefaultNetworkBootnodes, - NoBootstrap: kusama.DefaultNoBootstrap, - NoMDNS: kusama.DefaultNoMDNS, - }, - RPC: RPCConfig{ - Port: kusama.DefaultRPCHTTPPort, - Host: kusama.DefaultRPCHTTPHost, - Modules: kusama.DefaultRPCModules, - WSPort: kusama.DefaultRPCWSPort, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: kusama.DefaultPprofListeningAddress, - BlockProfileRate: kusama.DefaultPprofBlockRate, - MutexProfileRate: kusama.DefaultPprofMutexRate, - }, - }, - } -} - -// PolkadotConfig returns a "polkadot" node configuration -func PolkadotConfig() *Config { - return &Config{ - Global: GlobalConfig{ - Name: polkadot.DefaultName, - ID: polkadot.DefaultID, - BasePath: polkadot.DefaultBasePath, - LogLvl: polkadot.DefaultLvl, - RetainBlocks: polkadot.DefaultRetainBlocks, - Pruning: pruner.Mode(polkadot.DefaultPruningMode), - MetricsAddress: polkadot.DefaultMetricsAddress, - TelemetryURLs: polkadot.DefaultTelemetryURLs, - }, - Log: LogConfig{ - CoreLvl: polkadot.DefaultLvl, - DigestLvl: polkadot.DefaultLvl, - SyncLvl: polkadot.DefaultLvl, - NetworkLvl: polkadot.DefaultLvl, - RPCLvl: polkadot.DefaultLvl, - StateLvl: polkadot.DefaultLvl, - RuntimeLvl: polkadot.DefaultLvl, - BlockProducerLvl: polkadot.DefaultLvl, - FinalityGadgetLvl: polkadot.DefaultLvl, - }, - Init: InitConfig{ - Genesis: polkadot.DefaultGenesis, - }, - Account: AccountConfig{ - Key: polkadot.DefaultKey, - Unlock: polkadot.DefaultUnlock, - }, - Core: CoreConfig{ - Roles: polkadot.DefaultRoles, - WasmInterpreter: polkadot.DefaultWasmInterpreter, - }, - Network: NetworkConfig{ - Port: polkadot.DefaultNetworkPort, - Bootnodes: polkadot.DefaultNetworkBootnodes, - NoBootstrap: polkadot.DefaultNoBootstrap, - NoMDNS: polkadot.DefaultNoMDNS, - }, - RPC: RPCConfig{ - Port: polkadot.DefaultRPCHTTPPort, - Host: polkadot.DefaultRPCHTTPHost, - Modules: polkadot.DefaultRPCModules, - WSPort: polkadot.DefaultRPCWSPort, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: polkadot.DefaultPprofListeningAddress, - BlockProfileRate: polkadot.DefaultPprofBlockRate, - MutexProfileRate: polkadot.DefaultPprofMutexRate, - }, - }, - } -} - -// WestendConfig returns a "westend" node configuration -func WestendConfig() *Config { - return &Config{ - Global: GlobalConfig{ - Name: westend.DefaultName, - ID: westend.DefaultID, - BasePath: westend.DefaultBasePath, - LogLvl: westend.DefaultLvl, - RetainBlocks: westend.DefaultRetainBlocks, - Pruning: pruner.Mode(westend.DefaultPruningMode), - MetricsAddress: westend.DefaultMetricsAddress, - TelemetryURLs: westend.DefaultTelemetryURLs, - }, - Log: LogConfig{ - CoreLvl: westend.DefaultLvl, - DigestLvl: westend.DefaultLvl, - SyncLvl: westend.DefaultLvl, - NetworkLvl: westend.DefaultLvl, - RPCLvl: westend.DefaultLvl, - StateLvl: westend.DefaultLvl, - RuntimeLvl: westend.DefaultLvl, - BlockProducerLvl: westend.DefaultLvl, - FinalityGadgetLvl: westend.DefaultLvl, - }, - Init: InitConfig{ - Genesis: westend.DefaultGenesis, - }, - Account: AccountConfig{ - Key: westend.DefaultKey, - Unlock: westend.DefaultUnlock, - }, - Core: CoreConfig{ - Roles: westend.DefaultRoles, - WasmInterpreter: westend.DefaultWasmInterpreter, - }, - Network: NetworkConfig{ - Port: westend.DefaultNetworkPort, - Bootnodes: westend.DefaultNetworkBootnodes, - NoBootstrap: westend.DefaultNoBootstrap, - NoMDNS: westend.DefaultNoMDNS, - }, - RPC: RPCConfig{ - Port: westend.DefaultRPCHTTPPort, - Host: westend.DefaultRPCHTTPHost, - Modules: westend.DefaultRPCModules, - WSPort: westend.DefaultRPCWSPort, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: westend.DefaultPprofListeningAddress, - BlockProfileRate: westend.DefaultPprofBlockRate, - MutexProfileRate: westend.DefaultPprofMutexRate, - }, - }, - } -} diff --git a/dot/config/toml/config.go b/dot/config/toml/config.go deleted file mode 100644 index 4738ee5b61..0000000000 --- a/dot/config/toml/config.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2021 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package toml - -// Config is a collection of configurations throughout the system -type Config struct { - Global GlobalConfig `toml:"global,omitempty"` - Log LogConfig `toml:"log,omitempty"` - Init InitConfig `toml:"init,omitempty"` - Account AccountConfig `toml:"account,omitempty"` - Core CoreConfig `toml:"core,omitempty"` - Network NetworkConfig `toml:"network,omitempty"` - State StateConfig `toml:"state,omitempty"` - RPC RPCConfig `toml:"rpc,omitempty"` - Pprof PprofConfig `toml:"pprof,omitempty"` -} - -// GlobalConfig is to marshal/unmarshal toml global config vars -type GlobalConfig struct { - Name string `toml:"name,omitempty"` - ID string `toml:"id,omitempty"` - BasePath string `toml:"basepath,omitempty"` - LogLvl string `toml:"log,omitempty"` - MetricsAddress string `toml:"metrics-address,omitempty"` - RetainBlocks uint32 `toml:"retain-blocks,omitempty"` - Pruning string `toml:"pruning,omitempty"` -} - -// LogConfig represents the log levels for individual packages -type LogConfig struct { - CoreLvl string `toml:"core,omitempty"` - DigestLvl string `toml:"digest,omitempty"` - SyncLvl string `toml:"sync,omitempty"` - NetworkLvl string `toml:"network,omitempty"` - RPCLvl string `toml:"rpc,omitempty"` - StateLvl string `toml:"state,omitempty"` - RuntimeLvl string `toml:"runtime,omitempty"` - BlockProducerLvl string `toml:"babe,omitempty"` - FinalityGadgetLvl string `toml:"grandpa,omitempty"` -} - -// InitConfig is the configuration for the node initialization -type InitConfig struct { - Genesis string `toml:"genesis,omitempty"` -} - -// AccountConfig is to marshal/unmarshal account config vars -type AccountConfig struct { - Key string `toml:"key,omitempty"` - Unlock string `toml:"unlock,omitempty"` -} - -// NetworkConfig is to marshal/unmarshal toml network config vars -type NetworkConfig struct { - Port uint16 `toml:"port,omitempty"` - Bootnodes []string `toml:"bootnodes,omitempty"` - ProtocolID string `toml:"protocol,omitempty"` - NoBootstrap bool `toml:"nobootstrap,omitempty"` - NoMDNS bool `toml:"nomdns,omitempty"` - MinPeers int `toml:"min-peers,omitempty"` - MaxPeers int `toml:"max-peers,omitempty"` - PersistentPeers []string `toml:"persistent-peers,omitempty"` - DiscoveryInterval int `toml:"discovery-interval,omitempty"` - PublicIP string `toml:"public-ip,omitempty"` - PublicDNS string `toml:"public-dns,omitempty"` - NodeKey string `toml:"node-key,omitempty"` - ListenAddress string `toml:"listen-addr,omitempty"` -} - -// CoreConfig is to marshal/unmarshal toml core config vars -type CoreConfig struct { - Roles byte `toml:"roles,omitempty"` - BabeAuthority bool `toml:"babe-authority"` - GrandpaAuthority bool `toml:"grandpa-authority"` - SlotDuration uint64 `toml:"slot-duration,omitempty"` - EpochLength uint64 `toml:"epoch-length,omitempty"` - WasmInterpreter string `toml:"wasm-interpreter,omitempty"` - GrandpaInterval uint32 `toml:"grandpa-interval,omitempty"` -} - -// StateConfig contains the configuration for the state. -type StateConfig struct { - Rewind uint `toml:"rewind,omitempty"` -} - -// RPCConfig is to marshal/unmarshal toml RPC config vars -type RPCConfig struct { - Enabled bool `toml:"enabled,omitempty"` - Unsafe bool `toml:"unsafe,omitempty"` - UnsafeExternal bool `toml:"unsafe-external,omitempty"` - External bool `toml:"external,omitempty"` - Port uint32 `toml:"port,omitempty"` - Host string `toml:"host,omitempty"` - Modules []string `toml:"modules,omitempty"` - WSPort uint32 `toml:"ws-port,omitempty"` - WS bool `toml:"ws,omitempty"` - WSExternal bool `toml:"ws-external,omitempty"` - WSUnsafe bool `toml:"ws-unsafe,omitempty"` - WSUnsafeExternal bool `toml:"ws-unsafe-external,omitempty"` -} - -// PprofConfig contains the configuration for Pprof. -type PprofConfig struct { - Enabled bool `toml:"enabled,omitempty"` - ListeningAddress string `toml:"listening-address,omitempty"` - BlockRate int `toml:"block-rate,omitempty"` - MutexRate int `toml:"mutex-rate,omitempty"` -} diff --git a/dot/config_test.go b/dot/config_test.go index 420be5455b..b7e57284ea 100644 --- a/dot/config_test.go +++ b/dot/config_test.go @@ -6,138 +6,13 @@ package dot import ( "testing" + "github.com/ChainSafe/gossamer/chain/kusama" + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/internal/pprof" - "github.com/ChainSafe/gossamer/lib/common" "github.com/stretchr/testify/assert" ) -func TestConfig(t *testing.T) { - t.Parallel() - - tests := []struct { - name string - want *Config - configMaker func() *Config - }{ - { - name: "kusama_default", - want: &Config{ - Global: GlobalConfig{ - Name: "Kusama", - ID: "ksmcc3", - BasePath: "~/.gossamer/kusama", - LogLvl: log.Info, - MetricsAddress: "localhost:9876", - RetainBlocks: 512, - Pruning: "archive", - }, - Log: LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: InitConfig{ - Genesis: "./chain/kusama/genesis.json", - }, - Account: AccountConfig{}, - Core: CoreConfig{ - Roles: common.FullNodeRole, - WasmInterpreter: "wasmer", - GrandpaInterval: 0, - }, - Network: NetworkConfig{ - Port: 7001, - Bootnodes: nil, - ProtocolID: "", - NoBootstrap: false, - NoMDNS: false, - MinPeers: 0, - MaxPeers: 0, - PersistentPeers: nil, - DiscoveryInterval: 0, - PublicIP: "", - PublicDNS: "", - }, - RPC: RPCConfig{ - Port: 8545, - Host: "localhost", - Modules: []string{"system", "author", "chain", "state", "rpc", "grandpa", "offchain", - "childstate", "syncstate", "payment"}, - WSPort: 8546, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: "localhost:6060", - }, - }, - }, - configMaker: KusamaConfig, - }, - { - name: "polkadot_default", - want: &Config{ - Global: GlobalConfig{ - Name: "Polkadot", - ID: "polkadot", - BasePath: "~/.gossamer/polkadot", - LogLvl: log.Info, - MetricsAddress: "localhost:9876", - RetainBlocks: 512, - Pruning: "archive", - }, - Log: LogConfig{ - CoreLvl: log.Info, - DigestLvl: log.Info, - SyncLvl: log.Info, - NetworkLvl: log.Info, - RPCLvl: log.Info, - StateLvl: log.Info, - RuntimeLvl: log.Info, - BlockProducerLvl: log.Info, - FinalityGadgetLvl: log.Info, - }, - Init: InitConfig{Genesis: "./chain/polkadot/genesis.json"}, - Core: CoreConfig{ - Roles: common.FullNodeRole, - WasmInterpreter: "wasmer", - }, - Network: NetworkConfig{ - Port: 7001, - }, - RPC: RPCConfig{ - Port: 8545, - Host: "localhost", - Modules: []string{"system", "author", "chain", "state", "rpc", "grandpa", "offchain", - "childstate", "syncstate", "payment"}, - WSPort: 8546, - }, - Pprof: PprofConfig{ - Settings: pprof.Settings{ - ListeningAddress: "localhost:6060", - }, - }, - }, - configMaker: PolkadotConfig, - }, - } - for _, tt := range tests { - tt := tt - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - - got := tt.configMaker() - assert.Equal(t, tt.want, got) - }) - } -} - func TestRPCConfig_isRPCEnabled(t *testing.T) { t.Parallel() @@ -233,33 +108,43 @@ func Test_networkServiceEnabled(t *testing.T) { tests := []struct { name string - config *Config + config *cfg.Config want bool }{ { - name: "kusama config", - config: KusamaConfig(), + name: "kusama_config", + config: kusama.DefaultConfig(), want: true, }, { - name: "empty config", - config: &Config{}, - want: false, + name: "empty_config", + config: &cfg.Config{ + BaseConfig: cfg.BaseConfig{}, + Log: &cfg.LogConfig{}, + Account: &cfg.AccountConfig{}, + Core: &cfg.CoreConfig{}, + Network: &cfg.NetworkConfig{}, + State: &cfg.StateConfig{}, + RPC: &cfg.RPCConfig{}, + Pprof: &cfg.PprofConfig{}, + System: &cfg.SystemConfig{}, + }, + want: false, }, { name: "core_roles_0", - config: &Config{ - Core: CoreConfig{ - Roles: 0, + config: &cfg.Config{ + Core: &cfg.CoreConfig{ + Role: 0, }, }, want: false, }, { name: "core_roles_1", - config: &Config{ - Core: CoreConfig{ - Roles: 1, + config: &cfg.Config{ + Core: &cfg.CoreConfig{ + Role: 1, }, }, want: true, diff --git a/dot/import_integration_test.go b/dot/import_integration_test.go index 25a3aec829..c89148e2cf 100644 --- a/dot/import_integration_test.go +++ b/dot/import_integration_test.go @@ -10,6 +10,8 @@ import ( "os" "testing" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + "github.com/ChainSafe/gossamer/dot/state" "github.com/ChainSafe/gossamer/dot/types" "github.com/ChainSafe/gossamer/internal/log" @@ -84,14 +86,13 @@ func TestNewHeaderFromFile(t *testing.T) { func TestImportState_Integration(t *testing.T) { basepath := os.TempDir() - cfg := NewWestendDevConfig(t) - - genFile := NewTestGenesisRawFile(t, cfg) + config := westend_dev.DefaultConfig() + config.BasePath = basepath - cfg.Init.Genesis = genFile + genFile := NewTestGenesisRawFile(t, config) - cfg.Global.BasePath = basepath - err := InitNode(cfg) + config.ChainSpec = genFile + err := InitNode(config) require.NoError(t, err) stateFP := setupStateFile(t) @@ -101,11 +102,11 @@ func TestImportState_Integration(t *testing.T) { err = ImportState(basepath, stateFP, headerFP, firstSlot) require.NoError(t, err) // confirm data is imported into db - config := state.Config{ + stateConfig := state.Config{ Path: basepath, LogLevel: log.Info, } - srv := state.NewService(config) + srv := state.NewService(stateConfig) srv.SetupBase() lookupKey := []byte{98, 108, 111, 99, 107, 104, 100, 114, 88, 127, 109, 161, 191, 167, 26, 103, 95, 16, 223, 160, @@ -120,13 +121,12 @@ func TestImportState(t *testing.T) { basepath := t.TempDir() - cfg := NewWestendDevConfig(t) - - cfg.Init.Genesis = NewTestGenesisRawFile(t, cfg) + config := westend_dev.DefaultConfig() + config.BasePath = basepath - cfg.Global.BasePath = basepath + config.ChainSpec = NewTestGenesisRawFile(t, config) nodeInstance := nodeBuilder{} - err := nodeInstance.initNode(cfg) + err := nodeInstance.initNode(config) require.NoError(t, err) stateFP := setupStateFile(t) diff --git a/dot/mock_node_builder_test.go b/dot/mock_node_builder_test.go index 6f2b6e795a..e140602a46 100644 --- a/dot/mock_node_builder_test.go +++ b/dot/mock_node_builder_test.go @@ -7,6 +7,7 @@ package dot import ( reflect "reflect" + config "github.com/ChainSafe/gossamer/config" core "github.com/ChainSafe/gossamer/dot/core" digest "github.com/ChainSafe/gossamer/dot/digest" network "github.com/ChainSafe/gossamer/dot/network" @@ -47,18 +48,18 @@ func (m *MocknodeBuilderIface) EXPECT() *MocknodeBuilderIfaceMockRecorder { } // createBABEService mocks base method. -func (m *MocknodeBuilderIface) createBABEService(cfg *Config, st *state.Service, ks KeyStore, cs *core.Service, telemetryMailer Telemetry) (*babe.Service, error) { +func (m *MocknodeBuilderIface) createBABEService(config *config.Config, st *state.Service, ks KeyStore, cs *core.Service, telemetryMailer Telemetry) (*babe.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "createBABEService", cfg, st, ks, cs, telemetryMailer) + ret := m.ctrl.Call(m, "createBABEService", config, st, ks, cs, telemetryMailer) ret0, _ := ret[0].(*babe.Service) ret1, _ := ret[1].(error) return ret0, ret1 } // createBABEService indicates an expected call of createBABEService. -func (mr *MocknodeBuilderIfaceMockRecorder) createBABEService(cfg, st, ks, cs, telemetryMailer interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) createBABEService(config, st, ks, cs, telemetryMailer interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createBABEService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createBABEService), cfg, st, ks, cs, telemetryMailer) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createBABEService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createBABEService), config, st, ks, cs, telemetryMailer) } // createBlockVerifier mocks base method. @@ -76,18 +77,18 @@ func (mr *MocknodeBuilderIfaceMockRecorder) createBlockVerifier(st interface{}) } // createCoreService mocks base method. -func (m *MocknodeBuilderIface) createCoreService(cfg *Config, ks *keystore.GlobalKeystore, st *state.Service, net *network.Service, dh *digest.Handler) (*core.Service, error) { +func (m *MocknodeBuilderIface) createCoreService(config *config.Config, ks *keystore.GlobalKeystore, st *state.Service, net *network.Service, dh *digest.Handler) (*core.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "createCoreService", cfg, ks, st, net, dh) + ret := m.ctrl.Call(m, "createCoreService", config, ks, st, net, dh) ret0, _ := ret[0].(*core.Service) ret1, _ := ret[1].(error) return ret0, ret1 } // createCoreService indicates an expected call of createCoreService. -func (mr *MocknodeBuilderIfaceMockRecorder) createCoreService(cfg, ks, st, net, dh interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) createCoreService(config, ks, st, net, dh interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createCoreService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createCoreService), cfg, ks, st, net, dh) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createCoreService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createCoreService), config, ks, st, net, dh) } // createDigestHandler mocks base method. @@ -106,33 +107,33 @@ func (mr *MocknodeBuilderIfaceMockRecorder) createDigestHandler(lvl, st interfac } // createGRANDPAService mocks base method. -func (m *MocknodeBuilderIface) createGRANDPAService(cfg *Config, st *state.Service, ks KeyStore, net *network.Service, telemetryMailer Telemetry) (*grandpa.Service, error) { +func (m *MocknodeBuilderIface) createGRANDPAService(config *config.Config, st *state.Service, ks KeyStore, net *network.Service, telemetryMailer Telemetry) (*grandpa.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "createGRANDPAService", cfg, st, ks, net, telemetryMailer) + ret := m.ctrl.Call(m, "createGRANDPAService", config, st, ks, net, telemetryMailer) ret0, _ := ret[0].(*grandpa.Service) ret1, _ := ret[1].(error) return ret0, ret1 } // createGRANDPAService indicates an expected call of createGRANDPAService. -func (mr *MocknodeBuilderIfaceMockRecorder) createGRANDPAService(cfg, st, ks, net, telemetryMailer interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) createGRANDPAService(config, st, ks, net, telemetryMailer interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createGRANDPAService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createGRANDPAService), cfg, st, ks, net, telemetryMailer) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createGRANDPAService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createGRANDPAService), config, st, ks, net, telemetryMailer) } // createNetworkService mocks base method. -func (m *MocknodeBuilderIface) createNetworkService(cfg *Config, stateSrvc *state.Service, telemetryMailer Telemetry) (*network.Service, error) { +func (m *MocknodeBuilderIface) createNetworkService(config *config.Config, stateSrvc *state.Service, telemetryMailer Telemetry) (*network.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "createNetworkService", cfg, stateSrvc, telemetryMailer) + ret := m.ctrl.Call(m, "createNetworkService", config, stateSrvc, telemetryMailer) ret0, _ := ret[0].(*network.Service) ret1, _ := ret[1].(error) return ret0, ret1 } // createNetworkService indicates an expected call of createNetworkService. -func (mr *MocknodeBuilderIfaceMockRecorder) createNetworkService(cfg, stateSrvc, telemetryMailer interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) createNetworkService(config, stateSrvc, telemetryMailer interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createNetworkService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createNetworkService), cfg, stateSrvc, telemetryMailer) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "createNetworkService", reflect.TypeOf((*MocknodeBuilderIface)(nil).createNetworkService), config, stateSrvc, telemetryMailer) } // createRPCService mocks base method. @@ -166,7 +167,7 @@ func (mr *MocknodeBuilderIfaceMockRecorder) createRuntimeStorage(st interface{}) } // createStateService mocks base method. -func (m *MocknodeBuilderIface) createStateService(config *Config) (*state.Service, error) { +func (m *MocknodeBuilderIface) createStateService(config *config.Config) (*state.Service, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "createStateService", config) ret0, _ := ret[0].(*state.Service) @@ -196,7 +197,7 @@ func (mr *MocknodeBuilderIfaceMockRecorder) createSystemService(cfg, stateSrvc i } // initNode mocks base method. -func (m *MocknodeBuilderIface) initNode(config *Config) error { +func (m *MocknodeBuilderIface) initNode(config *config.Config) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "initNode", config) ret0, _ := ret[0].(error) @@ -224,30 +225,30 @@ func (mr *MocknodeBuilderIfaceMockRecorder) isNodeInitialised(basepath interface } // loadRuntime mocks base method. -func (m *MocknodeBuilderIface) loadRuntime(cfg *Config, ns *runtime.NodeStorage, stateSrvc *state.Service, ks *keystore.GlobalKeystore, net *network.Service) error { +func (m *MocknodeBuilderIface) loadRuntime(config *config.Config, ns *runtime.NodeStorage, stateSrvc *state.Service, ks *keystore.GlobalKeystore, net *network.Service) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "loadRuntime", cfg, ns, stateSrvc, ks, net) + ret := m.ctrl.Call(m, "loadRuntime", config, ns, stateSrvc, ks, net) ret0, _ := ret[0].(error) return ret0 } // loadRuntime indicates an expected call of loadRuntime. -func (mr *MocknodeBuilderIfaceMockRecorder) loadRuntime(cfg, ns, stateSrvc, ks, net interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) loadRuntime(config, ns, stateSrvc, ks, net interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "loadRuntime", reflect.TypeOf((*MocknodeBuilderIface)(nil).loadRuntime), cfg, ns, stateSrvc, ks, net) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "loadRuntime", reflect.TypeOf((*MocknodeBuilderIface)(nil).loadRuntime), config, ns, stateSrvc, ks, net) } // newSyncService mocks base method. -func (m *MocknodeBuilderIface) newSyncService(cfg *Config, st *state.Service, finalityGadget BlockJustificationVerifier, verifier *babe.VerificationManager, cs *core.Service, net *network.Service, telemetryMailer Telemetry) (*sync.Service, error) { +func (m *MocknodeBuilderIface) newSyncService(config *config.Config, st *state.Service, finalityGadget BlockJustificationVerifier, verifier *babe.VerificationManager, cs *core.Service, net *network.Service, telemetryMailer Telemetry) (*sync.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "newSyncService", cfg, st, finalityGadget, verifier, cs, net, telemetryMailer) + ret := m.ctrl.Call(m, "newSyncService", config, st, finalityGadget, verifier, cs, net, telemetryMailer) ret0, _ := ret[0].(*sync.Service) ret1, _ := ret[1].(error) return ret0, ret1 } // newSyncService indicates an expected call of newSyncService. -func (mr *MocknodeBuilderIfaceMockRecorder) newSyncService(cfg, st, finalityGadget, verifier, cs, net, telemetryMailer interface{}) *gomock.Call { +func (mr *MocknodeBuilderIfaceMockRecorder) newSyncService(config, st, finalityGadget, verifier, cs, net, telemetryMailer interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "newSyncService", reflect.TypeOf((*MocknodeBuilderIface)(nil).newSyncService), cfg, st, finalityGadget, verifier, cs, net, telemetryMailer) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "newSyncService", reflect.TypeOf((*MocknodeBuilderIface)(nil).newSyncService), config, st, finalityGadget, verifier, cs, net, telemetryMailer) } diff --git a/dot/network/block_announce.go b/dot/network/block_announce.go index b736793bf8..afd8813336 100644 --- a/dot/network/block_announce.go +++ b/dot/network/block_announce.go @@ -99,7 +99,7 @@ func decodeBlockAnnounceMessage(in []byte) (NotificationsMessage, error) { // BlockAnnounceHandshake is exchanged by nodes that are beginning the BlockAnnounce protocol type BlockAnnounceHandshake struct { - Roles common.Roles + Roles common.NetworkRole BestBlockNumber uint32 BestBlockHash common.Hash GenesisHash common.Hash @@ -107,7 +107,7 @@ type BlockAnnounceHandshake struct { // String formats a BlockAnnounceHandshake as a string func (hs *BlockAnnounceHandshake) String() string { - return fmt.Sprintf("BlockAnnounceHandshake Roles=%d BestBlockNumber=%d BestBlockHash=%s GenesisHash=%s", + return fmt.Sprintf("BlockAnnounceHandshake NetworkRole=%d BestBlockNumber=%d BestBlockHash=%s GenesisHash=%s", hs.Roles, hs.BestBlockNumber, hs.BestBlockHash, diff --git a/dot/network/config.go b/dot/network/config.go index 8c0f4a354b..2bd62a356e 100644 --- a/dot/network/config.go +++ b/dot/network/config.go @@ -60,7 +60,7 @@ type Config struct { // BasePath the data directory for the node BasePath string // Roles a bitmap value that represents the different roles for the sender node (see Table D.2) - Roles common.Roles + Roles common.NetworkRole // Service interfaces BlockState BlockState diff --git a/dot/network/host.go b/dot/network/host.go index 2dedd4347c..1374cb672f 100644 --- a/dot/network/host.go +++ b/dot/network/host.go @@ -136,13 +136,13 @@ func newHost(ctx context.Context, cfg *Config) (*host, error) { // format bootnodes bns, err := stringsToAddrInfos(cfg.Bootnodes) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to parse bootnodes: %w", err) } // format persistent peers pps, err := stringsToAddrInfos(cfg.PersistentPeers) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to parse persistent peers: %w", err) } // We have tried to set maxInPeers and maxOutPeers such that number of peer @@ -158,7 +158,7 @@ func newHost(ctx context.Context, cfg *Config) (*host, error) { // create connection manager cm, err := newConnManager(cfg.MinPeers, cfg.MaxPeers, peerCfgSet) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create connection manager: %w", err) } for _, pp := range pps { @@ -170,12 +170,12 @@ func newHost(ctx context.Context, cfg *Config) (*host, error) { ds, err := badger.NewDatastore(path.Join(cfg.BasePath, "libp2p-datastore"), &badger.DefaultOptions) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create libp2p datastore: %w", err) } ps, err := pstoreds.NewPeerstore(ctx, ds, pstoreds.DefaultOpts()) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to create peerstore: %w", err) } // set libp2p host options diff --git a/dot/network/service.go b/dot/network/service.go index 99e76ca16a..fd0de70f95 100644 --- a/dot/network/service.go +++ b/dot/network/service.go @@ -185,7 +185,7 @@ func NewService(cfg *Config) (*Service, error) { host, err := newHost(ctx, cfg) if err != nil { cancel() - return nil, err + return nil, fmt.Errorf("failed to create host: %w", err) } bufPool := &sync.Pool{ @@ -615,7 +615,7 @@ func (s *Service) Peers() []common.PeerInfo { peerHandshakeMessage := data.handshake peers = append(peers, common.PeerInfo{ PeerID: p.String(), - Roles: peerHandshakeMessage.(*BlockAnnounceHandshake).Roles, + Role: peerHandshakeMessage.(*BlockAnnounceHandshake).Roles, BestHash: peerHandshakeMessage.(*BlockAnnounceHandshake).BestBlockHash, BestNumber: uint64(peerHandshakeMessage.(*BlockAnnounceHandshake).BestBlockNumber), }) @@ -635,7 +635,7 @@ func (s *Service) RemoveReservedPeers(addrs ...string) error { } // NodeRoles Returns the roles the node is running as. -func (s *Service) NodeRoles() common.Roles { +func (s *Service) NodeRoles() common.NetworkRole { return s.cfg.Roles } diff --git a/dot/node.go b/dot/node.go index 849f485921..1a9374647f 100644 --- a/dot/node.go +++ b/dot/node.go @@ -14,6 +14,7 @@ import ( "syscall" "time" + cfg "github.com/ChainSafe/gossamer/config" "github.com/ChainSafe/gossamer/dot/core" "github.com/ChainSafe/gossamer/dot/digest" "github.com/ChainSafe/gossamer/dot/network" @@ -50,23 +51,23 @@ type Node struct { type nodeBuilderIface interface { isNodeInitialised(basepath string) error - initNode(config *Config) error - createStateService(config *Config) (*state.Service, error) - createNetworkService(cfg *Config, stateSrvc *state.Service, telemetryMailer Telemetry) (*network.Service, + initNode(config *cfg.Config) error + createStateService(config *cfg.Config) (*state.Service, error) + createNetworkService(config *cfg.Config, stateSrvc *state.Service, telemetryMailer Telemetry) (*network.Service, error) createRuntimeStorage(st *state.Service) (*runtime.NodeStorage, error) - loadRuntime(cfg *Config, ns *runtime.NodeStorage, stateSrvc *state.Service, ks *keystore.GlobalKeystore, + loadRuntime(config *cfg.Config, ns *runtime.NodeStorage, stateSrvc *state.Service, ks *keystore.GlobalKeystore, net *network.Service) error createBlockVerifier(st *state.Service) *babe.VerificationManager createDigestHandler(lvl log.Level, st *state.Service) (*digest.Handler, error) - createCoreService(cfg *Config, ks *keystore.GlobalKeystore, st *state.Service, net *network.Service, + createCoreService(config *cfg.Config, ks *keystore.GlobalKeystore, st *state.Service, net *network.Service, dh *digest.Handler) (*core.Service, error) - createGRANDPAService(cfg *Config, st *state.Service, ks KeyStore, + createGRANDPAService(config *cfg.Config, st *state.Service, ks KeyStore, net *network.Service, telemetryMailer Telemetry) (*grandpa.Service, error) - newSyncService(cfg *Config, st *state.Service, finalityGadget BlockJustificationVerifier, + newSyncService(config *cfg.Config, st *state.Service, finalityGadget BlockJustificationVerifier, verifier *babe.VerificationManager, cs *core.Service, net *network.Service, telemetryMailer Telemetry) (*dotsync.Service, error) - createBABEService(cfg *Config, st *state.Service, ks KeyStore, cs *core.Service, + createBABEService(config *cfg.Config, st *state.Service, ks KeyStore, cs *core.Service, telemetryMailer Telemetry) (service *babe.Service, err error) createSystemService(cfg *types.SystemInfo, stateSrvc *state.Service) (*system.Service, error) createRPCService(params rpcServiceSettings) (*rpc.HTTPServer, error) @@ -116,21 +117,25 @@ func (*nodeBuilder) isNodeInitialised(basepath string) error { } // InitNode initialise the node with the given Config -func InitNode(cfg *Config) error { +func InitNode(config *cfg.Config) error { nodeInstance := nodeBuilder{} - return nodeInstance.initNode(cfg) + return nodeInstance.initNode(config) } // InitNode initialises a new dot node from the provided dot node configuration // and JSON formatted genesis file. -func (*nodeBuilder) initNode(cfg *Config) error { - logger.Patch(log.SetLevel(cfg.Global.LogLvl)) +func (*nodeBuilder) initNode(config *cfg.Config) error { + globalLogLevel, err := log.ParseLevel(config.LogLevel) + if err != nil { + return fmt.Errorf("failed to parse log level: %w", err) + } + logger.Patch(log.SetLevel(globalLogLevel)) logger.Infof( - "🕸️ initialising node with name %s, id %s, base path %s and genesis %s...", - cfg.Global.Name, cfg.Global.ID, cfg.Global.BasePath, cfg.Init.Genesis) + "🕸️ initialising node with name %s, id %s, base path %s and chain-spec %s...", + config.Name, config.ID, config.BasePath, config.ChainSpec) // create genesis from configuration file - gen, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis) + gen, err := genesis.NewGenesisFromJSONRaw(config.ChainSpec) if err != nil { return fmt.Errorf("failed to load genesis from file: %w", err) } @@ -155,24 +160,29 @@ func (*nodeBuilder) initNode(cfg *Config) error { return fmt.Errorf("failed to create genesis block from trie: %w", err) } - telemetryMailer, err := setupTelemetry(cfg, nil) + telemetryMailer, err := setupTelemetry(config, nil) if err != nil { return fmt.Errorf("cannot setup telemetry mailer: %w", err) } - config := state.Config{ - Path: cfg.Global.BasePath, - LogLevel: cfg.Global.LogLvl, + stateLogLevel, err := log.ParseLevel(config.LogLevel) + if err != nil { + return fmt.Errorf("cannot parse log level: %w", err) + } + + stateConfig := state.Config{ + Path: config.BasePath, + LogLevel: stateLogLevel, PrunerCfg: pruner.Config{ - Mode: cfg.Global.Pruning, - RetainedBlocks: cfg.Global.RetainBlocks, + Mode: config.Pruning, + RetainedBlocks: config.RetainBlocks, }, Telemetry: telemetryMailer, - Metrics: metrics.NewIntervalConfig(cfg.Global.PublishMetrics), + Metrics: metrics.NewIntervalConfig(config.PrometheusExternal), } // create new state service - stateSrvc := state.NewService(config) + stateSrvc := state.NewService(stateConfig) // initialise state service with genesis data, block, and trie err = stateSrvc.Initialise(gen, &header, &t) @@ -180,14 +190,14 @@ func (*nodeBuilder) initNode(cfg *Config) error { return fmt.Errorf("failed to initialise state service: %s", err) } - err = storeGlobalNodeName(cfg.Global.Name, cfg.Global.BasePath) + err = storeGlobalNodeName(config.Name, config.BasePath) if err != nil { return fmt.Errorf("failed to store global node name: %s", err) } logger.Infof( - "node initialised with name %s, id %s, base path %s, genesis %s, block %v and genesis hash %s", - cfg.Global.Name, cfg.Global.ID, cfg.Global.BasePath, cfg.Init.Genesis, header.Number, header.Hash()) + "node initialised with name %s, id %s, base path %s, chain-spec %s, block %v and genesis hash %s", + config.Name, config.ID, config.BasePath, config.ChainSpec, header.Number, header.Hash()) return nil } @@ -217,12 +227,12 @@ func LoadGlobalNodeName(basepath string) (nodename string, err error) { } // NewNode creates a node based on the given Config and key store. -func NewNode(cfg *Config, ks *keystore.GlobalKeystore) (*Node, error) { +func NewNode(config *cfg.Config, ks *keystore.GlobalKeystore) (*Node, error) { serviceRegistryLogger := logger.New(log.AddContext("pkg", "services")) - return newNode(cfg, ks, &nodeBuilder{}, services.NewServiceRegistry(serviceRegistryLogger)) + return newNode(config, ks, &nodeBuilder{}, services.NewServiceRegistry(serviceRegistryLogger)) } -func newNode(cfg *Config, +func newNode(config *cfg.Config, ks *keystore.GlobalKeystore, builder nodeBuilderIface, serviceRegistry ServiceRegisterer) (*Node, error) { @@ -233,29 +243,34 @@ func newNode(cfg *Config, debug.SetGCPercent(prev) } - if builder.isNodeInitialised(cfg.Global.BasePath) != nil { - err := builder.initNode(cfg) + if builder.isNodeInitialised(config.BasePath) != nil { + err := builder.initNode(config) if err != nil { return nil, fmt.Errorf("cannot initialise node: %w", err) } } - logger.Patch(log.SetLevel(cfg.Global.LogLvl)) + globalLogLevel, err := log.ParseLevel(config.LogLevel) + if err != nil { + return nil, fmt.Errorf("cannot parse global log level: %w", err) + } + + logger.Patch(log.SetLevel(globalLogLevel)) logger.Infof( "🕸️ initialising node services with global configuration name %s, id %s and base path %s...", - cfg.Global.Name, cfg.Global.ID, cfg.Global.BasePath) + config.Name, config.ID, config.BasePath) var ( nodeSrvcs []service networkSrvc *network.Service ) - if cfg.Pprof.Enabled { - nodeSrvcs = append(nodeSrvcs, createPprofService(cfg.Pprof.Settings)) + if config.Pprof.Enabled { + nodeSrvcs = append(nodeSrvcs, createPprofService(*config.Pprof)) } - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) if err != nil { return nil, fmt.Errorf("failed to create state service: %s", err) } @@ -265,19 +280,24 @@ func newNode(cfg *Config, return nil, fmt.Errorf("cannot load genesis data: %w", err) } - telemetryMailer, err := setupTelemetry(cfg, gd) + telemetryMailer, err := setupTelemetry(config, gd) if err != nil { return nil, fmt.Errorf("cannot setup telemetry mailer: %w", err) } stateSrvc.Telemetry = telemetryMailer - err = startStateService(cfg, stateSrvc) + err = startStateService(*config.State, stateSrvc) if err != nil { return nil, fmt.Errorf("cannot start state service: %w", err) } - sysSrvc, err := builder.createSystemService(&cfg.System, stateSrvc) + systemInfo := &types.SystemInfo{ + SystemName: config.System.SystemName, + SystemVersion: config.System.SystemVersion, + } + + sysSrvc, err := builder.createSystemService(systemInfo, stateSrvc) if err != nil { return nil, fmt.Errorf("failed to create system service: %s", err) } @@ -285,9 +305,9 @@ func newNode(cfg *Config, nodeSrvcs = append(nodeSrvcs, sysSrvc) // check if network service is enabled - if enabled := networkServiceEnabled(cfg); enabled { + if enabled := networkServiceEnabled(config); enabled { // create network service and append network service to node services - networkSrvc, err = builder.createNetworkService(cfg, stateSrvc, telemetryMailer) + networkSrvc, err = builder.createNetworkService(config, stateSrvc, telemetryMailer) if err != nil { return nil, fmt.Errorf("failed to create network service: %s", err) } @@ -298,11 +318,11 @@ func newNode(cfg *Config, //sent NewSystemConnectedTM only if networkServiceEnabled connectedMsg := telemetry.NewSystemConnected( - cfg.Core.GrandpaAuthority, + config.Core.GrandpaAuthority, sysSrvc.ChainName(), &genesisHash, sysSrvc.SystemName(), - cfg.Global.Name, + config.BaseConfig.Name, netstate.PeerID, startupTime, sysSrvc.SystemVersion()) @@ -310,7 +330,7 @@ func newNode(cfg *Config, telemetryMailer.SendMessage(connectedMsg) } else { // do not create or append network service if network service is not enabled - logger.Debugf("network service disabled, roles are %d", cfg.Core.Roles) + logger.Debugf("network service disabled, role is %d", config.Core.Role) } // create runtime @@ -319,32 +339,36 @@ func newNode(cfg *Config, return nil, err } - err = builder.loadRuntime(cfg, ns, stateSrvc, ks, networkSrvc) + err = builder.loadRuntime(config, ns, stateSrvc, ks, networkSrvc) if err != nil { return nil, err } ver := builder.createBlockVerifier(stateSrvc) - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLogLevel, err := log.ParseLevel(config.Log.Digest) + if err != nil { + return nil, fmt.Errorf("cannot parse digest log level: %w", err) + } + dh, err := builder.createDigestHandler(digestLogLevel, stateSrvc) if err != nil { return nil, err } nodeSrvcs = append(nodeSrvcs, dh) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, networkSrvc, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, networkSrvc, dh) if err != nil { return nil, fmt.Errorf("failed to create core service: %s", err) } nodeSrvcs = append(nodeSrvcs, coreSrvc) - fg, err := builder.createGRANDPAService(cfg, stateSrvc, ks.Gran, networkSrvc, telemetryMailer) + fg, err := builder.createGRANDPAService(config, stateSrvc, ks.Gran, networkSrvc, telemetryMailer) if err != nil { return nil, err } nodeSrvcs = append(nodeSrvcs, fg) - syncer, err := builder.newSyncService(cfg, stateSrvc, fg, ver, coreSrvc, networkSrvc, telemetryMailer) + syncer, err := builder.newSyncService(config, stateSrvc, fg, ver, coreSrvc, networkSrvc, telemetryMailer) if err != nil { return nil, err } @@ -355,17 +379,17 @@ func newNode(cfg *Config, } nodeSrvcs = append(nodeSrvcs, syncer) - bp, err := builder.createBABEService(cfg, stateSrvc, ks.Babe, coreSrvc, telemetryMailer) + bp, err := builder.createBABEService(config, stateSrvc, ks.Babe, coreSrvc, telemetryMailer) if err != nil { return nil, err } nodeSrvcs = append(nodeSrvcs, bp) // check if rpc service is enabled - if enabled := cfg.RPC.isRPCEnabled() || cfg.RPC.isWSEnabled(); enabled { + if enabled := config.RPC.IsRPCEnabled() || config.RPC.IsWSEnabled(); enabled { var rpcSrvc *rpc.HTTPServer cRPCParams := rpcServiceSettings{ - config: cfg, + config: config, nodeStorage: ns, state: stateSrvc, core: coreSrvc, @@ -388,7 +412,7 @@ func newNode(cfg *Config, nodeSrvcs = append(nodeSrvcs, stateSrvc) node := &Node{ - Name: cfg.Global.Name, + Name: config.Name, ServiceRegistry: serviceRegistry, started: make(chan struct{}), } @@ -397,9 +421,10 @@ func newNode(cfg *Config, node.ServiceRegistry.RegisterService(srvc) } - if cfg.Global.PublishMetrics { - node.metricsServer = metrics.NewServer(cfg.Global.MetricsAddress) - err := node.metricsServer.Start(cfg.Global.MetricsAddress) + if config.PrometheusExternal { + address := fmt.Sprintf(":%d", config.PrometheusPort) + node.metricsServer = metrics.NewServer(address) + err := node.metricsServer.Start(address) if err != nil { return nil, fmt.Errorf("cannot start metrics server: %w", err) } @@ -408,16 +433,16 @@ func newNode(cfg *Config, return node, nil } -func setupTelemetry(cfg *Config, genesisData *genesis.Data) (mailer Telemetry, err error) { - if cfg.Global.NoTelemetry { +func setupTelemetry(config *cfg.Config, genesisData *genesis.Data) (mailer Telemetry, err error) { + if config.NoTelemetry { return telemetry.NewNoopMailer(), nil } var telemetryEndpoints []*genesis.TelemetryEndpoint - if len(cfg.Global.TelemetryURLs) == 0 && genesisData != nil { + if len(config.TelemetryURLs) == 0 && genesisData != nil { telemetryEndpoints = append(telemetryEndpoints, genesisData.TelemetryEndpoints...) } else { - telemetryURLs := cfg.Global.TelemetryURLs + telemetryURLs := config.TelemetryURLs for i := range telemetryURLs { telemetryEndpoints = append(telemetryEndpoints, &telemetryURLs[i]) } @@ -488,7 +513,7 @@ func (n *Node) Stop() { } } -func (n *nodeBuilder) loadRuntime(cfg *Config, ns *runtime.NodeStorage, +func (n *nodeBuilder) loadRuntime(config *cfg.Config, ns *runtime.NodeStorage, stateSrvc *state.Service, ks *keystore.GlobalKeystore, net *network.Service) error { blocks := stateSrvc.Block.GetNonFinalisedBlocks() @@ -510,7 +535,7 @@ func (n *nodeBuilder) loadRuntime(cfg *Config, ns *runtime.NodeStorage, continue } - rt, err := createRuntime(cfg, *ns, stateSrvc, ks, net, code) + rt, err := createRuntime(config, *ns, stateSrvc, ks, net, code) if err != nil { return err } diff --git a/dot/node_integration_test.go b/dot/node_integration_test.go index 3afd95f0c9..413c9fa72f 100644 --- a/dot/node_integration_test.go +++ b/dot/node_integration_test.go @@ -14,6 +14,9 @@ import ( "path/filepath" "testing" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + + cfg "github.com/ChainSafe/gossamer/config" "github.com/ChainSafe/gossamer/dot/core" digest "github.com/ChainSafe/gossamer/dot/digest" network "github.com/ChainSafe/gossamer/dot/network" @@ -44,12 +47,21 @@ func TestNewNode(t *testing.T) { mockTelemetryClient := NewMockTelemetry(ctrl) mockTelemetryClient.EXPECT().SendMessage(gomock.Any()) - initConfig := NewWestendDevConfig(t) - + basepath := t.TempDir() + initConfig := westend_dev.DefaultConfig() genFile := NewTestGenesisRawFile(t, initConfig) + initConfig.Name = "TestNode" + initConfig.BasePath = basepath + initConfig.ChainSpec = genFile + initConfig.Account.Key = "alice" + initConfig.Core.Role = common.FullNodeRole + initConfig.Core.WasmInterpreter = wasmer.Name + + initConfig.Log.Digest = "critical" + networkConfig := &network.Config{ - BasePath: t.TempDir(), + BasePath: basepath, NoBootstrap: true, NoMDNS: true, } @@ -58,39 +70,30 @@ func TestNewNode(t *testing.T) { testNetworkService, err := network.NewService(networkConfig) require.NoError(t, err) - config := state.Config{ - Path: initConfig.Global.BasePath, - LogLevel: initConfig.Log.StateLvl, + logLevel, err := log.ParseLevel(initConfig.Log.State) + require.NoError(t, err) + stateConfig := state.Config{ + Path: initConfig.BasePath, + LogLevel: logLevel, } - dotConfig := &Config{ - Global: GlobalConfig{BasePath: initConfig.Global.BasePath}, - Init: InitConfig{Genesis: genFile}, - Account: AccountConfig{Key: "alice"}, - Core: CoreConfig{ - Roles: common.FullNodeRole, - WasmInterpreter: wasmer.Name, - }, + systemInfo := &types.SystemInfo{ + SystemName: initConfig.System.SystemName, + SystemVersion: initConfig.System.SystemVersion, } - dotConfig.Init = InitConfig{Genesis: genFile} - dotConfig.Account = AccountConfig{Key: "alice"} - dotConfig.Core.Roles = common.FullNodeRole - dotConfig.Core.WasmInterpreter = wasmer.Name - dotConfig.Global.Name = "TestNode" - - ks, err := initKeystore(t, dotConfig) + ks, err := initKeystore(t, initConfig) assert.NoError(t, err) mockServiceRegistry := NewMockServiceRegisterer(ctrl) mockServiceRegistry.EXPECT().RegisterService(gomock.Any()).Times(8) m := NewMocknodeBuilderIface(ctrl) - m.EXPECT().isNodeInitialised(dotConfig.Global.BasePath).Return(nil) - m.EXPECT().createStateService(dotConfig).DoAndReturn(func(cfg *Config) (*state.Service, error) { - stateSrvc := state.NewService(config) + m.EXPECT().isNodeInitialised(initConfig.BasePath).Return(nil) + m.EXPECT().createStateService(initConfig).DoAndReturn(func(config *cfg.Config) (*state.Service, error) { + stateSrvc := state.NewService(stateConfig) // create genesis from configuration file - gen, err := genesis.NewGenesisFromJSONRaw(cfg.Init.Genesis) + gen, err := genesis.NewGenesisFromJSONRaw(config.ChainSpec) if err != nil { return nil, fmt.Errorf("failed to load genesis from file: %w", err) } @@ -119,36 +122,36 @@ func TestNewNode(t *testing.T) { m.EXPECT().createRuntimeStorage(gomock.AssignableToTypeOf(&state.Service{})).Return(&runtime. NodeStorage{}, nil) - m.EXPECT().loadRuntime(dotConfig, &runtime.NodeStorage{}, gomock.AssignableToTypeOf(&state.Service{}), + m.EXPECT().loadRuntime(initConfig, &runtime.NodeStorage{}, gomock.AssignableToTypeOf(&state.Service{}), ks, gomock.AssignableToTypeOf(&network.Service{})).Return(nil) m.EXPECT().createBlockVerifier(gomock.AssignableToTypeOf(&state.Service{})). Return(&babe.VerificationManager{}) m.EXPECT().createDigestHandler(log.Critical, gomock.AssignableToTypeOf(&state.Service{})). Return(&digest.Handler{}, nil) - m.EXPECT().createCoreService(dotConfig, ks, gomock.AssignableToTypeOf(&state.Service{}), + m.EXPECT().createCoreService(initConfig, ks, gomock.AssignableToTypeOf(&state.Service{}), gomock.AssignableToTypeOf(&network.Service{}), &digest.Handler{}). Return(&core.Service{}, nil) - m.EXPECT().createGRANDPAService(dotConfig, gomock.AssignableToTypeOf(&state.Service{}), + m.EXPECT().createGRANDPAService(initConfig, gomock.AssignableToTypeOf(&state.Service{}), ks.Gran, gomock.AssignableToTypeOf(&network.Service{}), gomock.AssignableToTypeOf(&telemetry.Mailer{})). Return(&grandpa.Service{}, nil) - m.EXPECT().newSyncService(dotConfig, gomock.AssignableToTypeOf(&state.Service{}), &grandpa.Service{}, + m.EXPECT().newSyncService(initConfig, gomock.AssignableToTypeOf(&state.Service{}), &grandpa.Service{}, &babe.VerificationManager{}, &core.Service{}, gomock.AssignableToTypeOf(&network.Service{}), gomock.AssignableToTypeOf(&telemetry.Mailer{})). Return(&dotsync.Service{}, nil) - m.EXPECT().createBABEService(dotConfig, gomock.AssignableToTypeOf(&state.Service{}), ks.Babe, + m.EXPECT().createBABEService(initConfig, gomock.AssignableToTypeOf(&state.Service{}), ks.Babe, &core.Service{}, gomock.AssignableToTypeOf(&telemetry.Mailer{})). Return(&babe.Service{}, nil) - m.EXPECT().createSystemService(&dotConfig.System, gomock.AssignableToTypeOf(&state.Service{})). + m.EXPECT().createSystemService(systemInfo, gomock.AssignableToTypeOf(&state.Service{})). DoAndReturn(func(cfg *types.SystemInfo, stateSrvc *state.Service) (*system.Service, error) { gd, err := stateSrvc.Base.LoadGenesisData() systemService := system.NewService(cfg, gd) return systemService, err }) - m.EXPECT().createNetworkService(dotConfig, gomock.AssignableToTypeOf(&state.Service{}), + m.EXPECT().createNetworkService(initConfig, gomock.AssignableToTypeOf(&state.Service{}), gomock.AssignableToTypeOf(&telemetry.Mailer{})).Return(testNetworkService, nil) - got, err := newNode(dotConfig, ks, m, mockServiceRegistry) + got, err := newNode(initConfig, ks, m, mockServiceRegistry) assert.NoError(t, err) expected := &Node{ @@ -159,12 +162,12 @@ func TestNewNode(t *testing.T) { } func Test_nodeBuilder_loadRuntime(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() type args struct { - cfg *Config - ns *runtime.NodeStorage - ks *keystore.GlobalKeystore - net *network.Service + config *cfg.Config + ns *runtime.NodeStorage + ks *keystore.GlobalKeystore + net *network.Service } tests := []struct { name string @@ -174,10 +177,10 @@ func Test_nodeBuilder_loadRuntime(t *testing.T) { { name: "base_case", args: args{ - cfg: cfg, - ns: &runtime.NodeStorage{}, - ks: nil, - net: nil, + config: config, + ns: &runtime.NodeStorage{}, + ks: nil, + net: nil, }, err: nil, }, @@ -187,7 +190,7 @@ func Test_nodeBuilder_loadRuntime(t *testing.T) { ctrl := gomock.NewController(t) stateSrvc := newStateService(t, ctrl) no := nodeBuilder{} - err := no.loadRuntime(tt.args.cfg, tt.args.ns, stateSrvc, tt.args.ks, tt.args.net) + err := no.loadRuntime(tt.args.config, tt.args.ns, stateSrvc, tt.args.ks, tt.args.net) assert.ErrorIs(t, err, tt.err) blocks := stateSrvc.Block.GetNonFinalisedBlocks() for i := range blocks { @@ -201,61 +204,65 @@ func Test_nodeBuilder_loadRuntime(t *testing.T) { } func TestInitNode_Integration(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) // confirm database was setup - db, err := utils.SetupDatabase(cfg.Global.BasePath, false) + db, err := utils.SetupDatabase(config.BasePath, false) require.NoError(t, err) require.NotNil(t, db) } func TestInitNode_GenesisSpec(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := newTestGenesisFile(t, cfg) + genFile := newTestGenesisFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) // confirm database was setup - db, err := utils.SetupDatabase(cfg.Global.BasePath, false) + db, err := utils.SetupDatabase(config.BasePath, false) require.NoError(t, err) require.NotNil(t, db) } func TestNodeInitializedIntegration(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - result := IsNodeInitialised(cfg.Global.BasePath) + result := IsNodeInitialised(config.BasePath) require.False(t, result) - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) - result = IsNodeInitialised(cfg.Global.BasePath) + result = IsNodeInitialised(config.BasePath) require.True(t, result) } func TestNewNodeIntegration(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) ks := keystore.NewGlobalKeystore() @@ -268,9 +275,9 @@ func TestNewNodeIntegration(t *testing.T) { err = keystore.LoadKeystore("alice", ks.Babe, sr25519keyRing) require.NoError(t, err) - cfg.Core.Roles = common.FullNodeRole + config.Core.Role = common.FullNodeRole - node, err := NewNode(cfg, ks) + node, err := NewNode(config, ks) require.NoError(t, err) bp := node.ServiceRegistry.Get(&babe.Service{}) @@ -280,13 +287,14 @@ func TestNewNodeIntegration(t *testing.T) { } func TestNewNode_Authority(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) ks := keystore.NewGlobalKeystore() @@ -302,9 +310,9 @@ func TestNewNode_Authority(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, ks.Babe.Size()) - cfg.Core.Roles = common.AuthorityRole + config.Core.Role = common.AuthorityRole - node, err := NewNode(cfg, ks) + node, err := NewNode(config, ks) require.NoError(t, err) bp := node.ServiceRegistry.Get(&babe.Service{}) @@ -314,15 +322,16 @@ func TestNewNode_Authority(t *testing.T) { } func TestStartStopNode(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile - cfg.Core.GrandpaAuthority = false - cfg.Core.BabeAuthority = false + config.ChainSpec = genFile + config.BasePath = t.TempDir() + config.Core.GrandpaAuthority = false + config.Core.BabeAuthority = false - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) ks := keystore.NewGlobalKeystore() @@ -337,9 +346,9 @@ func TestStartStopNode(t *testing.T) { err = keystore.LoadKeystore("alice", ks.Babe, sr25519keyRing) require.NoError(t, err) - cfg.Core.Roles = common.FullNodeRole + config.Core.Role = common.FullNodeRole - node, err := NewNode(cfg, ks) + node, err := NewNode(config, ks) require.NoError(t, err) go func() { @@ -351,19 +360,20 @@ func TestStartStopNode(t *testing.T) { } func TestInitNode_LoadStorageRoot(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() genPath := newTestGenesisAndRuntime(t) - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genPath + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = genPath + config.BasePath = t.TempDir() gen, err := genesis.NewGenesisFromJSONRaw(genPath) require.NoError(t, err) - err = InitNode(cfg) + err = InitNode(config) require.NoError(t, err) ks := keystore.NewGlobalKeystore() @@ -371,7 +381,7 @@ func TestInitNode_LoadStorageRoot(t *testing.T) { ks.Gran.Insert(ed25519Keyring.Alice()) sr25519Keyring, _ := keystore.NewSr25519Keyring() ks.Babe.Insert(sr25519Keyring.Alice()) - node, err := NewNode(cfg, ks) + node, err := NewNode(config, ks) require.NoError(t, err) expected, err := trie.LoadFromMap(gen.GenesisFields().Raw["top"]) @@ -399,23 +409,24 @@ func balanceKey(t *testing.T, publicKey [32]byte) (storageTrieKey []byte) { } func TestInitNode_LoadBalances(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() genPath := newTestGenesisAndRuntime(t) - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genPath + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = genPath + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) ks := keystore.NewGlobalKeystore() ed25519Keyring, _ := keystore.NewEd25519Keyring() ks.Gran.Insert(ed25519Keyring.Alice()) - node, err := NewNode(cfg, ks) + node, err := NewNode(config, ks) require.NoError(t, err) mgr := node.ServiceRegistry.Get(&state.Service{}) @@ -439,18 +450,19 @@ func TestInitNode_LoadBalances(t *testing.T) { func TestNode_PersistGlobalName_WhenInitialize(t *testing.T) { globalName := RandomNodeName() - cfg := NewWestendDevConfig(t) - cfg.Global.Name = globalName + config := westend_dev.DefaultConfig() + config.Name = globalName - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = newTestGenesisAndRuntime(t) + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = newTestGenesisAndRuntime(t) + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) - storedName, err := LoadGlobalNodeName(cfg.Global.BasePath) + storedName, err := LoadGlobalNodeName(config.BasePath) require.NoError(t, err) require.Equal(t, globalName, storedName) } diff --git a/dot/node_test.go b/dot/node_test.go index 40380dc195..fb9b6f7560 100644 --- a/dot/node_test.go +++ b/dot/node_test.go @@ -11,6 +11,9 @@ import ( "testing" "time" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/dot/network" "github.com/ChainSafe/gossamer/dot/state" "github.com/ChainSafe/gossamer/internal/log" @@ -25,16 +28,17 @@ import ( ) func TestInitNode(t *testing.T) { - cfg := NewWestendDevConfig(t) - cfg.Init.Genesis = NewTestGenesisRawFile(t, cfg) + config := westend_dev.DefaultConfig() + config.ChainSpec = NewTestGenesisRawFile(t, config) + config.BasePath = t.TempDir() tests := []struct { name string - config *Config + config *cfg.Config err error }{ { name: "test config", - config: cfg, + config: config, }, } for _, tt := range tests { @@ -42,7 +46,7 @@ func TestInitNode(t *testing.T) { err := InitNode(tt.config) assert.ErrorIs(t, err, tt.err) // confirm InitNode has created database dir - registry := filepath.Join(tt.config.Global.BasePath, utils.DefaultDatabaseDir, "KEYREGISTRY") + registry := filepath.Join(tt.config.BasePath, utils.DefaultDatabaseDir, "KEYREGISTRY") _, err = os.Stat(registry) require.NoError(t, err) }) @@ -125,14 +129,13 @@ func setConfigTestDefaults(t *testing.T, cfg *network.Config) { } func TestNodeInitialized(t *testing.T) { - cfg := NewWestendDevConfig(t) - - genFile := NewTestGenesisRawFile(t, cfg) - - cfg.Init.Genesis = genFile + config := westend_dev.DefaultConfig() + genFile := NewTestGenesisRawFile(t, config) + config.ChainSpec = genFile + config.BasePath = t.TempDir() nodeInstance := nodeBuilder{} - err := nodeInstance.initNode(cfg) + err := nodeInstance.initNode(config) require.NoError(t, err) tests := []struct { @@ -147,7 +150,7 @@ func TestNodeInitialized(t *testing.T) { }, { name: "working example", - basepath: cfg.Global.BasePath, + basepath: config.BasePath, want: true, }, } @@ -159,7 +162,7 @@ func TestNodeInitialized(t *testing.T) { } } -func initKeystore(t *testing.T, cfg *Config) ( +func initKeystore(t *testing.T, cfg *cfg.Config) ( globalKeyStore *keystore.GlobalKeystore, err error) { ks := keystore.NewGlobalKeystore() @@ -184,7 +187,7 @@ func initKeystore(t *testing.T, cfg *Config) ( require.NoError(t, err) // if authority node, should have at least 1 key in keystore - if cfg.Core.Roles == common.AuthorityRole && (ks.Babe.Size() == 0 || ks.Gran.Size() == 0) { + if cfg.Core.Role == common.AuthorityRole && (ks.Babe.Size() == 0 || ks.Gran.Size() == 0) { return nil, ErrNoKeysProvided } diff --git a/dot/rpc/http.go b/dot/rpc/http.go index 61845f060b..83e7e0d072 100644 --- a/dot/rpc/http.go +++ b/dot/rpc/http.go @@ -43,15 +43,12 @@ type HTTPServerConfig struct { SyncStateAPI SyncStateAPI SyncAPI SyncAPI NodeStorage *runtime.NodeStorage - RPC bool - RPCExternal bool RPCUnsafe bool + RPCExternal bool RPCUnsafeExternal bool Host string RPCPort uint32 - WS bool WSExternal bool - WSUnsafe bool WSUnsafeExternal bool WSPort uint32 Modules []string @@ -62,7 +59,7 @@ func (h *HTTPServerConfig) rpcUnsafeEnabled() bool { } func (h *HTTPServerConfig) wsUnsafeEnabled() bool { - return h.WSUnsafe || h.WSUnsafeExternal + return h.WSUnsafeExternal } func (h *HTTPServerConfig) exposeWS() bool { @@ -160,7 +157,7 @@ func (h *HTTPServer) Start() error { } }() - if !h.serverConfig.WS { + if !h.serverConfig.exposeWS() { return nil } @@ -180,7 +177,7 @@ func (h *HTTPServer) Start() error { // Stop stops the server func (h *HTTPServer) Stop() error { - if h.serverConfig.WS { + if h.serverConfig.exposeWS() { // close all channels and websocket connections for _, conn := range h.wsConns { for _, sub := range conn.Subscriptions { diff --git a/dot/rpc/http_test.go b/dot/rpc/http_test.go index 27f12de120..4060b0d8bb 100644 --- a/dot/rpc/http_test.go +++ b/dot/rpc/http_test.go @@ -60,8 +60,8 @@ func TestUnsafeRPCProtection(t *testing.T) { Modules: []string{"system", "author", "chain", "state", "rpc", "grandpa", "dev", "syncstate"}, RPCPort: 7878, RPCAPI: NewService(), - RPCUnsafe: false, RPCUnsafeExternal: false, + RPCUnsafe: false, } s := NewHTTPServer(cfg) @@ -96,6 +96,7 @@ func TestUnsafeRPCProtection(t *testing.T) { }) } } + func TestRPCUnsafeExpose(t *testing.T) { ctrl := gomock.NewController(t) @@ -146,10 +147,11 @@ func TestUnsafeRPCJustToLocalhost(t *testing.T) { require.NoError(t, err) cfg := &HTTPServerConfig{ - Modules: []string{"system"}, - RPCPort: 7880, - RPCAPI: NewService(), - RPCUnsafe: true, + Modules: []string{"system"}, + RPCPort: 7880, + RPCAPI: NewService(), + RPCUnsafe: true, + RPCUnsafeExternal: false, } s := NewHTTPServer(cfg) @@ -200,9 +202,9 @@ func TestRPCExternalEnable_UnsafeExternalNotEnabled(t *testing.T) { Modules: []string{"system"}, RPCPort: 8786, RPCAPI: NewService(), - RPCUnsafe: true, - RPCUnsafeExternal: false, RPCExternal: true, + RPCUnsafeExternal: false, + RPCUnsafe: true, NetworkAPI: netmock, } diff --git a/dot/rpc/interfaces.go b/dot/rpc/interfaces.go index e8b5ab7f81..0a868a0950 100644 --- a/dot/rpc/interfaces.go +++ b/dot/rpc/interfaces.go @@ -56,7 +56,7 @@ type NetworkAPI interface { Health() common.Health NetworkState() common.NetworkState Peers() []common.PeerInfo - NodeRoles() common.Roles + NodeRoles() common.NetworkRole Stop() error Start() error StartingBlock() int64 diff --git a/dot/rpc/modules/api.go b/dot/rpc/modules/api.go index c6bef7839a..dc7754a66f 100644 --- a/dot/rpc/modules/api.go +++ b/dot/rpc/modules/api.go @@ -54,7 +54,7 @@ type NetworkAPI interface { Health() common.Health NetworkState() common.NetworkState Peers() []common.PeerInfo - NodeRoles() common.Roles + NodeRoles() common.NetworkRole Stop() error Start() error StartingBlock() int64 diff --git a/dot/rpc/modules/mocks/mocks.go b/dot/rpc/modules/mocks/mocks.go index 569ce775f1..6d8444fac6 100644 --- a/dot/rpc/modules/mocks/mocks.go +++ b/dot/rpc/modules/mocks/mocks.go @@ -494,10 +494,10 @@ func (mr *MockNetworkAPIMockRecorder) NetworkState() *gomock.Call { } // NodeRoles mocks base method. -func (m *MockNetworkAPI) NodeRoles() common.Roles { +func (m *MockNetworkAPI) NodeRoles() common.NetworkRole { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "NodeRoles") - ret0, _ := ret[0].(common.Roles) + ret0, _ := ret[0].(common.NetworkRole) return ret0 } diff --git a/dot/rpc/modules/system_test.go b/dot/rpc/modules/system_test.go index 0788c9d380..0d7e56cf5f 100644 --- a/dot/rpc/modules/system_test.go +++ b/dot/rpc/modules/system_test.go @@ -166,7 +166,7 @@ func TestSystemModule_NodeRolesTest(t *testing.T) { mockNetworkAPI3.EXPECT().NodeRoles().Return(common.AuthorityRole) mockNetworkAPI4 := mocks.NewMockNetworkAPI(ctrl) - mockNetworkAPI4.EXPECT().NodeRoles().Return(common.Roles(21)) + mockNetworkAPI4.EXPECT().NodeRoles().Return(common.NetworkRole(21)) type args struct { r *http.Request @@ -209,7 +209,7 @@ func TestSystemModule_NodeRolesTest(t *testing.T) { args: args{ req: &EmptyRequest{}, }, - exp: []interface{}{"UnknownRole", []interface{}{common.Roles(21)}}, + exp: []interface{}{"UnknownRole", []interface{}{common.NetworkRole(21)}}, }, } for _, tt := range tests { diff --git a/dot/rpc/websocket_integration_test.go b/dot/rpc/websocket_integration_test.go index 3844ac79ba..5f14e1a13b 100644 --- a/dot/rpc/websocket_integration_test.go +++ b/dot/rpc/websocket_integration_test.go @@ -85,8 +85,7 @@ func TestHTTPServer_ServeHTTP(t *testing.T) { RPCExternal: false, RPCPort: 8545, WSPort: 8546, - WS: true, - WSExternal: false, + WSExternal: true, RPCAPI: NewService(), CoreAPI: coreAPI, SystemAPI: sysAPI, diff --git a/dot/services.go b/dot/services.go index 358fb5c173..82c76edadf 100644 --- a/dot/services.go +++ b/dot/services.go @@ -8,6 +8,8 @@ import ( "fmt" "strings" + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/chaindb" "github.com/ChainSafe/gossamer/dot/core" "github.com/ChainSafe/gossamer/dot/digest" @@ -42,7 +44,7 @@ type BlockProducer interface { } type rpcServiceSettings struct { - config *Config + config *cfg.Config nodeStorage *runtime.NodeStorage state *state.Service core *core.Service @@ -58,26 +60,29 @@ func newInMemoryDB() (*chaindb.BadgerDB, error) { } // createStateService creates the state service and initialise state database -func (nodeBuilder) createStateService(cfg *Config) (*state.Service, error) { +func (nodeBuilder) createStateService(config *cfg.Config) (*state.Service, error) { logger.Debug("creating state service...") - config := state.Config{ - Path: cfg.Global.BasePath, - LogLevel: cfg.Log.StateLvl, - Metrics: metrics.NewIntervalConfig(cfg.Global.PublishMetrics), + stateLogLevel, err := log.ParseLevel(config.Log.State) + if err != nil { + return nil, err + } + stateConfig := state.Config{ + Path: config.BasePath, + LogLevel: stateLogLevel, + Metrics: metrics.NewIntervalConfig(config.PrometheusExternal), } - stateSrvc := state.NewService(config) + stateSrvc := state.NewService(stateConfig) - err := stateSrvc.SetupBase() - if err != nil { + if err := stateSrvc.SetupBase(); err != nil { return nil, fmt.Errorf("cannot setup base: %w", err) } return stateSrvc, nil } -func startStateService(cfg *Config, stateSrvc *state.Service) error { +func startStateService(config cfg.StateConfig, stateSrvc *state.Service) error { logger.Debug("starting state service...") // start state service (initialise state database) @@ -86,8 +91,8 @@ func startStateService(cfg *Config, stateSrvc *state.Service) error { return fmt.Errorf("failed to start state service: %w", err) } - if cfg.State.Rewind != 0 { - err = stateSrvc.Rewind(cfg.State.Rewind) + if config.Rewind != 0 { + err = stateSrvc.Rewind(config.Rewind) if err != nil { return fmt.Errorf("failed to rewind state: %w", err) } @@ -109,10 +114,10 @@ func (nodeBuilder) createRuntimeStorage(st *state.Service) (*runtime.NodeStorage }, nil } -func createRuntime(cfg *Config, ns runtime.NodeStorage, st *state.Service, +func createRuntime(config *cfg.Config, ns runtime.NodeStorage, st *state.Service, ks *keystore.GlobalKeystore, net *network.Service, code []byte) ( rt runtime.Instance, err error) { - logger.Info("creating runtime with interpreter " + cfg.Core.WasmInterpreter + "...") + logger.Info("creating runtime with interpreter " + config.Core.WasmInterpreter + "...") // check if code substitute is in use, if so replace code codeSubHash := st.Base.LoadCodeSubstitutedBlockHash() @@ -138,15 +143,19 @@ func createRuntime(cfg *Config, ns runtime.NodeStorage, st *state.Service, return nil, err } - switch cfg.Core.WasmInterpreter { + wasmerLogLevel, err := log.ParseLevel(config.Log.Wasmer) + if err != nil { + return nil, fmt.Errorf("failed to parse wasmer log level: %w", err) + } + switch config.Core.WasmInterpreter { case wasmer.Name: rtCfg := wasmer.Config{ Storage: ts, Keystore: ks, - LogLvl: cfg.Log.RuntimeLvl, + LogLvl: wasmerLogLevel, NodeStorage: ns, Network: net, - Role: cfg.Core.Roles, + Role: config.Core.Role, CodeHash: codeHash, } @@ -156,7 +165,7 @@ func createRuntime(cfg *Config, ns runtime.NodeStorage, st *state.Service, return nil, fmt.Errorf("failed to create runtime executor: %s", err) } default: - return nil, fmt.Errorf("%w: %s", ErrWasmInterpreterName, cfg.Core.WasmInterpreter) + return nil, fmt.Errorf("%w: %s", ErrWasmInterpreterName, config.Core.WasmInterpreter) } st.Block.StoreRuntime(st.Block.BestBlockHash(), rt) @@ -177,9 +186,9 @@ type ServiceBuilder interface { var _ ServiceBuilder = (*babe.Builder)(nil) -func (nb nodeBuilder) createBABEService(cfg *Config, st *state.Service, ks KeyStore, +func (nb nodeBuilder) createBABEService(config *cfg.Config, st *state.Service, ks KeyStore, cs *core.Service, telemetryMailer Telemetry) (service *babe.Service, err error) { - return nb.createBABEServiceWithBuilder(cfg, st, ks, cs, telemetryMailer, babe.Builder{}) + return nb.createBABEServiceWithBuilder(config, st, ks, cs, telemetryMailer, babe.Builder{}) } // KeyStore is the keystore interface for the BABE service. @@ -189,11 +198,11 @@ type KeyStore interface { Keypairs() []keystore.KeyPair } -func (nodeBuilder) createBABEServiceWithBuilder(cfg *Config, st *state.Service, ks KeyStore, +func (nodeBuilder) createBABEServiceWithBuilder(config *cfg.Config, st *state.Service, ks KeyStore, cs *core.Service, telemetryMailer Telemetry, newBabeService ServiceBuilder) ( service *babe.Service, err error) { logger.Info("creating BABE service" + - asAuthority(cfg.Core.BabeAuthority) + "...") + asAuthority(config.Core.BabeAuthority) + "...") if ks.Name() != "babe" || ks.Type() != crypto.Sr25519Type { return nil, ErrInvalidKeystoreType @@ -201,23 +210,27 @@ func (nodeBuilder) createBABEServiceWithBuilder(cfg *Config, st *state.Service, kps := ks.Keypairs() logger.Infof("keystore with keys %v", kps) - if len(kps) == 0 && cfg.Core.BabeAuthority { + if len(kps) == 0 && config.Core.BabeAuthority { return nil, ErrNoKeysProvided } + babeLogLevel, err := log.ParseLevel(config.Log.Babe) + if err != nil { + return nil, fmt.Errorf("failed to parse babe log level: %w", err) + } bcfg := &babe.ServiceConfig{ - LogLvl: cfg.Log.BlockProducerLvl, + LogLvl: babeLogLevel, BlockState: st.Block, StorageState: st.Storage, TransactionState: st.Transaction, EpochState: st.Epoch, BlockImportHandler: cs, - Authority: cfg.Core.BabeAuthority, - IsDev: cfg.Global.ID == "dev", + Authority: config.Core.BabeAuthority, + IsDev: config.ID == "dev", Telemetry: telemetryMailer, } - if cfg.Core.BabeAuthority { + if config.Core.BabeAuthority { bcfg.Keypair = kps[0].(*sr25519.Keypair) } @@ -232,11 +245,11 @@ func (nodeBuilder) createBABEServiceWithBuilder(cfg *Config, st *state.Service, // Core Service // createCoreService creates the core service from the provided core configuration -func (nodeBuilder) createCoreService(cfg *Config, ks *keystore.GlobalKeystore, +func (nodeBuilder) createCoreService(config *cfg.Config, ks *keystore.GlobalKeystore, st *state.Service, net *network.Service, dh *digest.Handler) ( *core.Service, error) { logger.Debug("creating core service" + - asAuthority(cfg.Core.Roles == common.AuthorityRole) + + asAuthority(config.Core.Role == common.AuthorityRole) + "...") genesisData, err := st.Base.LoadGenesisData() @@ -249,9 +262,13 @@ func (nodeBuilder) createCoreService(cfg *Config, ks *keystore.GlobalKeystore, codeSubs[common.MustHexToHash(k)] = v } + coreLogLevel, err := log.ParseLevel(config.Log.Core) + if err != nil { + return nil, fmt.Errorf("failed to parse core log level: %w", err) + } // set core configuration coreConfig := &core.Config{ - LogLvl: cfg.Log.CoreLvl, + LogLvl: coreLogLevel, BlockState: st.Block, StorageState: st.Storage, TransactionState: st.Transaction, @@ -274,40 +291,44 @@ func (nodeBuilder) createCoreService(cfg *Config, ks *keystore.GlobalKeystore, // Network Service // createNetworkService creates a network service from the command configuration and genesis data -func (nodeBuilder) createNetworkService(cfg *Config, stateSrvc *state.Service, +func (nodeBuilder) createNetworkService(config *cfg.Config, stateSrvc *state.Service, telemetryMailer Telemetry) (*network.Service, error) { logger.Debugf( - "creating network service with roles %d, port %d, bootnodes %s, protocol ID %s, nobootstrap=%t and noMDNS=%t...", - cfg.Core.Roles, cfg.Network.Port, strings.Join(cfg.Network.Bootnodes, ","), cfg.Network.ProtocolID, - cfg.Network.NoBootstrap, cfg.Network.NoMDNS) + "creating network service with role %d, port %d, bootnodes %s, protocol ID %s, nobootstrap=%t and noMDNS=%t...", + config.Core.Role, config.Network.Port, strings.Join(config.Network.Bootnodes, ","), config.Network.ProtocolID, + config.Network.NoBootstrap, config.Network.NoMDNS) slotDuration, err := stateSrvc.Epoch.GetSlotDuration() if err != nil { return nil, fmt.Errorf("cannot get slot duration: %w", err) } + networkLogLevel, err := log.ParseLevel(config.Log.Network) + if err != nil { + return nil, fmt.Errorf("failed to parse network log level: %w", err) + } // network service configuation networkConfig := network.Config{ - LogLvl: cfg.Log.NetworkLvl, + LogLvl: networkLogLevel, BlockState: stateSrvc.Block, - BasePath: cfg.Global.BasePath, - Roles: cfg.Core.Roles, - Port: cfg.Network.Port, - Bootnodes: cfg.Network.Bootnodes, - ProtocolID: cfg.Network.ProtocolID, - NoBootstrap: cfg.Network.NoBootstrap, - NoMDNS: cfg.Network.NoMDNS, - MinPeers: cfg.Network.MinPeers, - MaxPeers: cfg.Network.MaxPeers, - PersistentPeers: cfg.Network.PersistentPeers, - DiscoveryInterval: cfg.Network.DiscoveryInterval, + BasePath: config.BasePath, + Roles: config.Core.Role, + Port: config.Network.Port, + Bootnodes: config.Network.Bootnodes, + ProtocolID: config.Network.ProtocolID, + NoBootstrap: config.Network.NoBootstrap, + NoMDNS: config.Network.NoMDNS, + MinPeers: config.Network.MinPeers, + MaxPeers: config.Network.MaxPeers, + PersistentPeers: config.Network.PersistentPeers, + DiscoveryInterval: config.Network.DiscoveryInterval, SlotDuration: slotDuration, - PublicIP: cfg.Network.PublicIP, + PublicIP: config.Network.PublicIP, Telemetry: telemetryMailer, - PublicDNS: cfg.Network.PublicDNS, - Metrics: metrics.NewIntervalConfig(cfg.Global.PublishMetrics), - NodeKey: cfg.Network.NodeKey, - ListenAddress: cfg.Network.ListenAddress, + PublicDNS: config.Network.PublicDNS, + Metrics: metrics.NewIntervalConfig(config.PrometheusExternal), + NodeKey: config.Network.NodeKey, + ListenAddress: config.Network.ListenAddress, } networkSrvc, err := network.NewService(&networkConfig) @@ -324,12 +345,11 @@ func (nodeBuilder) createNetworkService(cfg *Config, stateSrvc *state.Service, // createRPCService creates the RPC service from the provided core configuration func (nodeBuilder) createRPCService(params rpcServiceSettings) (*rpc.HTTPServer, error) { logger.Infof( - "creating rpc service with host %s, external=%t, port %d, modules %s, ws=%t, ws port %d and ws external=%t", + "creating rpc service with host %s, external=%t, port %d, modules %s, ws port %d and ws external=%t", params.config.RPC.Host, - params.config.RPC.External, + params.config.RPC.RPCExternal, params.config.RPC.Port, strings.Join(params.config.RPC.Modules, ","), - params.config.RPC.WS, params.config.RPC.WSPort, params.config.RPC.WSExternal, ) @@ -345,8 +365,12 @@ func (nodeBuilder) createRPCService(params rpcServiceSettings) (*rpc.HTTPServer, return nil, fmt.Errorf("failed to create sync state service: %s", err) } + rpcLogLevel, err := log.ParseLevel(params.config.Log.RPC) + if err != nil { + return nil, fmt.Errorf("failed to parse rpc log level: %w", err) + } rpcConfig := &rpc.HTTPServerConfig{ - LogLvl: params.config.Log.RPCLvl, + LogLvl: rpcLogLevel, BlockAPI: params.state.Block, StorageAPI: params.state.Storage, NetworkAPI: params.network, @@ -359,16 +383,13 @@ func (nodeBuilder) createRPCService(params rpcServiceSettings) (*rpc.HTTPServer, SyncStateAPI: syncStateSrvc, SyncAPI: params.syncer, SystemAPI: params.system, - RPC: params.config.RPC.Enabled, - RPCExternal: params.config.RPC.External, - RPCUnsafe: params.config.RPC.Unsafe, - RPCUnsafeExternal: params.config.RPC.UnsafeExternal, + RPCUnsafe: params.config.RPC.UnsafeRPC, + RPCExternal: params.config.RPC.RPCExternal, + RPCUnsafeExternal: params.config.RPC.UnsafeRPCExternal, Host: params.config.RPC.Host, RPCPort: params.config.RPC.Port, - WS: params.config.RPC.WS, WSExternal: params.config.RPC.WSExternal, - WSUnsafe: params.config.RPC.WSUnsafe, - WSUnsafeExternal: params.config.RPC.WSUnsafeExternal, + WSUnsafeExternal: params.config.RPC.UnsafeWSExternal, WSPort: params.config.RPC.WSPort, Modules: params.config.RPC.Modules, } @@ -387,7 +408,7 @@ func (nodeBuilder) createSystemService(cfg *types.SystemInfo, stateSrvc *state.S } // createGRANDPAService creates a new GRANDPA service -func (nodeBuilder) createGRANDPAService(cfg *Config, st *state.Service, ks KeyStore, +func (nodeBuilder) createGRANDPAService(config *cfg.Config, st *state.Service, ks KeyStore, net *network.Service, telemetryMailer Telemetry) (*grandpa.Service, error) { bestBlockHash := st.Block.BestBlockHash() rt, err := st.Block.GetRuntime(bestBlockHash) @@ -407,22 +428,26 @@ func (nodeBuilder) createGRANDPAService(cfg *Config, st *state.Service, ks KeySt voters := types.NewGrandpaVotersFromAuthorities(ad) keys := ks.Keypairs() - if len(keys) == 0 && cfg.Core.GrandpaAuthority { + if len(keys) == 0 && config.Core.GrandpaAuthority { return nil, errors.New("no ed25519 keys provided for GRANDPA") } + grandpaLogLevel, err := log.ParseLevel(config.Log.Grandpa) + if err != nil { + return nil, fmt.Errorf("failed to parse grandpa log level: %w", err) + } gsCfg := &grandpa.Config{ - LogLvl: cfg.Log.FinalityGadgetLvl, + LogLvl: grandpaLogLevel, BlockState: st.Block, GrandpaState: st.Grandpa, Voters: voters, - Authority: cfg.Core.GrandpaAuthority, + Authority: config.Core.GrandpaAuthority, Network: net, - Interval: cfg.Core.GrandpaInterval, + Interval: config.Core.GrandpaInterval, Telemetry: telemetryMailer, } - if cfg.Core.GrandpaAuthority { + if config.Core.GrandpaAuthority { gsCfg.Keypair = keys[0].(*ed25519.Keypair) } @@ -433,7 +458,7 @@ func (nodeBuilder) createBlockVerifier(st *state.Service) *babe.VerificationMana return babe.NewVerificationManager(st.Block, st.Epoch) } -func (nodeBuilder) newSyncService(cfg *Config, st *state.Service, fg BlockJustificationVerifier, +func (nodeBuilder) newSyncService(config *cfg.Config, st *state.Service, fg BlockJustificationVerifier, verifier *babe.VerificationManager, cs *core.Service, net *network.Service, telemetryMailer Telemetry) ( *sync.Service, error) { slotDuration, err := st.Epoch.GetSlotDuration() @@ -446,8 +471,12 @@ func (nodeBuilder) newSyncService(cfg *Config, st *state.Service, fg BlockJustif return nil, err } + syncLogLevel, err := log.ParseLevel(config.Log.Sync) + if err != nil { + return nil, fmt.Errorf("failed to parse sync log level: %w", err) + } syncCfg := &sync.Config{ - LogLvl: cfg.Log.SyncLvl, + LogLvl: syncLogLevel, Network: net, BlockState: st.Block, StorageState: st.Storage, @@ -455,8 +484,8 @@ func (nodeBuilder) newSyncService(cfg *Config, st *state.Service, fg BlockJustif FinalityGadget: fg, BabeVerifier: verifier, BlockImportHandler: cs, - MinPeers: cfg.Network.MinPeers, - MaxPeers: cfg.Network.MaxPeers, + MinPeers: config.Network.MinPeers, + MaxPeers: config.Network.MaxPeers, SlotDuration: slotDuration, Telemetry: telemetryMailer, BadBlocks: genesisData.BadBlocks, @@ -469,7 +498,7 @@ func (nodeBuilder) createDigestHandler(lvl log.Level, st *state.Service) (*diges return digest.NewHandler(lvl, st.Block, st.Epoch, st.Grandpa) } -func createPprofService(settings pprof.Settings) (service *pprof.Service) { +func createPprofService(config cfg.PprofConfig) (service *pprof.Service) { pprofLogger := log.NewFromGlobal(log.AddContext("pkg", "pprof")) - return pprof.NewService(settings, pprofLogger) + return pprof.NewService(config, pprofLogger) } diff --git a/dot/services_integration_test.go b/dot/services_integration_test.go index 6182ad1f37..14297fba8e 100644 --- a/dot/services_integration_test.go +++ b/dot/services_integration_test.go @@ -10,6 +10,9 @@ import ( "testing" "time" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + cfg "github.com/ChainSafe/gossamer/config" + core "github.com/ChainSafe/gossamer/dot/core" digest "github.com/ChainSafe/gossamer/dot/digest" "github.com/ChainSafe/gossamer/dot/network" @@ -18,7 +21,6 @@ import ( "github.com/ChainSafe/gossamer/dot/telemetry" "github.com/ChainSafe/gossamer/dot/types" "github.com/ChainSafe/gossamer/internal/log" - "github.com/ChainSafe/gossamer/internal/pprof" babe "github.com/ChainSafe/gossamer/lib/babe" "github.com/ChainSafe/gossamer/lib/common" "github.com/ChainSafe/gossamer/lib/grandpa" @@ -37,7 +39,7 @@ func Test_nodeBuilder_createBABEService(t *testing.T) { ctrl := gomock.NewController(t) - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() ks := keystore.NewGlobalKeystore() ks2 := keystore.NewGlobalKeystore() @@ -46,7 +48,7 @@ func Test_nodeBuilder_createBABEService(t *testing.T) { ks2.Babe.Insert(kr.Alice()) type args struct { - cfg *Config + cfg *cfg.Config initStateService bool ks KeyStore cs *core.Service @@ -61,7 +63,7 @@ func Test_nodeBuilder_createBABEService(t *testing.T) { { name: "invalid_keystore", args: args{ - cfg: cfg, + cfg: config, initStateService: true, ks: ks.Gran, }, @@ -71,7 +73,7 @@ func Test_nodeBuilder_createBABEService(t *testing.T) { { name: "empty_keystore", args: args{ - cfg: cfg, + cfg: config, initStateService: true, ks: ks.Babe, }, @@ -81,7 +83,7 @@ func Test_nodeBuilder_createBABEService(t *testing.T) { { name: "base_case", args: args{ - cfg: cfg, + cfg: config, initStateService: true, ks: ks2.Babe, }, @@ -154,12 +156,12 @@ func Test_nodeBuilder_createCoreService(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() ctrl := gomock.NewController(t) stateSrvc := newStateService(t, ctrl) builder := nodeBuilder{} - got, err := builder.createCoreService(cfg, tt.args.ks, stateSrvc, tt.args.net, tt.args.dh) + got, err := builder.createCoreService(config, tt.args.ks, stateSrvc, tt.args.net, tt.args.dh) assert.ErrorIs(t, err, tt.err) @@ -195,10 +197,10 @@ func Test_nodeBuilder_createNetworkService(t *testing.T) { t.Parallel() ctrl := gomock.NewController(t) - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() stateSrvc := newStateService(t, ctrl) no := nodeBuilder{} - got, err := no.createNetworkService(cfg, stateSrvc, nil) + got, err := no.createNetworkService(config, stateSrvc, nil) assert.ErrorIs(t, err, tt.err) // TODO: create interface for network.NewService to handle assert.Equal test if tt.expectNil { @@ -230,12 +232,12 @@ func Test_nodeBuilder_createRPCService(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() ctrl := gomock.NewController(t) stateSrvc := newStateService(t, ctrl) no := nodeBuilder{} rpcParams := rpcServiceSettings{ - config: cfg, + config: config, state: stateSrvc, } got, err := no.createRPCService(rpcParams) @@ -284,7 +286,7 @@ func Test_nodeBuilder_createGRANDPAService(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() ctrl := gomock.NewController(t) stateSrvc := newStateService(t, ctrl) networkConfig := &network.Config{ @@ -295,7 +297,7 @@ func Test_nodeBuilder_createGRANDPAService(t *testing.T) { networkSrvc, err := network.NewService(networkConfig) require.NoError(t, err) builder := nodeBuilder{} - got, err := builder.createGRANDPAService(cfg, stateSrvc, tt.ks, networkSrvc, + got, err := builder.createGRANDPAService(config, stateSrvc, tt.ks, networkSrvc, nil) assert.ErrorIs(t, err, tt.err) // TODO: create interface for grandpa.NewService to enable testing with assert.Equal @@ -311,11 +313,11 @@ func Test_nodeBuilder_createGRANDPAService(t *testing.T) { func Test_createRuntime(t *testing.T) { t.Parallel() - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() type args struct { - cfg *Config - ns runtime.NodeStorage + config *cfg.Config + ns runtime.NodeStorage } tests := []struct { name string @@ -326,8 +328,8 @@ func Test_createRuntime(t *testing.T) { { name: "wasmer_runtime", args: args{ - cfg: cfg, - ns: runtime.NodeStorage{}, + config: config, + ns: runtime.NodeStorage{}, }, expectedType: &wasmer.Instance{}, err: nil, @@ -343,7 +345,7 @@ func Test_createRuntime(t *testing.T) { code, err := stateSrvc.Storage.LoadCode(nil) require.NoError(t, err) - got, err := createRuntime(tt.args.cfg, tt.args.ns, stateSrvc, nil, nil, code) + got, err := createRuntime(tt.args.config, tt.args.ns, stateSrvc, nil, nil, code) assert.ErrorIs(t, err, tt.err) if tt.expectedType == nil { assert.Nil(t, got) @@ -389,11 +391,11 @@ func Test_nodeBuilder_newSyncService(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() ctrl := gomock.NewController(t) stateSrvc := newStateService(t, ctrl) no := nodeBuilder{} - got, err := no.newSyncService(cfg, stateSrvc, tt.args.fg, tt.args.verifier, tt.args.cs, + got, err := no.newSyncService(config, stateSrvc, tt.args.fg, tt.args.verifier, tt.args.cs, tt.args.net, tt.args.telemetryMailer) assert.ErrorIs(t, err, tt.err) if tt.expectNil { @@ -406,17 +408,17 @@ func Test_nodeBuilder_newSyncService(t *testing.T) { } func TestCreateStateService(t *testing.T) { - cfg := NewWestendDevConfig(t) - - genFile := NewTestGenesisRawFile(t, cfg) + config := westend_dev.DefaultConfig() - cfg.Init.Genesis = genFile + genFile := NewTestGenesisRawFile(t, config) + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) require.NoError(t, err) require.NotNil(t, stateSrvc) } @@ -470,16 +472,16 @@ func newStateServiceWithoutMock(t *testing.T) *state.Service { } func TestCreateCoreService(t *testing.T) { - cfg := NewWestendDevConfig(t) - - genFile := NewTestGenesisRawFile(t, cfg) + config := westend_dev.DefaultConfig() - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genFile + genFile := NewTestGenesisRawFile(t, config) + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) stateSrvc := newStateServiceWithoutMock(t) @@ -492,26 +494,29 @@ func TestCreateCoreService(t *testing.T) { networkSrvc := &network.Service{} builder := nodeBuilder{} - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + dh, err := builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, networkSrvc, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, networkSrvc, dh) require.NoError(t, err) require.NotNil(t, coreSrvc) } func TestCreateBlockVerifier(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := newTestGenesisFile(t, cfg) + genFile := newTestGenesisFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) require.NoError(t, err) stateSrvc.Epoch = &state.EpochState{} @@ -519,13 +524,14 @@ func TestCreateBlockVerifier(t *testing.T) { } func TestCreateSyncService(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := newTestGenesisFile(t, cfg) + genFile := newTestGenesisFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} @@ -536,45 +542,49 @@ func TestCreateSyncService(t *testing.T) { ver := builder.createBlockVerifier(stateSrvc) - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + dh, err := builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, &network.Service{}, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, &network.Service{}, dh) require.NoError(t, err) - _, err = builder.newSyncService(cfg, stateSrvc, &grandpa.Service{}, ver, coreSrvc, &network.Service{}, nil) + _, err = builder.newSyncService(config, stateSrvc, &grandpa.Service{}, ver, coreSrvc, &network.Service{}, nil) require.NoError(t, err) } func TestCreateNetworkService(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Init.Genesis = genFile + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} stateSrvc := newStateServiceWithoutMock(t) - networkSrvc, err := builder.createNetworkService(cfg, stateSrvc, nil) + networkSrvc, err := builder.createNetworkService(config, stateSrvc, nil) require.NoError(t, err) require.NotNil(t, networkSrvc) } func TestCreateRPCService(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genFile + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} @@ -588,20 +598,26 @@ func TestCreateRPCService(t *testing.T) { ns, err := builder.createRuntimeStorage(stateSrvc) require.NoError(t, err) - err = builder.loadRuntime(cfg, ns, stateSrvc, ks, networkSrvc) + err = builder.loadRuntime(config, ns, stateSrvc, ks, networkSrvc) require.NoError(t, err) - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + dh, err := builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, networkSrvc, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, networkSrvc, dh) require.NoError(t, err) - sysSrvc, err := builder.createSystemService(&cfg.System, stateSrvc) + systemInfo := &types.SystemInfo{ + SystemName: config.System.SystemName, + SystemVersion: config.System.SystemVersion, + } + sysSrvc, err := builder.createSystemService(systemInfo, stateSrvc) require.NoError(t, err) rpcSettings := rpcServiceSettings{ - config: cfg, + config: config, nodeStorage: ns, state: stateSrvc, core: coreSrvc, @@ -614,14 +630,15 @@ func TestCreateRPCService(t *testing.T) { } func TestCreateBABEService_Integration(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Core.Roles = common.FullNodeRole - cfg.Init.Genesis = genFile + config.Core.Role = common.FullNodeRole + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} @@ -634,29 +651,32 @@ func TestCreateBABEService_Integration(t *testing.T) { ns, err := builder.createRuntimeStorage(stateSrvc) require.NoError(t, err) - err = builder.loadRuntime(cfg, ns, stateSrvc, ks, &network.Service{}) + err = builder.loadRuntime(config, ns, stateSrvc, ks, &network.Service{}) require.NoError(t, err) - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + dh, err := builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, &network.Service{}, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, &network.Service{}, dh) require.NoError(t, err) - bs, err := builder.createBABEService(cfg, stateSrvc, ks.Babe, coreSrvc, nil) + bs, err := builder.createBABEService(config, stateSrvc, ks.Babe, coreSrvc, nil) require.NoError(t, err) require.NotNil(t, bs) } func TestCreateGrandpaService(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Core.Roles = common.AuthorityRole - cfg.Init.Genesis = genFile + config.Core.Role = common.AuthorityRole + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} @@ -670,7 +690,7 @@ func TestCreateGrandpaService(t *testing.T) { ns, err := builder.createRuntimeStorage(stateSrvc) require.NoError(t, err) - err = builder.loadRuntime(cfg, ns, stateSrvc, ks, &network.Service{}) + err = builder.loadRuntime(config, ns, stateSrvc, ks, &network.Service{}) require.NoError(t, err) networkConfig := &network.Config{ @@ -683,7 +703,7 @@ func TestCreateGrandpaService(t *testing.T) { testNetworkService, err := network.NewService(networkConfig) require.NoError(t, err) - gs, err := builder.createGRANDPAService(cfg, stateSrvc, ks.Gran, testNetworkService, nil) + gs, err := builder.createGRANDPAService(config, stateSrvc, ks.Gran, testNetworkService, nil) require.NoError(t, err) require.NotNil(t, gs) } @@ -716,22 +736,21 @@ func TestNewWebSocketServer(t *testing.T) { expected: []byte(`{"jsonrpc":"2.0","result":2,"id":4}` + "\n")}, } - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Core.Roles = common.FullNodeRole - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - cfg.Init.Genesis = genFile - cfg.RPC.External = false - cfg.RPC.WS = true - cfg.RPC.Port = 9545 - cfg.RPC.WSPort = 9546 - cfg.RPC.WSExternal = false - cfg.System.SystemName = "gossamer" + config.Core.Role = common.FullNodeRole + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + config.ChainSpec = genFile + config.RPC.Port = 9545 + config.RPC.WSPort = 9546 + config.RPC.WSExternal = true + config.System.SystemName = "gossamer" + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} @@ -745,20 +764,26 @@ func TestNewWebSocketServer(t *testing.T) { ns, err := builder.createRuntimeStorage(stateSrvc) require.NoError(t, err) - err = builder.loadRuntime(cfg, ns, stateSrvc, ks, networkSrvc) + err = builder.loadRuntime(config, ns, stateSrvc, ks, networkSrvc) require.NoError(t, err) - dh, err := builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + dh, err := builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - coreSrvc, err := builder.createCoreService(cfg, ks, stateSrvc, networkSrvc, dh) + coreSrvc, err := builder.createCoreService(config, ks, stateSrvc, networkSrvc, dh) require.NoError(t, err) - sysSrvc, err := builder.createSystemService(&cfg.System, stateSrvc) + systemInfo := &types.SystemInfo{ + SystemName: config.System.SystemName, + SystemVersion: config.System.SystemVersion, + } + sysSrvc, err := builder.createSystemService(systemInfo, stateSrvc) require.NoError(t, err) rpcSettings := rpcServiceSettings{ - config: cfg, + config: config, nodeStorage: ns, state: stateSrvc, core: coreSrvc, @@ -791,7 +816,7 @@ func TestNewWebSocketServer(t *testing.T) { func Test_createPprofService(t *testing.T) { tests := []struct { name string - settings pprof.Settings + settings cfg.PprofConfig notNil bool }{ { @@ -812,24 +837,26 @@ func Test_createPprofService(t *testing.T) { } func Test_createDigestHandler(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genFile := NewTestGenesisRawFile(t, cfg) + genFile := NewTestGenesisRawFile(t, config) - cfg.Core.Roles = common.AuthorityRole - cfg.Init.Genesis = genFile + config.Core.Role = common.AuthorityRole + config.ChainSpec = genFile + config.BasePath = t.TempDir() - err := InitNode(cfg) + err := InitNode(config) require.NoError(t, err) builder := nodeBuilder{} - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) require.NoError(t, err) - err = startStateService(cfg, stateSrvc) + err = startStateService(*config.State, stateSrvc) require.NoError(t, err) - _, err = builder.createDigestHandler(cfg.Log.DigestLvl, stateSrvc) + digestLevel, err := log.ParseLevel(config.Log.Digest) + require.NoError(t, err) + _, err = builder.createDigestHandler(digestLevel, stateSrvc) require.NoError(t, err) - } diff --git a/dot/services_test.go b/dot/services_test.go index 23026729a9..9340a07975 100644 --- a/dot/services_test.go +++ b/dot/services_test.go @@ -6,6 +6,8 @@ package dot import ( "testing" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + "github.com/ChainSafe/gossamer/dot/state" "github.com/ChainSafe/gossamer/dot/types" "github.com/ChainSafe/gossamer/internal/log" @@ -18,15 +20,16 @@ import ( ) func Test_createRuntimeStorage(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - cfg.Init.Genesis = NewTestGenesisRawFile(t, cfg) + config.ChainSpec = NewTestGenesisRawFile(t, config) + config.BasePath = t.TempDir() builder := nodeBuilder{} - err := builder.initNode(cfg) + err := builder.initNode(config) require.NoError(t, err) - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) require.NoError(t, err) tests := []struct { @@ -53,15 +56,16 @@ func Test_createRuntimeStorage(t *testing.T) { } func Test_createSystemService(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - cfg.Init.Genesis = NewTestGenesisRawFile(t, cfg) + config.ChainSpec = NewTestGenesisRawFile(t, config) + config.BasePath = t.TempDir() builder := nodeBuilder{} - err := builder.initNode(cfg) + err := builder.initNode(config) require.NoError(t, err) - stateSrvc, err := builder.createStateService(cfg) + stateSrvc, err := builder.createStateService(config) require.NoError(t, err) type args struct { diff --git a/dot/test_utils.go b/dot/test_utils.go index ec57bf72e0..e3dc10df1b 100644 --- a/dot/test_utils.go +++ b/dot/test_utils.go @@ -9,13 +9,15 @@ import ( "path/filepath" "testing" + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/utils" "github.com/stretchr/testify/require" ) // NewTestGenesisRawFile returns a test genesis file using "westend-dev" raw data -func NewTestGenesisRawFile(t *testing.T, cfg *Config) (filename string) { +func NewTestGenesisRawFile(t *testing.T, config *cfg.Config) (filename string) { filename = filepath.Join(t.TempDir(), "genesis.json") fp := utils.GetWestendDevRawGenesisPath(t) @@ -24,10 +26,10 @@ func NewTestGenesisRawFile(t *testing.T, cfg *Config) (filename string) { require.NoError(t, err) gen := &genesis.Genesis{ - Name: cfg.Global.Name, - ID: cfg.Global.ID, - Bootnodes: cfg.Network.Bootnodes, - ProtocolID: cfg.Network.ProtocolID, + Name: config.Name, + ID: config.ID, + Bootnodes: config.Network.Bootnodes, + ProtocolID: config.Network.ProtocolID, Genesis: westendDevGenesis.GenesisFields(), } diff --git a/dot/utils_integration_test.go b/dot/utils_integration_test.go index 2b0237d620..0998df26f8 100644 --- a/dot/utils_integration_test.go +++ b/dot/utils_integration_test.go @@ -8,15 +8,18 @@ package dot import ( "testing" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/trie" "github.com/stretchr/testify/require" ) func TestTrieSnapshot(t *testing.T) { - cfg := NewWestendDevConfig(t) + config := westend_dev.DefaultConfig() - genRawFile := NewTestGenesisRawFile(t, cfg) + genRawFile := NewTestGenesisRawFile(t, config) + config.BasePath = t.TempDir() genRaw, err := genesis.NewGenesisFromJSONRaw(genRawFile) require.NoError(t, err) diff --git a/dot/utils_test.go b/dot/utils_test.go index 85bf85ea54..e74c79003d 100644 --- a/dot/utils_test.go +++ b/dot/utils_test.go @@ -11,8 +11,8 @@ import ( "path/filepath" "testing" - "github.com/ChainSafe/gossamer/dot/types" - "github.com/ChainSafe/gossamer/internal/log" + westend_dev "github.com/ChainSafe/gossamer/chain/westend-dev" + cfg "github.com/ChainSafe/gossamer/config" "github.com/ChainSafe/gossamer/lib/genesis" "github.com/ChainSafe/gossamer/lib/utils" "github.com/stretchr/testify/assert" @@ -20,7 +20,7 @@ import ( ) // newTestGenesisFile returns a human-readable test genesis file using "westend-dev" human readable data -func newTestGenesisFile(t *testing.T, cfg *Config) (filename string) { +func newTestGenesisFile(t *testing.T, config *cfg.Config) (filename string) { t.Helper() fp := utils.GetWestendDevRawGenesisPath(t) @@ -28,10 +28,10 @@ func newTestGenesisFile(t *testing.T, cfg *Config) (filename string) { require.NoError(t, err) gen := &genesis.Genesis{ - Name: cfg.Global.Name, - ID: cfg.Global.ID, - Bootnodes: cfg.Network.Bootnodes, - ProtocolID: cfg.Network.ProtocolID, + Name: config.Name, + ID: config.ID, + Bootnodes: config.Network.Bootnodes, + ProtocolID: config.Network.ProtocolID, Genesis: westendDevGenesis.GenesisFields(), } @@ -77,94 +77,10 @@ func TestCreateJSONRawFile(t *testing.T) { } } -func TestNewTestConfig(t *testing.T) { - basePath := t.TempDir() - incBasePath := basePath[:len(basePath)-1] + "2" - type args struct { - t *testing.T - } - tests := []struct { - name string - args args - want *Config - }{ - { - name: "working_example", - args: args{t: t}, - want: &Config{ - Global: GlobalConfig{ - Name: "Westend", - ID: "westend_dev", - BasePath: incBasePath, - LogLvl: 3, - PublishMetrics: false, - MetricsAddress: "", - NoTelemetry: true, - TelemetryURLs: nil, - RetainBlocks: 0, - Pruning: "", - }, - Log: LogConfig{ - CoreLvl: 3, - DigestLvl: 3, - SyncLvl: 3, - NetworkLvl: 3, - RPCLvl: 3, - StateLvl: 3, - RuntimeLvl: 3, - BlockProducerLvl: 3, - FinalityGadgetLvl: 3, - }, - Account: AccountConfig{Key: "alice"}, - Init: InitConfig{Genesis: "./chain/westend-dev/westend-dev-spec-raw.json"}, - Core: CoreConfig{ - Roles: 4, - BabeAuthority: true, - GrandpaAuthority: true, - WasmInterpreter: "wasmer", - GrandpaInterval: 1000000000, - }, - Network: NetworkConfig{ - Port: 7001, - Bootnodes: nil, - ProtocolID: "", - NoBootstrap: false, - NoMDNS: false, - PersistentPeers: nil, - DiscoveryInterval: 10000000000, - }, - RPC: RPCConfig{ - Enabled: true, - External: false, - Unsafe: false, - UnsafeExternal: false, - Port: 8545, - Host: "localhost", - Modules: []string{"system", "author", "chain", "state", "rpc", "grandpa", "offchain", - "childstate", "syncstate", "payment"}, - WSPort: 8546, - WS: true, - WSExternal: false, - WSUnsafe: false, - WSUnsafeExternal: false, - }, - System: types.SystemInfo{}, - State: StateConfig{}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := NewWestendDevConfig(tt.args.t) - assert.Equal(t, tt.want, got) - }) - } -} - func TestNewTestGenesisFile(t *testing.T) { type args struct { - t *testing.T - cfg *Config + t *testing.T + config *cfg.Config } tests := []struct { name string @@ -174,15 +90,15 @@ func TestNewTestGenesisFile(t *testing.T) { { name: "working_example", args: args{ - t: t, - cfg: &Config{}, + t: t, + config: westend_dev.DefaultConfig(), }, want: &os.File{}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := newTestGenesisFile(tt.args.t, tt.args.cfg) + got := newTestGenesisFile(tt.args.t, tt.args.config) if tt.want != nil { assert.NotNil(t, got) } @@ -207,29 +123,6 @@ func TestRandomNodeName(t *testing.T) { } } -// NewWestendDevConfig returns a new test configuration -func NewWestendDevConfig(t *testing.T) *Config { - dir := t.TempDir() - - cfg := &Config{ - Global: GlobalConfig{ - Name: WestendDevConfig().Global.Name, - ID: WestendDevConfig().Global.ID, - BasePath: dir, - LogLvl: log.Info, - NoTelemetry: true, - }, - Log: WestendDevConfig().Log, - Init: WestendDevConfig().Init, - Account: WestendDevConfig().Account, - Core: WestendDevConfig().Core, - Network: WestendDevConfig().Network, - RPC: WestendDevConfig().RPC, - } - - return cfg -} - // NewTestGenesis returns a test genesis instance using "westend-dev" raw data func NewTestGenesis(t *testing.T) *genesis.Genesis { fp := utils.GetWestendDevRawGenesisPath(t) diff --git a/go.mod b/go.mod index 22879553c3..50946c8a3d 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ require ( github.com/ChainSafe/chaindb v0.1.5-0.20220708005902-df45dbc8e840 github.com/ChainSafe/go-schnorrkel v1.0.1-0.20220711122024-027d287d27bf github.com/OneOfOne/xxhash v1.2.8 - github.com/breml/rootcerts v0.2.10 github.com/btcsuite/btcd/btcutil v1.1.3 github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce github.com/centrifuge/go-substrate-rpc-client/v4 v4.0.12 @@ -13,7 +12,6 @@ require ( github.com/dgraph-io/badger/v2 v2.2007.4 github.com/dgraph-io/ristretto v0.1.1 github.com/disiqueira/gotree v1.0.0 - github.com/docker/docker v23.0.5+incompatible github.com/ethereum/go-ethereum v1.11.6 github.com/fatih/color v1.15.0 github.com/go-playground/validator/v10 v10.13.0 @@ -31,12 +29,12 @@ require ( github.com/libp2p/go-libp2p-kad-dht v0.23.0 github.com/multiformats/go-multiaddr v0.9.0 github.com/nanobox-io/golang-scribble v0.0.0-20190309225732-aa3e7c118975 - github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 github.com/prometheus/client_golang v1.15.1 github.com/prometheus/client_model v0.4.0 github.com/qdm12/gotree v0.2.0 + github.com/spf13/cobra v1.2.1 + github.com/spf13/viper v1.8.1 github.com/stretchr/testify v1.8.2 - github.com/urfave/cli/v2 v2.25.3 github.com/wasmerio/wasmer-go v1.0.4 github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 golang.org/x/crypto v0.9.0 @@ -56,7 +54,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.0.4 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set v1.8.0 // indirect @@ -69,6 +66,7 @@ require ( github.com/elastic/gosigar v0.14.2 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.1 // indirect @@ -88,8 +86,10 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/golang-lru/v2 v2.0.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect github.com/huin/goupnp v1.0.3 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/ipfs/boxo v0.8.0 // indirect github.com/ipfs/go-cid v0.4.0 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect @@ -117,6 +117,7 @@ require ( github.com/libp2p/go-netroute v0.2.1 // indirect github.com/libp2p/go-reuseport v0.2.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.0 // indirect + github.com/magiconair/properties v1.8.5 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect @@ -126,6 +127,7 @@ require ( github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/sha256-simd v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.4.1 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect @@ -136,11 +138,11 @@ require ( github.com/multiformats/go-multihash v0.2.1 // indirect github.com/multiformats/go-multistream v0.4.1 // indirect github.com/multiformats/go-varint v0.0.7 // indirect - github.com/naoina/go-stringutil v0.1.0 // indirect github.com/onsi/ginkgo/v2 v2.5.1 // indirect github.com/opencontainers/runtime-spec v1.0.2 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pelletier/go-toml v1.9.3 // indirect github.com/phuslu/iploc v1.0.20230201 // indirect github.com/pierrec/xxHash v0.1.5 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -155,16 +157,19 @@ require ( github.com/quic-go/webtransport-go v0.5.2 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/rs/cors v1.8.2 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/smartystreets/assertions v1.13.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.3.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.5 // indirect github.com/tklauser/numcpus v0.2.2 // indirect github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect github.com/vedhavyas/go-subkey v1.0.3 // indirect github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect @@ -179,9 +184,10 @@ require ( golang.org/x/sys v0.8.0 // indirect golang.org/x/tools v0.7.0 // indirect gonum.org/v1/gonum v0.11.0 // indirect + gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - gotest.tools/v3 v3.0.3 // indirect lukechampine.com/blake3 v1.1.7 // indirect nhooyr.io/websocket v1.8.7 // indirect ) diff --git a/go.sum b/go.sum index 3f709abdd9..4abbd1a0cd 100644 --- a/go.sum +++ b/go.sum @@ -2,13 +2,51 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/chaindb v0.1.5-0.20220708005902-df45dbc8e840 h1:qdwel/UNcN1PmrzZG4iTf8/cKAVCas+/RdXq/5NOxps= github.com/ChainSafe/chaindb v0.1.5-0.20220708005902-df45dbc8e840/go.mod h1:P01m9E6xj6Mps1rtf7SurEX9oOcy1jYEyccZQAEw9+4= github.com/ChainSafe/go-schnorrkel v1.0.1-0.20220711122024-027d287d27bf h1:S195ZBRu20VgXC1i5nHTR6b4BbTQaMCDuq6tzFQN5zU= @@ -23,16 +61,20 @@ github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIO github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/breml/rootcerts v0.2.10 h1:UGVZ193UTSUASpGtg6pbDwzOd7XQP+at0Ssg1/2E4h8= -github.com/breml/rootcerts v0.2.10/go.mod h1:24FDtzYMpqIeYC7QzaE8VPRQaFZU5TIUDlyk8qwjD88= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.0 h1:V2/ZgjfDFIygAX3ZapeigkVBoVUtOJKSwrhZdlpSvaA= @@ -70,17 +112,24 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chyeh/pubip v0.0.0-20170203095919-b7e679cf541c h1:++BhWlmSX+n8m3O4gPfy3S4PTZ0TMzH6nelerBLPUng= github.com/chyeh/pubip v0.0.0-20170203095919-b7e679cf541c/go.mod h1:C7ma6h458jTWT65mXC58L1Q6hnEtr0unur8cMc0UEXM= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= 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= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= @@ -89,8 +138,6 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -121,8 +168,6 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczC github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/disiqueira/gotree v1.0.0 h1:en5wk87n7/Jyk6gVME3cx3xN9KmUCstJ1IjHr4Se4To= github.com/disiqueira/gotree v1.0.0/go.mod h1:7CwL+VWsWAU95DovkdRZAtA7YbtHwGk+tLV/kNi8niU= -github.com/docker/docker v23.0.5+incompatible h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k= -github.com/docker/docker v23.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -134,9 +179,13 @@ github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.11.6 h1:2VF8Mf7XiSUfmoNOy3D+ocfl9Qu8baQBrCNbo2CXQ8E= github.com/ethereum/go-ethereum v1.11.6/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= @@ -147,6 +196,8 @@ github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiD github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -154,6 +205,9 @@ github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -194,17 +248,26 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -215,6 +278,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -223,13 +288,17 @@ github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -241,7 +310,19 @@ github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8v github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221203041831-ce31453925ec h1:fR20TYVVwhK4O7r7y+McjRYyaTH6/vjwJOajE+XhlzM= github.com/google/pprof v0.0.0-20221203041831-ce31453925ec/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -251,6 +332,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c h1:7lF+Vz0LqiRidnzC1Oq86fpX1q/iEv2KJdrCtttYjT4= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= @@ -262,21 +345,41 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -284,6 +387,9 @@ github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7 github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/ipfs/boxo v0.8.0 h1:UdjAJmHzQHo/j3g3b1bAcAXCj/GM6iTwvSlBDvPBNBs= github.com/ipfs/boxo v0.8.0/go.mod h1:RIsi4CnTyQ7AUsNn5gXljJYZlQrHBMnJp94p73liFiA= @@ -328,8 +434,10 @@ github.com/jpillora/ipfilter v1.2.9/go.mod h1:QUYQLXQU0myCdxZVbYBZ5+An/qtSB2m1OB github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -347,6 +455,7 @@ github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8t github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= github.com/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8= github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -355,7 +464,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.3 h1:6BE2vPT0lqoz3fmOesHZiaiFh7889ssCo2GMvLCfiuA= github.com/leodido/go-urn v1.2.3/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= @@ -392,12 +500,16 @@ github.com/libp2p/go-yamux/v4 v4.0.0 h1:+Y80dV2Yx/kv7Y7JKu0LECyVdMXm1VUoko+VQ9rB github.com/libp2p/go-yamux/v4 v4.0.0/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -408,6 +520,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= @@ -424,8 +537,16 @@ github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8Rv github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -464,10 +585,6 @@ github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/n github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/nanobox-io/golang-scribble v0.0.0-20190309225732-aa3e7c118975 h1:zm/Rb2OsnLWCY88Njoqgo4X6yt/lx3oBNWhepX0AOMU= github.com/nanobox-io/golang-scribble v0.0.0-20190309225732-aa3e7c118975/go.mod h1:4Mct/lWCFf1jzQTTAaWtOI7sXqmG+wBeiBfT4CxoaJk= -github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 h1:shk/vn9oCoOTmwcouEdwIeOtOGA/ELRUw/GwvxwfT+0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -487,9 +604,12 @@ github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/ github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/phuslu/iploc v1.0.20230201 h1:AMhy7j8z0N5iI0jaqh514KTDEB7wVdQJ4Y4DJPCvKBU= github.com/phuslu/iploc v1.0.20230201/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= github.com/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= @@ -497,10 +617,12 @@ github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNK github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4= github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= @@ -528,14 +650,15 @@ github.com/quic-go/webtransport-go v0.5.2 h1:GA6Bl6oZY+g/flt00Pnu0XtivSD8vukOu3l github.com/quic-go/webtransport-go v0.5.2/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= @@ -563,9 +686,11 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/assertions v1.13.0 h1:Dx1kYM01xsSqKPno3aqLnrwac2LetPvN23diwyr69Qs= github.com/smartystreets/assertions v1.13.0/go.mod h1:wDmR7qL282YbGsPy6H/yAsesrxfxaaSlJazyFLYVFx8= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= @@ -574,11 +699,23 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -593,6 +730,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= @@ -609,8 +748,6 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= -github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/vedhavyas/go-subkey v1.0.3 h1:iKR33BB/akKmcR2PMlXPBeeODjWLM90EL98OrOGs8CA= github.com/vedhavyas/go-subkey v1.0.3/go.mod h1:CloUaFQSSTdWnINfBRFjVMkWXZANW+nd8+TI5jYcl6Y= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= @@ -624,12 +761,22 @@ github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 h1:Y1/FEOpaCpD21WxrmfeIYCFPuVPRCY2XZTWzTNHGw30= github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= @@ -652,18 +799,22 @@ go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -674,18 +825,42 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb h1:PaBZQdo+iSDyHT053FjUCgZQ/9uqVwPOcl7KSWhKn6w= golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -694,21 +869,44 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= @@ -717,6 +915,16 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -724,58 +932,98 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -784,17 +1032,56 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= @@ -808,25 +1095,105 @@ gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -835,6 +1202,7 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -848,30 +1216,38 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/internal/pprof/service.go b/internal/pprof/service.go index 1387f9fcf7..594fb96bb1 100644 --- a/internal/pprof/service.go +++ b/internal/pprof/service.go @@ -7,6 +7,8 @@ import ( "context" "errors" "runtime" + + cfg "github.com/ChainSafe/gossamer/config" ) // Service is a pprof http server service compatible with the @@ -20,8 +22,12 @@ type Service struct { // NewService creates a pprof server service compatible with the // dot/service.go interface. -func NewService(settings Settings, logger Logger) *Service { - settings.setDefaults() +func NewService(config cfg.PprofConfig, logger Logger) *Service { + settings := Settings{ + ListeningAddress: config.ListeningAddress, + BlockProfileRate: config.BlockProfileRate, + MutexProfileRate: config.MutexProfileRate, + } return &Service{ settings: settings, diff --git a/internal/pprof/service_test.go b/internal/pprof/service_test.go index ee58869c87..4ea9b549e7 100644 --- a/internal/pprof/service_test.go +++ b/internal/pprof/service_test.go @@ -8,6 +8,7 @@ import ( "errors" "testing" + westenddev "github.com/ChainSafe/gossamer/chain/westend-dev" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -17,13 +18,13 @@ func Test_NewService(t *testing.T) { t.Parallel() ctrl := gomock.NewController(t) - settings := Settings{} logger := NewMockLogger(ctrl) - service := NewService(settings, logger) + pprofConfig := westenddev.DefaultConfig().Pprof + service := NewService(*pprofConfig, logger) expectedSettings := Settings{ - ListeningAddress: "localhost:6060", + ListeningAddress: pprofConfig.ListeningAddress, } assert.Equal(t, expectedSettings, service.settings) assert.NotNil(t, service.server) diff --git a/internal/pprof/settings.go b/internal/pprof/settings.go index fd676f672d..2016edbc84 100644 --- a/internal/pprof/settings.go +++ b/internal/pprof/settings.go @@ -18,12 +18,6 @@ type Settings struct { MutexProfileRate int } -func (s *Settings) setDefaults() { - if s.ListeningAddress == "" { - s.ListeningAddress = "localhost:6060" - } -} - func (s *Settings) String() string { return fmt.Sprintf( "listening on %s and setting block profile rate to %d, mutex profile rate to %d", diff --git a/internal/pprof/settings_test.go b/internal/pprof/settings_test.go new file mode 100644 index 0000000000..8c5e0e3dc4 --- /dev/null +++ b/internal/pprof/settings_test.go @@ -0,0 +1,20 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package pprof + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSettings_String(t *testing.T) { + settings := Settings{ + ListeningAddress: "localhost:6600", + BlockProfileRate: 1, + MutexProfileRate: 2, + } + expected := "listening on localhost:6600 and setting block profile rate to 1, mutex profile rate to 2" + assert.Equal(t, expected, settings.String()) +} diff --git a/lib/common/network.go b/lib/common/network.go index c5eac535d2..6ca065b78c 100644 --- a/lib/common/network.go +++ b/lib/common/network.go @@ -23,23 +23,23 @@ type NetworkState struct { // PeerInfo is network information about peers needed for the rpc server type PeerInfo struct { PeerID string - Roles Roles + Role NetworkRole BestHash Hash BestNumber uint64 } -// Roles is the type of node. -type Roles byte +// NetworkRole is the type of node. +type NetworkRole byte const ( // NoNetworkRole runs a node without networking - NoNetworkRole Roles = 0 + NoNetworkRole NetworkRole = 0 // FullNodeRole allow you to read the current state of the chain and to submit and validate // extrinsics directly on the network without relying on a centralised infrastructure provider. - FullNodeRole Roles = 1 + FullNodeRole NetworkRole = 1 // LightClientRole node has only the runtime and the current state, but does not store past // blocks and so cannot read historical data without requesting it from a node that has it. - LightClientRole Roles = 2 + LightClientRole NetworkRole = 2 // AuthorityRole runs the node as a block-producing and finalising node - AuthorityRole Roles = 4 + AuthorityRole NetworkRole = 4 ) diff --git a/lib/genesis/genesis.go b/lib/genesis/genesis.go index 9d27cd0799..8b8c107f0b 100644 --- a/lib/genesis/genesis.go +++ b/lib/genesis/genesis.go @@ -40,8 +40,8 @@ type Data struct { // TelemetryEndpoint struct to hold telemetry endpoint information type TelemetryEndpoint struct { - Endpoint string - Verbosity int + Endpoint string `mapstructure:",squash"` + Verbosity int `mapstructure:",squash"` } // Fields stores genesis raw data, and human readable runtime data diff --git a/lib/grandpa/network.go b/lib/grandpa/network.go index 13ec262932..d566aa75ca 100644 --- a/lib/grandpa/network.go +++ b/lib/grandpa/network.go @@ -25,12 +25,12 @@ type ConsensusMessage = network.ConsensusMessage // GrandpaHandshake is exchanged by nodes that are beginning the grandpa protocol type GrandpaHandshake struct { //nolint:revive - Roles common.Roles + Role common.NetworkRole } // String formats a BlockAnnounceHandshake as a string func (hs *GrandpaHandshake) String() string { - return fmt.Sprintf("GrandpaHandshake Roles=%d", hs.Roles) + return fmt.Sprintf("GrandpaHandshake NetworkRole=%d", hs.Role) } // Encode encodes a GrandpaHandshake message using SCALE @@ -45,7 +45,7 @@ func (hs *GrandpaHandshake) Decode(in []byte) error { // IsValid return if it is a valid handshake. func (hs *GrandpaHandshake) IsValid() bool { - switch hs.Roles { + switch hs.Role { case common.AuthorityRole, common.FullNodeRole: return true default: @@ -72,16 +72,16 @@ func (s *Service) registerProtocol() error { } func (s *Service) getHandshake() (network.Handshake, error) { - var roles common.Roles + var role common.NetworkRole if s.authority { - roles = common.AuthorityRole + role = common.AuthorityRole } else { - roles = common.FullNodeRole + role = common.FullNodeRole } return &GrandpaHandshake{ - Roles: roles, + Role: role, }, nil } diff --git a/lib/grandpa/network_integration_test.go b/lib/grandpa/network_integration_test.go index 231703e053..7a902b2dcf 100644 --- a/lib/grandpa/network_integration_test.go +++ b/lib/grandpa/network_integration_test.go @@ -18,7 +18,7 @@ import ( func TestGrandpaHandshake_Encode(t *testing.T) { hs := &GrandpaHandshake{ - Roles: 4, + Role: 4, } enc, err := hs.Encode() diff --git a/lib/os/os.go b/lib/os/os.go new file mode 100644 index 0000000000..892883a120 --- /dev/null +++ b/lib/os/os.go @@ -0,0 +1,77 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package os + +import ( + "errors" + "fmt" + "io" + "os" + "path/filepath" +) + +// EnsureDir ensures the given directory exists, creating it if necessary. +// Errors if the path already exists as a non-directory. +func EnsureDir(dir string, mode os.FileMode) error { + err := os.MkdirAll(dir, mode) + if err != nil { + return fmt.Errorf("could not create directory %q: %w", dir, err) + } + return nil +} + +// FileExists returns true if the given file exists. +func FileExists(filePath string) bool { + _, err := os.Stat(filepath.Clean(filePath)) + return !os.IsNotExist(err) +} + +// ReadFile reads the given file and returns its contents. +func ReadFile(filePath string) ([]byte, error) { + return os.ReadFile(filepath.Clean(filePath)) +} + +// WriteFile writes the given contents to the given file. +func WriteFile(filePath string, contents []byte, mode os.FileMode) error { + return os.WriteFile(filepath.Clean(filePath), contents, mode) +} + +// CopyFile copies a file. It truncates the destination file if it exists. +func CopyFile(src, dst string) error { + srcfile, err := os.Open(filepath.Clean(src)) + if err != nil { + return err + } + + info, err := srcfile.Stat() + if err != nil { + return err + } + if info.IsDir() { + return errors.New("cannot read from directories") + } + + // create new file, truncate if exists and apply same permissions as the original one + dstfile, err := os.OpenFile(filepath.Clean(dst), os.O_RDWR|os.O_CREATE|os.O_TRUNC, info.Mode().Perm()) + if err != nil { + return err + } + + _, err = io.Copy(dstfile, srcfile) + if err != nil { + return fmt.Errorf("could not copy file %q to %q: %w", src, dst, err) + } + + err = srcfile.Close() + if err != nil { + return fmt.Errorf("could not close src file %q: %w", src, err) + } + + err = dstfile.Close() + if err != nil { + return fmt.Errorf("could not close dst file %q: %w", dst, err) + } + + return nil +} diff --git a/lib/runtime/wasmer/config.go b/lib/runtime/wasmer/config.go index 2a5675f46f..13838ab896 100644 --- a/lib/runtime/wasmer/config.go +++ b/lib/runtime/wasmer/config.go @@ -17,7 +17,7 @@ type Config struct { Storage Storage Keystore *keystore.GlobalKeystore LogLvl log.Level - Role common.Roles + Role common.NetworkRole NodeStorage runtime.NodeStorage Network BasicNetwork Transaction TransactionState diff --git a/lib/runtime/wasmer/test_helpers.go b/lib/runtime/wasmer/test_helpers.go index ac5c5a900d..78ae60c62b 100644 --- a/lib/runtime/wasmer/test_helpers.go +++ b/lib/runtime/wasmer/test_helpers.go @@ -52,7 +52,7 @@ func NewTestInstanceWithTrie(t *testing.T, targetRuntime string, tt *trie.Trie) } func setupConfig(t *testing.T, ctrl *gomock.Controller, tt *trie.Trie, lvl log.Level, - role common.Roles, targetRuntime string) Config { + role common.NetworkRole, targetRuntime string) Config { t.Helper() s := storage.NewTrieState(tt) diff --git a/tests/polkadotjs_test/start_polkadotjs_test.go b/tests/polkadotjs_test/start_polkadotjs_test.go index eb82071f4d..ce3bc2de5f 100644 --- a/tests/polkadotjs_test/start_polkadotjs_test.go +++ b/tests/polkadotjs_test/start_polkadotjs_test.go @@ -9,6 +9,8 @@ import ( "strings" "testing" + cfg "github.com/ChainSafe/gossamer/config" + libutils "github.com/ChainSafe/gossamer/lib/utils" "github.com/ChainSafe/gossamer/tests/utils" "github.com/ChainSafe/gossamer/tests/utils/config" @@ -46,11 +48,14 @@ func TestStartGossamerAndPolkadotAPI(t *testing.T) { t.Log("starting gossamer for polkadot.js/api tests...") tomlConfig := config.Default() - tomlConfig.Init.Genesis = libutils.GetWestendLocalRawGenesisPath(t) - tomlConfig.RPC.WS = true - tomlConfig.RPC.Unsafe = true - tomlConfig.RPC.WSUnsafe = true + tomlConfig.ChainSpec = libutils.GetWestendLocalRawGenesisPath(t) + tomlConfig.RPC.UnsafeRPC = true + tomlConfig.RPC.RPCExternal = true + tomlConfig.RPC.UnsafeRPCExternal = true + tomlConfig.RPC.WSExternal = true + tomlConfig.RPC.UnsafeWSExternal = true tomlConfig.RPC.Modules = []string{"system", "author", "chain", "state", "dev", "rpc", "grandpa"} + tomlConfig.State = &cfg.StateConfig{} n := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) diff --git a/tests/rpc/rpc_01-system_test.go b/tests/rpc/rpc_01-system_test.go index 37d4792c29..4d458b86c9 100644 --- a/tests/rpc/rpc_01-system_test.go +++ b/tests/rpc/rpc_01-system_test.go @@ -28,7 +28,9 @@ func TestSystemRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendLocalRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.Network.MinPeers = 1 + tomlConfig.Network.MaxPeers = 3 + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numberOfNodes, tomlConfig) nodes.InitAndStartTest(ctx, t, cancel) @@ -111,8 +113,8 @@ func TestSystemRPC(t *testing.T) { //nolint:tparallel expectedResponse := modules.SystemPeersResponse{ // Assert they all have the same best block number and hash - {Roles: 4, PeerID: ""}, - {Roles: 4, PeerID: ""}, + {Role: 4, PeerID: ""}, + {Role: 4, PeerID: ""}, } for i := range response { // Check randomly generated peer IDs and clear them diff --git a/tests/rpc/rpc_02-author_test.go b/tests/rpc/rpc_02-author_test.go index 5614b075bb..e1934107d2 100644 --- a/tests/rpc/rpc_02-author_test.go +++ b/tests/rpc/rpc_02-author_test.go @@ -27,8 +27,8 @@ import ( func TestAuthorSubmitExtrinsic(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Account.Key = "alice" - tomlConfig.Init.Genesis = genesisPath + tomlConfig.Account.Key = config.AliceKey + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) @@ -98,7 +98,7 @@ func TestAuthorSubmitExtrinsic(t *testing.T) { func TestAuthorRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_03-chain_test.go b/tests/rpc/rpc_03-chain_test.go index c94635530d..18d87b0d5b 100644 --- a/tests/rpc/rpc_03-chain_test.go +++ b/tests/rpc/rpc_03-chain_test.go @@ -32,7 +32,7 @@ const ( func TestChainRPC(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) @@ -136,8 +136,8 @@ func TestChainRPC(t *testing.T) { func TestChainSubscriptionRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath - tomlConfig.RPC.WS = true // WS port is set in the node.New constructor + tomlConfig.ChainSpec = genesisPath + tomlConfig.RPC.WSExternal = true // WS port is set in the node.New constructor node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_04-offchain_test.go b/tests/rpc/rpc_04-offchain_test.go index a67195029c..43d6e7db9b 100644 --- a/tests/rpc/rpc_04-offchain_test.go +++ b/tests/rpc/rpc_04-offchain_test.go @@ -17,7 +17,7 @@ func TestOffchainRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_05-state_test.go b/tests/rpc/rpc_05-state_test.go index ec91343d34..5cf0d8b056 100644 --- a/tests/rpc/rpc_05-state_test.go +++ b/tests/rpc/rpc_05-state_test.go @@ -21,7 +21,7 @@ import ( func TestStateRPCResponseValidation(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) @@ -163,7 +163,7 @@ func TestStateRPCResponseValidation(t *testing.T) { //nolint:tparallel func TestStateRPCAPI(t *testing.T) { genesisPath := libutils.GetWestendLocalRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) @@ -365,7 +365,7 @@ func TestStateRPCAPI(t *testing.T) { func TestRPCStructParamUnmarshal(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_06-engine_test.go b/tests/rpc/rpc_06-engine_test.go index d3e81fd132..5ca551ff77 100644 --- a/tests/rpc/rpc_06-engine_test.go +++ b/tests/rpc/rpc_06-engine_test.go @@ -17,7 +17,7 @@ func TestEngineRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_07-payment_test.go b/tests/rpc/rpc_07-payment_test.go index d2092730f1..ee9089a70e 100644 --- a/tests/rpc/rpc_07-payment_test.go +++ b/tests/rpc/rpc_07-payment_test.go @@ -17,7 +17,7 @@ func TestPaymentRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_08-contracts_test.go b/tests/rpc/rpc_08-contracts_test.go index ed27e7b950..8c70966ab5 100644 --- a/tests/rpc/rpc_08-contracts_test.go +++ b/tests/rpc/rpc_08-contracts_test.go @@ -17,7 +17,7 @@ func TestContractsRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/rpc_09-babe_test.go b/tests/rpc/rpc_09-babe_test.go index 7e1c9830d5..b0c737fc28 100644 --- a/tests/rpc/rpc_09-babe_test.go +++ b/tests/rpc/rpc_09-babe_test.go @@ -17,7 +17,7 @@ func TestBabeRPC(t *testing.T) { //nolint:tparallel genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath node := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) node.InitAndStartTest(ctx, t, cancel) diff --git a/tests/rpc/system_integration_test.go b/tests/rpc/system_integration_test.go index 879ed6811e..e7230f3700 100644 --- a/tests/rpc/system_integration_test.go +++ b/tests/rpc/system_integration_test.go @@ -8,13 +8,17 @@ import ( "testing" "time" - "github.com/ChainSafe/gossamer/dot/config/toml" + cfg "github.com/ChainSafe/gossamer/config" + + "github.com/ChainSafe/gossamer/tests/utils/retry" + "github.com/ChainSafe/gossamer/dot/rpc/modules" "github.com/ChainSafe/gossamer/lib/common" + libutils "github.com/ChainSafe/gossamer/lib/utils" "github.com/ChainSafe/gossamer/tests/utils" + "github.com/ChainSafe/gossamer/tests/utils/config" "github.com/ChainSafe/gossamer/tests/utils/node" "github.com/ChainSafe/gossamer/tests/utils/rpc" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -24,21 +28,23 @@ func TestStableNetworkRPC(t *testing.T) { //nolint:tparallel t.Skip("RPC tests are disabled, going to skip.") } - const numberOfNodes = 3 - config := toml.Config{ - RPC: toml.RPCConfig{ - Enabled: true, - Modules: []string{"system", "author", "chain"}, - }, - Core: toml.CoreConfig{ - Roles: byte(common.FullNodeRole), - }, - } + genesisPath := libutils.GetWestendDevRawGenesisPath(t) + con := config.Default() + con.ChainSpec = genesisPath + con.Core.Role = common.FullNodeRole + con.RPC.Modules = []string{"system", "author", "chain"} + con.Network.MinPeers = 1 + con.Network.MaxPeers = 2 + con.Core.BabeAuthority = true + con.Log.Sync = "trace" - nodes := make(node.Nodes, numberOfNodes) - for i := range nodes { - nodes[i] = node.New(t, config, node.SetIndex(i)) - } + babeAuthorityNode := node.New(t, con, node.SetIndex(0)) + + peerConfig := cfg.Copy(&con) + peerConfig.Core.BabeAuthority = false + peer1 := node.New(t, peerConfig, node.SetIndex(1)) + peer2 := node.New(t, peerConfig, node.SetIndex(2)) + nodes := []*node.Node{&babeAuthorityNode, &peer1, &peer2} ctx, cancel := context.WithCancel(context.Background()) t.Cleanup(cancel) @@ -55,22 +61,73 @@ func TestStableNetworkRPC(t *testing.T) { //nolint:tparallel } } + // wait until all nodes are connected + t.Log("waiting for all nodes to be connected") + peerTimeout, peerCancel := context.WithTimeout(context.Background(), 120*time.Second) + defer peerCancel() + err := retry.UntilOK(peerTimeout, 10*time.Second, func() (bool, error) { + for _, node := range nodes { + endpoint := rpc.NewEndpoint(node.RPCPort()) + var response modules.SystemHealthResponse + fetchWithTimeoutFromEndpoint(t, endpoint, "system_health", &response) + if response.Peers != len(nodes)-1 { + return false, nil + } + } + return true, nil + }) + require.NoError(t, err) + + // wait until all nodes are synced + t.Log("waiting for all nodes to be synced") + syncTimeout, syncCancel := context.WithTimeout(context.Background(), 120*time.Second) + defer syncCancel() + err = retry.UntilOK(syncTimeout, 10*time.Second, func() (bool, error) { + for _, node := range nodes { + //TODO: remove this once the issue has been addressed + // https://github.com/ChainSafe/gossamer/issues/3030 + if node.Key() == config.AliceKey { + continue + } + endpoint := rpc.NewEndpoint(node.RPCPort()) + var response modules.SystemHealthResponse + fetchWithTimeoutFromEndpoint(t, endpoint, "system_health", &response) + if response.IsSyncing { + return false, nil + } + } + return true, nil + }) + require.NoError(t, err) + + t.Logf("All nodes have %d peers and synced", len(nodes)-1) + + // wait for a bit and then run the test suite to ensure that the nodes are still connected and synced + t.Logf("Waiting for 60 seconds before running the test suite") + time.Sleep(60 * time.Second) + for _, node := range nodes { node := node t.Run(node.String(), func(t *testing.T) { t.Parallel() + + //TODO: remove this once the issue has been addressed + // https://github.com/ChainSafe/gossamer/issues/3030 + if node.Key() == config.AliceKey { + t.Logf("Skipping test for alice") + t.Skip() + } endpoint := rpc.NewEndpoint(node.RPCPort()) t.Run("system_health", func(t *testing.T) { t.Parallel() var response modules.SystemHealthResponse - - fetchWithTimeoutFromEndpoint(t, endpoint, "system_health", "{}", &response) + fetchWithTimeoutFromEndpoint(t, endpoint, "system_health", &response) expectedResponse := modules.SystemHealthResponse{ - Peers: numberOfNodes - 1, - IsSyncing: true, + Peers: len(nodes) - 1, + IsSyncing: false, ShouldHavePeers: true, } assert.Equal(t, expectedResponse, response) @@ -81,7 +138,7 @@ func TestStableNetworkRPC(t *testing.T) { //nolint:tparallel var response modules.SystemNetworkStateResponse - fetchWithTimeoutFromEndpoint(t, endpoint, "system_networkState", "{}", &response) + fetchWithTimeoutFromEndpoint(t, endpoint, "system_networkState", &response) // TODO assert response }) @@ -91,9 +148,9 @@ func TestStableNetworkRPC(t *testing.T) { //nolint:tparallel var response modules.SystemPeersResponse - fetchWithTimeoutFromEndpoint(t, endpoint, "system_peers", "{}", &response) + fetchWithTimeoutFromEndpoint(t, endpoint, "system_peers", &response) - assert.GreaterOrEqual(t, len(response), numberOfNodes-2) + assert.GreaterOrEqual(t, len(response), len(nodes)-2) // TODO assert response }) @@ -101,12 +158,11 @@ func TestStableNetworkRPC(t *testing.T) { //nolint:tparallel } } -func fetchWithTimeoutFromEndpoint(t *testing.T, endpoint, method, - params string, target interface{}) { +func fetchWithTimeoutFromEndpoint(t *testing.T, endpoint, method string, target interface{}) { t.Helper() ctx, cancel := context.WithTimeout(context.Background(), time.Second) - body, err := rpc.Post(ctx, endpoint, method, params) + body, err := rpc.Post(ctx, endpoint, method, "{}") cancel() require.NoError(t, err) diff --git a/tests/stress/grandpa_test.go b/tests/stress/grandpa_test.go index abb7a25fe4..ec3c3e35b3 100644 --- a/tests/stress/grandpa_test.go +++ b/tests/stress/grandpa_test.go @@ -20,7 +20,7 @@ import ( func TestStress_Grandpa_OneAuthority(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath n := node.New(t, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) @@ -31,7 +31,8 @@ func TestStress_Grandpa_OneAuthority(t *testing.T) { time.Sleep(time.Second * 10) const getChainHeadTimeout = time.Second - compareChainHeadsWithRetry(ctx, nodes, getChainHeadTimeout) + err := compareChainHeadsWithRetry(ctx, nodes, getChainHeadTimeout) + require.NoError(t, err) const getFinalizedHeadTimeout = time.Second prev, err := compareFinalizedHeads(ctx, t, nodes, getFinalizedHeadTimeout) @@ -51,7 +52,7 @@ func TestStress_Grandpa_ThreeAuthorities(t *testing.T) { genesisPath := utils.GenerateGenesisAuths(t, numNodes) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) @@ -75,7 +76,7 @@ func TestStress_Grandpa_SixAuthorities(t *testing.T) { genesisPath := utils.GenerateGenesisAuths(t, numNodes) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) nodes.InitAndStartTest(ctx, t, cancel) @@ -99,7 +100,7 @@ func TestStress_Grandpa_NineAuthorities(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.LogGrandpa() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) nodes.InitAndStartTest(ctx, t, cancel) @@ -123,7 +124,7 @@ func TestStress_Grandpa_CatchUp(t *testing.T) { genesisPath := utils.GenerateGenesisAuths(t, numNodes) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) nodes.InitAndStartTest(ctx, t, cancel) diff --git a/tests/stress/network_test.go b/tests/stress/network_test.go index 3cce04bd06..6a760d1d05 100644 --- a/tests/stress/network_test.go +++ b/tests/stress/network_test.go @@ -23,7 +23,7 @@ func TestNetwork_MaxPeers(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) utils.Logger.Patch(log.SetLevel(log.Info)) tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) nodes.InitAndStartTest(ctx, t, cancel) diff --git a/tests/stress/stress_test.go b/tests/stress/stress_test.go index dd71f26fbd..24bbef8d3e 100644 --- a/tests/stress/stress_test.go +++ b/tests/stress/stress_test.go @@ -67,7 +67,7 @@ func TestRestartNode(t *testing.T) { defaultConfig := config.Default() nodes := node.MakeNodes(t, numNodes, defaultConfig) - err := nodes.Init(context.Background()) + err := nodes.Init() require.NoError(t, err) ctx, cancel := context.WithCancel(context.Background()) @@ -105,16 +105,16 @@ func TestSync_SingleBlockProducer(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) configNoGrandpa := config.NoGrandpa() - configNoGrandpa.Init.Genesis = genesisPath - configNoGrandpa.Account.Key = "alice" - babeLeadNode := node.New(t, configNoGrandpa, node.SetIndex(numNodes-1)) + configNoGrandpa.ChainSpec = genesisPath + configNoGrandpa.Account.Key = config.AliceKey + blockProducerNode := node.New(t, configNoGrandpa, node.SetIndex(numNodes-1)) configNoAuthority := config.NotAuthority() - configNoAuthority.Init.Genesis = genesisPath + configNoAuthority.ChainSpec = genesisPath noAuthorityNodes := node.MakeNodes(t, numNodes-1, configNoAuthority) nodes := make(node.Nodes, 0, numNodes) - nodes = append(nodes, babeLeadNode) + nodes = append(nodes, blockProducerNode) nodes = append(nodes, noAuthorityNodes...) const testTimeout = 20 * time.Minute @@ -136,7 +136,7 @@ func TestSync_Basic(t *testing.T) { genesisPath := libutils.GetWestendDevRawGenesisPath(t) config := config.Default() - config.Init.Genesis = genesisPath + config.ChainSpec = genesisPath const numNodes = 3 nodes := node.MakeNodes(t, numNodes, config) @@ -159,7 +159,7 @@ func TestSync_MultipleEpoch(t *testing.T) { // wait and start rest of nodes - if they all start at the same time the first round usually doesn't complete since tomlConfig := config.Default() - tomlConfig.Init.Genesis = genesisPath + tomlConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes, tomlConfig) ctx, cancel := context.WithCancel(context.Background()) @@ -210,7 +210,7 @@ func TestSync_SingleSyncingNode(t *testing.T) { // start block producing node genesisPath := libutils.GetWestendDevRawGenesisPath(t) blockProducingConfig := config.Default() - blockProducingConfig.Init.Genesis = genesisPath + blockProducingConfig.ChainSpec = genesisPath alice := node.New(t, blockProducingConfig, node.SetIndex(0)) alice.InitAndStartTest(ctx, t, cancel) @@ -219,7 +219,7 @@ func TestSync_SingleSyncingNode(t *testing.T) { // start syncing node syncingNodeConfig := config.NoBabe() - syncingNodeConfig.Init.Genesis = genesisPath + syncingNodeConfig.ChainSpec = genesisPath bob := node.New(t, syncingNodeConfig, node.SetIndex(1)) bob.InitAndStartTest(ctx, t, cancel) @@ -249,7 +249,7 @@ func TestSync_Bench(t *testing.T) { // start block producing node genesisPath := libutils.GetWestendDevRawGenesisPath(t) configNoGrandpa := config.NoGrandpa() - configNoGrandpa.Init.Genesis = genesisPath + configNoGrandpa.ChainSpec = genesisPath alice := node.New(t, configNoGrandpa, node.SetIndex(0)) @@ -280,7 +280,7 @@ func TestSync_Bench(t *testing.T) { // start syncing node configNoAuthority := config.NotAuthority() - configNoAuthority.Init.Genesis = genesisPath + configNoAuthority.ChainSpec = genesisPath bob := node.New(t, configNoAuthority, node.SetIndex(1)) bob.InitAndStartTest(ctx, t, cancel) @@ -357,10 +357,10 @@ func TestSync_Restart(t *testing.T) { // start block producing node first genesisPath := libutils.GetWestendDevRawGenesisPath(t) blockProducingConfig := config.Default() - blockProducingConfig.Init.Genesis = genesisPath + blockProducingConfig.ChainSpec = genesisPath producingNode := node.New(t, blockProducingConfig, node.SetIndex(numNodes-1)) - err := producingNode.Init(mainCtx) + err := producingNode.Init() require.NoError(t, err) nodeWaitErrs[0], err = producingNode.StartAndWait(nodeCtxs[0]) @@ -375,10 +375,10 @@ func TestSync_Restart(t *testing.T) { // wait and start rest of nodes time.Sleep(time.Second * 5) noBabeConfig := config.NoBabe() - noBabeConfig.Init.Genesis = genesisPath + noBabeConfig.ChainSpec = genesisPath nodes := node.MakeNodes(t, numNodes-1, noBabeConfig) for i, node := range nodes { - err := node.Init(mainCtx) + err := node.Init() require.NoError(t, err) nodeWaitErrs[i+1], err = node.StartAndWait(nodeCtxs[i+1]) @@ -450,7 +450,7 @@ func TestSync_SubmitExtrinsic(t *testing.T) { // start block producing node first genesisPath := libutils.GetWestendDevRawGenesisPath(t) configNoGrandpa := config.NoGrandpa() - configNoGrandpa.Init.Genesis = genesisPath + configNoGrandpa.ChainSpec = genesisPath producingNode := node.New(t, configNoGrandpa, node.SetIndex(0)) producingNode.InitAndStartTest(ctx, t, cancel) @@ -459,7 +459,7 @@ func TestSync_SubmitExtrinsic(t *testing.T) { configNoAuthority := config.NotAuthority() // Start rest of nodes - configNoAuthority.Init.Genesis = genesisPath + configNoAuthority.ChainSpec = genesisPath n := node.New(t, configNoAuthority, node.SetIndex(1)) nodes = append(nodes, n) @@ -620,8 +620,8 @@ func Test_SubmitAndWatchExtrinsic(t *testing.T) { // start block producing node first genesisPath := libutils.GetWestendDevRawGenesisPath(t) tomlConfig := config.NoGrandpa() - tomlConfig.Init.Genesis = genesisPath - tomlConfig.RPC.WS = true + tomlConfig.ChainSpec = genesisPath + tomlConfig.RPC.WSExternal = true producingNode := node.New(t, tomlConfig, node.SetIndex(0)) ctx, cancel := context.WithCancel(context.Background()) producingNode.InitAndStartTest(ctx, t, cancel) @@ -794,7 +794,7 @@ func TestStress_SecondarySlotProduction(t *testing.T) { for _, c := range testcases { t.Run(c.description, func(t *testing.T) { tomlConfig := config.Default() - tomlConfig.Init.Genesis = c.genesis + tomlConfig.ChainSpec = c.genesis nodes := node.MakeNodes(t, numNodes, tomlConfig) diff --git a/tests/utils/config/config.go b/tests/utils/config/config.go index 1b4e7aaedc..e0bc8a5c6f 100644 --- a/tests/utils/config/config.go +++ b/tests/utils/config/config.go @@ -4,47 +4,52 @@ package config import ( - "github.com/ChainSafe/gossamer/dot/config/toml" + cfg "github.com/ChainSafe/gossamer/config" +) + +const ( + // AliceKey is the key for Alice. + AliceKey = "alice" ) // LogGrandpa generates a grandpa config. -func LogGrandpa() (cfg toml.Config) { - cfg = Default() - cfg.Log = toml.LogConfig{ - CoreLvl: "crit", - NetworkLvl: "debug", - RuntimeLvl: "crit", - BlockProducerLvl: "info", - FinalityGadgetLvl: "debug", +func LogGrandpa() (config cfg.Config) { + config = Default() + config.Log = &cfg.LogConfig{ + Core: "crit", + Network: "debug", + Runtime: "crit", + Babe: "info", + Grandpa: "debug", } - return cfg + return config } // NoBabe generates a no-babe config. -func NoBabe() (cfg toml.Config) { - cfg = Default() - cfg.Global.LogLvl = "info" - cfg.Log = toml.LogConfig{ - SyncLvl: "debug", - NetworkLvl: "debug", +func NoBabe() (config cfg.Config) { + config = Default() + config.LogLevel = "info" + config.Log = &cfg.LogConfig{ + Sync: "debug", + Network: "debug", } - cfg.Core.BabeAuthority = false - return cfg + config.Core.BabeAuthority = false + return config } // NoGrandpa generates an no-grandpa config. -func NoGrandpa() (cfg toml.Config) { - cfg = Default() - cfg.Core.GrandpaAuthority = false - cfg.Core.GrandpaInterval = 1 - return cfg +func NoGrandpa() (config cfg.Config) { + config = Default() + config.Core.GrandpaAuthority = false + config.Core.GrandpaInterval = 1 + return config } // NotAuthority generates an non-authority config. -func NotAuthority() (cfg toml.Config) { - cfg = Default() - cfg.Core.Roles = 1 - cfg.Core.BabeAuthority = false - cfg.Core.GrandpaAuthority = false - return cfg +func NotAuthority() (config cfg.Config) { + config = Default() + config.Core.Role = 1 + config.Core.BabeAuthority = false + config.Core.GrandpaAuthority = false + return config } diff --git a/tests/utils/config/default.go b/tests/utils/config/default.go index ba18ce7757..b4bb2f9a1a 100644 --- a/tests/utils/config/default.go +++ b/tests/utils/config/default.go @@ -4,49 +4,67 @@ package config import ( - "github.com/ChainSafe/gossamer/dot/config/toml" + "time" + + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/lib/runtime/wasmer" ) // Default returns a default TOML configuration for Gossamer. -func Default() toml.Config { - return toml.Config{ - Global: toml.GlobalConfig{ +func Default() cfg.Config { + return cfg.Config{ + BaseConfig: cfg.BaseConfig{ Name: "Gossamer", ID: "gssmr", - LogLvl: "info", - MetricsAddress: "localhost:9876", + LogLevel: "info", + PrometheusPort: uint32(9876), RetainBlocks: 256, Pruning: "archive", }, - Log: toml.LogConfig{ - CoreLvl: "info", - SyncLvl: "info", + Log: &cfg.LogConfig{ + Core: "info", + Digest: "info", + Sync: "info", + Network: "info", + RPC: "info", + State: "info", + Runtime: "info", + Babe: "info", + Grandpa: "info", + Wasmer: "info", }, - Account: toml.AccountConfig{ + Account: &cfg.AccountConfig{ Key: "", Unlock: "", }, - Core: toml.CoreConfig{ - Roles: 4, + Core: &cfg.CoreConfig{ + Role: 4, BabeAuthority: true, GrandpaAuthority: true, - GrandpaInterval: 1, + GrandpaInterval: 1 * time.Second, + WasmInterpreter: wasmer.Name, }, - Network: toml.NetworkConfig{ - Bootnodes: nil, - ProtocolID: "/gossamer/gssmr/0", - NoBootstrap: false, - NoMDNS: false, - MinPeers: 1, - MaxPeers: 3, + Network: &cfg.NetworkConfig{ + Bootnodes: nil, + ProtocolID: "/gossamer/gssmr/0", + NoBootstrap: false, + NoMDNS: false, + MinPeers: 1, + MaxPeers: 3, + DiscoveryInterval: time.Second * 1, }, - RPC: toml.RPCConfig{ - Enabled: true, - Unsafe: true, - WSUnsafe: true, - Host: "localhost", - Modules: []string{"system", "author", "chain", "state", "dev", "rpc"}, - WS: false, + RPC: &cfg.RPCConfig{ + UnsafeRPC: true, + UnsafeRPCExternal: true, + UnsafeWSExternal: true, + WSExternal: true, + Host: "localhost", + Modules: []string{ + "system", "author", "chain", "state", "rpc", + "grandpa", "offchain", "childstate", "syncstate", "payment"}, }, + State: &cfg.StateConfig{}, + Pprof: &cfg.PprofConfig{}, + System: &cfg.SystemConfig{}, } } diff --git a/tests/utils/config/utils.go b/tests/utils/config/utils.go new file mode 100644 index 0000000000..18175adfc3 --- /dev/null +++ b/tests/utils/config/utils.go @@ -0,0 +1,25 @@ +// Copyright 2023 ChainSafe Systems (ON) +// SPDX-License-Identifier: LGPL-3.0-only + +package config + +import ( + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/lib/common" +) + +// ParseNetworkRole converts a common.NetworkRole to a string representation. +func ParseNetworkRole(r common.NetworkRole) string { + switch r { + case common.NoNetworkRole: + return cfg.NoNetworkRole.String() + case common.FullNodeRole: + return cfg.FullNode.String() + case common.LightClientRole: + return cfg.LightNode.String() + case common.AuthorityRole: + return cfg.AuthorityNode.String() + default: + return "Unknown" + } +} diff --git a/tests/utils/config/write.go b/tests/utils/config/write.go deleted file mode 100644 index e4f1dc4c75..0000000000 --- a/tests/utils/config/write.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2022 ChainSafe Systems (ON) -// SPDX-License-Identifier: LGPL-3.0-only - -package config - -import ( - "os" - "path/filepath" - "testing" - - ctoml "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/naoina/toml" - "github.com/stretchr/testify/require" -) - -// Write writes the toml configuration to a file -// in a temporary test directory which gets removed at -// the end of the test. -func Write(t *testing.T, cfg ctoml.Config) (configPath string) { - t.Helper() - configPath = filepath.Join(t.TempDir(), "config.toml") - raw, err := toml.Marshal(cfg) - require.NoError(t, err) - err = os.WriteFile(configPath, raw, os.ModePerm) - require.NoError(t, err) - return configPath -} diff --git a/tests/utils/framework.go b/tests/utils/framework.go index febb137a88..7d43359a21 100644 --- a/tests/utils/framework.go +++ b/tests/utils/framework.go @@ -9,7 +9,8 @@ import ( "strconv" "testing" - "github.com/ChainSafe/gossamer/dot/config/toml" + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/tests/utils/node" "github.com/ChainSafe/gossamer/tests/utils/rpc" scribble "github.com/nanobox-io/golang-scribble" @@ -29,12 +30,12 @@ func NewFramework() (framework *Framework) { // InitFramework creates given quantity of nodes func InitFramework(ctx context.Context, t *testing.T, qtyNodes int, - tomlConfig toml.Config) (*Framework, error) { + tomlConfig cfg.Config) (*Framework, error) { f := &Framework{} f.nodes = node.MakeNodes(t, qtyNodes, tomlConfig) - err := f.nodes.Init(ctx) + err := f.nodes.Init() if err != nil { return nil, fmt.Errorf("cannot init nodes: %w", err) } @@ -48,7 +49,7 @@ func InitFramework(ctx context.Context, t *testing.T, qtyNodes int, return f, nil } -// StartNodes calls RestartGossamor for all nodes +// StartNodes calls RestartGossamer for all nodes func (fw *Framework) StartNodes(ctx context.Context, t *testing.T) ( runtimeErrors []<-chan error, startErr error) { return fw.nodes.Start(ctx) diff --git a/tests/utils/node/node.go b/tests/utils/node/node.go index ee4096a30d..2dee8d9497 100644 --- a/tests/utils/node/node.go +++ b/tests/utils/node/node.go @@ -8,23 +8,24 @@ import ( "context" "fmt" "io" - "os" "os/exec" "testing" - "github.com/ChainSafe/gossamer/dot/config/toml" - "github.com/ChainSafe/gossamer/lib/utils" "github.com/ChainSafe/gossamer/tests/utils/config" - "github.com/ChainSafe/gossamer/tests/utils/pathfinder" + + "github.com/ChainSafe/gossamer/lib/utils" + "github.com/stretchr/testify/require" + + cfg "github.com/ChainSafe/gossamer/config" + "github.com/ChainSafe/gossamer/tests/utils/pathfinder" ) // Node is a structure holding all the settings to // configure a Gossamer node. type Node struct { index *int - configPath string - tomlConfig toml.Config + tomlConfig cfg.Config writer io.Writer logsBuffer *bytes.Buffer binPath string @@ -32,15 +33,15 @@ type Node struct { // New returns a node configured using the // toml configuration and options given. -func New(t *testing.T, tomlConfig toml.Config, +func New(t *testing.T, tomlConfig cfg.Config, options ...Option) (node Node) { - node.tomlConfig = tomlConfig + node.tomlConfig = cfg.Copy(&tomlConfig) for _, option := range options { option(&node) } node.setDefaults(t) node.setWriterPrefix() - node.configPath = config.Write(t, node.tomlConfig) + return node } @@ -65,16 +66,26 @@ func (n *Node) setDefaults(t *testing.T) { n.index = intPtr(0) } - if n.tomlConfig.Global.BasePath == "" { - n.tomlConfig.Global.BasePath = t.TempDir() + if n.tomlConfig.BasePath == "" { + n.tomlConfig.BasePath = t.TempDir() } - if n.tomlConfig.Init.Genesis == "" { - n.tomlConfig.Init.Genesis = utils.GetWestendDevRawGenesisPath(t) + if n.tomlConfig.ChainSpec == "" { + n.tomlConfig.ChainSpec = utils.GetWestendDevRawGenesisPath(t) } if n.tomlConfig.Account.Key == "" { - keyList := []string{"alice", "bob", "charlie", "dave", "eve", "ferdie", "george", "heather", "ian"} + keyList := []string{ + "alice", + "bob", + "charlie", + "dave", + "eve", + "ferdie", + "george", + "heather", + "ian", + } if *n.index < len(keyList) { n.tomlConfig.Account.Key = keyList[*n.index] } else { @@ -87,12 +98,12 @@ func (n *Node) setDefaults(t *testing.T) { n.tomlConfig.Network.Port = basePort + uint16(*n.index) } - if n.tomlConfig.RPC.Enabled && n.tomlConfig.RPC.Port == 0 { + if n.tomlConfig.RPC.IsRPCEnabled() && n.tomlConfig.RPC.Port == 0 { const basePort uint32 = 8540 n.tomlConfig.RPC.Port = basePort + uint32(*n.index) } - if n.tomlConfig.RPC.WS && n.tomlConfig.RPC.WSPort == 0 { + if n.tomlConfig.RPC.IsWSEnabled() && n.tomlConfig.RPC.WSPort == 0 { const basePort uint32 = 8546 n.tomlConfig.RPC.WSPort = basePort + uint32(*n.index) } @@ -112,26 +123,18 @@ func (n *Node) setDefaults(t *testing.T) { } // Init initialises the Gossamer node. -func (n *Node) Init(ctx context.Context) (err error) { - cmdInit := exec.CommandContext(ctx, n.binPath, "init", //nolint:gosec - "--config", n.configPath, - ) - - if n.logsBuffer != nil { - n.logsBuffer.Reset() - n.writer = io.MultiWriter(n.writer, n.logsBuffer) +func (n *Node) Init() (err error) { + // Ensure the base path exists. + if err := cfg.EnsureRoot(n.tomlConfig.BasePath); err != nil { + return fmt.Errorf("cannot ensure root: %w", err) } - cmdInit.Stdout = n.writer - cmdInit.Stderr = n.writer - - err = cmdInit.Start() - if err != nil { - return fmt.Errorf("cannot start command: %w", err) + if err := n.tomlConfig.ValidateBasic(); err != nil { + return fmt.Errorf("cannot validate basic config: %w", err) } - err = cmdInit.Wait() - return n.wrapRuntimeError(ctx, cmdInit, err) + // Write the configuration to a file. + return cfg.WriteConfigFile(n.tomlConfig.BasePath, &n.tomlConfig) } // Start starts a Gossamer node using the node configuration of @@ -141,7 +144,9 @@ func (n *Node) Init(ctx context.Context) (err error) { // in the waitErrCh. func (n *Node) Start(ctx context.Context) (runtimeError <-chan error, startErr error) { cmd := exec.CommandContext(ctx, n.binPath, //nolint:gosec - "--config", n.configPath, + "--base-path", n.tomlConfig.BasePath, + "--chain", n.tomlConfig.ChainSpec, + "--role", config.ParseNetworkRole(n.tomlConfig.Core.Role), "--no-telemetry") if n.logsBuffer != nil { @@ -196,7 +201,7 @@ func (n Node) InitAndStartTest(ctx context.Context, t *testing.T, signalTestToStop context.CancelFunc) { t.Helper() - err := n.Init(ctx) + err := n.Init() require.NoError(t, err) nodeCtx, nodeCancel := context.WithCancel(ctx) @@ -278,12 +283,6 @@ func (n *Node) wrapRuntimeError(ctx context.Context, cmd *exec.Cmd, logInformation = "\nLogs:\n" + n.logsBuffer.String() } - configData, configReadErr := os.ReadFile(n.configPath) - configString := string(configData) - if configReadErr != nil { - configString = configReadErr.Error() - } - return fmt.Errorf("%s encountered a runtime error: %w\ncommand: %s\n\n%s\n\n%s", - n, waitErr, cmd, configString, logInformation) + n, waitErr, cmd, n.tomlConfig.BasePath, logInformation) } diff --git a/tests/utils/node/nodes.go b/tests/utils/node/nodes.go index 10474c44d9..a045842f6d 100644 --- a/tests/utils/node/nodes.go +++ b/tests/utils/node/nodes.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/ChainSafe/gossamer/dot/config/toml" + cfg "github.com/ChainSafe/gossamer/config" ) // Nodes is a slice of nodes. @@ -19,7 +19,7 @@ type Nodes []Node // MakeNodes creates `num` nodes using the `tomlConfig` // as a base config for each node. It overrides some of configuration: // - the index of each node is incremented per node (overrides the SetIndex option, if set) -func MakeNodes(t *testing.T, num int, tomlConfig toml.Config, +func MakeNodes(t *testing.T, num int, tomlConfig cfg.Config, options ...Option) (nodes Nodes) { nodes = make(Nodes, num) for i := range nodes { @@ -31,11 +31,11 @@ func MakeNodes(t *testing.T, num int, tomlConfig toml.Config, // Init initialises all nodes and returns an error if any // init operation failed. -func (nodes Nodes) Init(ctx context.Context) (err error) { +func (nodes Nodes) Init() (err error) { initErrors := make(chan error) for _, node := range nodes { go func(node Node) { - err := node.Init(ctx) // takes 2 seconds + err := node.Init() // takes 2 seconds if err != nil { err = fmt.Errorf("node %s failed to initialise: %w", node, err) } @@ -93,7 +93,7 @@ func (nodes Nodes) InitAndStartTest(ctx context.Context, t *testing.T, signalTestToStop context.CancelFunc) { t.Helper() - err := nodes.Init(ctx) + err := nodes.Init() if err != nil { t.Fatal(err) }