From 768a6a5dfd4eccc0a766b39499f16cebf6923f20 Mon Sep 17 00:00:00 2001 From: Liuhaai Date: Thu, 19 Dec 2024 15:01:07 -0800 Subject: [PATCH 1/2] support sign keys --- datasource/clickhouse.go | 3 +- e2e/e2e_test.go | 18 +++--- e2e/init.go | 40 +++++++++---- e2e/services/vm.go | 2 +- e2e/testdata/gnark | 10 ---- e2e/testdata/gnark.code | Bin 0 -> 750 bytes e2e/testdata/gnark.metadata | Bin 0 -> 607 bytes e2e/testdata/risc0 | 10 ---- e2e/testdata/risc0.code | Bin 0 -> 107024 bytes e2e/util.go | 38 ++++++++----- service/apinode/api/http.go | 93 ++++++++++++++++++------------- service/apinode/apinode.go | 7 ++- service/apinode/config/config.go | 1 + service/apinode/db/sqlite.go | 61 +++++++++++++++++++- vm/payload.go | 59 +++----------------- 15 files changed, 197 insertions(+), 145 deletions(-) delete mode 100644 e2e/testdata/gnark create mode 100644 e2e/testdata/gnark.code create mode 100644 e2e/testdata/gnark.metadata delete mode 100644 e2e/testdata/risc0 create mode 100644 e2e/testdata/risc0.code diff --git a/datasource/clickhouse.go b/datasource/clickhouse.go index fc6a2b1a..e26a0f6c 100644 --- a/datasource/clickhouse.go +++ b/datasource/clickhouse.go @@ -48,10 +48,11 @@ func (p *Clickhouse) Retrieve(taskIDs []common.Hash) ([]*task.Task, error) { res = append(res, &task.Task{ ID: common.HexToHash(ts[i].TaskID), + Nonce: ts[i].Nonce, ProjectID: pid, ProjectVersion: ts[i].ProjectVersion, - Payload: []byte(ts[i].Payload), DevicePubKey: pubkey, + Payload: []byte(ts[i].Payload), Signature: sig, }) } diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index 945634b2..e4796349 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -16,6 +16,7 @@ import ( "github.com/stretchr/testify/require" "github.com/iotexproject/w3bstream/e2e/services" + "github.com/iotexproject/w3bstream/project" ) const ( @@ -80,7 +81,7 @@ func TestE2E(t *testing.T) { require.NoError(t, err) defer os.Remove(tempApiNodeDB.Name()) defer tempApiNodeDB.Close() - apiNode, apiNodeUrl, err := apiNodeInit(chDSN, tempApiNodeDB.Name(), chainEndpoint, contracts.TaskManager, contracts.IoID) + apiNode, apiNodeUrl, err := apiNodeInit(chDSN, tempApiNodeDB.Name(), chainEndpoint, contracts) require.NoError(t, err) err = apiNode.Start() require.NoError(t, err) @@ -136,15 +137,16 @@ func TestE2E(t *testing.T) { registerIoID(t, chainEndpoint, contracts, deviceKey, projectID) t.Run("RISC0", func(t *testing.T) { - risc0ProjectFilePath := "./testdata/risc0" t.Cleanup(func() { if err := risc0VMContainer.Terminate(context.Background()); err != nil { t.Logf("failed to terminate vm container: %v", err) } }) + risc0CodePath := "./testdata/risc0.code" + project := &project.Project{Configs: []*project.Config{{Version: "v1", VMTypeID: 1}}} // Upload project - uploadProject(t, chainEndpoint, ipfsEndpoint, risc0ProjectFilePath, contracts, projectOwnerKey, projectID, false) + uploadProject(t, chainEndpoint, ipfsEndpoint, project, &risc0CodePath, nil, contracts, projectOwnerKey, projectID, false) require.NoError(t, err) // Wait a few seconds for the device info synced on api node @@ -165,19 +167,21 @@ func TestE2E(t *testing.T) { dataJson, err := json.Marshal(msgData) require.NoError(t, err) - sendMessage(t, dataJson, projectID, deviceKey, apiNodeUrl) + sendMessage(t, dataJson, projectID, nil, deviceKey, apiNodeUrl) }) t.Run("GNARK", func(t *testing.T) { - gnarkProjectFilePath := "./testdata/gnark" t.Cleanup(func() { if err := gnarkVMContainer.Terminate(context.Background()); err != nil { t.Logf("failed to terminate vm container: %v", err) } }) + gnarkCodePath := "./testdata/gnark.code" + gnarkMetadataPath := "./testdata/gnark.metadata" + project := &project.Project{Configs: []*project.Config{{Version: "v1", VMTypeID: 5}}} // Upload project - uploadProject(t, chainEndpoint, ipfsEndpoint, gnarkProjectFilePath, contracts, projectOwnerKey, projectID, true) + uploadProject(t, chainEndpoint, ipfsEndpoint, project, &gnarkCodePath, &gnarkMetadataPath, contracts, projectOwnerKey, projectID, true) require.NoError(t, err) // Wait a few seconds for the device info synced on api node @@ -187,7 +191,7 @@ func TestE2E(t *testing.T) { data, err := hex.DecodeString("00000001000000010000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001") require.NoError(t, err) - sendMessage(t, data, projectID, deviceKey, apiNodeUrl) + sendMessage(t, data, projectID, nil, deviceKey, apiNodeUrl) }) } diff --git a/e2e/init.go b/e2e/init.go index ff2a2840..3ed329a3 100644 --- a/e2e/init.go +++ b/e2e/init.go @@ -8,7 +8,6 @@ import ( "fmt" "log/slog" "math/big" - "os" "testing" "github.com/ethereum/go-ethereum/accounts/abi/bind" @@ -18,6 +17,7 @@ import ( "github.com/stretchr/testify/require" "github.com/iotexproject/w3bstream/e2e/services" + wsproject "github.com/iotexproject/w3bstream/project" "github.com/iotexproject/w3bstream/service/apinode" apinodeconfig "github.com/iotexproject/w3bstream/service/apinode/config" apinodedb "github.com/iotexproject/w3bstream/service/apinode/db" @@ -39,7 +39,7 @@ import ( "github.com/iotexproject/w3bstream/util/ipfs" ) -func apiNodeInit(chDSN, dbFile, chainEndpoint, taskManagerContractAddr, ioidContractAddr string) (*apinode.APINode, string, error) { +func apiNodeInit(chDSN, dbFile, chainEndpoint string, contractDeployments *services.ContractsDeployments) (*apinode.APINode, string, error) { cfg := apinodeconfig.Config{ LogLevel: slog.LevelInfo, ServiceEndpoint: ":9000", @@ -50,8 +50,9 @@ func apiNodeInit(chDSN, dbFile, chainEndpoint, taskManagerContractAddr, ioidCont PrvKey: "", ChainEndpoint: chainEndpoint, BeginningBlockNumber: 0, - TaskManagerContractAddr: taskManagerContractAddr, - IoIDContractAddr: ioidContractAddr, + ProjectContractAddr: contractDeployments.WSProject, + TaskManagerContractAddr: contractDeployments.TaskManager, + IoIDContractAddr: contractDeployments.IoID, } db, err := apinodedb.New(dbFile, chDSN) @@ -197,7 +198,8 @@ func registerProject(t *testing.T, chainEndpoint string, return newProjectID, nil } -func uploadProject(t *testing.T, chainEndpoint, ipfsURL, projectFile string, +func uploadProject(t *testing.T, chainEndpoint, ipfsURL string, + proj *wsproject.Project, projCodePath *string, projMetadataPath *string, contractDeployments *services.ContractsDeployments, projectOwner *ecdsa.PrivateKey, newProjectID *big.Int, pauseProject bool) { client, err := ethclient.Dial(chainEndpoint) require.NoError(t, err) @@ -206,12 +208,26 @@ func uploadProject(t *testing.T, chainEndpoint, ipfsURL, projectFile string, // Upload project file to IPFS and update project config ipfs := ipfs.NewIPFS(ipfsURL) - content, err := os.ReadFile(projectFile) + if projCodePath != nil { + codeCID, err := ipfs.AddFile(*projCodePath) + require.NoError(t, err) + cgf, err := proj.DefaultConfig() + require.NoError(t, err) + cgf.Code = fileURL(ipfsURL, codeCID) + } + if projMetadataPath != nil { + metadataCID, err := ipfs.AddFile(*projMetadataPath) + require.NoError(t, err) + cgf, err := proj.DefaultConfig() + require.NoError(t, err) + cgf.Metadata = fileURL(ipfsURL, metadataCID) + } + projBytes, err := proj.Marshal() + projHash := sha256.Sum256(projBytes) require.NoError(t, err) - hash256 := sha256.Sum256(content) - cid, err := ipfs.AddContent(content) + cid, err := ipfs.AddContent(projBytes) require.NoError(t, err) - projectFileURL := fmt.Sprintf("ipfs://%s/%s", ipfsURL, cid) + projectFileURL := fileURL(ipfsURL, cid) wsProject, err := project.NewProject(common.HexToAddress(contractDeployments.WSProject), client) require.NoError(t, err) tOpts, err := bind.NewKeyedTransactorWithChainID(projectOwner, chainID) @@ -222,7 +238,7 @@ func uploadProject(t *testing.T, chainEndpoint, ipfsURL, projectFile string, _, err = services.WaitForTransactionReceipt(client, tx.Hash()) require.NoError(t, err) } - tx, err := wsProject.UpdateConfig(tOpts, newProjectID, projectFileURL, hash256) + tx, err := wsProject.UpdateConfig(tOpts, newProjectID, projectFileURL, projHash) require.NoError(t, err) _, err = services.WaitForTransactionReceipt(client, tx.Hash()) require.NoError(t, err) @@ -232,6 +248,10 @@ func uploadProject(t *testing.T, chainEndpoint, ipfsURL, projectFile string, require.NoError(t, err) } +func fileURL(ipfsURL, cid string) string { + return fmt.Sprintf("ipfs://%s/%s", ipfsURL, cid) +} + func registerIoID(t *testing.T, chainEndpoint string, contractDeployments *services.ContractsDeployments, device *ecdsa.PrivateKey, projectID *big.Int) { client, err := ethclient.Dial(chainEndpoint) diff --git a/e2e/services/vm.go b/e2e/services/vm.go index 91eb4ef5..841df1f9 100644 --- a/e2e/services/vm.go +++ b/e2e/services/vm.go @@ -46,7 +46,7 @@ func SetupRisc0VM() (*VMContainer, string, error) { func SetupGnarkVM() (*VMContainer, string, error) { ctx := context.Background() req := testcontainers.ContainerRequest{ - Image: "ghcr.io/iotexproject/gnarkserver:v0.0.17", + Image: "ghcr.io/iotexproject/gnarkserver:v0.0.20", ExposedPorts: []string{"4005/tcp"}, WaitingFor: wait.ForListeningPort("4005"), } diff --git a/e2e/testdata/gnark b/e2e/testdata/gnark deleted file mode 100644 index 6a99d794..00000000 --- a/e2e/testdata/gnark +++ /dev/null @@ -1,10 +0,0 @@ -{ - "config": [ - { - "version": "v1", - "vmTypeID": 5, - "code": "ce0200000000000000000000000000000b0000000000000000000000000000002000000000000000680000000000000012000000000000006c01000000000000010000000000000004000000000000000100000003000000808080000300000004000000000000000100000003000000808080010300000004000000000000000100000003000000808080000300000004000000000000000100000003000000808080030300000003000000000000000100000002000000808080808080800002000000000000000a000000000000000a010101010001010202af644c6f6773f6645479706501664d4465627567a0665075626c696382613161596653656372657481615867476b72496e666fa66743697263756974f6674d61784e496e730068486173684e616d65606b4e62496e7374616e636573006b50726f766548696e744944006b536f6c766548696e74494400694465627567496e666ff66a426c75657072696e747382da00510527a0da00510528a06b5363616c61724669656c647840333036343465373265313331613032396238353034356236383138313538356432383333653834383739623937303931343365316635393366303030303030316b53796d626f6c5461626c65a26946756e6374696f6e73f6694c6f636174696f6e73f66c476e61726b56657273696f6e66302e31312e306d4e62436f6e73747261696e7473016e436f6d6d69746d656e74496e666fda0051052e80724d48696e7473446570656e64656e63696573a0734e62496e7465726e616c5661726961626c65730005000000000000000000000000000000000000000000000000000000000000000000000000000000fbffff4f1c3496ac29cd609f9576fc362e4679786fa36e662fdf079ac1770a0ef6ffff9f38682c59539ac13e2bedf86d5c8cf2f0de46ddcc5ebe0f3483ef141c060000a077c14b9767a358dab27137f12e12080947a2e151fac02947b1d659220b0000505b8db5ea3dd6f73a1dfb3aba00cc8e90d7fe72ebcae121adef5e4f14", - "metadata": "00000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000005135b52945a13d9aa49b9b57c33cd568ba9ae5ce9ca4a2d06e7f3fbd4c666666701e98c43ebcf2aae6b8a4217c838638548f0b3d5e54cdce06c9a1088821082bc28c1b26771f46cb15cb788940dde1f4097ec996c446af95ffae228ca9d9b18a913a435fe422003d6e8edf27a5f7cae2789233fc6ace46eeb8824085ed02da80fb00000000180000000000000000000000000000000000000000000000000000000000000010000000180000000000000000000000000000000000000000000000000000000000000010000000000000001dc4edd4cc931a9d9ea96e00c24ea0c1be8d2bde2644ce2a58f5ceeb3eddbc9aaadb4d33d1b75d83b0e7022aa7b8cdd1dce10a28f095104b089d0fbcbf38619ac0b9a42ced5ccc8b08535b4952cae4aeae0095e1bb910b599125e934ad8b7e1d19d6b57256d109d880dd4581193bd3355a4d917f95445ad0abed99c3a30c2ca2717991bc0818825958e96507292d70421d20f185c29776eee9ee1914b1f8cf05100000001998e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed00000000000000030000000000000002000000000000000200010101000100000000" - } - ] -} \ No newline at end of file diff --git a/e2e/testdata/gnark.code b/e2e/testdata/gnark.code new file mode 100644 index 0000000000000000000000000000000000000000..a2ec1d2503cc73116e16299c91677de4b1924cfe GIT binary patch literal 750 zcmX@d#DD_0QFsgt3Q&Fqloo>0IgAhnlwx3kii7yfK-|#K0H(2sGlJx?h~rYv3{nrm zAOJESpZxUVZz&;_1*wc_zAmXrrRfXO0!ou| zGLxGU4HF~Nf>V==QcD^WBhuZoi#+qv@|UGMXBH)wW|n+Q_f4$u^UNz|$nZ!k&hSgj zO-;!5O9Bd%B<3Zj7BgfA6y=wtdSvF6c)BoT2j}O&IhkOKK&E}ma>^-9EhqviDsH;P z5Xh>&07Pmm$PP|U%tIrdhx-WVd`0IeC`^IaLO2E_`5Z$}= fmF>0fR literal 0 HcmV?d00001 diff --git a/e2e/testdata/gnark.metadata b/e2e/testdata/gnark.metadata new file mode 100644 index 0000000000000000000000000000000000000000..0134b45980117982e017a63d99c587c73a1a88de GIT binary patch literal 607 zcmZQz00Tw{g_ESUJgabY(3B|Qo2xu`Zmlss8`iyYUChf+@Rcvb&tbPgo?kdVJV?^{LOD2RX9@I+_HU_Gld3lwSBHXJgFvjw!tNl4`R(nKtJZG0Y%5)Q z!k4p;PMOGo=qScBoG6 zn-)+s={k$zC4Pw*&GNi=^Bzw0mhbrx2y)}hzR8m(@p@PlCG6jB_&Zkh<0?;M)0NMK zrax)jzV5ToAqj?i?}g;$%AB$o(&A!VD$|{nu6&QXb=U3Q-k6({zP$x`6bP6h6ay2S LW@Kb!04Es$PZYID literal 0 HcmV?d00001 diff --git a/e2e/testdata/risc0 b/e2e/testdata/risc0 deleted file mode 100644 index eafa6746..00000000 --- a/e2e/testdata/risc0 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "defaultVersion": "v1.0.0", - "config": [ - { - "vmTypeID": 1, - "version": "v1.0.0", - "code": "789cecfd49b324b9d2060cedf915b562a585a49062c08c050b6083b1608b6198c11e3083efff73c3c7c7158ac8cc734e5577bfb7afd5adaecc88d4e8c3e3835cffab5ff2bfffcffff2fff8f5fffc7fffbffebfffbf5fff97ffddfff9fff8bfffbfffefff4fff87ffcdaffff5fff57fd9ff6fbffeb7fff96fa95bfab51ee9d7b6fee7ff39fd2afa27dfffa9fc775be8bff8eefe9f8f678b0bbfd22b3c2beb7f9e2ef467684f5e931f6df477931ff177853fadd71f850fe5faa1d686230f9feefefd3cfb72f977c56fc38736fc74bde9628fff5eeaf54339565e9532fbd8dfe9a8e67348bb0ffb5cd2ff0c7159a69ffff3e2de6020fea1bdd7dbd9d339fa029f437fc3170bee6f2df869bdeb712fe7aefe8780cbf95dc9f971ef5efe596fbe37a22d2745165af873d4cfa4b22c771fde27b77ffffcfbe7df3ffffef9f7cfbf7ffefdf3ef9f7ffffcfbe7df3ffffef9f7cfbf7ffefdf3ef9f7ffffcfbe7df3ffffef9fbfc2987c6102844b0fcc737bd9c9ede8dddf9f4f9f4d592d756bf68a757b5c317953da6455a68a7bb9bdcbcf2f93f3f583b7caeec0bb6cfff19c8b1f9671ac1d9987d614328e3108a0fa1acd8e6f993ed3f8d1ee4102e5b55c7fbc2def17350f56ca16d14c7281bfb93e9735936f52f17e9163e656dea38c4c95ccfd6ce312de710b6221ee76cdf548edc480bfd74a837768d538b677775f3fecf711d124bd80e75cdef1bc573e81b5a80c347515759a68d03373489c387707eb1d902f00af3a72e8e7dfacbbea0fe327c91258e71fe577e7afea0161972d368d0750dcef53f672f2bd0a9bdeea1046e89a64393e5152a75871dd22fce0e7a9101f19f4a1deac346418673fa8d7eb5aeb6a746014252dd77e03fffc4d976a1e633046514d9fcd7e77613c5f2ead75e65ca5517e0c80389156a635fcfaf3a74732cf212edd2aa9471f8365622beff7c3a39745ba113dad4551ff320337f9441124f546b8bda5e070e012e2ee7681ab47e76be01cf9dcd356b8e02913c3411071596971a97b9ac4ed0b69ed2166d563dc75df339d5aa3c712e4cd63d521ae0f7fef36fa2af263faa4a15a55ea9823aa67f60235b24b4024d9633b88ac3280b10deac0be204e0bc2a52c796f1e060aa2c05705a555960a4a6cbbc0e2bb97af3718f4e566a4e01f580c7bbef6958f7d525af352e9299de0712aa59f60fb87e91e53abfde3b2dd6f991c4d606628b84c5ca43f4e5252630b65834c246cb0b31c8b0ba7df7e99747b12652cfa5d6b35c6b20d764a2420f2279890c1797bce7af76163632e79a4b5882addad32b89ce264814dadb0d452e2a5b64ce243b370e6892685d49cb95cb00e4ed554698618f77f89c61d7ac7d5249c0adb5802c5fb9ffd0c51144ab76509818abaf3851c0018d5768bcabc0cccc104a73b640aceb765991e2fa54b6909ef735bd278d89cf9fa5b1091c253e911d228e49e6152046e2e50db891f302e6e2f8949ffb27d2f8ec7cbf15c7d4f76ef298c5cab70572cb4f0299f451f95c1ea34caf4cbf3f2a8d6da32d626fb46ed2e20d492da2e28278fe25aaaf11d52a04b2fc3851315a5c7e235965017aaf48477729aa61d5d2af547c07ad0d5a5ab53076dec6ce1b103d2839a2bd2a946a2a0061408b03383b948c196eaf26cbee024e28f599137a7bc909bad380750fe303a63564846dd5e706768ff408768f4f38e1fc32a727b45bb271023371f92e2794ddd68c745797357bc0c0272fd48fb883e4562b294260509f3fc01e0cb397e38b925614f83f0c133715a00e8feab938576e70837f30f01de4a17defba44500db9188846f6401c35003be5da83655f76a70563637471f8e7433e16f878182c5777c304c8e701c86b878f40b794b831cefeeb00ec7304f66d00f65b1e81fd1a81bdaece7bc05e366187455892a50efaac0f305f5a5cb512d7b495c99ae7e0483a748ae7bb04bc5f2d1f9862d9c4dd752d75b96e567358a9176b99e35a9645c4d09d00f9cc6491f7ffa9468b09a0354501b482e6339306770b3d316b09ad9bb20261b9e260165f5de9de0122ad36cc2bea45ea7a03e1077a91d755dade17f598d1ee06e450d5d65239208a4f1c46baca24b478db7562828d6c26bdf9676252267c9e99cade22c3475fb48188b5db0b8d3bb3c7f4f9584ce8d0f8abb16ae16fcc392df81b1f2fda80b069d306708ad40040037cdca501c1a232406a7149862c91b06a8f845796b04222251627b42512026050d94adb5a4534b8f50d165ff522504a1da81a240e3cd4ce0a2e3c7799ae800a89bc0113e07055cd2a08c9ba4e447702fdd6d5d8554d3505c0928b4f6fef227df226c3ab277393ab9897efc84c34b5bb44dbdca55079b12af722da55b68983004d28db205355fda96c23fee280b78b3f6edcab3e5e160109ecc486a6565f47d003459c235939aca6896ba4aaa86febab9ead2fc54eb22ac1742738905861e51ba3acf0d98262cc79084cda7c070ca1b02b4dbe01107d30211c3226031cf4be87518811ce679bf927d53977ab54e9c3a29aee6c8ae4b50a6f3a6843107cd37708301efccdd06f8ad18a727193fad08f37a0525d94a2953b04338b7a09da2fa8f02c638c3abdbb3a2475d946057aec4161aeced0ac40b3d1acc48cb08b15bad0854225ce3645d922c03a775636f014fdad381bf7f4125112ccab1113b5dfc084e738c0a46eab13bfe2c0eaecff29a364e6d2f8d321ccb7c872c39e1d35b2501f19a2f2dae60b3f51e307988ef2b9a3d5bfa40899d5772f46db69c7b6e6bb75f6d440e89208ea8290d575ce769dbbaa0572310cdc259cd5817beb57d8c67935274785aec3ee69b8ca17c5d784e4418621b3374c3f6a5453f95c16e8dd01134bf4ffc95caec09ca85423289975812ce22ea049df761b8a44427d6309738ad18236a380cb16df2cba9eaeb425e32502788deba3b33726118271fd1142501407ce718f6447d09469d174c983e9b20e5b12ba68698872915c1a2dba52a324ae1ed52296cd3d8130588cdb4783d3d0dae22e9baaac51053b384263e1b00b27b9f5fd9f170e2303777d05b251b02d437032a46e960670a2da8414dd6a668b9bf2e02ee9969fc00eba2c8364679c79ee31166f361ca37ca5934382cb0bfaa7b6c1182f6125970e8f498a1d57c097d3d53a54600dc09973080eb4f836a766edbcc4cec5f851e346fcfd455a3600c76f328053c3e948d18d86e6065a96d587d97b302c0dd013e1f635fd37d9369cabd29ba8e33688b162e8f85d2ca36825badfdf00fa6a54089e11e1730e868281a51f62375d91f2979417c2e83ba8fd4f517060b297ad49031a6e91651261282a6f51bf8302dd3548841c25db5ee51f6ef99420db08676d00438acbf6fffc776bff8ab63bd1f63d59262180a2406f906dc2de2adceab20e0cbe6c095c883dfdba84f450dd36e0778c59e8c2610c23ee92444462ebca23cdc60ca2b64551bbe0264a304756d2e5d2184cb984365b8abecc9a2c987288d63ea4194bc44447f6c9cdbb2df4db69847bba4923144873c1938b39730f992e7741f975b0561ee7d2e12bd850c64ca6262a9346854d345c0c1e8dc0d72c215717058737c049afb0f800fb58a7ca6a2de0ed2559b4a1da04814b7444d07c4b575f760a9eeba81b413aac919fc16b7f71a39ffcac0192274f7624bccd9793ca49842ccd9b2081ce0e538d9a0a4a13d41c0a41f74f272fcce69d30745e12865a409bd0966c118acb2ba6490febcae2be75883a0533beb9153f891d927f7335a3faf03149bbcb3ac06eb5c94d57e434cbe0b3d025c4010986a08d7e0d04f6774cdea2b8e47cbebb1d41242f7687232b30d69481cb74f22c2e826989b363bc0f06fb9747afaf7f8679969a02d6581429fc149a318981e218b00c67929481230687dcd558073309ecf1915eaec63be93d21bf1731e1165d78401d684d23398ce432042211aba00d1111c2164865bb2115138d4f114856aac723f8016c7428709a492eb657b6306f945c1c26023ae614043000d05c57c040e6b68a3ad20355841feb2e5527e2c4047f9ebbe782c1ccde39a4140b86097cac71fe80928985685eee20a8390a4e05b5227a5aa4ae1e2df642d5920e9ae360e60dea65a29df0318a9ef1f1dae31ee97393ed955443137c728e2f8ed81a5e2e4f7d829c96c7d26817ceefda439ef14fad9101f2202e699368174573c4260ca94e06bd9ab9622d6eeb2031b2b33894ed1a0341e7decc5785587a7f6a213ba1dcce717f9a639686e70360a5fb72632a6ccccb7da1bfd4139ff88cd50ec8638bf9779810408bdd2ff97800e3da1142fc18f16f7cba6a732a3f36fbc87276098e00eaba0f5d779d7b98ed9683a540897f2a0376556170ec87653b2072b734be0ccff9af13341c4e9e4a0c0d46db549901c7f6f40b93b038056f4d637cc432fb975123f43b89c6e1cb23fa8d56d7075b945e5b0a40e654b9046ae123da3d415d58422876b545b51eec5712b305dea79ded01095f1a0465b677df67d33f62f9f101ba739d88150cd8a98fabe11893eadec334f1107a32e5d4b1bfd51bb3b53e1f363880c5915e33c94bd22375aade8b08f0434caa2e6e149763148453f2e0107a1dc022cd2f61c6d8b18daf2c2e1ac4e97e25e06d906625b4a9c95376e0641dfa588f14d2339b33cdb4cb731e9bbb4d66f9434b32b3aae4356e76f0d2a8b3d109fbe2a875ffc0dc7f103db3eb00abb668b399aba283eb3476dec6ce07e7057f64ef254ced130794621e09d71a62a2d3261df726af4e67e46c2397a24a28a220adc7493b5eb4a984a9946416f6047e1032be34be71fe6019acc6e30d225879294ee6dd820accae51abac640e34b9f7c130e911ad919c0f8633bd559bae564e6e4a6ccaf1905e49845e00d111076e55119deabadd687511f37649ae3f10b80c31f9174c724e62453a6c7b42979ff61432d3c457b126f34d84bcb42d415a9a3e34efa378586b8a5e157547823f161e2ef263e63954e0211f4d1538fd2197f29230ddec09089182bd014267b7250dd02b3d0021f77b7e07bc11f97d0d9e1e2fd069562e7e9a3292982651dce35d0edd34dc02a361057f7940607940603982bf12c15f89e0cfd4580d000df9549a569bccc40abc4e36a69aff42b72bec96a12b67683cccd9cd5175b0083e1264c91f0f42c5bd1f4b0a87be6b3b04545894b087305ef881c0f82e3f11e7fb2a211a8cad55f66b8d3482e7bc9226067697ba22930709f30c570f7562f812c7bc37eb9ec74b31403e289e516030fe948538f7fd70fc656c64b3ce32d83a63b468aef24b7128e6eaec3505efa6848a4ceaaf7b0ae9bd833fbaa5682f67c0b42a424b14a16510a1054568498308cd5184e6c07257a977592da7d4a9487a77975901ae0f663ff1f9b3854cf8e40f4a0c34174580347360b62d8a935ec2420e53a703493d050350e5fd099077a5ff4d630040ba99254b118174ca04c3e96762ab28de79b25074573b14e69d7b43e59fffe5be493cee5749b0a8f4a9cc586d3e573e4fa5933dc773243b376126a426b9ccc7fb0ac29933c7d0eeb223189640ef6d9c582d89432064372c40719f895be6fcbfb9fe85fbbb00f83578fbca3af47dbc4139ea12b14367da02ad93d408e7841eee94a415cac0d2de243d34c1456668511653486085a2834f97abe4dbf53a1fd9821da286b4befde1d6a68fce1595320228d773e6311bd3169427cfce079138ddb59a4b1c5fa92c81e6d2d3ebb8a9a6ac222565ffcccdbfda5a39e9b5f3007691aad05c7fe2dae335d75276aaec721eda0ae7dedaebc1e6e411e7031d546b987668fb1a2c9aaf03ff5552841ed18340c5715402eee4960e63e0d3a2b4cf2569ee5c75c26c10f619b70f730da4451a0de62cca28c206a34ff7967997655cb50b75092ee8e245a2752c34a7362c83ca961b5626d9d9d29b825d734067e3516feebea7df8c44d0987b0b99f8299777086e662a714193123a6b8004289e82ce977ac01724083a7c516593bb2311c2128b4311c6ed0e45084d2c0e45284f0d0cf6a2474fe310849fdbe853456fd0ee4bedb9f20556c79e6ab4712e97329be51a58ce76c024d81676aa4b576610819ee890e16124a83650541b49aa059a6a2351d13a01559565202b7d4154853d562f811e8c53cca80783a4c37e25445d98cd578637c5d865bbdd062ecd3595b06e0209a3979ce6d9521c38696200a919aa9b91dcc9a79bd3d846c9809623e869dd4b5cec4cd14782149862a7aa5f90549b6b0fb24b2341a958c4d357a2d2fb4b0a139a12dbcb2cdfa023cb3ad1c7b3924af7faf98818dc5bcb517790c6727f356496e7f464f1ed368e90fbc2a50661054a0a8e68ac13789b86076468672d2361244fd6b71776db1f132fd08165ab4ddcbf16f68033893d99a71b0ffa14df23c938b45c117795e5292149e49ae8485a56fcb4a490e520ddde9dbc3b14ac0b19da32989dc27bc051bb9c027c64df33a279d7b286ac17f667be2d78e35940cbc8de14cf6651ef1b2684676a1245e46ee26ced816b71a9dfd7047558f05d1173e27811d653d453bc81d4448ec8398f4325a8d2b63ee6531f1d5484b6b8a79059b7eb0fd64b7b059a0390e859698ae990979e380165e82511da72ca2b88d51933b4276e4c58ee2132bb8da0a0002c31348449fc18cce910056d29ba417c40e46cc0e1e48429f3b3a3ae7d903deb207b566bdc2a22cc4cf1dd4d719b6c8eb8e68b69b2732d15e50e1e4d64b1b33e8a1d71b080fae24c7161022e1d73d5f47782a7041f2389fc4519c7d9185d2cddda6fc7d3c482ebfd98038d0a679fe7aacad29702b2d699a9cd959f7be25a6041b9f11109c25401c4edbf478793fb159d1b835b4fe0c3235c95d42986beb5d6288ccac0da409d2e398c78835ab59a098ecfca2859ec8b1565c7702042c83ffe208f5d2abb967bd5fc82722953d78189feba6a1241924bf0de54c0e75fe4c21a7dedde4547b82d88af733e670c709d4e1ee17c08cd6afaeebaa2d4118a3ad53a36c444d5f8cbbe254c6959a39cead1feec0355ae32d3f315878a99fb59694fba8da6a3fe9ad7f3f1a1f5c08e18c46bd86d85aa07d9ec6e3e63e1366f47b5055a4ced204d7e5847878f407c4e2ba1afb78961277f56a004ebbba58b4d75e834ccf57da07789a5c32e8f575884c386d6ee7686e8a04d45219f4532f1b003cbcb82878a764b0dc2e99a96726c867d312af2c9ca5415587107dd68b5d11e30dabacb68739a25538128fd81b19c44dcca7528b6893de14941f7a3b2a0dca29a7740a5420ba522a6b644bbf52915258ac860a7b93a71d567127a14c0f85cec20c4f721767838b5ddc9bb3ee88b2adb2701d83669fe094690309988cf7f6c42657038f4145d5c5d39db340347f021e5d24272609a1d28295b082170767cfa75a9e49f7d629a8fa3ecb7b9403d3bc68f55069761172b48a4c88395c23594bba323b792b2947c57a4393a6fa34e29db6cf2db863267d886680e4b229262f0671374f052cf2c5227749406ce431e9aaed8a1d3cd853e3103ab3096cb1cc74b7654aeb41ce5a42f39d9abf13158017c1e24dad139b05599f10179ff490cae2eb335618a0ea4b57441a1bde8ec3659901397ba33afcee50657a15c80886a920c357e81aa7e2cbefe5c6d28af4e466c0a2f3b6efda243b25547f21986cebfd0f542d9bb0fbabadcaee543506a3332d02b10226bc4f3d7d7a12ce957ac36977e6175b9deed48ac1d6eefb483e0a0a0805a183be4029364679283f27819f4db66b69ae32c53580a236466aabc51eb60251b1ac31a7496568650a15183a2778518409e1f486abe2c8e3a4c8741dfaca723ce0fc75c5ab2632e581aa38675b7f2ed3880120750d225a4eb96ca1616239c10ac30804016fbc774a1c6789ed1dce24eee2b090960531aaa5abc6b8c8ed8a95fdc6accad7579af9a4b323f46e7a62efeb1b9185caa912d2a71c4490885f6005ecd319bae9e5cdb87053dbb7da0b88ee45e46725fa65866ea45521cd5d2c58da5690f2cfc03f401d4eba92bc5fddd9ed953ad84efe86d77d7518c2e2298bdcfdb28810a333b857b7aff0c744f37872c6e4525a90d5719d1b37784bd1e76043d11bb8c9e12eb8d67da40b6a2de8ceb144f2817a118a9299ecc0a62c1c540102d2d72fa70347b2618c2c9641d7389232aced7e0afa02c3cbc3f86a6888707eb301ae2d488cc8e288263bd8977628f5bfafb66269f8f9944ec6177be7ccc5b469acee9d7cd31b76dbdb35152f01204141e396e40ca9861676171a70686540a184509192906d4e2e91ce6ba57cbdaeeb75893078399da0ec0682ddaa49d4d82ea3a6fa88dbbba849170d2f5714b9692ba0908f324daca3fa99ad2bc057ae7e803ac17c52750914289098b6ef4b07f2b8851b300666274aba3148c6903b2022328594725bd0c20628bd3e9b65a99a6bb825105e6d7d52bb38e72ba25ab0de19e3a13f37d4216b6e4ab2eb9d7e44124a2a9f7d3a7590922240fbb0d5933d2e46b8d9005070667b5c6ca8e392fbaf3a6e14cec95102710bb6571169b49b52b760a522da354cbc8eb257d7204a2ab73829cbe93b56061973e7037066f408571236c0ab2a2a75fd72af1929b6e86428b40c93429e6cb637baa681322f9c19e7a010bca002dcacdf830a381bb6a814ec0d55af8f06d99ecf8c489873b3e3af5a6ae57d5bfe0d102d76b55ed0f1810d8a1ddc45ef62ddd3957d79f73aee2851bb7fdcddca375b6b3df59d90777692d93b1ddf94b6b908208d2a207f49579d3d298f5b30d90eaabfed2c13f6ae595f0f9e02f552301c2964a3ff9068ad470f309ff1eaf2e0c0e536dffc9614a856a5e784c4dbeee41501911d401f1d48878165f6d3853606980c901ca4c01cbf3768d2a0d69fc64f887f5afa5053a89de134cf6b889856cb0d890aee9ca41760eea86d7d12a6809b354bb539183f816498c10cbc057c58512a046b1259be68ab1feabe9ed846d708691bc5b232e79154d16bfc69eb09295ee8871c87042ca8e454034b916d5f7d54793c376e561f7716c53e47e88d75807334e2ee28f012a43ebfb1debec28365a7459c111284ea99a85bd6a94a575d8f38ad4a60f3dcb335a5b053976495313e80fb1b3b2dfee8319ac911873c8e61257a7658f62d364bf13c68d590436320a41ffc10a041a9dc1402142121b50d8dd0d495c59c83646ebeb444ed7a1148f1814cbbf770f890fcfb2db80638e5dc0d1957b6f08fc15f75ae53260ded26c35fa0012f3c3b21e83206eef2cdd96bfb874baeeeb75382fb9798acdb9f8718f9a35bb69ded966dc5d6a54f3caebd1d7fc9b926ee92faaa114ccc3004066d7aea0e33cfe7489716473d2884e8bd27a783afcf6f7cd986cacb93045e7fc2e19a04e096b84735337d74f0b5e7473bd12c42e5af7085bf1f36aa0617aee56183edf2ab4b73424dff0f6d226350980b26944e8f3a23506c1d31d2c6e2d45577cd5450fa01a55d45701fa681a8ce09fa82e02f4147cfa0818f313a7ea2a240b84e4d1a44e2f33b1cb5d26d8c51e7b3465716f73dcdb96a2bfa1b9ae8e57d1a3f636c776bf6af3d186d2ceacf88af6362e7b589a3592ce3a10cfb0bb22edea6cf3dacde6dd9d36b1c35d6277b898bd5c152c6222c49ada55f04e9ded604d0c216a271c9122eff857b2c88e48173d8ab88e94b0a6d9011e9d46c77126cb4159d3afb13ed4ec60853aa043f961866ea1e88eaf70589392203a840eb0e14c47883a925ddc8394d0d2557eabc85e714363346d4f01446ffa9b24499129860ea80c56671a632716c9a55d57922e7d323aa5c673828a14993de39d7f5dcf1ddeac737ed71d4d2bb5d08c1ec4c615a35f43545eeda6cef765c195d6524bb6b843646dbf10c582fbb2a4218e5a6d8f2f25f28370df635fbc6c6b508b218f809c1be8b4eae8e530d948b943ada55b27cec1ba34ac4f4bf7a63f7b466cc9fb806e47510e72668dc01378f7e618d8de51e68ce6d71a70553c4e037821fb3ab2394d9e519251cb0e16b789ad6374677aed25e0114cb86bb7486ddc6cf3486902e6b20e2af1637fe6ad1d210772820b8bcf0eb4db6169e2fa526f86b5bee89450c69a2e6188a5ce97ee4ec3537cf6d248c08f7fda5617f55eddf5c65fec4aea4cd910fc2a6aff162747b995a138751531e5ec66e6b69a883c3967d125e26229959bd33a1174e055e0cc66b48c27f6093764b785ca767e43e513ba722e21dd7ec8f7527ab2e947737972458faa5f59ec8b75acbe765cee79d733fa56f7b614675eaa0052e302c90af301fe53b02fd91ad88412f063f305228d27afd38a9c420a99e9942a7a2191a7c61dde82d270b60e449f89caa1176cbd59695824921c8d606dc804fd2a75aec0d46467382d9e82010c4c249ecc497b61050e9761bb368a6b8ca53677571676f2487f40736ade054d83f348bb131aada99cf7b2c27b19d40d9dbed5f9c8529ccb4492c224cc5f6155d60598c612e2a94afc397233d216f392708da8ec7a7167125ea7335357b69c75fc9b4df40c1f1d4a9d9b58b1192772fe6ced7fbf1d3a7fd19d98f2202640905efda42a44a5a773c079bfca2047089836a9f01d9eba9abbc740f55d143438e03ec64154ea6d027ba245f8f774e9a0be6e29d8d839451b5bc74d2a35ead80d756c58df10edb28bddf920034f8ccf0aab4a168d501b347f5a272beee06a5686983cd9e082dc56942cead455dfa864a0e81a29c49d45e91ebb3b1bd861fc5df25254c91216a071a87a3eff2d1afcece150fd00f14c4e95c4830a74e5f71ee8bd81f0b3636afe784d700735793ada9c8657dcdccd3ec850b3d3f304ddd1b1c09266de64a99fb58c4a8dd48d092f8e6ad4dbc52211dea26438330b14816a52912d789c00dfe484f9fd5c0c9936149cea0151ad0a8920439f1a5ce57b8e391a96d2ae0d44193a58aed849edad9134476a64b149a29ff6ded00bb14f5578a4864f048cf20bbf19a0ca11043ef740bd34fb8236e4701e60cc75fe4351ea40f23b7fa734cf693b48f4a44f89f03a4af41380ec068a76e4e16a9fc5fcddb5cd092882b5c9e823e8157f441ad3fbe190c8e6bf91f2c2f4ebc567df7c760cb638abaf2b361a38e8f1846b9b7306f3b839b2c07770f5e552903d078dd3a22ad42a7d314e12395b7e09a5b27a48a267d4486615267612933d782d48328197634fef17b1744d92eeb258a318ac4241c301f62006b77627069b3eae692a055f8abaccd199d97eee16b78fc7208ad1fa7addddc106475ca3d70f910ccac0ddba261c54347db97687b27c8f844d13932eafc1de9cc4cb1c018a934fc7a1e6eb24063262f172a4cbb1908cc54872d4dd59f488f4029959ec7dbcca4f080ccf4cd33dfd163d47618ad9f65b8468761e6374724fd9733ce255be48a3fcd7be4ec7b98ebe779539b8b43da10f5b253e9c61c059dcc988d1f3196406b9b0f71f90112ad3728c266ac8e519eef381cde377c37d2b213293960d83c93db839efd1ff1f5b258b4d0ffe463dc6bcdf92887499a35e18321947ef7738f9d67e6af660aed434867b83b9a29f0942f4841118702fea59e8c527a2310319f75efc63b53362d673914960d7c5886f37692a49eb486ddb3412f92521cf757b7b124fa54226beec509548accddbe4db15b4c3aefdc72438c59060d0d3555872f48372f8e9fc0f8d60314b4902723bbe52d5cf6395b65829aa11515d77ccb203442d5f745814bf4fc78bab658b57910722f58b78e1f6377b56296b6246bfb0431df9aa8a8f35d006ccf48bbb76b74b5e5c9dce8f57ad1742565c335d4f994301aa9e9def622810416dc0b67b9a1f867d5c2f43319a2e77bb407cbd7c7e3135f1891fc90a0c936149e4255fec6244920a5603f5257d6431240104b8895deb808ba34bcaaa913d6ba9d6d37b5a4a75f9d7b51441b667bf14a0b9e505e1eefdd5ae5cac153e7743fe9e6e54c58fa38962260621c8b3d93dea16cca20293e459b12ee955babfbbd5f4a1b9d56a74ab99dbad069f1ccb7e7bb8a4e0934375607a8b3cd9dff1c1917db08c1e38916509fc1021cc25749cc12f51e446750df4afceac67f0e068e91778e8761342bbf2a874be6e211e465d6dab192c43d30c15005890d83bc14c8570aebd7168db3011091b5f266205f4b9d0a7ad0d7820bbadd861887e658d8e1d787f4c25e0fd23a39b9805e7bbe6a721d99497617d5519ecde041f885b446c7b0d71dac0a25f1f3c00529bfc8d39d90486016b8bf1e94ead0e149fd1da3e580cf12ad5b84a3b82db2629efb62cab70baf987c8d2cfd62b2ceb659124ee4f83cec9ebb8575363fa0ebb7216798705c892e52f2340ba3dde8d4e27cf4f90e77d94ca6f78625e4890489321984345401a708654cd0d9c80cf779d22a532751bb61ae2c4759b73ce4f4e8cf2502c6adab2656cc4b9999f0227e7be3afa86f76672cef1c9c40755172c1bd213db034ade5f6842f6dbfc39ad4bde92ef4483ca671691ca67b0dc3009c2432eea0a08f2307a2144baef882f79efc16555f98a09978fe66b67ff15ed7bf58911cfa07cad83489df896571505b155d4321a290d02a5a0c779357a6c178689b8272cc2943f68ac6218ec69f063665513f27474622e09545988e4647df8206d4817dcf22cbfb38852f253e4f1a5526f08651f08a5dae5154648082368b1dab0db6587163fdf6c0a641c2378b909a2f0ceeefc3c54cdb28c2cd209d26d1ad305348e25d18fbbbda6335d0f790afb913e446d52566403f1cf235a6dadd704e9d554c9c77786c35ea53bd88c750f8e8021646f56114e26df4ffd117868656a86e4975db56c579210ff6b525d3a329d7a8625436d55958cc7dfb38d92b676458b608d4a4e661afd8d3d2a84b194c8f41cf587725407375a79a811e2d1cda93aeacf2a82ce511fe90f2823220350baa1e9e8b31cc351681c829b308715d4aa4c4af3fb40f3fa598dde3dbadf8ee87e3b5270bf1dd1fd7644f7db31b8dfb6a1eb6de87a4b31257f1bb0c596ecf040108e6b7a3ac50ba2d118c54eba4d3994f1ca8aaad6ee2835330093b76bfa35246f9fbfcc36a4c5b1945f19bf6eaeb1c894ae096e5d3abf2611a919dd9533c841d9b2a9a2f160160b22be33405790af6a6c62b53bf1c4588c7b1fe5f9e252a32abcb4c4811e3280f8d45c492106d65ed23f554c8678955a5b0ab5bb4bceecea3cab08f47372642ff1f4293e5613facc765990be27c8e2da52cc8fd95c8d14292fe33a7c57d982c200e424d1d7265fe9e53405cbb779e596826921b62b8e91d61e8567dc460c6f9005c788cfa20cbe4edccd96eca2fa0d45e921bca77a9f89d64065064aa7c604f677e00449aca005404e10d36bcdb05ed533cc8d77034ee9e957a8fc4cbc81acb95e1883e695cd60a6133630e4e1ac43c99836e40c705978a2784a3fa1a40e339660ed8c974f6ad96c8d0e53be9274b0b115cee657e6a7caaa0f23808c3ca517cb3d81f2da5b09c18b6dba40c4442a3998ab2a0a8e2d8c190322df5aa552e5956692c3891e0ba16394e521145caba259121a580c9d13a22995563c2107fb099594a87665b755cb096a99d18a160e83a77016d97cd8765e8d642f8d03f00d7945e0aa041385cd5a0c172fe88079300bc40fdc4519920c7765ea937614752c291e9c6a291e4059013c48f93470dd1d01c5243b4c303bbbb68aab4ee6a2873c14895c8f59108da5f102ed780c65b59dd02ac896d987d75064f93d0d6df1cf4a8fbe136c33a74bb5ce1202a62cf2575b793dcc160f6ab150d480fc0ad8e4a152277b4dbdf350a9d3a0e9619aff641a862e8b8c720beae5a480d87a296ec36e299ccf07612c51a52ca3e3b32a239fc924a31f92b692e4cd615921d51d69248f5bb6c7e81136b70a50d5bd621ba5c031e66564994eb177b784ae4cd2ff670b205220bd93f5162df06d6f780ee7b6bc5bf6d832c89c9841a61b92394c6afa8c8b3c571f5463e5b9382b89ba0db9204a00db74056b4363a6076b3567411fd9486405ecbbea0e9a396b413f43304ac2f6854406d634b8843364789d227e730dcb99bc0d3b91b82974528fa1134931bae9855592d6fea4d6a8971a7a59f2d08bdf66cabd483bf34eba68ebc574b7f5a1ae25807b108d5f6ff4370de71cab389543fe0f48a372a1c9e02f597e37417009acf70962cf0fab2804b11c03412ceb6f2088651b08425d793487400e3d8d97dbaeb34e60fb083a91de6bafb68fc47d92583560a0ed776d5dd6adab9f6ddd529f1840b6ae982b8cd7347fb6738fe4d179e3eae1c7b4689bf68ff6ed89ebcc37256dbec7755a7597af3b1f1144f4744dce2f077c01d71429c2b0e78a301043dc1d8fee7a3c6122158eec0b6666e931faee201b7f344ac3ae889f536ff4794f79273c4a8b8eaf88e66f2b50afc25a8efbfcac2c1d2b4e90ceb95d2cefea2090102d4ca7eafcecbac16e692fa3e92950eaa8c18a827cd85df92d19d2b2f460392c917929265e6e72e57430c8c4245d24007ebc36029b8c77a9181a7713d043e37cae51fda6e4dc251e23cf4df357243ac4de5f1cf49abcd81f9b914b0a19ef87d82025c56a0bec7568c6d39df7677056eaa13f2e7be994947d31fb880233afce7bbe1228e93bc17ce3854ee8a192a499d7feda7e01830b64a4802f176af691002523a6ba50c1fa3b4634ce50558a38a822a298c67e25996439a175b6282954721cadc99ee2158a29965c90590ca6acf064678c3796e7b73af63eb00524e70a0e2696532a98645ec3b50fda9c01343e54b5c7c12ee9120b508dbc96ab512183f2d37acb2c8ba8444b172a066a5224dec3eea6f3a3bb1084d6e8193cd443db4759b2393ddf85e585da1b68922ff8633925ededf4b7e132bbfbd8c7ecae53bbdb6e50b2573ac8f01064d15aa7d2474b5866f0d10918e07c15fe7ca8d7f247ab58de5dca580a48f32e56694cd4c373456b9a44e5f81621568a609f03ad0f470bd6e6db738a8b0abbf93a1113a7768c79991a81bb524fa9cb6cf0d1f340a329533e3d507886881022a2b1c217d4c1a79817f39dbe2e0462adb5e07b8bd87086cf2ee79cafc408d78ccdcad904471d0e1cca876f57413c8a6dcf6a94fa4675906ccd15049c6bf88a285815fdff7e49c06165350f9f96d0a2810d76235485fae2229a10c2c6ab37aefb87da8eb49f948502a7d43982ee4b0172cc28b979ea9c968d7a539be1f9913cc5271bf63d22a9658b5b962fef82c47ce88722e4ec43357fae93cab10e18eb70f4a72ed365747bb50ab38ec2002919d6200cdcb354142a8b05cb507fb7c6b026d12e8f3b50b2a2b83b623d3fd472d9b0eb68184e2fc0dc29148c43af791742007b4a153b2afa06e699fe3cc4ffd98012bdf2d57ac4b3bc789606ed6e4b40aa71a9c97e916a53035998024b07d514a5794dbf5e940fbb88eba1d025e6a5b7e171bd4a733b2eff4a725a86417f0754e93dbdbf59949281d6d2c5c0b9b056b8af634f7701826f06f865eeedcfcd5d7e708c4d278b70dd81d19a7b0a0e228d7c34db63d0f003ab2a27bf2c333643880cf27bfa304a24664786252d83f4cde9bb5689fb52e07eb9bfce7b42ae9ed37b02c5d09ebc275986ebd77bea0478797fc87922f37f769e70d898dd9f9247a11e91f0c38729a9b74b038108781797694d50b4883ca9ba69c1fd92834c00efe10058aef2426c0a94ec2d42adf636dad59aa686f20cc521124a5ef771419d50a24e18ca40624958bea5d038f81eb198bb4d6ebc7e4b7fbd565093f8f30020727acf3b1c9ccfaacf2e9755422a81615859bd55da3fd2af70ce8a1f8b43441f9a578bbd2de6215139a0e7ace4312f923d5ce4c7cc6098f7c7cf852ee5312f913d5424268087c7c535e3963466845e6f141ac2da5c852f5d820177f90e72b583b6e0f59129b101655e1d59f83da9c4c9f307fc604b5f29090b794035640d131de534d484ad4c089240b8f2172a9825add8c748899d58d7e16b694047726c0d2b462bbc8c5023205ad6586b904ce105aeb678f489d890aca0ec8e8d88c28f10b530b5bbbea1a81ba078b0b0b0c6e69ea6f6c453964199842a8692a35bbaf89adf0237505420a21bd13aeaafbfd23b593a0fc8f0628054f0e4061d47aa647f60596c0e34eafc65a8b7fb25547aa806f9fda8f4fca0a583bfacb967de039e4976f70568f289ef21bde33c3812d8a7030dd2e104ab0900a47d63b5dfe008dda21e35ee1bf85caa5385e1697ae1212ec9d13ade94cf8f29209f98c668d1bd2b167230a19cfe86b5d3093e5fc95bcaeb5db8e7ca72f9859c53d5e966d49c3d3ddf7bd4da74b2c58eb7a6778fd64c6dfb9cd053abc70c102a754469e309e57041696336de51c8c1f5a26ac49997714f37f70c3284ed9140de20005fd2893f415514dd2a13bac5fb0639b17e330d75a0ddb9fa843c3eb503d473a38c6d9c1e9d3cb6b53eec3ebcbec17a854b03e4ce866dd6dcb3b2445728caf43544cffa7b4114677060d89eec1ec2d8eeab8346887f0be2df9206fc9b03b50b8e3a8c91e229bedfcb196a0540d950d7416d4b4349d7caf8873f9d65f99a636adfe14fe3605707e3eb0d64f06770b4e96fa2b3463bca9185405e5ffa8ddce483b82faf040505c1172828c98d2d3e580991287a08b124e18afa1bc80dcdad91faa6c5a60e14eb1377ef2ba9ce2ea8e353e20da7225556b0f15ce4d3ee95c21532e955164ca2648788f31b8e64451f911a4794fa112962118b28c191cacd97f57aa092e69c131e9238c72b8592f890847a9e6c08e3e92a31298482dd7432eb8897c06ca32dc5f3f5e3ed4c77e7e7fb5b81743a54fd16987dfbbce2bd25718048e85711608e8987138bcad487ef3026bc9026dcf7f073694c6cc61eda5a9b6b7eaa8fb10e3b05ee49090f096ae6d37aa0f6b298c66b1c784923086b2818c1b2a5433e656f6639dfd206937f03f2d7e6e41a59f204ec69f404ac122d4d50e51b08be485118dbd722c40dc709496d15310bce6f486fe5f69ae0f357091e3357e2ad2ae3b42d3627950caed90400d7cc87e0028ad6bfbc27951f05eb84172395d2382a3e1733761a6ec15a93c81718ea432f82aba9b2be68951d0483f846db6c4be184e04f5ced71319726cbf5ea4e33cb3250bf2cde5bc52d5774dd9474c9179a5fe808beaa3f57d3ddd67e49b3122064846667a9ac42531176d33729e13527b4e54d215ee667b5a733c0c3db4db88d9c1d835b3f8f18e59ad7f87017f1409ae4d61836eafac68891ccd26b265df50ee296fe50f69694232c234dceb3b782a43ed29763f0f7956bce20a551f59b97020fbe00bb9231a3a403d8fdb62f8043ae5bfa1a6aec236a14b96298120ef6af17933c9cebef2a470610b9a1c20a0ef6f7d46a2d6823bf54ac7ce82e3390e2bbd750af9e6fa88334bb21b47862c8251c7b39866fa3b263f8d1fe7b80968fa86eebe94f0048f2709de77447317ef51ae6f4ebc7cad19e535999d2ecf810a1fefacec25f71f893279ff5f00f008fb8ab78080491c40ee19a3e44cc2c535e31401e30401e30408e18a00c63212f02ab17f777d68923293b818b9ba1e1f3b20c71a6a8079da68eb92934484c81f56ff9a3285a34335e8027a59a8dc789725c295479e896c37c5090ca13d86a125c25d440012a1af88f5c9011549d542a3ddc6a3fa6d6d85498df2fcfbe3c2e8f9431e0f5b10b5f1755bb0f8b3216ad98ad4a649a1c99c69e0b3e08f82423d597d7eb3bae8adf76d984a72eb5f16afa26b886dac0aeb9586370da498a105ac0184863725a14ff2df99ca918b1be406745354e7a047728cd980ede600b155a50e3158b43d0b6f60b28b7cdd8dd097d70d3f2b265c862228686dd3c4a8e64812923336d83e2f3a9143f55b81ea0ac269f9aa0b937284674f5a9cdf06806a88f1664fbaee8fef59ec9c9fe55364a4a6d4a8b00329e76518a743207474a278b1c9261737a867f5919019733247197973fff365bbde0991e095eb4d53ee7a86afe6197114ef0041b3bffbfa30c21570a6f63d83ebe2a9110671e38be0fe4d006326772309141493df5254f9ed33f8c23a5fc061ff5483167fd8f7124515c99f3634bef18f8bf971fdfa7f456be45e92dffb3289d09976f5a0dc4eedfff14b5c3ad9b37d4be6cbf89da3173ef6788fdd477ff7c62afc7b7885d8fde13e2f6bd73c5f7bdeaea7d08994a4f181e1f6e41b0997f9a300a84ff6e4dc97bc3d79926347eb1b1dfbefda6dc01f9a3a5211efc1c2c0f26c3a32fac349cf69bf6f9e0d87b69fd2a2d942824db2024db20245b0ae66b4fc185bda4e0c25e9c90e0fa1872486e29243641d5a586748457fae83d1d417e285ab096209be040a39ac5e43a317c6318ffa5cff3f07894ca64922e47c2480a62c5c134dcf30d459593210046e751867ee836ac254fa5704ee3f1cd4b1a79502611bc68aab6c5560e1fcb7dde150f6a4d63c6f7613baede89b34d8cf8f32d70bb6e06baf175cfdfccdf86504f5057c861268dd171521c0d007bad0315cc0ea6acefedfb39c890cf4bee4efea9e5bd1dd01f663e2d97c1c981b7ce1c39d488d3798beb57174d38cbd6ac6c2e47ce9d8d7a02eeccf8324d100cdaa714210cc0e442049a343cd192958bd20c794373c90bfb4d91e4f954b4b8d968652bd12493f71fcd5f72025c8d3aed31c8e40d1352fc36b14f89d7d25727eaa04575a08e405507fc58fc38fa10939c1758475c58b81fc6944e3c7a10f010714ad43403611a3fb7c0ce98643749f9013537663ed8aa0d452dec88468c5019cfcbcfc529c5cb6a49e5cd704dbc3dc4413cdce623eb2dfd4b523c366862e57c8559a05a3444d118bfe23a033c7677a283b412dd1736049fac845ffa32daeb8f0972098b918791c7d5b6d4e31daca26c3e744f22ada08791f38974f6d9a28473cd4943bf6bcc6781c44f3e085e226f0c6ae6886ae6480fc99ef6e127523dbde5a7bdc69ca0fb3ccf77c0c639aa3d7d02577f6fa2a7dca39193257a9ea1c563224e86ace5eec85d1313ce5165a72782d3582032ec04d1d731a1aff9a828b271ccf0f4bc887ee847c86328f5cf5b76ceb4b88d4d654963555332b3ed859e3c70a6b7cdeaf5b91c3beb2960dd2acba623d8b2e15bef802fd45baf5da8b1d72395f561eeebb8bb4fa131a5855d58378e4681d42a5008c77bc8d930f18bcb5ae3995c8c67b00977273ebd24469dd167996cedfd80ede0f061297085494953a880964893ae4fed9d5f6ee5cde6e488567b1ce0e943dd22367d6891568add51772d76a913cdedb5fda9bd5525fd7d739693f3f602969714a4574b82cbf7710949a23defc99a46f8ffb884c6e6b74c01d9119149c42a2331370ca7b37ffa4c389f3dd6f0e02908c6e787d68f5373f6141f7947ee427b73036e52d6df81b966e6279116a39c8f98cb97890ea0c33295d17b5b46f7ad7d21ae89b2a4985e07c64e49e365da3ba0a2ab310c2fa75862e4b0873ab003b60020dc5dcd8f18dd5106eea0229ca0a10063555cb5ad6e5868f7b7431571d2d23b7e56d29b61689a36dabd5b35dc0c5729b9341b969a20335f036930500d8307a7a7e045c4dde1db9d84bae0755a28f245f5e8709eb0411721719414bdd72dcd9c05cd9fdae0ef3d66fbb52d240fdfa05e02135c42ad87e32d39671e5c1517b0f600fbb8807bd8a7e3028c06a8fd56db458bbd45830fa2096b4e77eeee037192ba986dbf4ff2d887eddc61bfc2124c68fe486f14492dc286e2148136a0704116965bf730cf1e37a40ffb8f826bdb427ce23dc6f193d7d11d8b8d57685c176a601c75bfcff9a08343bb477d304665ee8f2de8a9ad5a11a133972e572eddd53c5e8f81f6a647f6d6b054ee9ec510482403e2acedce812fb7a3f99683785b839de83e16b2636497e60b49a8199772b0d55e2e251f36d97fc74aea42795dc76125b7b8920a7190caa05cdba59cdb1a0564a4593c5d6dba40392026f32ea2cee1a8765b03fdaba05ee565f14e6cb62ee2ba9a89daf566cdf72572e612e4571b22838bd15e8b56125cf164c4b3a618055ba1e985dd69d6f30acd817724a8cf75509f2ba4d5a9eb8be64a694f121b56d830b8502011825c45bb49ee3dc44f78ff5ab2442b0a4443b137718240a8402f2141da10c05acb44025169bf203cf7b085db30ed7d5896fd8e2989c7096cc6223b34696220661aae50247eb9bfe344b8a2493e52c4438e4fb16cdca82d9985505b02f2359682e7407aa671ca00cdb63457b75344c345c01613a552db066bcc02109774fe38b34b67471af3b98e1877e13b54ee143fa79d5f7ab8d6663dde689118570d9913adf70d18c84439a11f5a5019ea8d85473ec87e19dfcb21d4e8775efc3cd513ca7bc775a8757ec63aa226213a2c212451a109fe3ea8e479b89656d579f5ef72bd841df4b882b56b4c36d60b1fc85935f34c4bd0ee1ee3d29698d21c6ca69a46e7c3eb12765851e9b6afd18b19fb5a5f1a02bb29b301a9b37c47862c09021f6b1c245b4062524250c4de2f113e43eb1ce87d8e8940a8e8cda9d15f2dcd632261298d2beb75294bfaf55301de1517d43ce8039628639a91bca04e747dec27e36484f2fcfce6ce531ee9a6218dee4a3760ccd400b7f6c1bc28a80da8e11ca09e7e34c556f200f60a8af009127176ccb766a09952250f7a70a2dbe6b6e09df4b4242225066945d28245b9d76b2faf6432fd7e42941335cf3c408b852b319cd17db66de8acd7b4697678f42f369e2542f0d0f49a06dfc9b8dd2f468e56de50bf704c48425b4369026d0f888d7fe6a70a60c883a75bf4134ae1be5b839a4e2acf7dc94d566b9f39c48953a5d10317f05c34d41808b76e17748fde8a76858e5f9c00a96402034f13e0427cdf9b417fc4f5c52dbb3b8d209e297add69a4d41f5a83fa720d966faf41795e83f27a0d82cef89b25fe85ae97a1eb6560ca65e0c98050baab3fe6b09e2e99dd88d7743b6de1655ff20874c45d54382607563a7d03688d4b353836e5da2767a646edd2444d31eb81f416d7a9a0372a5d6c28ee4d3617142f482767a0b10b5e3d46744b2c41124ef71cd56bdb94f4a7ea97cb57d8900bda2b595dbb7ecf76e64159a1998d95675428eec8cb1b8ed99f9290e00d4270b9c3f4358ebfa09b4bb1bef86fdd76c3f33c1c2ca9022ca78acf616a939180b740ced42637938e142dc557aa2d27cd5f2348226c8850ff1272303385cfed27c4a0d9412a5f625a0c2c71760925bb1a6ca9ec62a20a007075295ff17d3caaf352af06d43567652a75ce0f79d3518a67ac200102e0a3093e11a4925ff994204bff3a45ae395024d1c1f6d790a4c44fc2e27c8722d9b1db36a74a4dd273f69bd264d5777f2b494acbc9723661cdd7845e8012c43610a5c6302e445915d08b779d2fc81acaa2fac00b10540663d12dd81256e214cdab420cca3f90a9a332e116c819bf07270556dd615fd21e84c74df7985959d368a00f4fc75f4b6165dd583eb9e4135a85f57d0be4f4f963926c712bba0fa8a9a318f9e028c62d3aa26250e82552365cb54940c0ba2017633f07348091df35c58cd3ea6e76f7f236ffdcd2e0c8c7c849faab327597e4599fe65268092bf1f0f2d8c39edc2b66d091782e7a1b74e9f5b65526def422f6fe63e81a7dd003ba567cf82c07979e02366e80303147b6a55fe3d529789222a7504472377ab324fb92308b59b2e80ddc166e8bd24552489b35cf18480a20d7cd8b7f1d9a9da36f9ac38f0f2926bf2c82ce202e6d58551254a74ca245698cd755ccd0bd0c15a13239d048be6b1caf34a509daf6258c94eaaad00096a4a03cf3d7d438b97aac719b68b8e401f6bf15689ad63e0bc59dfba8295b413ed335a62b061df9e636451166d0360d99a94eaa9e06a0c245dbd874ca9bfe7b26edb8275d062df5b1c529e9a9b82f0d98d51a850169c427c231dfd5213e274a8cddb927b34c77ea0ec21594d1912141a4d1bf77c54e4d065214d2509d9eacb665c4cea2b2b89210ac0f9dcb851bf7086e56213a014aa789a9af6923baef677b447ca035e84b698246723eac580f2557996bf516fb365052156e84b20ffb47bd2ede2b7fa11b85024cb2c4790109ad2e2320a15c05fccd65a81ab3876ed6ef135155226ac1a12e4571b6e487a07963ac601ff5a5fb97850f392739202060898359828e458a3866765a30ebbec01d8b3c48a1ea56d3f4769bcf5b6f03463f129412e4d5773ada95a4c3ccac76f83a22fa7c956520c123fcc8572168712dbb2be8b0dbc0f59751f65793fdbc4583e82fa3ce25beed2afb0fe66994fd4b8ed29c4f8d24a857eef894c869c199303370645dce164a99a792f4c89b4aff203e84e7a82247cfbe9b6c566eb69f2da13940c2a4819b451e975190035b0068db5ac28bbe4de84186849edd37ee6c26787bdc68e108160a0bb4491a5dae49e441646968151d41c552a957c565dc0cc94e1f5a86760ece690ccd7001949c1d1b7233b960334b0b5f111171381f098593913658e945de5b54f5ea1be58633a9235f89a6be06eeede94761def47aed209837181a0f5fa9c60cd6536e1f0efd79c515adf104d59380a4141a21d1be3523058a7e4b30d13c1ef2b36e4a582890c4a7843c1b2b1393a894a7780e4938aaf2ad60ee0b393b159a572ace064ec88998abcb5f261cbe38b30fcb6ae0a0ea1816b79b6882de8a2ee2b595ef70675d41dc565d9c9a5073515e5bc3afd4f109da6d7113b5273bbaa2b656b85ecaa2ae09d350f4b11f5c5a206ca932014b868373c21e733f3ac3a4c6d4ac445144f06ccd4c34002f0d4de210ad3c9e3cade9d678d9a2edf28dab22d68489baab2cbcccb4dbb41f8f04d0051d50780de2a850a084e88f9f4eec468d9cadbbad1cf918076bbdf5c9e030142c0fd79085328f9e90d74ff0cac1ff1cd21c0edfaa452009a68fbde8804f72da4a5727d825fdd439bbbf6f0988484d02a7d4232e28211bc315234307b2a020f290c595dd693de4d5dc9dc920a9d670736b0604a1919b9255c69d7b5c1df61b0477af08404a323d560508e2665e1d3f9fd4b37743c79dab862af5e4e970a1b0ef66ef0ff9349ee44103cea3345dd2af591e1256e72b779d48da573801bf040e43c7bed723eef9dae24d96cae2926713dc92812a23ebdf9c2731a1174522de73be02f37c98a3622932204ec3483478e96241eb09795aa8eef38bf414320813a6ecc4f49476e9e265c6a029f569ced45fe2bd3401d51fa557c8b4dd628e10a6b7aaf4daa3f43aa2f4daa2f4daa2f4daa2f4da6420f11aa5a97fbba6c702ed052fb196f705db090dda5ac25a555dab376bd6e4486fbaf7779290ab1cad21f2613e2f9ba52e2696136937b1e990955c813144ad4c8e01500ddac3507507d2037905d33a7c52b797c50d8d9514a1414b2f4a10f3f1c6256e99c0f113aad1c9cc81be2bd2b722b641a21c695ae06081d08bc4507569b06a0b69a562cb4e423baca368eb9bb8cb07533747b14eaec4a5c8385750cd68c5502108130b78e882851985544620754455b58609c0cedf0e5f825c152497c8aa51dde534644d61cca8b96ac22bfa684c431868081b95639dc1117ddca2e4d8635b43a998e6868789e83d8ae83d4511bda388de4711bd45113d92f086dbaac28f093fdd55c20b59272e83eecf3cf2c591e41c98d560a04e727a5519e2c35a0feb36e9877c6443375a836c386bcdc1af624d4330064b250cc1793a36de2e5dfbc97ba1311db69d031ca36041dfacd3be6460db53c764aa6f7bfa596bd283abd272c34daa76bc2ff0a49e3c49505dc6fccb655aa364d0c4b7271589c0967d941b4a22bcd55a330b4a6e9f8dee0517d76d030cb78b7c0a11034891ce0ef47ddbf8e55c7c265906205a5295a676ded278ee79a23756689c85341c29acd8339cf9b39edbb5e74356046e8dd8157ab8b2ef924eb24c87dd02801eae915675673d61c88532f9ca327445b74edf8cb382a1fffe403f99e5d2e5e68338c98140410412f8a8cd415c89d4be27aca50406091f6126843072380f45a2c6eac71c4896627e145fca0972a223b96b4684220274240cd7a7dc9d5cad947ea54511a15279b82e05ada7ef393d5c52a53b15d466286132a5fb7bcaf37ed9ab8bb194d3ef75c2a1e0b4b12c28bafab895e6ce6e984cc609fadb6b2a7873d769e2fb1fddf48f3d5d910acab5acf36754413a33b0e011f765a411f7770089f4140c575cb2372f0ee14b2bd674b9b4e2ec4a0dbf3640828a8ae718c1430b12004f374d4d44bd9d080e389a1ed79576c9b62d11c81c71d6c33d5778e11c675c2d51998272e68c9265425b39d2561e682b236d850d2ab7a4b44689821e45bd1cfa2217575f0550fb95bfc9e955592eb23645c2574fb021619f02868b2b0c2efb0b707cc6a58b231a80876796c80d06a6fdee82f1ce61d6e6bafce3cee8ab7dbbed8d34b20601d7a4c5a7bed8d9d1fd94c9a433461d6a88ae42f75f5ec8d3b668b79d7174bf8187e3a49d2fcf8d76addef7c6c9114bdcb62f4f8db72d3faca432ca8ff476ee9b96c0ba2312b8762bc692bfb06ddbf66221c106fc5e67abf8c4ef7a2315d0d71f22123f52f2b06dcd89843229bfc76ee7a199bbc9519a64db7f86b9172f2ad74d20ceef173f17dd4e654e064656804b01289cf9c5255fb76797c27a84ceeab7567c7d2027f21b3620a7f69db92dc9aa1adcd2eef65342802ec37e1070941ddc5bfa4101b73e08b8a6a0fb4754056d5cdf5f50c912a8e4cb3af77c7f7b31b3fe93dbd61f546e3517c04f28f8f3ab07c666fa87da98df8713bdbc6080758d34f265e63edfcf2ff412d425c58cbaaf6d5b1b5c8439daba6db075db60ebb668ebf668eb761d99db298ad7c108b2a86f747fb9171e4c09f3bbc12f3d449a13de658321da23856a3a71b4acff2a581f6908ede2aa48abe316b9136bc9298689351ad69307102de1e188d402465ad63fc331bc9eb0ba59817400cc6e1a0238ea4ac2a57bb3e89c8dad1ca3f1192d4cb3ff7551a541b66db1bea3d3e7216e26b79eb7b815b0dcf3f24c5640a9c629d9018ffaeee6492eeeb8440038da9c3293795e0aaebe9cf9bd262b6001f63e73b06b1eda6d68857679c7ceb0340854efb238439a1495398608f778d8f0aece299fe00cbe9860a7f768a7f714edf48e76ba3e341f504381b4a697611bed40659c5d3c77b1bee9b53e79e390071cfac940d1c57dd8ab2ff2e339d9d386f163ae140d59e5c41f7d51939ffc59dda17cba78b6f42bdcd35cd565205bb779afbccf559dd04c85f57464713e2ae4b4b5c977dd548326c7f31981aee1d32c1322c42585ce2508db62cbe703a96bcafdf375cbbaaff49d1c161188c09be021dc438fdac8079af6b2faba50ae6d6dce5e7cb7f462aeb7c47adaa749233d7f90931592a1f8c02e4b2829ef2bafadd0c0a1cd4bbfe7d2eb210fce132669e6428fc7d13419875f3a27bc7b2352c80fa64349b1b5866f766bd838f87edf4b3570fa1bf67dd575e31887603bfd829c752dd02cd1805d6b404787846dec059731171ace3a97fc9be6b2d92f56f9199348e1fe1a4caea618e496f02da8bd8d7ea4833fb75f4eba110c5cb003e6701ada027daedc44f11128bf31252cc90edb70fa839bb79a6bb1243bf9bb20737dbf47ff46d3d161e55404389fd85c3d7b7049ee1dbfecb59a1ef507b7baeb40f8fa99e6a2b52e9165f426fbf3176733051484e34e3b5127d00c3db5ab2aa7016bf7e0ba1db3c357535d058f41c66e790599790e14b3ddda3ac252b09fa70c98bfcb1860f5e89c2748b1b22c17968415677d1aea1b647e0724ff626f7c6b791e8daab2da685658801620cafd8d698c44ae60c1dbdfd214f5cc9b847c83123df027d439cc1bc5d92af4db9cfc24c72a5f088b78a687ad9f61492a3913254eb59656690c9ef2e94e970ef67c764bbae220a02e3d48c67bcdbc6bdb2d05ec41f51fc6a45d34bf9c405bc252193976d61966039ca33dcce43127f9a1a47aa259ca70736acbfeadcb23b843656302b7e22182d854adb36e0f42b247e0150f9e5cef615109c7f1e12aed2f22ed1a1c9f5c93161762b3c65995a3e966905139150decf3f38d6713948f6433f1171491693eefca4588dd7f4be4da93e3934e8856502b43985d776dd60691d42e933205424dea711fd2e9a78c0410405dd4ec5a8b328f9a7552349bc0067ec45150eb55cf986d878da0d96f587bd40ab363a3f4aa3fa4a48529b52674ad87f10f4982e39e771f9b5ce54b30202007c134c40d20f0848ca98ac92e232325b34ecc0ffa6bdf125e6dbf4f985e1a84a96bf35a89c4b8e64ee3e02543fa8370cb1049f8eea88d0f9591c4baca24aa873960844dd4b78afc2dc512ae55754a52ec2d42cc40a4482df931e8b4538d6f20b1dc9f66b2550fccba94890a6c338dc76ab5a3061bcd9bf3475b1aad9b5ddb14db86ae16b4dc9ed587ccc22f4f841fcb7f356a141b2a39d3be8d0184c509627712e8ee9150cb7b012745533a751f02179baace4e86bf8c030b3288e1c60dd89e9838237268d2b2b4d15bb48ff8bcb1b0a8a99b0581862c1a9cb0962524d8a5aac1b13757b714a6a13883885090fb0505c4b25fbbb352608a3c4feff0166c9a51c526bbdc0368550e34e1d33788afad37c4a7f883f5d31e9bd84a50f28c95f5a0115785a02d645fca1ae67395e0bc3b8e4229d3ae0cd2f6708923a9d66e91d2b6f728df819c669451a17a177b3c70673604986441db0148b30bb768452ed5e5cd834099c890268406c9c4c18cff860401894a18239e6e0d792e24c6cb1c08076a36912dfe5b399e90fda7598dc04780ab521200ae809f0de0eeed3949fea81ec679fa89f9a1b8005a72781cec0bdc2b80acb293b23b9b23c21d7151d6977c2fb1e0220118bc1f72a9e680512017374154a7b32700de6f5db51e7c8d3a01aeb965ab57567d47c75b75abd5e2b1df2ffa6b67b4452d44b374a3ea15007f601e69c56ca9ad687b22086575f8216431291ff586a4857289cf672ca6a468f19620efd922a5e4860d4c4d5b1b217cf941153f9f7750ed8bc8220cb3f61166a99f82e01bafd7aac4b07053a661cf96105dd3be06a360e52e7cb0557f2e6ec9c529cf176473c142186b4b588c40bd1508034089b11494581d7b35002852c980aa6586e83159253bbc3e77c9977449cb74cabe92bdf7bc57dc7d8c80ece9d725abb807f56ef172b5eba11e9fdd9fa27268228568006bb7defb9cc98e14329ca3c761e233b83d519439296e3ca3738d4b12a3ae3fb0ce4fe25bcdcc415ccfc24176cfd0209d47613cc8f24139dca919b6222f2756c6c646c363200a16753b1822716bc4f4eff7436130a889522a956b94ca7590cafa99b44f4f185bd46339428d70e25d235580b2e1c43b5509d8ec23177872cd6d5dab1438d243d66e2063f2528a6e24e493e57da0eb875b3eee147991c1730e52bc29b927ac6fcc573c4b2fe0383d174ec38d342ab0cb691055493fd64e254cb82c7669c91941a69a0b8735464d6c41dd39c23f05c9b6b8b54e8e0811a86c68127d145b31b8add951d8e69e086dc0c181caaa8704f123797d002d84e312522a04489a019cd3a4c70b7856ee774f59e178bd99ec87da985808b7d22440e23e5637b617df9dbce09571af6e12e2d7604a1573efc9ee620b466f25f94d2f4de8a38cd42006e6951ccecdf7a2b27b2ce4432608678d5de8031bc01dca714b5e2d91ae93558c0010ff442071302fe8c57234f0082aa82883b64379dab579953f5ddbb2d9dc712d71ed9e69391e70d5a1e06966548f6eeaaf3eeb1655f5802ab62d3c3e90628f88306a04fa7dc44d2b6af09cf0344e382446ac915fa391c547f207d0889a1c133482f779d5748346968846167d0eeacd1231f4a12562886ba1a65fb1caac384fe53113bb3d5c12e2a0a00a4d67df995983b8ea0985d57bbc68dea3e5565cf199702af5f2643b1fb6d207f699e732727b85e5aa53469e11f7fd216aaadcd05e345fbedafc298797178de7ef8d3d62e0af9ca64bbf16a50f23f13d46dcc88626f7a3dbd08e2b1d019b2f297b5b642dbb11eaae1f700eb1734a10f9ce16774f174f8d095a320b176b8302ef026b7a345c0f39bcbf4add56462dddec4886699b8dd03807cce817e7ac6bba3967fda4f6cd070ba70a5d8e9a462612694144abb307f3498edf3452f682b4af0ed51c51419facbf69b0121c285f1d6d553f66407bcbef1aad9faefffada82aea67ffe46825dd62f8fb445ac22a8e9f711ac252b7e3e542ce9a504db7f2bbd2ef9cbf49a87c11ee823fec660f31db5d62f0b2d55ed9e9b78a073100a4418c26de01bfce0fcf3b3e32dfdba9e681e41fe1646b620ba5c83b3e8b1f4cfbea6f7a0ecdb973a3c41d9a2740036a303f7f6fd959cbb8c34c8a5a87c88040cf9dd4ead43f9a07f8cc329745d52cca3978568710f23b98dbbbff681d65eb021fd25c5a076ffbd57406b46e4f110f7dfd266a1e72d61e982ae94f068d09ca64ce65d93b5e403ac39b092e6976bea1656f8a86cec5a3afad95b0bb111f5e865b3e7bb5bc395bf29d0b9720de67d2d90b5ab77ee8af50f8e10dec31ddf5d75c8bf4d96e7cf95a4096fac7ef228bb87d21fe7ee6ab26dd25c5b3edef5e836b508a85c2d8f4e8e4de1903b3925cd40b7d243946380d43c197a458d520645d1daaee98519bab7f4b58232f08c2005351113254ebfd296ae9e1376d2ed6231e969b12fc8050693eb281738fecf1886f20d163683f41684ce7b9991ca0b842f3e257365322aed471cbe8b572ca1916b17792739b663fb6445e4d9dfb7c5784655e2c840bbc81947208bb343a1544ebca69ddefc85e6b4ada145bdd9413929442cb761e78adaa6cdc5ee50160beb60d154b4380b7da1e7778416f3f003bee20263b05c5f41eb2d197574afcf7469e39c02de27578b0a8c3210d82e143ab660578f2c377de22fc66d8932c531d5112586d6818b05bb2d90316ef48631125d67ddb73566cbd1499553c8d475dc25a26aea1e1c18b06d9a5cb3321719136457e21a1ea950f462acd54571b943a79f5d005103c5e403dfebe3308b46ef3cc63faf092b839df44086801c5679439a1695a6f5a5341d859b1596a3455bd22860e702958fdf889a900d83baf393981697f84e8330bd733c3f09cb47d05c6e04a6847eca55600ab555c728f72252ce1c5419545db64f89d9576fabe9d72b19a312042534532b2843afaa56df15207c8b449eb2ff202f9629ef4b992b65ae8ee8410f32a720df1c5d876087c0a603b6aad9f2ce0a336b8ed69a7e7d8c907a9b49b3e14281098419386a6441e51815c0c1d9b43a4d919870a28a5af779f859b06390bc83d9a5d78d7eb32b4e6249bfc688ebe568cd8d15facf34471e8ce1f54a01b0e1a352b892a77bf3b62f91eef96e5bee05cd9b8acfae2923d9be3a715428bdd945f189da3dc526603d6a7e5d13041057800cc1091494b6fb88d68ee86b893f88b0c486631d34dd863ae7e41b5b074ba9dd02133a9aa8ae2d92f0098ab12da09d5b1a92b22f595bc3cf43d6d68beaccbeb241033e3919fa973c4cac74cb7519f29788948be1d5f4245f594ce9e96266bd9fa80468b661b0b7bdca63311732c87687272ca257579f61b1f1689e5a0cfd95acd64a5813f979845180376295cd43b5effbda82451e661443312eb6d6bb49cf4e206e1160f30a1ec98ecdfa5849106c2e57b0b5ecf87a33cf08bd1ccafb2e921aae0bbecdf1759f51e2ede68ca962a3aff7c9ff06e1e036079eb0a435eee03eac4a9ead8a095f055ef67ea83ebc0ce746ab6069c752b4f9c157d3ad128040bdf1b823c8609a791c605b47f1dbefc46f9729f3f8ecd2716d022c8565820b72c405f67c4d9fd7a2c49399eb6f10270dada3cdd5dc48638604371cd7ae84e4cf317d5d070ed69defc1310afa28d923fe0091dce6a90a4c30227a42c3078c67b5019b28c575c2d2a4eb55eeaccd3c6f514f115a084b7c77060faec5a20e55cf83f8e24495c34bbb8e2b75c3b84f8b9397c7c591832cab60a2403ac7e3928c9717ccd6e4e7b8e3d5ea8e6b22c288179b8dd131825323532d91a9eac0547560aa9af0c8e6e65b9cd56db0a728cc05ca82e8a683d90534d2d9d9b907abef9925e41c2285b874b9ce98cea89087d04ebb9268aa6203f0907008bbc9730b13c1054a936b8c80bead5c929351c869d3c52a57767e30fa167770696b3cdb3134940260c5002831ce2cf25a23cdd581e6020d2c3764d5d27050ca46cef7e8eeb60fbbff22a6ccbcdaa6e0f18ed41a32691dfa9feb79ac37ba5eeee7f545f39009f7f7e2e7eb7759e305e1f748f7229cf7395bf07d5748f5fff3d982111bde40f477648c118ace5983af98fe1bb006eff7d7f822a75883ec1f1ef10f59d5ba0eb1dcc096f4961b8bd756f672277768054c582d425c8e2b71a03860f727a219fa510598ee0c769240e6eeaa52081ff8ccf2162be2f40b2f17b1eaf450a1a6a0af20dcd21d9b85a802c7d3b30d8c9c49e7a25a863c0d026e31390742f50af5d4b08dc6b8e6240f470c7cd33c6fb31d7f589c25b9b667cb88af00695372ffb953285d429497c03b82ec881ccb36d3035c8da526bff45499cdfcf759d8669ec0e396d689cf0f5308355dcf4aebee40f885fc4b286bcee56ce092e735adc0c7729269133a115a946b8baf0365e9a340d8a5c8319196ff1c872f3d44056422eb6c6272d290ca72c4146f52ff2ee4db28e4a7aeb8fb8adb2b0ada0e02631f10c2edf55dae25c309c43d7df368761093394ae892a2d72d409ac32d882dfd8e9bad6e31019d5b1afd6cff5e6c853db76bcf87acc8bf175b2508816ed749fecfbfd82a4fc11d8def1f79abd59da428fb76d9a7ffce4badf20dbca9f98fee79c004f96322f8e852abbb29f3ed8fc67f47dc989148ccbe52739916e6aa5434fd660dd683aea087352999462be351348a0f43a54b0ac798a0d12f4d48277a1f93f452c75e081e733755df4a511daaa3d0fa9934b2ab97214c377b6c894be2b6b01e2ac4350cb1c0fb5287670f66af49d8533548053217181b632172ce782d21b035b986b1d4e6b09a22564f4e199b4a7fda2ee8cc766da37a1b1e86832f78791634ac74050bc88bd08b947e6368c9adae6337fbf0c596c72f86912da11b8f7c876ff6cb6069a730e55a2a1a31c561c808ca4ae560c08f93db795e691230d28d93729a976d7a6fcd7f62b9ca068d3ad01f4a77af09ae9b271235a43bf300d1343bb8ba2c434f6558f78f5c6a52f931032c16b902472b013cc54894df13c1720f5eb66c5c44be5a21fc483153d7394e0b599bb92ff6302916523b387e39e359c26897209601922e16f892400bc7053c2ccc23002b41e07581b831139fa52ad31c16e03d0c6a5b11d6b2a731f06cedb3a059817b5dd172f9f3a6fc451aedd061588e4b88bf32b4b580be9209d21a953a0f3e90c5a6cd8d8a4cf59d2ac125e83fb7c1b082254e38891fdd87dd195a5659f6c2c868550f14d468a7dc38cce65975ad74a614cd5e7c9c7c8a211c1b5ea35cbf94843286c762cb954f9766582012d571c89bd212d784aa49cad799c870982f0daed0200fb5c7067668601d087bc1065558f4415814a1ecc36505b2a6d51bc4e28eb0a70327f7c1dce82198b78a0fb839abf18ac5b85bf5c7b5217073326631ae55cb08986520617abbc9842231ac7113d7b801b5c6f5dc8312d8de5e4db826c22405572cc1187bab41342e5b3cfe7dd80cefb54ee0632f48eb63b635b12104972f0bab5a2f43b874e93da8ee3d42494ba08f72d930a748ccd80e82682adf47a9a197afbc101b4e83c0443f2136f22836ca0f898d7c111be57b62235fc446f9836283ee3041b16169a7aff4914fa20f94b3ec837e8aea66c94f8453d6578403ca4d0a0afe00d1ec29689afa23045353d432fb7788654f51c36c7f965096fdf2a3515e7123066d3a64395d246aafe692bc1178abb9209782608fe267860417b6a78e48a4260a8d048d6ca53181a21344b40d4536c97d97b1b923cd64edb018cb7e996c785e0129f66c731da1ffe3dc2fd315d97bbc62c8ab32ba199ee0017107f7cb6e5c87f0d1047e76f3a47155c5d4f8bedded9cb465610e5249803ce43a993c36af15b0f90765d2a208441e803a89a4b932cc86241eace552c705586a1801191c38e465d2e271c0086a417b6159ae230e054f834dcd3f69e31a6811d9c5e07fa4c06d903ef26bbfa0e725fda9b0f09b6d689cfb7f1745cd90e1b2f8ea4c88ea7645f1560693385cd5ab24f042f2e5e3b47d840f8271c813e6a38a0baf7a95aa6faa2c24d42a47e7c45b9dd3b30bdd7f5cd234edf6b94c0e390f4815665553e379080eb04b74b15b5b60debcec454f25730a81bb96950df90084dfb6384446f8c83ef4c994985e16962d6171ce75c7c5d1f09fbbc76b8a5962f64595fd58dc4749e183e2de444e3370ff23dd1f5ddc2147d5240b8c803c123ac2593273079d7e8d6fefc126910c115159e1942a9ead8e592eb205abefa0fc2e2c6516b6d29e3b6ccea21e7d429de488da1240b5553758ded83cf067588e01966d846623c83ed0a11dd806629aeadb505bb90e205f0690e30026eb6cb07ddd53c89482143bbaff2ebbcce128954b402c0269f9469be7a06b48a8250847dac35df68963978bfe7e81c5d9b8312352b977d216e71c1b04c874b142e70b76be8c9dd7d8392e04de705ae34e714e12ecd40e9dbbd92c87f9cf5ff3bf308b060b86c09670573c32922131219deba81d9e8f7e46cc8e1c796596d07047ee965dea955fccfd1c3887799775f44cb891823be58ef9490b545100be3d02a36eca2d56b3bac01e09f7c8160dac43897279200ffb42e943bf3002d9c7fe73ec3f0ffdcb6313ff8140f68140f6814076e09433aebf5b632c82516a914885c1e0e35dda3f12440ed097c4b105405b641023c220462f614234866318c2812338c60158506a1d06c00112180059ba6100d90730490533922198615fec5cedb645ee2941a4855ac00bffc031e12e8ec775fc09880e1db9bf50b30ba3d6666f14a98362047079636bfe429e369113e69dde8c0215f77c14a8c9a7a30095125e88646d023d48f0a8002ecf4de1e8325c5e8093b0c6382d0ea0c056cc065060fc9bb810c2000aac80bcb00c324697f0e4c335fdc2b470817b020d524c98f1d0369678df5cd05e62fffb4b9c48989c209262eac5fea1e31ca45b946d254ab6e2a2a7854f357ccaf849587c97c8744e802537154ee1da0cfa0531acc5cc7d8d9e95c2f233820f37f0b2dfba34a2a54cea2b4cf8aed0b3dbeadb95da6d7911a3ec11a39c9ff762059cf4234808c9259f936659afb459bf499bf9c696c8bac1226beb9404ecda510e82ee3fbcc76dd8e336ec711bf6b8fee41ed7618febb0c775d8e36afb844546ae27b1db4bf3a38673dcc7d4f071f6ad81b56b60fb1a44420de2a20659d282a069410a05595e0fb4bc5604dc3e9ec488fa58d205b021df029f1a5c43bead7dd279099d97d879899d4f944e406bc0b7239f5e3b87233abbf6e440b127346424233de8d47520a03545236bf5c152e7ebd8f9829db7a1f3163b476833138f7b8a26e7eedb6420f9e2a0f0901f5f665f5c345d6e107a476fbea529a5b8eda6f3d5194849c6e0cd88d97efc82a6fbe963cbf72bbc857608c08a1eeb29007d416c127bbc243735dcdfc259d74b9aa40caeb71260cf5309a0f5fbb86572a2a22707368b460e9b497e9c3d0537ce918217674bc189b3a5e0c3d9a232c29ee9184d32d74337bb9fddbe2d3cd2e50e6e12f549043b0fdd2446b30364c4fbf98861eae095f012f418d58a03c8c3000248c632727b1c00deca6a4c83a7fa09549720a789211a732c27828503c9e9c90520d70971877fcc0740859cd4c4522139f50288d0ffeb9d00350ab70682c708075d44752ad6bfe8010053c8896609ba33e814c48e4973a32f32befb48b4a4234af99e7ed4fc870e36183e0c60a6667afad7fcefe97fa2f9af382900f72308c2cb7334ffc3ad4053f33f4f5e708e36b03d0ea0a408e42e0340ddb16d81c8d1fcafe9d770665c887a6afdaf2ef77ed2c022fa554ff1c4f6af2a1a00ad83482b11c746eb33caa309928f28ff5b86bf2ccfdb76ff97c51d6edb65977555eee216df157576467b42e3b6b4c7800e2068329e186fd107b01ace9a12e460f3cb25b3bfc3e45f044c7cd5e2ffa632033123caac8fcaac8cca6cfb496586036065d64765564665b6d912ff80d94f49ee133bbfad63e4a1074a8f98a40742ed814ca3a4ef01c07610aa6824a6606604038b1f8b7da50fcdbc624bc1ac2bb5dfd4b892c72cbaeda19a5642e3dc3411e50f185692d071fc5bc84ba4c90b9af46b7d2fa1f0fedf55c9eb7675e870cafdeafc5bca4bd96a896c5507b6aa035bd5f46f292f8b0000c7fe5bca8b7ff127ea154d550867872dc3aac528c7ebdf0fcc81fbbf45ac5fa3fb82980380a9646c2b6b490d74652d84d0023bbb6fe9b1d947ab5bb40c5d2f43d768cdaeb2a9e2c0da41d36c21cdb9c5f3773b6aa57649b0ea811856df8fbb5bdaea9ea6c6ec9d2d8952f8d1989d5abbe8179c59bbddd8686aeba2315bd30b6316463818b37254e05c76545ba7a69104b1e1d21dfb0d392db6684aad2e252bddc49c052f927c0a6a34fa1e95638181a14c946d295ed87b7f832154abd1d51743336eea604ca161b858684be5e78b8e8986549ed6407c6539226d22d6a8ec495945ac88edb1155fe8ce0d22f8c25b715fd4e3ee092cf1ea3445b78ff2fc0d2b36c7b0e785087a5468bccb4f5a13df980cf9f88911f3ee19c9d124d833a10b5773476c1d2751f91dd044ef904b07dbcef0c2cae7fb480a3feea85ccc4e1eb51a354049f1428ba77bc6f38d44b20bb7b0c294983baa18c71bad0e00d380418ef40befc0d21d750d048af648c39de97bf7eda57f6b98745674816ff830529b3ec60322398d1786aca3a0d950385921b73b42e0437235611c3f41a9ae639c1a4ddd5102e54d5f77325ae7977d7d804e76656b281476bdb8838f5e310d9750924992db0576571ffd917ea16505a7bd193a6b00d36cea1551f1c22de85acb40ebd3ded8359a0ee56b94d2c71bb232de8010612f1a1d1049391f93c5b545d52cf0c8c4f8b106cdabf7fea8a2ad759f2ada8421a2d87949331f307be2bd734bb8cdae75b173d690607ed7146fba1fb5dd1100cc3babcadee080ac7b44d63d4564dd91ac7a1a5c2f2d05d74b4bd1f5d212b85eeca1ba5ef80f22407ede30c9a1d9ea3b8e25e03075d38048edf8e81d792a127ff76e5f8853b63fb5dce02806d065fa8e1890eed73497e7c6d7a32fdfc46089135e7cc2d321ec372a852a4ede9d2921fba798e3e39ab2d1a4272e55373f78d2f51d3a62ad7289b8c1568fe655d3af1757c997a32361f0d52a06983d1945a97b4dd1fa5f5370aa6dce8860e028417667633070347f018ca35296601d296385aec13e22608906d2b6fdf5064f56ec39317866e6c82c79179f4f9377c30bb3e4dd891cc6451a075052b4c86afaf59cbc5b2f92dbe0eda3bdd3e5a5004296c1df24f6025b3b2dfd796be7fc6b2beeb4340d98466b67bf24885e521383b5a3dea22773f948afac1dfe1ccd1d529a83b9b3c34a7fd578e08b3b8e148c0720a91a11226db86d1f414a99cb0d585e658387c8d60f9a3f3c83353d983f6402f576991261d75d9fc33ee6d7db580dfba827eec70c20cd2bfeaa092437d06d29c28e0561c792a61690c37e8116ff34936624d8894913eb0f7f6cd440d6f717cc9a553d26e3d6bc67d65069eff4ab40e80fa8ef956163f124346c78b1fe42bb86eb4e4e746afad7ae99ace39b760df9686c5e6ad6acd1ac5158ad664db096d73498353d05b3a60f44dc51bed843356b5a346bccec69c126e2c5b787ca6fc1ce210fd5dcce41c9f9454bc7d2d4b4a2fd2bb189964e940d5fb3755a4b53b90dbc7e91dc0887f207d68e90df5542d15db87fb5b56380ff85b5437b3352c44311f49ec6140319784f43c2867ae62f4ba103e629acf3c5daec859edc82cbde02c68a75bf36df9d5b5b34af235f8719967453d57e98c0aa9ba9be7ea0d9897104b7ea9d54b72f61ade9475dc4e25fb2195cf775b9df8cae3afd98a5767dba1334affce9467c2f26cf633350f94c96703c24deb2dd5e93d85913592fe260bdf0bcea781405ccb396508bbdd9f51aba6edcf5a98827953cda9a2e6134320f2e62ebfc321fe99206d005f6cdca846c5b8a61ae41d514d840cd504c56f8c070c3269b566083875ae1e133bfea4040d3601ff3aa8aae5b091e0e87803f9a3970470dc46287d3025874befbdf19c85cf29c82697b25570273e581b9745c58a1c3b2c53ef61e29e278e14c62973ed1079b337bb2f0e1ee6d576146a29b4148293a1eaf8f71f53fc0e375b60939bdca5d7a5ba8d51472296a8a090de83af9f93ba0cc19b80e3bd8af3b680553d8a5a1fe8b555783925e9bcfcfa115b59a11adf7f42b5ccc0370ddc0677ea6852cd6c111dc0687aa343e9394c5502bc27de71ff77ad065552de15d40421e9e07c789c4d2cf9efc709d4a9cead16c9b318d69e79556363b37b76ff678570657474f8e7cd190c53c6fca07bfca5bc695b67c470af75e170c512b99b7d0dbb0f4c7eb95cfebfdcaaf423585bb5593302ef22a6f1cb3453f60cd4fbc4b1709b110051657425218345c333e7f1b136a6ed97b89ecbd0cecbda0d5a70fbf7c5593c982965eab0d9f04e7c90d502f6ab08bae55c112da6a51b1e2bba6589fd4575bbddf8aa423baec2ac1ed4c8688c012554fbbbab6a377ff14f5acb99b715174df98443dc5de8e0e67f979a406d5be92203a98c37cf94c9b7b5389f06623c60ef73963635d005f8fce4abb1ca3d2268dbdb7eb6a9b14fecad80b304354f3be924a9e37e4485430355dddbee594c7233dd8b7e8ba3c3b3a011a18b7ef50d61e188a90155256190379658ce495219457b61462797ae1925594eb29b851f5d60dca721f8f665254785fbcc595476ca18195ddb583d5321c6ad5e5d1c6c0d60c0a1680c82a52b1bda2082ecbb7c3aac5e0670c7d86c0a77fba3d0196bc28822ecb86ee2e1739b20847fa15128aa9ac37223aaaf6c8e29feb05e7f40beff33a7fa0573bec0bd29151a6fa1898b0d489eb3d2ec99c98acd154acd86ff664f7d7539f555ad64132d5f7e45a30af3e4cf143f7189bca76283ea71803e8eaf506999decb8299febec480798529e031ce78b5b44c17d26370e25d3431106b4e10784484f35a16a4d6b6f32a34bba908e92ae0bbad73b87888ac3a6f81ab014bb52320fd6de3bbf4570d423903a2253c2f2e56b63ec2a5c8cb87b14b8831237ecb8cacf175f0079f8d9a6ed9b72051135c4a136e9bd647c8349eb1cdefc3946a256788384b957d8a4e742fef2d43fd1c3e61f09f175e36a573f25d2f08aeb54506de0b2e53764ded9ee7e69ed39ffc9d2658ed177203f472cdaaf640e22b4a5905ad87f130f485592fd6b5c00354d3ee283494eaf6fd173763579bc6f96f88d5fb7e9507b18e8186dcb73f6cffb954785c48bd3d79df0582a526305e4ca77d169f4623d4c542f7cbeae839accac3be5e1492788b09aee8209ddaab2d9ded18344c2638b2e71529d746e9116d4f636f4b60fb9b0406fa0d44141298cade86ff4794976a265548cac4aeba039975860dbef1f53f5ae7f610b5a13dcc724e707644ca13c077de157ebf1c1dd827d661fe4f5b6291fd7e6d3a21d5c932384d3086ca002c3dacaa8140fe8a0bc66088d499d15f4982258db75ef72e810504fbb5eaa60177ad8d511fb7c5d7deb0a8ea8c7f1e85122a2dc95c9f1ba6f19fbdb8611e1083988986144b431489eb0a832a48a3754d322616de1735456f4868da7708d85ee9a2d624b76d1978da9daa2b3302938a2669ed5e1ae0a1f503be28020164fd6dc0a3ccee65d413aab3e4659c7cad664f641e1c2b350834152a84df9c35a287bdcbcbde3a0307f80c6944d2a119186a8936d5c0e3deef8ca6683141117f174f136ed0b38cade34f6b0823db18524cbe2d5094eb26825960b93f26096d03096b91dcae05ab9ce6846ddc08b9a9e7587db3d8070f5685f4ee3a108f373a431614a37cc8a0394c1c113caa553a9610c885905325d252a355cc3004a1c408903c8e300728aa1242befd952ac756ce5ebec8b9cbcd6310688883897143d29a6aa4f20aaf2e5f9740fc5d7169f09ce0c2aa5f95a9674f1a5b9e3c014afa54361e1f8b838d2a16f9e5576435aced11a2e7558395cda4bf3e356de1fd01d114bc857c5e9066c86681a4369b708da8fc399a79b6f58eb816fce76ed0e9dc67378e09de398b1ce1281113a14e617c2639419a2adcff0711d36a8ba4f7f645421dbe13635a7bdc5ba16373e1c74d48bdffdf9d3d0f800ff9e06e7a1de47813eade0ae8e677aecb1d715ec2978ac8b192cd59d5c10cf22ce7edf4f2d333a6e6644d06af67b55977571972708dc7b2760a5a4e4f9887a7ae9aa5c45a93efa29d1e51cfd94ea257c35c8ded37362d3de18ea2dfa1c82b745f307784b662ef4e0e7c438119cc8562f674fc1c9b9a4e0e35cd29829aaa24fa288d6339cc8c6e049e8da3d965b387550e24d5370084113b5de8c51eee21a496e9cf28975fe827217b027292c401b62228433b4933b3bf888a4b479a25db9ee99b3f27909737a3b271f6befd434543f7c618c67a143097177c613d1acb71b93293d75b1a62f5157b3d0d335ecfae432a184c6c2c3e595d188bba83fcdee3e52c8af7db3f9120c65c1ac765f246d3f23ab22c990aa10382e6a7682dc3052f10552aa1eb6e64408b18ef80da53011df677398a052e48e90e26c53a1fc0925e5c16de0729d4641ec9310be85145b1c9df20da6e8de062d5b5403ea57502dd05009e843d3014b54014bfaf59c0a1f525525a4d9d210f16c9394949ee6d910500671e4d2c3dcd865c6b31236163ae1dcce4399283b63c8a2f941827355e9d2a11b5dc1be8bb3cfc79b8f10e5487db117b29f9d268f9efe035df7eeacb7ea93c25d5ae2eb13ee8273b12e1f2b0ac0aa023027b3d97433f4d4921480520eeca36d33788a3783091e8211d49386f84b705b71deac964b2bb20d6af9b32180eb30b899c48e5e621becd2919fb811ba3ad7f1b5b368fad140e4566fd99d3688d216a00b6cc59d86ef6e4946058052daf5c13f93dba710860f5cce73a2036fad53da7e60ad5d556145feeff6c5e438c02ca99bcd8003619553f031e25442843ddde5d1d24c94e5d1a43bc689dd51ca1210b81fcd5a1326ebd99e80e2191327f1f4e22e68355d42d60a5b4e7963b065005dc7e058cf0115a3317337ab435c58eea2d7b41294007ca86103c1c7577f6e002ca89b5e5d08f1d11d87686a7336df856c1b3acb6cc1e80a988d9ee3b543a046e29f433e93bbafcf81acda35078cd52b76c8179b48e17bc1deae8385782a33e665f4b162dd3b93ed83203b50cab53494c6ce16abdf3760efc776259d619df442bcbf05a8bf0e76c11612cd27a4a5497126485a682ccca78f81ab3611f087f6f8d0a92a94f8cb68a74789ad60d2acf460a4a74162e7c0ffe931a3f4a7858378e4827460f968e2e1484359b49f941559f27a6230709eba18f7fa65bbd5e86499abd97f37edab02feec6b6bbf61db7816fb5fb9716658c245005b9822c97486baac2582c0d3a7d54f6e4834812c72c7042a4f17a591f385759b3ea74202f3e766e63e9f2b22313e88dbae430ba1859c62f824a757406e4f901e7484edc62577d97f8ff3988a97cbf0d10186038634c988343c8273a0e75cad180c4d77732a5c433f8fd974b504ef657e65c5e774395960b32c931d747c50ef9ff65bf163e1387ddb61b39361be3791c935b63ded3e83b59c6276587dbdc34b9b0c31dac50f039e2e454d566ee190a4a6377e6a358c994d47c63032a62d57f347b2a6949c989e7ae8dbde970656877030d038b44ddba6d5a2f218f44db67b6c0f9122d94de435c504066cdd64ec7c20dd18e6d5385e746c39ae5ba0ccbb45838202bb3a282eeb3614455dd24d5ca2a64b5ce154b7c597431d84cf24a4438c22a4df328884d69776ed0805c260e0c6319ce9715ecdf9eb6c4846eb76c38577b19952bf386dea6dffc6b4a74bbf8631709a2088ae8bddd09df2c42b0561fd66547a76b50315cf78d71d175a09fe7ef29475d2f237667f3edbc3f89d73baba55dc677cfe6407df69a244161b80a5301b5f9141ab5ec0430149e573e173ee6e1bb8710cd26c418ab051efe387d92c1761ba59496c2a2fbc1cef2f29c559377bbe6867dd5503d26d69c35e6a49d1ce122b0fbbb302ca85dff2e1652ca732bc7ed9e9e54e7212ca730a2b74c80cd4fd694b8718158308f4812c967cc4bbc5b5b0c4cf409ab58900e5029fe42459e56b2b964257353899d5a884a86b76a774273c511d906f7fd8172715e51c09b34449f58a30154639112a0052b8bfdd8b08113bd922818bdf63b005043e0893f8e931aefdc0e1570234d27757cdba20e6440282d9f1c9377a7dc3d76f41c19e3442e2fc8c0540f9d5f606d5c3287853aa0da3b72be57f382ea4745aea9e30d053781b91d27717762aad57f54f3a8dec0b50fa49968b90aa91cd3e279b28ab9e5f9610e7ea4eaf48539f29490a0a93cc1d5188b24c35c27f4b6fe86ab5ddc580f271f6f39a5361291cb2fbbe1f414b300c73ba19af4f58d23d5e8a5a798535b920b3b318585bd387c06c767d86d9e7e6bf863016eb823096e1ec9e669f1c4698e7baa3f06f09e3735b80149b700c305513716b74cd77922ebe755d06acacd35d7a765fc50a520844c5ee3fbe38f3bbace9e945dbf6f46ef6ceb956ed7092abf5d931c3e6ee6c00c98fbf9d139badfe3ac5e807d2cda8c6f718d18995c59a2eb0eb92f1a01693740525ca457816976cca3dd88ac2ecf02b3ccdc55fc065634f3bc7a5f75eeddcf9dd86c2ac4f19e1273732df71747ad7e1c2b3d9021910531eee801c656647d45babfa02671cda060eed814418adc151c04b90357223ef6bb89fc905a4d8b27c7591b37447eab05834e2a1967ee189076ab1be49172abfea1b7401d709e1fcd1e38092981720847936a788c7bc1c3d03d4e7418efc99fbea07095622b6e9738f207880bfec86fba7f6bbcdace46a1eede17cfcfaf98e4fc3ffab3977be3df9a29e004d525d0731d0926576c8e3e616829a5539fdd9e08c6d84664f704d8c033598c5621679dc7df549161ec832c7c012e3cb1b982121475a32e4b66b638f973415e74ebb4bfd2265312de6f74567ee49ccf222ffc83e1e2a5fd5e26c41997555f4d5b7543313153000c4d99325128c4b6981f0eefb7493286aa7282150a69dad3b2a264d579736c16ca7c1f32728eab3f04336e2870bf31ab8962061df5e876c2dfaf739c89aecb0efaabf97dea3576548c5c00a3c552aa617c70fddf686bb0644605db79baef96e35dfea5d51881b656cfada21e671e4106de873fb6e81ae70d1f79efcb4a5f565e526a6430d2ea4cfc6faf65405af5d663adcdfbe3ba5320cd7d46f137681f4d731044c4fa97d46244772296ee4cc2312704611d67e21e0930ee832865d5d7213dac7d38b1d3b179e067958f37e0b8ecebed800d84c7a59fe8f9ebf3cd07cffc3b9061719b2a45842f7782950da6c0f2fde80dfac3f55ce0081ba180e92d717098c10939cb0fd5a81dc84b8120e9fd27e45399fd149fe4be964499efaf929d944f8f0352a9204e40c0c9711ad4c098b3320e27029b00090771f20af7e6e4257fa59bc4e470aa75e3624a46324a425d909fd82472fae322f86541f58e9507908aa3ca8383bc4618ae1e968d8a1ce65d21a249f351d9d897b0d68126ffd5cf10763cd39f1de608ab5c948bbe212ef5a5df8c515f98d7af7e6adc4277dd5750fa912e6ee409e7c2354d8b188760247091df5a7e3cb5b0a4e238a426ffa367a66448f00285b478387fca7070cb3c91754f79402dadd3357097770207536443ef84f47d78b6b13fa377f311f2545558673c77354ad2e5d76ab3eeed4f6d94e6dd79ddac011a1e85417816eb8bd59055e356d5017e19c24f5f27a0d1e4e17e27dc66a8768ddff55e5b65e720bf4b7cbc60af56d22909ba71950a78b0c876a5fa8ab96dfe75be0cb1a7fc02aee50b200efaec4caf680f0d7b8a9eb1ef6dc407c1011ee73dc83d8ecf6c6ae0200dde12a55b5fe98a520c56b9ee9504c9721661692cd867084f15540fd3559dd29f2ef31f48e3f05cd4d07f17b312bbc274c39c144ac26e24fae7058d4f62940a05bc0c9eef71d9c1abccec12a2b629e40984c2e2ba1ed2ceebdc49c66be7de140c6941ba6a5afded25d8443a02a7becf651f0c3b1317699afb0415c9fb1a5e17e8df04abd7d452fb56a0d5f99565a5467c4eec34642612fe70a9dac4a39767356b5576af43a14a7d0a1d7621532a05f38cdaef6f3aebbd15434853ed664878f984dac450542c3a5ba3d7c6ac98bf25290983a5852b8ecb2085759f533da9945023fda84e04998021f5c740ca1166a45e16c2793baf4b004ff0a5138d0df2e9cf4982f7b1af0f7453575856c88870f60703bd764b73c21779506dc6bcd497fb0dee54cdcea0eea815eaffc6f34cf424937399bc360444fbe8426025c38b93d48525a9bc0555c64153de16a7291195ed454ae7473a5cc49929d217b161bab34bfa78b29a5252ccbda90fc2fc4fd1e31ebe77bd2a29b2c2ea4a5fbc21bd1d28beb7ae417873e8fda6394d2ae8d8e20f6fb15c5f4fcb04372f87f05bae01954d01cb6299ba2073cd4d74ca94dca6841512c50205083f68bd4d86b54504bc880bfa3c57a4b5958006495be765cc99164cca66443b9a275e6f28b93411afb03dbc579bf47abd49e8b55baa355baa7c12a15042f8231dd9ba106619ea9a01c53d8f30188e1140815cfe7fbc59796cbfadda3522af03968ecea028fc1cf9206083128e70ae629b27175ffea5d6209a9a5730c370712e5850356a105f9a57dfa18737a344039fa16b631c20571a2f414ae340a6e9f9682dba7a7e0f6e929b87dbad32fdca2a9a5ed7b025b1ec4519fe06991d708c5b774173f516fa52a7d63b2f549b4ea579c9c24931ab639e8390648d88a091333146cedec57b6ba06bca275dfefa996faeab0a8114452f98d16674c01e60e7a7c449d266b8719db74b2394d7405a8e6492f6900b76e36aea3ebe81808d17c166c85eacf171862c5d0201504cce6d121e74371e85263f1b31eed3370d390ab90cfa3eaf6c13961354945ccb31dbc312cdbabc35bb3be8658c7aae2901ab59ad15dcc0df5fc2c0043c624b29fea53f41df63901700529301a960fb47d524147cd157e83b7ce4476f08b67d6911f269c3682b50e647565c5094abda14d00179f11a729cacbb0dab015b011ac8289e2f2b8dd420a8b97d4d0e3fde86925405406fd3a0af61edfdf00f9c4525beabf9bb4f646c1b6a08cee03cafddd3639677fff8c9125ddb5ea4f1abcb2b86f89ef962dac5e66a987072fcc7ee12902f255f76d57ac9b55e1de55a5528659eb37c8fc48e35d0f66da06093e1a45f9ab04ee3f57fa766cc9b78534112ed0222467287635434fa1668f50b3a708353b424d7df8e5bbe60dcf90ce1b60a9a76eec0e0f8e742948142c9fe39ec5be95aaf178e3efb1bec35fa3f171db64e64357a3b53abfe0c1883860e357443c01c753347d47f43f078e23e8888cf0163ab63a779f0545635c33786b321cc2e1fe1fcc9155eda5db0b1245912f1aefccb02166f30f5b80f09d55594b836e6c2fd6845719d6644921a087e2eee1863f5e238d04b439cc9fdc0f66bee506ec355c7fdb8689ad7171e252e407d3ccb35baf1859d7a9ed77b473d8749af02254a0d4b536355c615000e65b0233378f34188c06763701ef91e30e0b917189240c2aea7c82301b4ab13d5aba5763265fc795532cd281aa75ade3a05bbac9205ed25098ef88a27140602fe5ebba7b34ae8f0c6b7a36792cca685dd59c29cadd8d6fdb40f5413dcbd615763854c7fea96b0ca34cbee893077fd551d2e820c314e81d2c1a863a3f2a1866b20d997be2399b8a3efbc1fd3e2883c73494b7d99dbdf5564b774ca0040160733251abd433110061264b10d92a0028337d100081df6b948ec48a9acefe3d2a7b4dd5df4b7c0eb49153c80229482ac5a02380321af6f19114a9fbd7a4884644cd5560239588e78b95ea38d763b233395d52ac71677202e81c96b9bc2d0c74eeb70e5aab0ce37bd8f614c0d09a22185a537415827b554e2ba2ab109c0184a75370156e29b80a37dcff5db7784f214a46c7afab5c69a32ec2cde7ddae45aac09f5852a8b293512a4880c0d56295eed53a2496dbedb034665fbd853dcf0f59f102649963e821c44cfa40581707794913dbd9bc490518654d3777a01da0dfc98f68c1e92a66a97ec185782d79833d21bcb7f40e1bd0d962c512738d6257fb1c23c0aea273b20450ce21aabe23241b9b5ce3f7c25112fdc14ad6ae4cda0e6eb4c3876cca8166f9caf4e2a4b0e0f28176d69b91bc121eeb6cb03fb44d31b5b64dddd77c1eaff534717af3b5eb1b8885c1573e779a9070807d048f62f4eb0cb8180cd28b4f6e1fb159fc49f0b64f3c99c7e889c9c9b361ee924e78fe9075d252f4ccb82ff10e58d0cb05e48036a1c7d5e81b763a88c259581de2cbae2d46473c1ecf34d764dd53ac0eb1643fac56ca2079b68e765bcdd16e0767bb41622f13bd1bed43a17e2c1f3a3b3650ea6c467e2c9392f0d7610a757b8ea2ec6b1ae32eef11d811e90b130dd6f47cc1e891aefe0159464dbe10793c5eb269fc189301ef7345acbf9bf0b65fbbba9b56008db3ece9d7e06f1aaaddbea89c9b794b9e7660db673b30118ff5c2ab93fd6811425e787b78bf8d7c61fb3965d5bb02ef19b7d4c3130337be5214ece207ea3f6a084635239352e23ef7190d051a36e566aba2e5166415ec8575f2c2d49102cfa76e3fd41be173f3cf576d0a879652044d3aa171b4d6d6c42eac28cd6f72fce862f1159627e4e82d57c1b0ab33bef017bb8834dee5539beea025064a73d8d8605841910273442d1af300eff8a93df0d3a8405ff2d30ef39c7314e8f6e3aa73633cfbaa4f8b29d4e50385fa824def3c736c151bb4d646a4988e483f92966ec42dc3cb6378644953a5ca115781d9d76849416c3eb2fca40b385c10c0b234291583aaf6690e867f46b823ba757e24de214a795c597044d4148cd89aa2111b9c52ea03ba4f613267de85de4dbc4d02272d59e182c8c9e797f948132ffe2398a917f95267ac7ff5e65afa614bd7a8c09c8f6fb5f3a50960014935e8bebdc6574fa1871d959db95b4364bebe4368fb0b9a282938a7704fbf74318f53509fbba394aab5d08a68fa822e9551be8287ba8f61b637a8a98eefcfa889b20e8f99ea9950d35543de00ad65a67926b4d466cfa353b48de436a895f615b522a4047a65a9aff40aff6507668022a79a858e536c5a6a2cbe1d334b40247ea058b8d68e882c4c7e9e34ff42a958f2b51e76ff876814b6fb2afa31beaf5288d678ab450ffcc8c51e2e7c8811a3cbd6d87b9400ed1660bde6ff28a89ff85fefd3f811fe772aff5c023c44678f368a45e5d57d6e8d2ef5c1ddb9a2cfb805e76ad74f768d0498debb43034f3a5834da9e3e887d84e08682dd5121ce512332d01afb6d11eae401eaa055f2854a1a2125978e93adbc94c9bdef17a6cf17a66ff85ceb301db015cda50238e88fc17dbc22a71ffe1e56ae7f437c943a6ebc898b03466686b9749823090f95362cca132ffad0d73b0e7dc45637856fec584f9314ac25fdba64b8d5f42bde69775c26d502a9bf2f66737eb14e5eccb4a38468096b98cc16078ba2dcadce6f2cc9f06ae187a43a2d6479aae0a64e4828773d4882254a823a48823a00cd1a8166409627c02909dcac4a157c76af4e2adc88a3c857b48adab09fee3cb62d5d2285e6321614c3028fbe3c8446b890485167630927c140b7af7183a3c111ada4a76849bfe800b5c9cdbe68a344783c7d07e760a3055e2f7eb8a0d526192d395989880f63ee4eaa817496348dec1e4126c2764969f65568c39c6e478a71ef573b182afe9aa3ee5aeca1dba81ed24bca6c05a37dd75eb4b0fc4e7e7ae29678100915d83ee5259206c82bff35bcc430bcfce378a95c77fbca4d14f32238f49732935a36dfe0263971dcd3b7a0ea2e23a0f167054f9c63b5f0d7d69efa3d29827cfe786b498fe4e38f2aa283f147b40b84d6e36fea157ef91996f3c4925df0e00564c339f890dda73496d32513c716aba4bfb01ca109fe2120a2f67da835bc0856f583c122e886702be77089382bb0921aad5d93d769a3778b4ffbdc7c5a27efcf93de88154289314cc52331b5dc8c71568f6d8341b874941b9ac20843253919619b8dd0cc3b5fed9dc4e39aa076d41a07fbc104973eb8b3747e4345224986b5f1847273ab4e0b0784e5e6aef309e5e63e98d027eba173fb74bfa7eba1b23f858a6050226c43c9c7931b4a845955b076a0a6118fd33be5e446abd185e5c43f443ccd055fc81bbd44b9d9838b25ff6e03e626013098c44bbab9dbedb1d6749f6cc3aba2729fea135ba421881ce5daea0293ad9d1c11caa35c5bd245aef514eb4f3e94bea47602668a747ea849ac447efdc1fa42a82da3501b87f7501ef3dadb67f5313f991ef55726b37b10699f55d0bc99cdfb2534bfb11cf3d9bddaecd972c4a391e830ec0aae7b7ae73ef0a267f76fe4c837d0ca877c7a9352c1d70138a06b23a05ea3d4593f9f44154341a680772bea5d743f3ba7158ee5fdc1190978fe8e2cfd6720598d9e7558b9356151f39eae7706ec8e83fb9061a10aa2a63faa66ff5e41b21772e4481f06c97edf42d6450d631bee7001fdfa3d36385edc97da0282305276307b7b5d5f672faf8563d1f05f51b41fe39da9b328956425b4dfcb7cba56d3aabc9e80b40c443daf81fe1b4bf33e226e0eef2b0cfd9f5d9cf796523a7a16f3cd7e4d3c4c7e3fd68f8429b5a347b14349381feba4b0813f0c5e2649da94fcf277569c4fbc7b5b22b2737e58f4fe6ab836184222d2a62f17ce0620f03bee4cc8bb776686621cc50311bede21ddc49476bd1016944fcb699ab920a3cdea4558935f4613467a61aea75b743615e511f31d2914ceef0942a571e4764c83b48ba9317282b8cea52268418f87e2294f1c7573733b4e7f900f9f2d40d1ddc91a67e6835ccd9c872f8f5a0ee73a8e2426d954343e2317b291573f99d2f93f4e0037e2f4235f0ebba3afa0d3923d575f72640f2af2241109e6bb236c00af4da86750a7cbb3864f6fa23a2286e34aa05346d25904ce88530a2cdd9f07662bfed6269e7f6deb9d0491bb36e8ccf991a6797bcd8713ed6a58a7d94dc97c7a5d43e294c75f42ebd0da97f6204b85e381a6eda86995b95e3235baaef3224513ff32a8729315d6d551f68083b9290c9bd5f40aeaf24953134e57013823adfb54ecf64d3b41ab9779edf8e164639a87b26849a07e7c8c3155f5cc5da2591c1ba585edf167fa424fd77816813b2ba81f0f51aa27e1b7c4b33e5c4e9960ff7c1055b03de03efe45d10cdd6f0c29dad894fc879aa227c88ee921b9828fe0a28cd87e6a6ed444adc382ffeb76f99fe376c9bc58ff009fcb0a3af6cf50624cba31499913c4058f341cc6ee8ae1ee9284f9e471f16d32a7fc537a11392d8ee4c9fb2271f5c79a6a7f4a22078a9014ed40f15e9f92082f22ab43c20bd83adba56fd95fcbc671e050692db95a5f16fa87a5b83b26a024b22d51061cb7ac335e4bf24de6f90cfb5b02c72303bdc9907cce7d49e36109515b9ef234e6d3dc2729859b3efe5c6cf7ab70e72fc2056f9497e21a7c8cb84cb7183bfedc8da74f5ee7dafeba255a223051a05202ecfe8b900af9bbf7c1475de2fcda30bf966216664b210bb3bb76991d9f5bf8d440f7f9c196f374ab3ee6523c343ad2b609eff0a1c375693c2a7f3d93fd46e9283d593598efa0a94a7acb9d9142393a31600e648e996ee3434eb925947f254de4dfadafc35dc8aacac3d1764a5e5d716f6bf24ab46aa62df893c9d99d4981752c04b5a6eb61a078f07c4f2fcf38c9652ccd31c730083c0008faf73c9930ecff05d81aca793c336b919e9a429043859dd75c84c585d3ab077a4bcd7c0b9958d6c5925e1e485e40c6fa0e991faf33b9b954b914c806626e286450acbca1add345c5a353a900fb80bb940bba541c23b0abace508388205d7e6f0b9a51f3cb0f760c571002ad93584840b96743d87aab9705446acc8db8a8dfcf630bc5cadec6952c2a29c8554249aa6b7af5e8d6f58b82bb30ea07be4c67ae1849cdebb41211e113c7f82e5e18181ad36fc951d9d246d10a1d828b2e34bf6f3637aa3b48b8515bfca8276e4ea4f1e178d98e8ca34a1528c255ea6ab7fed378f9907003bbf06ad866af3f6f6120d332bf4f8ada6a9db2c8bd3d3b60c8cd592e693e982c8fd818fe7cf397cebf45dd2d4c2ca78ee701d30dfcc5b5f219877e0cb39be2b374edc8d9173f2faee638450c0ed2019510b5aef7fd813f40d9be4be8ad5f2bd86ef45bf88f79f34335ef3c2d5057851136b1a8b9161bae99662503827bb3ed32a9dafd48786baf81384c1721a9146b4c0b51cc69ae2d1e01e06758701684e4740f88bc3ad863cdde7e615edb84c557b60d74a9017eea0ba657353e0112fab0feab1762469b0c964a018634b977ae93f32b9f5adc9910c5bd78f27278530dbb7f8ea8a6f3e316bf765846ea70931de8bf55b35cbbfeef7f427ddef7266fd9fe18167ff531e80ce1239a40e1c0260f8e6a42bfa5802392e6962ec75dfe610d57d09d0d8033d2936b005278d5450d8df76b91c83fe7c7bdb69f92167644d13b3229cf8bfbff7b6c3cdcccd7f41ef0be4de7539a36984f58a7941e1f3c6e3a98517a8ab9ea7d8310896da6005d97d641ee95d86a3b5c00add867da2b8bd226fb5412f82b4dd93dd4780e55aad0bd24b6f304a4d9f1dcc0d8c5290ec97749f4e0988930eaa11ded82f2f4c4a5bdc15e0269fc34341d372eb51929bbe8f74ef521a6dd85765d8b0b4e67a79bffafbfd117e40a19c68be4afbf92a26fbc7ba39489e5157dbde8314eff63c7a5015fba9a27b69cf6b34f02258ae28f3b5cb4ace0bb3f562f8c5b450f1938998c86c3fe8b0582142042ede77e00af2ca085feeaa91e404a7823d9af9c0a41f76fc324b7fdb7f27d5c0ce1feb2d3870b2fa78ebb7fe4fdd7a53cbef23991fdffb886e3e3544ef842ae70ba3867eaa65d1f0b96acc7ba11a6b5f18567f2154c9ad9b8b35d8d0e6998954fab07cba3c7f713ac5dbb5ed75e6371a756d3f9e4d318fe6105afe379b62f9209ba2d072fe683a05797ffe6bf329c41543ecd09411ad3e092535b8efa8b8a5410294166ebdfca8adc8c2f023be9a5488139c8a54d21f6d41fc1127b76e4a5d9e704afefd0de4ec5f9c3bca9c7e89769d2652f645727bf5478fe296c366804aae7dcf6335385bffaab416ce37fe730ee7ef28b22379899ba8d548f67635d9d54ea099d5110da2a85ea7b2d753f43b48ba17e50f03031d3370282159a8769853287d409318159516380b652a94b2506f9ef2c4b1dacbb215011d49ef43e476082651b40d5a67e1aa41fa9ede2e4971e9fab38a14b3913f9e6f09e9079fd59b980ff5fd72135f9faae473ddd5b68e1edf49791df3c3061658038d7bdcbb3179721ed1ba221b2ce6972b1c706cc96eac0302d6d3bd0249e6b4ff5862678d3e996d7de0b723fd95a77d5f43868b3059eecff3beb80e7dcbb3dd7c5566e7a725b14a9ce929f1e82cb6d572ff2da4773a21fcf801f1478ac9e9bfe57cf8731811d92fa3693125aea54c686b49df8c3c8450c3c5d239122a5f336c54a1cc22130d6dd94932c28a84786f7a749d951fc2e2d5adea0c241978f868ce5f1083da01ac2359dd1b028f9bbe6d3f71390bd0cf3deb69b81e7accdd937152e9b7735d39c5555433e77bcc4649856ce0509a4cecfc377ff17aa0c3c14833d6a754eb196b7b20b31e106fab168271c87324cd78ae0060749b978fb67919b779495ef6ddec25593eaa917cb37ebcde662bc9f29da08b06f3e636aff36d5eaedb2ce35cd1803c4c0193f5381b26c97b331ee107ac09de1ae56453d749e4effd5deefbdce1f9695cc864d092ee92de10b1e7fd560e7eb332549865492f4adf929e79ba6de62bbdff21d3b19434311d170822fe654746fe2a37c4e00b5d85036a76f1bf0f9a7c54dd5fdc8dc5d1091c82ad43a0e5dbea79480c50e078817e6a52cd328bd1471acc74b899422815de3c7093d67439f1b2a2d4919879c185f5c80b2ae29ce062b43eea555532031fb15e6568d5666ca595896d674f4b88978c61989a762a5657b392e975fa3d2e0cf755a1a8c6f9b5eaefef17d538de938da73da1c97addf1604e667a5df7ca3b576ab1b3215f0f587719a776608a7182fdd73be15b73708fb8806c177ce575c71506e21c38452df8a4091566f8224b2bdfd674630604da0f253d6bc2a79404bafde72e099574e2c910a5ce5e223212d6a6cc140c80f8aec8cd6e1a099aa61570ca1f906aa4a43cb7741ed38ccaa8d2ff07fb2227488374424fbfc107c919c9e9d75b4ec80f6be75edc632faaa93e392d7fbc72ee4fbb299febe6f674efd5fc76d9dcbf991bf3c52ecf9642dd9e73b7a671d3aceef76a60f9d9a1f42da7e4a151b2974ea6bfb127722e57b6961e7d44950c857f1d90f7d4419875f9af7140e61b2cb6b6f46ddf634f9f598a8ff73b416dc1d99ae73f6c585ee2db9cb1fb5704b869a1b61f7092fca56e0a9ec6f283fbfaaf54bb640dd5ff66b966b77d7c53acfd77192b9e56f76fc6c45f628a1cff664cfcb7654c901cf91f93337127546a49bf3e4f96f814d8f0707a1cfa149971ecaecdf7c57cb8df06597fa350083b102112beadb7ebf49d58c815b42eac0c7424b17c2fa83b56602b0a857560f1e23c4873aafc0abbf535d01e64826e311fcd3d999422eb898315e7b0f60a43b0954a63c133ed7395297083bb37e00d9661253df8618d64a1b2f3371c90b8bbc5f8074941c647c1a742235fd28dbf997cc956df76ea6e3ee7541162919873fa2a2af588d9da7e2319d6214af61a71050cf574d6e0dc4d8d69fcf527522483dbe326d6c1e3fa68ad315d9f25fd64920f2b9ee6f4f7efc5d426a7f65b8d9ee70647f505faf75aea6fdda43b59e0f3c3961ef273023bdd34f05b79e98953ac588f73cabf9752dfecd2f68fe3a2bfeb85d493f59598ec7718899ba8e9436c12582947562ae98ae4a3686aa874365c7c704f064d3d24b550319daacdaa51b7657bb799e56fc9329aa4727591b245381b83503d50f9534e07556885dcbe9a425451724e564d40f942c2497f6f2c92d3de02ab5d66e77c7644974a4e60a6c64b52f2f0cb68f6e311f82dc12dc15e760b68a5022d3d6475e4ab9982fc9d91bf73fa6db61838949e3892ede3921e7308e84c980fc50e01ca50f661283b0ee598e0362cbf204550224bb1e8ed485379dc72f7149e1d498e81ec246930cbf8dabb8714a8f029a93b9334dc0811240e0220698e06ead997165961d9d814b3628bcd987d8c8a2e3eb16c3e21b7d6ec4034db0e3dddd91aabc8eea55eb94f4441f445eeaf89a150c662a0e83d5274b0998e09d1cead3635ecec54a9cdfeb650e6cc17f27725bee55fe2fb3ef11d7f33da5b22edfd657eb8d77e89ef4482ccc155d335c4e8deb1bd3a20a512ec1b2ef99e268e1ca129715b6bd9a8c892e2a8e34fe4a75a7009888d84ba30e50934fec16a8e4f1528d54a631abb195a937b3fec59f3e799fd21e0152451201327f673a75de695d3a7e0ca1c90f91d9949daffea7479a4080a0bae3956f7df6d32e9f6a66ddab3739ad7d2cf5057500880f0d9962cdf4a8a1d37f9e6e2c812d1bccd47f4aa432ac7c50686981cd4eccedf58b1b3e6108a1e82e3d88eba48efb4af87f54eb64fd6deb7126ff7759867fd77ff3df5afb2dcfb37f84ffc14d66365b3c6d74ce25ed5ab654924ab365c440f37e5cba2d1733e8cc59fc9635b71d543b57474005e699e7f88005fa569d90c677b016111fbcbb42dbe631ef4e176ed1a7b5a1f47b6c2c0e42e02997cf52da0c5cf2254ae0c36b0df6396316df5a05c0f500a8bda0697cc6eb5e8432d65ddc922239a70c3f556bc588dc37834d4738f4c734c9914ce044e99b492e1556e79f4b9c35af5f402fd76750ebd386f17db1e9ddef9e36d79e2700e91885a98f138057524d43fe371864eaa0391cb6f3934fa99da45cc459e55f620ff489e2c19cd8ca2dfdd7994769ace8a221763ddfec8c5fa8602c5fb374c01dcbfd27d7de30b4d155f3c1013240c558059794670e160f36f6905480daa6cf6a83939b4a85d3f03480c2e924903e47091847e25d1a875182f114758380c582d2ca7301a52c08914c9198e25d6fb65f7410b82a07cc02eff171e2484dfa643d2f3960982c2d4c47ae9a0e21c317b816f02f5c5c42097ccba23695bf08348ce833c8b898611162fca882ccc972090fc3be348dd01fe62337a9927e3c0ee14e0ef55fe8b31ca30cac30394fafc80cfba78cd453c3dbb0ba3bb7776595c74f3d527a7f0ac0965b9b8bcee75deb2a1ef073543db75508b6e177e5c31b94c046dd58787b7f507732b6e0c3ad9fa60d185853870e96fb42b6b89f455a3c9c20330697188822e5907c50db0f01b49af6e7960b2685ccc5ee27cda301ffdacdee69682b7b9bb2927f758a929b776ff58f98ef9c50d39a240e859dde8d8f5824b0994e862c362cb1e2bcf29c49ac61b87e09223be26519f9f9d9deab619eb3715c519e6089f2166536126769d8c1401246fe4ae3b4f988221835d26700ea436194236eebaa6f8a8c4a02180c2634d0688083e1eae0c05216e0ded8653de82402af27f7d5e82dba354639445a69b0dcd968150f76179210a6551a253f4667350f18c1595055674d05c3472e36328de2ba5937bb20c57fe3a60549b7cc18cac435890b303dd28a5c4ab72d801b5c34e6b78443ff6062c2e9b20ae00005dc3c8e433968d00cd92c3c2a330ba906a33d2845533c71ea88825cda3abc32e8f9d0995df77a77ec402b3db54afd9809696420ae6470b0447050e888e04cb0b7f1bde85f9c9c8f2bbfbb4a7f9354322228474b2cb49b8614a33e77691bc33023f531f7a72474916e2329e55be03482f5b94f40cb8bed172dcee0de550a82aac826875396472c724517b25877af4e7c04790439641bd2dcf82a9ef86eed6155d495f1035ecfbcde52359235bb18ee26eb988aee9c6e6d016cbad860b60f6b5efebb2c392e2def3ce12ab65d059904ecb2e8015e8153c82b60bd9d774f829e37a51a0f2dc77fc3408fb668c71184cfe48da1f2856b06aeccbbd1821d2ec1e287f9a2788a945c4d45284a00d21a83ec4cbbd163887a1e6c4f985229dff7c32a0cb0f17f9b16441a8833bc4fb49bf44388bf0aca6e02baf29faca6b8abe72d04f50e9427de580b0009e9139ecf0ec5c2f8067d4b3a4c287aecbd075f1aeb9041780a2cd7d1ecdd6b729896c2825b64148ac414680c45a90399b597af22e15ed95b6d85b9514af8b33ba54e8899eae492b4bf1ad08e0fc21eb42d484c94b6067214dcd28a25ebb78d3517bdbc80feb6b654107a6804b192e46602bb0f0fa18a0dd04e8fb82b5142ed8f052b7264138bd453d429cbc9dd3af70dddb70a2ad379b2b72db365f79c24639ae2de74a4cd672a859023b9d67dadb82223d8df91d3d39648d8202c732945ab84d15e59bea64eb7a547bd2e97ce9d8b62b1798a242b0b58862082975d1bab63a8a5979beab061ca905f101b94da39270333d7efea567c3370d9ce8cdc08a541912c27e166725b456db920292f5f98193054c8ca5c5357782e6c7fdad530ecb325b7f97fb48093270f618e725bc5d02ac3de230678e8a256a0995e528334d4b98a0572d51a396b04daf211b8ed7b2a6414b94a8250a524cb7c7fc2f7bd8d3c445423b6046d0c046c595c01599669de1b6a55f61c4772461327ff083c5dbaa1125ebcbf54fd1135fd11492c3dc7db901bfb8d6a97d50439e5188225c2d2a022fb22d6125e304232a24d927d201abc86771d261d281db94177732e63eb2f0852fa836907e315a46bedcf845058cf8b8f14c9a3db9e42fd1d9b088d3d297adf2b7edba6a537695b1bc58b68807ffc732f30010ff8c182eb01b3331ec5689e96f43f35f10c523f07fbfebb69b5d526c91c5e5eed562d585e8df688c5a4c55a5d2ce12ebeb54eae856b010673739d9127cd8496008fa1b529b5afbe38b29390cb5b9681e60989b741c3b208fe761a25d525f99afc62389ade0b2c8aaf932f475be0c8119fe707982d372d8ac23a59e0d567b1b363c40558df757dcc9c3fa1992e10cea5f366e66fee699b6550dc77d9e9f7635351c207d0c894afa5eec06a568dccd34e294602c8d59107f76503706f992be79d005e3252585784949215e02e84a0cac102f09d46aaa6d471ca70b78ce8162bb74c261c9819cd748ce4ebe945bbab1eb4a5c30e730766f1b4aec9e0bd067bba82275f33370ca4edcab66520abfed91dfaa91e8708b370fb8f0807482345bb2bca571826e5bbac4f1910baa929f300cf3b4596f7c9f60f335ae2e32775e6870c592fc5c783eec91cbf24d83a3b34cd41280ee3607e2cf95c9c746d716f94bf064a96bb28c001ed0f99b0eb47a6e35e82c72806c07e2c44d3a965fd0a54f2a53ce370fed485ea0feac53cec6d0364a923a019ba5111ec055b8572b78ed50351cf08e4e3e1ecb09afe85cc766245960416771965132d9aeb8d707ab6bdbbb5de4b52647389dfa4e5239ecf058369abc9ff27461df4c395c706dc5ad1feaec10ca5c6c9f37ff66e11336dd011d258f959642f612a67e1075e01e936ad57cd462cc8fa0b1e8aa2d096e606dced5856f3fe366a9127c1adc6834e59a66a565c5b23c828cd84d3aad287ab84d0ba7ed2bc8a9c16e61ffdbee4d3ba800d9256a50bd2674efd9318aa7a2033dffbde7d19f97c1da6b091c7641d2ade0d6feed0e3bf62f3643a816f5ec29d6c1f1750dfea145f36a3433fe8cba5006e10a935d3d377db423c03737380307487320bc30134578fb368198da9afade1cf43094aeb208636979c7069b19af0a7e82f5fc1ef8a911675830634d5f2b6b8b26644113d21eaa091980c7926ea0527010d4744d07ab019feef10b2a5e50c174563e81a12d61220293d5d55a832f8178a924b4f8357c9c30986c2a6149c395c5052822bf69f2a37c5096e0ab159688238fd79bff89d1c46b6e224fcccf538cb833a97c6c7ed28c4c0b7c71c55e9a9f97b8991b66d9a53f5dadd79c36ffae5cf19335f7f7d742649fc8891c57248ca45c98f72f3328a2c5d08caf8cfff3ddf4c58225bef2a576fcee617d9f621ee279fbd5c4f5842c425e6d07ffc2f9c398f12c8a1885809fba763f988f0fdc5ea6700fd48e872ba4db0aeb9b009683d9c96baa8f17bb968a8a789414164693851d0e8cdb3d272a5ff904db11414f076edb5eecd59a5ce3dd14a859a49ba3a4c1e53c66921656b756ec281e1ffcc9f19c640fe329375e913f2990de1639bf999b5fb1af59fc775b40647720fb6e03fbae817dc7b547fcb41874b054a7a6385572d9875a406bf27c4d3ddfe1b734df33f481fcfc826309d8064888971e6802a6b3acd735b8f26c6d6aa61835b5290661f62429652c7e2efc3e970e0a45f9a89cac76d902b743fd440f2c2fd5365fd3773e65afb38ba3bee4ae57b86790453f36bcd336796378037c31e914b2fe7e9770f839fc1184418ec220b07b49173377924b6e0b2d2bbf18cb6fc8f2fcfbdbea5ae777d72d30f8b906bcb945012040d6d85f985598fd780f38e1e664dc9c29aafa19f0b798198d7375874255af3ad1ee39af2967b5d5d66d7a0ee2054c9ca6edd32eb6974ced3b36bd44fccb3dd7b0ae944706ebba0eebba0e44bd46a2dea286eb51c3f58857f563660738eea8a41484aefbd07507ba5ca1390a1d89e7cd48803f73d00d2d9e556e3f34e55cd0fdbc8508ce35a0431618d05373b44bcb9cc5f9a4dcb420bd75f33482b11bf6748d7bba0ebcb322efaca360eb51b0a9e5aca8471eb364b1876a86b514e2db0a887523e53183167bd8e5c70b52d47665630f5cf9a5f225f078b64f96f5d4785f7a571f85eb2d494a30e2b15c754d53c81e9be08c901c04069fe92a4e5eacd60bd017c7454b1a2c19427111488b1feee01cb8e25bc44d64dc865dbe91a56ee105a28d553a6167ed292364eff50bc92db43305c58e917120a004ef65c05aa5aa75a03eee2d123867c61c578dbc258d6dc00b8a716899549f5dee4959c53d726e8b9f04cc550992acef360e622df0052d3a56b936c7fe926e8e9a0a737570e567a372ead227416790210047074bf76f0c809df3c4e3ae997b42473b09dbf3b540a6db16975e2363f642eb61d43a26a68d0d863da606e90fee46288c65f9ee8e1d4cd17846b8a2f5db5b7b8933966ea8d9d3e829c626dd2a95708137e540339de53c4e71a7da39b9b521e5292d0f617376b457f909a53f78f1ce2a361a040f6b1d78aab8d83e678b79e00b620ae90ea31c63ed83cc12c67c8b14f85bdc359893475b9a4bbd227d6d661df6a16359fde29c5cd68b29bf48db8b08d4c5f420f97d9a51c32acba057318c57d502560f05f728b733d865d6c316c4287769947073e28e50912e29ecb304f14c3cdbd1043d8ac125eb52c879db072956e3e30c035dd14d6517fd81b53f8eb2e118010988c248f1d8c8020b9765e18490e5b47be5093ae51287982f89548b2f957801e2d9443ef1ad7a43c7551d2b87360c8664b08eb505b865c6de277629b223bac972243782ecb79742dcd73541e4f7a055e017b7e561c40623dcc426fcb580c78dc62bef5f160da0c622842f75aa89223a58a17b841fa16835b16dd417795c36ca4f729c49720546cd5b5e6d97167570b84422da0d8b9e3f5e744829e5ab2e95d76bf8e612580a23660acdb3ade3a0bd1fd7a7c5c71f39790555bbc5fd147fa5e4030ae0dbe107023768b38e912016f936a74bead9d9c818c432ba6f0c95fc9060ad57c92b6a268a5ea256ad7a794dde9c05667a144013596c392f5017629dedf85c3a8b3327afe995e91209e67fae3912b9a0abd8102aabdc37436fa231b0ca0f09876f710187943d40c55c76cf9f4627e76d9cbc9c347053fb80be856c864bd909edefb994d7a9e79ee6b77c757efaf25df704754afa8e47c7033e911b23828da39c19d939bd749c708ed6e572aed3f5762ce94f06089ef30743f88094e59a46ef61c380a7a4b3b81e8a4b6945f60621d1837fa3a6897f639f47cafec230b36dd292ae8e45057ec7d5fc71c3b5e8ff25f1dc9fbf347fc8b717cc1fa59bacd8d402120720d73cb076b945b2fe14e7132f806e03926d03926def21d9650adff4e25ccdd20367002259b2e5345ab324b5eb96d1f65bc00a223ff36efb22d063516bcf20215b75277bd0e0d3e5b620b3268f5768693ec7f51ee73456425b7f9cd24c5efbce1d6ae7b26cf4c7faf6269fcf7b9211a1d2fb1f40d49aae10d5c9d233c932c6afcc7830949a4d80d13eb038580055014a7813a52e73941acf6829e3408582194a85213fc0540683cbf65aecc561fe9d4499add617e0427f138d2c3d7d3300735b5b4368e867136f3e85130abd7d4c3edc21600481991f071464c27c631abb2c2d278e571c2c49a402eda908d8c91c4a5cd55e2030fea816e875fc115dd9b097cb6f820f077e4382e0f4b02f0d7f4386a2459f50407d4c0e3711c39cc2d1a296e2d1a296e2d1a296c2d122d807886c297ff7146a2df4146a2d74dc241388ab21eb740567fc05d73b7251ee11a8dbe8ae5c91aa90053cbe532bb1443de41900527f410b316d424dd8d5a41c1b92a7a9e5ae1a68b86bd2b28186c84d058869ee196aa4a4e1f6aaf3cb7cc0cead239e89b59eda6560b37bbf4855e99d585cf102434ae79790d756f1f9e830f4c5aae3c06291a575ec6505333ceede2571e635fc3cdd68907552f6f47cfb564fbfaee90147ba240bdc9093625901feaabda4d68d1c362acc0cb7e368c7cf8c43a6ec84bc812d157dcefcbc8071d526cfad02d995e8929720cb17f2a96104794af73e82292be96278e99def90063b014e47921e01e195c3bb4a5c596b0127832e19352586db3ac4328701c53c6669d902a166b7e8cfbbae1065beed4e0e0c6105e25b6aa5fcc2a21f5c815796acb1ee65786b75d573c25b50fb28ff9c6a20da355857d22b1f6a114633a1c8e6d96c947cc9221dc9292eb1a5c06d7b7ba01a7af9fd9c04b70d5b6e92c1395a6f2cf9f58a2d33ba6a0e54d87d9e49d4a3eaef2942ec8e10bba70162b708b1cd495883079195b16c06b744ceac7b50f1293c7b3a8d3f345d235ea9035ea9d8744b772134c27939c598495046f176b2d77a76b8edcc80c73ad7dded2228dbade6e59dbf8a4d79acb71a4f95bd695d1c945d363c68dd291c40d105b6faea92f43e85bcfd4b16bf952c4afea7d10581f9f55fb2f87d64c106d43f8d2e4ebdb77fba77c1328555fbbb57015457e1cae841c343ae47cfdfb8178fdc99e70cb186015f9b60a7fc19d16e6938eb4cb172c03d95cfc01fd834fbb028c157e5352dd301de899ad3907fbbf2616df39fd5843773cbab5d1e9a8b825a6f0982c3126f97ce058f714181f39566b95f4eb97a040439f230eb53e3105906276b9d03f43e3fd1e5dbfa8619041461b2c8bc380ad8999a51d014613372aca7bb3a532d8593157c866217f3ab48a3e1f60c5a06704f508518ea307969bb6ac0571ae8b079142e0148c9ef371c931e60758b664f90ea51c1a6a1983bd6ca22d7ac150f3bd22f28906d674b8e6ad11b22959375363812c6f131dbfeba27bc92496af154c6c3302ef07dc976e062a7904941e5ffbae5ea613eaa75d3921de5bfecc6a20ccf5d6c32d38a31bbb2d5b01b7ce1318d2c41de0bbde57677b99088547ff033de3c2a3bfb6e7493e7032dde2ad1c8ac13595fb9702ee10d76219572c17130b1b220f405f4ec150e154402378ac1e28c22d7c79d7302e114393b65732a982e415392249da562186a7d3d8cfcfe30280312e8986827ef3e0e1250c7641c265dbb8c2a1eb4dad8d933f80f7ce45228c69bb04c379a0ca9084a7b0c6d1c8179ba784c59c8e7a441386de36c5093f8b99f739f17551ff45d56e2b3d19fc247925aa819ca303abf5cb173706039e7aeef302e336ad3c55eb64867d60b15d90b7acc8b2084291ec5b6ab5a95d1868b8d833532799f58571d6cc715e80d56a0c90ad4f75760b51558409aa9429ba5671a5c5018a3810143a39314db64f23a8fcf4aba48d19bd3f2510d4b0c55360232c1b10293dca5b487019bf8d20163e8d51d328acb8292fc6fa875f855eb288249daa39242e87be7c5ad6a42ece97287cc2e44755831953a920b6711ac23fa583a5e7d4af2a04a4605f5bd1bbc381bd841a1327a6518ad94b3a5e1febed329ba013972f58f06ca24cb17ca299b1eb7e7f1acb21ea609777dbfc314038cdbac520fffa2865fc87a2b661a22e8bd5c5f69dea0828226cb687894a2ce3b20f0cb85a8cae394eb254b8997172c3671dd5582811d14932dadce129572b3638e49dc984e40abc82c23b045b24ee1c74233f7578b3a95d94d911d77da1cc59ecac0258b1c1df39aed087518b0f404068efa8f3368b58988eb46eff9b3f696aa71295d485bea311dcf7359f6254abbf00b1b839cea20f7b6b2d8aa644c761f71f091863cc58d2595edb4defc2a84a2bd2fbce73b886ae15fdd49d28ef1e4d162dacc72f587bb8b3ba618f2e29589f0cee9a3a8f5d385575839db9752f5d02b5fa51c217aeca0420742da6f360f66f15765fa91bc16e65d78966ed2de619452daff715c75b89afb2fbb1eb9c47edbd06f4b3143b4a59021da53c8105d52c8105d52c81005dfd89b377285aec15744ce1e74165d9c3d6022af20bbb798335382c839ecd3ce539320a55bf0269238fe270ca9c967dcc5f9170191151582c232075d59f598bed20758a92f48c04f53956c0906bf9fe7a399cb6c4c13d87c0c314d802e5e3cd22cf180ce11f6594600235610118b5299fb693235046e9ab58520a69dc0d2537452646f49c365aae733bf4fe74896081417596d38f2acd90dd4d93a6c61d1214e6c57b2f61a73193b53966ec22e0d5c4a44f839cb2d380004bae7140b78553c6faab9097afc2b54b3f733b3ea7e1b6d674e472ce3aad661193da85e5faf87483ebda97198bdafb89daa9bdda223115abef79be6b2f2029bf4ebc1228af537f9277cfea829a2d30cd3da20c3f4fc1c04b6ca3ab08c37037d04f5aa3a3d036a97f32de0e0f16b79b5a68a97e89e7a784a579b692cb30f5175b8aa8a29c0e0962e1bf5e23fc823842330a0b7ca1dc98f2e9effa77513192f60def695219e411dc52587f1ddb907804ba8fc162b90a448651585a723e265de10aa497d5168887c63b9ddb4232fd4a60bc17ef59d47a7bfe082a1383a026dbcf7e6e3dc1254a7882e3eaeefbd8f46c7d4c0d7c34eabf081ac2c124741938bb3e359b1bde5fd9bec2698468c7f77c4929a4cb71d21c54d129a03ebb199b2aec815173265aeb87822175f891501aa1a144efbc78048ed1e422abfae18da17cc8591ad871cb62e20fef220fde2cd0335e1b9ef7b71673d90be5ed325457eb1084749bfc64b29de13c150339564f0a2ca2988b59c7e0d17864d8f9fb408e25a8a2e95862e157df8db6e0c43978a3c6633d31eaa4b45e88bc7d5d323d86c294416738ae13dc426df2ea7af8bb504597ec0c2af217f086af6ca89a155179db85a135f47aca476a482a5a839c78438e5e5d1b05bdd46c8b1ee59c234a596de38c75422219581900a125219092947428a1b78b3bb7c1eef069d2d32554fb5a7fa4c87530e2ccf9f9d07bf33d0684e7f615e76887e2f43d70b52f82a13de9c6ce18c96cfca3f5a8867138871a44b45be1ace10b4926286dd2a6c504cfded40c8ac8c812e0a42cfd25c3513619f7a10965feeb8b3b1145467d92e03b8cb2aa44a6ea42c4093516d310231ec99c18994c5903d976770e1b8aaffe96ce7c18f4617d0165fe815a1730bcefbe34d9617cd9e836ce9b3ed34f7031817d99351ad1b5d8fd90e4e27beb82d8ddd09d3c61a19c1ca544a9703673ec65e474f83ff2659e2a68ce160b2ac09b02a888e7dbcc9739721fb37d585b5b266bc501986adb6624e70c5b232b81c940335d56022e40acc38b3aab59a5c407b5125599cf7d2fdf365ad264d3edfa5b4b790d94ab50a6e78876bf095490f4c8eeadd7ebaf28c3c9198e02e46e69e2e97c0781d9f28fd27d7d8eea6004793b34ef0df47a51fe9956b21dabbda8f54e8f37e0917696c79295df82a931db4674b1a7198e8ff4fd8bf2a66b776e79747bd1482432060b62cd2629f0ce64eef7494c0fdadce5fef62796f173f1c6e378836d2f000586c20c78484c10576e975611ca7e7aba464a5c472fec24cf360182cd1301000c23d919aba87fa7f298c9ac0a49cd01418eebb6fc3ee4b142ddbca8e77b25738118db0877ebe1bce216f55930852728086c665bc2d3e622681024fb2fb827bb868dba475edbc07f12aa7a6b56fb427b6c0a27a87faa71c4a92b17ecea058e5c3d08d28b2e93eac69700ce0687132c39673997d727a04651d718a10a71f935376de11020ca7ef925671d061ac066e4413205d1deea197ce10d7f04dc7006bda05d604b4b0e85a5d52861d9f598e476b033ca2cf0b60ba2c5f184a59c79509a7c6d48395dfc239311ddab495976c3b1ea4acf25c776e7767f59282ab7bf990783f0409992df41b563d0de203d667ca5b7708a1d63b8470a3d6cce6eac96ee4a38dac337130acb0363cd56ac23e73565d44cbb723a8c0a1743b1e2bfe7b9fa8fa1beab1f598024209618e19c16bd20cfdca7e19801b7ff36d9878e98471d7f4860fc24031c36851a85bf0ea6911796f1ccbc833271e20c68e34247cec20208ec10580f97ac785610208882ec16e794a2668827fe018c554be3318069676fa10d775f3b496416ccb8486b6fad073bb1310c720950e17945e49d193459e60ca920d5081ed5013da0e5f29fe4f2ecbe30a7e044b4cd9ea33dc228bcc5b6297cb3a509992f4643e30e1613c065e9e7c2c5fc42e7abb848d43e24fd5d9a7e13444e9ea8f7719b4bfb0cb3cff4b114c7f895f94c4ff387e994b28152b6371a2414582927b3b75892a8f1d0054f2886266918d9c3eca739295eba34de3486b4bb797f63d2c2a09d57a91141f0f95dff9de6a3e65121fee086ea37e5923bcfcc214881638ecdbe52f9d959cd1d9e3cc9638b33accace2cc96295b1de03f5c2e8c2bd0fbedb22c2d3d1dfcded398487509bb0d795130216d5f6301b8b1d5e4424ba33bba7917562aefceed9ae5a8956cf8ae6bec11496d018e47886eff432504bcfade171bb7230932ce478ff737a5c567a41a52136b0a59914b0a59912585acc832d0b901a0e834bcf11105e3ebced2249996155f0fa9b273529203aa48de96d402789a624b59dc27ba7e2d745eae8ef3731d4d1b8597e99c57b5903b51319fe593c624995682df8fcfadd475c575ab17b552a07b3bec6b49d77a8cdbd3f3e81b85898ed4d1af5de37c6bb99baf8e77b80400644b4e96cc94c544abe56efce81f23a8b4ea9e5963ae13f2b04db8ab2b2bc32d01d41bad8c1ec4494d56d8cdfc9cf445d2cc29d9754bad34e923f94bf2b6b908c6f289be795ef75a8f1c508fa70292e422ab4c5d1d78133d2874c41b042bbf4fd2e86ec424400f6b7bfb74b8a4883a0c967c38070e369c6510be2aca294758ff556e763695bb68c8cdf12691cb963c43be8b610747ab2d6ccd69bfe7b2ee0ae97ca6742cc6eb7b536120998bf42e3c7d3de15bc1f3d0b14a2a921b91aa95b612a5de8c8f29e793f3a95e12322a073dae0f7bba0d54d81d7cfbe9feb6f9aeb5f003d6c7d5699096a2b97894ebab8bd9a6b06f0aad36609b43b75d36a9826d2be74f60cb44b3db7ec190579fc326e05c7314059f03b8ae42da94f02a3f8145124be11897a50762c555ea916442fd032d02a5f2cdc4071ce61919c69d115d41c3e4baef1b32c0848ff5221a07f2a39e08db6d51e74d5a1e648489ad3d7c54ce9832d35bf4b48020ce09d2cee24d402b7767156d8bb47d8c124a73a2417c716ee901c2b479c72e9f4420c96d1abb4fce82a26b8282066f6d6a7545ab5b930df9f14d739a654e5fa8336480107da299843f36b465063d2555cd4a1a2eac3351a38f576f0f24d5a166b6f2ab7844c1c6973ba50e27353e88815aca0e816afafa3964e3d7b1841a17fd3817cfda543f8a412e5db3c1a156f674c161fe9b1d161ebf88b0b946d86c3e09f1fff2e31fbabff2a9c2524913cfccc4000b26a2c2f0c19a020a1b6a282a4e4f374939ba98e6309416cd1d7303a9a9872d7dcbfa512d1e8e0b1cc2d95e7a3a5c36656062e7add4f3005a668699023484f8b15da7358d19c474783fa5184e8453331b0062daae28fc217ce569f05d7748d5f8d2008af34180258af86caa60bb8000fb35cdd4bd122eadba292ad1703b2ef42e78714d7a26a227c8e45f53accbb3a86e2a70491acb955d456c7199abf624ae6449f1dc30312aa059d13ad2da39bd062e9e2d41d966866144bab859478f4d546883555fc75644ec9374585db993c604d571be20c758d5225c9092ca825091dc865c54e542520a2d96ecb4e9d467870e7411dfa440168f00aa5e9dc30800201e7c88751ac28bcf99fd9ba2bfa176d4f22557dbcc553158da70b0a1b7287640ccfd742db65037ed876ab1c5d2c4397da5169b88ebe34185cc6b26dfab904931b6a7026febaccbf4ebae34db448384bb34d2d75ded3fe10f6b9184f24042a1df8b63dc5c65e6f57c48aa5e45c258d8a6e0b247929913485d4357020076fdcca7b273fa352b419c15f2a56f79adf36594355def9e47aff0f7ddcc11e52c751c82c5c42e24fd3645f2c1f5fdbf5ebaac8aba6e85cb5f5eeaf1569eb400c9dfb960dbb76f1b57aded3047be1d18c226ccbaf1021e85a931926bc71c6b1ac25458c44fa31cebbdd827805ed07f808504ef7672bff04c1e77d203f15b9469f63eba83d7b845579eace9cd6b08dacdb6dbbeadefb44916acde20301c2a0804d88e0b63d419193fd86d763b47e0a4a87403782af9851a7fdc9f52dedd2071b9efee8f58f417a02dedaad60bdfe50b6f4213664d41c2465795cb557c0abeb0e238af7736c4740ddbb590b200da31ff567af3baf2371447bfae2321ec7d4a6f571a8e12f42d1abe49b78834fc42883e8984ba3c1031aad99626786414eea3da8e2a675054b08fd0c4fe28dacf0fec1848dfd2cb57557559c3c5d115e86e4fe3c1f1df6bee0fae5fb9c0959a2620eb53aa692f644eed7f3bedbebdc666252af76f953bb2644240e85c90d46b83b1959b45a0a9094febbd9360481e77b13b63cf86ceb20f722b89798dce56b3345ab9ce995906e7e87bc76dcaf0e32a8352f1bac5e8b954bb804819d7ad74674a52f78046ee24f621f558e5320ddbd12d742fb9356aa945079d3bdb2b7806206c8057e882265b8729a8f3dfa7b0dba0e314d04b32cc02aa8549852374341201258e3063012437cf1600701e385a377f6733e95830fc0fbbbae120795656cf98da05cf138d743b80fe8aaa692394b6c03be65823cf96ceac4bc0465e20f65e8746c14dc69302079728f106a14d82d3c93db475b06277ff2cffb4b757f4b5562dc0ec5e487d99dada9355656cec0fccb0a5e4566b8a098443d969b0eab2ec4ce9d2fe02b50525e7d7b64e2d648fe6542e9aece195e3dc10bf688724c4e6fbc52772565fcaf3a7f4459eacfda17d2aa1590f155c64247174c70f0e73286db13b324bcfd34e69ffb630336da402ddf24c83f3948f047b4843fda546795cc4d6c9951c8aba97534a7c315d4ac26cb3e949abd3e92d81b8439fcef887e0a232e45fbbb60181563da745e3553f239a86823033b9f42d875590cdf42a25fd52b4a3eb2a18474964647341711e995e99fd240690931703234e63e2766528058879e2049177e38e8c59fb9b5b00344c358d81db48f2561f3dd546829bd7295a8084ae930ba26750cf2a1374bd358acb10b8a84ec7aa985cdc73415a27a9bf2fa3c6826261763c6f4235dca8691c90b2ddc9eacfa4ed055fdde0ec3f583d61350d22f024e740c4395993458fe98a593db030bc209b2ed7d0eafa9140a17fe42341648add920a735ac6d989be29f6d316289e4b3d9db4bb1969262de3cd20b707902ba171c9215a94119bd86ddc6651ddaacab9a998202eb6d0bf0c11d85a6a6f3352868f24c54cd777f95678ef14476d73f2387f0b9b74c86778bb8086676da8ff921e171172f6850a19ad1be71741cb8449431564e813396460792eada1f443cd0a09afb256431db462b05c17f5d4461a13e22f567e0d48c85878918912cee7560599d4e64e8aac3ceb546700d413b624da77d84b8d2581a508e9898e22e8d85b3cd962113e532a0e14a8e4bd1593ab5508517faf280460e29a4046f1db08c0b5ee2e5debea9bbf771cdaaa38c8582c1cd2f2e151edb8a5ce902bedbd74c2d227169f14cb84e48b567c56b96bdbe1e124fa3a4405831a089970a4cd41ccad096a0ccb0f42dfbab92af9725146b3aeb700c07942b88e79b27237a7dbe2aa756f7d7958314d64d361c365373a72cb49b1dbb57b82c86d7e3d7795ce2a6d631f50b279bc5110b0cb6a544c8a30077836863dd2eb3419d3444bfac914fb25c14dd0266ddb0ad8c4ae98cc81be575f09babb3750d6aeb456d2afdf7b4ac4a5059e0fa9b57f7b59365c96c9f8cb0f8fb8c611e7e8636b838fad818fe8cfd70a0b5d87c864b1cf7653d6828bbbea7aee613df97e89c30133a225b86e0245ef2e424211d4f993cd951d331a5a5ddbd802d4243b8623b6a457118fc9494bbfe5e57cc1fd6a7a1979505d42288eae4a6059f6c4170057c5d1d5fc8600be8db64484758c088bae56516fca70ea7592c34ac47ddcc9aefbeaea9bc84e2c43222e28395c08b92a65778151340b3e8d104045f1d21da0a186d76db64f8511050dccf099a1de3884b6a6506d751975f432185c6a71b391d174cc0b9667657dc3894e25816389b46ff11e8a6634f917fb48717c47aea1336a957c40d4aa6bb63e6836f2d01ba153b92cf73a49d2f68e9479605f034332acdb1d3058acc1419d0ca87bca6e2d069dcc26934453c68a48faab8c722b69b4f92a36104b2fabdd51929aa301d8d1c7b7801d2df5d2033ed9d378cc9113a8119fac864ff2033e59b5545b46eaa3e60aeea26e09e093014f8c0a67007778ff0b4da91b92d7d0ce308e45a487ae434478a1aaf94b8c1717f1d559f8111e77e7033d863483c7b8962a3470217332578061d415415ef8b5a24e993eed3b60bc4dc6aa86e404e1b5b023c7c7784f12252eb8a1a73f5818e3551d2e7a2ec6ac3cee2af86281de8059d6f4a3873fb50e9317778d906cdc9d1e01c5158f6f3f85d7381d7e0bd30b77196c64c705d0b40fa0698f78ed8878ed088b11f00a308e6407b83264b7a17d344e52cdb3da8e295ea8638d2359e6630a75db962e17a937638ac7128e5b4cc32920610844edb3aeb7516778eadd2013415a99af988b14eea21be000945929dd31a6f958c61aea80220f20233dc00a1a904fb584f05e53f9345465e7852ee3bd52cb6f5c84e5f72e42fec945d08965c8785f927b6ed8c5b80a0750155292e5dba8c349b58cd7fc804818aae8dc48fb67894e47e1cbea8964d2cd0f1794e1d481d5a6f6a2dc0626b735310d12a414a16d5e36951a68e958d0794349218db9a4d896a9a818644310ba4714ba478acaee4065a70f4dd969ca5f52d13895d134d1321de4ff9fbd2fcd8e9ce519ddcab300ff000c18f6bfb17bd10012b65cb89274a7deafcf490fa9b22c213423e0ffae51f9012efccf5995c056257ed9a83cb6221e5b4e8eede2bc9cfae37a748addaeaf288ccc003f73144718e27653e99c62c2b03d6a246359bdba1fc16d175d754f1b13e33637a2f14bfcb6dc0fce719dde5eb0d62006c15cefa6cddbd4ba9537b9b744f46d0acef1f3dddb10bf853ba21488d867d01db6a9ff5a1021cec5be156b90fb93dcee5a6e77291371fb6327c8e857bfddadde7bd3e5aaaecf837ba3571d2d4c649b437c292364a8b459b0119bfc78254d3aec462be884fd80d6a5bea34b3b3c1ef4e30709fea80cdeb7b00d4bed1909b7fe44998ac0854b1d6b7584f5101addb778b0cae3c16a7859eb4e6894adc954210a82bb62a3716f87f44391c7b9fafd28915e56927dfbc736f9419bccb11f81e667bac57826411110b84ec50122b6b4a25b1895b42ababed2cb16e65b6374ddbf0c9b9456db97bb990c5231be6a597b1971fb4f777cdfb42c277ee765236d9da74d74ab5ff40a26d118a7fa4bc6fa93d6eab9f9dd7fcb8c5c3157efd15a62ee346557cc0d27e6c605e6c2a777ac95db1bf3f6dff9968e4ba2f61351e144d4cc9e24828c43845168202ffdcd3ee204274d587cd5e53cd68cb94e315228df5bc9dc66dc7bb727b9164f5d5189eb2b35ab450b2d7022dc50f4a681df337e2ec7b7a73d875ae360156ef618665bf78cd05dd949250261b80bec3ce463472ee483e25fcfed7de7e366773d55563c4879f3b18d3bc377c5deee5fe415c6dc5f93b506cfec6e46444c4e9948d47ca9536b04dd808c41ad6c4697acf13405fb98a31495c8a0eba0f2723d89f02d5f580a837a89ee3f9f6305203b733032df10c9f049c2d3f922e4d851502367fb933176db29df99775a61c3d33e12b37012f75333c05dd1106bac7d752ec87c9005c46b4e78cef342ff6b57679815ae87b7c068976b6278688e083f02bb7d7e2707b4ac4b341f6c312008f61cdec23a86d44638bac58bd01b7fe1359c6b1afa38f74d1ee8727421a475713f5236206f24ca91be46515253463860e99d6fa0e35776ed9b363b0e0871bbada2ea426eba392e2721ea87722975ce1363928a69d5b2a958d9eb47e2643719a4b44b53b20fc59d721e271cf6e94463b555ed7b62007d4ef0520c0019622ddb8bcd3dde0cdafc65d239fcb78ed92e23c1bc7d71d3d545b0b2b45fda0856d24db0c2e7104d0759cced36e96162891d28b26eead0390e5b91249d6e185ddc68e2ba0236524417fb58da76dd96ed6489b07b1a32eeccafdde9b7e027a1e7f606cad778a1a86f26f6743fcb68d8cd9485f4e3e4a872a7dbbeba83c33fec648f79c872ad9867713858bc2536e4b3ab2af2782dee6f65c52dc3b2f918bbf08611b595d1fcc9c148370e44ee76e1d1716a227aca21c599792c8e82c149e18c955d351d91a8a28cac820579164dc97d394e5ad828f79d95307a667bdf3c2dca427c720a6a948b2ce40039d5a54a4c1c669bb65cf86b1273912b8662959e4e00e2bcdd09ee4225c85df1574c3a742d25b77de10c9cee1bfd10c077bbfcad1c13f40583a3d7812cb8c4b29fdf34d4d9f75e1a21c9af8ba6fe8866282edeab15e42a693207d00f7dfbaa414c1c6a8e036e272fae2777cc7b26e37c6c970142902691479abe3ef568aa935efe2a7df9eb349f63390e57d1769e99b89d2eeded57dc5d3e71d013c18f253d792a0f8d75149d40b3e0f7ef6a382d62fcd42af58001b54f95c100e81b4efbcdf831d448429a831c3f4864e80c8010e43bc71f37d94089975c24394636029c70ca281b435e774e6a82df677147d3e77aca1e7bd4941562e402f44ebbfd9ce7726f9978693dbd13deb8eb37c2499ed17c21f4fdc64e66e8afe4283418ef84c5ee8b77c208463078a02e1fc726768cd006d361ca002774817279232aeeb94e1699ec142fc8c2d77a73ac813638cd53b2f37218784d1488c40a50512dd54c6353253c0863ba7c51e2e0a670ec34bf0672b2414f7f4bc63196abe9c406b8e8cc41d211a7938460a915c51a3634f54de4693b659002a954875da5590c335f7e3f7992b8a9453eb7e9453ee5497ac520cddd5b597bd4a4dc4ad29907afbbdd9d69c18604d2298e42296a166f50c6c66b63e3d538b79377e9915cc6b98530b1509f21fd8aca24fd1c2a420f337de6188d9a7b39f8e398153463bf0c3cc73670bd9533f530a13d10b11832303a7aa6c77105665414331069d448d413a7adeb90d366117b867e4a66c77af81f402ab6e4c28e575e0deb58e9b088efc51ae42b709b9dc4c2094587916b6ebdb8c43bbf6807c43e3e41d1c29a7698560efbe0a88019f90574892f272c94feb1150f23570207cdf8bbe9815c4c9e045138379d483ce620afedc6e1ae0e7d3274daf429965a774419575dbd9e9532f8dd82270671731677f07305a2940bd512558c936a1d67c5dac357152ba80323aea44d3df13d8af51d48ef152b4f8a759cb805e71194457eaac9a5826aeef0376a16d4ae5b43cd82a166430ae231b154546c60b0410ad2d0823e254129a63acb15d7c24505088b3e575576e6c481b4b147ac44b2dfc6b9bab28e5cca6c91dce0ddb0484e88092eebf45d80b468b253230f1e3f1da873a05b98deeedf8f83decb9802181bac0ca863567045701b75f4eeec6583b004f7bb0d1eca295638a63005fab7657b857c3e77911349eabefd3796994e9312c69b865f1ecf02959e578b82a8f275c1d15b60b2ae87791a1986b6f11221e2e8f5b06dba19e51a07c47e906d9439ba1dcd7cf8998ee87116462149461862ce8ae444188f46ae6cbcf052246538fb6137cceca1ac02ea266f7da035cfd22564d23fdcaa3fb4f34ad77092e26478ba41e832582c5334e9dfb086be2becbe8ddd69fd38a393ae8593aeb557f423079c705ffdf4a8a055214caa40dd91f7128c362e0e011e074dc549b6e0893e0a740bfb78e59bc5a5d129e2c7c3a173905fc56b56bc8c81459daf1788440c0e225ca6911f93261f62362b8b7411b5dc415b5ff53bfaebd51d2b80efb8c297ba4a65293c7da9316d7aa1917eaf1bef04e9decab15d7d77aa0147900d0e638f668f0e6675511b120f6558c52142871465d38d4cb5e293a3a855a6903a949892d79894da8b60701f4a2fd44d4c63e48900f4a3140bc6e4dab2082fdcddb864548bc1c49db9bc13d65d98a6c4404506987813801ff6de736b41372d748ada6459f848bd2e916ce089973a2ade17cd0a8a57ba12aff4da92f48ca9e3c1e1d52f19976faa273eb6707db1555aad8055523fd3c81118cd2d5dc0d1058aeea5f0a7901da464f871ec411832dd008a3445b16e6a15493d81cb3ec7a673385019123a3c698811f34b7614523cfc0b46835cee5821de4ce2092aa309bcb4062ad22f78fbd62bc47405057304e42a6cea889d714ccf28a7052a4c8dab36a077b53f743a288df7d2016e1e61967eb3572925e3b7ffa41b84d3029c08f8f7c9bc817109c3da60c23e24a35071700c8df9d8993e597530f3629aa86763ef1f647aa66be1c1768b3f091b9f9cd92d6c2f844036efe757f413e386410aa4b132462df225608a9d4c4ddc00a197380d831fc8cc0f0f7c90af0d34644d9b88038ff1001545e58192781c40bdc6890349835df841ee89780f43717f8954149e5461e5c607bc40c4111d9d659a3711abefbc06c9352054824398794f05485d45714a2d6290121fd8267b5abf49ec25f9c581b494203294258fae229eba15d885440e62d839762de96f84161c5ce7667e802eeea2e495b2d0fab28f858271fa0384d6eac052acabef83b6c4facb4ef174575ae19d117a519aabe390510046b14bfe189c5057c205625f5ffb1ee9cbf9641339437b92f38c1d2b3ccf1ceeaae84366f42069a11b8c69f33ec20b59a49300bcfc7ac473738b8a1b21248746bbcc1bb40cc22c8a95fbce4f5eb0d2138896a91ee7d88e6317a860399c23d4a4832086b21ddba8eb6094ed684d921fe9479cf2cc1e03134b38c47465bb2adb0e528bc8b91ac04130249ffc4e30326eeb4dba9d93ea42458c53835a8ff2ca488bc6bbc4eb4ac32ac1276a3de4a28e14b8829a59a85858f1c4bf48ccbb105735e44b0ce0f9b6ffc632b7242f918e73bb0117ad776e1ac86c2967dd53f4b385407e4a07d3d72fbbc970dcc632fa25495470c499743adf293835a46e5349509c9fe247310c3c76d4f1ca41310fcb6341368b9161d9478e43d3c947b2a4a0c6ba0b53030e029ee968325a442fe4134a3ee27b96af8454178ae7486dc687a0aeec1e392a959f258ab7c861e8ceafc86ae64758dbdd0f1ef43d5cc78effd030d97e3bb6650786d243260bc5d6e2815c5e3ce0f7f0e28928ac85fc1ee3449054194c024c90a10bee54150e1d23bd7e5d379aaa48f10dbf1ab227593f4e693c31e245994ab6188ba23fac693159d29f3b91bd46729254d9845a7c1cee82bd63506adda7a4880a377163534b431cf70f63dbdec4bc115107a692288ac09a7d1b0779f698dfabb0b82aa5f232a6dd689577525cc92659fee7e2e7a8bb2163465847d598a87190088fd841869a7492fde03ef84771886665a1e9a53bf4a2452009c37d09eb314cee95eda07251da46f7f6656880ed609bf2fdf24a5e35a453ade334c4d977a225e2002374f789bd24d1702563f3c0c140385211b5e0e694d9dbc96d387779bcdc1b8d5fd3de687abbdfee8a80f9e4889a60b1a81772674eda2ccf1af2cf666d3f6db338cbae7118141a69ec1040037fd6dd1bc73f17060581aaa56a7d55dc62f05896a18c76e4f24a8c238d940d0246ebfb9dc58068398ea0fbd8f8aea1ae7fc7261286a31be85fe3e7c9f867a93372b5e09fcefc253fcff585c0c535c5bd7f66ed2f9b35ece19ecc5abff47832635448d9c6d284b663235c53968c6eb660e2fb3a945e9e38e8af8bd8a81b1d6db6c0afd7c9f6e14998aadad1978754ad1f2cde176afd29e955993a16a4e51ed9836b21edb3639beb54b2a701239bbc8d70b8caacb73f5fceb14311d07dcbda19bac964e947d6043a8493e3ae3253472bcd7d664be42a24d2924fb4505e3968a9e1843d8b4050171c64bbcc8815891944d0a1eb80b260726475eccfceab763dc785db9645f2c7d3d1aff306984399305ad2c26f39798cf28db28071f1c632f79db941119a98e3063c450687924d15cf8f25142f4ac7720f273b582911e9adc30b4f616ca75e1f912976d3630c5ec481207aa92d7d4dfdbebed4063797ef5f2382123fbcef33f2466bb639de8947f4343ba156bb9082b15b0df73e6ffff586ac24d21d9c084e6e5113fa6d0c54702c9b5ee550addd28cbbd500f6c489bee29f764e8c7850ee81d5c5061af7e93584c10b91854a08054b1344c0934f9ae329ac4dab790f48d4b4930062f5bbf5eadb3b58ae6085ad3e03bb06a2f73f7550ede0eebfa3b1359b2eead2297513b67f2582225e6fb2c9c0c56f85414d1337da41ecf4bea6fe981f0f0fdb824287c7ddfccccb21c155589d61add7e9a0b81973cc008ed516bc6c4d0e22848cebe9dfad446b2ead5c6f4383c0e3b9cd1bd21ee1be2b53079b401971eb75ed54d82bcbcc9bd58476051ef4bbaaa4d623af68dfcd5181cd7704ead4e6aa9128fe3ee3cc49929320204c19b6a3dc22dd156516ec42fc3912ab11355c793c488d385be26756c8f2f44aeec5c47c360b228099402d7b77b3be52ce5cd500ad98564555ef5535b727bb04271513a870f71c85dea1c6ee137461b73c90418ce7adefdea86c1ca207697dc25e6944d6efd0857fa85bd27c9784db76252e6dc365dc388a75eca182ef34a475f8609b23f05fd810a6ca1861da494ea968c9d44f610f3910cf38da26dbc88597f4c43a27d4c622a1b296c67395737d498ccb2102c7106bf902b8af064110fbafe86180d158ec26af8e11d456f3e1b5a9902f0a25b9a8d8a93c20259d4243d542b1c8645f0f12b91d4d8b9f30df150cbd5d2c540fb4a35cee5c5b87cddf4c935ba624ae7d8d08250ec5fbb6f0825d59be6fdd49ec9e4dde4df7609db1f8f37af5abbe2f66a3f5b3fbd42b476f149df7e53277d7b497210668054e59dceae53e396d1dae5ee5abb4a67c768a8c2c0cb8fdc86cec839b44751cd5e390cee55fc48b57ad1e12fa34062767aedfc265c99dea64e2fb525ebbb3bbd7af3f9befd77eaed1245b29ede9ebabbce8bd4a2bd0b43422ff3f6ea7b4b79efdb2c65d3f71cf73be746c6800582241e2a879002b81b4f1e64869d55b47984ee00248f0e953994b88cde308dfc274b54bd4f8b020af800088db2f594ecd1be89da44bf0297432ed96a0f0fc8a21d86874ef0a91fce788bb637f977bcfd93df8e18f76f0ac4d8542fd7efe2a6560bd46175387f80452d4b80f463cfb31053f941e2758b30a26e27ea1a6ce13b61a074745d2ea8dcbef523b6eaa6ae403c3f7f501080ebb11ca94114a4e27e5826894ab3c290a02aaaad6398ea917ef3e2d0801e14205610624968d28c908ca162e9645a47082ab50c98cb31133b6e2f90a83a71f59bae34e32a91e6c6457b2b3807f5121ada0c73153d60d77d990c8668314773214be46cf1dd50035ed6c736510e0477a116bb18391e232c32b5748c5790b5991f415bb217fd56be20c5e33b9230b010fe880981efbc30d25d12e8853bf929617ebd13529379f29d1806f07657f2edc389f90303380227a48a7a654ff38dc21d47d36f674bc2d9ecad4ebd2f9902823206917af1611be929c5b2a2e4e4c226766b15b97633e0a945368dda3e059efdd7dc8faad0cf764d2f6e53dbc080fb99e713cc538d6206c1cd8e65214ca3453258faaf30a6ac7981aa8097e41c27835449ca41d51b84ea1e618cd8b2b22b33ea39f163f779d1d88a7bfd604ea559e2dbb9f5dc055929afa88a186c6c170db3883a8d584bb6cb06aaabc19f53b72c60c12330fc90ba7e169fbf7847235db6dc9dba45b87f2b538ebcad34cf626f6715920061cdb224142a08f718cd6daa6da82fb8f3f379533b7bfcd60f49ef5e48347283a3e346defe409055996d2469dd961304ab069c212e556517ea0013477bf72f1fe8939ff9d5def1a7e40c515e46e80a0fa473baf6a0e916d65176f1bad88734630ba48ca1639b1645c086b44924b90003de836f7e05f97bbd5dea105c529dd5280971339b552f7bab1d4a084fad3c4f8779d66f3047f596d2de1b9b7a70052d9543da54c718655abd1632244e34f5ea03374f318adc051d6552256a2e45da87779a76b114972e745c642c52c9f9f41af504e7867de52d6fa3d7f8a25df574cb20967587f5e9fdaafc80e857c5f5cf5d34b20080f81039e1c79f1127f54fd878f46616b18ec2c91e9bdf61427a4e9887cde39557740b7efb4f9d4c0181808c177448d81fa1e584bb47bc3c73c37ac60c3e2f56f70798d883442b8265d3ad0e7b9566291cc31472fc2807499750efdb94250499adecd8a26ce705785b7c90cbce7d67d1dec9ef619a9c448a76c4322e97ec8adf78d925f46d8d17f652aeaf70b4222a32b51baddefa9dc6f6c9511c2ec758f31a253f2ef1f725d9699f287fdf8f5941bbab0b40955c9ec8ea7d1d0c1b0b0502671656ac8aa6d1a953e398ca4e394ffccd792cb58f6276ef618b177d0f7e70edb0d806aa3e52e3c4dae4b31c241e213a824cdad336aa26588972b329867a79da44bbc7c814e698f81434ab2079144354ad26f79d5f1457ca04a98817f6429c3cbe03127a799c80aa1200c663acaa4dacbb0cb6a97a3f5a6c782553eb9c341a744a6794113cfb285216d5c300ea7425c50cbe0f04f4ba7e8327f0196275afb25bd955adb6a9bf3c964bf6fae2d7941bf297fd1e245200fc8a139cb99a7df25cecdbc04a5d07b663177bdfa01c679ba27a8851abc588bddf7432fecf87fc711fd2dec36bb0710c381acd7763d53f744d993729445224bf5df514e31170729579e2330cc67395459a8c204f358934dabe89bf9bd04d4452b2390f8912cbc3a79ee24c9eafc857849e55b4e7552c263e4bfc474762e2c344168de3b04acd49c726c2dabd2b71f7408029abad435969908fffa2b02f6a502f48c84d2aec47c290163e10bbcfeeb119adc595a6783276423eff4dd5cf4c155712fb5c71845a85510bac7a6cf7a491eb4518a81e7911fd8978a06ea3d26cec9c0822ba3c8a61e4c4562bb97102c3bd4d77019059dca54dcb441afbf928704d0796d0bd165b5fe94d3fbcdc3c6a8948ceb8bcb47e8d927f7dcefffa9cfff539ffb53ee79e33f0602b7ecbf5b27a51c7ca53ec04029c651d2bced113b4894451c70aecc77a9e370ef3e33ad6b18932d6413117874f74f573d9c452b3be8aa4d11f9df4a6619b8ebe73e3d853fb09af360d5d3e2283f7d303b803bf687fec365530e0630474562e7cb11b2a0d7352f4d87c6ffb1c2943d2201072abd355f7a4cf3a5317aee11371d33d5de8e376129f3e6f799b8fc3eedeb707f36e344d1f62defa5d53cc2f2c69f4a5de5309c85c0200bd2adb541223cfe1be41597bb392dcd81bc4e97effe4eecfc8dd2b3903a3798471bce1d40f4c29402fae6115119cfc7022ea662fb0385e2d51ab4a0b11b96b10b1a83d708ab4e3f0b3a4133f87ab4a24ecfd109234bde374588c3e92aed7af46be9da4a5e4a5566865394eaf70f293e5edebb75af42f54dcfe858aff42c5bf142a3af183e575b03af070c68f2a6b0a9ec596fa43c0d15604808fda8c80cdc4cf1d73a27dd1cb263024cf1ffb569a40ac033a09d48f3f879b861a89d07d021bb3fae3cdfaf278e8c142d440903bde16c727b5133c209c7fc5908309c87da42c19486665c2027f325e9015c1fd379fc454e11d6ad4e3d01c7f155f7aaa95e26f6a96ff4df19f9ae2de8a85e7a9b8d35cd6414c928cbc42899ba3020f2c4932e1fdd07411e427682f3a5a37284cfd4bc6d620b3c73ff0964111a209ab6fe1cb34e118e780d1148ba894437fa48df631395846eadffc0c5bf4a467f520c7e7d15f70c239258036e4dd68699996f4517cf19245fd837d150c8ab6032cff386b7f56e22c357a24896b8ca3b3fcce22f9cf68fe49a389841539b3f851deaecc28cc3ab472d09c163173cd2d762b13e537d5690df03a148219a021b82e7c8199dbc70c72eca41c67350b8e3eef2f8663b2c59f7fb2f58b650bdb560dd9e22db334aff21748125c95930a9c38f64e71513c492462599146c3ccd8e849e34db86c48a318b31a246f61ce8f61aff765a0c941f9a0e24aeb1769470b550e88672db511bfc298e4efb0c97cfc8e8587c17238e274ef4a84b5e0f86b7fe7bb2cff127adf8a5c3f8a1f8b0a7f7438031fa8d321f117f5bb2ffa771026f97d9e7e6faf3bfaafbbfe15d6c3c5d34efda6e23ba9170dc7eefa73509fd056936c5b657d67bd969a994ef62170b0d5b403bf23eb44dacb06f31b5e0aff9186fcebef3cb439d416fcebaf2f9db98e64e6ad7796e1f1dbf381856ef63f1c9082a5ef11c2314c69a6e6587ff461874dba61fd9e7e87d9dab029b808fd2f8684c2af0e518a930eb9f342f8a2cce388fd2f7edfa2cc3b2df3b59e3c7e1f697ba46d8029414dcfa0192c7ec13f32b8610a47ddc461e65533c75e3279a987fce534c401a43c710fda708493adb81cfc648322ebced07251f721faeb2112abf64dcc826b28023bbd62c45edd9793f60c7b2243ad733c758a6359b419abe06b96b31295a6b6903371d810b9fa08b920fd69f157257ec2033bb207fe54863ca4946329a4d23343d047a056f1f348893bff9b9c3ddc5dcee41cad8ea8b1ccccedd6e45475cba4eb3d8ad985041c322c4c5a319c606c3da6640036628bd7aac8eb625c55a6e3fe8a4ecf92dec32bf1ca70483a9d4216f4a494591e20931872e47b2a8402c8bfd6a1f034afb78083803bba556c1dd22a587416d8b173ed4257ea603b42205da28f5840f6b0c2267cab315af165e2170edcfd81fd2492422ba3cc33878b7623a31cc67befe1bdd08374fb821827ebd96d36f36c5829678f61f0093f2f67f68c109f26a8a0f7a20fa3948e23aaeffc9c6e88ef7ee93c7f7552cff3f12726f6e12cc27978720eb5ad0b7a12b51e1f7a16fdb26d90329494fa4ffe5bbe51c2e8a0ff1e99b428b92ed328c1a21c37e423e9657cd5c2d95ad668d4467ed958aa42b19ab8ff2b15aa89063b9ad27157e4707428b5d6ec0b478dc982ef3371284569bbfdfdf50c3699ae22bd6f415c1532de062a7fcf51fd8edb05934a784550320729b8c547a6d34e7d9ff4d790ad57993f4fd46a624a999065f534f436d42977976fdb27ec31ce11965019fd5d7613a19a9450146c7117c30caf130318505424ec9a39dd11097a460910e58c4d3d885750d6775418458a55b7ffa6c564e16d9496ee410a3b89ee21a576cada947310f2ad32c63d288d5f4ba37100dc4607331da658f96cb9511c83cebcfe95d2ef8c95cc04f7935582102c74ab94655a83fd30c3104d8ef04a12dae7bc231fa50264b393e1543c314ce8b0928a5869ac445da40ff087d00955f19cdfe459927f72a8b733f8a388af2b238b2acde639914b7a0816e3a9b013c7b7cd907efb4b7dcb1d1ebe752cdd4c46f7c93bbe87d17b64ea475a72bdca24ec7792717fff78ed0df8402f4ce8a5a5bb2f05fb55ca8405b3203c93c856f687c40dc82483bb3e559cf25c7c2c4ab502595631629fe761f3783db8b20a76559b5c90e443241f0604f75a5919f5b0f397a4eeb1c702133b9de2c31f3244b4600e12db09ab9da624e6b94a1a56dfbe36e9d78aa45b5516f5fa3c9cbe747333885752dfc7818f8f1502afa523f1bc0e1fafab0bef719bde99a46ee8a246ec2c57159d83387b942beb0977531d144989b7079452b9c4acf46cacec1f1bebe049fec4fac014649c97ef2f783c1a85c28ae9eb1238f73d9df562180f5eee1729e0f21b560c8564c17a502dc6aa4d8232b34ff91315c22be3e115fb87965629705a1f6bcf5a9cb2c67c6ca1eb159d39fae327bb8e9f5206d7535db0b59c684cda86ef756779943136d511b9c076b170d05e03bba68d98388a614c6d2edd6cc0a0783cd14f7520281751802e1323fd950cdddbb933e22b2fd9724cdf19dc3bff606bcc7ec9ea8cadc9e76f5a3bd6c537786cce7ef91d1e95d892afab2fe10840d843317d891b42808179e36b1307f1c0f08253307f49bb169a7441c3fffc759befd0840ffe525fc3ac36c05660081bdf57e046c1025c143769643d81ed6bd8bb924910c6f770801aec716b2200e7aa64f57ea87ee0e96d0d1a0e58861cac3fd18a35b0d5058d34541370a59fd905250958d3c3cb826974fc088c0964bf094bdbbb947840f448e86be0e8b31bbd70c84d2b75d133ad510ece16870b1b60871ea02644280a0d5d61db00c38676618f39299c5e0c67b9e255ef915e144805f08c8f4cbb325a6db7fd1f4e41883cd65c68a7d511093b9f9c04ec29840a16e83c1ceaeab9fe02cd114018ec742c349e30941b4ef4dba9b493691d74c725373aa6ba0db315de0be5c981e52ef1682038a01be60e32287814de06bb37f09c048fe6066f74a0d26e18873ac249bf6d5a61576564647be7729bd4363cd04c323707e9301c71554805f15c09586e4ff848e006026618fd05ef3ef8ec18603dbf34f2a6949c595a1c70c6f7a3639036d8be0277bf245afac1eb550f9aa7ee2cdb8be094084faf062583bd7f38e1c431b0d7f0103b6538d4ec2082f1f496828f784093e18d389978a4269e37eae83d1565074708f3098752d02db04dc5e12e73bc13a80da7f12e9223692f6f8fd06d3128bb789882c3ec16bb39383ecf3c8fa8deb80b3311238f3164b7d1193dac1878da56604bcf592e30a780e0149edb837a421255df725798c2f17d9b0878a641c1f647e05da6b1669ac8f6085e83e458855a8d02b0c0fc1c8c0b2415fc2cd885f63c9ef5cf7fc153cd3534aa420b5ac07f536515b675c224802376f4159e014bdf37a1c4abf740bd9a7ea0fb2f349bf070d39bf6149e83d5380b74d0647bdcfb49e62273a48f2f1aa5b8c27e118c8a63d10fdd8dc156d8f6f69d4d55a2a23ca00408d0e026380e1ff199e405dede86d7282b6cf3e1918aaa81756c47143af60607493b880e1e50ed4997401620a1ec115a9bd29ec0a31238b4364d7ad06e820874b38b379ad00e3d3816cf93f1c043422a4d1658b54462087a08fb133dab0a444030f38eb0a1a3008d0dac608e4b9c64db410f600c78aa3b9a5adefd7870808a8791e18d970731068bac645740a961bb1e098fc72b20db5821823a6896e0e816d034684d01f1a86475011ddc5300a7b0166ec8026b0a436007e9e841ba639ab517dc062875215f096e0937334712422cdb567a556092c1403b62111812c0090f65b276f826a80c03a70bc9d4c16e0c2390b19e8d07d7ee680b710b2a8c38b125209a61e767a6478eaddf7c01d6814c5122acb8637fc363d1fb36ebe0486371a5b8490d4c4922478e411b2c8ee161d189b0c15be073d01db000651ffe1074a5bd180e0382a96adfc054793abac26d74febe27156ea3c42003a29c9de38e8374a85f68040c85d1c02e608762d5f4a44b1ddffd0da28ad4ec74b4188dd6e360e1c436ce28f1388d44ec44d173a8c585c5058e830d7c201a0d08a610c3a780b1c788c2f0b02008b9a0ddb11bb0f6047e0c7679e3c3d1f0aeabcafe0bac2b4c6d4066007616c1832594f298883e1ffd2dbfa890d6c0d46d148a3655804333617a324918c6da3bab20b861b8a1842416a41d256227392cd44b79506d008f573e7ac0c3061c1e0a640241d3f1587e5e0e4af8088861a0f7e192e3ced3da84b690d9a3539fba5139d809c396ff9d62f37eea39d4af995705fde84e460f380913b3737de020570bec07f302a630f3d032fb7508be42171cb8e2e320ea415d0f4206ce106ed5889c7142e08071ada33761d90124269212f4db6420744fc494837d3c1847bcdaa2a27815a694977f09074d389ce100ef818a842329c7e30c4162e1a03c3e8b2f93cdc18b215d97d740028a9782d35434d1070f060ae888c7cc733079107fc10e228fc907dc5d93f9bd1cf101d369e33f984971e51a680f858ed00b0ac10621ca549ac08dfb95740f83c666a1515948a43dfb5f8aede885703a1d3a5912513820c133d3b081188c44a4f94037bf938aa1134b94b5911e8013645c8d753047aeb03690948e93c40b39ca888602f496efb580ec93340ed289423ca0fc13036470dd856b44f04cc3052e14ee54ca1be774acd370be0819390c2721601db77542a375a1b94e1c0c3bb29a7c9c64e1541452b444de03720d0e750bdb38112ec056414e74db4be13d3d26c58ea8848e05cf48215ce8cbe013d7075e697260888502160ced3954a3583ae03443085879a4a9cbc541b6a1cd467b2651960cae1ba23970df60271c3e0271f1ce013af854f25de02af1421d5e71f0e09806a3a113837330f087bcc7078d0ead3df19c355d810823b2a8a3fbccf40cc628f81c8843e6d23114e8da23e230fa4c8698732d98c6f650df72077e034c73d8f0922bc284791c843807d29838cf8e94a280c2427001e166a50949941780e9c7dc942a4520b128641c7441970c7926e45703c8e46c41452ba768b87f2bb15901bb45bdc495f413e3fc00e914069d4478e5a20a5d654f130d5a0fa1621b033c04917ee358657f06143b56a2caeb0e182b7954bd61673c63a3aa3f486c77ebf0068ce9c14263ce7750e10f031f30a5c037661eacbfa611f678cee1a0925ad832a0ea3a4497190d24725cf068bc298907bf332510fe38e45f24ebeff1ac640cee40b20a672c381ddd2d1f5cbac3a035b1a3dff82a4b56226841628f9f387bc68c75a78f7bbe0f68c956a23404766978bcf2410a1878311f46e9396de2da028856e258bb70c2dd3ec6b93e38bd4e1425f4c87f4f73e6079bacc8ce4378561815695ee989ba27cb0a5154e54aec384b041c12463511dd12c65c916c6fe85d2630524f0591ca2534b01fc0df426532cc8238ef03f101e58125a688b622b1cbc5f7905af7c37ea85ae38806ccef9328fc06b602a01e956236eae71c1736d1cd1360ad3cdbc340dd5b9019248c587ac9aa72d119ccfc4e9280153fae6855762c745d70e4535c0aeda3d8e8e640cebef0b8270e97028dbfb247c393988e1e49a3e5e5a0a83d0699208433894a77a465a0cc91f025d2da4c0e150f4806ed3d085de278347212996856704984dd33c5153b69394c19d7659d420fe14d400788154e4fcf74f4183041e5a79286d3681d656101ff4562f144a2baf1a5288e1c152c2f1c1430606a7bb082f7228da7101a8a66780033e7c698898006549270ac85072a11e12d5b9ee715b6a95472b18eaa7c1846f705a3d06d0a70ce6161174fc375e4e120128a9c739039f59c57051c3e7a2fa013b909d13a9b74c7fa03c937283058f9c43527b4928ec986d20d563f60c1004c2c4f6bdf5e07f6844a56910c4718e7d63a8eede9da635426644226a1c19b23033a77c868606223e72658f9d9c97aa085656e1d5c22f75dbc433f2c2cb3a9c36c8539e2b860412785153616fd5aeb7efd2f964160013bc2b3f0727029c85cb2fded93340271cf5ae8a87a9bb9860d0c84453d089318195ef1c70610e3555068e44dc70715aa48424b5ba47a62df43ccc63e600cb8fb1e1c80d8658ec0ab635b96f8af483e69b448e2357cc08384c30531c0ea6daf31f59da1109923632a5585438ff8b93ed1b7ab1efc1528004ae0ce9c0b9ce883ac807aedfc54239662e783ad2cca15cb2210432615f6abb121a6e3cd32b12b32a313ce3ce503819ec1e225544033c931b01aeeffe3498e6425634f7012c7ddbd62ee51030fdaafc6b442a80342070f71bc13b8e2880525d7ab2d808e533d5c8e8ee45d39e1eef9185b0db48decb3b19600fec9e19cd05d6489433d8e0b61d905d7ee2aab7aafebc030c7293895330ef81fac520253b9ce014f25b67c548325650f3456ec9be2a20bf8a8449c8577c1f8eb360a7e990beb187de2610ba13fe5d8f6c76ec602d533d2284db1d54c9523c5404c08bd9da3073690bfe0ff20d2da71ba5092c0cd451237b63907e737583de81a9d38662d64f6a807884b9458954d2307f24c3656c81ddb6390148ea01a411c67e376835e07827817c88f5cebed7d4c94bf662160a0f207f72f703111afcbd93055e018267010080257c8f4fa9d3d391824468509719f24c7c13a564270bdd3130fa036857142a11150d8d9278eca0cb496c595a8bcd1411994d2d3358b949504be0cdef7de37100a3067f07e8f212c96f43b3230c78d0b78d967eacc4b6c5a404eb8b80e6f235381670170110d8d20a691b1e7c8146ea11cf465b9d8cb3658aeeafa8aa6f8603705d63250089c7824f4141b3ae012cb3216c3b0377ce7e014a4acf6e1f163bd333e60818d8239705f503ff2dbe85447271d7b4d0caf4cf65d07b8b4025a0ba111d42df046ed9d17cd18a3a714c9e33e89444381c88c993ff6e67912832ee3a94385cac5cc880b5b1846820b1a6534f81f4777981475ef9979b639110bbd3619a8d615460f1400678ebd6088a50b0a61810a272ed6728d78f40266ce8ef106a840bf618db41724c7de5bc886c0aea0fd8b34e8a35b486e5da52bb72249ca41d913ae2d40a4deebe9c83a96e9830359c4ba61a451d818610698b94ae37bd806461457ab368a8eb0545df8313e399557b3a8540b9e938709e20901165e569c4935761eade74c11bb0520c4803029a3b3e8a92c64f1fd2ac642e56c387835d223b0d0d9ab8b18ffd64d84a1f822584fe57005a3e0d0e3b1cab6157816b8b205d91cd6c60f76da20bd6c072317f610186cb223e6a091d939c88e94a9ecdbd898b2176e31a91b775e907ea2baf7d83ef4522300278e661d6383941b8b1b1e6d4bf3ed9030a166d5eef72911daf7ce330a7630bd299c0a16ca1b13e7da74a0293026d1ca7b5f4740d38de719f754c951ad07a52c90e3c61cb52324a5aa9c0741b470a0bdea259fd4835dbe50174b5c8e1eea8540b0e0bcf8edd9d5631f10571940c2534f9063ec62ce35c8c071219009615560038d7ac5f13a461a20eba3e4dd5f010b935c2c858a7985fa12e6f4ec8f41f861cb28975e51a8c2481d401dd937414598cb10835e609ac75802564f375e60adf4085ceacc55977de7e62287aed8a36900bed0bc27ced2b0ffc4f5871c4511e033e81dbdb601ce817d19680d560177eed16264b07a96494370241cab53e717a94be631a2d467c2d4ebe398c2ee941a1d9cb7f032013e03b5c66eade02f585e6211e0b3927a988db511b0c85cd946ef362a0a9e43e542e2864a163878464f1d7beedf4406ea9d1c0c25663706fe8129eb277d60a30955cf77320899c513173a12775f385aa9ed0159ecfceae11d861260427af652a8a98bc32fbe5b15b41a7b99382f80750952750e9ca13e8e85934a8f807a42d59ff41ffb0cd8aae2339e43116c1de3c27fe9497d18290c45cc81e25d6cd923a9f778c3c5b1717dd8e152669396cc46a3cfc4cee93f1605d186167a6a181aa8065089075571ac22e41e0f600fd94e3693a266f6c5dfbb8ff9dc7dde0f1911adf0e2241bae90cd7b993931990e9759dae5538b7ec84944e3f4d64ec979eb806835e71c929babc7eea1ab232a7a29ae76ecd3983a8abe3b95377b200c476ca32749d057e5c00757c84561180b9634a295d9b77e132af8054e78d0f252e1084ff4def006a6f64af053e0dcd0e46e7c8539540050d5b9ccdb3728755fc9acfbec0fd053fe8f0eeedf07ff3eb8157e7514edcfa1052cf52befc065ffbafd59fe9c19e6f3d7e938c28b77e042cf780077710a66f022c1bf53e2ee4e894b1d4f9464e19962b98f82c300754e5cd9fa7971907f3873e0e76d5ca773d5f03625ca731d52e0c6d69df657dfab53e74d3f365c92707e190eaa1bfdd1bc0a8705e3fe96ba0e27e94ccb74e2ea048d2eac425501d522c0459e40a83c289ec9fff7d7ffec5f240038d72c786ea3b378f001d411cc310b8bd9b7c9066da9a403b5a847a4df6187ffa47fb2f88f5bfffefaf7d7bfbffefdf5efaf7f7ffd9ffe8b13200cd72827c6c08c8e7228940d640a16442102e284f89df11bdfce7810b62a8a2bed5fba2237c47f19c53f9efdfbebdf5ffffefaf7d7bfbfd6fe72dff4137a7b75afba8b6fa32c06f61bd7b8e81fb7b128cdce49bd4a1ff4381d64d9cf14c4a5ddf15d2fe0b7ffe96306afde351dfb3996a765015aadcb8bfb34fc369f1ae6e645837f8b09bff3ca19356557373ac3c48651d996656fafce369bf4298e15a75d4c36706747def55d8d1783cfd448737193cbe581a73c95d679dabab342aedf649eedb4fdb778fd2c1e663b9a30023ddabeeb879f8af34d3511a90327d6a92192bbc430696b17f171f0a7eba471f78875e6aa5043750ae71bcabe7a8e6fe81fa996983a35f3c4edea34ddc95ee9638dcda61ee6c7e0b4d85310e5c62da79f0a72d45ec94bea202c1255327b3e4c93b5a99f9348fa0e924f3dabac01cd68b436b4740c3e23094e0b97a9243929d115473586edbfeb83e5bff35d17a6b76fca1c22a907a38fc79c0f04ee2f7371930d4bca55ed413ea50e4307d31b89e5f12c8abd6baa37730d7b06cfc6bd5b2ef9e3d583593ff8cfcf7dcdcfd5a2091ed39e9f3bbc280d3a6c0a9efd1adee3b05fafd71625124a04f0740331ed4694472da9bb6ebae813767435ecd2b276e7e13f31fbbe702a3c152cab7df542ded46f4070a74b1f835d93609268b8ef4e4b8b6e630a1c67404b92b43449d2a9efcd535f8d138ed9dab6ae07348dca370f10388b69e0922d19dc7dfd52aacbbefd37873a7ebbbbd233cc267859c500907702c38cb2fb09e99fe6fc6fde7dd9e4005453e884baff52773cc9dce57fe322d893ba1cd9d017dc5b10ff452c9fab10af9375cf67057565082a7c91aab1ab30e71e703fa42449c0308744ca87c807e790f909caa2f0ff93dc0f0e824ca157e2fcb420b394885b172c445dcdf122c28148c98913ddfabd34e30a0655dd891456c1596c155d085f0f0887c5b57d7eca3115b6f4ac06870adca4cf5259ca2d985246d586fb004efa4ed8a5d3aa142fc232dcf77d88ea758617e1917930f9a58b01ec9685dd998e5818fa9915d0818c0767253a76a3f1398ac3a6f0400e1230d812083bd86037121ea3d43cafa79a3a5e8cf02f14fc31cf375d088984066d2e9e3b49dc1de9051d3a6a33b7fc7dde6289d6d143e8a8547cd8b77965118c29abc694d5f5291ba1ee8bc9180f3ac14c50de1d372817dae70c7631d161e20535fd383e701c6e8ca3d9f67ce810e8762af1d0b58f9f4b3e5cfdf01f2a8715e7906e15fd2cfa0f3ab069dffa8d2d1f273f541262fae12470da16015692e91919f4b8238cbdf7bc4a004b647026044425e1f5d27ce0a8a327288d0579171b1a23d59d7a70d34b5b65933efac2db033b6fdc9c2c07886ad9141cecb3c3cb7d750bce6fea11449041693fa00b4f07091c700dc7d59de360a7a31a619d23df2b0a55e5444e174880c33fc4f2b259d781f5b7ee6acb059bc4aabed499add7800ace75c160373eb6ef47c987bb5528ae0795348ee5a934017c17151c3d14877383ab2d2a660f70986b3e4716a5631b41885333d123105d0bea1a7e1d5fe83b21e50d86675d97e70770a23442986e0d58beeb1092cee494d5041c2a6dd1dfa9321c9cffd2a77297ae735d73f11412a998782edd002d1624de495607249c782620e58faa67e0fd43823af758497adfc0882d6f548dcda7a8045631816886a53c789535734adbeff8bb7eeccada583c903f89a58c663956a5d8529d2e2abbcf2cccebab6387360d6115e50435c41bdcbc84f098571697e8b4a8c1a6a44dd50b168d04b47b9189314e1a11ccca8695af9a64f74758e1845e49f950e1ae937e43a769da440b64dd422e66733715a22b83992407065a9d84df312cbea04cd768f0e4242118fbaa7ffb03bcc38f2bf34d5d3a3a1611d5c713737524399458c4a967292209c2a8c60fd1d115b2db0830cc6169a7524c64924a730e32ef6a872f45cb2bd51e83086a0ef7437fab229f2fe19f8d8b45412e13057afdf8bb025d633274501bdc34e341b20348e8bfa880a1bda0a485b5e38d0e350fc33ee5850c014f7d1d4f4255b488350d3cf52d3d7e339d272beaa630b1659809746be2d51f5deafaf1cc490b543fa8ff4a9ea0795b382af1cbbb013f7158b1fededeb0a7aed508593afbc78a00dc853032a93960fd4e1eab5c7ffec88927adc3c5e2901cbf51bde126d819c5ed6985b37d87a7ae8fd98cb36ebb2bebe067adff4635bf2a948cf9be88f02d85444a3016233b2c871ed5fcce579f8ff06e8a7495a80d1d1cd14dd7f22f76550f29d5b1a9e8f6448e684fddc388e7f6e51d82cd105693abdaaa17f0741e7621766a24635a7480b99f99b6f88a0b32b9aca7c38133df5667c40d1495a0c6b1dafd0c53bd064a8239ea0c7e3b7b986e01ce61da8539082a540dc3fdf5d7f831cd0fccee18f5884b9c88b82ee2da6ba6cf459678920f1d980ef2df7fc3fab386b4c8b039c8f9b89882a8b8a7cf9dbceef4573e43ea489541f64807d2897644ae3704a802250dbf3b9ef7e870c316b0fc5cd07799389f197f65717b8dcfa9da22f40bb01a62c6bc8f445b10eeaa7a0b1271d8d447355a11722b515850fe333bf1f3a8422ea7f82dc25255ac9af6868ca786f9cba784ba0b4155040ba7b786cdcd29f2452a2cc25c2f49ba4e5499176172e79df5c3ea0df7a68dcfb026e7e78da2ee9580bfa97cbd0fa79b846185d8c88a4aef50b9f13f433c84127b21a4a26abdeb391c740ec6c74defc5e997d74abd18cea0eba09ce535061a6f1f6dd95e79de9814277a01bfea928aa1ad93cd1bc377d7923eb1b14ac50b37c8441755e7b89fdecfce787e87b44fd6644a57b06fff3df6bc76f23a4a56417d8b9188d619f19c62ae0d3644a6137b11c24d39b1360c63edf14af194e9b802ba2b57c965aa28d9729b348ce14d752daf67a75b3071d2be5b2852c61138a495c7bd4c52744e3a3e2fec2bfa5e06f96d0dd3b72aef919e4dd5215717aefaaae4cdda60e98c9b8aa5ca774e653719d00ded1662a0028049ea62bc2cdb8e48f5fb5725a7ba02dae9bc5935dbee21c601e4c0db22054419d595d9382f160412014aafd757ef1601a15078c8e25a7b511595c3a85fe4b345023c798827a1cff9d8af41fd61959af463ea976ac2a81aad1aa09fd829b4c77a4cc324ebd58a9c7d5ee71d6f932f08bb45cebc4a78cd02051f6cd2d463f26d92cc7098f00a673079e3adc7f484688ba6ded6ec7450953b59f3c14e4c51038246d6f13c5e023c7ecf877ebee409decd45253f41d01da1b2ec34d144e7f44ba2d2f4419dd086194b98071ae204c2851eb1d2237f1fdbb0f9033cfd5b7c00ed91f2833c831c417f0017bb896194f97b34efe283dd4d1fe0e25d94ee4a7aafe64045cb4b98bf2efa77bc1b584cefe40c4bd4bf93ff91be344f1fec130a6293f8604622ab7a2a5a14b11d7f34e7c7eca658111dd9ffabc5ad3852108ef7789dc84aaa4718ae1da54c6b23bd069e3aa7b7d67eccb73eff81bb4ffc261cb260919bdde6541ea7bb4d07af0f6905e92e59fc252b1ff38d6b053d7abd2822f50cc4d8c6f478957e57f279957bf853ba8dd234322295b7de745f407f6f99f693b8a90219a6e066ae5a76e22686f2200b8f9bfb00a4b7c30b31c79741870651c426e7fdbf83adcad13aa2dad79f5aa7d4a9d957d6467c9d1860af8ec40daf787c3922b829ca8d000eee261690a7aecf9bddcbf4cacc602f579a764036b133c83b3390bcf1413d2ea3f34bb60e8bbc2bed894a1894011fc560a17be792c17d557da4aeb94b7a543aaa7b45ddeb99c7ebb0044f95fccef32ea56fc538abfc6734255c1bb8e9700a65bf2a7f77b5d00cf83af56a1ce134ef96c8c09d77e2fa0ebc9c4b5ef8314bccc1f315ce050a4b96ff3776473bbe61cdbf141b205a3ef8038273b1647ee1c259d89518a9940786d85d821cd1a8ff2837d4bd4c50c5089dc4935c8f545ef996cc73c141f4d3e0e121abfa3b2a077172c557f32d464d9c6a3056ac4b8fa95e0ddb66ab30a49e439ed35ce3ddca4ee521823a337f867421d07fe4e63db8099a3e879b580bb6e5c2bf3bfd1be9df44ff66faf718ef807fe90fdf0d0fefabf4be4aefabf4be4aefabf4be8aefebb4b8f1aefec7d3bf611b47c2397c1ffc9be8df4cff1e624c7e5377e7c0bffc27d0bf3bfd1be9df44ff66faf710bc09636c9d267e17ffd9e9df48ff26fa37d3bf87e0f13e78d4c7e6c53b76f127d2bf89fecdf4ef21e62a0e5e771e79414b14efe23f89fecdf4ef21e63c8d39ebbcf6624c49d0c4efe23f99fe3db6213b79cc7d9f332f7893c5d8a27847167f0efc2365916588e79ee78c79cd3ce2b1314dfc2e365d2d72f079f2987fff030c13bd08fec2f4c1c23be0b6de4720ff3e783c51c70f3019237d39fb3fee8f5e9c1f82a35c480231588df2c91665c5aa9340b7a9a33d4488965488d6ded89798ae7d611085627da9d82d20ec86e15f76158a7f71379bae815d9d2799e5f45d15c9dc26ea027b508199c439ad1fde61be6ab24f4ab25455625a981cd1607fb35a6b229e32f77ab9f41453896f27a6eb426b7e0079338c3b9e5a93312dd4e53103a21320abb4b423b804053391f510f4d2409d06a80b34ff7efeea8ffb9ff8093ff6b33ffc89fae725e5dfecfcfcd9b277bf27e05e3d859779ba4df78e4d7b552057f762f14e8eabc85fd437f77035a84735b3bae180553b516684f35f36be98a6995abc85db754bcde723e255efa3b40267e6b4adb8904b3700b8863e6040de9e8abd3ed4160e609d014a511b1da69a7149062e0a87f52baa8dc1ef44239c4dd37c281cbe5f291d082d966ff803e51b3007c897f61cac5aecfc7d9b92b61cca2202c9c2b1d1ee7d3fb288406521086be0dc31474f343b9d29776a4fb449c240022e6e6d8fb4ee948305a21102c5aef66ada20ecf1a306c9ed7a857d3154e3f0115ef0a38a75e16266a4e140b5ff80df48ba5a6d1dce4a030101a0ba613d0f974fe1bda2fed796f6e01118c1864723559a728ac33028822533fe09e26f8f5c6a6305cec12cd33c78bcc21deea90c0cd0e6135f06f3dd107a84870dcab88e8b7382f389bfe33c2714ae1d37f61514b380cf81944832233ec1e0078a4603c057424426c684cf778cfc70e6ef030a08be39f0dfddc2f188f817ef27902410c154233cf2c74f24053104e4e3de49da71b652958e2808d2693a89679d273bd0b0f39b716e884ccd1339c39df36106297d80e1351beb9095ce81ce2a0629fd2d070ea96cbc670fe3788fbc68cb6901a5c7eb1f186d6492690a10cea33d60b2fa44c8096e3f8987b1a32c47b421fd199a2d7c7db7a93b8e310c29c07f7264f61c3c4a6221cd55125c00bf123082855f0bbbc4c0cf6744e5abd0a9213613439083b9cf026929d8fe8a1eb608a0d4a5a722fbc9cc47818b8a31fe34833bd251fab3697cbb337192e3388710dcd26510ed5171ac63838af872b1c0c82b47f89bb0f988b638feca0b59f77d5e491b921fda5d3a853b0d80242622b36311b24d5ca1c9388471a3610721cf11599bbc60526032bad2c4c033e5c9284b03e079300ec591ffc87106b2521e6a5f9d798c29e2a4ee9d5d59f2cf75beed7c1273170f38f7d3b3fbddfe8b5e2882a77756c1181c70c6a136754bcc8e4ce3a5f193403b86f51833edda9864c10b4fa674c739f267eb4360f47b64b39948ac8a16581a5a9990794d018d7697d63bcb6f9080d2df3f205dd6aa387e755d14baa972ddf36d786ea1975adb45019a063bb787e7f31406e6930dce3cea983761c85c9f2b4650c81bf559ec63f4e4a476cd976e378ea039eb59a8d807a21826fd3de1c6b127f46747ff0685b5c8b7391c43d87851a3eb147ad76e7d0eb4be8d3bb1b0814ea808c9316fc84d046114045bc8124b4e70480f1ae424b19e1529f637b83e1a683c00674971faca0ae9d117d32f96cabf6985b4e32af25b4c5f3ad0f50a297cd74f4ce718bd8c5a081a0e47c17f7b6d48fc4d22e2dc782292b4b758b0caea06163fe38f9516c5e2f538cdac2f7a024393e4ecd8c0059b5cd2f6dfb41f61ec8baf7d82f87da25896b6ab32d468b4e83dfcaf2a776da61ad79213134116bb7192673232fbad4b7e807d816799fb079dccb47b0355cf6e6920fb26968ad5d11f174c13434e72c8d34e91a8df4e4343a161051abb3907b7b99f81990007173912e5ab84b98989b517de538849bfed3f58777072002b4577ea371ba39a2adf605e9d881e7816931680782aeede554c5f957ae5f1c7620b706ff6400cfdf3a116b209a9efda1e6f11dd2259aacc7d3bd1778c64700e0241c970f52df69808215376cc07fdadff3951eaac523d1d76e3e7ac1d6a994475e6abbe746858021122777cff227d48bb3a423ec0d26d07533647f1df517c4c3a6a14dd2f0ce86da15fd9a2316acb264037bb1f1d366a192353380047537b53ae677d381b3b7c3e0ba36df5b6b2b44f52dd4f881b1ee905b634380b7d9aa28f5c2fb8f4269fded52ebfdd27fed4c92aadd03a00ee08691a66ae0ac1411b161977346a1afc492495420b2648c2a88299cafd3b6632fcea97d50f2470d0f74e9a3036eea9a0421d447fde9d08293fd546402d08a38aaf9a9f6c055c366ff2bb86d19a258804e55be538ca369f4db5b6d839c50f432af314dfb2c675833a8cc63906d2563755852c5fa216d15f0f063bcdc05bbf5dac9952a11d4a2992379239f9d05faa1d53ed257767a14ac0d5d9b8e2ec60d2e5a2b2c5c9e90dd3b05f8d1cb710896ff58eaa9b217c7754a6528195a80cb7ac48d265549604b5eaeca1bfb38aa5bd816ad1d61be0ad6e53c8eea488cac1ea38222ec3a93d06718a097ab9a2d7f6307f3fb83a8d5580da2b5454cb0b68cee2d6d727a87254a840449fa03c51752950bdae3dd0fe8bcfb63a2f55511b1dbcdc41a56247ef3db09ae50fc6439551fa1e567a02fb11f8cf8e647b2aefc012e1862b409eec6ffb880a998156f002153e7b60046158a4a80aa8774049e03264d3c58ae6ad15e5e0fcf9367cb84003ea0af8177883f619543b4162121877185e7b04760b829f3ab0127ac010da5c432014704321aca1e13a94a362a1c3bc8b7b04db5370b907e45b5084841b3e60a360a186483aa4afa18409698fb6da2990cb55fa88f308371ff96d3467163a20dce1ea417b7b1ff858b5858982bf762aed955eb8272315c802f5f64158d483bf60f6da783df1011623a00c95e8215a8562de8b830080fba06707692b64d97009c90e4b781517e76a210582d3e7603d94f76f7bacd3260a0c0e9ce8260fb05a0805543812134253d8de08d12c781a18031c9006d30a8b95d03b8fe3461945e9076eee74f43abc2ad35b68cb4bda7a890cc4b5f98e886a0e6788ef24bfb85c09073903b3c0e6559c4ef0f509811a03da307a6f68c1aa234c63c6ea35308165a910af9acf8914dc70fa474cef9613741e741ca40f0af0c01694c3f605f4e7d440522c6473441ed0ddd46f94e3da391a8138d679c0136ebc3810b936e861b9a86e5c5007e5273e6060b6bbbefe99703359249316f81d07dac73d77b848b38f4a00ab6785030b12d08aded5e363a094156716eee241bea1450583127aaa462a823e0d56c511e381b55e181fbe18d5e1c0a776b23f11658aec052d1f91b01cfdeb0327b7c925371b373d6fff12ff5837817b85ee34204e155a5d09248305b9ca3a5c911f83c999d68242eaaa9a51d20a123d8a7a745242400c19d9963a4c530bf40ca00b1b2f44e0645754e336a7f4721c42215d6219c29a427f295838d63fb224912aa81c17815d4ee2407f682e088888965c40502a4e1fe187a776328e821ca8a81ee49549405b13054f08d9dcd2694c877841e53e0df82c21787b6d21af99b072090303878af70e05c1661c1254d1dbfc1dacca0012502ac1ea06b6a2402ef0d6b3ad03fb072a84e4417f0ada07920be60bafa4705000abed075559b1a921e14a020d94c45ac719b8c0183118a1865dd2d5f6d2cc0e1c59449c20eb9a370e550a3d00950f70781c615044b2b362415013a964007bfe378ce5b29ac89ea8409049161d460d2ae25052f8df827a1b86dc2622e8a0000cca1cb48a03695c1b292c25a2f8f7a58f462c9b2eca133d91409631e4be14084c8814611ddd3030bbc00683d503a3b98f111ee8f48fdc2d0fbd91df944980f290ab48d9f146e16441eb05962d0c7afcd0333a57900f4be8d6972c6020e1a4a76b6f9b88831fe8a8f1ba3122f6208ee23f1e0d241cc882c8625718fa2d65a97664e6778a6b80e6423694d41629492457923a9221348d3bba5c18d81e387bf46cc1124f2c1a672402dfe1090c57115870706a415d49b221e44d3d18879083fed4e190d0a0c58d1b7cc2909363e3de0f6a42014e528e4992b66fb4d19fbc2c1a8a88ee3590d9d9286ad9287a23e301f3e1a917c051148da61c5acee0f7485175a2b173568af50c8c993de93a188283366eed5da3218a03a7ead96ca079818d986042608711057399aa2c50ed8154206f7cf33cbc00fe97c8126041fa806018023a88ad38c00ad86e06ce11fe02323810735d264f8174227daca8451c4cd7bd93122e08709a8ac2b85bd684295127c02d05f31ca4c880be76e574be5303812f47bf346a460a48c868a897ee64fcbc0821556587189e7894f3003b2e48210773a31b581993ac71b1b7a0fc0a54a27d0b69004426606aa1120e24e0bd853d4bc3703e4b309af3ca8c8666cea668d08c057121f609a63e33cc1f602c654920be55f062e45f71eff3ccb91361dee995881e8cd741e1d83ed80bae09ac77c068a13b1c2cb6ec5d484928f65ec1f46c032a51853607d2a81ea483ad8079296560dfc94d1d1428f4814eb903be0ddfc1ec0c3d630f98caf27c0471b848cfeac65e7648c5cbd068ccbc30cb1d5c1b539578d0543ec91c5a78de8188f7e2827438a60be6af31918704c3f13d93e58894aa4523bd1c3c6dd090c293830721efa92cf6abee342ada47ee3791e38f3c18f3bc3eaf8e0a8189922470e164e8e1978c3153c06087f36170aa070757e86fd120ef14ec048a67297ac7a249ec694842a77970f6d5eb15ecb44083131a9b03c3808393b7407e16fd68c12078a3169e9d7fd82f9307efb5aa88b111cf079279a046a1f3c91b05ef4846c4146ddf44772099428ab53c59c148cefd208e06d2193084991c39ba750a697b384bae34f31c241c44a1780503d58021c21c18c2bb29f8c9fd3d044a615e8fa563cfe5d08f7386eb47e232aa0c3d853982c40093d85e7f884732463219cb5b1e594555070a8e88161a219b1f848b34f9c4e39ddfb1338b41bbdc904c8ce939ce07bb0b014de9e96eea5d4c24a9c43f0a351dc9bca7908e4263e200ca781e69226a3e1815ae72ed3d6787a76b9f13f0169c31701847d928e7f47b672771e7700440ece7394086561c7aa96208a0cb4221484c38e0c6672839c5e48b43d0bdc75e9edaa5506361b9b8f486df24b2642c2af183317137d63e726e85387af14b75bd40c1134a819bf1b36f7303db1b3f1620a2387fe87ed3cf9fa7e76d3effb117feeffda8b5d989775005a0cd29f06b647508a49fe1fc0e7d230ad47f2126ea2ebf1808d5611b7a350c4a080c0f7fed937466ca613dd5e73ced30009b1ce8fb7042ae701ef9cfe31497b05c23cde55b90ea2e0addf006c19f42ea15fb1dad8450b1b6c4335688fe211a270b4ceeef448da64371bc3dbb2745868b5a8779f05f274349ac3ed674a79ab9a023e5eb49003aca3a1d101ce4b549d29709c16f9a2a58ffdaaf442322dbdee7509ca9f24342237e2db80327235dd051a9fef8943bb06d81d3a3b2aebb5e1210f7152d82b689afa8ee604c93558d14eabd575823951d2dc69cb06bbcb49f8bde4985c81be58554e61db493b22a3980504be3f5d9365540c30b393098ae8d9562bac3707dd2d44b9d0808f753f2389d14a558e529371764064332da6cbe6bd5a9f629f8342375d7d614564bbf624dd568b2b406b0e547598bd994d6bc7dd99fd52c50b68c4fa30c4a821ce1f97e6fb6074146c1751c41850fb635f8827a681ab21402b0cc7f860a2dff4eca0058c6de9b8021a0b32dc5dbe2bf4b29f07cdc96f6013f124c68eb2c0d104e80760a7bfe96b1eb68b948a4bc41de56baefc0493b0499ddf94fe0c4534f0677dd8cf49b42f4295a8ef748fd5d74f18d92a538ce479f09f9fe26a53a85c61d274873fa1b91f1d9bdeec3d8b899aa3449412f147f41f4a8fb867e09279cf107b80fa7670c9c65c6195468fe87b88f7daefd37e875387ec0b86ba450e45352a991c69f400ab1b59ef3e327344e599b9a25523ec5f04f589bc99d4a8e43e927952547f6cd562f6ce3b0553833bdfe80c13fd59e6e501e3fe0d88e2c508297d3387f44d25a8a309042939342aa120af78df9c2d9bd26a5e85985acded2ed1f70af69887f9ee908f1fbe73d28f10613af91fe845d0b8ae317238554dfe2f8db58dd2676a0c26fe1271ca824bd050202679971fe215b5a8a20a3e550fb6cc2ae9c386464df6847e3a676fee4fba29162fffbb5aa161f6665d826bc5625e48b7815cba118a2f17e93846b97a9441c5cb746fa875ca6dbe8a889c60868694d3f1d9f01dbc6c8dd8cf3279241a8957515dba02fe567d74da099b6eb719c51fea1e50aaf988d3a75fc8da4ec5c1e1e2200b6f6989332d3ccb9d744adf998a2e490c07e365c0471bf43fa4da2782a330ded6f287f3e2c2eb728bf49c595a843a429f16b9456450f28fd29390f92a6e6a15adbcc9f3702490a0078efc3ff0d23a0a5b24aaa682d4384783f1141072996fca69ff53c519c1000ca1f7ec2f3e4e997aa842efc758b7f489a20ce9888fa314d38d784ab94395d11fe81f90775eb28cb09e50f185fafb87d42f913520eceb4caa9d738fd3cce30969a9fe03d3bd3215567ac3f11b8e3611383d527a47f64ed0eef49e5df409fd21f27028cc56045e0bd277dd2eb8da47d5718878d66d384e41fd7ea3489413e0dde2cc351c7cd5b22ef35cfa14be3f879b4014f4bd3c33d7ec08e9dbb9a6eb1d2d1a4970afe7d5e03cf221953e0507abfdda2aa90078f8aeaf4b8382385926cb8c00a9ae51e8cdeea5d81a6f5f60a9e078bee938b1d843773a32a584d80afa60cc79b7f806a9fa8171e774eb64fd125bd8c9bf51cb4e9295ac7ef1ccc378652535793a20ab442931568f3e9892cbcf2d97d1f8feff526e0a177c3523761a83f10e4eb65689a64420a9b5bf552c55dab5d0def73e75e9ab2a20b7688297d2edb9fcf4f9da2a9b98eaa1343e7ec09fa360f0e3d8a63c660e38b22a37e8f73d1760a0187553f61a57b04ce58d1c2fd6d533539682df5cd23555d55fd261e4e0231ce35c5ac23e90030d842fda7ba7d21eed92505f5f8011b74ee301ead306ec6f94d9371d1623ca6c39db07e53315f89808f5a08e289bfb0e7eb02eb9fecf806ed1654c22d2d75a6f2bb6704364b48ac6ec6aa7774381d0dbd5f63d682c00718fdf06023be83195efec858210deb5839bcf9d991962271ba13ceef1aa87657908145656026b48711f5fd8ec83a9c9d6f54220a27f788e1d0597bdf2ba44e4929960ee29c517ebb6aec4a4a71a7f54f54012789d9fe1b272e5e20f574c8df092b0476bf2b15c3c30bc6d040d3752e6679b7efcec5b4e64f746d7488a30a5d2deff7679374f90b3e9c941575da5a03cb0cc27fd06d6b3201511ada0b82a9acde698fcfdf082ff068962106fd56515df6f86ebb22aef381dfe209eb8f2c681585b5ac8f15aa95ef3a5d27b1e221b01aeb6cb94bfc060e83460fb4781262f881f441179e62946881c3fb1cd6ec06877f6cbdb6443d054096caf782a18b5f0fa2e799d7a6df5aecf87a149dd52bfd4f94bccf51f47183d42aef7fa5db12cc7f470a465323b5ca9c5f52e82291e271281aeb8f240c18478f0e1cace54c78a321c6fe0b4c46977bc8efe0a43e81d74a56be34dea2240a87aff15ad5e2af6bed408b253e5d5bcc86b5f88a54a1d60e2e03da7d4596bfacb5fd837c461abfc7fbc793d6f60fb0fdf584d40c3d7f593e0811d3180cb024add8bd2f1f6d31b0d2ca88427b644b371ca07b7f91f1dcb121284175d156c95ac6fe9293d37ca7b3f54fe5bbefd717c578cc8f355ab8bee60aed976c70c333da7fa026a86c52b62cff57e365d58f859bbff5cc7e37568897476f0cfcbafffc3117a0f31d2d1540155a3fcfec4ee48587833e775989f18245de75b8f63db9d0f9501a89b69cd082a54806de6feb659ef80e06392a290b3fa3c89aed581add7f80eda7ed41614c021e38a4a5ec07621a8893c4d403d6341b2d09fe1d7b89e1c09cf1159612d38f0b366458629edd25dac3b01fdfd8b1a9b94e9596f0d312e627b6839ca73fa0509aef68b7f5a1103efd80bbc00b5ffaafe0b352fa89e1ca1f6f7ff5ed3fb86202d58286198e70c6dbcce2d6ef6de336be4cbfc3a9d14d5c33fe1f2e664ba421108db4d7f49b9eda8217368b15f97671bd97ba6352beb1eddb062c058f2992375732310e0fab697fe09e93b2f59b4a134d5a2205ecbf3bb45b91f201184ca2ef1bfad1a89536792122db00bcd135d0bd09d0e5dbbf87e3de9f0db71f495e68e89168dbf18fa25b8c49fdbee3b8e17df42f9c95ec68e089a62296f18246350066e475fb3f206ec3822354fb45717806137ffe92a2baf5db45faeffb1099b47791c9e9646563e75422165358dcc252f928295aea3c2e0325bc2149caf1c0f12a3f2d5f539f15558d644a38a4dea7efcbb96636bd5f5ded0926d877183c9bb61b2c019564d40e7bc25b88893166da4f481014c4b8a32a0a481d4e2681f4716a6e11088ebceef465128417507057d7e89d9bc0f44a9f44e60593c08bad20a38b092ef96ecd5552d3e19ca6cf59f43927c1a25b231083d9fe4d5ee57c92c82028dc5f0e0c0fccd7238b1d59a9d684edfb0dd8f987a1aa809a66d9048a725cb0717d012829d15844e5b7e984aa0598639b4edc59c1b34ba0b80854a722415ee0821c505e82d9251326fb62c248264ce6c58289920750855e01923cc01ddcaf8192e4423e8c671dcf667bc86b56dffc0c0780b7c6295a860fd02d59a8dea480707de0f005b3e2fa202ca30404393a2c66cc66a25b14b84861c04dfa54a2014657671cd68c957283ef252f6767aaca26108c87f8da9439afd4aa99ecbc0095670dde873f506b8fd20dc3951d139893c8fc25d421ba6c21c0d4409714b6d06800f1fe71be35f5e2797a7b95607115ac2ab0bc48229cf17ac30d03aa9ea05ebbe240372209e1d8e30213bd80824b138ed73ef590c7c1c05982e9b540ed0208f6ec1c0b5e58c03467b5bf0e1f9b71ef30e0adf6fa3ae6f472447eddbc0b36b85bc51fbcab375016aa220735cd920553e5988a96f3641007e6cc02b210c1cd411da819002943c14255bc0d65a22a92e790f3485cdec0057727996016b2b02b518240610599dfe40936790dd7b1cd070fbd0682dbf33a505c04aa0268c9edb74033df3e37507457857d5ac331cede4a75844bff8d37db8d42e0a48c9623864b88fc2865cc7e0eef1fbf42883d42fdabc9344da7aacb0805014d931ba211a1442edf0a4a850185badb151c2c37c631e1939fccce243469c0c97bedd608db7f624f7526fbeb4d3ae196ab346669b2c1bac5414dbd5f10b439266ad5d10e04a525f7d2dc1729d170454f10d3e6ac2805ae1e36c02c54704397024a5e85bfee0a15dca624ec0185f8ccf968500857fff1177013d41064ddcca9c6d5900d458db82a4a60291b911edc9b694159dc00933a82e544b5b53e3067f0a3651ec5189885ab198d62b0d08239bc82896ab67c0d067970b752b186658bc62ea026d1b081ca0d8926d42151c16ae482e81e0a552eeb2e5a406161e965a097e4e20ff062419a6043746760a49cf6559c2c59012b782b5070b3cd209014e395b4fb13aa0528ba8a953ee3a3e8d83ca98638a523511c840157d226a1fc96a5815e97fa7892e9d6bc6b1acd59867be60c124da0e69ac7aa768c8b5055111869582fa09262069fccf55225253396422af00af5f6c1c1f1514ac1882358ccd0db65942777590539f3d082e99371852f5a9c9c9de5c0e875143079e610ade8a8119abc141261aa22ad279ec1c0c2bde4e81c3cc025b263c221d6ac0b7647ce5e9b94c32dd81d898acfdf7a092431c1c2ff0a54084f05124ec57a2e9007450f97833af9cba0f44c00ce8c0fa1189078e9f9809c981f54c9428915608c162b6d5ac31edf102c5859eec383f368161c6e9050d0d3b7e03a15aaa6ae47d2419f1c5607ab7760262ea72874b850fe1248a18a0ac88cf8b0a1c7803251e951c535a8a047c5b71e318546d40c776a7a03c842a50fc3e846f845a15e01793e63e955f87b482828830f54e662195e98dcbfca6bc3c2c5ff0196f4c0bcb9500929ed802b8be8b2a6d2e73574e893c66cba357478f0d140b7ebd19935e3ac7c55581c5b5250105989a1590b8fb0c82202833564599158cbe2ac39e585411e17622baf48c40b7a0517a3850d16823adcbe882d6b1aeb2422c11411f5eda286628f6b874a6b34829b961272681acdae05f91d5690cbeb9a3db4830e8f0be2f89a46b03d62f1b7909fa622b729215ed1c887bfbe1a99d7e77484962f48386bd6f07276114e648a0a5ec816d430249d6e0d0e4459acd068ae98538005bc0e96c21a18de942e96ba149137ed125982c5b888ad3537086c79110eef96894a07fc02baba895db3e06f16a05a25ceab95a1255cd065350aaf6e110c3b213b588c8b1350bd843bf2922dc118662c8c84350b043232a0ca2294e2feec484d30aff8383b44132c287ecc51820da618323b0e136c571c993d800d56b58c2c72326ad19a6cb90996144bc262338adfd46e58b784eb98445528b58967973093053181aa04ca1a13d8b20e7052690bccc2055e5e2c6cac5178440555342e736dd41f7760263bc2becd7be597c0141b517c57662c29d9708bd8a216a9b038d551b164f6d72658522c991da10da659a2fda0099535478a828aa63b73e506cc4216bc12ad63f214663cb189fdaa139085ea90304593172c198656600bcac2a4b786cfc1950505faac37ff4abe9ba19c4b7770e62c7bc5435fa620c9546a586e36e16ca1528c049f2df9ef4da9daefe04cb1023f2dd6d2dda2342a5ece818b0916142fa38a926c202590536c6542ed8a1f5320674329764ca1a609151537a650d3844a8a19658d1b0d662cb7ad14608f4d27dc373fa2b93e6eb2e761aa185a1d16b8d5210e83936f33c8d0f3ce7d5345dba9aae9a355b4c52047aaa0b0f67137d061516980c5db687d8041b7c3002b8b70e0cad45939ba08783932341f4985480b60d821a10578e4e28755c3769b3cda7b0e09e686a4a0a2b897b23557b0a1be3996216117d790adf38f1f5cd44b9e2b2916e49c6a7dbabcae5ed528819a332bafd76eaac20449eb02141e0732c00ab6d7bd8452c860db83e0c661fac0e4efe0ce3f0c96ef986f82e5f0d85a6179edb1bd82b82f9adc57373e2935c35c2e1a02d2a663bf8283c26db244445f61a7e026c069be61effe35a1502f133a3aa98dbee85c411ef11d2d5542076737878555122d5ecb604abce86ca4bbdd2d89c6fcdc1be27af563f9c202ff18196e41be6b67e0782dbfc3fc30e969530ac148abe5025666aa0565b11fb6d70ea8f6ab800ad63a1f3442d870e66483631b2bcfceada18314d086b3d085a84617f8808f172979cb91c506eda03939f7358ec1c1594f269cc99356af17fba3312222a03a9984416913100bcae4079ce2d33f84730ca36db8866879997c4c601632b89470d00e17eabc863a142adcfafc7a0519aeee1850652d082f1a0a6e537a8dabaa71a19eadac7127c58e162c43504d2ba7a6d38686e381aeae3104c240c911afd0990b7ea05992cc359e4026295939a1b34687d7490c74edd705748d95fd0950ea812b58c120307238c948fb9e5e603a142a6869dd172a2fc0c60e07c35a6969a80a9b5fc5065cec70c5ad6103ad160c4958247ab9ba05c1c6a01236ee2f2c77c33193035d3396c2169be8da7f46720817d0ad7052428150af8808ec551ec8f29a8c6405057e5c0eec3065242b6c755148bc0283deec05c5862a67d06b924b42a2c1f645220f0506abeb42b49c255ae00a3b58c47ea297edb00a080ca640b6df2d110ea983812d20d34045cb951550c0f1e92acd5840551410049d6258b6318053e6fab77058fe4263c3aea0a09174c9f4b4666e0107fe7a015d5160795f741770a4dac0161725242ab0a4a53199d88a9c520c715f23db3554586464f1122cb83519a90aaac6455bd00a7c0259589491a8c07cd58a66a383384bea465de87eae0a082a25025934bd538b33c5d8ca12b6903414382761b0ac8e14388f4d2fc22dc49d709ed8d85c9497486c09d700dac39af70401190b47191d069bc6702b208a42993699ab1e70a4e560c7946ed93d1e90cbe845c915b828bdebc4118bf710191cc6c84ca02c81e6715950e0cc0614acf50da86cc9548e776016b2438d6b66a109a5061616075682863ad6a08a829ac2240baa4edc5016ce9e64c58dc94ddb508a1b935332a1bce2c6148fd9508a1b93e536a182e6865f2471d7c231f9241b4c8bfd94d4996051cb7d5a24322a8ecc11880996344bca229159b164ce106c30ad3053166f821de164aae20294e2485a842a9a2193e334c1aa9691298ab6c1b48c94356cd01b2fcd5559042b67cbb300e6a3363d690d2cb893af18ced3724a870c172618938bbb046ab52001a43646a86c35df4059a8da6303e898501998b078654199a38203c306d4222fbce2e0daba51d8a720ede647ec33826cee717d1eea0241af61ae0c0c5cf4c3811df9ad8195f0cec082663d9495eac2beb57092a972bc8ede9a2a8fdd6e650d08e2f4b1ecd034b4bc663d0c4e43e1f145326e9d668b1e0db790164bf0c4f1b12dcf9121de4788e72ef1c1bd767a83e90a5b700e4d7ce6ccb53eb50186e7988e54243b832dcd808e131871165666fc50607971ce414d055c5a14300fa9d8f8aa85334bcc8403e39c9a04c9cdf9848a0e0ee1ac37e1ac59686e7e8041285254db62b8e64a3c831dafc1a0534b2c0cac4a98d783c37b1956f6c5abd1f97e56ee4ba3a287e757f1ed6a7cb348db605991897bb3dc9a064d6c593048eac578bbd60291ca146327e90294578fd0c5f70b1c510521b4280b275e292858285f80d2c76ed0157cafc1920683a5ec0530bd631f17e917c0f4b62658985d1090a269c4bb88061808ccd8bb23a74d1ff5b12a595e1f057142684a490b0c77259d707030afcc47c3e6057d54e00c674a973eb00e5b76c60e856a9698b2b2701398c594e6c5c72353806202a9bd0f53806201ed2aad98fdb7050527180ca8c99f9a506ae0b37bb3a092e2c5ec4c4d28c58cd9755b50ba8d67f6351694ee25be706cd750f90cf5baf9bf286e2cc5e4a5dcbc754632ced8dcc9d00bbe577934c1a4606113ed88afd19d7294a0c60e2d7c7e61dd4ecb2fde24b6b27aa4e39565b8181fb31fede263fe83431f5d1627124160dcd504c00157027219107788246b0eecd328d0863f9ff3aa961ed01ffac5a5964975eaeb550cd874f070f2a04fe48dc9f3e91d86042d2a4b143ab4e1cfe8cb2b40a74e682fa1d68e4c3cdea10e0eca7a4c1e98b967e481a97a4c1e14eb9fd3072bd6030c0da85fe8b98eee0427a4ddde9c0dae62c0e17dadc2829bad92106f2613d02414d249b13f982283579d8190a8650bccc4562414dde1274a24666fa0d7f84e9026428d719e870b89a1d14509b6e63220d8ccb74f5e0826de946b4b986dbf21997c89ef24d150af783834c84a1e0f0dee8d784e61d073b67804547c87c2b03667271e620afa80be2c2196f9e757a04e163fbd03d51ab70614a873789de3c6e78ca8ef500782349656c0b82dd007de65d05716e8ab0a538bc2c24284e9d23b5090308bb5c8453018b85e43ab23c1b07ba8d464edabd88a2212364e08036a5e9312262aa1f36d507957afdf8b85edfcc37e43424da8aad50201f1af0565a1820246b1866542a961cd5366411d6a58be2e882fccd6e3959c9257a0ced99f428695e8250156e8f046c0854b0280d9fbb470f49a8b701eb7045b633e668d4214d796df92d3630b6b676268598436da151ab5341e54017809a518d2f46b054a4be35adcd0fa249e8be341e1ecf53c5b7b60211195607a9ebd0106e7ba0ab879caa2018707ef09382d20c542e76902e8ab596940c865a976c47b5013c8d66cdb7b8a61ab69b6e6db1f061c40554b24e7eed9310d4ec19db41bd7aa2e0758ca3b66083dcd33c184aac873c184e334df31941b9c218fdfe2b5410b9b6b0e0905759d7d6103c42ea1d6985125c82a2f604365ced6a86eea4ec7ae20e791d9a52e78fde3d34c737dcc9123bdc31130768fc9c3758c87273007ff0e8168679e5398fd730af3f11685c7fe0e8570a6b102f30b17f404ad97b03eba70ff42d08a8966196e3e0b82381a9984cb325c3e8159e89ae91460b0f4b502a6b1e1adcbafc15a57e500ebbb29c9e65beb656dc5308ae9d45076c7455134c216af8540a419610106e1c10258740a2c2f628b8a91e5c552491834990cb1a1ca0df34da8acd8b158cf7153ea76f3233d6d56be7dd6986c7af616f41c2a0213fa6983c175bee3a4895942a215d315b224d71262464a708ac1802bb7621c94604974b38a4e06610c2f7b0aab197052d26c41c239e247b264795ed71ea41e7965decf0539f758c4a0e1e11d110bef50a88461b520a7c467893ab888e525d4a920971f5397c23be481fd784c5e0d8fc983fb049f73cfe577e843c3fd8c403820ea0d0ae136efe71416c578bc3d6cc1d9c27d93124efb897002a00079577c0cab01480bb9c5fd1bab0148b3db026c3500694b0612ec856d1b4c6906f106d06426dcac34e09ab049f37d58dc6c199364cb6af4e2e4f15fb08ab370871458c5e1ec261f6fd1d8726f71ff49d5432b26854182f5331d5e0d8cafb3a7af027df46a647093bd684a2aab708782c36b62169a48dacea901571c69fd4b30c5cbbed3ff0553205788ba3569454a025894d12113d6d035ed1e6ba1806c01aab12e4ee1c4c25559d5493070096264f679e750a9b2e0ce3f0c5514917931a28e7a6c456be9eda6601bccc4068679804d0a6783550936db730b2cb8a4c1d6b0c17951d30d8e4b608a256131cd403329c00e2d26e6d1c86027930567b2324ba8c974d9344a2038e5f4f60e76d423c842472c1d17c1200b1d607041d26b12a3e20694fd57a01437f08c8085fd288a1dfd288e17408a1b9379b480b2e2c564e42ca043b162b2712650d6632adb8b63dc50628b968cd506cc986e1f1cb48dfca550764d53357b336fdec87a540539fb33b896f10a0eca2102f0147ddad751c1169343af7c2c25aed0e658068fa7e0c7be90adfda7f4c8f5a46b1739367e82a7650ec049dbec6358e1d46d0198ee83a0304c89c638698f0d074eb78c92c5a4ab10935d42d6b8226fe7a585f858b2a151e9b968433cf10685393fa7f0086f5178947728042bf29042d8ecfb867908ee2d0a937b4ca1dbf4f9f04bf4e515a053eb9042b556dfc86f5117de210f3a3f1fd287a58ae70d6ffe3d0adfe0a07f8f85fe3d1e86377818dee361788f87e10d1e3688c74d797905e854028c126a4d45dea22ebd455e7d4e1e6ad5f39646f71681fe0d06faf738e8df63a17f8387e13d1e86f77818dee061788f870de871970414069eb571c0881e7771a4b7c82bcfc9ab6f91879af5bcc9e40dfe41b0ff0685b1bc45616b337c4a21ac4e3ca7b0be452156d61fb612bdc7c3f09e1442cded592b06c8c5e34e0c50adc78d18e53979e52df2ea5be461e6f3b0930564e279274b0c6f51783ce720a63dcf292c6ff1102ed8794821340e3ca7100ee27c83870e6dfc13166609b24c5f58813aa54bc763f2da52c773f2da4ac773f2a03ff329fb34cb5709f46b6c3fa74bfe39859aebcb14ae71fe1c0c96c71406cdf7550ac31aebcfc1607a4ea1e6fb320ff10ea567f435a39b9eadf93783fb1ad14c5d73c1cfc96bfb911e92d78e09784e5e2b1d3e270ffcdc43fabc66f9f2ecaeb1fdece78ee7146aae2f53b8c6f9b39f8b8f290c9aefab148635d69f283ce4b1d26bb1e03e9d44bd445f6b767d0d3593d7fad31e92d7eaedcfc92bc73be4c1697e0fe983f32e9e13087df16f5078f8e7141ec75b1496fd1d0a83af8f290c21bd4321c4826ff0d0e3c9048f582841d6e95b81ba2a9d3f240f16021f93d7cabecfc903ef339a5e609d6fa1a104ce2e1470b0e3682c9e294b87ffe7260fc5442858adf4bdc0ad89032ed239f3af5a73829a6858e15b006b0b3f294a28cf89f90d4bda73030ad63dd3eb1ea796360d28bc226f01ac7d3dc0cac4456775991df106ec42b8f03135b079aa4d2835b079a22da8aac6a5a7d984290a535b5c58d98fe94eb3bc800bd3a0d1b6b5963a2956dcff08e79a298127becfaa09cd5941902716efc30ac273d295d44467caa95eb6dbbdc192fc164b70774231498cf686b4b738026d5b0f87063d5b6f0c0d7cd2730a93667e9c18a2f9d1e70c52e5644159330d1e46b5f32c41295cd06eb46283db014f03cc2f4b63dbc124e0cae2d860bf9d49e6c5cc119466e45a16b66ffaea8b2501c153b886eccfecb7657faf2bf82ecb948291704cd00a230fc512e8145b6064d99f33b2d4b71859d33bfc8066fa871486f7a63aece5ad19db31747cc2c22a4196e94b2b50a740383f260f0ccef31e92f20e79353de71e04c1cf1b345a78f69c400c9d9fb690b8b7284cef5158df91c0f744d0bd2583f0bf8714423ff33b4ab2bf4321588c672bf860df8fa7f4c5b40275aa8afac7e441ede63179757f873c3877e6217d10473f271016e3dfa030a7e714b6d6df37283cf23b1442efc9430a21e97a4e211c03f70685293ca770fb2f3d3f346905e8d408a6502d1fc7f99cba14de210ff2f2874d2e6f31afbec53d3831e0217dd01fff9c40e84d7f83c2c33da7f0c86f5158de9a62d4c6873d2ebebc43212ea13ca7109ce3330a1bc4f3269215a0ab36b5f4acfd01bce963ea40831f9357152e3c29516c9091393f65fbf8ff430dabcd771d87289bf78942338840077b4f16f240acbd0a74552582e6a9828d903c78b587b57a41a34880c5452adbe27f969c86133a5e015585cbad41b5c5b2018547482c80b5884b0eac6836268b8d41f111af59594007ebca03ae9de101778a123a4b4ae0708c010695e5b2b2e736abd16195a72c085750a38393c60599c1c0d726ae2f4d84659e240906cbe11299b52db2bd5980052a952e1cb82aa08e45b0e6940458498bf3d68a06334b16d0c1f1c502aead9a4a7ca658b6945ec0358d83b3a75ed598275eaec21d6aea70ebd60a5c99c874ab708a2d655aa772165bf044420beefcc350554f7a5d036b7b282453d64a74e0b3254fca1258c4320e7e3499130ba695d007d0644c4ca022816693608f4a414dba6d41c1740da849db4ca82aa1669d311998352ee5b62d2098ab816a8e11ce3f28994df3f3b3c5fef6500eb70f0edac6e2565c813a372eee8fe9838584e704c23ac21b14c6f89cc2f81e85e93d1e96377858dea3b0bec543c8291e5208caf49c4238edf3398507068e4f381824c832038f15a85301223f26aff56b3c272fe577c86bc6f22179edf892e7e4d5f40e7918383f9cddfd2d02a11ff30d0af3730e42d1e21d017c8b87d0e8fc9042e8727e4e216610cf298ccf79086bed6f5098dee361d9c4095acbad9ff971e70144258f1b0ff273f28eb7c83bca3be4c11adb43fa30177a4c20a642cf298ccf39e8d37b14a6f7282c6f50d8766d3da710aa4acf29c4b4e9617fce5edea230c6b778d8acd3d3a60109b24a1f78a0a9ed25dc6567f8794bc85e233b297f52c8a069515cfba99264d976247f4e50e71fcaa9c112a6e770fbae5952dea1728632b1d5e3169b0507770c0cb8d0af17e44314cb02952728135b63497e0ca6e40652c9fd35aa2251cd50f63560efe0c2ac2b3f05933f7894d83318bc837a89be2ae93bc1e11511afb8b18c0e839bfc184e8954a440f3152e481db205e6550744f8223248438fa750ea133874eba78020e3381e83411fd180837a975899b18ad928f51d0c4ed01b60b7e7250a22e184b03c2ea303d7312a47164b66b0253eae024120569e83550516341f778b8f50925627accaf3ca4e40b49a961432a82c0b64d681adf207d4f278667d5761d0ad94e760458d2a4ea2981786858dea0fc7b50c84f6a63c866b505d25a0e23d86655ed5d996760654c304578c3e6106ac381c0ffdca2a50ebe510f7f7bc850b4ac3c71bce012e8bfa7e98d66c22ee165a852a0acabd335578c87f7c28b78b403e2a097c007728c9cd8b23f350331bf8dcaaf442cfb2042ce4a05e58b6c6737144e54ca805d6c2127198262c773e9d39e465793471ab30709ad5f11cac796d01163513ed69839247ff6a3254e71f826acb72828b9822a5edd501b77085cf804bda87057baaeb0d984524dcbd2d4e3f8d6b50410dad2ee20a6a602d8058b8d90f445fb0b12dd72eb5c8383c42ff1accc49615540b5e24f30d5c4d336d280b571bbc806a3c9503b384b12d36da60a634c23d79026c6da6a1882ec026b13a2c6904e765c399e80ec5c9398033c18a62a57ba568142db64d9302595c64492b2a0cb0c9849b82e51443666768832986cc06dc04f38a216932e0d1ca439a7d0c169485ac48a0934f33d91815d8cc1073b372eb1fbb81b3d0814b1b60c7e2d840b3071814902423cd961a1f6e014dae78c5cdb03ae1a8de41c9b262a7d50f85dec60634111e8aa1b32fb5c11443a1c023c0d491874a3043b883b3d0c1feb0e922ab25b85db173714b8a9330f73fb2869db5a42c1689a17de435baf31a1baef9f46f572c25388167eb72ad867d3c5e968b8aba755ec059ece53086359992d01b6b2269267e55345431a09a657a3db253774255239b6241b33d38380d5674a48be6aff3f1345a03ecfc430172b94767c36505879e6321b2860e9179c29742f28ced4a34f0b00aa76427d0889f16da17605a216ad0f70e2614ce6730e06516607292d4f99789090a638b27041480099e073b628db780e71f21dcf29abe639a64b37f169cbd0d6822cc6ad64e626cc21d133f272f635ee503fb3b6e002d8420ef02ae2c7a5f38274ba80d6c1b90536872f4c074c580b3f129b0b04a6695606bee264990fb1fe16ebc845a7737ed193fba6e67f59e97570233331e2b549e5c477acc8ee2df614739de6247dddf1995fc6ed56e41b23b50ad82c91fb83efb210c1ef2e07f040636c78e21bd830aeebe69bdf13f000337c80b157e071594e79670e5c7820ebde1cf25dd73f189f0af8a3a5e6b532d7604b52c28351f5e2e20e779be816c550a38d814bf9b853ea84d5b0ab2f5227f4d31d7e7aea8795886933f18f12c2cdc6b3bb50aa63e41931d7f06088e6511d2f51632d89a54d2cf00610d2b3d8683154c39cd1bdeacf42a7e506f8228670559548e6f1d2ecdde6f89c6d6827688369ca8b12d75269da0cc090046e637e01495ed93320ea6f34b8d491390c94630fdf921d4c54cff10508012437e0ed7169005ebc1543dcd1df116df156c2d963d1e83a94f10e8f81920889c8fafe1c2cbd71e024123ce021004e917fd4597551ab7fd97de470567d31ec71b707a9667913aff906e6ae63b6da94ca80b8e2c811d0acc6d6bab2449f164b125ba4ee3baf999f65048f62f4665708563b5a7db8e909ab0d7a9de25b4335b802db21231d929dc2926c6f6bf3a8e3198621720e00aae553404dc29a48085826b8c3e6ad0d9d79bd9aa9f91ce0ed8840cd3304f66cf9ba02d3086fa02e19ced91798f279cdafc5ae66ea3dde016f5bd4e567d114e7d8299e8eb063a38556b2083bebb057587232f07585906535602a565054e9b4eecf67d6d5d82b69c38dd2be8b4e5841958385f3668d309d9e3123a6d3b177726c5778c20edae2102574d606b0f75dee2fe54990dccfd1214d889fb7385350c5f5214e4cc7f0b0eaeef1470b330cf07900cc048c9872196e6c5b0cd2d48c079c68385110e2a1190b30205933761d37d11973fb31d82c5c36767ef804cbe447492aff896804133d3e35129e6ae1abcf688a07015acc6c71c8485eee72cc4f6b3e73cc430a11ee6d0ecb0e13da1f26f4815dc9afd064f52788b2770d4cbd7040bbc6fd3f3a555caf2144cfee4555455a9cb3a985269381c62c93d39add4c7aa5bf35ec3edab706ad230fe590a12d2637984ed84cfe5118e6179431e810535985370ee0a608fe834e03c07de000c6d53ac003c31d3746d8061642fb39099c90bb43c88187b5604335d82186f7289654419f35e8e4ee80ece7b37c52c9ae1c29a2dbaf53aebd60113c987604a820269fe0fc040785dbf820973b2b056b11aa91b76a0bdd6ed3d4930d09afd251084e3d30e8105a84342ad9da5a1d877ff236225c58a759f068b3dd55bb37593ac87a9b03073df8e3a5b502d956c16e0536d78a875720a749e066fe975f6e47a2ee7dc270b2cadccc5acd475d7faa98579a93abfaa01509db0719960594933b4440ab06365d3e50c64e23a64b4b80aa599e116ed4190a84e60b39bf91a320874cb3b708786836c2d0b276aee1368cb1c031215ee5800544494453adb23c53f072b0a0cf20697b647eb6eb08d108e8258d91525b0e5a0b1797b176b9480fb7d1ba6bb2ad5af1359b07cf110ac71aaccb19620d1ea3f6e4e46c0614799588558d95a0a9775d4672bbaab307005d220701d2c4b30dca324e0fc61d955a84a0a483f41ce41e4e5e84e50169d2d062cfb633090c70e861179de9e6d404c8bb8c0e90b1a97e11a3503ae4c862b388348384040e073ab80f20753888555cca6f30319fc5a5fc78490ef0d308883648460695b4b4b4bb4c02c6ce0024634522764e66647770766216bc54e71efcf3121334d64dbcf63c399436bc1d4002b79716c505db1e14c74cde9891bbddc1cdaed063e48666f004d41696f14707ee6e78d832bc90433274f41b5004042998dcc4d366ee02c6c7cbe1e81a5590b8281ae965b3873f21ad3055c9e27cf1a1e2c10df009a085b7225e08eb4c84fb03c3780a6b4b48448c0d5bc88103a8a6e004d84ada368c0859378260361eb292ad984b3f0b5785e809deca6a50d6d09f206ce42d7522b0116f3aa316bc1f20da029306d1166c05592592e2399c6accd800966226b89f7808a87064bf696fb7807678a4a0b7c0618b043c2054b54207c384c380b1f440ff3faa94067596a881e6c380b5d8bf80458f21acc3e1627a45b4073f6203b1b7079628b299a6d97c30d9c89af6564020e63463140674d5fd86f014d7969e5360157c2e20442e45e4c381b9f0483287e493c5b1e770367a16b4d19026c77133bcd0d27ed9b1b4073fe5ad85bf459390aa1cdcefd16d044d8f60c8979d874626e8a8b0f3760e6e441d63b889cb159f174c245d56b2873645e42e14a7d7a3d736d7dd906b39041103e4aba53c5219866a599491bce1c1a44e11d0cb74fa58580a5c560369c890ea270717a4b9a7869c62bcedf029a720261b868f9ca8bfc8452f00da085d061a30541edb3ac584ad73a716fe02c6c2d0e1760c92fb2b365ac377016ba16870bb075218b0aaeac920971f80da02d669a9d7522f4360cbf81b3a54cf3b3e65538c5d0f6f452ab9857fc3cd5ee4c744149e7a97667c329b6ccd523136c575c99eb3936989632b70a17b5948555b8a4b83297bd4d19fbff405d8ed6b6224a88fb1fd94d22a11e6ccc6c4f8f25f159b4260d08e316aea662756c8ca58d532fd6fcb10bb8474c73d15555e51168aca8bce6c9ddaaf66add0e26d93f85529ff855547acafc1bb870f1f3f81198ac38f10e262ce8961f81c98a79ef60c23dd93f057428bd7f0b170a5ffd1198d6653b8bf9d35350e31a50ab660b315f05539f6033ab7b8dab9eb9be60a3ab1226bcbe6dc5b43b3dc9b8af64054e711ff7be9485f4623f81ad6c47f1f5a42a2bd882624a498b60bbd7d3bd3ab8fdd07065112e6af1c212ec0a9ce20a551f16e026ab5d57d999b5acf8557cf9781c404029e78d10a2f8b76208e8fb16a702cdc6f87448fa70eb5eeff13e1907bbef0783d2118ea5fbf3817ae092216eb1e5c56ac1019efa1b8bee43b927d574a57b10364f024263b108cee668c46e3bdc8b8ace66536145754de565b7f5ac14662f156c57128d4da760c6eea5021e8671a5209e927d174a12adfb86777c4bde0cc99997e107be0623004fd6deec576d2e5d00ce96cdec3a05211680279b68618c990a130c57163102fb05e4c9da980d6a707695849c5da8b73b4f770d397bc3c35938e34129ae50652975d542e9770538fba894cc19d9f09c48fa6a36e266235e335512f0819897f2d51466390a029116366e154efe80322f210b53a4bb0c972f8227dbd6b8edbf70c52ea8f8bdec34c15cf31190fcc13d960b888a443443addd8fb18c0baa3be12998fae4000b131618e824ae13dcdafd18cbe8821eda329c6223c0ec0b72a8867692c3f30fbbbc2ce1167766ec12e6fe479e40a9b9bfde55ed953f3fe9a6bd91b9196b1909cc26c4de77053b24c7a2dfa46c764b3594705fb266b68f3009bb35e729ace8dba2a0402d7c7f0aa53ee951d24f00b5d9123bf357c1a0575eec8959db05a870ddffc82be614aa753906b3fa12dd2c1b7884f6c391e5f0d6c872796f6490a93d1e59f0cfe72cac31711e19d8c3374606ebcf6fcc59c06da94fa6ac4a90e5716509b57ed1dcbe826c1e5556a3828be9a56a2e9d4174823aff201018d2f4184cb169d57834033b709dc096f6982c23c313f8d31b7055c281474aa60fbca47182b130a15ea6c750458d6b4ef3ac0613f983b3fc1a57c4f31c9f01356f5e55aee9166e1d02d910ad6e1acc3cadbe2a12e1c627b770751374d60d385a875f0054c34591caef38e8d740905b0b12df41066ba59065bfcc44141f4f708b37daada28305bae33198fa04815eaf9134be89d074065bba927119191a9de3391cf8bfc191e57a36c8b16a4b12526c4245cdffb80aa658392b9b0996144fb0fb61c12260db840967a1c3ae8931053eafc2a9d12d46497162ffcd8f8c92d46c3f587e6f698417a59ac9269c4a0623610a7985d2db821226310b1a078b1ec763b888ad40f4d1be2a27adee2977f44e2ab77697ecba82efb7d82c38c564f0f475015791b866b0359bbc8a0c2e00b191ad8c0b32fe355c6a6027b8b5cad7323ac8b6ea6330c5c5428af76aa13c4a5427193eff8cfa487db6e1beb5c0d7c71beea12af17cc33dd8547184f249a5cdd2502d2b649ef3bae33143609fdf738ef8bdbec512dfb6ba3c1fd93b42e5b5542d83bd2155fe3db1f26fca957f4f3c82160fb8bb573064298f9c812c2ec289e4ee31584e0a0ca21009b756019fa1cca9c675e93700a1722b00d39c085989977a17ac262ca0a395c5e7804aecd232b6a2b1e16ed031b868f54dc3e40d07e4c362768861bb6259cb869f2495a8dde175fdd62b54a7893bff50c27c68b89927161c6d98b2996203560d881db422b0b32a16e37e1803d244996ee7c104432dea608bdd336ec675f3234c26a64f6322966d66094b085f7b9eb0a0415acad6e1f4e0a0fb59cc4031661c46d65f0d4d1a4ff507d61e5768c40d48e1319c120130b3fb8fc0e046f9f01554909cf8f8233049b3ef1d545892fd2920bcc2307c091980bcae78e6ac45699276fb1806dc8460029e7f08ce4fcc5f850b9a27a0024b70f956314db85d2bf4621caf9972ff23cfe29c147af968dfa8729b59d16e6e8ef15356349b101b1436bc8baf67f5f1d54aa83062ea239a2db2ddc8862b81bb35f7c16c644b6e693eeefccda21ec1e5a502d52298fa24ff2490c79eb1f0256c38830b0b0018e20d6e9445adc3106f10b96a5602867803700fab8075025c342cc0baa7062204ff9681c05be5de30108050a8ce6978e2ac4fa7956777a4d7c654d8c76a270d384f4530e070017700ce42336f61ee80d06cf445355f956cf026fb53288c45c72c407b92d7fdcdbb96af0b559fa12c6c35dd6333a9c416d80e0827d041b2ba94260d84685a56d8722840ac6fae00866988e8be16160b515476259c4b807838fc004cab80699afbbc4a6ad6b3410587874b8d18212c14ec737d6beedf43065b0cc4d05601157e1496156cf54aca9e6183e90ee14760e88ed6fd315c9d24a4991138578d4331f3883e3d6d13d8cad89681f830902fe06af5215804fc0118b4ccf14ba860baea8fc0f84393f706aa9ad760c2ae50ad82c91f383cbcc50d3f0013aa22ef1d5430a4ddff08cc9ecedc7b88caaf02452db3fe1d64e0f7f6f02330510bed2a58d20288595e785d42ab9af5e03657e0e40fe8fdfe86895980a13bc6e3577041b9650959d45c5c06943fe08ef7f223303ed6d3343fc585cabf802ba50ba3b10097b586e1e52c221a324f530a6ebf873cffa83c74cc5bd0526cc2793d44aca72dc0856988ad88b2724b56386eb5d484dbf75b2db5e1345fd6d2eca89972ff23d2ec3459d6f5345be7bc735e382feb06e97483cfd6acdb47fa674e06aea7cf8283e91370b3b898fb08e11e00af7b6c76bb15b10f30678ab5f1ab5903ed2bfbda44a4575377dbf305a1e682b6e3f971e9319c92a1b08a2c2964cb705133e498e6cd3c5cb19f4336f8afe00c30bca642c0d53538c5131012286d3c60e42a102d5ea63700b39eef4012d43bb89636294c5016b6d04fb97b0897e22495abe190a6d2ada143f1cacfe10e0d8793f0989933983977fe053e1310b39b01f8569488ed1b2be870592d3f07ec47891120cc4378c8cf19ca1432dc9f9f9fc34dc39bfdd6833d080be83074389ec35505873d183ae6f0af8844017b5dafc0ce06dd60be10dee011701dac9435b01a35585d03f3fd8c03fc14ea4772daace606ca2a4c401361d45380abc602708f16c61aee214d9455b3d42f47a84e33b505ed6d5bdfcb005cf3d42f47b6fd380e029c65c63c89735776c0afca5ad560750e05cc8eb2700f68e14b45c185d594a61f54431f86457c8753704b99c271cc36f5e667c4994593f8a0f376a7988f85d3e9f0cfdc6d8e0baa2f09bded9c8a6ba68c5a2dca5338f509ac72c495959c7c35dbaff58e1a34c61c8074c505b8492ccb225c8c27ae2cc12577a5ae2b80f9b93cd309b48f051aef6f7f43a221811d8722cf5cf1fb64c4c226b77f09c8135fa0b211ae40416104e83c85e6ca74f3466198d559646e4e19ca0af024a4e6ddd4b4d2f5586fa98ef46cf2a986f478f2a986f4c6e487af5ba5654b1166455a050430b1b105ce671883333ba931e6b1012f58daa54cc0addd419915cceacce589c4e59b6cdd12babb79c355d405f657cd8e6538850cd61056dc090671f531a0fa04ce8089f56780a85ba27e091bf4ce3585f801186ad1ac5fc185814d0a3f0344114afd1236a8d1a6f8233014d5d4afe0a2daafa9c9ef428c9d7defe2f1546dfc7e100aceea53b038693d580161aaed8ddae598ec455e5a0681b32a25a14759730e7e32877882ff02205dab2200f745406c7110806915f0980017c718c2c41c2c17ac004ecca9abccd927e6d455e6c4893935ae024ecc8193155700d3cc9c630d1046e406d8e264d409ac2eca695270783ae692d04c70abfc3c14dc52d0b46b96dcff8c28669f58b21a3415ee6a74d7c269663a294e80132fbd01888b431230af0162ebee618a9805078d2412ae2ec2c54d5535b4d5b6cfde2bbb4eabe6d0d05c3685559471fdd5c9885a53d1ca3d0a6e3285bb35857146b8af2184a361146059141ac838c74af4ec5f2c4a1b2724dc6ccf4c7c7034ad04dc1785148ea69580651110e0929afc15b89896b47ece5d8ef8dcc06013ec4b546e4255f27b06064adecf4726bfe363795f054c93995e06d323c3cefeb2bdda1b797ed92b44b9ccac780da426e331445c23ecd03e0725e43507c2e44fd10c94ede58219ccd3a863cc1c5fdb97bd34342cddf96740f207c4fc25045471069a3520f5492b01c5d778b2c24325bba184d9199c43fb65039e7f68a69c66e03c55269c7767c60bb868118a7bcc6d401361d2232cab70590fb0d9fc925e831dd38c974574879e41e2ef00b49bf07cb987b450e291c837ea6602ee7a8c8b6724eb01deffc84392f5bcaf976b635942782a4683110acf06772898d5b161481f1e0f6daf4be8e691e5f27c64477c6b64a865cf4756f25b2393df2d5a4cef9326710d4c7dd2443afd040896fc0471ab609a7db8e82e8d885919ca5aa4f04e0a09e90d482cb8dc405e8809016aa52112caeba50ad09add84b3105605460bf4c58ac03b1874c9dec059e8e0f61c0997d7e0b21e5e3bd668a131234fa35b758f70d3bc60260c6ee11cb4892965114cf3645fc456354b960c57d50cb9ff114bc36e62c8b2e5f214f75e4e9bbdd80a99e8809b396965be9888fa644d9c891016a247ebd3be0ae76135399b0216ece564bf3413b34dc7eb74a448176903e76a89db2ed708ca8add04a98c0f81341ed82bfdd23c4f7896808a028ae57ebedc554a549630612b577c06a43e6959c8029eacf02c421de144dd733ec054af0506f11910468d6223d2a457c1208fd20c01e8d600a1d62601e3c411d3d7636b814439415a9906ecec1226a74ca4ee61610ec0e3976772b506529c266f112a2b2872d30b8205c7cf0bc8b8e803a9b362788abc9658c2dacd00cbb30298ddac58bd35014d84458fafacc2553dbe93445b80709f8c020cab809360ba4552c1892a893eb02ef912ae4ea2e627ddb3425710ae6cc2993c0d1a6e9f06580d74783b8b0d67e1831d815e6f3c58823b345c2e6b745255c8063419e3278ece36c9e6a86669f0cb063bdd039a180f3f01e65540cdd5c5f361770574ff232f0bad1343579b7d6b5a4278db65d582d3d7269b0a57f92198a21926ed274070557f10f706265c1c0a3f0283bd0382776fe002c1dd5fa38a93155903933fe0ab56304d1a121f63c22b1fd38fc060138434fb6b7000d5957d2deb5520f73ff2462d05b6aef378da7831f80ead741ddb2616b48fab2454845c45b05b026294fd727cb38dc180776c8dda176dbd9a92636dd2aa9eb555303d316dfcc78fc0f4f5ea6760be77b6182cbc102f04f433ef57c3489f27c05577899efd99def850ded39c3dbea73ad448e0cce1999be14b52859859c040b5044786d295ac2b38f34c78032115621e6b9d9222e0ef6b1f4dc5dce3299cfa04560a17701dd3dc2dc3691a61c65d074b27004a1a26e3152638337be67a3acf77d670f6455d5e01e2d2ae00b48f98891a23b82b0168aed13aa52305edf55323b6008367cc88a1adc2c12607af774305bf90eb97ac00211f5a01943f7812ce23862c8250cc59be800976a086d7eb5f143f0e4e68d138ff90f0472d8c751245b35675908dba04b3b0e1baea6873864aebeb36675c56157dd5fb5235005bb44453f534366368a5dc8259d86ad4608b1330aa30434414951699a43326a089306a6e4269409a3bb35e55c32da089b06a86367b7abcaeab05a7198a0b40029fa5da9474d88026c6a4397ab2afa67cd26304962630730775ccf78016befe1cc11d8b539f8a82a31453106a1598e122823b4873eedda101675f67027acdd41067af6cd29af23da489326bb6ce4ec886d36c9d7d900977440507cb3c2b70c5e9e98fab8416cd193074212c28f0c418784d5c547c41a85b0444d51780b01f272cd80c3fb1068a6d212f006ad62c1ea3adf972ff238fd19ef8b29a9bc0e95741e78862de73dcaeb3733caa44004ef3a0b6fbebb5e5a8004f33b807815242461aa63181e09aafe00ea700679d28c5a214f771175329f47d001214af661ba0b35a60f3fa25e41e9704e0b2936d34eeac095b5630abb2b66b54eb9d6c6be84eededf5f9c84a7c6b64a5be37b21adf1a19a6360f8786c7753f1f1b349fbc33380a219e8f0e16099e8a2446018f47877b08df181d99f7c7a3c3c0eee9e8c80a3c1bdba1a0d6e76d0ddba97e9a14d8d2b8d0a43e1e584eef8dec706f8d8ce2bf6743833cf68db1e1b16c6f4d5b796f74b0e4f8747418e63f1f5df16f8eaee4b74687558f87a3235ffa78747832eb1ba3a3bce0f1e8e477abc519f4c2fb63b0acc096f81835aa5536468deac1ea72fb2b276b68f3ddd13d5e4c6b74de71bfc5980beb3e51215a03529fc08da50f577d600fe9eb923534c33e9c615cf2793ec578e2c71b730ca76e81525fb11002ebfd6a8af1048fafcdf12a233d74750f5ccb7098f43f9c817cbc370347786f066080e6d8767367f3717c7d0220b15ae9fd707a0216e1d427706eee42ad3ba4e793869ba39e4f1a16d6df318db8afbc5a1c8193a3467fa39837ece17e3e6f50941fcb4e6ba7170405b3ca955da35abf2a700ddd3c32d821ff7064e0999e8faca6f7468685fce743c33afec3b15179e3f1e07cdadf1c5d2a6f8d0e7b471f8e2ef432d3b3d1e196a7374647e5bfc7a30366a647632b0a6479de34a607366809dd3c2e68337d3830d83df07c64877f6f64477e6b64b0bcf374681e17f39ecf5aa86f4edb1edf1a9dfc6ed5995290909ec2a94fda1ecd7d611f249c4ffd94fbe5788ffb35bcc7fdc286f29a2141d909156fd5e3ad69237fff8c2d78bbc873b6e02e9337d84222fd7874e8f29f754963fdf3719374d2a8d61756d6d0ddaadbaa0a6098909fc3a5e76cc426bfe77cc4ad566f3012ebcf7bb24667a72ac17d7d0a5a4567859579d7a35b84539fb455e6fdf811185a50ce5fc2d516031fc2e0d1950bf41dfb1ba2884b436fec7b7853148fa8b2af79927d5fc573b324560d3871dfbc571c4f627b2ec254f97cc64e2a7b3e6627553d9fb3138e867d637458c37cd6f48b35cce3e9d8a246b56efdd7d0cd23abf1f9c8b0def7786454f27b3e34aaf93d1e1bad233e1b1cd5e09e8f2e873747978fb746a7c858347ab4f6783c874bcf3949c5b4c79ca4c2d8734e420f841fd7a0cda333fd3655d5be34057029e74a7b77c3541e42c99fe657e36b3f8f6d3de5d98c69e256276cd7a81ead170b1f35f1a2cdd61054315bfb1a95a7ea9b7bce1074db8f1952dd7b0ca9e9ad91bd211dd4cb549e826199ef1913a9ccf7988b54e67bce46d886e2c77548d3e0ecf03d952ff31f9cdc8a7a6249b13c8553ec0d182ebc4495df3005debf356954847cc3184024328cf7cc10bb60815b5fbe366d8bac2c14593f02528c6a64c685ec645798164b4c0a6679c634aaf5d4e450f33531031b982fa76b8dcc53539e7fce112caf3ee648f1ef71a4e4b746f6967c6051b63e85539fb424302e842c98da3d14c6bdbec57b3c0ce20de6d74dad2e4ffcb82977c6fad6ac5161f62157b0b6fa5c475d788f2b7878c9f3d1517df5d9e8c672c1b3d1b5b1eceead19df5fa239751b0605b676a3d0b1846a1e570eef0d2c1f6f8d0ceba40f878645d2e763c352e71b8383dafb3ba3837ae2d3d14191ef8dd11de5cdd195fdadd151c8fa6c74013af29e8f0e7783bf313adc67f9c6e8809bfed1e0f65dc1ac8e6dd7a8d65b3ad6d09d92cafc7c6450617d3eb29adf1b196e7b7b3e34f4c40fc786def4f9e0e05e8fb74697ea5ba3438ffa7074e84d9f8f0e4f717a6374788aedf3d101339fb52ed76dba60726dde34a607d9de12ba534b47783e30f4a6cff74084f746761c6f8d8cfce9c3667af4a5cf676d776f4edbae1142d6dd464c1f410f805894c77ff0efa871f62515fa48f5584f904541421f4b6beee9f7b83b13346bf9848a30b42c32c136d6430f15f709a54170b4b196092bd4445a7189efe2c926689dc40e0816a0395aa064d1049b2682834930d9a781759fb0de8042f165e6b000f5b20ea04167299ce6c6671b6b9c276742aa0e7957a030355dcae399588b450a0e9ba005b1c5a475d790509368d02fe51e5de94079927b7b90682747360cca26404d2142ebb56b1992380f13670d6f938b67140c587d38b08d12f7f68c422f2eefe6d1e5241d279d8d83d609cfd81490b85438a6a55114b76bb18d0a14f72ffb05e546c0611ee14ab2e885f534078a31dc009defebbd3146e858f466e43ceaaa5a70c965d22fbb826c2caa62352d9c0183e4d0a801432d3065210ab601c4884217b6025c2cfdd27642f3e600451df543bb618eaf676643ff44389ba96f513a178fa235520fabee0312e4585cef5e6d62c1c4c62c990b6b613ca1b62c6cb8b3d6f55980e3d2840c5dcbeda101e17eba7dcd8b826a0fd0f906d6d0faa30c1b0f75a401aa2f482db6f7857c20f6efd143b924f4b34fc299b54db7a3383aa5e859396c97045544319d4df862d0e6cfc00a678ba5f15ec02228b60517966a9376dc75b077baf75dd95caf20315a10386d8b82eb3b02b431581c6803e516a14a42e8f13ef5340c20be940f45b051626890144ab193e4c6fc01ad5d88e0f2c8dd0ddf6b4e27b41b262df342c942b40510ea624999cd20389b4da47847d38084431dbcb850d9c409278da4e9e49e312576388465e5a4bbbdc45a8c33514272345edce06a51e6eb7a90106064af544c3417dbcc016f24002fce36112aa4a46e826c54d705ae8ee0c78d495f0a12b00a98858e645ca367c50479326664c30e4dfe0e3e0b2aef3020dd040a4e6da8973d4e28ff0e40dc60e7abb0f026520a9c44f056b6ffcc9b7d7408761037092b38b2a5a086923111bd45327eafe32128448e0dbbfab28b9bbc018528497907f910118281118468741cceeeb39a9070c4c780844c3bac98206c11c85dab61ddf4d8aeee3da7788ae18a8273da425a40994c97eb72262faaafa6e303bf770cf572937a69bf773013da2f504d90a0e41f44d6699891c69943d0133795eada667dcf6f42d2bac050117d69d65d7603f37844311987b0cdd11a2418f5a3cb2aa6f34b4134ae261c5accc3004525bd26169066412bf4febd4ec9d1610e4808201661f1a60409bb68f320b1388e37a805db33209f500b2b1365b00fa2e325e1731324d685566a6050ef2843f8c0940bc38544181393352c08d221e24b102a431a34ec7c9efb4d6a5e49b9480221bd11deba582861a34d1941223805e1c5d24d4ae515e8833405af921ea0ebe3446178475f90daf7f405f21401dba634881013c77343f0a1276629ef04a33220f146f5bd28771deee8d5da268b106aa438ac3c90f89127622095858f80633aae09067a75502c91fa8b0246e659842341581834dc453580e245d818280091785181dd4d2d853cb98e58086455268137151e786bd52a234b8c77694e7b745429c83dee02ed4d0c762858a8f749b362fb27485b6b1707344845e4f63726342850ccd09d280fd916a93fea0657e41de9379525d84de30687c1b4889adf4d8a0e0a361230989b156182ea5e7032fa5bb40e7012fb741ff9aa61a934ae416c1085136f17f3a1f944804e8744a3605d43b60050404ef7addc842a60f5e419c7615345511f6f129ea860a1f8005950b7a0367f616b5552fc752b352db88c516d3d1565137b4e5ad420c0f42ddfb6f9c3204f6ec00b9bcce9aae9f51ded4282d9ee87e6b23ee3578d0888c2a1567ad0d7a498b103367583ae76bc6d2bd2b390e33a2f1eb6ded2e4168f5e4ef4177d73fd61ed64558946dd003506e018bcf209e7310b3ae82f7eb25f6e21182370d376d38e9c4752cbf4081e099dd4fbcd87cd479ce4270c0fa2cb4655836ea2dc26bcb544b6479a3eb658086e9f74c4719895f63edc9ee57117590b48db639119032f6e038fb907e3b87c4ba452df65a5ad0fcd94335e2cbec25f6d5edafb22fd1193d59f719e3fcf7d7ec6fc257a6fd173e399f8d09ff47d841ec70bfc7018c90996398918769c64d4b03ddbf4e793b0add3df818d31f0f757e3e0ef8e72fa0a220f7c49f89c8180a2e06c00ecc12f68bff6d11e9b50bb369c56b4842126fd7b99beffec61ef9b305be37bf8ac8f0cd8e0c74cffef0c3f8df99403c4d3ed81b0d0a96643094ade4d2cb81cc76ace37358185cbdbb07ddd24956135d96252112d923e0dc3d1b9c2b616994d810fe0486c685935e1e5645f9b296e4349ec1be1c3805fe07b767a97d3c61c2ab50011366dc0bbd9779f48b4ff40a263f940a23f8a608a2c3e88e078111ec54f1b44fe34828f4fb41ef52c2a9f6955444ae0dcf500e5e7e4a0ce9f07e3f3687c9e8ccfb3f1f971fe1c465a8ccfebf5e757f4736871f979303edf8dcfa3f179fa8b69df85b04a3efcb65490d370e453180c6f2bb178d9b8026859467f76ce9f5e251a395d04aaa3c0c004cb205e883044ab89835598a93c662e8d28d69382469a2cc1c0363a0a5615eb83e46d1f31dedd1724eb5868e826af5ede694f610187875255f00d15092eb3cc7c9b47dd87816fec4f68c3061f172933fe90224e1370f1f53c07270ef7183f33270ef10b8e83148d4b2dc3940a1edfb9771a52ed3ccbfce6b88dbada787d11639be72e11bf67c6821006bc9760570c3f8649eb39a04fd6b767d118495a200d4259a53fb96be660fc7e21fcfefc0635175ef8ab20a492bd1a8a62a00fcaf8b792959a32b37f4cff534c67232f9d5dd78474f1d9711be59c3f5f4a515237883d96e178661f693d3bd3446c67bb2a74fae057501455c90f7404b50e8b9ba200abc5f6827394138c682618d14c588f663e87515638f522fcfa2049f0b7f1e2070d24dc06b81f3490fd3622ffa081c46f4d21ce9f67e3f3e3efa51c9706b49c625c76268f834d419c1f16a73bdbd3fb924a6360b12fc827e678a1042322ed71f5c1efeea86a5294f778a6a732aecc5e3de11b81f5c7f832899945d965f94c246b2cd4d9a8437c329fd9ec7e89cf750ca3681239fba16feb3427bde8128736a2f27ba1017dcd126624091b01fcf9f01960b3703f037ee3e68220099e16eda7751dc7e4f9917fa63cececf8b26cc2fc40b9aaa2a1fa9fe1aea3f25dea797ae8acf62cd0e93c0d3c0cc55a30d0c790d92aaa0cdda6482145b34e3c1569d9ffb87d4e5238499777894a7355a656103594f1e128a8522db6b355323edbd5b7cf66757ec5eab229b3b0bf3705687c5955bce032d7c3395aa932d7ee76bb56630eae92e0f03fe03a5faac09ae17edb8372a586eb7329e8f9c3518631673c8f1c9d5fced66e16ef56cb189c31b43ed7c6b0d6a501717adae6759b4c7ff8ebe90da7affd36278a978fc4fb474227df7c647ffd96d8dff23f514d1675f728c9ef05b67afdfd7d3d390d6bde2bf768680ef98b173ed3ab4e94e3ba66bfdf0c753208894ea0ea8d8ca3fa2946d90d6db97eb4d248c4bc0a3ef074a021ecd07dae35532847eb1143181ce0cda5ecf646a21b86ebcbd5584bbc2f17ae57dfbcf1f9feba5af760edf1ef24ccde4c985fdbc12b9b971faed3ee7f71ec616dec1789ed3fb3f653666dd5d3be391bbba0e7fb66234a2359c9f4d4114b1ddd92563117d6241a93f5a52952f9029720dbbf4c6d242b5beb882b4601d21bf393cda847cd4fc43f572b64bf88791fb32847953916e6be18cd4eaf1787fc88ee20c8a560d0aade4d256e19b0b21fbc095ad523cbeb305c91e6d68e5eaa412e7831a22e91a2a23e6a376e138d4a7eeb3d48fc2e10ec43547a12211289f1dd90d657647ec990e2eb21f90f1b52783da4f06143da5f0f69ffb0211daf87143f6c48fef590d2870d29bd1e52feb021e5db1cc3cad33e667c22a7fd289aaff26ad1c4f15963f9349d709f198c7d5c68e23f4f9e393df83879fe343e13f4c7d1fc81fef1d3e4f913e310aeac7e14cde143edf3a7c51b7efbbc5488009cdd506cb5b55a5da27fabe9527f3e6292f3e7f5fa7319ababcfbdf179303eff307f37e7896a2cd1f8fcc3e4dc5a831476e6fcf9955c0543ae822157c190ab60c85530e42a7c9e5c99ba1cb6cff3fb96fd099fa70ba6cd0c3763fcb498c7b2f3fb87c642ce18cba7d5372c7fbadb63349f0fc6e7bbf179343e4fc6e7d9f8fc4a77a2e117a22187b18ff7eff47fec66ffc7822cb1378569e6a9df87a432b73be96544190d8eff3f1aa5fa00f95f9643d2636c5c207964ceb8eb66155d6cf58f5a2b3e64f0579276bcee04539fd7ebcf492a41a3012fa87165e96a84636f4203f4e4cab11f80fc07b51770a7b6bb693372173327437b7711965db927982896fe077d4160962a11aacef8e84d23c0883a18c2a68dffb58ffda301bcd9ade399e3ae73949f7abb5be78db68ddab1af37dcb0d82516705613b9397a381321ed895e75d9a551beda8ae6be9b9d073d757d62dc7c22e568c26fa2c24fc18d1ed643b76caecc01e6248b2b6f8b04ce92a5ea16e8e896272cef6563f376d5c4f4bd32f5317d488c41c9f89067f2d520e85578e661962c315face20a04bd7d4db621f26ed8148607eae48d8e383666417cd11d59104eae6ebd1e8096b79c5ccc4962b221317f446d3e4592bab18cc2f1f0133ca5636ee2b09e1cebdeecddf83f362570b98e409e3761b827338a1b8cea3540ed4ebdc7e671b6006eeb550150f93c66879b3ed516b66e8df38df1a5d0f4dfbc5dce1b38afbb397bb5d742448555d8c8bd7f43e5b7b1d722097b672a5b325b814f9e95c3eb6cf499d2e4dff599f223f5e52313b2dfee4b4491ed7654fef346155f8feab3fcbe5808ba1dd5fe71d1ccca5cc5cf9babf07a54e9e346b56203f3678dcaaf49e0f1797a15965cda6215f257e9565a1b59fdbc39db9746f6617106d7485646e6d71efb40e7bdc880cf72e062adece5c83ecb898b0e869723fb3047eed7f5ecc39cb95b37a11fe8d0f35202fa690edd6f2bd9f745f4f911d2e89646f6818583c539fbb4e281df965237b77d5c0ce2b7d512d627c620bbb1baee8db2e067b9ec4fb3e9e1e3d4e3037dcb870984dbbeadb5fd932c93fb6a27bedfec8e78ebf96c7c7e5cb7f35cf63785edba4d286cd7ad42617bb7c3daea56b63a7f9f76d15a1da95677e7b903d17d54a7e4275985cba988dbc7c58d9656c4ede302454b91a321c0d110e06cb06418c65fd843188c38f2b8b6d897e2ebba25f985038c66a7df8a8092b8f12d01296b7a501e1d4b2d99e6d1ff56994ed95673e0ff3b6cef0ae8ddecdcebd17b2dea87117ca507177d7fa34fe6a1d800f2defd815d2a6432a0dba41fb8db7b2bfb8dccfd61aeab13f2832046cb663fb6731cb1cbc7a8e10cf02b4f5d937dbb0322f3dbe80dadc7304df0441d2eb113fbe3e74b7f17fb8eef60df68ac7971867fef984949ca5f1246bd37b551fdb09f43ef576f0ffe4d5a7491ccd3673f29065c1e797de2f4823a70583ddc7a1cb3d41f074bed06b3fa14c64f9cb6f06904a74f23387e1ac117edb289de98ce6d975fb8a8f1accdf4d5b2617fa323f347e8bd24ec7ab342475719c94401630133fad89df71d57f438a7159122d1d179cf25d8d8a569b737415018faa31efdff7f7c0424a1f0fb9579f652f465a082f24cffa9221743210f3c48ffcdb78c2c0ea44c03e9ca18650e2934d36d7da7046764ac826028f64ff434872159f5b639f8fcb95f5a3550eb27fb66dd9370ea39a647ef56d0c4db5e3d125f3f72bc7ce4a2abc87c6c5f7b2cbfa6cb6db74b52e2b1bb3539c1ab3f9153397edf4d34e8bbaa74e7726586576346d2471e21b713b1dd4db260508701f64267ac8b0bae8ed516058f1f8fabfba8fdc89d227311f89685c5a8d7dc14b7bce89b772693184624dd372e72f924f961d607ff12bb3c32705626fa792514a3707559b173dbbb2b355f5bfa70dbf34388eaf5e797e3f29bbdb4128ccff7df5ad84b66614f4bebc5490457cc17a6fefc79fcad4cc8af1dfdd24256ba5d68fa7d03bf54677ff379fdad03a9c60a43363e3f7eab28fab7d64e7fe1402e82eab5924e2dd2a58a848a13489ef0be39f018c44a878521434f5b54282632b85153a335dea902f5e65106e4dec7aec56f3acee0e1e6d2da8bc181654215087296df9f4a284079e0e979be91b47ffcfc329f8ea8ae20aa32ac7687c4ad6a377d2ced6d3f87c6319acb9acbf76ed7155f819c15cdf83c9e3cb41cbafab7f62acfcc5005a9ceec70a27609c17b3744f911b1a24e53670417d07b3c9dba6d2583d02de6cdaee37f5bc53f6c8bbf2800fd9bbb4fdae66f06ee6e7b371dfd65d155b503f4cfca3feb6627dec9f83cd3401af9e8cb0f21cd1c398d98ae0b642f7690e5ee950f0e156100663c7b22265df72839ad0ff43e5ea2b22e8ce3a48b6b729c35f6de06d2ea44259c7a0c53f4320627153ffafc33318e634c7a620887882cdc4d75606a4a5944842629d0045a78acd28b48203090aed2b6099c3c0997e58cf0ce8bea4d71f3d194a38de3e91a155d603cf78f343b9b5bf1f0ffff7e247c192c08fcff1714b75d54291355ed93cc9e7aaa23443d1db3f21e9b7915f85a4f25275fa2b7906994d68275986b8f3d4763f246534a18a2de07c2970a762cf80bbd18d49abcff87519cafd3fbb502f1af1a895103bb34f4af0b1b562dedfcf9f1cb6c6fbad5a69335327b67d35b95ad93afbaf461d978fe309ea7915f997f6b2efb77fe97cd8f7bb3d0f65be8dfd70af78cd13d5ff5f83d63bd92f5d71b1a7e0ffde1f52aaafafc97d16fca49bc0dde7f07fd5392314580578b5cef1f05dc738aef2cf6b616aec389f49e82ebc146ffaab6459b9178e198f7580c927dffcb6d227ac8fd93f0e04cbd7c1dccaff547d632fc5b0f537b40326a02790c6bc4215c79eda520378c3787eabde7c94fa9a25c528882851f47f39fd92eb61e79542392f0c6e7e197598f721b719ef843cfff1eeb6d457ed1f8fc3759ef62d0990cfee75fc6ff7a2de73d298f37dffd322f6a46316eb3237fb7fdaec879b28f0ff7b2d1c2b2ce8289b8be5b89ac3f7b534e2a4685266f62a7cdb1e9058aee06e86955708507fcc93dbd19b0ec4cf837062c77cb944747c3a58520be2efc0d7c7ab15269b4debfb7da776ca2c78004b8873bdcfcac7db31b7e58f66bbf8c7dac95244aee1f9ed6ff17b8f831a7fd7b21ecbc119afbeebb2e56361a2406ec62daab5eac277d9279105d931f47763266217dde70fce7fa96f091dc3637671cd759e9e5ea90dbaeeb036e5b3d4be6d7b1e5f374877ce6c7713a7f26d9c7f57ac5275aaf72db3b70fefcf84c03ed8dba44343e4f0f56d4f6ed7ad560df5ed5973ece3dd79f2d8b5d4a63dcec9675677cee8dcf83f1f96e7c1e1f2c3426036f32f0a6eda2d508a3f55e67e65e59aa2cf7a0ddf174c66db4e9ed72e25585bdd7581ff4ecdc5529cbef20db92467faba47f9becbb95dfcbcf7f879098fd8087b160fab2b48838123d83a9f0d13fca1bd552220d76ec154fc403ae22c8ce1c1c7a103ce8e66e98d0cc5fb3d17cd6cbf6529dedea1dbe7f940de01564e112cd63efa2de87b3386dbce0dea56eaac9cb817edaf5614b35dcad2afde2115d1a01677fbeb05effb7e7c87dfb1acadf9ea3f2209a1a23fdcd73146ea5ebfcf9afd723b357c9df7aabdf3ca26838a66aa436bfdf32a45b576b8df4378f281b73e18dcf7fbfd4bd97dafcd611558372b7bd3a7fe0378fc84827af62badf3d12336ecbb789f76f1e91e16face8b57ff7bb2dc35d7e771811ecef8eebaa6101fcf6ea2410bd29782479632bc9d10793b6ffe476dda40de794d6b9417cdfb1319262ee84b8df8b7fe375ce9fefd678462e4d212d57d2f0c332fc79ca82605651de04c08da3ebe42e1412aed8df4b0b5dd8c406cdf6656f9e04913a84e470769de84375fc4f1fa51b9c048d7d946fbb8bce25d7650208ad5452e804c38ba7a38a98747e973e8848f612f50e19a2a05621700f139d64280aa1f995033135d8d2f85f3b10a3f06fa5a43d1cfb750379373ffb7503793775fe750389b766f6fcf9afd591744bf0f9f3f45b0792dff2dfbf6c20772957b84dc57ee140ea9b8b06a7814ca41395fbf69f5e03e16b3b388a1a5b3d2934e165c31436d5f7c67d8c0f22136744276e5bd8ddfe60f1834f7da00d2d71fb4fec6a396d6e1d2b3b75ebd1258cb6c7ca6e182a76de7c12c183e107637ac3b6504a1b72890776049a6a2d976e5347ebb31f1c9db8ae2f76537ac1713630c014cb9b10e6fc79fabd63b1d27f7365f417cf8b59f2fbc07931cd45bc3523bf735ec26d1470fe9c4c5fcfe6471eec465cc1a1ab38ab8672c8b1058c7368ee30b92fbcbaef5d6012db2c887c7c83486875f30d2c4093a965a7c2712d3b9bd716299c03c9f6eb8b0d755c0a4cf2f72c048285825d8da387bb4f00f1a19048f70691f3e9d5213718c5de45d44f3f84d8f449c4e60f22768e5e8361311eb41b7fc82ced86a9b13e8fc6e7e92d536675055825a7f3e7e93799c4cbcef472bb8276fa7c613df74f1af9628464d1f8fc77cd0755eedb97ee9de35dc7f6f89fdcedcf8b0ff0b037f6b3f5f5022e93f58863ac1520b9a476bc18d2bb6e9bce5dee68db2f3e5b72353d5d1583e08232a7ddcc8edeb456eb78902d5d8fa7ba99ebb68f0c19ffe9e921a1b98d44dc6bcbfdb2e0b26f5f6933fb93c21e2ea6f1be60f19d4d267f72a4bbb9b8a23fe37899557aa8e64849f621f0a3cc4065052687f79172b72667279cd03d2c41ecdbab7e8bbf4ab2e598a2f13999fc7127e189c0910fc54df7f2f3325317939d8482fe7db8e2998dcf170541df22a2f6b6aa908b6d1c658b61d3cbd5b4863b4ed564d3b83c1859c334bfcbbf7950f7d1cdf973ff8b07632d2bbe6c60fb9583f1d786d2fc3cfce6c1840769c42e6686a3981ea88de2f628009561c6648d4a2e2ee8623d792e1c9e1321d863c5bffa9c9db0bea44f42f1fa1e87567d871445e6fdb047242688997860680f836c7cb632eb10d921e7300b2f2048e2cd393d7cac5bafec8fac96a5e2112fdfef523264b99ff9c421760f5dba4b0b0345af55f264e44736266cf616c0f0cb0660597cf7b83bf14f135e6e9759adcafe4889e08c6a37f2c33a6694cbdbb2d2336deef182beae8c5d3d9f519c6ec3a2bf497135c2e07c1b1eff458acdbe8ee3c51270a2f74fc7afcbb948873069759b1aea4860c5d6588e8b9f6519e1a551f94bc4567b05c66c0bca2b16efea90a9736d665c1c288d4c15c2b7cf8233a204b22ca35352453095529bdb599a0f17072ff763834afc4e3a4a9fde2efa24cb8868e607d3fc60bff162fa2af5b13a250c795c46dbce392f34fcf62f9c71be6f57452e0a113ad7bb267364d8b7857280c0fadefee4aad8fda2848508f68da57ffc457a3296fce46c77634314b1b6b1a69805b8de8d427525f6e5ddbea4eb9ad5e78d667d2df0d7511d8d39a8463dd11b9f07e3f3f8915c49b7eb639f369afc91541fc61c7cdc684412a62bd6ee632db7334653af3fa7e73f6d94de188dffc8d1046334d1ee6d31ad3a858ee6779f69f5ad883c6e6625885729adefaed292fe9dbff92edc7cb7df7c176fbecb37df1d763662169cf2b692c55c16aaccdeb4631bfd691c6f574e06220b53df55d617de7825452e9a8e5523961fcef09e9f56f16a2fed5f21d65a62704621eaef10e96f8ba8564df82f4dbf515e7017959bbfc7d1604ef1d542f15f2272ff04d98ccf96d7ff0e91e9d6f49c3fffab1ccd9f209b87c1b97c5b09fd0bc41a76f27771b41a6ef3b835fc7f87d04b97f9dbb8f9392eb31adee8574efd7e6b2f2d6b002462a1189ef04431bc1b311192de7044c0fdac061e571405e89eae08a0870bbec98ebd1bffc685c552a8fbaa3329c3a8f3332154dde7d84d1e19f05e94672502569820d7f7fffc40c269e9e2d735d22689f3b695967b0efa7a7115fcf0238e4852e16497da4d17ed175874fc008be077a759267fbf6f37ae346e342a7dc1c5b3f676c13a84bd81ea0165ad978c8a5f615410d3f25d8c32d6b840f8cfa2e5dfbcd5fd9ed563d18cf54d7671267e824b6dba8ba73d7e7377db9bac263abf97d567d483cdbdaf0919de67455d5d1f6e1e7a4703daddcb9301e92637f7514a3ac782b9be48851f58bdaee6562844efac1fdebd37f8578a31d84cf55e1826b049d1a5481c6791a0468ccb6b6afe886afcf8f533e5d0c8b314cf690aa043c4d76b80d1261899ca38cf9c13c10ecd596fcaa335eaded5d627564eae7547cd4503c1bfb91b77071d2fe66d1ab09eb4acd4ad8ed059d4e2c326facdbcd0518e0fcc89ab5f5908e6ad2e950384bea98f89ae752404dcef391c4aa7b517fef96d3c31dd89f74e4ccd8e43ced418cfc7d14d79ae5220bfcda61f0529c8718d8bb48eb3a65419928caee6639bdd53ed1e1ff9e4e9856c2daa521a4a87d8539c3e447a4a7f5b77875db1141890777a59ff748a4838dfe454908d197738b15163dfd36786cca279cd56fa50c939fe49ce8de4b43f2d133b760ab076b4cbdcecd59abf1acfdaf72de0d2e9581db10b57067a0ae64598cb9130cf170be0b38eafdf255c5fef10f87de3b13a21d67a047e99f27fa84c997d1a56c7c3fea1e3bcefe0f8bcf17cea3c7ca063177b263e8eee4f0cc1c5aaa1d657ffa176d66fe62ea1cbb53fffa17629196339aefb425eec593b7ffe81364fa4efe7f17c685a7f39cfe1336da458f33b8fc7fafcf8d0fca15cf762999fd7ebcf2fdb0076439ff7cdec01bbb489cb1db0bfd06745633cc9f83c7fe838b3319ee3ba6bed537df6a55e44432fe2f69979b837f4336e6617e247eaa7df5e9d4c73fe3c5fb73b5dce7fdaccf628b58df68fb562b8ebce22b3f1c56d7623bba10cfdbbfa3706b82f955af7cd5ae06a22d7769db61da6f0276d53c15110de5775984810de328d86a33d5e109a2a8e5fa0d56dd4ade5ba8ed82560e325581d06bce75567ab74ac38d2d726dd1863ed0ff86d3402f4e27f90ac49c662b3db161355b41bcab2f88d1ae1a81782ab0cfd1b2e73813895c1cfc1f36e4bc230141d533755689ea86ba58b7ff84cb2e367929d6fab7856e6f971c374d789c75a20f5fb8663e4f9977e346c8b71d4ef1be6fe5699e3e386996eab335695c3ca0a9e46d77f36c8b824266fd7a9ce610ceaf85b1152bcb696eebafd4f7f968d70ef6ae0ce18b8fb5b034f8b03f7179f0593192f3495e542858ba872691bdd11bd4fb6877d819eef490e6749bd8d96ab345d672ba7423228ebda7ae1462eda8c3e6d385741f47a97aadb7ea6735a3697d7b2a9f0b9bc6ade947f8230cb7dc3c3e86938b61e028c8c3adf74d0f82ff6f47e7b2bfe72e7acd5c9d7216ebbf7aebb0333b7a2a0b4070936ba6ef383ae489e2bf969c9e2c3f3f8490f669978d6f0cb3e7ef41b7208405ac5de7f2821870f7c5a922933e12bfd87bfca60c868e462fdf0fc79fda1c62dc888af41a6430c0757c59c377eb7e244eb86caf4bbd52dd53e6fffc29159f45da1fa564d9bb85417a53e4b056aa32d79203919aa5a59acdc882c7b3f96304f89bc2dcb61fbec32ebbf4b01d2c325097f5baa5c2bedc5ed3abc495d6cfe7018936f4b25d6bac9d3f587a7757c2b323fd73d8d52a31558f7fd55eee63bff3726e2a62e6ad653fd6607d1a334f10707520debf75eda6ae57f7f383f2bdf2af27f7836ea5a4a32cfdca96cef6fbe0b37dfed37dfc597e5fe6bb17637dff9bfc0e4cbbcefbeb9f1a9c8af953c5e37149cbd5df91b0cfb52e2e0b6ff0b7b78bfc4a2b48dc6f89fcead1ec4aa042272d0fd9298eb38566c74634e52f6c4fc600487d35caa0c975fec22835361db9381936bccca381bbe4f9b0e9134906e703dab6f58a184422eb8554a45ac007616030a93fe87f7d9e5d2f19ee413a6669e07918bf677cd53d34d551d6c1f6b89bbd098246c26aa58bedd3fce492b515b3791f3a02e44e63f31ab1629bba0138b33fc67f6067fe70c7f818cd37ed8daf59e13e73ad56946d525f5b7b9ed3ad5eca5015ef71bdb29f72e4f9471aab280dc1afb6ff2ffaf4e3ebbe96895baf252498b431a2a01f433670e8e18a856d1ad51affea5a4687483c67e78cd31a20cb9775215bb20c8e370b07e18cd23e47d55570bfc51e0a1d43abcc1105e122fb7fda72f1a1a1f6130221decd801b9b3541e4ab2f53beba04c3dd1e30c7c404541de73143dead03aea6b4329c4b8afd5e238ec1f95554ad691404a4bfa826ee7211f0c0b08ada876adc3e01789d8283f7d16cdfe0f97a1d3f183a13d677dbf66633a7b72d6f8c8ae01f2e5b28d76090e3e45f71a79997c311534d54fdcff2fccc07a0ed1f3aefe229d5eac645cdf18905c8fad53edaebe7d9a14a6c157b6bb5a724402d24541258e693cd07b6d68d87cadc89566af6d6afe65562a1b63091f3896e3c3684edb75753b7c20ff8fdbfae9c78cc32ac4af6fe6fb5d63319778d2078e25dcd6dc3f6b2cfbed3ac1678d25deae6d7cd658d26d57c2678d251b2ba1ee03c772dc76857c8e9f74867fd9b7cff3f96eb31b553eccef733793b39b6e3e6b2cfeb66be2b3c6126e3b3d3e6b2cfb6d77ca678d25de36917dd6589231964f2bc8bbcdee7cfc30bfcf0dfd9763f934bfef0dbf1fb7cff3fb7eb3b7707d9adff7dbabcee2cf1a4b30c6f2697edf6ff6e1149fe6f7fd66faca8ff3fb7ebbf695e903fdbedfaefd4bfa40bf1f0cff92b6cff3fb61b3371c7c9adf0fdbb57f49dbe7f9fdb12e711ecba7f9fdb136711ecba7f9fdb136616dd0f9acb118fec53aace9e37ce8a8f3ebb1e40ff4a1bbe177f2669fac7065db8f9bcfbdf179303e8fc6e7c9f83c1b9f1fd71b5d60ece5e6bb6a7f7735c6bfb7f16d5a54bb3d34215d7c96af3b2f25735e5d7e3227f96aeb68b95dc0b01603acc2ba55a4b612722b89b282452bf0b282182b20382bcc712da097fc39be2c80d7df85bf219cfbb5c09c3e5bf3d84e18362fac28d5f881c6b2f56d386ca7b9d689d6d209e0fe611a02d8fb33996b6a578fa0f6a41e34da7f973a01d8650f3a0cb45e03fcd50bb9ae9aa0ffcddd075cc875695b8d80baef9ccd37df1941832800df9d15412313d3c0fcae9507ec856c127ff8edc31a1d43bab973fcf6fa5c29b92b875a5c130a6de8016405c00a490d2bded57763fe215095275c5e60c03ed8da9f6660d428e6cfb9e193fc0d890bbba82e3b993e08c2d0c05314075a675a5e852d572efcca4d5baed6f5f11e523398f54317c4ce4ad7475fa4eab24bce427b70c064f5b8e7b5fbc563134780144b682e239bb8d9cb02ee7619e7b70fd7ec72782f10fdf5c32db60d334f22f09b7d12c128e6df393e6125d977f66d2dd3ee33e9a3874aa72746eed98ef7a8dccd775fcbbc16150c6b180623dcf83e67f9fdfc72a4bc6fbe7a1e010c331ce5531d7bbdfe5e21aa2b88aa08df6817c58c0c421fb591ece7d038df55d09d439bef8db3c457206745335e845e87964357ff5690797bac5996e1a3a67609c1930daa2a60ec791ba56b7d97296d17e28321c0428a2d44f5f8893bdd6540fa5dc6e38d6dfd6f3193194481503a0603d1e8f6ff10db99eabe5971f5ea77729c97f9d2b70ef60f1da0e0d9641f86babc3c3681310c9fcd6e50c6f891ea28a9c7d0dd51b6d7bdb843fa45d1a496114e7028019fe5ad174fbaf34d44225751b848c57f128b0493cb8978cf9ed20894b89d648e489e1f29ff4bc6f041b4ae2d4dfe125af70fa235191570f7af7cf471e523d19bfc6fe23eac666bf662fbcd2c095e2eb758fd1de1c38c6834c6b0af974745eff7d3c2d0df2a0bd855bd17b3c6428683a94340c6125018f3c741b4b045812d0d7f9db75e85ec43eb4bf17ec83daf4a45e6cf974a1b44e4f766267f3cef540663c883647def79e0c8794c961f86840f8f583d0bee9fa9ff041ffd6f5df5737d74347cb4333e4fc6e7f9d6d7ff25ff633663547b81d11905f6bf380a6f2cad1a73741923782346f07f3b46b832fbebfeb537857ca77fb56dc12bdba54ef1f4e2520261387ad473f1ccfb25c4842f8d541894b1297fdecb897dc98a14f745056b3ebe117c47fa18be7d4a35b2378b72a1b72fed316aeea9eb0906a90fff317b30d6426e0e0dc8708ef39bf88f0af30e41715fe31fc9d43e92285e47adc7f8d31b020e6540dc765b8efcbc810ce7f16144874f24fa2a9871db75d3c8eb60e6c306ff4dd596cb28216cd7d1c6a8cefcade8617fbbc210b651b939b6de4a1a45085db9f4434614c9e387cb48a1b8ba305a59fb2ca76d548d7aa7033d2e6a241f42ed65ebfa6eae3f9e430acb45f98f9ab362e409c1f87c373e8fc6e7e9da905deaa63374d30dddbc0e699811c01c32877d6d9fd73a39de18dd8f5423b8ef78341714cbed42e3d97a59562d3ec8432d6bb71b9cde8df7ecdd9afe0d8e56d3d2ade44efcb12a32204d9c07c9239b474e9586885d1edaeafa3b7a7665c7d50afb6552133b316978417a3557ba46254b05dce37276e8df3a05d89cd200afebd058fec3c549de5ba5f72684db8b4cd8701d11c7d32e9483f7a56d6e04c8f487bf9edcd5e9ebfdfeebe3f6eb8b4684ab475ed07061a12f1f09d7cab7e21cae566ead1cf4a63ca0f3abc69cbbcb52bcbec0b2bb8cde97eddc36d5110408aa6814b1cf78c14dad8f4a185dd091e4c4e3d629a1979ee8d87a0310c78b9c06b287a2b7b921e166725f5f579582e1ab2e76665855e193b24443892e856204e92f22835e09759a47dde2f6ae9ece530e1e7a2cb00f333cede9ec3340f67c948fc8c92632464074fe34820f83f3d9f8fcb85ebcb99cf1b02dee1efb450c3117a28de0e232c5dab767fb22f7cd3ce8f3cd20c55a3cfe0bc1cbe5568ef89554606cd7e16040b691f77dd9dd4e9262726b65ef519556b66f4ae464d50fb9ea1b177b02ee4f36ed93485e4b927f17c9def0347e394400b94ce4adc55502ddc48c75441e30a062a36401eb05d81ee18a1d55c68bc75d2bbd0dbe5fc18d668c1f4014fcd28bcab1dbfaba60ed2f844880ea46a343826384b48f48f74507d6c708ca94ecbd5aa8fe0941492f0445ef78f879f960fb5c298ce3459cde044033d0ab245322f462f1f89344e3d211d19cfd09d1d85f89c69d1c0842fa97907f3c97082f666017cced79719f9a204d8adbfe1bad55a658e4cf130b2359f9b45864dfaebb25d3765d234c37cf7f98ddf7db753c7cae917cc450ae42782b35c9db75fd341bb39e3f4fb08321a8f9f304356cf64134bbf1f95562786ce67ac35c813f7d57edefb8a6fc1792446f2484c94867ebf5e797321f0d018a9b7d1cd16e7c1e8dcf0d3ac92cfd0d8e1a05086b35e492a3fb5f9509637d77bd1344edd58f63c679158025a32f34f3c115bc0cdfb32b56e96e3d7a972545109c57f7ef8eed327955be697fa98ad7dff99befc25f9bae682e52e9cff2c567c7c342f5feb020edbe12ae22fb685294d1ef05c7ee58f80fe7dc51a45494838c289acb93bdeba36e72a7a91fd8928c0fdcf63deba5f72d305fee26b196842ee90c9bbd4f267d4f49d65c07760f4ab8966f783fcafe1baa9a8c98c2199ffbdb18e46f8c205f276d0b7ee1185ad5b77ad1e33d903b86e6f455e23cf4958d378e208d69e68a3dfb90d9e1a838df5dac977c0cfdf18368cd9f43ab58f63e3bab63bb5babfb8cb9706ff984cf18dbfeb37e6ab15bf077f0e278e86bfd031fbc6faf9651ff864732aa3697be361b523138f7a747500db93b363b5ac8c6e7ffafbd6fd9b19ed7b19be729ea0134b064cb973432089020c824834c1b8d00c93c0990f4fbf7b1adb548ca92edbd6b5f6bef83bfce57e5ab4451e4e222253faf0753d5ab6e438553de5696467a5148c2f6349d489aa75ea3984c6877142b200e6df064b2eb4175749526e28dad67789b3657238cf6cdfad1ef4656efd38fe13991e0c5eb0aba9b7ad22758a20baa7397bfe61193958d49e5565ae1017b9a95f7a23d389de72c437a3e6e1b9bd25d435bbda15868b9f61e8f426a537566b93c6af12d03b15ed1eb3ee33df3602c47d9c26555a1ac5d01a3b388d057565eb2b2a291b9d2a9843aebd9d28dd032cce19d82e20df23f67f799b7481602a884882ef1e6340db29b4923f39418313ad93f659273cc862443b6e2c4a42150ffe6120e2ebe59e78af1d969aff6221d794bb53a97cc7d2109bf9f4a4cef26e1be3219bb77ea88777576da5732a0ef3479ab55c953f9788d4a2f0a29569e734cc9bf919afbdd1cc21b75249ccf85a269efd5c158e948ed78ff6e1d1c2a1da91060555a29548eb795e3cfa1f6265786e5b1422bf9f3996905696a907f17455f5080b23dfe3492ee2cf1965ac7b0190bb2998d5f2f4944248bb5c09924f485122af488f558701b3151d8c82a626e98944c8944ac6a40b8d0a75de2bb6abe74a8cfb3f4fc678c747b4e6ae7603dd77089364435ce8d983a56f2a466c3bf40da349428805f6c9f8add518741ebea95c4ced68cbc466b954d7a17f98af57ba3169f2b4a7b29ade8773dd83bc93ebc5d8bdb0b7cc77c7df7563d1c2abd8895e37de5f85bf90545fb6f122645dfecdd49bae5a57a18ca3d7943fbd7567ae22bc7dfcaca2057d1d4d3afbf4a67be480f87ab129aef8484a6ab52b0efe40bfd8d92c695e7142d56a8cc82e0ee5e865c8dc82b446f359e6cb3b84e6dc4b4046e0862b94e74096bd72d9378c19a698d4e65524541829312b214ed81a1813f870430eb181eeeef66559bb825419684f8961daff2371fd1f1ee133bbe83fdfe7cc76b40ea4f771c3f17747263d9df77c4c3a7aa7afba91dff54ab5ee4b13fd1b72f02090561f88b0cde26fdf1be9ad17f354334c39fd48c3fef1e6b11ea9f3796b510fc233afe91b8a0467efcf98ea7fa828fecf867121beda7cef1d619e4f6d140a7caea7e44c73fd2d26795755f9cdfece3fcd2f7621a25b42265d654dc69c3f7bda9e67ce49489ee4303a0e83ed43bc44f55f5de5557417ea477280ae32359a04fd58258c3031f2b8cf62b0c11c6379254c2f8489739b8ea92a78f14c66742e5c17d289d36b80f4da50fae5aacfb773b3eb97a9dd04774fce3922493a8fbe7757cfa54559f3e55d5a70f55f57c6ddf6775fce3000c3adeffbae3f26d6236bf49fd8ca92785cf0ba293eb06763e5dbd3e66a450fcdaf6f54114b07c4bccc7da93d6eeae62eff9db72ed58bfa7d34da837535ab7bca6725179efc1c38b075cd0f8fad59d7974b37be1fabd86e1d20baf11bad752cc543df0fff0b8d30f294c2df910b58f076d9a7879d4dad0501d07a3a66875e3a945d0ebf57994fbf26499b34daef995879775fcc49dabf86590ae7a4636d0d73c636f960633c269d47c269d667f5bd1c1d5268f6f062bf254c452db06748231ec94a5f4ab159566e97d5456839b0cedf26fb288cbe5fdb4ed445b1508f084d25f5e836fa868c32f262aa6e7d233a8efaefbb5b16a6924d50269e7b92343c84d84bc7836e36683d54afbfbf5e7aaf6f3e64a1f70bed40f9c1bc6cda991fa350fd4bb74447ce47aefe0d424616fc5fcf76b77fa217531dabfc7ecfc7b771b06791af4a87a19d53fd3d57ee2adad9e8a3edba8579c157d9a32a95b4b3e51713a5e6f6ca43584808bd149d16befb8e3129643c102c1842131de9ff53490d621b243cb121ec6f1062773bfab21e564c61978340d1e8def6c3542f17cc2148b78d5534e9af803ebbf6e85ddd52df19168d4b0d39d2e1aa5071483c80dc2a6a48b531ad169941145c91256c3cfbf97dc5ac537b71cafd169bf8c73160eadede7678443fde6fb7d61da8a2ac53d13e627a2bf4ec557665701b91d8db8405a3266c115ed0fe65b8e2a05e0876ac704c0982eae22859b04aee14672443f29fa03a9b91e48ca93ba589a4a84e0af8083609457518d940eda42b08f618e49d572e0209647f6a45f8ecfe38229f3d250e90bf7de0d0ccc2f58b7ef37befa0bfc3e12f8e57f235c3d0cfa95a1337a24188c4e536133988ad5a61b24295dd8f8165e84f2795488c2bd478ee9987e26ed5e94f71c8c58b1bb4f472eb1b17c666c928eacc2074c45a0dea29188de837673ad34121b8161c11309d6d5c12660448ab4c5208bd8c734e69d42ebd8c696b46a5022424f5ac7bd259854eb94f8fc9b0826faaf50cada121e2f1885c07099263ba3846e8a9e1b74cb56d88ee480e654934033ee7c0d0126fb9e5e8bfa1f4706a09071285fb81ccbfdf97c5729205e445f7b2509db95f6ed751f2c304e2649c3e125424290900d3aa2cba881ffd1f832b46ad4d841ff3a35c643a60fad68199e5157fc08b32e6a0c556ec5ee12f426ff889dd855743038952dea256ae40ba649b55b33b48b24fb24bd070be5094adfad10bbffc735639b7e9f567cba8dc5872437e01a6e813f59c7b8681706049eb2145e0ea73b88746121180d9807a46a9a1411d9940b4687fdc4c8b569dec4f55b5873cbe67fc76e8312923d9de8f83b65e9604f47a7a2ed568b2b54a51043257e3b2d9d2d60dc7e546c2b2541824652bca1a24984ba6dd2bb33d1a58f95b3cfede4d8aa835a1f8a14a6d1c1ddb49da20037ac90e52d07e9f362e6388fb5fd8b8edf86c06216647d2ecbde2cef151e66424b7564010f7ec8f15d40e4b1450945cb1cc1a3c5e82bb883a2804a27635b9b3874a6bebb522b6dff245e598ecb3b0c72eb932855ba7dd8686885fb33b3aa70be0821c69d07664c23bfbd67e1c380a7783d289dfa69c45f7654ce46d046616cc47f5d28c515869525b8cfc4f66ba77e4783ed18164578c65b8da606896d3978de2ae60273bcdf53edbb29efd8174f6fa2fcdd910aab8e8c7195c0d0bb029bdd0b526540320a3580823658cc09b8abdfd54738962b1dad4180673c6486b744cc641d10e7515f186284fc121b61dcc7cb6e7a58d324e961637aaf2e8dc609c98b721a690da6cc2bb69daf5abf0b4b7cacefe510210fb19891200e77526c90e2928220f98ab6211aae7ba75342b576c69a306388aeb6795734a61faf18f2ab8dd901459a411765a8783097cdd81d1395bfd3ef6233c65ecf4015effb1a73506be8adb04c7d884fb655db7cb11fdbdb141a5eeecf93f7124f2a06433e743629783e0830840d9886fd69d85e380d7f0ff17271feddd9f96ca871bb795a78d9b959f09eb351123c39d903bf27c5add85157efa7cccc3a39dc4e989052b816ef3113b7d9d64175ab8f820eb3f87c636ac3b34ced452dce105024bc2c64c324e315fcc604db4c980df6a3db4fb3d9075bddc1b3497e3602cc577446fd0994460a2601bece30d2ac0001ff06ed6be43c3323d1b19208aa4c16396e35b577f58a8ac7f98c216a29f7b855c82d99d4ab284dcb1ea3bb57f99ab1dd2861353d729d55371a0905248d109c59f7b8480fc406536c281dacd6467dcdd91dcc59bb63752a1368d7ae41093a9d9a4014d83b93e08f51992e7296a3ab92ac5f0d785d87c6d9df66f13bf18c6994f1208333c5c3afb23a62f9458336642b846224265c0ff52e730886704c23502bc2eae31ee5dcb86295570d366c30c2f2d368e38bc6c2594f83fa1721a28cf233b2d6cfd680c02bbd99772a19f42d987ca18e3cac60b224b10e8ff53ac6ff937588b37820928d43e13c5019cab0e35034cad8246a051eb2d8aa51b35d2a5012e620e85c439fe9f9762bf98d1268016a40bdd2785d18b19b9d0fa9ab264bc22842adab2da4c3a2df3ea1e8579207a1db247f88b43a568fe05f24412f5803b16dcb3c1a4363afa4f2f62ef7c72b4333f1d2a8af106cc379b3ad58852a289e6610cfaa4b02115c33a452ab213e463b06c795af268143dccf62b25404c952885007828985b84f0dc2d36425f249ad404a8c851acc930d6ace0da2798f9c4916956e7baf16559969b54d3aa3e2a6cb8c08cbbc59a0e3c5a29043d8af018fd923642e0e4e683363faa39ed64953a53058ab2eda8167a14ecf2c0863d9d378ec82346bc220d93b439ca038c4882e8a15d9714127f5a077c55d456c327cc5cd4355f9877e33f25176d168f41cddf29910aac6d864be634e382d150b090ce0efdfcd84bb4940222a419d125017fdcdea3a1341ca25b6c01ca3b216cadcb2671506a5663def97f5dd0b706f6ca46b35435b386a0cb83db531dea1f2083d601806c579b0a650a12296d86d8c49050dc127dc94f3aa57c38cad9e9ee5aa90c715f6d59b7958ae92edfed1e9761c81bda8871045ea9c3b06d634e29e60b1f5ea243d92492cb7ac867a44ad9058eef64de8d0cb9a9c87af15424daa6f198bab65cdde5c76862325f7ba18805e610ee08e49409e768615f5fa16dcfdc5823b168fdb4b572d0b46728d56b7d38b99f49212e467108a0955accd1d001acf5e88b7acdd8dd6a1374e018d64b5314612798b1be61e1fdcef86b9c46d373178527d9db85fce9b51a61c8255e6ca6b267db80a4edd97dfb3a526403aa975d94d2679748b9cc59f81740aca691b3c38121612a6c2887b6776fdba69a5be99e61283d76604f4636224b389c18965527fe89048412459a14f26dced1eb812c1f47d1986e87eb7f4e05be87754e8a739938bbbbda906e0da23493c1a3b2415e1adcbd646a783cfae52fa8662d78562526610ec800f0ac9a47746f7a39979db983cdea623475a81ce9abf088e1955f8060dbcb9f952b0a5d3131cea5b3cc7d834d850629667d8f47b74cc857793b5d0b28291381088a6530dcc375e6b02a71386d1437b745a3bf2b7f09d1c37e329fa2b278070a1507c64458d2797ec8b573341177e1a55585ed5ea819e45642ea12ef8d15ce7ef057566c51de7474e6b246528712d0ebdc13593049802802c2873016503d27c238a0953a0a9f6d3720545913587e52ba717080fab3ef1b25f93afab6eb4ce5824bedfebce1553371c1d567071c8bcbe02524f36390f1a2325d21f48f1f1c6592a1a48dd87e6976e0b984358a9dc5273f26a3e1fb1c57d969f73be54f313ab6cb7dab29d8683602bb26e934c228d0175d119a3a923a0c77ad1148d80c460c6b97112aaf52253204bcd95bdc53c8d4e39995cf9d90060dc14d8623a1cdf3801c7677b6676ae5adab6cdf447913f5255cc6bd25d35a219c8694d7753e9d731981c1e8ddcc469b05a64546e1ad0644af987dfd16c8007f1d711b3a9af28167f29660a4fce1640f5300c4635339129c5017cdd3af5c199422d5510d65c2eb2c6c1e327ac5025d36fb2bf8191a61ceeb576ab9567d1590add723e1610ff82741844ec65f5aff14db63be5f0bf77b223190d8257d6bb91298e8a07b32084e6e8554b3d92323ebadce3d5e58209fa954b2617c09107cbe58449ecdc063b4838e40daf23529eb4f1ba6ed3699648f46a808871d027145a2679122e5f6af383b65af035f5fa6560630900b04490483777164886a38ef3b0d0c618d2ac48bdcc7f142ad98b99c4c6b8c8495362ad081cba461c6303947092897dbcc61606942b0c6f38a0bb4edd60882c495e082f319cb455240397dc9c5968548b5177879b0bc6e16e73ae22a8f12595c4042f46ee8547fc7745e1c97aef96b22a363468fba5d85346568d61e3ec05c7457f8d442e1bbe2aa93333225a7ac9ed5c5840f68a8afc36d5ed51948745ca2954e338aa102fe297c6d902e63f3babbaa35965fd9c87c9956aabdbcdac493313180a70e5d6230a6d39c884ab05e09893f1e20290f7a8a7bdf3a287c6996f87e06c341e6a1d7319271d37d6ea8f76c8a38272131555b4db92c0958b2c9c5069015f34f3c8e381082610eb9c6cbc9cb83590e78c3576f3969d9e0a475570176f60ecb540b71f85a2c50a4eaad483b3c504f9920fb038b55936ecb8b0bbcdb2dfceaa6b1a96441fd429317405cec5ae61dbd6ed9a271548a313abd673a353db3673537b7d499b4b80159a8bc54f44ab60ee254b9230c79ea13eefe944ddc9047a349b8c1fe28abb91837b86375a45498663a91eb813ef7784850665bf5b652b991b04e797260687b0779bdcebc188915790c44444ac36180b4cdbd4576f6199acb734c61a2dc674c1e47e0a9f36d99a3dc3ef2471007848ea231945bd7fbbaea47b0b8273782e6ced5c3d9971fd3e300791cd9f085a52ea048c0f068303948c37976aa7df5170b9833b6ad670b7af75f725a5ee0cbb7d364ad11d143cef5736e73b3e34f707d3f5ee9ecafa941ea022b0fc9905e75eb87aa342814670bea4b2a10c8038023d267361467a6592568b33289b102f087d811507b997b6239dd3888075016a8964a134a9e65e5a071332ba1ffb118108c89fc2d149bb06c29870701173ed5233dbb446e41b529ca26855bb89862665e293e4a50212ceec02071b9df184515f65aacf6373e64ad68c49a0a4d042faf679b751eec9801c43c742cc7329d8bcfb0ebe1db27c4725958acda1719fb201f3a36653b07c7365235b6d58a9cd5aa7a06764443b67d6049efc8c6d251e98acbbb2aee5b00a63b96af3726158bc53e8fba98d9c0c37a3f016591dbba6c9a8d405d13d3af736a5210635021852bf060188244792500005dfa676266a33f382454ca9b7b08b0c681ae5805a01d740f9b8a7460fc65701aacb86a6d6383f10bb1e04ad97f186c94f3196e21c1a5c96155608c112d295e1aa2f9f15f7d46c20997faf38e28663410a0f5105dc7d97ec10525302170799e435fb750fb626b83fc6d6a8aa63b3d8ec92e1d325004c5861d838ad58f78e31d3c5b5bf1bbfc5617246580c58295b804621de60ed582f8e117fc388ffba801221472d3838019182cb6a6036130964b94ca420810d7d502f801415e4b5ed5e2e1a87da27368ff74d3b93e3d1d59a2c7ae7a2723045b2f4dc0b4d74d3555a414b42f8b001db466c4676bb84871d3cb900402060135c9e276a4ca85d4e31a7f084b94a2e5b090a2bc9c281c699ad74f7a26c3c5e13eda61eb395b1e15b71bc93b97883e8badd110be8cffdd957b9592170a322e7a7664af1834c061a1723952ee0b60349b2b04e174ccd5f49e8c83e49acc7a95ec85c16a4a762b9e69ccc48f1062b1603c464e14770aa48b875d7e4754f0636acbdf8e53a97c6996265d92b23e1525e302a2c34c89c3d9c9998fcadd84fae7351c69138383928bd112af8f493ba07aaf45c6a65e7f223a7207b89186d408bb5fa2477054e11c4f5867419a8b832eaf8b342ff55f377db650eef87cb9177a2ef9854b43a48642bee0337244352dbacd49785a6b2683eb5fdcd039a4170180a85a09952c001a101a02a423063813552e95fd9b0a54122b26ed5cc0362274f8d7a6da9ca994ea00ee68cd2ec86ede2ac4f4e9698b8b1c7ccbabef0a5bf6e427f452b678191b891dbf77ab4956833f9a3831cb632478c2831ddd46a6f055ff974037fb7c57b707c4c7a20852d7b300779729770c8aefb0de26e4dba09cf8932eba8c6a3554bad9eef2092e92b924c24472bb93e5124cd6345a2ed7a7a7c19b475dadf1d953d4adebd53763df93509ed5370b49e1b4dc0a31e322cee7d70008d41ff79050adae9cb247047bc6e8e89ec87e5d6706c03979ad67814d216d3a85dc4c68b49045d7988752a8a222057958265291043940377c292d8e9ad5c0a90f3d7606c6ce8a38dc6bb684bfb3c5b8a80fad56ce9a062b70966686cf078556f027371a702ee3f64857b673ebec2a5f8938af9f97bd24d31cfd19001351211fa250d62dc35aa706c1285f04688db2af44c63a5e4e8ba715927f9764cd2dc912e35ad9169b3e97861bdd226a946d322744330317ae332ded03b43283e7189478943d8e854ab8c23f9cd5686c9640a8253c162fae3891dec390ae865569157dec592e5d4e823ecab327a8933601142e7a4c2874bfe725bbc43462e062db8f7fd085050c38e1a3b1e30f2a2efe4dc4993f5511ff4802bad743d5b726fe63f016d6dbda21188d4e677e617285c90696353c0435d89dec73c9aac461a6a580b7a7c536de015cc09cfb41c20279752d2a412635c51cb8c51e6593197a3ce11e1dcac315562ce1ab51cf7aa4cb52b680603a44e461d1946b2a689e99322ec3e8d436deddcef62e6204661d78c54e18e62a0077d4345eea67efd4c61ceb530ee019d5c6b0ad2412a7e01a05281b76fe0d43ddccbbfb3f07fb5aea313ce9e8b4e4747ea9eae2adcebb3256765bb0b68cf40e7db3a4675aaa1d11087a11b0509ec7f35551a905695cb81fc2c039b5220938702ec61962ad029695142a51302e2100d22fa6ab46d61eab9ab6ac8794da879eec3906679fbdee8c73e13c5a949c3b827853a28ab622e2a8944b697f6327f8c332e930ec81b0aa340d1d2f943ce8a0c63f8b54a07a3a0f0332c864e950b27d128f7097b34b9e3acdce4cc0a423209ad9c33b542419d0377924cd13bc8e48898fa489984c7cbe424b42f6cee44ea4ee5b413de7999cd9d786a3646d565f86041aedbe6a92b98f3e406e0f815db43a293a9fe70326dfff881df2b894b9dfd556177d12ddb387bcf23039eaba607a7be6f5ddb07a1d2251955c11bd0e0b5a2446e9e9c5a5537b91f55e511dc5e759eb080c9b3019e762adc221bd5e8a635ae8a142be307cf7faeac4cfbdce4dba3cb8157a58f59447a6a3316f0e3c0015267de4d0a0c6901757a3275977f68f3a52dccbb104ba6f052273ee84801ea065128d20e4fb2762feffafd733dc097ac780bb2229a174bafb32ab56dac9580066c3c0b4a135e6109b8fe18022daeff2d133c5cb6879d773ff61b8b9b7a395dc3886184c7c4bce33c5e4e40b8f10eebde5240ffe0456ecba7ae594a2ae21b488584c6bdc04a37aed188c6c07a6733e78d13583c5a6dfd230336321692cf71bde480f569da2d13c62babe4f57c1c0481136e82c3f96e0476e5f8c1a05d3a663080b075e66f4ca9d699643153e1ba82f8a673ccff49a378ed189169a517ee94274e02a7f31d15986bee34ab9e33468fb083d78e910a64476505b90a6a52d30a4437699e84997eb7117e0a94b8dae556f4dab92c4fa191b2be21a407089845382be7ed90d26a0e9bc772d173edde0774806972ae45994c4a45d20f63a6da3db02b3fe9ba73d34d7affdc284c95004625b3090a90b23da2cafe447463645710d2df8844f32422d62aad8212b9355b032d0db2745d6e4d2dc9b415dbf745df17ddfe45a3900e08e9afd46f551fa5ded1f7ab3fbdd124da79c9f87dc9fbbde46dfde1b26a69c531cd05dcdfd1df5b926c72522b81d8829bdb81940f0a144ba9c570629f84de916a466206657a64cb83f487ab3b82dc57dac1245d520e4ade1cc3de6a8bfb2b698b14a85c9ffb91a25890ae1831efb66b96493070031bff34b57a54857b92cb9026d0fceff2f5ec7f3c7a9cd6f72cf5a8c35abc86bad429f1d24bed6a972acfa754db3ab9ca3287e06433aa518925422926252f100fdd63c760a07820a8e50de0e55bad26e9356bdb47aa22427274831b3ed825f383cb8a2f7bd13e4958a6ec0764d84179fd5724b948c25724b948bae7f8c4e1b4e14aaebe44360557023ad1bb0ce42cdbfcb093d8c0433ebd105c56f8ca8736180d59f4b079c43639c9950e5ca9a9086b361d2428c7ac17515ef8e99a6ff5740ae23af7b35bbc920b6e813041d64449d36e5857ddbb1fb59a65af9aab0c4d26cc37f270b00c042c49e990be42eb0f96bcbf9c316a9f638c420a2d0a334b6ae160b1de09dd22d7c2c194e10ef920010da2560d022d992233d939f097ecf8d668f0ba0d3bf77683f38c36d7b777ca68eb7dc306572e199182a7349fd452da2097e85c1596fb7fb3c0eef2ec15f6cdbb360bcc820aaf748d9534dc17a4a1950aca9a8c8fadf4417c62ab7df21252dec21dd40836368526cc6bafbd6da56f129946811c2887db5bf0fa70ec554f342473542978b6bb8dc9ee8cab76367a186cbd33424a4c5d554fc87422cd2b2a0a447b580e796a67cd641ba2e2a496639a2608ca2175ce1437e2fc4915bdccceb254532c6c743f9796405ba5f44e10c342218e4a0f652529c83fed93d3507fdac2f546c951d723e277d147ca7252e2aba5e05345f2a585e195be465e2c93957345ec565dbc7711fe8147baf4d38240843078981be495060507f47abddf9759f6eeece601b1dfdf3860bdba77124eeaf1418cb151411aa12833915e535431f548eac5bdbbc1d609e7b14ff86bd8e716158c32228d32abd1467cf43c1c881606f91ed8f56f1609df6ac484e689d9cca2d3ef640875900d14d77feb841f3c66b48a11332df935120ebde302153d0b39db1ebabfcc5877131255073e85b82df0e95ebf62bb961dbd8f42b798526a5158899cc3316689b7c22c1704660f812cb5cf9e6cf470b96e2a5f5cd80167e3ca51c78e1a76bd628400136137dacb4d082b8b0c6b85b3bb8b0c8b91c8c1e92c1ce60ca7189bd25d5205c41bde13879a1c6654b8340826653ea05763336dc74fa1bff94c3eaa26d8267648bd813db017c84914752f59db98b2b88dfcbe647807f918e6723eaea11a32c0cbdfc92ef6632192f4d819442f1de69acb644c68359429e67e195d3ab017a78324368b0ea3b2562a9c22999c581412cc4186e4f6720ed7cb19f654ed97e8f926bc135e7f49d7a75866938607dd492d24274c0702022339360559423626cf1a8bd6e9d4dd98840cf2771d85805933a1119d8a80e783b53a97dd7df961604b15eeb2469fe075833de84541ca939e6a94949137942c0cc6fc2e543d294d8121e48a3c052d3cd2010b6f49772f6801935f98dda05e3ca9e0fd3e1989b0e2d165bfb5699d243b0b29501a9467086c5a0e3c2594f26d3eb0da27a9684de6fbc5e5f81ad365f24c9210e40469a0bbc85eea655edfcfd0fe64357e14ab86e772b8f21d0e513dbc1d9226fd65629826333af1f454db38bbbb7c0050575248ddde90ba0477d13981bc3432d35857ad9b58c86e727b7057c14e9ef7ca19ce6a35abdf6c79faa46e4332a9f808f9dcd81904f7836002600654d96d81a6447c8a5788caae473d8a28c0bbbf4bf98dc0a212d670bdb04e01a76d5209ff7a35672415d93ac6cdac4c5611d9a9af280ece40316e5b3088e8889c1428c811d389716bab8300939909067550b2324f02eeced9057b59241bfc8ea5f2ca7910fa07a7122293d6e14ec11f88f9a4aa76fcab73ca0a0bec48da02880d987d91d6cc2f1ed53cded831493220a38b64c3a01ca6503b92010e271529619aa8948a8a84f3a0117a5150e4a6e81ef6eb19894183e823e09dde0f69d2e3de8d5a009dcb6aab3dfb9b783246c793b31b924980825e768f95ca6bf8c5680416657e90276a25ae22426575d4e5c0f4950329ae68064a40d69f6a4921409df07bb2a51790b8c1e98202082a063d4f78017dd7949fe987cd336a723b555918b535af2c7a509ca0ca5230faee944c681a7b27eb6f5ec400f54246a09083bb0f44b13ff0dae24210c88a214a6a40556ee511dca3cd8b8d62252250673c417ce8c23208a055d60d9317efd31ea251aebf7b17a1f45fa158a1c49374e58d8572c2985dc10b0138dda8b42881e7ec0c7a9447f4f23518852b6ab545c97dbc586d9120e45fa715c89d62e651ea080f7aa51569422c463989e87325076f4853e065ae611e424a089b2715949d8b3ca0a11a39c53cda5d4bae266dbc10429e09b962703f85252a0bb9a922e60db9097d608821a46bb231b07782d96147137e3fc5fbeb227d184b453d187e1fe05fbd0fa9926e2a56b52e6d2ca86a3e10d0af0b0782eb514e0e06afa79a2a70df5caad57d7feeadef6bbde828689d7830b7f6c2680e4e3882e3e52e2c9b1a95971e5cb6a245d038021eb831a9754de642ef86dd299e8788b6558e0b7e1fd3e099d3a512add27347ba7eba5d112b9002b89279b22d29de987892b83271768853abc0319b22059d2b60e97674926b691f1f71bc80394f9406f9a6da72195b06a0e2e4ceccec4b19bc0df9897220528d8d7843bd601bc87352e1f5ceb7966a95df55c37d1ea52a9bed65cdc576bfb15a99ca4eb2c56ca6b0578b947deecbb690d52ec28f7acc362c31bca13ddfafd82997de9c6962919758afa0d14e9ab7362d3405fd1217405d1ec5a0f2002c848091348dbf3af6313a2672f6eea7c471354e128126158ae89fcf16cf8fe721fd525b873dbcbd2e515fa84132144695bef6891a15941992c2b5c1a2079393a2a3c5181c40543ef805d229e118a4de18715db81ab839018ce4afc16520e8e0a9cdc5e5db77ad7b608ce49535d3348e59c9dc2952b3f65d112fd8b2966cb8e11e0e94735047fba88f96eb6b7a976fbd26398e0d8348954ec61c4a69685b08c57087cc0a7d8aa8c8ed8d8e6496599e326c7f47b1cd4e15de9f9413f3f02ca082e10242253780ab19aff7a7798941c02da3bf491e1a9cacec62334dcb340901da82f98651508d3410ad05330152ff9099f0cef2c74dba6f52beab57bf77ca87b5a24ca5ecc4ef4bfd680637995042a4e5976d81e386b090b5ccd1d985758213938431e2cad936e7685143db47678b7bd2eb28c1206f85d4e1ccbb7bb92fe13a765cd80a693be56aad691ea513b21a7a106ded4605d92c924a5ad3bf72ff30306c3e6a0e6dad41afae10abe1eb6efaf9f8039e412fa05efb8046406925841fd5996a21e1f3bb06b6194e8d19dd5ecd657092dca530aace95fad527995d1021ca6a10443a3555c51d977459fb46d93723e8dbfc4bedeef9989574706230e4e09e92564d93b39bce30dc4bbaff1dfbf71dfbdea982d3a82c351dfc94881efe0e8fbb33fa29ca78c17c798289d7ef62020009a0814a310d345963038e8c2c5b385d9f7b50921c567e0a4b75967aeed4c9a38572a51ab8468d29e24503b26d323ca89f78e1fac3a47584cfcaa880c1215fa2401e2bf25a017b3bc184b66379595227364d962645a51db8920b2a0065d278766a14cc8e36eba449cadb256dfa4ac448a4fd4ac44ae43b6b363ad27c255290c8f4954a36735e4722f0f8c13dbdd4b83b21948fabbf1e1e2f9493217ef699b824b7eaba8f6d0af4c427e2de2ae2aab09ed206c373a2e5bd3ab8ed7f9af0a540eefca757a0ba4891086c86e6683288f60e8cdfdcb253d5a188c707771352b932395f8d6e6fbf92a948263c5e32da76a5069782f9eb2b18ecdcb6c517db5263ee76b777f17b56fc328546a32f9995c6919115df08b404d738bff9775f261d9c30f69fe972ce55c66f55bb19d5d1c25786ec83bc0cf1460aad3dcf31f3dd855e6af923113652a61d05a660b1d23458d84323f4ccfae29da467b0e3d1a8308323dd4123a1b1b241cb7a32e6d3556faed06ba5f2e61e7e42766dd3607470e779dba90edc4220e165bc88799103b4ee27de6e717fd2fddaf901e6277a2bc3d49dd23612cb565ac1957366c8fbf1a146811af763173d0467b62a7996363e5ab250aba5e84ee55807db0e8d374c961ede9e6f93b582499190e7b10579496cdfbd14bcb3c57fdd572299448e08ed0f9408aefa4a25974afb954aa198f8ab2b99548e12209f397bde09f4c4755deefe8edd90a344ceac5f54d1250687656664f564850257f721709e4c801fd731b2951aeaa0ace7f4d2d941f7ccdcc6b513e5a3b3c096afc1b6b2d04aa5d793fcb8e086817823432055d886f3ee1d61d9fbc0a523a6fd435de11736b9822b7cb054bef4d8dfa0c72cc77259122788ea3179d828d3cbe900603242f3dbf5e43309891da5cd2a853d0dc0908e2355592cc97cef0fd5c0ea5c55cb274d4f600204292ec5000a57922e0059fa0746e9119fa6b976945871d88a6f114fe6f5f0e9455c2649f2bb04095f78430f7098e58eba0995e5d1bbabdd77eda0c2e6200ad14d0000c94c364aceb2f95138bfd911d390417e27e6e8956d4cb884498cf40cfc7d72084d2021ebccbd812a78e6f19593f597bd33b993eceba5ebe87714ee641e8299a41d2e340b1dd5a1c9f208e180a170479b7fea521450bd28acc134e284617d2ff1d98586ed94b8a3600dabaa90e7441532a3c35cebeef651950788b60731ad52bb21cb7370182cfa92b7181d6b8c9089b8c48698098c12f1ea66de3061dc19bf7675790d163f87254827b9aea8330e5cdc33aae98ca2015bdb50b59b3b39bace1d18aef98a5da315e98324ebc1b426bb3688999806a5865c0c1e14b66a31c851a9c6990dc837560b96cc3b5b0cd689b78b088bc04e347ffc53173e87c9709816f778d13f663a31d9be1fba1017a12a6680274e7fe802eb66a3b6b9135b02cbce00051383c9c1ee55d727ae4f48b60b789025315c9c2c5e20c830600f92fb681989915faeb1f6ca8ab1b7e2968c1d4fad8639329baa1ca13146a2c966a19096648d266f94f33385afc9b3dc61ce46a74abc8286d0d4176eefbd4a723473a909fad55b395367e02188925244ce5690ab4a210504f30c2157d8bc903d35c94b63175451089c0a328138efe135c158882483344426d528979f49563c4e22a63a17b85798ca5ec9222a39b56239e0da29b75154835899aba40711341f9acce011b688de157144874600ad6bfc91702448d5f9fccb0be3b084e293847148787f94668c8f15c6d9b8cd723f3a5abe19f7b37df5013fa7d62c33f4cf2b45a35cce9de0e66bced1fdbe42144d02702067901fbdc83d6a0e697052797a0a9860041940c1da7bf59351eacbef00bd08f59a3db597cc1758902cfea5ff4f630e54328d5a2670a02af0335bf62a3219bf988a7ced11f7648220b2555206039a2269caac57de32c9811450781f991c96c67ca24cfc2bc8c460b741e28fd528b4ca7d30d8031c25ba34850e88772057819abd369eca054ce34940f12063e2d52b92b2404a34bdc27b40281042521793cb300259146a52e1134546d5d45a7280c1a9ba83d8694dc063c0e0cca9b56a0a40e5df4628879af28942390c4e3e5228dd57285ba10caf209417f23c085c9eeb795e4920dd2b08e4c5f05aff58bc761d51ef29c9211d5faf8abc2a28b9c88dacd1653375ac48bb15946e4d49f2e007b451d32bc0ce2c8f6758df29054a8a03a1301455ca44fad10ba87ea6f0bc8c6596a34eb39436b3cd3a322a8d5173f60c337d67e1c574ecaf6df826f39ec93231098d93023252e8bd614d70e3c77e570e56755218c15a8774d1a4008518f5a12cba643d2edd95e049f4da1fda2d12dd35497e782b4115c94891281cc4c27f87f2264309bbfcabdd9a1bc7a249a22df80385f8d634b7178f6d160d5fef4aef5530606c8c41ccd288f417d3e780baac4ff998adfd070102406784c2ded96211cdf0c37fedaf50926450508e91452a4c154c83f84e4619d0c356d997514c0b6b2618782ae88c0c1565ca2cf30e4aea54e0d0a9112754ed2d5a8a2ac6d228ad3b3f2f000bdfaf5c756ebad98636ac8a38df3dff3d8397f967be66d91f229d5bae8b69ef88d695324e8d06528d5240901784afbd53d5678d3b5fa531aad1ec95da0cced42430b4ecb3516f442bfef448c79dd1dc8c9e80b764df656c06985f08530bb497517dc6e0954d97689fc6b0f02b8c64150147bb332983362a27db666d0bd6bc08bb073bdb8b01fe0a25174af80a652b14ff92b68f68446a2b68d61b5c79a3da0a0378f7b7cb1ae587d5bb24f74c152d209258b744c91d122f2aaefd88ecc1d1b4fc3c817cf34b9940be59c84c20f12b102b10ff15c8cf2625fb35ac05a17c35a52094af3db14261eef48142398b8a19ec3780991e9d1554bc7ce67c4bd0736d9912e77c2868d83c6d9804599256e44e19b4b39b8d88816ca9502e486aa3dd97ae95dd486025f76e2201d2af9b857779cfb92006514e748cae98c64eff42ab59768148e0d7ddfed5d60f26395f8c7cc24d04bb25901581833e83b760dd4783f77bc77504465f6a664487a24faff068dcd32a3c625d45f6124d0cabb38d7a3a631adaecb631144fe72fe696b6dc23e4e1dfcabbe1b7dd98ad402280ee25287d4b43cc2200729a6f950a39004e4f4885f88d114223d49e1764c32d7dcdfdd2b3bdbb31ef2521bce3fc3841f1d8a8a9202e650a625f604ef098276f9c011f55d83b312b6bf1197cea5d5602a8f51a1a8984f12c9243de2bc951170798d2be46e10b0da57a35cb12ee38720e51cfa7a8664a236e87b46c9b7ea2fc0ba3cb35714c84a6df35caa43ff3f98c1abe12511249377c256224f29d35f9ace9be12c92412bf12c924d23f5622ca7bc36d2adf2c7158d4be9798a35484a6be58d42438c39a06b55bc6902e8d020262ea2c8ae498f697535266ca50481cbdc29c8c6a133e14748379986421dba8b445487347a1f061ac5388717328bdceb3ff79b73badb3deec101881c419dd45a585aae2fae9fdee3687a649bfd2425744f69d1a6c8e21813c3a80985ec7348fedf0a1f64f7cce46fbcda91ded8f41f499685d5926b50426b36f64119fa00506e3db08c86b0a748d19440cf30521b0474dd15664bb513593b2d19a3d3a7fab899e54241bb46c274d0251e00c36107bc9b47bfa7fbef27b6f2ffb4757dba0fe48374cf3d065776effeb2ac7875a3b46f547588a966772a395bf17d1af7fb6ff10641f8eba39d6ba1f2b6d08a63db33684816d580f2c7362bdf81f7f067fd4869a1842ad0dad11c3dc652387f9c03c28eb2d6d7ff4fe9d26b4be222bd3842e6f42d79926f4e38926d4ae6987134de867092ddbd6955bb09888aba5d09941d7276a4fddbc3f1e6a62539f73b138f88b35ac3e6a997db3349216b417be5fff676cd2a98e2c1b5fcbdbc745045e5aae9f17f5b8ea21f05a7387a12483fdffc284e64ef117dd1f2f7df5fc3679f75c351ada2bdffe2ffff4ef7ed2fffeefbffecf9ffff57ffef7fffbff3ffffd3ffeb7fff29fffc77ffd4ffffee79fffb50dfff433fecbcf7ff8f9e77ee8633b0e0b4beddb2e76719807ceb753137c8c6136d543ec42d3752bebde87d04df34875a11f43330cdd30b7fb1f77f97e668edbc64fe338f5ba11ff06cbfda3c6" - } - ] -} \ No newline at end of file diff --git a/e2e/testdata/risc0.code b/e2e/testdata/risc0.code new file mode 100644 index 0000000000000000000000000000000000000000..2b0cd410a5adb603e9d300b662bdc365739255e9 GIT binary patch literal 107024 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 literal 0 HcmV?d00001 diff --git a/e2e/util.go b/e2e/util.go index 336f5cfb..32b2c1e6 100644 --- a/e2e/util.go +++ b/e2e/util.go @@ -5,6 +5,7 @@ import ( "context" "crypto/ecdsa" "crypto/sha256" + "encoding/binary" "encoding/json" "fmt" "log" @@ -19,13 +20,16 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient" - "github.com/iotexproject/w3bstream/e2e/services" - "github.com/iotexproject/w3bstream/service/apinode/api" "github.com/pkg/errors" "github.com/stretchr/testify/require" + "github.com/tidwall/gjson" + + "github.com/iotexproject/w3bstream/e2e/services" + "github.com/iotexproject/w3bstream/project" + "github.com/iotexproject/w3bstream/service/apinode/api" ) -func signMesssage(data []byte, projectID uint64, key *ecdsa.PrivateKey) ([]byte, error) { +func signMesssage(data []byte, projectID uint64, cfg *project.Config, key *ecdsa.PrivateKey) ([]byte, error) { req := &api.CreateTaskReq{ Nonce: uint64(time.Now().Unix()), ProjectID: strconv.Itoa(int(projectID)), @@ -38,24 +42,28 @@ func signMesssage(data []byte, projectID uint64, key *ecdsa.PrivateKey) ([]byte, } h := sha256.Sum256(reqJson) - // TODO: uncomment once project config can be loaded - // value := gjson.GetBytes(data, "timestamp") - // buf := new(bytes.Buffer) - // if err := binary.Write(buf, binary.LittleEndian, value.Uint()); err != nil { - // return nil, errors.New("failed to convert uint64 to bytes array") - // } - // d := []byte{} - // d = append(d, h[:]...) - // d = append(d, buf.Bytes()...) - // nh := sha256.Sum256(d) + + if cfg != nil && len(cfg.SignedKeys) > 0 && gjson.ValidBytes(data) { + buf := new(bytes.Buffer) + buf.Write(h[:]) + for _, key := range cfg.SignedKeys { + switch key.Type { + case "uint64": + value := gjson.GetBytes(data, key.Name) + if err := binary.Write(buf, binary.LittleEndian, uint64(value.Uint())); err != nil { + return nil, errors.New("failed to convert uint64 to bytes array") + } + } + } + h = sha256.Sum256(buf.Bytes()) + } + sig, err := crypto.Sign(h[:], key) if err != nil { return nil, err } sig = sig[:len(sig)-1] - fmt.Printf("signature: %s, hash: %s\n", hexutil.Encode(sig), hexutil.Encode(h[:])) - req.Signature = hexutil.Encode(sig) return json.Marshal(req) diff --git a/service/apinode/api/http.go b/service/apinode/api/http.go index 16733189..07e4dc70 100644 --- a/service/apinode/api/http.go +++ b/service/apinode/api/http.go @@ -40,10 +40,6 @@ func newErrResp(err error) *errResp { // mainnet 6 // testnet 923 var ( - defaultProject = project.Config{ - SignatureAlgorithm: "ecdsa", - HashAlgorithm: "sha256", - } pebbleProject = project.Config{ SignedKeys: []project.SignedKey{{Name: "timestamp", Type: "uint64"}}, SignatureAlgorithm: "ecdsa", @@ -146,10 +142,11 @@ type QueryTaskResp struct { } type httpServer struct { - engine *gin.Engine - db *db.DB - sequencerAddr string - proverAddr string + engine *gin.Engine + db *db.DB + projectManager *project.Manager + sequencerAddr string + proverAddr string } func (s *httpServer) createTask(c *gin.Context) { @@ -172,16 +169,26 @@ func (s *httpServer) createTask(c *gin.Context) { return } - // TODO move to project file - cfg := &defaultProject - if req.ProjectID == "923" { - cfg = &pebbleProject + proj, err := s.projectManager.Project(pid) + if err != nil { + slog.Error("failed to get project", "error", err) + c.JSON(http.StatusBadRequest, newErrResp(errors.Wrap(err, "failed to get project"))) + return } - if req.ProjectID == "942" { - cfg = &geoProject + cfg, err := proj.Config(req.ProjectVersion) + if err != nil { + slog.Error("failed to get project config", "error", err) + c.JSON(http.StatusBadRequest, newErrResp(errors.Wrap(err, "failed to get project config"))) + return } - recovered, sigAlg, hashAlg, err := Recover(*req, cfg, sig) + _, hash, hashAlg, _, err := HashTask(req, cfg) + if err != nil { + slog.Error("failed to hash request", "error", err) + c.JSON(http.StatusBadRequest, newErrResp(errors.Wrap(err, "failed to hash request"))) + return + } + recovered, sigAlg, err := recover(hash, sig, cfg) if err != nil { slog.Error("failed to recover public key", "error", err) c.JSON(http.StatusBadRequest, newErrResp(errors.Wrap(err, "invalid signature; could not recover public key"))) @@ -191,7 +198,7 @@ func (s *httpServer) createTask(c *gin.Context) { var approved bool for _, r := range recovered { addr := crypto.PubkeyToAddress(*r.pubkey) - slog.Info("recovered address", "project_id", pid.String(), "address", addr.String()) + slog.Debug("recovered address", "project_id", pid.String(), "address", addr.String()) ok, err := s.db.IsDeviceApproved(pid, addr) if err != nil { slog.Error("failed to check device permission", "error", err) @@ -239,50 +246,58 @@ func (s *httpServer) createTask(c *gin.Context) { }) } -func Recover(req CreateTaskReq, cfg *project.Config, sig []byte) (res []*struct { - pubkey *ecdsa.PublicKey - sig []byte -}, sigAlg, hashAlg string, err error) { - slog.Debug("request json info", "signature", req.Signature) +func HashTask(req *CreateTaskReq, cfg *project.Config) ([32]byte, [32]byte, string, []any, error) { req.Signature = "" reqJson, err := json.Marshal(req) if err != nil { - return nil, "", "", errors.Wrap(err, "failed to marshal request into json format") + return [32]byte{}, [32]byte{}, "", nil, errors.Wrap(err, "failed to marshal request into json format") } - var hash [32]byte + var ( + payloadHash [32]byte + finalHash [32]byte + hashAlg string + data []any + ) switch cfg.HashAlgorithm { default: hashAlg = "sha256" - h1 := sha256.Sum256(reqJson) - slog.Debug("request json info", "data", string(reqJson), "hash", hexutil.Encode(h1[:])) + payloadHash = sha256.Sum256(reqJson) + slog.Debug("request json info", "data", string(reqJson), "hash", hexutil.Encode(payloadHash[:])) if len(cfg.SignedKeys) == 0 { - hash = h1 + finalHash = payloadHash break } else { // concatenate payload hash with signed keys from payload json if ok := gjson.ValidBytes(req.Payload); !ok { slog.Error("failed to validate payload in json format") - return nil, "", "", errors.Wrap(err, "failed to validate payload in json format") + return [32]byte{}, [32]byte{}, "", nil, errors.Wrap(err, "failed to validate payload in json format") } buf := new(bytes.Buffer) - buf.Write(h1[:]) + buf.Write(payloadHash[:]) for _, k := range cfg.SignedKeys { value := gjson.GetBytes(req.Payload, k.Name) switch k.Type { case "uint64": slog.Debug("request json info", "json value uint64", value.Uint()) + data = append(data, value.Uint()) if err := binary.Write(buf, binary.LittleEndian, value.Uint()); err != nil { - return nil, "", "", errors.New("failed to convert uint64 to bytes array") + return [32]byte{}, [32]byte{}, "", nil, errors.New("failed to convert uint64 to bytes array") } } } slog.Debug("request json info", "hash_d_final", hexutil.Encode(buf.Bytes())) - hash = sha256.Sum256(buf.Bytes()) - slog.Debug("request json info", "hash_final", hexutil.Encode(hash[:])) + finalHash = sha256.Sum256(buf.Bytes()) + slog.Debug("request json info", "hash_final", hexutil.Encode(finalHash[:])) } } + return payloadHash, finalHash, hashAlg, data, nil +} +func recover(hash [32]byte, sig []byte, cfg *project.Config) (res []*struct { + pubkey *ecdsa.PublicKey + sig []byte +}, sigAlg string, err error) { switch cfg.SignatureAlgorithm { default: sigAlg = "ecdsa" @@ -291,14 +306,14 @@ func Recover(req CreateTaskReq, cfg *project.Config, sig []byte) (res []*struct ns := append(sig, byte(id)) pk, err := crypto.SigToPub(hash[:], ns) if err != nil { - return nil, "", "", errors.Wrapf(err, "failed to recover public key from signature, recover_id %d", id) + return nil, "", errors.Wrapf(err, "failed to recover public key from signature, recover_id %d", id) } res = append(res, &struct { pubkey *ecdsa.PublicKey sig []byte }{pubkey: pk, sig: ns}) } - return res, sigAlg, hashAlg, nil + return res, sigAlg, nil } } @@ -426,12 +441,14 @@ func (s *httpServer) queryTask(c *gin.Context) { } // this func will block caller -func Run(p *db.DB, addr, sequencerAddr, proverAddr string) error { +func Run(p *db.DB, projectManager *project.Manager, + addr, sequencerAddr, proverAddr string) error { s := &httpServer{ - engine: gin.Default(), - db: p, - sequencerAddr: sequencerAddr, - proverAddr: proverAddr, + engine: gin.Default(), + db: p, + projectManager: projectManager, + sequencerAddr: sequencerAddr, + proverAddr: proverAddr, } s.engine.POST("/task", s.createTask) diff --git a/service/apinode/apinode.go b/service/apinode/apinode.go index 9328b749..4ce91f23 100644 --- a/service/apinode/apinode.go +++ b/service/apinode/apinode.go @@ -6,6 +6,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/iotexproject/w3bstream/monitor" + "github.com/iotexproject/w3bstream/project" "github.com/iotexproject/w3bstream/service/apinode/aggregator" "github.com/iotexproject/w3bstream/service/apinode/api" "github.com/iotexproject/w3bstream/service/apinode/config" @@ -33,8 +34,10 @@ func (n *APINode) Start() error { AssignTask: n.db.UpsertAssignedTask, SettleTask: n.db.UpsertSettledTask, UpsertProjectDevice: n.db.UpsertProjectDevice, + UpsertProject: n.db.UpsertProject, }, &monitor.ContractAddr{ + Project: common.HexToAddress(n.cfg.ProjectContractAddr), TaskManager: common.HexToAddress(n.cfg.TaskManagerContractAddr), IoID: common.HexToAddress(n.cfg.IoIDContractAddr), }, @@ -44,10 +47,12 @@ func (n *APINode) Start() error { return errors.Wrap(err, "failed to run contract monitor") } + projectManager := project.NewManager(n.db.Project, n.db.ProjectFile, n.db.UpsertProjectFile) + go aggregator.Run(n.db, n.cfg.SequencerServiceEndpoint, time.Duration(n.cfg.TaskAggregatorIntervalSecond)*time.Second) go func() { - if err := api.Run(n.db, n.cfg.ServiceEndpoint, n.cfg.SequencerServiceEndpoint, n.cfg.ProverServiceEndpoint); err != nil { + if err := api.Run(n.db, projectManager, n.cfg.ServiceEndpoint, n.cfg.SequencerServiceEndpoint, n.cfg.ProverServiceEndpoint); err != nil { log.Fatal(err) } }() diff --git a/service/apinode/config/config.go b/service/apinode/config/config.go index 331e03f8..39d81cb8 100644 --- a/service/apinode/config/config.go +++ b/service/apinode/config/config.go @@ -17,6 +17,7 @@ type Config struct { PrvKey string `env:"PRIVATE_KEY,optional"` ChainEndpoint string `env:"CHAIN_ENDPOINT,optional"` BeginningBlockNumber uint64 `env:"BEGINNING_BLOCK_NUMBER,optional"` + ProjectContractAddr string `env:"PROJECT_CONTRACT_ADDRESS,optional"` TaskManagerContractAddr string `env:"TASK_MANAGER_CONTRACT_ADDRESS,optional"` IoIDContractAddr string `env:"IOID_CONTRACT_ADDRESS,optional"` LocalDBDir string `env:"LOCAL_DB_DIRECTORY,optional"` diff --git a/service/apinode/db/sqlite.go b/service/apinode/db/sqlite.go index 424b2ed3..16dafa58 100644 --- a/service/apinode/db/sqlite.go +++ b/service/apinode/db/sqlite.go @@ -34,6 +34,20 @@ type ProjectDevice struct { DeviceAddress string `gorm:"uniqueIndex:project_device_uniq,not null"` } +type project struct { + gorm.Model + ProjectID string `gorm:"uniqueIndex:project_id_project,not null"` + URI string `gorm:"not null"` + Hash string `gorm:"not null"` +} + +type projectFile struct { + gorm.Model + ProjectID string `gorm:"uniqueIndex:project_id_project_file,not null"` + File []byte `gorm:"not null"` + Hash string `gorm:"not null"` +} + func (p *DB) CreateTask(t *Task) error { err := p.sqlite.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "task_id"}}, @@ -152,6 +166,51 @@ func (p *DB) UpsertScannedBlockNumber(number uint64) error { return errors.Wrap(err, "failed to upsert scanned block number") } +func (p *DB) Project(projectID *big.Int) (string, common.Hash, error) { + t := project{} + if err := p.sqlite.Where("project_id = ?", projectID.String()).First(&t).Error; err != nil { + return "", common.Hash{}, errors.Wrap(err, "failed to query project") + } + return t.URI, common.HexToHash(t.Hash), nil +} + +func (p *DB) UpsertProject(projectID *big.Int, uri string, hash common.Hash) error { + t := project{ + ProjectID: projectID.String(), + URI: uri, + Hash: hash.Hex(), + } + err := p.sqlite.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "project_id"}}, + DoUpdates: clause.AssignmentColumns([]string{"uri", "hash"}), + }).Create(&t).Error + return errors.Wrap(err, "failed to upsert project") +} + +func (p *DB) ProjectFile(projectID *big.Int) ([]byte, common.Hash, error) { + t := projectFile{} + if err := p.sqlite.Where("project_id = ?", projectID.String()).First(&t).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return nil, common.Hash{}, nil + } + return nil, common.Hash{}, errors.Wrap(err, "failed to query project file") + } + return t.File, common.HexToHash(t.Hash), nil +} + +func (p *DB) UpsertProjectFile(projectID *big.Int, file []byte, hash common.Hash) error { + t := projectFile{ + ProjectID: projectID.String(), + File: file, + Hash: hash.Hex(), + } + err := p.sqlite.Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "project_id"}}, + DoUpdates: clause.AssignmentColumns([]string{"file", "hash"}), + }).Create(&t).Error + return errors.Wrap(err, "failed to upsert project file") +} + func newSqlite(localDBDir string) (*gorm.DB, error) { db, err := gorm.Open(sqlite.Open(localDBDir), &gorm.Config{ Logger: logger.Default.LogMode(logger.Silent), @@ -159,7 +218,7 @@ func newSqlite(localDBDir string) (*gorm.DB, error) { if err != nil { return nil, errors.Wrap(err, "failed to connect sqlite") } - if err := db.AutoMigrate(&scannedBlockNumber{}, &Task{}, &AssignedTask{}, &SettledTask{}, &ProjectDevice{}); err != nil { + if err := db.AutoMigrate(&scannedBlockNumber{}, &Task{}, &AssignedTask{}, &SettledTask{}, &ProjectDevice{}, &project{}, &projectFile{}); err != nil { return nil, errors.Wrap(err, "failed to migrate model") } return db, nil diff --git a/vm/payload.go b/vm/payload.go index 138b1a69..a01a13f2 100644 --- a/vm/payload.go +++ b/vm/payload.go @@ -1,19 +1,12 @@ package vm import ( - "bytes" - "crypto/sha256" _ "embed" - "encoding/binary" - "encoding/json" "math/big" "github.com/consensys/gnark-crypto/ecc" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/std/math/uints" - "github.com/ethereum/go-ethereum/common" - "github.com/pkg/errors" - "github.com/tidwall/gjson" "github.com/iotexproject/w3bstream/project" "github.com/iotexproject/w3bstream/service/apinode/api" @@ -47,14 +40,19 @@ type ProofofLivenessCircuit struct { func (circuit *ProofofLivenessCircuit) Define(api frontend.API) error { return nil } func encodePebblePayload(task *task.Task, projectConfig *project.Config) ([]byte, error) { - sig := task.Signature + sig := task.Signature[:64] pubbytes := task.DevicePubKey - h1, _, data, err := recover(task, projectConfig) + payloadHash, _, _, data, err := api.HashTask( + &api.CreateTaskReq{ + Nonce: task.Nonce, + ProjectID: task.ProjectID.String(), + ProjectVersion: task.ProjectVersion, + Payload: task.Payload, + }, projectConfig) if err != nil { return nil, err } timestamp := data[0].(uint64) - payloadHash := h1 assignment := ProofofLivenessCircuit{ PayloadHash: uints.NewU8Array(payloadHash[:]), @@ -68,44 +66,3 @@ func encodePebblePayload(task *task.Task, projectConfig *project.Config) ([]byte } return witness.MarshalBinary() } - -// TODO duplicate logic -func recover(t *task.Task, cfg *project.Config) (h1, h2 common.Hash, data []any, err error) { - req := api.CreateTaskReq{ - Nonce: t.Nonce, - ProjectID: t.ProjectID.String(), - ProjectVersion: t.ProjectVersion, - Payload: t.Payload, - } - reqJson, err := json.Marshal(req) - if err != nil { - return common.Hash{}, common.Hash{}, nil, errors.Wrap(err, "failed to marshal request into json format") - } - - switch cfg.HashAlgorithm { - default: - h1 = sha256.Sum256(reqJson) - if len(cfg.SignedKeys) == 0 { - h2 = h1 - } else { - // concatenate payload hash with signed keys from payload json - if ok := gjson.ValidBytes(req.Payload); !ok { - return common.Hash{}, common.Hash{}, nil, errors.Wrap(err, "failed to validate payload in json format") - } - buf := new(bytes.Buffer) - buf.Write(h1[:]) - for _, k := range cfg.SignedKeys { - value := gjson.GetBytes(req.Payload, k.Name) - switch k.Type { - case "uint64": - data = append(data, value.Uint()) - if err := binary.Write(buf, binary.LittleEndian, value.Uint()); err != nil { - return common.Hash{}, common.Hash{}, nil, errors.New("failed to convert uint64 to bytes array") - } - } - } - h2 = sha256.Sum256(buf.Bytes()) - } - } - return -} From b9a501dbe21539100c3dc06a361cd6b1ba799dc7 Mon Sep 17 00:00:00 2001 From: Liuhaai Date: Thu, 19 Dec 2024 15:10:59 -0800 Subject: [PATCH 2/2] fix --- e2e/e2e_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index e4796349..107b58f3 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -195,8 +195,9 @@ func TestE2E(t *testing.T) { }) } -func sendMessage(t *testing.T, dataJson []byte, projectID *big.Int, deviceKey *ecdsa.PrivateKey, apiNodeUrl string) { - reqBody, err := signMesssage(dataJson, projectID.Uint64(), deviceKey) +func sendMessage(t *testing.T, dataJson []byte, projectID *big.Int, + projectConfig *project.Config, deviceKey *ecdsa.PrivateKey, apiNodeUrl string) { + reqBody, err := signMesssage(dataJson, projectID.Uint64(), projectConfig, deviceKey) require.NoError(t, err) taskID, err := createTask(reqBody, apiNodeUrl)