diff --git a/deployment/ccip/changeset/cs_prerequisites_test.go b/deployment/ccip/changeset/cs_prerequisites_test.go index 6ed20b3db0c..41a3c4ff3a8 100644 --- a/deployment/ccip/changeset/cs_prerequisites_test.go +++ b/deployment/ccip/changeset/cs_prerequisites_test.go @@ -3,10 +3,11 @@ package changeset_test import ( "testing" - chain_selectors "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" + chain_selectors "github.com/smartcontractkit/chain-selectors" + cldf_chain "github.com/smartcontractkit/chainlink-deployments-framework/chain" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" diff --git a/deployment/ccip/changeset/v1_6/cs_deploy_chain.go b/deployment/ccip/changeset/v1_6/cs_deploy_chain.go index 38fe9e2bb20..23e1e53dc5a 100644 --- a/deployment/ccip/changeset/v1_6/cs_deploy_chain.go +++ b/deployment/ccip/changeset/v1_6/cs_deploy_chain.go @@ -6,6 +6,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common/hexutil" + cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" diff --git a/deployment/ccip/changeset/v1_6/cs_deploy_chain_test.go b/deployment/ccip/changeset/v1_6/cs_deploy_chain_test.go index 7c35feffa88..96871753661 100644 --- a/deployment/ccip/changeset/v1_6/cs_deploy_chain_test.go +++ b/deployment/ccip/changeset/v1_6/cs_deploy_chain_test.go @@ -3,10 +3,11 @@ package v1_6_test import ( "testing" - chain_selectors "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" + chain_selectors "github.com/smartcontractkit/chain-selectors" + cldf_chain "github.com/smartcontractkit/chainlink-deployments-framework/chain" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" @@ -37,6 +38,32 @@ func TestDeployChainContractsChangeset(t *testing.T) { }) evmSelectors := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chain_selectors.FamilyEVM)) homeChainSel := evmSelectors[0] + testDeployChainContractsChangesetWithEnv(t, e, homeChainSel) +} + +func TestDeployChainContractsChangesetZk(t *testing.T) { + t.Parallel() + lggr := logger.TestLogger(t) + e := memory.NewMemoryEnvironment(t, lggr, zapcore.InfoLevel, memory.MemoryEnvironmentConfig{ + Bootstraps: 1, + Chains: 1, + ZkChains: 1, + Nodes: 4, + }) + evmSelectors := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chain_selectors.FamilyEVM)) + var homeChainSel uint64 + for _, selector := range evmSelectors { + chain := e.BlockChains.EVMChains()[selector] + if !chain.IsZkSyncVM { + homeChainSel = chain.Selector + break + } + } + testDeployChainContractsChangesetWithEnv(t, e, homeChainSel) +} + +func testDeployChainContractsChangesetWithEnv(t *testing.T, e cldf.Environment, homeChainSel uint64) { + evmSelectors := e.BlockChains.ListChainSelectors(cldf_chain.WithFamily(chain_selectors.FamilyEVM)) nodes, err := deployment.NodeInfo(e.NodeIDs, e.Offchain) require.NoError(t, err) p2pIds := nodes.NonBootstraps().PeerIDs() diff --git a/deployment/ccip/operation/evm/v1_2/ops_router.go b/deployment/ccip/operation/evm/v1_2/ops_router.go index 30b15e10de2..ef7a4f84eb4 100644 --- a/deployment/ccip/operation/evm/v1_2/ops_router.go +++ b/deployment/ccip/operation/evm/v1_2/ops_router.go @@ -3,6 +3,7 @@ package v1_2 import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v1_2_0/router" cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" @@ -32,12 +33,29 @@ var ( deployFn := func(chain cldf_evm.Chain, tv cldf.TypeAndVersion) (cldf.ContractDeploy[*router.Router], error) { r, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*router.Router] { - routerAddr, tx2, routerC, err2 := router.DeployRouter( - chain.DeployerKey, - chain.Client, - input.WethAddress, - input.RMNProxy, + var ( + routerAddr common.Address + tx2 *types.Transaction + routerC *router.Router + err2 error ) + if chain.IsZkSyncVM { + routerAddr, _, routerC, err2 = router.DeployRouterZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + input.WethAddress, + input.RMNProxy, + ) + } else { + routerAddr, tx2, routerC, err2 = router.DeployRouter( + chain.DeployerKey, + chain.Client, + input.WethAddress, + input.RMNProxy, + ) + } return cldf.ContractDeploy[*router.Router]{ Address: routerAddr, Contract: routerC, Tx: tx2, Tv: tv, Err: err2, } diff --git a/deployment/ccip/operation/evm/v1_6/ops_fee_quoter.go b/deployment/ccip/operation/evm/v1_6/ops_fee_quoter.go index 3fdfd196893..e814fffa349 100644 --- a/deployment/ccip/operation/evm/v1_6/ops_fee_quoter.go +++ b/deployment/ccip/operation/evm/v1_6/ops_fee_quoter.go @@ -44,30 +44,65 @@ var ( contractParams := input.Params feeQ, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*fee_quoter.FeeQuoter] { - prAddr, tx2, pr, err2 := fee_quoter.DeployFeeQuoter( - chain.DeployerKey, - chain.Client, - fee_quoter.FeeQuoterStaticConfig{ - MaxFeeJuelsPerMsg: contractParams.MaxFeeJuelsPerMsg, - LinkToken: input.LinkAddr, - TokenPriceStalenessThreshold: contractParams.TokenPriceStalenessThreshold, - }, - input.PriceUpdaters, - []common.Address{input.WethAddr, input.LinkAddr}, // fee tokens - contractParams.TokenPriceFeedUpdates, - contractParams.TokenTransferFeeConfigArgs, - append([]fee_quoter.FeeQuoterPremiumMultiplierWeiPerEthArgs{ - { - PremiumMultiplierWeiPerEth: contractParams.LinkPremiumMultiplierWeiPerEth, - Token: input.LinkAddr, + var ( + prAddr common.Address + tx2 *types.Transaction + pr *fee_quoter.FeeQuoter + err2 error + ) + if chain.IsZkSyncVM { + prAddr, _, pr, err2 = fee_quoter.DeployFeeQuoterZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + fee_quoter.FeeQuoterStaticConfig{ + MaxFeeJuelsPerMsg: contractParams.MaxFeeJuelsPerMsg, + LinkToken: input.LinkAddr, + TokenPriceStalenessThreshold: contractParams.TokenPriceStalenessThreshold, }, - { - PremiumMultiplierWeiPerEth: contractParams.WethPremiumMultiplierWeiPerEth, - Token: input.WethAddr, + input.PriceUpdaters, + []common.Address{input.WethAddr, input.LinkAddr}, // fee tokens + contractParams.TokenPriceFeedUpdates, + contractParams.TokenTransferFeeConfigArgs, + append([]fee_quoter.FeeQuoterPremiumMultiplierWeiPerEthArgs{ + { + PremiumMultiplierWeiPerEth: contractParams.LinkPremiumMultiplierWeiPerEth, + Token: input.LinkAddr, + }, + { + PremiumMultiplierWeiPerEth: contractParams.WethPremiumMultiplierWeiPerEth, + Token: input.WethAddr, + }, + }, contractParams.MorePremiumMultiplierWeiPerEth...), + contractParams.DestChainConfigArgs, + ) + } else { + prAddr, tx2, pr, err2 = fee_quoter.DeployFeeQuoter( + chain.DeployerKey, + chain.Client, + fee_quoter.FeeQuoterStaticConfig{ + MaxFeeJuelsPerMsg: contractParams.MaxFeeJuelsPerMsg, + LinkToken: input.LinkAddr, + TokenPriceStalenessThreshold: contractParams.TokenPriceStalenessThreshold, }, - }, contractParams.MorePremiumMultiplierWeiPerEth...), - contractParams.DestChainConfigArgs, - ) + input.PriceUpdaters, + []common.Address{input.WethAddr, input.LinkAddr}, // fee tokens + contractParams.TokenPriceFeedUpdates, + contractParams.TokenTransferFeeConfigArgs, + append([]fee_quoter.FeeQuoterPremiumMultiplierWeiPerEthArgs{ + { + PremiumMultiplierWeiPerEth: contractParams.LinkPremiumMultiplierWeiPerEth, + Token: input.LinkAddr, + }, + { + PremiumMultiplierWeiPerEth: contractParams.WethPremiumMultiplierWeiPerEth, + Token: input.WethAddr, + }, + }, contractParams.MorePremiumMultiplierWeiPerEth...), + contractParams.DestChainConfigArgs, + ) + } return cldf.ContractDeploy[*fee_quoter.FeeQuoter]{ Address: prAddr, Contract: pr, Tx: tx2, Tv: cldf.NewTypeAndVersion(shared.FeeQuoter, deployment.Version1_6_0), Err: err2, } diff --git a/deployment/ccip/operation/evm/v1_6/ops_nonce_manager.go b/deployment/ccip/operation/evm/v1_6/ops_nonce_manager.go index 23c755ce0de..b43c35e653e 100644 --- a/deployment/ccip/operation/evm/v1_6/ops_nonce_manager.go +++ b/deployment/ccip/operation/evm/v1_6/ops_nonce_manager.go @@ -6,6 +6,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v1_6_0/nonce_manager" cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" @@ -31,11 +32,27 @@ var ( chain := deps.Chain nonceManager, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*nonce_manager.NonceManager] { - nonceManagerAddr, tx2, nonceManager, err2 := nonce_manager.DeployNonceManager( - chain.DeployerKey, - chain.Client, - []common.Address{}, // Need to add onRamp after + var ( + nonceManagerAddr common.Address + tx2 *types.Transaction + nonceManager *nonce_manager.NonceManager + err2 error ) + if chain.IsZkSyncVM { + nonceManagerAddr, _, nonceManager, err2 = nonce_manager.DeployNonceManagerZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + []common.Address{}, + ) + } else { + nonceManagerAddr, tx2, nonceManager, err2 = nonce_manager.DeployNonceManager( + chain.DeployerKey, + chain.Client, + []common.Address{}, // Need to add onRamp after + ) + } return cldf.ContractDeploy[*nonce_manager.NonceManager]{ Address: nonceManagerAddr, Contract: nonceManager, Tx: tx2, Tv: cldf.NewTypeAndVersion(shared.NonceManager, deployment.Version1_6_0), Err: err2, } diff --git a/deployment/ccip/operation/evm/v1_6/ops_offramp.go b/deployment/ccip/operation/evm/v1_6/ops_offramp.go index 42fdffc5978..2c1d1830e65 100644 --- a/deployment/ccip/operation/evm/v1_6/ops_offramp.go +++ b/deployment/ccip/operation/evm/v1_6/ops_offramp.go @@ -5,6 +5,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v1_6_0/offramp" cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" @@ -27,23 +28,51 @@ var ( chain := deps.Chain offRamp, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*offramp.OffRamp] { - offRampAddr, tx2, offRamp, err2 := offramp.DeployOffRamp( - chain.DeployerKey, - chain.Client, - offramp.OffRampStaticConfig{ - ChainSelector: chain.Selector, - GasForCallExactCheck: input.Params.GasForCallExactCheck, - RmnRemote: input.RmnRemote, - NonceManager: input.NonceManager, - TokenAdminRegistry: input.TokenAdminRegistry, - }, - offramp.OffRampDynamicConfig{ - FeeQuoter: input.FeeQuoter, - PermissionLessExecutionThresholdSeconds: input.Params.PermissionLessExecutionThresholdSeconds, - MessageInterceptor: input.Params.MessageInterceptor, - }, - []offramp.OffRampSourceChainConfigArgs{}, + var ( + offRampAddr common.Address + tx2 *types.Transaction + offRamp *offramp.OffRamp + err2 error ) + if chain.IsZkSyncVM { + offRampAddr, _, offRamp, err2 = offramp.DeployOffRampZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + offramp.OffRampStaticConfig{ + ChainSelector: chain.Selector, + GasForCallExactCheck: input.Params.GasForCallExactCheck, + RmnRemote: input.RmnRemote, + NonceManager: input.NonceManager, + TokenAdminRegistry: input.TokenAdminRegistry, + }, + offramp.OffRampDynamicConfig{ + FeeQuoter: input.FeeQuoter, + PermissionLessExecutionThresholdSeconds: input.Params.PermissionLessExecutionThresholdSeconds, + MessageInterceptor: input.Params.MessageInterceptor, + }, + []offramp.OffRampSourceChainConfigArgs{}, + ) + } else { + offRampAddr, tx2, offRamp, err2 = offramp.DeployOffRamp( + chain.DeployerKey, + chain.Client, + offramp.OffRampStaticConfig{ + ChainSelector: chain.Selector, + GasForCallExactCheck: input.Params.GasForCallExactCheck, + RmnRemote: input.RmnRemote, + NonceManager: input.NonceManager, + TokenAdminRegistry: input.TokenAdminRegistry, + }, + offramp.OffRampDynamicConfig{ + FeeQuoter: input.FeeQuoter, + PermissionLessExecutionThresholdSeconds: input.Params.PermissionLessExecutionThresholdSeconds, + MessageInterceptor: input.Params.MessageInterceptor, + }, + []offramp.OffRampSourceChainConfigArgs{}, + ) + } return cldf.ContractDeploy[*offramp.OffRamp]{ Address: offRampAddr, Contract: offRamp, Tx: tx2, Tv: cldf.NewTypeAndVersion(shared.OffRamp, deployment.Version1_6_0), Err: err2, } diff --git a/deployment/ccip/operation/evm/v1_6/ops_onramp.go b/deployment/ccip/operation/evm/v1_6/ops_onramp.go index e2b7f0fb6b3..81b59f7c130 100644 --- a/deployment/ccip/operation/evm/v1_6/ops_onramp.go +++ b/deployment/ccip/operation/evm/v1_6/ops_onramp.go @@ -3,6 +3,7 @@ package v1_6 import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v1_6_0/onramp" cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" @@ -24,21 +25,47 @@ var ( chain := deps.Chain onRamp, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*onramp.OnRamp] { - onRampAddr, tx2, onRamp, err2 := onramp.DeployOnRamp( - chain.DeployerKey, - chain.Client, - onramp.OnRampStaticConfig{ - ChainSelector: chain.Selector, - RmnRemote: input.RmnRemote, - NonceManager: input.NonceManager, - TokenAdminRegistry: input.TokenAdminRegistry, - }, - onramp.OnRampDynamicConfig{ - FeeQuoter: input.FeeQuoter, - FeeAggregator: input.FeeAggregator, - }, - []onramp.OnRampDestChainConfigArgs{}, + var ( + onRampAddr common.Address + tx2 *types.Transaction + onRamp *onramp.OnRamp + err2 error ) + if chain.IsZkSyncVM { + onRampAddr, _, onRamp, err2 = onramp.DeployOnRampZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + onramp.OnRampStaticConfig{ + ChainSelector: chain.Selector, + RmnRemote: input.RmnRemote, + NonceManager: input.NonceManager, + TokenAdminRegistry: input.TokenAdminRegistry, + }, + onramp.OnRampDynamicConfig{ + FeeQuoter: input.FeeQuoter, + FeeAggregator: input.FeeAggregator, + }, + []onramp.OnRampDestChainConfigArgs{}, + ) + } else { + onRampAddr, tx2, onRamp, err2 = onramp.DeployOnRamp( + chain.DeployerKey, + chain.Client, + onramp.OnRampStaticConfig{ + ChainSelector: chain.Selector, + RmnRemote: input.RmnRemote, + NonceManager: input.NonceManager, + TokenAdminRegistry: input.TokenAdminRegistry, + }, + onramp.OnRampDynamicConfig{ + FeeQuoter: input.FeeQuoter, + FeeAggregator: input.FeeAggregator, + }, + []onramp.OnRampDestChainConfigArgs{}, + ) + } return cldf.ContractDeploy[*onramp.OnRamp]{ Address: onRampAddr, Contract: onRamp, Tx: tx2, Tv: cldf.NewTypeAndVersion(shared.OnRamp, deployment.Version1_6_0), Err: err2, } diff --git a/deployment/ccip/operation/evm/v1_6/ops_rmnremote.go b/deployment/ccip/operation/evm/v1_6/ops_rmnremote.go index fa47fbe047b..50d5a9fdcd9 100644 --- a/deployment/ccip/operation/evm/v1_6/ops_rmnremote.go +++ b/deployment/ccip/operation/evm/v1_6/ops_rmnremote.go @@ -6,6 +6,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/smartcontractkit/chainlink-ccip/chains/evm/gobindings/generated/v1_6_0/rmn_remote" cldf_evm "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm" @@ -45,12 +46,29 @@ var ( chain := deps.Chain contract, err := cldf.DeployContract(b.Logger, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*rmn_remote.RMNRemote] { - rmnRemoteAddr, tx, rmnRemote, err2 := rmn_remote.DeployRMNRemote( - chain.DeployerKey, - chain.Client, - chain.Selector, - input.RMNLegacyAddr, + var ( + rmnRemoteAddr common.Address + tx *types.Transaction + rmnRemote *rmn_remote.RMNRemote + err2 error ) + if chain.IsZkSyncVM { + rmnRemoteAddr, _, rmnRemote, err2 = rmn_remote.DeployRMNRemoteZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + chain.Selector, + input.RMNLegacyAddr, + ) + } else { + rmnRemoteAddr, tx, rmnRemote, err2 = rmn_remote.DeployRMNRemote( + chain.DeployerKey, + chain.Client, + chain.Selector, + input.RMNLegacyAddr, + ) + } return cldf.ContractDeploy[*rmn_remote.RMNRemote]{ Address: rmnRemoteAddr, Contract: rmnRemote, Tx: tx, Tv: cldf.NewTypeAndVersion(shared.RMNRemote, deployment.Version1_6_0), Err: err2, } diff --git a/deployment/common/changeset/internal/evm/mcms.go b/deployment/common/changeset/internal/evm/mcms.go index a7109be919f..ade0cbb81af 100644 --- a/deployment/common/changeset/internal/evm/mcms.go +++ b/deployment/common/changeset/internal/evm/mcms.go @@ -10,6 +10,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/spf13/cast" bindings "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers" @@ -27,6 +28,8 @@ import ( "github.com/smartcontractkit/chainlink/deployment/common/proposalutils" commontypes "github.com/smartcontractkit/chainlink/deployment/common/types" "github.com/smartcontractkit/chainlink/deployment/common/view/v1_0" + + mcmsnew_zksync "github.com/smartcontractkit/chainlink/deployment/common/changeset/internal/evm/zksync" ) // DeployMCMSOption is a function that modifies a TypeAndVersion before or after deployment. @@ -63,10 +66,25 @@ func DeployMCMSWithConfigEVM( } mcm, err := cldf.DeployContract(lggr, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*bindings.ManyChainMultiSig] { - mcmAddr, tx, mcm, err2 := bindings.DeployManyChainMultiSig( - chain.DeployerKey, - chain.Client, + var ( + mcmAddr common.Address + tx *types.Transaction + mcm *bindings.ManyChainMultiSig + err2 error ) + if chain.IsZkSyncVM { + mcmAddr, _, mcm, err2 = mcmsnew_zksync.DeployManyChainMultiSigZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + ) + } else { + mcmAddr, tx, mcm, err2 = bindings.DeployManyChainMultiSig( + chain.DeployerKey, + chain.Client, + ) + } tv := cldf.NewTypeAndVersion(contractType, deployment.Version1_0_0) for _, option := range options { @@ -159,21 +177,42 @@ func DeployMCMSWithTimelockContractsEVM( if timelock == nil { timelockC, err := cldf.DeployContract(lggr, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*bindings.RBACTimelock] { - timelock, tx2, cc, err2 := bindings.DeployRBACTimelock( - chain.DeployerKey, - chain.Client, - config.TimelockMinDelay, - // Deployer is the initial admin. - // TODO: Could expose this as config? - // Or keep this enforced to follow the same pattern? - chain.DeployerKey.From, - []common.Address{proposer.Address()}, // proposers - // Executors field is empty here because we grant the executor role to the call proxy later - // and the call proxy cannot be deployed before the timelock. - []common.Address{}, - []common.Address{canceller.Address(), proposer.Address(), bypasser.Address()}, // cancellers - []common.Address{bypasser.Address()}, // bypassers + var ( + timelock common.Address + tx2 *types.Transaction + cc *bindings.RBACTimelock + err2 error ) + if chain.IsZkSyncVM { + timelock, _, cc, err2 = mcmsnew_zksync.DeployRBACTimelockZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + config.TimelockMinDelay, + chain.DeployerKey.From, + []common.Address{proposer.Address()}, + []common.Address{}, + []common.Address{canceller.Address(), proposer.Address(), bypasser.Address()}, + []common.Address{bypasser.Address()}, + ) + } else { + timelock, tx2, cc, err2 = bindings.DeployRBACTimelock( + chain.DeployerKey, + chain.Client, + config.TimelockMinDelay, + // Deployer is the initial admin. + // TODO: Could expose this as config? + // Or keep this enforced to follow the same pattern? + chain.DeployerKey.From, + []common.Address{proposer.Address()}, // proposers + // Executors field is empty here because we grant the executor role to the call proxy later + // and the call proxy cannot be deployed before the timelock. + []common.Address{}, + []common.Address{canceller.Address(), proposer.Address(), bypasser.Address()}, // cancellers + []common.Address{bypasser.Address()}, // bypassers + ) + } tv := cldf.NewTypeAndVersion(commontypes.RBACTimelock, deployment.Version1_0_0) if config.Label != nil { @@ -197,11 +236,27 @@ func DeployMCMSWithTimelockContractsEVM( if callProxy == nil { callProxyC, err := cldf.DeployContract(lggr, chain, ab, func(chain cldf_evm.Chain) cldf.ContractDeploy[*bindings.CallProxy] { - callProxy, tx2, cc, err2 := bindings.DeployCallProxy( - chain.DeployerKey, - chain.Client, - timelock.Address(), + var ( + callProxy common.Address + tx2 *types.Transaction + cc *bindings.CallProxy + err2 error ) + if chain.IsZkSyncVM { + callProxy, _, cc, err2 = mcmsnew_zksync.DeployCallProxyZk( + nil, + chain.ClientZkSyncVM, + chain.DeployerKeyZkSyncVM, + chain.Client, + timelock.Address(), + ) + } else { + callProxy, tx2, cc, err2 = bindings.DeployCallProxy( + chain.DeployerKey, + chain.Client, + timelock.Address(), + ) + } tv := cldf.NewTypeAndVersion(commontypes.CallProxy, deployment.Version1_0_0) if config.Label != nil { diff --git a/deployment/common/changeset/internal/evm/zksync/CallProxyZK.go b/deployment/common/changeset/internal/evm/zksync/CallProxyZK.go new file mode 100644 index 00000000000..a6bfe9a64b3 --- /dev/null +++ b/deployment/common/changeset/internal/evm/zksync/CallProxyZK.go @@ -0,0 +1,62 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. +package gethwrappers_zksync + +import ( + "context" + "crypto/rand" + "fmt" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/zksync-sdk/zksync2-go/accounts" + "github.com/zksync-sdk/zksync2-go/clients" + "github.com/zksync-sdk/zksync2-go/types" + "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers" +) + +func DeployCallProxyZk(deployOpts *accounts.TransactOpts, client *clients.Client, wallet *accounts.Wallet, backend bind.ContractBackend, args ...interface{}) (common.Address, *types.Receipt, *gethwrappers.CallProxy, error) { + var calldata []byte + if len(args) > 0 { + abi, err := gethwrappers.CallProxyMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + calldata, err = abi.Pack("", args...) + if err != nil { + return common.Address{}, nil, nil, err + } + } + + salt := make([]byte, 32) + n, err := rand.Read(salt) + if err != nil { + return common.Address{}, nil, nil, err + } + if n != len(salt) { + return common.Address{}, nil, nil, fmt.Errorf("failed to read random bytes: expected %d, got %d", len(salt), n) + } + + txHash, err := wallet.Deploy(deployOpts, accounts.Create2Transaction{ + Bytecode: CallProxyZkBytecode, + Calldata: calldata, + Salt: salt, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + + receipt, err := client.WaitMined(context.Background(), txHash) + if err != nil { + return common.Address{}, nil, nil, err + } + + address := receipt.ContractAddress + contract, err := gethwrappers.NewCallProxy(address, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + + return address, receipt, contract, nil +} + +var CallProxyZkBytecode = common.Hex2Bytes("00020000000000020001000000000002000000000301001900000060033002700000003508300197000100000081035500000001022001900000004e0000c13d0000008002000039000000400020043f0000001f0380018f00000005028002720000000502200210000000140000613d000000000401034f0000000005000019000000004604043c0000000005650436000000000625004b000000100000c13d000100000008001d000000000403004b000000220000613d0000000303300210000000000402043300000000043401cf000000000434022f000000000121034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000003b0100004100000000001004390000000001000412000000040010044300000024000004430000000001000414000000350210009c0000003501008041000000c0011002100000003c011001c7000080050200003900cf00ca0000040f0000000102200190000000900000613d000000000401043b0000000001000414000000040240008c000000910000c13d000000010200036700000000030000310000001f0430018f00000005013002720000000501100210000000400000613d000000000502034f0000000006000019000000005705043c0000000006760436000000000716004b0000003c0000c13d000000000504004b000000be0000613d0000000304400210000000000501043300000000054501cf000000000545022f000000000212034f000000000202043b0000010004400089000000000242022f00000000024201cf000000000252019f0000000000210435000000be0000013d0000000002000416000000000202004b0000008e0000c13d0000001f028000390000003602200197000000a002200039000000400020043f0000001f0280018f00000005038002720000000503300210000000600000613d000000a004000039000000a005300039000000000601034f000000006706043c0000000004740436000000000754004b0000005c0000c13d000000000402004b0000006e0000613d000000000131034f0000000302200210000000a003300039000000000403043300000000042401cf000000000424022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000141019f0000000000130435000000200180008c0000008e0000413d000000a00100043d000000370210009c0000008e0000213d000000800010043f000000400200043d0000000000120435000000350120009c000000350200804100000040012002100000000002000414000000350320009c0000003502008041000000c002200210000000000112019f00000038011001c70000800d020000390000000103000039000000390400004100cf00c50000040f00000001012001900000008e0000613d000000800100043d0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000003a01000041000000d00001042e0000000001000019000000d100010430000000000001042f000000000300041600000001020000290000006002200210000000350510009c0000003501008041000000c001100210000000000121019f000000000203004b0000009c0000c13d00000000020400190000009f0000013d0000003d011001c70000800902000039000000000500001900cf00c50000040f0001000000010355000000000301001900000060033002700000001f0530018f000000350030019d000000350330019700000005043002720000000504400210000000af0000613d000000000601034f0000000007000019000000006806043c0000000007870436000000000847004b000000ab0000c13d000000000605004b000000bc0000613d0000000305500210000000000604043300000000065601cf000000000656022f000000000141034f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000000101200190000000c20000613d000000350130009c00000035030080410000006001300210000000d00001042e0000006001300210000000d100010430000000000001042f000000c8002104210000000102000039000000000001042d0000000002000019000000000001042d000000cd002104230000000102000039000000000001042d0000000002000019000000000001042d000000cf00000432000000d00001042e000000d1000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000200000000000000000000000003bfb4bbf112628248058745a3c57e35b13369386e474b8e56c552f3063a4a1960000000200000000000000000000000000000080000001000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e02000002000000000000000000000000000000440000000000000000000000000200000000000000000000000000000000000000000000000000000000000000d035e4b626d0c4b01889d7c3520441a3fc495242ce54c5d520829ea176fd524e") diff --git a/deployment/common/changeset/internal/evm/zksync/ManyChainMultiSigZK.go b/deployment/common/changeset/internal/evm/zksync/ManyChainMultiSigZK.go new file mode 100644 index 00000000000..30c07741b48 --- /dev/null +++ b/deployment/common/changeset/internal/evm/zksync/ManyChainMultiSigZK.go @@ -0,0 +1,62 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. +package gethwrappers_zksync + +import ( + "context" + "crypto/rand" + "fmt" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/zksync-sdk/zksync2-go/accounts" + "github.com/zksync-sdk/zksync2-go/clients" + "github.com/zksync-sdk/zksync2-go/types" + "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers" +) + +func DeployManyChainMultiSigZk(deployOpts *accounts.TransactOpts, client *clients.Client, wallet *accounts.Wallet, backend bind.ContractBackend, args ...interface{}) (common.Address, *types.Receipt, *gethwrappers.ManyChainMultiSig, error) { + var calldata []byte + if len(args) > 0 { + abi, err := gethwrappers.ManyChainMultiSigMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + calldata, err = abi.Pack("", args...) + if err != nil { + return common.Address{}, nil, nil, err + } + } + + salt := make([]byte, 32) + n, err := rand.Read(salt) + if err != nil { + return common.Address{}, nil, nil, err + } + if n != len(salt) { + return common.Address{}, nil, nil, fmt.Errorf("failed to read random bytes: expected %d, got %d", len(salt), n) + } + + txHash, err := wallet.Deploy(deployOpts, accounts.Create2Transaction{ + Bytecode: ManyChainMultiSigZkBytecode, + Calldata: calldata, + Salt: salt, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + + receipt, err := client.WaitMined(context.Background(), txHash) + if err != nil { + return common.Address{}, nil, nil, err + } + + address := receipt.ContractAddress + contract, err := gethwrappers.NewManyChainMultiSig(address, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + + return address, receipt, contract, nil +} + +var ManyChainMultiSigZkBytecode = common.Hex2Bytes("0004000000000002000b00000000000200000000030100190000006003300270000002b20030019d000002b203300197000300000031035500020000000103550000008006000039000000400060043f0000000102200190000000320000c13d000000040230008c0000004f0000413d000000000201043b000000e004200270000002b80240009c000000530000213d000002c20240009c0000012b0000a13d000002c30240009c000001480000213d000002c60140009c000001f20000613d000002c70140009c000005510000c13d0000000001000416000000000101004b000005510000c13d000000000100041a000002b4021001970000000005000411000000000252004b000004f20000c13d0000000102000039000000000302041a000002b303300197000000000032041b000002b301100197000000000010041b0000000001000414000002b20210009c000002b201008041000000c001100210000002b5011001c70000800d020000390000000303000039000002b6040000410000000006000019000002900000013d0000000001000416000000000101004b000005510000c13d0000000101000039000000000201041a000002b302200197000000000021041b000000000100041a000002b3021001970000000006000411000000000262019f000000000020041b0000000002000414000002b405100197000002b20120009c000002b202008041000000c001200210000002b5011001c70000800d020000390000000303000039000002b6040000410ac10ab70000040f0000000101200190000005510000613d000000200100003900000100001004430000012000000443000002b70100004100000ac20001042e000000000103004b000005510000c13d000000000100001900000ac20001042e000000000231034f000002b90540009c0000013b0000a13d000002ba0540009c000001d10000213d000002bd0540009c000002140000613d000002be0140009c000005510000c13d0000000001000416000000000101004b000005510000c13d0000006001000039000000800010043f000000e001000039000000000302034f000000003403043c0000000001410436000004e00410008c000000630000c13d000000e001000039000000a00010043f000004e001000039000000002302043c0000000001310436000008e00310008c0000006a0000c13d000004e001000039000000c00010043f0000094001000039000000400010043f0000000303000039000000000203041a000002cd0420009c000001250000213d00000005042002100000003f04400039000002ce04400197000002cf0540009c000001250000213d0000094008400039000000400080043f000009400020043f0000000000300435000000000302004b000000990000613d000002d0030000410000000004000019000002d10580009c000001250000213d0000006005800039000000400050043f000000000503041a000000a806500270000000ff0660018f00000040078000390000000000670435000000a006500270000000ff0660018f00000020078000390000000000670435000002b4055001970000000000580435000000200110003900000000008104350000000103300039000000400800043d0000000104400039000000000524004b000000830000413d0000094001000039000008e00010043f0000000401000039000000000101041a000003e002800039000000f8031002700000000000320435000000f002100270000000ff0220018f000003c0038000390000000000230435000000e802100270000000ff0220018f000003a0038000390000000000230435000000e002100270000000ff0220018f00000380038000390000000000230435000000d802100270000000ff0220018f00000360038000390000000000230435000000d002100270000000ff0220018f00000340038000390000000000230435000000c802100270000000ff0220018f00000320038000390000000000230435000000c002100270000000ff0220018f00000300038000390000000000230435000000b802100270000000ff0220018f000002e0038000390000000000230435000000b002100270000000ff0220018f000002c0038000390000000000230435000000a802100270000000ff0220018f000002a0038000390000000000230435000000a002100270000000ff0220018f000002800380003900000000002304350000009802100270000000ff0220018f000002600380003900000000002304350000009002100270000000ff0220018f000002400380003900000000002304350000008802100270000000ff0220018f000002200380003900000000002304350000008002100270000000ff0220018f000002000380003900000000002304350000007802100270000000ff0220018f000001e00380003900000000002304350000007002100270000000ff0220018f000001c00380003900000000002304350000006802100270000000ff0220018f000001a00380003900000000002304350000006002100270000000ff0220018f000001800380003900000000002304350000005802100270000000ff0220018f000001600380003900000000002304350000005002100270000000ff0220018f000001400380003900000000002304350000004802100270000000ff0220018f000001200380003900000000002304350000004002100270000000ff0220018f000001000380003900000000002304350000003802100270000000ff0220018f000000e00380003900000000002304350000003002100270000000ff0220018f000000c00380003900000000002304350000002802100270000000ff0220018f000000a00380003900000000002304350000002002100270000000ff0220018f000000800380003900000000002304350000001802100270000000ff0220018f000000600380003900000000002304350000001002100270000000ff0220018f000000400380003900000000002304350000000802100270000000ff0220018f00000020038000390000000000230435000000ff0110018f0000000000180435000002d20180009c000001250000213d0000040001800039000000400010043f000009000080043f000900000001001d000a00000008001d0ac10a370000040f0000000a07000029000002d30170009c000005070000a13d000002f00100004100000000001004350000004101000039000000040010043f000002f10100004100000ac300010430000002c80140009c0000029a0000613d000002c90140009c000004da0000613d000002ca0140009c000005510000c13d0000000001000416000000000101004b000005510000c13d0000000801000039000000000101041a0000002001100270000002d501100197000000800010043f000002cc0100004100000ac20001042e000002bf0540009c000002a10000613d000002c00140009c000004ea0000613d000002c10140009c000005510000c13d0000000001000416000000000101004b000005510000c13d000000c801000039000000800010043f000002cc0100004100000ac20001042e000002c40240009c000002780000613d000002c50240009c000005510000c13d000001240230008c000005510000413d0000000002000416000000000202004b000005510000c13d0000002402100370000000000202043b000700000002001d000002b20220009c000005510000213d000000e402100370000000000202043b000002cd0420009c000005510000213d0000002304200039000000000434004b000005510000813d0000000404200039000000000441034f000000000404043b000400000004001d000002cd0440009c000005510000213d000000240220003900000004040000290000000504400210000100000002001d000300000004001d000200000024001d000000020230006b000005510000213d0000010402100370000000000202043b000002cd0420009c000005510000213d0000002304200039000000000434004b000005510000813d0000000404200039000000000441034f000000000404043b000002cd0540009c000005510000213d00000060544000c900000000024200190000002402200039000000000232004b000005510000213d0000000401100370000000000101043b000000a00010043f0000000701000029000000c00010043f0000004001000039000000800010043f000000e001000039000000400010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002fa011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b000002fb0200004100000000002004350000001c0010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002fc011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b000600000001001d00000000001004350000000601000039000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000400200043d000000000101043b000000000101041a000000ff01100190000005530000c13d000002fe0120009c000001250000813d0000006001200039000000400010043f00000040012000390000000000010435000000200120003900000000000104350000000000020435000000400400043d000002d20140009c000001250000213d0000040002400039000000400020043f00000002010003670000000003100368000500000004001d000000003503043c0000000004540436000000000524004b000001bf0000c13d0000010402100370000000000202043b0000000403200039000000000331034f000000000303043b000000000303004b000006410000c13d0000000401000039000000000101041a000000ff01100190000006de0000c13d000000400100043d0000031b02000041000007b60000013d000002bb0240009c000002940000613d000002bc0240009c000005510000c13d000000240230008c000005510000413d0000000002000416000000000202004b000005510000c13d0000000401100370000000000101043b000002b406100197000002b40110009c000005510000213d000000000100041a000002b4011001970000000005000411000000000151004b000004f20000c13d0000000101000039000000000201041a000002b302200197000000000262019f000000000021041b0000000001000414000002b20210009c000002b201008041000000c001100210000002b5011001c70000800d020000390000000303000039000002cb04000041000002900000013d0000000001000416000000000101004b000005510000c13d000000800000043f000000a00000043f000000c00000043f000000e00000043f000001000000043f000001c001000039000000400010043f0000000901000039000000000101041a000001200010043f0000000a02000039000000000202041a000002b403200197000001400030043f000000a004200270000002d504400197000001600040043f000000c805200270000002d505500197000001800050043f00000321022001980000000002000019000000010200c039000001a00020043f000001c00010043f000001e00030043f000002000040043f000002200050043f000002400020043f000003220100004100000ac20001042e000a00000006001d000000440230008c000005510000413d0000000402100370000000000202043b000002cd0420009c000005510000213d0000000002230049000002d40420009c000005510000213d000000c40220008c000005510000413d0000002402100370000000000202043b000002cd0420009c000005510000213d0000002304200039000000000434004b000005510000813d0000000404200039000000000141034f000000000101043b000900000001001d000002cd0110009c000005510000213d000000240120003900000009020000290000000502200210000600000001001d000800000002001d000700000012001d000000070130006b000005510000213d000000e001000039000000400010043f0000000701000039000000000101041a000000800010043f0000000801000039000000000101041a000002b202100197000000a00020043f0000002001100270000002d501100197000000c00010043f0000000a02000039000000000202041a000000c802200270000002d502200197000000000112004b0000053c0000a13d000002d80100004100000000001004390000000001000414000002b20210009c000002b201008041000000c001100210000002d9011001c70000800b020000390ac10abc0000040f0000000102200190000008bb0000613d00000002020003670000000403200370000000000303043b0000000403300039000000000432034f000000000404043b000000000101043b000000000114004b000007b40000c13d0000002001300039000000000112034f000000000101043b000002b40210009c000005510000213d0000000002000410000000000121004b000007bc0000c13d000000a00100043d000500000001001d000002da0100004100000000001004390000000001000414000002b20210009c000002b201008041000000c001100210000002d9011001c70000800b020000390ac10abc0000040f0000000102200190000008bb0000613d0000000502000029000002b202200197000000000101043b000000000121004b000005480000a13d000000400100043d000002e702000041000007b60000013d0000000001000416000000000101004b000005510000c13d0000000101000039000000000201041a000002b4032001970000000006000411000000000363004b000004fb0000c13d000002b302200197000000000021041b000000000100041a000002b302100197000000000262019f000000000020041b0000000002000414000002b405100197000002b20120009c000002b202008041000000c001200210000002b5011001c70000800d020000390000000303000039000002b6040000410ac10ab70000040f0000000101200190000000510000c13d000005510000013d0000000001000416000000000101004b000005510000c13d0000000101000039000000000101041a000004ee0000013d0000000001000416000000000101004b000005510000c13d0000002001000039000000800010043f000002cc0100004100000ac20001042e000008640430008c000005510000413d0000000004000416000000000404004b000005510000c13d0000000404100370000000000504043b000002cd0450009c000005510000213d0000002304500039000000000434004b000005510000813d0000000404500039000000000441034f000000000404043b000002cd0640009c000005510000213d000700240050003d00000005054002100000000705500029000000000535004b000005510000213d0000002405100370000000000505043b000002cd0650009c000005510000213d0000002306500039000000000636004b000005510000813d0000000406500039000000000661034f000000000706043b000002cd0670009c000005510000213d000000240650003900000005057002100000000005650019000000000335004b000005510000213d000b08440000003d0000084403100370000000000303043b000000000503004b0000000005000019000000010500c039000000000353004b000005510000c13d000300000006001d000400000007001d000000000300041a000002b4033001970000000005000411000000000353004b000004f20000c13d000000010340008a000000c80330008c000005400000813d000000040340006c000005440000c13d0000048003000039000000400030043f0000008003000039000000002402043c0000000003430436000004800430008c000002df0000c13d00000000020000190000000406000029000000030700002900000005032002100000000003730019000000000331034f000000000303043b000000ff0430008c000005510000213d000000e0043001900000063c0000c13d0000001f0430008c000006d80000213d000000050330021000000080033000390000000004030433000000ff0440018f000000ff0540008c000006360000613d000000010440003900000000004304350000000102200039000000000362004b000002e60000413d0000000003000019000003020000013d000000000405004b000006fd0000c13d0000001f0430008c0000000103300039000003310000813d0000001f0730008900000005057002100000044404500039000000000641034f000000000606043b0000001f0830008c000003100000c13d000000ff0460008c000005510000213d000000000406004b00000444040000390000000005000019000003140000613d000006e60000013d000000ff0860008c000005510000213d000000000676004b000006e60000813d0000004406500039000000000661034f000000000606043b000000ff0760008c000005510000213d00000080055000390000000005050433000000ff0550018f000000000706004b000002fd0000613d000000000565004b000006e90000413d000000000441034f000000000404043b000000ff0540008c000005510000213d0000001f0540008c000006d80000213d000000050440021000000080044000390000000005040433000000ff0550018f000000ff0650008c000006360000613d000000010550003900000000005404350000001f0430008c0000000103300039000003020000413d0000000305000039000000000105041a000002cd0210009c000001250000213d00000005021002100000003f02200039000002ce02200197000000400300043d0000000002230019000900000003001d000000000332004b00000000030000190000000103004039000002cd0420009c000001250000213d0000000103300190000001250000c13d000000400020043f00000009020000290000000002120436000800000002001d0000000000500435000000000201004b000003620000613d000002d00200004100000000030000190000000904000029000000400500043d000002d10650009c000001250000213d0000006006500039000000400060043f000000000602041a000000a807600270000000ff0770018f00000040085000390000000000780435000000a007600270000000ff0770018f00000020085000390000000000780435000002b40660019700000000006504350000002004400039000000000054043500000001022000390000000103300039000000000513004b0000034c0000413d00000009020000290000000002020433000000000202004b0000038a0000613d0000000003000019000a00000003001d0000000501300210000000080110002900000000010104330000000001010433000002b40110019700000000001004350000000201000039000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b000000000001041b0000000303000039000000000103041a000000000201004b000007c50000613d0000000000300435000002ef02100041000000000002041b000000010110008a000000000013041b0000000a03000029000000010330003900000009020000290000000002020433000000000223004b000003670000413d000000000101004b000007bf0000c13d000000440300003900000002010003670000000004000019000000000500001900000004080000290000000309000029000000000631034f000000000606043b000000ff0760008c000005510000213d000000030740021000000000067601cf000000ff0770020f0000032407700167000000000575016f000000000556019f0000001e0640008c00000001044000390000002003300039000003920000a13d0000000403000039000000000053041b000004440300003900000000040000190000000005000019000000000631034f000000000606043b000000ff0760008c000005510000213d000000030740021000000000067601cf000000ff0770020f0000032407700167000000000575016f000000000556019f0000001e0640008c00000001044000390000002003300039000003a50000a13d0000000502000039000000000052041b00000000040000190000000003000019000a00000004001d0000000504400210000900070040002d0000000902100360000000000202043b000002b40520009c000005510000213d000000000323004b000007cb0000813d0000000a0380006b000006d80000813d0000000003940019000000000131034f000000000101043b000000ff0310008c000005510000213d000000400400043d000002d10340009c000001250000213d0000006003400039000000400030043f0000004003400039000800000003001d00000000001304350000000a01000029000000ff0110018f0000002003400039000500000003001d0000000000130435000600000004001d000000000024043500000000002004350000000201000039000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f000000030900002900000004080000290000000102200190000005510000613d00000006050000290000000002050433000002b402200197000000000101043b000000000301041a000002f203300197000000000223019f00000005060000290000000003060433000000a003300210000002f303300197000000000232019f00000008040000290000000003040433000000a803300210000002f403300197000000000232019f000000000021041b0000000303000039000000000103041a000002cd0210009c000001250000213d0000000102100039000000000023041b00000000003004350000000002050433000002b402200197000002d001100041000000000301041a000002f203300197000000000223019f0000000003060433000000a003300210000002f303300197000000000232019f0000000003040433000000a803300210000002f403300197000000000232019f000000000021041b00000002010003670000000902100360000000000302043b000002b40230009c000005510000213d0000000a040000290000000104400039000000000284004b000003b70000413d0000084401100370000000000101043b000000000101004b000008780000c13d000000400400043d00000040014000390000082002000039000000000021043500000040010000390000000001140436000a00000001001d00000860024000390000000303000039000000000103041a0000000000120435000000000030043500000000070400190000088008400039000000000201004b0000043b0000613d000002d0020000410000000003000019000000000402041a000000a805400270000000ff0550018f00000040068000390000000000560435000000a005400270000000ff0550018f00000020068000390000000000560435000002b4044001970000000000480435000000010220003900000060088000390000000103300039000000000413004b0000042b0000413d000800000008001d0000000401000039000000000101041a000900000007001d0000044002700039000000f80310027000000000003204350000006002700039000000ff0310018f0000000000320435000000f002100270000000ff0220018f00000420037000390000000000230435000000e802100270000000ff0220018f00000400037000390000000000230435000000e002100270000000ff0220018f000003e0037000390000000000230435000000d802100270000000ff0220018f000003c0037000390000000000230435000000d002100270000000ff0220018f000003a0037000390000000000230435000000c802100270000000ff0220018f00000380037000390000000000230435000000c002100270000000ff0220018f00000360037000390000000000230435000000b802100270000000ff0220018f00000340037000390000000000230435000000b002100270000000ff0220018f00000320037000390000000000230435000000a802100270000000ff0220018f00000300037000390000000000230435000000a002100270000000ff0220018f000002e00370003900000000002304350000009802100270000000ff0220018f000002c00370003900000000002304350000009002100270000000ff0220018f000002a00370003900000000002304350000008802100270000000ff0220018f000002800370003900000000002304350000008002100270000000ff0220018f000002600370003900000000002304350000007802100270000000ff0220018f000002400370003900000000002304350000007002100270000000ff0220018f000002200370003900000000002304350000006802100270000000ff0220018f000002000370003900000000002304350000006002100270000000ff0220018f000001e00370003900000000002304350000005802100270000000ff0220018f000001c00370003900000000002304350000005002100270000000ff0220018f000001a00370003900000000002304350000004802100270000000ff0220018f000001800370003900000000002304350000004002100270000000ff0220018f000001600370003900000000002304350000003802100270000000ff0220018f000001400370003900000000002304350000003002100270000000ff0220018f000001200370003900000000002304350000002802100270000000ff0220018f000001000370003900000000002304350000002002100270000000ff0220018f000000e00370003900000000002304350000001802100270000000ff0220018f000000c00370003900000000002304350000001002100270000000ff0220018f000000a00370003900000000002304350000000801100270000000ff0110018f0000008002700039000000000012043500000460017000390ac10a370000040f0000000b010000290000000201100367000000000101043b000000000101004b0000000001000019000000010100c0390000000a02000029000000000012043500000009030000290000000801300069000002b20210009c000002b2010080410000006001100210000002b20230009c000002b2030080410000004002300210000000000121019f0000000002000414000002b20320009c000002b202008041000000c002200210000000000112019f000002b5011001c70000800d020000390000000103000039000002f904000041000002900000013d0000000001000416000000000101004b000005510000c13d0ac10a200000040f00000000210104340000000002020433000002b202200197000000400300043d000000200430003900000000002404350000000000130435000002b20130009c000002b203008041000000400130021000000323011001c700000ac20001042e0000000001000416000000000101004b000005510000c13d000000000100041a000002b401100197000000800010043f000002cc0100004100000ac20001042e0000030401000041000000800010043f0000002001000039000000840010043f000000a40010043f0000031f01000041000000c40010043f000003200100004100000ac3000104300000030401000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000031c01000041000000c40010043f0000031d01000041000000e40010043f0000031e0100004100000ac3000104300000080002700039000000400020043f0000000901000029000009200010043f0000002001000039000900000002001d00000000001204350000082002700039000008e00100043d000008200300003900000000003204350000104003700039000000000201043300000000002304350000106008700039000000000302004b0000052a0000613d0000000003000019000000200110003900000000040104330000000065040434000002b40550019700000000055804360000000006060433000000ff0660018f000000000065043500000040044000390000000004040433000000ff0440018f0000004005800039000000000045043500000060088000390000000103300039000000000423004b000005190000413d000800000008001d000009000100043d00000840027000390ac10a180000040f000009200100043d0000000a0200002900000c40022000390ac10a180000040f00000009030000290000000801300069000002b20210009c000002b2010080410000006001100210000002b20230009c000002b2030080410000004002300210000000000121019f00000ac20001042e000002d601000041000000e00010043f000002d70100004100000ac300010430000002e801000041000000800010043f000002e90100004100000ac300010430000002ea01000041000000800010043f000002e90100004100000ac30001043000000002030003670000000401300370000000000101043b000400000001001d0000004405100039000000000153034f000000000401043b000002d50140009c0000055a0000a13d000000000100001900000ac300010430000002fd010000410000000000120435000002b20120009c000002b2020080410000004001200210000002dc011001c700000ac300010430000000c00100043d000000000241013f000000400100043d000002d5022001980000063f0000c13d0000004002100039000000400600003900000000006204350000002002100039000002dd060000410000000000620435000000400650008a000000000663034f000000000606043b00000060071000390000000000670435000000200550008a000000000653034f000000000606043b000002b40760009c000005510000213d000000a0071000390000000000470435000000800410003900000000006404350000004004500039000000000543034f000000000505043b000002b40650009c000005510000213d000000c00610003900000000005604350000002005400039000000000553034f000000000505043b000000e00610003900000000005604350000004004400039000000000443034f0000000006000031000000040560006a000000230550008a000000000404043b000002de07400197000002de08500197000000000987013f000000000787004b0000000007000019000002de07004041000000000554004b0000000005000019000002de05008041000002de0890009c000000000705c019000000000507004b000005510000c13d00000004074000290000000405700039000000000453034f000000000404043b000002cd0840009c000005510000213d00000024077000390000000006460049000000000867004b0000000008000019000002de08002041000002de06600197000002de07700197000000000967013f000000000667004b0000000006000019000002de06004041000002de0790009c000000000608c019000000000606004b000005510000c13d0000010006100039000000c0070000390000000000760435000001200610003900000000004604350000002005500039000000000653034f0000001f0540018f000001400310003900000005074002720000000507700210000005ba0000613d0000000008730019000000000906034f000000000a030019000000009b09043c000000000aba0436000000000b8a004b000005b60000c13d000000000805004b000005c80000613d000000000676034f00000000077300190000000305500210000000000807043300000000085801cf000000000858022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000585019f0000000000570435000000000334001900000000000304350000001f034000390000032503300197000001200430003900000000004104350000015f0330003900000325043001970000000003140019000000000443004b00000000040000190000000104004039000002cd0530009c000001250000213d0000000104400190000001250000c13d000000400030043f000002b20320009c000002b20200804100000040022002100000000001010433000002b20310009c000002b2010080410000006001100210000000000121019f0000000002000414000002b20320009c000002b202008041000000c002200210000000000112019f000002b5011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000800200043d000300000002001d000000000101043b00000008020000290000003f02200039000002ce02200197000000400300043d0000000002230019000800000003001d000000000332004b00000000030000190000000103004039000002cd0420009c000001250000213d0000000103300190000001250000c13d000000400020043f000000090200002900000008040000290000000002240436000500000002001d0000000702000029000000000220007c000005510000213d000000090200006b000006300000613d00000006050000290000000202500367000000080300002900000007060000290000002003300039000000002402043c00000000004304350000002005500039000000000465004b000006090000413d00000008020000290000000002020433000000000202004b000006300000613d0000000003000019000900000003001d000000050230021000000005022000290000000002020433000000000321004b0000061e0000813d0000000000100435000000200020043f0000000001000414000006210000013d0000000000200435000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b0000000903000029000000010330003900000008020000290000000002020433000000000223004b000006140000413d000000030110006c000008150000c13d000000c00100043d000002d501100197000002d50210009c000008180000c13d000002f00100004100000000001004350000001101000039000000040010043f000002f10100004100000ac300010430000000400100043d000002eb02000041000007b60000013d000002db02000041000007b60000013d000000000600001900000000040000190000064e0000013d00000002010003670000010402100370000000000202043b0000000403200039000000000331034f000000000303043b00000008040000290000000104400039000000000334004b000001ca0000813d000a00000006001d000800000004001d00000060434000c900000000022300190000002404200039000000000241034f000000000302043b000000ff0230008c000005510000213d000000400200043d0000004005400039000000000451034f000000000404043b000002ff0640009c000007ce0000213d000000200550008a000000000151034f000000000101043b000000600520003900000000004504350000004004200039000000000014043500000020012000390000000000310435000000060100002900000000001204350000000000000435000002b20120009c000002b20200804100000040012002100000000002000414000002b20320009c000002b202008041000000c002200210000000000112019f00000300011001c700000001020000390ac10abc0000040f00000000030100190000006003300270000002b203300197000000200430008c000000200500003900000000050340190000000504500272000006820000613d000000000601034f0000000007000019000000006806043c000000000907004b00000000078704360000067e0000c13d0000001f05500190000006900000613d00000003055002100000000504400210000000000604043300000000065601cf000000000656022f000000000741034f000000000707043b0000010005500089000000000757022f00000000055701cf000000000565019f0000000000540435000100000003001f00030000000103550000000102200190000007e10000613d0000000001000433000002b402100198000008010000613d000900000001001d0000000a0120006b000007cb0000813d000a00000002001d00000000002004350000000201000039000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000400200043d000002d10320009c0000000505000029000001250000213d000000000101043b0000006003200039000000400030043f000000000301041a000000a001300270000000ff0110018f00000020042000390000000000140435000002b40130019700000000001204350000004002200039000000a801300270000000ff0110018f0000000000120435000000090230014f000002b4022001980000000a06000029000008120000c13d0000001f0210008c000006d80000213d000000050210021000000000035200190000000002030433000000ff0220018f000000ff0420008c000006360000613d00000001022000390000000000230435000000000301004b000006440000613d0000000303100210000000f80330018f00000005011002700000000404100039000000000404041a000000000434022f000000ff0440018f000000000242004b000006440000c13d0000000501100039000000000101041a000000000131022f000000ff0110018f0000001f0210008c000006bf0000a13d000002f00100004100000000001004350000003201000039000000040010043f000002f10100004100000ac30001043000000005020000290000000002020433000000ff0220018f000000000112004b000006ec0000813d000000400100043d0000031a02000041000007b60000013d000000400100043d000002ec02000041000007b60000013d000000400100043d000002ed02000041000007b60000013d000002da0100004100000000001004390000000001000414000002b20210009c000002b201008041000000c001100210000002d9011001c70000800b020000390ac10abc0000040f0000000102200190000008bb0000613d000000400200043d000000000101043b000000070110006b000007000000813d0000031901000041000005540000013d000000400100043d000002ee02000041000007b60000013d00000020012000390000030903000041000000000031043500000002030003670000004404300370000000000404043b000000400520003900000000004504350000006404300370000000000404043b000002b40540009c000005510000213d000000600520003900000000004504350000008404300370000000000404043b000002d50540009c000005510000213d00000080052000390000000000450435000000a404300370000000000404043b000002d50540009c000005510000213d000000a0052000390000000000450435000000c403300370000000000303043b000000000403004b0000000004000019000000010400c039000000000443004b000005510000c13d000000c0042000390000000000340435000000c00300003900000000003204350000030a0320009c000001250000213d000000e003200039000000400030043f000002b20310009c000002b20100804100000040011002100000000002020433000002b20320009c000002b2020080410000006002200210000000000112019f0000000002000414000002b20320009c000002b202008041000000c002200210000000000112019f000002b5011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b00000002020003670000000403200370000000000303043b000500000003001d00000003030000290000003f03300039000002ce03300197000000400400043d0000000003340019000900000004001d000000000443004b00000000040000190000000104004039000002cd0530009c000001250000213d0000000104400190000001250000c13d000000400030043f000000040300002900000009050000290000000003350436000800000003001d0000000203000029000000000330007c000005510000213d000000040300006b000007820000613d000000090300002900000001050000290000000206000029000000000452034f000000000404043b000000200330003900000000004304350000002005500039000000000465004b0000075a0000413d00000009020000290000000002020433000000000202004b000007820000613d000a00000000001d0000000a02000029000000050220021000000008022000290000000002020433000000000321004b000007700000813d0000000000100435000000200020043f0000000001000414000007730000013d0000000000200435000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b0000000a03000029000a00010030003d000000090200002900000000020204330000000a0220006b000007660000413d000000050110006c000008150000c13d00000044010000390000000201100367000000000101043b000a00000001001d000002d80100004100000000001004390000000001000414000002b20210009c000002b201008041000000c001100210000002d9011001c70000800b020000390ac10abc0000040f0000000102200190000008bb0000613d000000000101043b0000000a0110006c000007b40000c13d00000002010003670000006402100370000000000202043b000002b40320009c000005510000213d0000000003000410000000000223004b000007bc0000c13d0000000802000039000000000202041a0000002002200270000002d5022001970000000a03000039000000000303041a000000c803300270000002d503300197000000000332004b000009950000613d000000c403100370000000000303043b000000000403004b0000000004000019000000010400c039000000000443004b000005510000c13d000000000303004b000009950000c13d000000400100043d0000030e02000041000007b60000013d000000400100043d0000030c020000410000000000210435000002b20210009c000002b2010080410000004001100210000002dc011001c700000ac300010430000000400100043d0000030d02000041000007b60000013d000002f00100004100000000001004350000000101000039000000040010043f000002f10100004100000ac300010430000002f00100004100000000001004350000003101000039000000040010043f000002f10100004100000ac300010430000000400100043d0000030102000041000007b60000013d00000064012000390000030603000041000000000031043500000044012000390000030703000041000000000031043500000024012000390000002203000039000000000031043500000304010000410000000000120435000000040120003900000020030000390000000000310435000002b20120009c000002b202008041000000400120021000000308011001c700000ac300010430000000400200043d0000001f0430018f00000005053002720000000505500210000007ed0000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000968004b000007e90000c13d000000000604004b000007fb0000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f00000000001504350000006001300210000002b20320009c000002b2020080410000004002200210000000000112019f00000ac300010430000000400100043d00000044021000390000030303000041000000000032043500000024021000390000001803000039000000000032043500000304020000410000000000210435000000040210003900000020030000390000000000320435000002b20210009c000002b201008041000000400110021000000305011001c700000ac300010430000000400100043d0000030202000041000007b60000013d000000400100043d0000030b02000041000007b60000013d0000000803000039000000000203041a000002e0022001970000002001100210000002e101100041000002e201100197000000000112019f000000000013041b00000002010003670000000402100370000000000302043b0000006402300039000000000421034f000000000404043b000002b40540009c000005510000213d0000000405000029000900a40050003d0000000905100360000000000505043b00000000060000310000000007360049000000230770008a000002de08700197000002de09500197000000000a89013f000000000889004b0000000008000019000002de08004041000000000775004b0000000007000019000002de07008041000002de09a0009c000000000807c019000000000708004b000005510000c13d00000000035300190000000403300039000000000531034f000000000505043b000002cd0750009c000005510000213d00000000065600490000002003300039000002de07600197000002de08300197000000000978013f000000000778004b0000000007000019000002de07004041000000000663004b0000000006000019000002de06002041000002de0890009c000000000706c019000000000607004b000005510000c13d000000000331034f000000400600043d0000001f0750018f00000005085002720000085e0000613d00000005098002100000000009960019000000000a03034f000000000b06001900000000ac0a043c000000000bcb0436000000000c9b004b0000085a0000c13d000000000907004b0000086d0000613d0000000508800210000000000383034f00000000088600190000000307700210000000000908043300000000097901cf000000000979022f000000000303043b0000010007700089000000000373022f00000000037301cf000000000393019f0000000000380435000000000356001900000000000304350000002002200039000000000121034f000000000301043b0000000001000414000000040240008c000008bc0000c13d00000001020000390000000103000031000008d30000013d0000000801000039000000000201041a0000002003200270000a02d50030019b000000400300043d000002d10430009c000001250000213d0000006004300039000000400040043f00000040043000390000000a0500002900000000005404350000002004300039000000000004043500000000000304350000000703000039000000000003041b000002f5022001970000002003500210000000000223019f000000000021041b000000400100043d000900000001001d000002f60110009c000001250000213d0000000901000029000000a001100039000000400010043f000002d80100004100000000001004390000000001000414000002b20210009c000002b201008041000000c001100210000002d9011001c70000800b020000390ac10abc0000040f0000000102200190000008bb0000613d000000000101043b000000090500002900000080025000390000000103000039000000000032043500000060025000390000000a0400002900000000004204350000004002500039000000000042043500000020025000390000000003000410000000000032043500000000001504350000000902000039000000000012041b000002b4013001970000000a02000039000000000302041a000002f703300197000000000131019f000000a003400210000000000131019f000000c803400210000000000131019f000002f8011001c7000000000012041b000004190000013d000000000001042f000002b20250009c000002b2050080410000006002500210000002b20560009c000002b2060080410000004005600210000000000225019f000002b20510009c000002b201008041000000c001100210000000000121019f000000000203004b000008cb0000c13d0000000002040019000008ce0000013d000002b5011001c7000080090200003900000000050000190ac10ab70000040f00030000000103550000006001100270000102b20010019d000002b203100197000000000103004b000009480000c13d00000060010000390000000102200190000009740000613d00000002010003670000000402100370000000000302043b0000004402300039000000000421034f000000000504043b000002d50450009c000005510000213d0000002002200039000000000421034f000000000604043b000002b40460009c000005510000213d0000000904100360000000000704043b00000000040000310000000008340049000000230880008a000002de09800197000002de0a700197000000000b9a013f00000000099a004b0000000009000019000002de09004041000000000887004b0000000008000019000002de08008041000002de0ab0009c000000000908c019000000000809004b000005510000c13d00000000037300190000000407300039000000000371034f000000000303043b000002cd0830009c000005510000213d00000000043400490000002007700039000002de08400197000002de09700197000000000a89013f000000000889004b0000000008000019000002de08004041000000000447004b0000000004000019000002de04002041000002de09a0009c000000000804c019000000000408004b000005510000c13d000000400400043d000000200840003900000060090000390000000000980435000000000064043500000060064000390000000000360435000000000871034f0000001f0730018f000000800640003900000005093002720000000509900210000009200000613d000000000a960019000000000b08034f000000000c06001900000000bd0b043c000000000cdc0436000000000dac004b0000091c0000c13d000000000a07004b0000092e0000613d000000000898034f00000000099600190000000307700210000000000a090433000000000a7a01cf000000000a7a022f000000000808043b0000010007700089000000000878022f00000000077801cf0000000007a7019f0000000000790435000000000636001900000000000604350000002002200039000000000121034f000000000101043b000000400240003900000000001204350000001f013000390000032501100197000002e40210009c000002e4010080410000006001100210000002b20240009c000002b2040080410000004002400210000000000121019f0000000002000414000002b20320009c000002b202008041000000c002200210000000000121019f000002e5011000410000800d020000390000000203000039000002e604000041000002900000013d0000001f0130003900000325011001970000003f011000390000032504100197000000400100043d0000000004410019000000000514004b00000000050000190000000105004039000002cd0640009c000001250000213d0000000105500190000001250000c13d000000400040043f0000001f0430018f0000000005310436000a00000005001d00000003050003670000000503300272000009640000613d00000005063002100000000a080000290000000006680019000000000705034f000000007907043c0000000008980436000000000968004b000009600000c13d000000000604004b000008d60000613d0000000503300210000000000535034f0000000a033000290000000304400210000000000603043300000000064601cf000000000646022f000000000505043b0000010004400089000000000545022f00000000044501cf000000000464019f0000000000430435000008d60000013d000000400200043d000002e30300004100000000003204350000000403200039000000200400003900000000004304350000000001010433000000240320003900000000001304350000004403200039000000000401004b000009880000613d000000000400001900000000053400190000000a06400029000000000606043300000000006504350000002004400039000000000514004b000009810000413d0000001f041000390000032504400197000000000113001900000000000104350000004401400039000002b20310009c000002b2010080410000006001100210000002b20320009c000002b2020080410000004002200210000000000121019f00000ac3000104300000008403100370000000000303043b000002d50430009c000005510000213d000000000332004b000009a40000c13d000000a401100370000000000101043b000002d50310009c000005510000213d000000000112004b000009a70000a13d000000400100043d0000031802000041000007b60000013d000000400100043d0000030f02000041000007b60000013d000000060100002900000000001004350000000601000039000000200010043f0000000001000414000002b20210009c000002b201008041000000c001100210000002df011001c700008010020000390ac10abc0000040f0000000102200190000005510000613d000000000101043b000000000201041a000003260220019700000001022001bf000000000021041b00000002020003670000008401200370000000000101043b000002d50310009c000005510000213d000000400400043d000002d10340009c000001250000213d0000006003400039000000400030043f0000000403200370000000000503043b000000400340003900000000001304350000000703000029000002b2033001970000002006400039000000000036043500000000005404350000000704000039000000000054041b0000002004100210000002e2044001970000000807000039000000000607041a000002f506600197000000000464019f000000000434019f000000000047041b00000009040000390000000a06000029000000000064041b0000006404200370000000000404043b000002b40640009c000005510000213d0000031006400197000000a0071002100000031107700197000000000676019f0000000a08000039000000000708041a0000031207700197000000000776019f000000000078041b000000a406200370000000000606043b000002d50860009c000005510000213d0000031307700197000000c8086002100000031408800197000000000878019f0000000a07000039000000000087041b000000c407200370000000000707043b000000000907004b0000000009000019000000010900c039000000000997004b000005510000c13d0000031508800197000000000907004b0000000009000019000002f80900c041000000000889019f0000000a09000039000000000089041b000000400800043d00000000033804360000004402200370000000000202043b000000a00980003900000000007904350000008007800039000000000067043500000060068000390000000000160435000000400180003900000000004104350000000000230435000002b20180009c000002b20800804100000040018002100000000002000414000002b20320009c000002b202008041000000c002200210000000000112019f00000316011001c70000800d0200003900000002030000390000031704000041000002900000013d00000000030000190000000014010434000000ff0440018f00000000024204360000001e0430008c000000010330003900000a190000a13d000000000001042d000000400100043d000002fe0210009c00000a310000813d0000006002100039000000400020043f0000000702000039000000000202041a00000000022104360000000803000039000000000303041a000002b20430019700000000004204350000002002300270000002d50220019700000040031000390000000000230435000000000001042d000002f00100004100000000001004350000004101000039000000040010043f000002f10100004100000ac3000104300000000502000039000000000202041a000003e003100039000000f8042002700000000000430435000000f003200270000000ff0330018f000003c0041000390000000000340435000000e803200270000000ff0330018f000003a0041000390000000000340435000000e003200270000000ff0330018f00000380041000390000000000340435000000d803200270000000ff0330018f00000360041000390000000000340435000000d003200270000000ff0330018f00000340041000390000000000340435000000c803200270000000ff0330018f00000320041000390000000000340435000000c003200270000000ff0330018f00000300041000390000000000340435000000b803200270000000ff0330018f000002e0041000390000000000340435000000b003200270000000ff0330018f000002c0041000390000000000340435000000a803200270000000ff0330018f000002a0041000390000000000340435000000a003200270000000ff0330018f000002800410003900000000003404350000009803200270000000ff0330018f000002600410003900000000003404350000009003200270000000ff0330018f000002400410003900000000003404350000008803200270000000ff0330018f000002200410003900000000003404350000008003200270000000ff0330018f000002000410003900000000003404350000007803200270000000ff0330018f000001e00410003900000000003404350000007003200270000000ff0330018f000001c00410003900000000003404350000006803200270000000ff0330018f000001a00410003900000000003404350000006003200270000000ff0330018f000001800410003900000000003404350000005803200270000000ff0330018f000001600410003900000000003404350000005003200270000000ff0330018f000001400410003900000000003404350000004803200270000000ff0330018f000001200410003900000000003404350000004003200270000000ff0330018f000001000410003900000000003404350000003803200270000000ff0330018f000000e00410003900000000003404350000003003200270000000ff0330018f000000c00410003900000000003404350000002803200270000000ff0330018f000000a00410003900000000003404350000002003200270000000ff0330018f000000800410003900000000003404350000001803200270000000ff0330018f000000600410003900000000003404350000001003200270000000ff0330018f00000040041000390000000000340435000000ff0320018f00000000013104360000000802200270000000ff0220018f0000000000210435000000000001042d000000000001042f00000aba002104210000000102000039000000000001042d0000000002000019000000000001042d00000abf002104230000000102000039000000000001042d0000000002000019000000000001042d00000ac10000043200000ac20001042e00000ac300010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000846c67ee00000000000000000000000000000000000000000000000000000000b759d68400000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b759d68500000000000000000000000000000000000000000000000000000000c3f909d400000000000000000000000000000000000000000000000000000000846c67ef000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000a76f5598000000000000000000000000000000000000000000000000000000006b45fb3d0000000000000000000000000000000000000000000000000000000079ba50960000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000007cc38b28000000000000000000000000000000000000000000000000000000006b45fb3e00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000005a2519ef000000000000000000000000000000000000000000000000000000005ca1e16500000000000000000000000000000000000000000000000000000000627e8a3b38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000fffffffffffff6bfc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b000000000000000000000000000000000000000000000000ffffffffffffff9f000000000000000000000000000000000000000000000000fffffffffffffbff000000000000000000000000000000000000000000000000fffffffffffff7ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000ffffffffffadb13318000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000e000000000000000009a8a0592ac89c5ad3bc6df8224c17b485976f597df104ee20d0df415241f670b0200000200000000000000000000000000000004000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132d9c6386f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008d275622006c4ca82d03f498e90163cafd53c663a48470c3b52ac8bfbd9f52c80000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff0000000000ffffffff00000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000ffffffffff0000000070de1b4b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffff7f020000000000000000000000000000000000008000000000000000000000000087d58fdd48be753fb9ef4ec8a5895086c401506da8b4d752abc90602c3e62d1d9ba6743000000000000000000000000000000000000000000000000000000000f0ec1ca4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000f1f3053000000000000000000000000000000000000000000000000000000000b9ae8e5200000000000000000000000000000000000000000000000000000000ff063a2600000000000000000000000000000000000000000000000000000000bb00136e000000000000000000000000000000000000000000000000000000008db4e75d00000000000000000000000000000000000000000000000000000000c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85a4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000000000000000000000ff000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5fff0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000a4974ad206b9c736f9ab2feac1c9b1d043fe4ef377c70ae45659f2ef089f03e0200000000000000000000000000000000000040000000a0000000000000000019457468657265756d205369676e6564204d6573736167653a0a333200000000020000000000000000000000000000000000003c00000000000000000000000048c2688b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa07fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a000000000000000000000000000000000000000800000000000000000000000004a36ec0800000000000000000000000000000000000000000000000000000000815e1d640000000000000000000000000000000000000000000000000000000045434453413a20696e76616c6964207369676e6174757265000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000756500000000000000000000000000000000000000000000000000000000000045434453413a20696e76616c6964207369676e6174757265202773272076616c0000000000000000000000000000000000000084000000000000000000000000e6b82be989101b4eb519770114b997b97b3c8707515286748a871717f0e4ea1c000000000000000000000000000000000000000000000000ffffffffffffff1f2522a1c0000000000000000000000000000000000000000000000000000000005f87bc00000000000000000000000000000000000000000000000000000000009a846015000000000000000000000000000000000000000000000000000000003230825b00000000000000000000000000000000000000000000000000000000a255a76300000000000000000000000000000000000000000000000000000000ffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff00000000000000ffffffffff0000000000000000000000000000000000000000ffffffffffffff00000000000000000000000000000000000000000000000000ffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff00000000000000000000000000000000000000000000000000ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000c00000000000000000000000007ea643ae44677f24e0d6f40168893712daaf729b0a38fe7702d21cb544c84101c61352f800000000000000000000000000000000000000000000000000000000b057a45200000000000000000000000000000000000000000000000000000000c2ee9b9e00000000000000000000000000000000000000000000000000000000aa6185ca000000000000000000000000000000000000000000000000000000004f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000006400000080000000000000000000ff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000001c000000000000000000000000000000000000000000000000000000040000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000f237887945b2f8b9cbf9745937c9550b41ee59782a52321ca3ea0aa7736c448b") diff --git a/deployment/common/changeset/internal/evm/zksync/RBACTimelockZK.go b/deployment/common/changeset/internal/evm/zksync/RBACTimelockZK.go new file mode 100644 index 00000000000..dc33112e61b --- /dev/null +++ b/deployment/common/changeset/internal/evm/zksync/RBACTimelockZK.go @@ -0,0 +1,62 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. +package gethwrappers_zksync + +import ( + "context" + "crypto/rand" + "fmt" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/zksync-sdk/zksync2-go/accounts" + "github.com/zksync-sdk/zksync2-go/clients" + "github.com/zksync-sdk/zksync2-go/types" + "github.com/smartcontractkit/ccip-owner-contracts/pkg/gethwrappers" +) + +func DeployRBACTimelockZk(deployOpts *accounts.TransactOpts, client *clients.Client, wallet *accounts.Wallet, backend bind.ContractBackend, args ...interface{}) (common.Address, *types.Receipt, *gethwrappers.RBACTimelock, error) { + var calldata []byte + if len(args) > 0 { + abi, err := gethwrappers.RBACTimelockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + calldata, err = abi.Pack("", args...) + if err != nil { + return common.Address{}, nil, nil, err + } + } + + salt := make([]byte, 32) + n, err := rand.Read(salt) + if err != nil { + return common.Address{}, nil, nil, err + } + if n != len(salt) { + return common.Address{}, nil, nil, fmt.Errorf("failed to read random bytes: expected %d, got %d", len(salt), n) + } + + txHash, err := wallet.Deploy(deployOpts, accounts.Create2Transaction{ + Bytecode: RBACTimelockZkBytecode, + Calldata: calldata, + Salt: salt, + }) + if err != nil { + return common.Address{}, nil, nil, err + } + + receipt, err := client.WaitMined(context.Background(), txHash) + if err != nil { + return common.Address{}, nil, nil, err + } + + address := receipt.ContractAddress + contract, err := gethwrappers.NewRBACTimelock(address, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + + return address, receipt, contract, nil +} + +var RBACTimelockZkBytecode = common.Hex2Bytes("0004000000000002000c00000000000200000000030100190000006004300270000004e10340019700030000003103550002000000010355000004e10040019d0000008004000039000000400040043f0000000102200190000000230000c13d000000040230008c000000620000413d000000000201043b000000e002200270000005030420009c000000660000a13d000005040420009c000000930000a13d000005050420009c0000014e0000a13d000005060420009c000004610000a13d000005070420009c0000086d0000613d000005080420009c000006c90000613d000005090120009c000008770000c13d0000000001000416000000000101004b000008770000c13d0000000301000039000006fa0000013d0000000002000416000000000202004b000008770000c13d0000001f02300039000004e2022001970000008002200039000000400020043f0000001f0230018f0000000505300272000000340000613d00000005065002100000008006600039000000000701034f000000007807043c0000000004840436000000000864004b000000300000c13d000000000402004b000000430000613d0000000504500210000000000141034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000c00130008c000008770000413d000000800900043d000000a00b00043d000004e301b0009c000008770000213d000000c00200043d000004e40120009c000008770000213d0000001f01200039000000000431004b0000000004000019000004e504008041000004e501100197000000000501004b0000000005000019000004e505004041000004e50110009c000000000504c019000000000105004b000008770000c13d00000080012000390000000004010433000004e40140009c000001c90000a13d0000055b0100004100000000001004350000004101000039000000040010043f0000055c010000410000138000010430000000000103004b000008770000c13d00000000010000190000137f0001042e0000051c0420009c000000820000213d000005280420009c0000015b0000213d0000052e0420009c0000046f0000213d000005310420009c000006df0000613d000005320220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b0000000402000039000000000302041a000000000331004b000009160000813d00000000002004350000055201100041000000000101041a0000054901100197000000800010043f00000533010000410000137f0001042e0000051d0420009c000001770000213d000005230420009c000005200000213d000005260420009c000006f60000613d000005270220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b137e127d0000040f000007060000013d000005110420009c000001a50000213d000005170420009c0000054c0000213d0000051a0420009c000007e90000613d0000051b0220009c000008770000c13d000000640230008c000008770000413d0000000402100370000000000202043b000a00000002001d000004e40220009c000008770000213d0000000a020000290000002302200039000000000232004b000008770000813d0000000a020000290000000402200039000000000221034f000000000202043b000900000002001d000004e40220009c000008770000213d0000000a02000029000c00240020003d000000090200002900000005022002100000000c02200029000000000232004b000008770000213d0000004402100370000000000202043b000800000002001d0000002401100370000000000101043b000b00000001001d000004e7010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff011001900000093a0000c13d000004ed010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff011001900000093a0000c13d000000400200043d0000053b0120009c0000005c0000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000000ff0000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000000800041100000000060800190000000007020433000000000747004b000009160000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c0000010e0000213d000000100460008c00000aaa0000813d000000400400043d000c00000004001d000005410440009c0000005c0000213d0000000c060000290000008004600039000000400040043f00000042050000390000000005560436000b00000005001d000000003603043c0000000005650436000000000645004b0000012b0000c13d0000000b0a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000c09000029000000210390003900000000040304330000053c044001970000053e044001c70000000000430435000004ed06000041000000410300003900000000050600190000000006090433000000000636004b000009160000a13d0000000306500210000000780660018f0000053f0660021f0000000007a3001900000000080704330000053c088001970000054006600197000000000668019f00000000006704350000000406500270000000010330008a000000010730008c0000013c0000213d000006190000013d0000050c0420009c000003a80000213d0000050f0420009c000005610000613d000005100120009c000008770000c13d0000000001000416000000000101004b000008770000c13d000004ee01000041000000800010043f00000533010000410000137f0001042e000005290420009c0000052d0000213d0000052c0420009c000006fe0000613d0000052d0220009c000008770000c13d000000840230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b000004e30220009c000008770000213d0000002402100370000000000202043b000004e30220009c000008770000213d0000006401100370000000000101043b000004e40210009c000008770000213d00000004011000390000000002030019137e0f220000040f0000056101000041000007090000013d0000051e0420009c0000053f0000213d000005210420009c000007100000613d000005220220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b000c00000001001d0000055101100198000008770000c13d0000000001000411137e0f980000040f0000000c0100002900000000001004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000b00000001001d000000000101004b000000640000613d0000000405000039000000000205041a000000000102004b000008bb0000c13d0000055b0100004100000000001004350000001101000039000000040010043f0000055c010000410000138000010430000005120420009c000005570000213d000005150420009c0000080d0000613d000005160220009c000008770000c13d000000440230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000002402100370000000000202043b000c00000002001d000004e30220009c000008770000213d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019137e135f0000040f0000000c020000290000000000200435000000200010043f00000000010000190000004002000039137e135f0000040f000000000101041a000000ff011001900000000001000019000000010100c039000000800010043f00000533010000410000137f0001042e00000005054002100000003f01500039000004e601100197000000400800043d0000000006180019000000000186004b00000000010000190000000101004039000004e40760009c0000005c0000213d00000001011001900000005c0000c13d0000008001300039000000400060043f000c00000008001d0000000006480436000b00000006001d000000a0022000390000000005250019000000000615004b000008770000213d000000000404004b000001e80000613d0000000c040000290000000026020434000004e30760009c000008770000213d00000020044000390000000000640435000000000652004b000001e10000413d000000e00200043d000004e40420009c000008770000213d0000001f04200039000000000534004b0000000005000019000004e505008041000004e504400197000000000604004b0000000006000019000004e506004041000004e50440009c000000000605c019000000000406004b000008770000c13d00000080042000390000000004040433000004e40540009c0000005c0000213d00000005054002100000003f06500039000004e606600197000000400a00043d00000000066a00190000000007a6004b00000000070000190000000107004039000004e40860009c0000005c0000213d00000001077001900000005c0000c13d000000400060043f000a0000000a001d00000000064a0436000900000006001d000000a0022000390000000005250019000000000615004b000008770000213d000000000404004b000002190000613d0000000a040000290000000026020434000004e30760009c000008770000213d00000020044000390000000000640435000000000652004b000002120000413d000001000200043d000004e40420009c000008770000213d0000001f04200039000000000534004b0000000005000019000004e505008041000004e504400197000000000604004b0000000006000019000004e506004041000004e50440009c000000000605c019000000000406004b000008770000c13d00000080042000390000000004040433000004e40540009c0000005c0000213d00000005054002100000003f06500039000004e606600197000000400700043d0000000006670019000800000007001d000000000776004b00000000070000190000000107004039000004e40860009c0000005c0000213d00000001077001900000005c0000c13d000000400060043f00000008060000290000000006460436000700000006001d000000a0022000390000000005250019000000000615004b000008770000213d000000000404004b0000024b0000613d00000008040000290000000026020434000004e30760009c000008770000213d00000020044000390000000000640435000000000652004b000002440000413d000001200200043d000004e40420009c000008770000213d0000001f04200039000000000334004b0000000003000019000004e503008041000004e504400197000000000504004b0000000005000019000004e505004041000004e50440009c000000000503c019000000000305004b000008770000c13d00000080032000390000000003030433000004e40430009c0000005c0000213d00000005043002100000003f05400039000004e605500197000000400600043d0000000005560019000400000006001d000000000665004b00000000060000190000000106004039000004e40750009c0000005c0000213d00000001066001900000005c0000c13d000000400050043f00000004050000290000000005350436000200000005001d000000a0022000390000000004240019000000000114004b000008770000213d000000000103004b0000027d0000613d00000004010000290000000023020434000004e30530009c000008770000213d00000020011000390000000000310435000000000342004b000002760000413d000004e7010000410000000000100435000000200000043f000004e802000041000000000602041a000000000012041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004ea04000041000004e705000041000004e707000041000100000009001d00060000000b001d137e13740000040f0000000101200190000008770000613d000004eb0100004100000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000101100039000000000601041a000004e702000041000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004ea04000041000004eb05000041000004e707000041137e13740000040f0000000101200190000008770000613d000004ed0100004100000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000101100039000000000601041a000004e702000041000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004ea04000041000004ed05000041000004e707000041137e13740000040f0000000101200190000008770000613d000004ee0100004100000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000101100039000000000601041a000004e702000041000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004ea04000041000004ee05000041000004e707000041137e13740000040f0000000101200190000008770000613d000004ef0100004100000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000101100039000000000601041a000004e702000041000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004ea04000041000004ef05000041000004e707000041137e13740000040f0000000101200190000008770000613d000004e70100004100000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f00000006030000290000000102200190000008770000613d000000000101043b000004e302300197000600000002001d0000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff01100190000003440000c13d00000006010000290000000000100435000004f001000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d0200003900000004030000390000000007000411000004f104000041000004e7050000410000000606000029137e13740000040f0000000101200190000008770000613d00000006010000290000000000100435000004f201000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b0000037d0000c13d000004f301000041000000000201041a000500000002001d000004e40220009c0000005c0000213d00000005020000290000000102200039000000000021041b00000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000005011000290000000602000029000000000021041b000004f301000041000000000101041a000500000001001d0000000000200435000004f201000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000502000029000000000021041b0000000c010000290000000001010433000000000101004b00000d2c0000c13d0000000a010000290000000001010433000000000101004b00000da50000c13d00000008010000290000000001010433000000000101004b00000e1e0000c13d00000004010000290000000001010433000000000101004b00000e970000c13d00000003010000390000000103000029000000000031041b000000400100043d000000200210003900000000003204350000000000010435000004e10210009c000004e10100804100000040011002100000000002000414000004e10320009c000004e102008041000000c002200210000000000112019f000004ec011001c70000800d0200003900000001030000390000050104000041137e13740000040f0000000101200190000008770000613d00000020010000390000010000100443000001200000044300000502010000410000137f0001042e0000050d0420009c000006530000613d0000050e0220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b000c00000001001d000004e7010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff01100190000008960000c13d000004ee010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff01100190000008960000c13d000000400200043d0000053b0120009c0000005c0000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000003f90000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000000800041100000000060800190000000007020433000000000747004b000009160000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c000004080000213d000000100460008c00000aaa0000813d000000400400043d000c00000004001d000005410440009c0000005c0000213d0000000c060000290000008004600039000000400040043f00000042050000390000000005560436000b00000005001d000000003603043c0000000005650436000000000645004b000004250000c13d0000000b0a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000c09000029000000210390003900000000040304330000053c044001970000053e044001c70000000000430435000004ee06000041000000410300003900000000050600190000000006090433000000000636004b000009160000a13d0000000306500210000000780660018f0000053f0660021f00000000073a001900000000080704330000053c088001970000054006600197000000000668019f00000000006704350000000406500270000000010330008a000000010730008c000004360000213d000000100350008c00000aaa0000813d000000400500043d000a00000005001d0000002004500039000800000004001d000005420300004100000000003404350000000003020433000900000003001d0000003702500039137e0f8b0000040f00000009020000290000000a0120002900000037021000390000054303000041000000000032043500000048021000390000000c010000290000000003010433000c00000003001d0000000b01000029137e0f8b0000040f0000000c020000290000000903200029000006320000013d0000050a0420009c000006bb0000613d0000050b0220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b00000000001004350000000201000039000006c40000013d0000052f0420009c000007210000613d000005300220009c000008770000c13d000000240230008c000008770000413d0000000402100370000000000202043b000a00000002001d000004e40220009c000008770000213d0000000a020000290000002302200039000000000232004b000008770000813d0000000a020000290000000402200039000000000121034f000000000101043b000900000001001d000004e40110009c000008770000213d0000000a01000029000c00240010003d000000090100002900000005011002100000000c01100029000000000131004b000008770000213d000004e7010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff01100190000009690000c13d000004ef010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff01100190000009690000c13d000000400200043d0000053b0120009c0000005c0000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000004d10000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000000800041100000000060800190000000007020433000000000747004b000009160000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c000004e00000213d000000100460008c00000aaa0000813d000000400400043d000c00000004001d000005410440009c0000005c0000213d0000000c060000290000008004600039000000400040043f00000042050000390000000005560436000b00000005001d000000003603043c0000000005650436000000000645004b000004fd0000c13d0000000b0a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000c09000029000000210390003900000000040304330000053c044001970000053e044001c70000000000430435000004ef06000041000000410300003900000000050600190000000006090433000000000636004b000009160000a13d0000000306500210000000780660018f0000053f0660021f0000000007a3001900000000080704330000053c088001970000054006600197000000000668019f00000000006704350000000406500270000000010330008a000000010730008c0000050e0000213d000006190000013d000005240420009c000007280000613d000005250220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b137e122e0000040f000007060000013d0000052a0420009c000007db0000613d0000052b0220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019137e135f0000040f0000000101100039000006fa0000013d0000051f0420009c000007e20000613d000005200220009c000008770000c13d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b137e12420000040f000007060000013d000005180120009c000008260000613d000005190120009c000008770000c13d0000000001000416000000000101004b000008770000c13d000004eb01000041000000800010043f00000533010000410000137f0001042e000005130420009c0000082d0000613d000005140120009c000008770000c13d0000000001000416000000000101004b000008770000c13d000000800000043f00000533010000410000137f0001042e000000840230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b000a00000002001d000004e40220009c000008770000213d0000000a020000290000002302200039000000000232004b000008770000813d0000000a020000290000000402200039000000000221034f000000000202043b000800000002001d000004e40220009c000008770000213d0000000a02000029000c00240020003d000000080200002900000005022002100000000c02200029000000000232004b000008770000213d0000006402100370000000000202043b000500000002001d0000004402100370000000000202043b000700000002001d0000002401100370000000000101043b000600000001001d000004e7010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff011001900000091c0000c13d000004eb010000410000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff011001900000091c0000c13d000000400200043d0000053b0120009c0000005c0000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000005cb0000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000000800041100000000060800190000000007020433000000000747004b000009160000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c000005da0000213d000000100460008c00000aaa0000813d000000400400043d000c00000004001d000005410440009c0000005c0000213d0000000c060000290000008004600039000000400040043f00000042050000390000000005560436000b00000005001d000000003603043c0000000005650436000000000645004b000005f70000c13d0000000b0a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000c09000029000000210390003900000000040304330000053c044001970000053e044001c70000000000430435000004eb06000041000000410300003900000000050600190000000006090433000000000636004b000009160000a13d0000000306500210000000780660018f0000053f0660021f0000000007a3001900000000080704330000053c088001970000054006600197000000000668019f00000000006704350000000406500270000000010330008a000000010730008c000006080000213d000000100350008c00000aaa0000813d000000400500043d000a00000005001d0000002004500039000800000004001d000005420300004100000000003404350000000003020433000900000003001d0000003702500039137e0f8b0000040f00000009020000290000000a0120002900000037021000390000054303000041000000000032043500000048021000390000000c010000290000000003010433000c00000003001d0000000b01000029137e0f8b0000040f0000000c02000029000000090320002900000028023000390000000a0100002900000000002104350000004802300039137e0f100000040f0000053901000041000000400400043d000c00000004001d00000000001404350000002001000039000000040240003900000000001204350000000a010000290000000003010433000b00000003001d0000002401400039000000000031043500000044024000390000000801000029137e0f8b0000040f0000000b010000290000001f011000390000056b011001970000004401100039000004e10210009c000004e1010080410000000c03000029000004e10230009c000004e10300804100000060011002100000004002300210000000000121019f0000138000010430000000a40230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b000004e30220009c000008770000213d0000002402100370000000000202043b000004e30220009c000008770000213d0000004402100370000000000202043b000004e40420009c000008770000213d0000002304200039000000000434004b000008770000813d0000000404200039000000000441034f000000000504043b000004e40450009c0000005c0000213d00000005045002100000003f06400039000004e606600197000005410760009c0000005c0000213d0000008006600039000000400060043f000000800050043f00000024022000390000000004240019000000000634004b000008770000213d000000000505004b000006820000613d0000008005000039000000000621034f000000000606043b000000200550003900000000006504350000002002200039000000000642004b0000067b0000413d0000006402100370000000000202043b000004e40420009c000008770000213d0000002304200039000000000534004b0000000005000019000004e505008041000004e504400197000000000604004b0000000006000019000004e506004041000004e50440009c000000000605c019000000000406004b000008770000c13d0000000404200039000000000441034f000000000504043b000004e40450009c0000005c0000213d00000005065002100000003f04600039000004e607400197000000400400043d0000000007740019000000000847004b00000000080000190000000108004039000004e40970009c0000005c0000213d00000001088001900000005c0000c13d000000400070043f000000000054043500000024022000390000000006260019000000000736004b000008770000213d000000000505004b000006b20000613d000000000521034f000000000505043b000000200440003900000000005404350000002002200039000000000562004b000006ab0000413d0000008401100370000000000101043b000004e40210009c000008770000213d00000004011000390000000002030019137e0f220000040f0000054401000041000007090000013d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b00000000001004350000000101000039000000200010043f00000040020000390000000001000019137e135f0000040f000006fa0000013d000000a40230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b000004e30220009c000008770000213d0000002402100370000000000202043b000004e30220009c000008770000213d0000008401100370000000000101043b000004e40210009c000008770000213d00000004011000390000000002030019137e0f220000040f0000053401000041000007090000013d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000201043b0000055101200198000008770000c13d0000000101000039000005660320009c000006f20000613d000005670320009c000006f20000613d000005680120009c00000000010000190000000101006039000005690220009c00000001011061bf000000010110018f000000800010043f00000533010000410000137f0001042e0000000001000416000000000101004b000008770000c13d0000000401000039000000000101041a000000800010043f00000533010000410000137f0001042e000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b137e12560000040f000000000101004b0000000001000019000000010100c039000000400200043d0000000000120435000004e10120009c000004e102008041000000400120021000000535011001c70000137f0001042e000000440230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000002402100370000000000302043b000004e30230009c000008770000213d0000000002000411000000000323004b0000088a0000c13d0000000401100370000000000101043b137e11300000040f00000000010000190000137f0001042e0000000001000416000000000101004b000008770000c13d000004ed01000041000000800010043f00000533010000410000137f0001042e000000440230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b000c00000002001d0000002401100370000000000101043b000b00000001001d000004e30110009c000008770000213d0000000c010000290000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000101100039000000000101041a0000000002000411137e105d0000040f0000000c010000290000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000b020000290000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff011001900000078f0000c13d0000000c010000290000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000b020000290000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004f1040000410000000c050000290000000b060000290000000007000411137e13740000040f0000000101200190000008770000613d0000000c0100002900000000001004350000000101000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000201043b0000000b010000290000000000100435000c00000002001d0000000101200039000a00000001001d000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b000000640000c13d0000000c01000029000000000101041a000900000001001d000004e40110009c0000005c0000213d000000090100002900000001011000390000000c02000029000000000012041b00000000002004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000009011000290000000b02000029000000000021041b0000000c01000029000000000101041a000c00000001001d00000000002004350000000a01000029000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000c02000029000000000021041b00000000010000190000137f0001042e0000000001000416000000000101004b000008770000c13d000004ef01000041000000800010043f00000533010000410000137f0001042e0000000001000416000000000101004b000008770000c13d0000000001030019137e0f6d0000040f137e12910000040f000007090000013d000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b000c00000001001d0000000001000411137e0f980000040f0000000301000039000000000101041a000000400200043d00000000011204360000000c030000290000000000310435000004e10120009c000004e10200804100000040012002100000000002000414000004e10320009c000004e102008041000000c002200210000000000112019f000004ec011001c70000800d0200003900000001030000390000050104000041137e13740000040f0000000101200190000008770000613d0000000c010000290000000302000039000000000012041b00000000010000190000137f0001042e000000440230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000402100370000000000202043b00000000002004350000000102000039000000200020043f0000002401100370000000000101043b000c00000001001d00000040020000390000000001000019137e135f0000040f0000000c02000029137e12130000040f0000000302200210000000000101041a000000000121022f000004e301100197000000ff0220008c0000000001002019000007090000013d0000000001000416000000000101004b000008770000c13d000004e701000041000000800010043f00000533010000410000137f0001042e000000240230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000000401100370000000000101043b000c00000001001d0000055101100198000008770000c13d0000000001000411137e0f980000040f0000000c0100002900000000001004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b000000640000c13d0000000401000039000000000201041a000004e40320009c0000005c0000213d0000000103200039000000000031041b00000552022000410000000c03000029000000000032041b000000000101041a000b00000001001d00000000003004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000b02000029000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d0200003900000002030000390000055304000041000008f10000013d000000440230008c000008770000413d0000000002000416000000000202004b000008770000c13d0000002402100370000000000202043b000c00000002001d000004e30220009c000008790000a13d000000000100001900001380000104300000000401100370000000000101043b000b00000001001d0000000000100435000000200000043f00000040020000390000000001000019137e135f0000040f0000000101100039000000000101041a0000000002000411137e105d0000040f0000000b010000290000000c02000029137e11300000040f00000000010000190000137f0001042e0000053901000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000055e01000041000000c40010043f0000055f01000041000000e40010043f000005600100004100001380000104300000000c0100002900000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000020110008c000008da0000813d000000400100043d00000064021000390000053703000041000000000032043500000044021000390000053803000041000000000032043500000024021000390000002b03000039000000000032043500000539020000410000000000210435000000040210003900000020030000390000000000320435000004e10210009c000004e10100804100000040011002100000053a011001c700001380000104300000000b04000029000000010140008a000000000342004b000008f60000c13d0000055a02400041000000000002041b000000000015041b0000000c0100002900000000001004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000001041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d0200003900000002030000390000055d04000041000008f10000013d0000000c0100002900000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000001041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d02000039000000020300003900000536040000410000000c05000029137e13740000040f0000000101200190000000640000c13d000008770000013d000000000112004b000009160000a13d0000055a014000410000055a02200041000000000202041a000000000021041b00000000002004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000b02000029000000000021041b0000000401000039000000000101041a0000000004010019000000000101004b00000aa70000c13d0000055b0100004100000000001004350000003101000039000000040010043f0000055c0100004100001380000104300000055b0100004100000000001004350000003201000039000000040010043f0000055c0100004100001380000104300000000c01000029000000080200002900000006030000290000000704000029137e12910000040f000400000001001d00000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000a9d0000c13d0000000301000039000000000101041a000000050110006b00000aba0000813d000000400100043d00000044021000390000054f0300004100000aad0000013d0000000c0100002900000009020000290000000b030000290000000804000029137e12910000040f000800000001001d00000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000700000001001d000000020110008c0000095f0000413d000005470100004100000000001004390000000001000414000004e10210009c000004e101008041000000c00110021000000548011001c70000800b02000039137e13790000040f000000010220019000000bbd0000613d000000000101043b000000070110006b00000bbe0000a13d000000400100043d00000064021000390000055803000041000000000032043500000044021000390000055903000041000000000032043500000024021000390000002403000039000008b00000013d000000090100006b000000640000613d000000000c0000190000000501c002100000000c0d10002900000002010003670000000002d1034f000000000202043b00000000030000310000000a0430006a000000830440008a000004e505400197000004e506200197000000000756013f000000000556004b0000000005000019000004e505004041000000000442004b0000000004000019000004e504008041000004e50670009c000000000504c019000000000405004b000008770000c13d0000000c05200029000000000251034f000000000402043b000004e30240009c000008770000213d00000000075300490000004002500039000000000621034f000000000606043b0000001f0770008a000004e508700197000004e509600197000000000a89013f000000000889004b0000000008000019000004e508004041000000000776004b0000000007000019000004e507008041000004e509a0009c000000000807c019000000000708004b000008770000c13d0000000006560019000000000561034f000000000505043b000004e40750009c000008770000213d00000000075300490000002003600039000004e506700197000004e508300197000000000968013f000000000668004b0000000006000019000004e506004041000000000773004b0000000007000019000004e507002041000004e50890009c000000000607c019000000000606004b000008770000c13d000000000331034f000000400600043d00000005075002720000000507700210000009b80000613d0000000008760019000000000903034f000000000a060019000000009b09043c000000000aba0436000000000b8a004b000009b40000c13d0000001f08500190000009c60000613d000000000373034f00000000077600190000000308800210000000000907043300000000098901cf000000000989022f000000000303043b0000010008800089000000000383022f00000000038301cf000000000393019f000000000037043500000000035600190000000000030435000000200220008a000000000121034f000000000301043b0000000001000414000000040240008c000b0000000c001d000009d40000c13d00000001010000310000000102000039000000000301004b000009f00000c13d00000a1a0000013d00080000000d001d000004e10250009c000004e1050080410000006002500210000004e10560009c000004e1060080410000004005600210000000000225019f000004e10510009c000004e101008041000000c001100210000000000121019f000000000203004b000009e60000613d000004e9011001c700008009020000390000000005000019000009e70000013d0000000002040019137e13740000040f00030000000103550000006001100270000104e10010019d000004e1011001970000000b0c000029000000080d000029000000000301004b00000a1a0000613d000004e40310009c0000005c0000213d0000001f031000390000056b033001970000003f033000390000056b04300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000004e40640009c0000005c0000213d00000001055001900000005c0000c13d000000400040043f000000000313043600000003040003670000000505100272000000050550021000000a0c0000613d0000000006530019000000000704034f0000000008030019000000007907043c0000000008980436000000000968004b00000a080000c13d0000001f0110019000000a1a0000613d000000000454034f00000000035300190000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000010120019000000d180000613d00000002010003670000000002d1034f000000000202043b00000000030000310000000a0430006a000000830440008a000004e505400197000004e506200197000000000756013f000000000556004b0000000005000019000004e505004041000000000442004b0000000004000019000004e504008041000004e50670009c000000000504c019000000000405004b000008770000c13d0000000c02200029000000000421034f000000000404043b000004e30540009c000008770000213d0000004005200039000000000551034f000000000605043b00000000052300490000001f0550008a000004e507500197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000556004b0000000005000019000004e505008041000004e50890009c000000000705c0190000002005200039000000000551034f000000000505043b000000000707004b000008770000c13d0000000006260019000000000261034f000000000202043b000004e40720009c000008770000213d00000000032300490000002006600039000004e507300197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000336004b0000000003000019000004e503002041000004e50890009c000000000703c019000000000307004b000008770000c13d000000400300043d00000040073000390000006008000039000000000087043500000020073000390000000000570435000000000043043500000060043000390000000000240435000000000461034f00000080013000390000000505200272000000050550021000000a720000613d0000000006510019000000000704034f0000000008010019000000007907043c0000000008980436000000000968004b00000a6e0000c13d0000001f0620019000000a800000613d000000000454034f00000000055100190000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f0000000000450435000000000121001900000000000104350000001f012000390000056b01100197000005550210009c00000555010080410000006001100210000004e10230009c000004e1030080410000004002300210000000000121019f0000000002000414000004e10320009c000004e102008041000000c002200210000000000121019f00000556011000410000800d020000390000000203000039000005640400004100000000050c0019137e13740000040f0000000b0c0000290000000101200190000008770000613d000000010cc000390000000901c0006c0000096c0000413d000000640000013d000000400100043d00000064021000390000054503000041000000000032043500000044021000390000054603000041000000000032043500000024021000390000002903000039000008b00000013d000000010140008a0000000405000039000008bf0000013d000000400100043d0000004402100039000005650300004100000000003204350000053902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000004e10210009c000004e101008041000000400110021000000550011001c70000138000010430000005470100004100000000001004390000000001000414000004e10210009c000004e101008041000000c00110021000000548011001c70000800b02000039137e13790000040f000000010220019000000bbd0000613d000000000101043b000b00050010002d0000000b0110006b0000000001000019000000010100403900000001011001900000019f0000c13d000000040100002900000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000b02000029000000000021041b000000080100006b000000640000613d000000000b0000190000000501b002100009000c0010002d00000002010003670000000902100360000000000302043b00000000020000310000000a0420006a000000830440008a000004e505400197000004e506300197000000000756013f000000000556004b0000000005000019000004e505004041000000000643004b0000000006000019000004e506008041000004e50770009c000000000506c019000000000505004b000008770000c13d0000000c053000290000004006500039000000000661034f000000000606043b00000000075200490000001f0770008a000004e508700197000004e509600197000000000a89013f000000000889004b0000000008000019000004e508004041000000000776004b0000000007000019000004e507008041000004e509a0009c000000000807c019000000000708004b000008770000c13d0000000006560019000000000561034f000000000505043b000004e40750009c000008770000213d00000000075200490000002006600039000004e508700197000004e509600197000000000a89013f000000000889004b0000000008000019000004e508004041000000000776004b0000000007000019000004e507002041000004e509a0009c000000000807c019000000000708004b000008770000c13d000000040550008c000b0000000b001d00000b380000413d000000000161034f000000000101043b000005490110019700000000001004350000000501000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000b0b0000290000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000d220000c13d00000000020000310000000a0320006a00000002010003670000000905100360000000830430008a000000000305043b000000000543004b0000000005000019000004e505008041000004e504400197000004e506300197000000000746013f000000000446004b0000000004000019000004e504004041000004e50670009c000000000405c019000000000404004b000008770000c13d0000000c03300029000000000431034f000000000404043b000004e30540009c000008770000213d0000004005300039000000000551034f000000000605043b00000000053200490000001f0550008a000004e507500197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000556004b0000000005000019000004e505008041000004e50890009c000000000705c0190000002005300039000000000551034f000000000505043b000000000707004b000008770000c13d0000000006360019000000000361034f000000000303043b000004e40730009c000008770000213d00000000023200490000002006600039000004e507200197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000226004b0000000002000019000004e502002041000004e50890009c000000000702c019000000000207004b000008770000c13d000000400200043d0000004007200039000000c0080000390000000000870435000000200720003900000000005704350000000000420435000000c0042000390000000000340435000000000461034f000000e0012000390000000505300272000000050550021000000b880000613d0000000006510019000000000704034f0000000008010019000000007907043c0000000008980436000000000968004b00000b840000c13d0000001f0630019000000b960000613d000000000454034f00000000055100190000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500000000013100190000000000010435000000a001200039000000050400002900000000004104350000008001200039000000070400002900000000004104350000006001200039000000060400002900000000004104350000001f013000390000056b011001970000054c0310009c0000054c010080410000006001100210000004e10320009c000004e1020080410000004002200210000000000121019f0000000002000414000004e10320009c000004e102008041000000c002200210000000000121019f0000054d011000410000800d0200003900000003030000390000054e04000041000000040500002900000000060b0019137e13740000040f0000000b0b0000290000000101200190000008770000613d000000010bb000390000000801b0006c00000adf0000413d000000640000013d000000000001042f0000000b0100006b00000bd00000c13d000000090100006b00000be50000c13d0000000801000029137e12560000040f137e13470000040f000000080100002900000000001004350000000201000039000000200010043f00000040020000390000000001000019137e135f0000040f0000000102000039000000000021041b00000000010000190000137f0001042e0000000b0100002900000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000010110008c00000bc00000613d000000400100043d0000004402100039000005540300004100000aad0000013d000000000c0000190000000501c002100000000c0d10002900000002010003670000000002d1034f000000000202043b00000000030000310000000a0430006a000000830440008a000004e505400197000004e506200197000000000756013f000000000556004b0000000005000019000004e505004041000000000442004b0000000004000019000004e504008041000004e50670009c000000000504c019000000000405004b000008770000c13d0000000c05200029000000000251034f000000000402043b000004e30240009c000008770000213d00000000075300490000004002500039000000000621034f000000000606043b0000001f0770008a000004e508700197000004e509600197000000000a89013f000000000889004b0000000008000019000004e508004041000000000776004b0000000007000019000004e507008041000004e509a0009c000000000807c019000000000708004b000008770000c13d0000000006560019000000000561034f000000000505043b000004e40750009c000008770000213d00000000075300490000002003600039000004e506700197000004e508300197000000000968013f000000000668004b0000000006000019000004e506004041000000000773004b0000000007000019000004e507002041000004e50890009c000000000607c019000000000606004b000008770000c13d000000000331034f000000400600043d0000000507500272000000050770021000000c320000613d0000000008760019000000000903034f000000000a060019000000009b09043c000000000aba0436000000000b8a004b00000c2e0000c13d0000001f0850019000000c400000613d000000000373034f00000000077600190000000308800210000000000907043300000000098901cf000000000989022f000000000303043b0000010008800089000000000383022f00000000038301cf000000000393019f000000000037043500000000035600190000000000030435000000200220008a000000000121034f000000000301043b0000000001000414000000040240008c000b0000000c001d00000c4e0000c13d00000001010000310000000102000039000000000301004b00000c6a0000c13d00000c940000013d00070000000d001d000004e10250009c000004e1050080410000006002500210000004e10560009c000004e1060080410000004005600210000000000225019f000004e10510009c000004e101008041000000c001100210000000000121019f000000000203004b00000c600000613d000004e9011001c70000800902000039000000000500001900000c610000013d0000000002040019137e13740000040f00030000000103550000006001100270000104e10010019d000004e1011001970000000b0c000029000000070d000029000000000301004b00000c940000613d000004e40310009c0000005c0000213d0000001f031000390000056b033001970000003f033000390000056b04300197000000400300043d0000000004430019000000000534004b00000000050000190000000105004039000004e40640009c0000005c0000213d00000001055001900000005c0000c13d000000400040043f000000000313043600000003040003670000000505100272000000050550021000000c860000613d0000000006530019000000000704034f0000000008030019000000007907043c0000000008980436000000000968004b00000c820000c13d0000001f0110019000000c940000613d000000000454034f00000000035300190000000301100210000000000503043300000000051501cf000000000515022f000000000404043b0000010001100089000000000414022f00000000011401cf000000000151019f0000000000130435000000010120019000000d180000613d00000002010003670000000002d1034f000000000202043b00000000030000310000000a0430006a000000830440008a000004e505400197000004e506200197000000000756013f000000000556004b0000000005000019000004e505004041000000000442004b0000000004000019000004e504008041000004e50670009c000000000504c019000000000405004b000008770000c13d0000000c02200029000000000421034f000000000404043b000004e30540009c000008770000213d0000004005200039000000000551034f000000000605043b00000000052300490000001f0550008a000004e507500197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000556004b0000000005000019000004e505008041000004e50890009c000000000705c0190000002005200039000000000551034f000000000505043b000000000707004b000008770000c13d0000000006260019000000000261034f000000000202043b000004e40720009c000008770000213d00000000032300490000002006600039000004e507300197000004e508600197000000000978013f000000000778004b0000000007000019000004e507004041000000000336004b0000000003000019000004e503002041000004e50890009c000000000703c019000000000307004b000008770000c13d000000400300043d00000040073000390000006008000039000000000087043500000020073000390000000000570435000000000043043500000060043000390000000000240435000000000461034f00000080013000390000000505200272000000050550021000000cec0000613d0000000006510019000000000704034f0000000008010019000000007907043c0000000008980436000000000968004b00000ce80000c13d0000001f0620019000000cfa0000613d000000000454034f00000000055100190000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f0000000000450435000000000121001900000000000104350000001f012000390000056b01100197000005550210009c00000555010080410000006001100210000004e10230009c000004e1030080410000004002300210000000000121019f0000000002000414000004e10320009c000004e102008041000000c002200210000000000121019f00000556011000410000800d0200003900000003030000390000055704000041000000080500002900000000060c0019137e13740000040f0000000b0c0000290000000101200190000008770000613d000000010cc000390000000901c0006c00000be60000413d00000bc20000013d000000400100043d00000064021000390000056203000041000000000032043500000044021000390000056303000041000000000032043500000024021000390000002d03000039000008b00000013d000000400100043d00000064021000390000054a03000041000000000032043500000044021000390000054b03000041000000000032043500000024021000390000002103000039000008b00000013d000500000000001d00000d340000013d0000000502000029000500010020003d0000000c010000290000000001010433000000050110006b000003810000813d000000050100002900000005011002100000000b011000290000000001010433000004e301100197000600000001001d0000000000100435000004f501000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff0110019000000d6a0000c13d00000006010000290000000000100435000004f501000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004f104000041000004eb0500004100000006060000290000000007000411137e13740000040f0000000101200190000008770000613d00000006010000290000000000100435000004f601000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000d2e0000c13d000004f701000041000000000101041a000300000001001d000004e40110009c0000005c0000213d00000003010000290000000101100039000004f702000041000000000012041b00000000002004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000003011000290000000602000029000000000021041b000004f701000041000000000101041a000300000001001d0000000000200435000004f601000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000302000029000000000021041b00000d2e0000013d000b00000000001d00000dad0000013d0000000b02000029000b00010020003d0000000a0100002900000000010104330000000b0110006b000003850000813d0000000b01000029000000050110021000000009011000290000000001010433000004e301100197000c00000001001d0000000000100435000004f801000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff0110019000000de30000c13d0000000c010000290000000000100435000004f801000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004f104000041000004ed050000410000000c060000290000000007000411137e13740000040f0000000101200190000008770000613d0000000c010000290000000000100435000004f901000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000da70000c13d000004fa01000041000000000101041a000600000001001d000004e40110009c0000005c0000213d00000006010000290000000101100039000004fa02000041000000000012041b00000000002004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b00000006011000290000000c02000029000000000021041b000004fa01000041000000000101041a000600000001001d0000000000200435000004f901000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000602000029000000000021041b00000da70000013d000b00000000001d00000e290000013d000000000101043b0000000a02000029000000000021041b0000000b02000029000b00010020003d000000080100002900000000010104330000000b0110006b000003890000813d0000000b01000029000000050110021000000007011000290000000001010433000004e301100197000c00000001001d0000000000100435000004fb01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff0110019000000e5f0000c13d0000000c010000290000000000100435000004fb01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004f104000041000004ee050000410000000c060000290000000007000411137e13740000040f0000000101200190000008770000613d0000000c010000290000000000100435000004fc01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000e230000c13d000004fd01000041000000000101041a000a00000001001d000004e40110009c0000005c0000213d0000000a010000290000000101100039000004fd02000041000000000012041b00000000002004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000a011000290000000c02000029000000000021041b000004fd01000041000000000101041a000a00000001001d0000000000200435000004fc01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f000000010220019000000e200000c13d000008770000013d000b00000000001d00000ea20000013d000000000101043b0000000a02000029000000000021041b0000000b02000029000b00010020003d000000040100002900000000010104330000000b0110006b0000038d0000813d0000000b01000029000000050110021000000002011000290000000001010433000004e301100197000c00000001001d0000000000100435000004fe01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000ff0110019000000ed80000c13d0000000c010000290000000000100435000004fe01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000201041a0000056a0220019700000001022001bf000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d020000390000000403000039000004f104000041000004ef050000410000000c060000290000000007000411137e13740000040f0000000101200190000008770000613d0000000c010000290000000000100435000004ff01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b000000000101041a000000000101004b00000e9c0000c13d0000050001000041000000000101041a000a00000001001d000004e40110009c0000005c0000213d0000000a0100002900000001011000390000050002000041000000000012041b00000000002004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000008770000613d000000000101043b0000000a011000290000000c02000029000000000021041b0000050001000041000000000101041a000a00000001001d0000000000200435000004ff01000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f000000010220019000000e990000c13d000008770000013d0000001f022000390000056b022001970000000001120019000000000221004b00000000020000190000000102004039000004e40310009c00000f1c0000213d000000010220019000000f1c0000c13d000000400010043f000000000001042d0000055b0100004100000000001004350000004101000039000000040010043f0000055c0100004100001380000104300000001f03100039000000000423004b0000000004000019000004e504004041000004e505200197000004e503300197000000000653013f000000000353004b0000000003000019000004e503002041000004e50560009c000000000304c019000000000303004b00000f6b0000613d0000000205000367000000000315034f000000000303043b0000056c0430009c00000f650000813d0000001f043000390000056b044001970000003f044000390000056b06400197000000400400043d0000000006640019000000000746004b00000000070000190000000107004039000004e40860009c00000f650000213d000000010770019000000f650000c13d000000400060043f000000000434043600000020011000390000000006310019000000000226004b00000f6b0000213d000000000215034f0000001f0130018f0000000505300272000000050550021000000f540000613d0000000006540019000000000702034f0000000008040019000000007907043c0000000008980436000000000968004b00000f500000c13d000000000601004b00000f620000613d000000000252034f00000000055400190000000301100210000000000605043300000000061601cf000000000616022f000000000202043b0000010001100089000000000212022f00000000011201cf000000000161019f000000000015043500000000013400190000000000010435000000000001042d0000055b0100004100000000001004350000004101000039000000040010043f0000055c010000410000138000010430000000000100001900001380000104300000056d0210009c00000f890000213d000000630210008c00000f890000a13d00000002040003670000000402400370000000000302043b000004e40230009c00000f890000213d0000002302300039000000000212004b00000f890000813d0000000402300039000000000224034f000000000202043b000004e40520009c00000f890000213d000000240530003900000005032002100000000003530019000000000113004b00000f890000213d0000002401400370000000000301043b0000004401400370000000000401043b0000000001050019000000000001042d00000000010000190000138000010430000000000403004b00000f950000613d000000000400001900000000052400190000000006140019000000000606043300000000006504350000002004400039000000000534004b00000f8e0000413d00000000012300190000000000010435000000000001042d0005000000000002000004e301100197000500000001001d0000000000100435000004f001000041000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f000000010220019000000fac0000613d000000000101043b000000000101041a000000ff0110019000000fae0000613d000000000001042d00000000010000190000138000010430000000400200043d0000056e0120009c00000fb70000413d0000055b0100004100000000001004350000004101000039000000040010043f0000055c0100004100001380000104300000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b00000fbf0000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000050800002900000000060800190000000007020433000000000747004b000010470000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c00000fce0000213d000000100460008c0000104d0000813d000000400400043d000500000004001d000005410440009c00000fb10000213d00000005060000290000008004600039000000400040043f00000042050000390000000005560436000400000005001d000000003603043c0000000005650436000000000645004b00000feb0000c13d000000040a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000509000029000000210390003900000000040304330000053c044001970000053e044001c70000000000430435000004e706000041000000410300003900000000050600190000000006090433000000000636004b000010470000a13d0000000306500210000000780660018f0000053f0660021f0000000007a3001900000000080704330000053c088001970000054006600197000000000686019f00000000006704350000000406500270000000010330008a000000010730008c00000ffc0000213d000000100350008c0000104d0000813d000000400500043d000300000005001d0000002004500039000100000004001d000005420300004100000000003404350000000003020433000200000003001d0000003702500039137e0f8b0000040f00000002020000290000000301200029000000370210003900000543030000410000000000320435000000480210003900000005010000290000000003010433000500000003001d0000000401000029137e0f8b0000040f000000050200002900000002032000290000002802300039000000030100002900000000002104350000004802300039137e0f100000040f0000053901000041000000400400043d000500000004001d000000000014043500000020010000390000000402400039000000000012043500000003010000290000000003010433000400000003001d0000002401400039000000000031043500000044024000390000000101000029137e0f8b0000040f00000004010000290000001f011000390000056b011001970000004401100039000004e10210009c000004e1010080410000000503000029000004e10230009c000004e10300804100000060011002100000004002300210000000000121019f00001380000104300000055b0100004100000000001004350000003201000039000000040010043f0000055c010000410000138000010430000000400100043d0000004402100039000005650300004100000000003204350000053902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000004e10210009c000004e101008041000000400110021000000550011001c700001380000104300005000000000002000500000002001d000400000001001d0000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f00000001022001900000107f0000613d000000000101043b0000000502000029000004e302200197000500000002001d0000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f00000001022001900000107f0000613d000000000101043b000000000101041a000000ff01100190000010810000613d000000000001042d00000000010000190000138000010430000000400200043d0000056e0120009c0000108a0000413d0000055b0100004100000000001004350000004101000039000000040010043f0000055c0100004100001380000104300000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000010920000c13d00000000040104330000053c044001970000053d044001c70000000000410435000000210420003900000000050404330000053c055001970000053e055001c700000000005404350000002904000039000000050800002900000000060800190000000007020433000000000747004b0000111a0000a13d0000000307600210000000780770018f0000053f0770021f000000000814001900000000090804330000053c099001970000054007700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c000010a10000213d000000100460008c000011200000813d000000400400043d000500000004001d000005410440009c000010840000213d00000005060000290000008004600039000000400040043f00000042050000390000000005560436000300000005001d000000003603043c0000000005650436000000000645004b000010be0000c13d000000030a00002900000000030a04330000053c033001970000053d033001c700000000003a04350000000509000029000000210390003900000000040304330000053c044001970000053e044001c700000000004304350000004103000039000000040700002900000000050700190000000006090433000000000636004b0000111a0000a13d0000000306500210000000780660018f0000053f0660021f0000000007a3001900000000080704330000053c088001970000054006600197000000000686019f00000000006704350000000407500270000000010330008a000000010630008c000010cf0000213d000000100350008c000011200000813d000000400500043d000400000005001d0000002004500039000100000004001d000005420300004100000000003404350000000003020433000200000003001d0000003702500039137e0f8b0000040f00000002020000290000000401200029000000370210003900000543030000410000000000320435000000480210003900000005010000290000000003010433000500000003001d0000000301000029137e0f8b0000040f000000050200002900000002032000290000002802300039000000040100002900000000002104350000004802300039137e0f100000040f0000053901000041000000400400043d000500000004001d000000000014043500000020010000390000000402400039000000000012043500000004010000290000000003010433000400000003001d0000002401400039000000000031043500000044024000390000000101000029137e0f8b0000040f00000004010000290000001f011000390000056b011001970000004401100039000004e10210009c000004e1010080410000000503000029000004e10230009c000004e10300804100000060011002100000004002300210000000000121019f00001380000104300000055b0100004100000000001004350000003201000039000000040010043f0000055c010000410000138000010430000000400100043d0000004402100039000005650300004100000000003204350000053902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000004e10210009c000004e101008041000000400110021000000550011001c700001380000104300006000000000002000600000002001d000500000001001d0000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b0000000602000029000004e302200197000600000002001d0000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b000000000101041a000000ff011001900000117c0000613d00000005010000290000000000100435000000200000043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b00000006020000290000000000200435000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b000000000201041a0000056a02200197000000000021041b0000000001000414000004e10210009c000004e101008041000000c001100210000004e9011001c70000800d02000039000000040300003900000000070004110000056f0400004100000005050000290000000606000029137e13740000040f0000000101200190000011ff0000613d000000050100002900000000001004350000000101000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000201043b00000006010000290000000000100435000500000002001d0000000101200039000300000001001d000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d0000000503000029000000000101043b000000000201041a000000000102004b000011fe0000613d000000000403041a000000000104004b000012010000613d000000000124004b000400000002001d000011de0000613d000200000004001d00000000003004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d00000004020000290001000100200092000000000101043b0000000504000029000000000204041a000000010220006c00000000030400190000000202000029000012070000a13d000000010220008a0000000001120019000000000101041a000200000001001d00000000003004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b00000001011000290000000202000029000000000021041b00000000002004350000000301000029000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b0000000402000029000000000021041b0000000503000029000000000103041a000400000001001d000000000101004b0000120d0000613d00000000003004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d0000000402000029000000010220008a000000000101043b0000000001210019000000000001041b0000000501000029000000000021041b000000060100002900000000001004350000000301000029000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000011ff0000613d000000000101043b000000000001041b000000000001042d000000000100001900001380000104300000055b0100004100000000001004350000001101000039000000040010043f0000055c0100004100001380000104300000055b0100004100000000001004350000003201000039000000040010043f0000055c0100004100001380000104300000055b0100004100000000001004350000003101000039000000040010043f0000055c0100004100001380000104300001000000000002000000000301041a000100000002001d000000000223004b000012260000a13d00000000001004350000000001000414000004e10210009c000004e101008041000000c001100210000004f4011001c70000801002000039137e13790000040f00000001022001900000122c0000613d000000000101043b00000001011000290000000002000019000000000001042d0000055b0100004100000000001004350000003201000039000000040010043f0000055c0100004100001380000104300000000001000019000013800001043000000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000012400000613d000000000101043b000000000101041a000000000101004b0000000001000019000000010100c039000000000001042d0000000001000019000013800001043000000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f0000000102200190000012540000613d000000000101043b000000000101041a000000010110008c00000000010000190000000101002039000000000001042d00000000010000190000138000010430000100000000000200000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f00000001022001900000127a0000613d000000000101043b000000000201041a000000020120008c0000000001000019000012780000413d000100000002001d000005470100004100000000001004390000000001000414000004e10210009c000004e101008041000000c00110021000000548011001c70000800b02000039137e13790000040f00000001022001900000127c0000613d000000000101043b000000010110006b0000000001000019000000010100a039000000010110018f000000000001042d00000000010000190000138000010430000000000001042f00000000001004350000000201000039000000200010043f0000000001000414000004e10210009c000004e101008041000000c001100210000004ec011001c70000801002000039137e13790000040f00000001022001900000128f0000613d000000000101043b000000000101041a000000010110008c00000000010000190000000101006039000000000001042d000000000100001900001380000104300005000000000002000200000004001d000300000003001d000000400400043d0000008003400039000000000023043500000020034000390000006005000039000100000003001d0000000000530435000500000004001d000000a0094000390000000503200210000000000f390019000000000302004b000013140000613d000000000a00003100000000031a0049000000020b0003670000005f0c30008a000000000d000019000400000001001d000000000e010019000012b20000013d0000001f016000390000056b0110019700000000035600190000000000030435000000000f510019000000200ee00039000000010dd0003900000000012d004b000013140000813d0000000503f0006a000000a00330008a00000000093904360000000003eb034f000000000303043b000004e504300197000004e505c00197000000000654013f000000000454004b0000000004000019000004e5040020410000000005c3004b0000000005000019000004e505004041000004e50660009c000000000405c019000000000404004b0000133f0000613d000000040630002900000000036b034f000000000303043b000004e30430009c0000133f0000213d00000000033f0436000000200460003900000000044b034f000000000404043b000000000043043500000000046a0049000000400360003900000000033b034f000000000303043b0000001f0440008a000004e505400197000004e507300197000000000857013f000000000557004b0000000005000019000004e505004041000000000443004b0000000004000019000004e504008041000004e50780009c000000000504c019000000000405004b0000133f0000c13d000000000363001900000000043b034f000000000604043b000004e40460009c0000133f0000213d000000200330003900000000046a0049000000000543004b0000000005000019000004e505002041000004e504400197000004e507300197000000000847013f000000000447004b0000000004000019000004e504004041000004e50780009c000000000405c019000000000404004b0000133f0000c13d0000004004f00039000000600100003900000000001404350000006004f00039000000000064043500000000083b034f0000008005f0003900000005036002720000000504300210000013050000613d0000000007450019000000000308034f000000000f050019000000003103043c000000000f1f043600000000017f004b000013010000c13d0000001f03600190000012a90000613d000000000148034f00000000044500190000000303300210000000000704043300000000073701cf000000000737022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000171019f0000000000140435000012a90000013d000000050100002900000060021000390000000203000029000000000032043500000040021000390000000303000029000000000032043500000000021f0049000000200320008a00000000003104350000001f022000390000056b032001970000000002130019000000000332004b00000000030000190000000103004039000004e40420009c000013410000213d0000000103300190000013410000c13d000000400020043f0000000101000029000004e10210009c000004e101008041000000400210021000000005010000290000000001010433000004e10310009c000004e1010080410000006001100210000000000121019f0000000002000414000004e10320009c000004e102008041000000c002200210000000000112019f000004e9011001c70000801002000039137e13790000040f00000001022001900000133f0000613d000000000101043b000000000001042d000000000100001900001380000104300000055b0100004100000000001004350000004101000039000000040010043f0000055c010000410000138000010430000000000101004b0000134a0000613d000000000001042d000000400100043d00000064021000390000055803000041000000000032043500000044021000390000055903000041000000000032043500000024021000390000002403000039000000000032043500000539020000410000000000210435000000040210003900000020030000390000000000320435000004e10210009c000004e10100804100000040011002100000053a011001c70000138000010430000000000001042f000004e10310009c000004e1010080410000004001100210000004e10320009c000004e1020080410000006002200210000000000112019f0000000002000414000004e10320009c000004e102008041000000c002200210000000000112019f000004e9011001c70000801002000039137e13790000040f0000000102200190000013720000613d000000000101043b000000000001042d0000000001000019000013800001043000001377002104210000000102000039000000000001042d0000000002000019000000000001042d0000137c002104230000000102000039000000000001042d0000000002000019000000000001042d0000137e000004320000137f0001042e000013800001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffff80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217757d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ed0200000000000000000000000000000000000000000000000000000000000000bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ffb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc10200000000000000000000000000000000000040000000000000000000000000d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a1b2b8005de234c4b8ce8cd0be058239056e0d54f6097825b5117101469d5a8d7d7ffb7a348e1c6a02869081a26547b49160dd3df72d1d75a570eb9b698292ec2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d50efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d3769550efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d3769402000000000000000000000000000000000000200000000000000000000000003412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d5ab0abe0ac784c8cb7ff2dde6fca8a20d1ab21f792e5ef34b43f146db4890393dab0abe0ac784c8cb7ff2dde6fca8a20d1ab21f792e5ef34b43f146db4890393cdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d7069c9ee83ecf8e561e5df8e9e3a8d108a689296832fb5d541ca3c450b10eaabf8e2c9ee83ecf8e561e5df8e9e3a8d108a689296832fb5d541ca3c450b10eaabf8e1c3ad33e20b0c56a223ad5104fff154aa010f8715b9c981fd38fdc60a4d1a52fb9f3cf6249db4bdba3b4c96ee22e2a8165fec12031dbe374a7742b8c187bf9af79f3cf6249db4bdba3b4c96ee22e2a8165fec12031dbe374a7742b8c187bf9af6456af410789f6a12c9f930f9980435c304203317128aeb60214fe9a70f64b0a2c9444cebab51d9630ba69cf49037d1ba8f1d323ffc946e34e2b463dd3c4b3c0dc9444cebab51d9630ba69cf49037d1ba8f1d323ffc946e34e2b463dd3c4b3c0c11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d500000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000064d6235200000000000000000000000000000000000000000000000000000000a944142c00000000000000000000000000000000000000000000000000000000ca15c87200000000000000000000000000000000000000000000000000000000d547741e00000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000f23a6e6100000000000000000000000000000000000000000000000000000000f27a0c9200000000000000000000000000000000000000000000000000000000ca15c87300000000000000000000000000000000000000000000000000000000d45c443500000000000000000000000000000000000000000000000000000000bc197c8000000000000000000000000000000000000000000000000000000000bc197c8100000000000000000000000000000000000000000000000000000000c4d252f500000000000000000000000000000000000000000000000000000000a944142d00000000000000000000000000000000000000000000000000000000b08e51c0000000000000000000000000000000000000000000000000000000009010d07b000000000000000000000000000000000000000000000000000000009f5a23f6000000000000000000000000000000000000000000000000000000009f5a23f700000000000000000000000000000000000000000000000000000000a217fddf000000000000000000000000000000000000000000000000000000009010d07c0000000000000000000000000000000000000000000000000000000091d148540000000000000000000000000000000000000000000000000000000075b238fb0000000000000000000000000000000000000000000000000000000075b238fc000000000000000000000000000000000000000000000000000000008f61f4f50000000000000000000000000000000000000000000000000000000064d62353000000000000000000000000000000000000000000000000000000006ceef4800000000000000000000000000000000000000000000000000000000026bb2ec40000000000000000000000000000000000000000000000000000000036568abd00000000000000000000000000000000000000000000000000000000515a3db200000000000000000000000000000000000000000000000000000000515a3db300000000000000000000000000000000000000000000000000000000584b153e0000000000000000000000000000000000000000000000000000000036568abe000000000000000000000000000000000000000000000000000000003a98b4e4000000000000000000000000000000000000000000000000000000002f2ff15c000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000031d507500000000000000000000000000000000000000000000000000000000026bb2ec5000000000000000000000000000000000000000000000000000000002ab0f5290000000000000000000000000000000000000000000000000000000013bc9f1f00000000000000000000000000000000000000000000000000000000191cb7b200000000000000000000000000000000000000000000000000000000191cb7b300000000000000000000000000000000000000000000000000000000248a9ca30000000000000000000000000000000000000000000000000000000013bc9f2000000000000000000000000000000000000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000007bd02640000000000000000000000000000000000000000000000000000000007bd0265000000000000000000000000000000000000000000000000000000000db866b10000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000003e561550000000000000000000000000000000000000020000000800000000000000000f23a6e61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000baa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70652063616e63656c6c65640000000000000000000000000000000000000000005242414354696d656c6f636b3a206f7065726174696f6e2063616e6e6f74206208c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000030313233343536373839616263646566000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000206973206d697373696e6720726f6c6520000000000000000000000000000000bc197c81000000000000000000000000000000000000000000000000000000007363686564756c656400000000000000000000000000000000000000000000005242414354696d656c6f636b3a206f7065726174696f6e20616c726561647920796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000ffffffff0000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005242414354696d656c6f636b3a2073656c6563746f7220697320626c6f636b6500000000000000000000000000000000000000000000000000000000ffffff1f02000000000000000000000000000000000000e00000000000000000000000004f4da6666f52e3b6dbc3638d8eae4017722678fe58bca79cd8320817807a65be5242414354696d656c6f636b3a20696e73756666696369656e742064656c6179000000000000000000000000000000000000006400000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b15b40cf8ed4c95cd3c0e1dedfdb3987c3f9bf3d3770d13ddf6dc4daa5ffae9ef5242414354696d656c6f636b3a206d697373696e6720646570656e64656e637900000000000000000000000000000000000000000000000000000000ffffff7f0200000000000000000000000000000000000080000000000000000000000000c2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5865616479000000000000000000000000000000000000000000000000000000005242414354696d656c6f636b3a206f7065726174696f6e206973206e6f7420728a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19a4e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000d91859a8d88193a56a2983deb65a5253985141c49c70bf016880b5243bd432e1416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6600000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000150b7a020000000000000000000000000000000000000000000000000000000074696f6e207265766572746564000000000000000000000000000000000000005242414354696d656c6f636b3a20756e6465726c79696e67207472616e7361636b983f337bab73dfe37faca733adf3ea35b45b8b144ec8ee2de3a1b224564b0c537472696e67733a20686578206c656e67746820696e73756666696369656e745a05180f000000000000000000000000000000000000000000000000000000004e2312e00000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000007965db0b00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffa0f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171bf90db05d9fa6663d24ea359887f72f2b4deab47ab255f5a3cdbfbf858a420346")