From b33d6d8d4d9b06de971d64473c855082e76b0e95 Mon Sep 17 00:00:00 2001 From: yoanslvy <97676023+yoanslvy@users.noreply.github.com> Date: Tue, 29 Oct 2024 09:29:08 +0100 Subject: [PATCH 1/6] feat: update to rhinestone audited contracts --- .../accounts/safe/toSafeSmartAccount.ts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/packages/permissionless/accounts/safe/toSafeSmartAccount.ts b/packages/permissionless/accounts/safe/toSafeSmartAccount.ts index dc632d4b..03690096 100644 --- a/packages/permissionless/accounts/safe/toSafeSmartAccount.ts +++ b/packages/permissionless/accounts/safe/toSafeSmartAccount.ts @@ -1439,12 +1439,9 @@ export async function toSafeSmartAccount< entryPoint: entryPoint.address } - let isDeployed = false - if ("initCode" in userOperation) { message.paymasterAndData = userOperation.paymasterAndData ?? "0x" - isDeployed = userOperation.initCode === "0x" } if ("factory" in userOperation) { @@ -1458,14 +1455,6 @@ export async function toSafeSmartAccount< ...userOperation, sender: userOperation.sender ?? (await this.getAddress()) }) - isDeployed = !userOperation.factory - } - - let verifyingContract = safe4337ModuleAddress - - if (erc7579LaunchpadAddress && !isDeployed) { - verifyingContract = - userOperation.sender ?? (await this.getAddress()) } const signatures = [ @@ -1475,7 +1464,7 @@ export async function toSafeSmartAccount< account: localOwner, domain: { chainId, - verifyingContract + verifyingContract: safe4337ModuleAddress }, types: entryPoint.version === "0.6" From 7ea3a59e93f670810464349beda9a5844cbd456d Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Tue, 29 Oct 2024 12:15:36 +0000 Subject: [PATCH 2/6] Update safe 7579 tests --- .../mock-aa-infra/alto/constants.ts | 4 +-- .../mock-aa-infra/alto/index.ts | 28 +++++++++---------- packages/permissionless-test/src/utils.ts | 12 ++++++-- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/packages/permissionless-test/mock-aa-infra/alto/constants.ts b/packages/permissionless-test/mock-aa-infra/alto/constants.ts index 88ac79e7..f0aa689c 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/constants.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/constants.ts @@ -52,13 +52,13 @@ export const SAFE_MULTI_SEND_CALL_ONLY_CREATECALL: Hex = "0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061019a806100206000396000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100dc6004803603602081101561003957600080fd5b810190808035906020019064010000000081111561005657600080fd5b82018360208201111561006857600080fd5b8035906020019184600183028401116401000000008311171561008a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100de565b005b805160205b8181101561015f578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461012857600181146101385761013d565b6000808585888a5af1915061013d565b600080fd5b50600081141561014c57600080fd5b82605501870196505050505050506100e3565b50505056fea26469706673582212208d297bb003abee230b5dfb38774688f37a6fbb97a82a21728e8049b2acb9b73564736f6c63430007060033" export const SAFE_7579_LAUNCHPAD_CREATECALL = - "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561001057600080fd5b50604051612bc8380380612bc883398101604081905261002f91610089565b6001600160a01b03821661005657604051632039d3c960e01b815260040160405180910390fd5b306080526001600160a01b0391821660a0521660c0526100c3565b6001600160a01b038116811461008657600080fd5b50565b6000806040838503121561009c57600080fd5b82516100a781610071565b60208401519092506100b881610071565b809150509250929050565b60805160a05160c051612a9f6101296000396000818161014e015281816104470152610d2401526000818161019f0152818161057501528181610e05015261113c01526000818160eb015281816105200152818161094f0152610e6e0152612a9f6000f3fe6080604052600436106100e15760003560e01c8063928107f91161007f578063d78343d911610059578063d78343d9146102ff578063d9ed0e8f1461031f578063f2dc691d1461033f578063f698da251461035f57600080fd5b8063928107f9146102715780639cfd7cff14610291578063d03c7914146102cf57600080fd5b806319822f7c116100bb57806319822f7c146101e15780633c9de1b81461020f5780634fff40e114610231578063663c87d81461025157600080fd5b806306433b1b1461013c578063137e051e1461018d57806315cca638146101c157600080fd5b36610137576000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610135576040516308e3edd160e41b815260040160405180910390fd5b005b600080fd5b34801561014857600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561019957600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b3480156101cd57600080fd5b506101356101dc366004611a57565b610374565b3480156101ed57600080fd5b506102016101fc366004611b4b565b61051a565b604051908152602001610184565b34801561021b57600080fd5b50600080516020612a4a83398151915254610201565b34801561023d57600080fd5b5061013561024c366004611b9e565b61094a565b34801561025d57600080fd5b5061017061026c366004611d28565b610a7a565b34801561027d57600080fd5b5061020161028c366004611f2d565b610b54565b34801561029d57600080fd5b50604080518082018252600f81526e073616665373537392e76312e302e3608c1b6020820152905161018491906120ab565b3480156102db57600080fd5b506102ef6102ea3660046120c5565b610ba6565b6040519015158152602001610184565b34801561030b57600080fd5b5061013561031a3660046120de565b610c4e565b34801561032b57600080fd5b5061013561033a36600461220a565b610dfa565b34801561034b57600080fd5b506102ef61035a3660046120c5565b611082565b34801561036b57600080fd5b506102016110d1565b33301461039457604051630a57d61d60e01b815260040160405180910390fd5b60405163610b592560e01b81526001600160a01b038b166004820152309063610b592590602401600060405180830381600087803b1580156103d557600080fd5b505af11580156103e9573d6000803e3d6000fd5b50506040805160008082526020820190925230935063540fb4f9925090610433565b60408051808201909152600081526060602082015281526020019060019003908161040b5790505b508b8b8b8b8b8b60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018d8d8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8c166020909101526040516001600160e01b031960e08b901b1681526104dc989796959493929190600401612445565b600060405180830381600087803b1580156104f657600080fd5b505af115801561050a573d6000803e3d6000fd5b5050505050505050505050505050565b600080547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161461056a576040516308e3edd160e41b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105b357604051632039d3c960e01b815260040160405180910390fd5b6105c060608501856124b8565b6105cf916004916000916124fe565b6105d891612528565b6001600160e01b03191663d9ed0e8f60e01b146106085760405163c3d40f7760e01b815260040160405180910390fd5b600061061760608601866124b8565b6106259160049082906124fe565b8101906106329190611f2d565b905061064a600080516020612a4a8339815191525490565b61065382610b54565b146106715760405163278328b160e21b815260040160405180910390fd5b600080866020013590508060601c915060008360a001516001600160a01b03168460c001516040516024016106a69190612560565b60408051601f19818403018152918152602080830180516001600160e01b0316633cd56b0760e11b17905290516106e09291339101612573565b60408051601f19818403018152908290526106fa916125a5565b6000604051808303816000865af19150503d8060008114610737576040519150601f19603f3d011682016040523d82523d6000602084013e61073c565b606091505b505090508061075e5760405163c3d40f7760e01b815260040160405180910390fd5b60c084015151600090815b818110156108805760008760c001518281518110610789576107896125c1565b6020026020010151600001519050806001600160a01b0316636d61fe708960c0015184815181106107bc576107bc6125c1565b6020026020010151602001516040518263ffffffff1660e01b81526004016107e491906120ab565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b505060408051600181526001600160a01b03851660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905060405180910390a1866001600160a01b0316816001600160a01b03160361087757600193505b50600101610769565b5081156108ff57604051639700320360e01b81526001600160a01b038616906397003203906108b5908d908d906004016125d7565b6020604051808303816000875af11580156108d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f891906126db565b965061092b565b60008060006109138960a001518d8f61112a565b925092509250610925831582846112a9565b99505050505b871561093d576000806000808b335af1505b5050505050509392505050565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610999576040516308e3edd160e41b815260040160405180910390fd5b60006109b1600080516020612a4a8339815191525490565b146109cf5760405163d4d496e560e01b815260040160405180910390fd5b6109e584600080516020612a4a83398151915255565b6001600160a01b03831615610a74576000836001600160a01b03168383604051610a109291906126f4565b600060405180830381855af49150503d8060008114610a4b576040519150601f19603f3d011682016040523d82523d6000602084013e610a50565b606091505b5050905080610a7257604051631f57fed560e31b815260040160405180910390fd5b505b50505050565b6000818051906020012083604051602001610a9f929190918252602082015260400190565b60405160208183030381529060405280519060200120925060ff60f81b858486896001600160a01b0316604051602001610ada929190612704565b60405160208183030381529060405280519060200120604051602001610b3294939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b80516020808301516040808501516060860151608087015160a088015160c08901519451600098610b89989097969101612726565b604051602081830303815290604052805190602001209050919050565b600081600881901b610bbc82600160f81b6112e1565b15610bca5760019250610c0d565b610bd58260006112e1565b15610be35760019250610c0d565b610bf5826001600160f81b03196112e1565b15610c035760019250610c0d565b5060009392505050565b828015610c205750610c208160006112e1565b15610c2c575050919050565b828015610c425750610c4281600160f81b6112e1565b15610c03575050919050565b60405163610b592560e01b81526001600160a01b038d166004820152309063610b592590602401600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505060405163f08a032360e01b81526001600160a01b038f16600482015230925063f08a03239150602401600060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50505050306001600160a01b031663540fb4f98c8c8c8c8c8c8c8c60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8d166020909101526040516001600160e01b031960e08c901b168152610dba999897969594939291906004016127a3565b600060405180830381600087803b158015610dd457600080fd5b505af1158015610de8573d6000803e3d6000fd5b50505050505050505050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e4357604051632039d3c960e01b815260040160405180910390fd5b610e506020820182612818565b600080546001600160a01b0319166001600160a01b039283161790557f000000000000000000000000000000000000000000000000000000000000000016610e9e6080830160608401612818565b6001600160a01b031614610ec557604051633007073760e01b815260040160405180910390fd5b6302b994c760e31b610eda60808301836124b8565b610ee9916004916000916124fe565b610ef291612528565b6001600160e01b03191614610f1a57604051633007073760e01b815260040160405180910390fd5b3063b63e800d610f2d6020840184612835565b6040850135610f426080870160608801612818565b610f4f60808801886124b8565b610f5f60c08a0160a08b01612818565b60008060006040518b63ffffffff1660e01b8152600401610f899a9998979695949392919061287e565b600060405180830381600087803b158015610fa357600080fd5b505af1158015610fb7573d6000803e3d6000fd5b50506000600080516020612a4a8339815191525550610fd39050565b600080610fe660c0840160a08501612818565b6001600160a01b0316610ffc60e08501856124b8565b3060405160200161100f93929190612935565b60408051601f1981840301815290829052611029916125a5565b6000604051808303816000865af19150503d8060008114611066576040519150601f19603f3d011682016040523d82523d6000602084013e61106b565b606091505b50915091508161107d57805160208201fd5b505050565b60006001820361109457506001919050565b600282036110a457506001919050565b600382036110b457506001919050565b600482036110c457506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b600080600080600080366000611160897f00000000000000000000000000000000000000000000000000000000000000006112f8565b8451602086012094995092975090955093509150600061118360608c018c6124b8565b6111919160049082906124fe565b81019061119e9190611f2d565b905060006111e885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060408501518692915061152b565b90506111f38161181a565b60208201516112018161181a565b61120a81611826565b80516000805b8281101561128b57600061124685838151811061122f5761122f6125c1565b60200260200101518761182f90919063ffffffff16565b509050801561128257826112598161296c565b93505086604001518310611282575060019e50999c50979a506112a09950505050505050505050565b50600101611210565b5060009d50989b509699505050505050505050505b93509350939050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b856112d15760006112d4565b60015b60ff161717949350505050565b6001600160f81b0319828116908216145b92915050565b60606000803681818161130f6101008a018a6124b8565b90925090506113226006600083856124fe565b61132b91612985565b60d01c955061133e600c600683856124fe565b61134791612985565b60d01c945061135981600c81856124fe565b9350935050506000604051806101c001604052807fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f60001b81526020018960000160208101906113a99190612818565b6001600160a01b03168152602001896020013581526020018980604001906113d191906124b8565b6040516113df9291906126f4565b60405190819003902081526020016113fa60608b018b6124b8565b6040516114089291906126f4565b6040518091039020815260200161141e8a611852565b6001600160801b031681526020016114358a611862565b6001600160801b031681526020018960a0013581526020016114568a611877565b6001600160801b0316815260200161146d8a611886565b6001600160801b0316815260200161148860e08b018b6124b8565b6040516114969291906126f4565b6040805191829003909120825265ffffffffffff80891660208401528716908201526001600160a01b0389166060909101526101c08120909150601960f81b600160f81b6114e26110d1565b6040516001600160f81b03199384166020820152929091166021830152602282015260428101829052606201604051602081830303815290604052965050509295509295909350565b6060600061153a8360416129bb565b8451909150836001600160401b0381111561155757611557611c28565b604051908082528060200260200182016040528015611580578160200160208202803683370190505b509250818110156115a457604051638baa579f60e01b815260040160405180910390fd5b60005b84811015611810576000806000806115d78a86604102016020810151604082015160609092015160001a92909190565b9250925092508260ff1660000361176f5790925082906041811015611625576040516338a245ff60e11b81526004810182905260006024820181905260448201526064015b60405180910390fd5b856116318260206129d2565b1115611661576040516338a245ff60e11b815260048101829052600060248201526044810187905260640161161c565b6020818b0181015190879082906116799085906129d2565b61168391906129d2565b11156116b3576040516338a245ff60e11b815260048101839052602481018290526044810188905260640161161c565b60606020838d01019050631626ba7e60e01b6001600160e01b031916866001600160a01b0316631626ba7e8f846040518363ffffffff1660e01b81526004016116fd9291906129e5565b602060405180830381865afa15801561171a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173e9190612a06565b6001600160e01b03191614611768578060405163605d348960e01b815260040161161c91906120ab565b50506117d5565b601e8360ff1611156117c6576117bf6117ad8c6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b6117b8600486612a30565b848461189b565b93506117d5565b6117d28b84848461189b565b93505b838886815181106117e8576117e86125c1565b6001600160a01b03909216602092830291909101909101525050600190920191506115a79050565b5050509392505050565b611823816118d9565b50565b6118238161192e565b60008061184784846001600160a01b03166000611977565b909590945092505050565b60006112f2826080013560801c90565b60006001600160801b036080830135166112f2565b600060c082013560801c6112f2565b60006001600160801b0360c0830135166112f2565b60006040518560005260ff85166020528360405282606052602060406080600060015afa5060006060523d6060185191508060405250949350505050565b8051600082528060051b82016020601f198185015b8201838111611926578051828201805182811161190d575050506118ee565b5b818601528301805182811161190e57508401526118ee565b505050915250565b6002815110611823576020810160408201600183510160051b83015b815183511461195e57602083019250815183525b60208201915080820361194a57505081900360051c9052565b60008060001960018651600087870197505b81830160011c94508460051b89015187019050878114828411176119c3578088116119b8578385019150611989565b600185019250611989565b84151597148716989290930190950295509350505050565b6001600160a01b038116811461182357600080fd5b80356110cc816119db565b60008083601f840112611a0d57600080fd5b5081356001600160401b03811115611a2457600080fd5b6020830191508360208260051b8501011115611a3f57600080fd5b9250929050565b803560ff811681146110cc57600080fd5b60008060008060008060008060008060c08b8d031215611a7657600080fd5b611a7f8b6119f0565b995060208b01356001600160401b03811115611a9a57600080fd5b611aa68d828e016119fb565b909a5098505060408b01356001600160401b03811115611ac557600080fd5b611ad18d828e016119fb565b90985096505060608b01356001600160401b03811115611af057600080fd5b611afc8d828e016119fb565b90965094505060808b01356001600160401b03811115611b1b57600080fd5b611b278d828e016119fb565b9094509250611b3a905060a08c01611a46565b90509295989b9194979a5092959850565b600080600060608486031215611b6057600080fd5b83356001600160401b03811115611b7657600080fd5b84016101208187031215611b8957600080fd5b95602085013595506040909401359392505050565b60008060008060608587031215611bb457600080fd5b843593506020850135611bc6816119db565b925060408501356001600160401b03811115611be157600080fd5b8501601f81018713611bf257600080fd5b80356001600160401b03811115611c0857600080fd5b876020828401011115611c1a57600080fd5b949793965060200194505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611c6057611c60611c28565b60405290565b60405161010081016001600160401b0381118282101715611c6057611c60611c28565b604051601f8201601f191681016001600160401b0381118282101715611cb157611cb1611c28565b604052919050565b600082601f830112611cca57600080fd5b81356001600160401b03811115611ce357611ce3611c28565b611cf6601f8201601f1916602001611c89565b818152846020838601011115611d0b57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611d4057600080fd5b8535611d4b816119db565b94506020860135611d5b816119db565b935060408601356001600160401b03811115611d7657600080fd5b611d8288828901611cb9565b9350506060860135915060808601356001600160401b03811115611da557600080fd5b611db188828901611cb9565b9150509295509295909350565b60006001600160401b03821115611dd757611dd7611c28565b5060051b60200190565b600082601f830112611df257600080fd5b8135611e05611e0082611dbe565b611c89565b8082825260208201915060208360051b860101925085831115611e2757600080fd5b602085015b83811015611e4d578035611e3f816119db565b835260209283019201611e2c565b5095945050505050565b600082601f830112611e6857600080fd5b8135611e76611e0082611dbe565b8082825260208201915060208360051b860101925085831115611e9857600080fd5b602085015b83811015611e4d5780356001600160401b03811115611ebb57600080fd5b86016040818903601f19011215611ed157600080fd5b611ed9611c3e565b6020820135611ee7816119db565b815260408201356001600160401b03811115611f0257600080fd5b611f118a602083860101611cb9565b6020830152508085525050602083019250602081019050611e9d565b600060208284031215611f3f57600080fd5b81356001600160401b03811115611f5557600080fd5b82016101008185031215611f6857600080fd5b611f70611c66565b611f79826119f0565b815260208201356001600160401b03811115611f9457600080fd5b611fa086828501611de1565b60208301525060408281013590820152611fbc606083016119f0565b606082015260808201356001600160401b03811115611fda57600080fd5b611fe686828501611cb9565b608083015250611ff860a083016119f0565b60a082015260c08201356001600160401b0381111561201657600080fd5b61202286828501611e57565b60c08301525060e08201356001600160401b0381111561204157600080fd5b61204d86828501611cb9565b60e083015250949350505050565b60005b8381101561207657818101518382015260200161205e565b50506000910152565b6000815180845261209781602086016020860161205b565b601f01601f19169290920160200192915050565b6020815260006120be602083018461207f565b9392505050565b6000602082840312156120d757600080fd5b5035919050565b60008060008060008060008060008060008060e08d8f03121561210057600080fd5b6121098d6119f0565b9b506001600160401b0360208e0135111561212357600080fd5b6121338e60208f01358f016119fb565b909b5099506001600160401b0360408e0135111561215057600080fd5b6121608e60408f01358f016119fb565b90995097506001600160401b0360608e0135111561217d57600080fd5b61218d8e60608f01358f016119fb565b90975095506001600160401b0360808e013511156121aa57600080fd5b6121ba8e60808f01358f016119fb565b90955093506001600160401b0360a08e013511156121d757600080fd5b6121e78e60a08f01358f016119fb565b90935091506121f860c08e01611a46565b90509295989b509295989b509295989b565b60006020828403121561221c57600080fd5b81356001600160401b0381111561223257600080fd5b820161010081850312156120be57600080fd5b600082825180855260208501945060208160051b8301016020850160005b838110156122b557848303601f19018852815180516001600160a01b0316845260209081015160409185018290529061229e9085018261207f565b6020998a0199909450929092019150600101612263565b50909695505050505050565b6000808335601e198436030181126122d857600080fd5b83016020810192503590506001600160401b038111156122f757600080fd5b803603821315611a3f57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008383855260208501945060208460051b8201018360005b868110156122b557838303601f19018852813536879003603e1901811261236e57600080fd5b8601803561237b816119db565b6001600160a01b0316845261239360208201826122c1565b9150604060208601526123aa604086018383612306565b60209a8b019a90955093909301925050600101612348565b600081518084526020840193506020830160005b828110156123fd5781516001600160a01b03168652602095860195909101906001016123d6565b5093949350505050565b60018060a01b038151168252600060208201516060602085015261242e60608501826123c2565b60409384015160ff16949093019390935250919050565b60a08152600061245860a083018b612245565b828103602084015261246b818a8c61232f565b9050828103604084015261248081888a61232f565b9050828103606084015261249581868861232f565b905082810360808401526124a98185612407565b9b9a5050505050505050505050565b6000808335601e198436030181126124cf57600080fd5b8301803591506001600160401b038211156124e957600080fd5b602001915036819003821315611a3f57600080fd5b6000808585111561250e57600080fd5b8386111561251b57600080fd5b5050820193919092039150565b80356001600160e01b03198116906004841015612559576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6020815260006120be6020830184612245565b6000835161258581846020880161205b565b60609390931b6001600160601b0319169190920190815260140192915050565b600082516125b781846020870161205b565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b604081526125f8604082016125eb856119f0565b6001600160a01b03169052565b60208301356060820152600061261160408501856122c1565b610120608085015261262861016085018284612306565b91505061263860608601866122c1565b848303603f190160a086015261264f838284612306565b608088013560c08781019190915260a089013560e08089019190915290890135610100880152909350612687925087019050866122c1565b848303603f190161012086015261269f838284612306565b925050506126b16101008601866122c1565b848303603f19016101408601526126c9838284612306565b93505050508260208301529392505050565b6000602082840312156126ed57600080fd5b5051919050565b8183823760009101908152919050565b6000835161271681846020880161205b565b9190910191825250602001919050565b6001600160a01b038816815260e06020820181905260009061274a908301896123c2565b604083018890526001600160a01b03871660608401528281036080840152612772818761207f565b6001600160a01b03861660a085015283810360c085015290506127958185612245565b9a9950505050505050505050565b60a0815260006127b760a083018b8d61232f565b82810360208401526127ca818a8c61232f565b905082810360408401526127df81888a61232f565b905082810360608401526127f481868861232f565b905082810360808401526128088185612407565b9c9b505050505050505050505050565b60006020828403121561282a57600080fd5b81356120be816119db565b6000808335601e1984360301811261284c57600080fd5b8301803591506001600160401b0382111561286657600080fd5b6020019150600581901b3603821315611a3f57600080fd5b61010080825281018a905260008b6101208301825b8d8110156128c35782356128a6816119db565b6001600160a01b0316825260209283019290910190600101612893565b508b60208501526128df604085018c6001600160a01b03169052565b83810360608501526128f2818a8c612306565b9250505061290b60808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c08301526124a960e08301846001600160a01b03169052565b8284823760609190911b6001600160601b0319169101908152601401919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161297e5761297e612956565b5060010190565b80356001600160d01b03198116906006841015612559576001600160d01b031960069490940360031b84901b1690921692915050565b80820281158282048414176112f2576112f2612956565b808201808211156112f2576112f2612956565b8281526040602082015260006129fe604083018461207f565b949350505050565b600060208284031215612a1857600080fd5b81516001600160e01b0319811681146120be57600080fd5b60ff82811682821603908111156112f2576112f261295656fe982e06ee6a56dfc0f1ac189a5d23506361ca0a3ce45a9c7b8d33d65d43746a24a2646970667358221220b9f8a86409c3671f7b19131d085b34f0ba682783524a0bae7bea00939bae967d64736f6c634300081a00330000000000000000000000000000000071727de22e5e9d8baf0edac6f37da03200000000000000000000000025a4b2f363678e13a0a5db79b712de00347a593e" + "0x0000000000000000000000000000000000000000e5068a3f93a9e201a183295860e060405234801561001057600080fd5b50604051612d70380380612d7083398101604081905261002f91610089565b6001600160a01b03821661005657604051632039d3c960e01b815260040160405180910390fd5b306080526001600160a01b0391821660a0521660c0526100c3565b6001600160a01b038116811461008657600080fd5b50565b6000806040838503121561009c57600080fd5b82516100a781610071565b60208401519092506100b881610071565b809150509250929050565b60805160a05160c051612c4761012960003960008181610159015281816104900152610fc60152600081816101aa015281816105be015281816110a701526113ea01526000818160f6015281816105690152818161099301526111100152612c476000f3fe6080604052600436106100ec5760003560e01c8063663c87d81161008a578063d78343d911610059578063d78343d914610348578063d9ed0e8f14610368578063f2dc691d14610388578063f698da25146103a857600080fd5b8063663c87d81461028c578063928107f9146102ac5780639cfd7cff146102cc578063d03c79141461031857600080fd5b806319822f7c116100c657806319822f7c146101ec5780633c9de1b81461021a5780634fff40e11461023c57806355d559f41461025c57600080fd5b806306433b1b14610147578063137e051e1461019857806315cca638146101cc57600080fd5b36610142576000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610140576040516308e3edd160e41b815260040160405180910390fd5b005b600080fd5b34801561015357600080fd5b5061017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101a457600080fd5b5061017b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101d857600080fd5b506101406101e7366004611ab5565b6103bd565b3480156101f857600080fd5b5061020c610207366004611bb2565b610563565b60405190815260200161018f565b34801561022657600080fd5b50600080516020612bf28339815191525461020c565b34801561024857600080fd5b50610140610257366004611bff565b61098e565b34801561026857600080fd5b5061027c610277366004611c87565b610abe565b60405161018f9493929190611d28565b34801561029857600080fd5b5061017b6102a7366004611e7c565b610d1b565b3480156102b857600080fd5b5061020c6102c736600461206e565b610df5565b3480156102d857600080fd5b50604080518082018252601a81527f7268696e6573746f6e652e73616665373537392e76312e302e300000000000006020820152905161018f9190612184565b34801561032457600080fd5b5061033861033336600461219e565b610e47565b604051901515815260200161018f565b34801561035457600080fd5b506101406103633660046121b7565b610ef0565b34801561037457600080fd5b506101406103833660046122e3565b61109c565b34801561039457600080fd5b506103386103a336600461219e565b611324565b3480156103b457600080fd5b5061020c611373565b3330146103dd57604051630a57d61d60e01b815260040160405180910390fd5b60405163610b592560e01b81526001600160a01b038b166004820152309063610b592590602401600060405180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b50506040805160008082526020820190925230935063540fb4f992509061047c565b6040805180820190915260008152606060208201528152602001906001900390816104545790505b508b8b8b8b8b8b60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018d8d8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8c166020909101526040516001600160e01b031960e08b901b168152610525989796959493929190600401612520565b600060405180830381600087803b15801561053f57600080fd5b505af1158015610553573d6000803e3d6000fd5b5050505050505050505050505050565b600080547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146105b3576040516308e3edd160e41b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc57604051632039d3c960e01b815260040160405180910390fd5b6106096060850185612593565b610618916004916000916125d9565b61062191612603565b6001600160e01b03191663d9ed0e8f60e01b146106515760405163c3d40f7760e01b815260040160405180910390fd5b60006106606060860186612593565b61066e9160049082906125d9565b81019061067b919061206e565b9050610693600080516020612bf28339815191525490565b61069c82610df5565b146106ba5760405163278328b160e21b815260040160405180910390fd5b600080866020013590508060601c915060008360a001516001600160a01b03168460c001516040516024016106ef9190612633565b60408051601f19818403018152918152602080830180516001600160e01b0316633cd56b0760e11b17905290516107299291339101612646565b60408051601f198184030181529082905261074391612678565b6000604051808303816000865af19150503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b50509050806107a75760405163c3d40f7760e01b815260040160405180910390fd5b60c084015151600090815b818110156108c95760008760c0015182815181106107d2576107d2612694565b6020026020010151600001519050806001600160a01b0316636d61fe708960c00151848151811061080557610805612694565b6020026020010151602001516040518263ffffffff1660e01b815260040161082d9190612184565b600060405180830381600087803b15801561084757600080fd5b505af115801561085b573d6000803e3d6000fd5b505060408051600181526001600160a01b03851660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905060405180910390a1866001600160a01b0316816001600160a01b0316036108c057600193505b506001016107b2565b50811561094857604051639700320360e01b81526001600160a01b038616906397003203906108fe908d908d9060040161277e565b6020604051808303816000875af115801561091d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094191906127a0565b965061096f565b6000806000610957898e6113cc565b92509250925061096983158383611542565b99505050505b8715610981576000806000808b335af1505b5050505050509392505050565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146109dd576040516308e3edd160e41b815260040160405180910390fd5b60006109f5600080516020612bf28339815191525490565b14610a135760405163d4d496e560e01b815260040160405180910390fd5b610a2984600080516020612bf283398151915255565b6001600160a01b03831615610ab8576000836001600160a01b03168383604051610a549291906127b9565b600060405180830381855af49150503d8060008114610a8f576040519150601f19603f3d011682016040523d82523d6000602084013e610a94565b606091505b5050905080610ab657604051631f57fed560e31b815260040160405180910390fd5b505b50505050565b6060600080823682610ad4610100890189612593565b9092509050610ae76006600083856125d9565b610af0916127c9565b60d01c9450610b03600c600683856125d9565b610b0c916127c9565b60d01c9350610b1e81600c81856125d9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516101c081019091527fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f815294975095509293505060208084019250610b9a91508a018a6127f7565b6001600160a01b0316815260200188602001358152602001888060400190610bc29190612593565b604051610bd09291906127b9565b6040519081900390208152602001610beb60608a018a612593565b604051610bf99291906127b9565b60405180910390208152602001610c0f8961157a565b6001600160801b03168152602001610c2689611590565b6001600160801b031681526020018860a001358152602001610c47896115a5565b6001600160801b03168152602001610c5e896115b4565b6001600160801b03168152602001610c7960e08a018a612593565b604051610c879291906127b9565b6040805191829003909120825265ffffffffffff80881660208401528616908201526001600160a01b0388166060909101526101c08120909150601960f81b600160f81b610cd3611373565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529550505092959194509250565b6000818051906020012083604051602001610d40929190918252602082015260400190565b60405160208183030381529060405280519060200120925060ff60f81b858486896001600160a01b0316604051602001610d7b929190612814565b60405160208183030381529060405280519060200120604051602001610dd394939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b80516020808301516040808501516060860151608087015160a088015160c08901519451600098610e2a989097969101612836565b604051602081830303815290604052805190602001209050919050565b600081600881901b6001600160f81b03198216600160f81b03610e6d5760019250610ea9565b6001600160f81b03198216610e855760019250610ea9565b6001600160f81b031980831603610e9f5760019250610ea9565b5060009392505050565b828015610ebe57506001600160f81b03198116155b15610eca575050919050565b828015610ee457506001600160f81b03198116600160f81b145b15610e9f575050919050565b60405163610b592560e01b81526001600160a01b038d166004820152309063610b592590602401600060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505060405163f08a032360e01b81526001600160a01b038f16600482015230925063f08a03239150602401600060405180830381600087803b158015610f8a57600080fd5b505af1158015610f9e573d6000803e3d6000fd5b50505050306001600160a01b031663540fb4f98c8c8c8c8c8c8c8c60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8d166020909101526040516001600160e01b031960e08c901b16815261105c99989796959493929190600401612894565b600060405180830381600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50505050505050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e557604051632039d3c960e01b815260040160405180910390fd5b6110f260208201826127f7565b600080546001600160a01b0319166001600160a01b039283161790557f00000000000000000000000000000000000000000000000000000000000000001661114060808301606084016127f7565b6001600160a01b03161461116757604051633007073760e01b815260040160405180910390fd5b6302b994c760e31b61117c6080830183612593565b61118b916004916000916125d9565b61119491612603565b6001600160e01b031916146111bc57604051633007073760e01b815260040160405180910390fd5b3063b63e800d6111cf6020840184612909565b60408501356111e460808701606088016127f7565b6111f16080880188612593565b61120160c08a0160a08b016127f7565b60008060006040518b63ffffffff1660e01b815260040161122b9a99989796959493929190612952565b600060405180830381600087803b15801561124557600080fd5b505af1158015611259573d6000803e3d6000fd5b50506000600080516020612bf283398151915255506112759050565b60008061128860c0840160a085016127f7565b6001600160a01b031661129e60e0850185612593565b306040516020016112b193929190612a0a565b60408051601f19818403018152908290526112cb91612678565b6000604051808303816000865af19150503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b50915091508161131f57805160208201fd5b505050565b60006001820361133657506001919050565b6002820361134657506001919050565b6003820361135657506001919050565b6004820361136657506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60008060006060808660a001516001600160a01b03166355d559f4877f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401611426929190612a2b565b600060405180830381865afa158015611443573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146b9190810190612ab8565b8351602085012060408c01519298509296509294509192509060009061149490839085906115c9565b905061149f816118c1565b60208901516114ad816118c1565b6114b6816118cd565b80516000805b8281101561152e5760006114f28583815181106114db576114db612694565b6020026020010151876118d690919063ffffffff16565b5090508015611525578261150581612b52565b9350508d6040015183106115255760019b5050505050505050505061153b565b506001016114bc565b5060009950505050505050505b9250925092565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561156a57600061156d565b60015b60ff161717949350505050565b600061158a826080013560801c90565b92915050565b60006001600160801b0360808301351661158a565b600060c082013560801c61158a565b60006001600160801b0360c08301351661158a565b606060006115d8836041612b6b565b8451909150836001600160401b038111156115f5576115f5611d6e565b60405190808252806020026020018201604052801561161e578160200160208202803683370190505b5092508181101561164257604051638baa579f60e01b815260040160405180910390fd5b60005b848110156118b7576000806000806116758a86604102016020810151604082015160609092015160001a92909190565b9250925092508260ff16600003611816579092508290611696896041612b6b565b8110156116cc576040516338a245ff60e11b81526004810182905260006024820181905260448201526064015b60405180910390fd5b856116d8826020612b82565b1115611708576040516338a245ff60e11b81526004810182905260006024820152604481018790526064016116c3565b6020818b018101519087908290611720908590612b82565b61172a9190612b82565b111561175a576040516338a245ff60e11b81526004810183905260248101829052604481018890526064016116c3565b60606020838d01019050631626ba7e60e01b6001600160e01b031916866001600160a01b0316631626ba7e8f846040518363ffffffff1660e01b81526004016117a4929190612b95565b602060405180830381865afa1580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e59190612bae565b6001600160e01b0319161461180f578060405163605d348960e01b81526004016116c39190612184565b505061187c565b601e8360ff16111561186d576118666118548c6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b61185f600486612bd8565b84846118f9565b935061187c565b6118798b8484846118f9565b93505b8388868151811061188f5761188f612694565b6001600160a01b03909216602092830291909101909101525050600190920191506116459050565b5050509392505050565b6118ca81611937565b50565b6118ca8161198c565b6000806118ee84846001600160a01b031660006119d5565b909590945092505050565b60006040518560005260ff85166020528360405282606052602060406080600060015afa5060006060523d6060185191508060405250949350505050565b8051600082528060051b82016020601f198185015b8201838111611984578051828201805182811161196b5750505061194c565b5b818601528301805182811161196c575084015261194c565b505050915250565b60028151106118ca576020810160408201600183510160051b83015b81518351146119bc57602083019250815183525b6020820191508082036119a857505081900360051c9052565b60008060001960018651600087870197505b81830160011c94508460051b8901518701905087811482841117611a2157808811611a165783850191506119e7565b6001850192506119e7565b84151597148716989290930190950295509350505050565b6001600160a01b03811681146118ca57600080fd5b803561136e81611a39565b60008083601f840112611a6b57600080fd5b5081356001600160401b03811115611a8257600080fd5b6020830191508360208260051b8501011115611a9d57600080fd5b9250929050565b803560ff8116811461136e57600080fd5b60008060008060008060008060008060c08b8d031215611ad457600080fd5b611add8b611a4e565b995060208b01356001600160401b0380821115611af957600080fd5b611b058e838f01611a59565b909b50995060408d0135915080821115611b1e57600080fd5b611b2a8e838f01611a59565b909950975060608d0135915080821115611b4357600080fd5b611b4f8e838f01611a59565b909750955060808d0135915080821115611b6857600080fd5b50611b758d828e01611a59565b9094509250611b88905060a08c01611aa4565b90509295989b9194979a5092959850565b60006101208284031215611bac57600080fd5b50919050565b600080600060608486031215611bc757600080fd5b83356001600160401b03811115611bdd57600080fd5b611be986828701611b99565b9660208601359650604090950135949350505050565b60008060008060608587031215611c1557600080fd5b843593506020850135611c2781611a39565b925060408501356001600160401b0380821115611c4357600080fd5b818701915087601f830112611c5757600080fd5b813581811115611c6657600080fd5b886020828501011115611c7857600080fd5b95989497505060200194505050565b60008060408385031215611c9a57600080fd5b82356001600160401b03811115611cb057600080fd5b611cbc85828601611b99565b9250506020830135611ccd81611a39565b809150509250929050565b60005b83811015611cf3578181015183820152602001611cdb565b50506000910152565b60008151808452611d14816020860160208601611cd8565b601f01601f19169290920160200192915050565b608081526000611d3b6080830187611cfc565b65ffffffffffff8681166020850152851660408401528281036060840152611d638185611cfc565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611da657611da6611d6e565b60405290565b60405161010081016001600160401b0381118282101715611da657611da6611d6e565b604051601f8201601f191681016001600160401b0381118282101715611df757611df7611d6e565b604052919050565b60006001600160401b03821115611e1857611e18611d6e565b50601f01601f191660200190565b600082601f830112611e3757600080fd5b8135611e4a611e4582611dff565b611dcf565b818152846020838601011115611e5f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e9457600080fd5b8535611e9f81611a39565b94506020860135611eaf81611a39565b935060408601356001600160401b0380821115611ecb57600080fd5b611ed789838a01611e26565b9450606088013593506080880135915080821115611ef457600080fd5b50611f0188828901611e26565b9150509295509295909350565b60006001600160401b03821115611f2757611f27611d6e565b5060051b60200190565b600082601f830112611f4257600080fd5b81356020611f52611e4583611f0e565b8083825260208201915060208460051b870101935086841115611f7457600080fd5b602086015b84811015611f99578035611f8c81611a39565b8352918301918301611f79565b509695505050505050565b600082601f830112611fb557600080fd5b81356020611fc5611e4583611f0e565b82815260059290921b84018101918181019086841115611fe457600080fd5b8286015b84811015611f995780356001600160401b03808211156120085760008081fd5b908801906040828b03601f19018113156120225760008081fd5b61202a611d84565b8784013561203781611a39565b815290830135908282111561204c5760008081fd5b61205a8c8984870101611e26565b818901528652505050918301918301611fe8565b60006020828403121561208057600080fd5b81356001600160401b038082111561209757600080fd5b9083019061010082860312156120ac57600080fd5b6120b4611dac565b6120bd83611a4e565b81526020830135828111156120d157600080fd5b6120dd87828601611f31565b602083015250604083013560408201526120f960608401611a4e565b606082015260808301358281111561211057600080fd5b61211c87828601611e26565b60808301525061212e60a08401611a4e565b60a082015260c08301358281111561214557600080fd5b61215187828601611fa4565b60c08301525060e08301358281111561216957600080fd5b61217587828601611e26565b60e08301525095945050505050565b6020815260006121976020830184611cfc565b9392505050565b6000602082840312156121b057600080fd5b5035919050565b60008060008060008060008060008060008060e08d8f0312156121d957600080fd5b6121e28d611a4e565b9b506001600160401b0360208e013511156121fc57600080fd5b61220c8e60208f01358f01611a59565b909b5099506001600160401b0360408e0135111561222957600080fd5b6122398e60408f01358f01611a59565b90995097506001600160401b0360608e0135111561225657600080fd5b6122668e60608f01358f01611a59565b90975095506001600160401b0360808e0135111561228357600080fd5b6122938e60808f01358f01611a59565b90955093506001600160401b0360a08e013511156122b057600080fd5b6122c08e60a08f01358f01611a59565b90935091506122d160c08e01611aa4565b90509295989b509295989b509295989b565b6000602082840312156122f557600080fd5b81356001600160401b0381111561230b57600080fd5b8201610100818503121561219757600080fd5b600082825180855260208086019550808260051b84010181860160005b8481101561238657858303601f19018952815180516001600160a01b03168452840151604085850181905261237281860183611cfc565b9a86019a945050509083019060010161233b565b5090979650505050505050565b6000808335601e198436030181126123aa57600080fd5b83016020810192503590506001600160401b038111156123c957600080fd5b803603821315611a9d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008383855260208086019550808560051b830101846000805b8881101561248f57858403601f19018a52823536899003603e19018112612440578283fd5b88016040813561244f81611a39565b6001600160a01b0316865261246682880183612393565b9250818888015261247a82880184836123d8565b9c88019c96505050928501925060010161241b565b509198975050505050505050565b60008151808452602080850194506020840160005b838110156124d75781516001600160a01b0316875295820195908201906001016124b2565b509495945050505050565b60018060a01b0381511682526000602082015160606020850152612509606085018261249d565b60409384015160ff16949093019390935250919050565b60a08152600061253360a083018b61231e565b8281036020840152612546818a8c612401565b9050828103604084015261255b81888a612401565b90508281036060840152612570818688612401565b9050828103608084015261258481856124e2565b9b9a5050505050505050505050565b6000808335601e198436030181126125aa57600080fd5b8301803591506001600160401b038211156125c457600080fd5b602001915036819003821315611a9d57600080fd5b600080858511156125e957600080fd5b838611156125f657600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561262b5780818660040360031b1b83161692505b505092915050565b602081526000612197602083018461231e565b60008351612658818460208801611cd8565b60609390931b6001600160601b0319169190920190815260140192915050565b6000825161268a818460208701611cd8565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006101206126c9846126bc85611a4e565b6001600160a01b03169052565b602083013560208501526126e06040840184612393565b8260408701526126f383870182846123d8565b925050506127046060840184612393565b85830360608701526127178382846123d8565b925050506080830135608085015260a083013560a085015260c083013560c085015261274660e0840184612393565b85830360e08701526127598382846123d8565b9250505061010061276c81850185612393565b86840383880152611d638482846123d8565b60408152600061279160408301856126aa565b90508260208301529392505050565b6000602082840312156127b257600080fd5b5051919050565b8183823760009101908152919050565b6001600160d01b0319813581811691600685101561262b5760069490940360031b84901b1690921692915050565b60006020828403121561280957600080fd5b813561219781611a39565b60008351612826818460208801611cd8565b9190910191825250602001919050565b600060018060a01b03808a16835260e0602084015261285860e084018a61249d565b886040850152818816606085015283810360808501526128788188611cfc565b905081861660a085015283810360c0850152612584818661231e565b60a0815260006128a860a083018b8d612401565b82810360208401526128bb818a8c612401565b905082810360408401526128d081888a612401565b905082810360608401526128e5818688612401565b905082810360808401526128f981856124e2565b9c9b505050505050505050505050565b6000808335601e1984360301811261292057600080fd5b8301803591506001600160401b0382111561293a57600080fd5b6020019150600581901b3603821315611a9d57600080fd5b61010080825281018a9052600061012082018c825b8d81101561299857813561297a81611a39565b6001600160a01b031683526020928301929190910190600101612967565b50508a60208401526129b5604084018b6001600160a01b03169052565b82810360608401526129c881898b6123d8565b9150506129e060808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c083015261258460e08301846001600160a01b03169052565b8284823760609190911b6001600160601b0319169101908152601401919050565b604081526000612a3e60408301856126aa565b905060018060a01b03831660208301529392505050565b600082601f830112612a6657600080fd5b8151612a74611e4582611dff565b818152846020838601011115612a8957600080fd5b612a9a826020830160208701611cd8565b949350505050565b805165ffffffffffff8116811461136e57600080fd5b60008060008060808587031215612ace57600080fd5b84516001600160401b0380821115612ae557600080fd5b612af188838901612a55565b9550612aff60208801612aa2565b9450612b0d60408801612aa2565b93506060870151915080821115612b2357600080fd5b50612b3087828801612a55565b91505092959194509250565b634e487b7160e01b600052601160045260246000fd5b600060018201612b6457612b64612b3c565b5060010190565b808202811582820484141761158a5761158a612b3c565b8082018082111561158a5761158a612b3c565b828152604060208201526000612a9a6040830184611cfc565b600060208284031215612bc057600080fd5b81516001600160e01b03198116811461219757600080fd5b60ff828116828216039081111561158a5761158a612b3c56fe982e06ee6a56dfc0f1ac189a5d23506361ca0a3ce45a9c7b8d33d65d43746a24a26469706673582212207d5588f32687eed2f7e9571e6218cfcff2c44b91a85496193f533aec5d0aa59464736f6c634300081900330000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032000000000000000000000000000000000069e2a187aeffb852bf3ccdc95151b2" export const SAFE_7579_REGISTRY_CREATECALL: Hex = "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600f57600080fd5b506103d18061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063529562a11161005b578063529562a1146100bf57806396fb7217146100d2578063c23697a8146100e0578063f05c04e1146100f157600080fd5b80630bb30abc146100825780632ed94467146100985780634c13560c146100ad575b600080fd5b6100966100903660046101c8565b50505050565b005b6100966100a6366004610222565b5050505050565b6100966100bb366004610284565b5050565b6100966100cd3660046102b7565b505050565b6100966100bb3660046102f4565b6100966100ee36600461031e565b50565b6100966100ff366004610340565b6040513381527fb8a00d6d8ca1be30bfec34d8f97e55f0f0fd9eeb7fb46e030516363d4cfe1ad69060200160405180910390a16040517fb6d9a72244037f5f1de04d8ff74cd328f1574efc59a02163d0fec0554871974690600090a1505050565b80356001600160a01b038116811461017757600080fd5b919050565b60008083601f84011261018e57600080fd5b50813567ffffffffffffffff8111156101a657600080fd5b6020830191508360208260051b85010111156101c157600080fd5b9250929050565b600080600080606085870312156101de57600080fd5b6101e785610160565b9350602085013567ffffffffffffffff81111561020357600080fd5b61020f8782880161017c565b9598909750949560400135949350505050565b60008060008060006080868803121561023a57600080fd5b61024386610160565b945060208601359350604086013567ffffffffffffffff81111561026657600080fd5b6102728882890161017c565b96999598509660600135949350505050565b6000806040838503121561029757600080fd5b6102a083610160565b91506102ae60208401610160565b90509250929050565b6000806000606084860312156102cc57600080fd5b6102d584610160565b92506102e360208501610160565b929592945050506040919091013590565b6000806040838503121561030757600080fd5b61031083610160565b946020939093013593505050565b60006020828403121561033057600080fd5b61033982610160565b9392505050565b60008060006040848603121561035557600080fd5b833560ff8116811461036657600080fd5b9250602084013567ffffffffffffffff81111561038257600080fd5b61038e8682870161017c565b949790965093945050505056fea2646970667358221220181467498dc4fab0c64814a0965539f6b8e992676b95c29db59b1cc06cd50f0f64736f6c634300081a0033" export const SAFE_7579_MODULE_CREATECALL: Hex = - "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600f57600080fd5b50604051601a906046565b604051809103906000f0801580156035573d6000803e3d6000fd5b506001600160a01b03166080526053565b6109e180614d7483390190565b608051614cb96100bb60003960008181610f340152818161112c0152818161128d01528181611ad601528181611f2d015281816120070152818161209e0152818161213501528181613248015281816133000152818161385b015261397b0152614cb96000f3fe6080604052600436106101235760003560e01c8063b0d691fe116100a0578063e9ae5c5311610064578063e9ae5c5314610479578063ea5f61d014610499578063eab77e17146104b9578063f2dc691d146104d9578063f698da25146104f95761012a565b8063b0d691fe1461039e578063b875d5d8146103c1578063d03c79141461040c578063d691c9641461042c578063d828435d146104595761012a565b80635faac46b116100e75780635faac46b146102d257806379aad60e146103005780639517e29f146103205780639cfd7cff14610340578063a71763a81461037e5761012a565b80630a664dba146101d5578063112d3a7d146102195780631626ba7e1461024957806319822f7c14610282578063540fb4f9146102b05761012a565b3661012a57005b600036606060003560e01c63bc197c81811463f23a6e6182141763150b7a028214171561015b57806020526020603cf35b50336000818152600460209081526040808320546001600160e01b031984351680855260058452828520958552949092528220546001600160a01b0391821692911690806101a9848461050e565b915091506101b788886105cc565b95506101c5848484846106df565b5050505050915050805190602001f35b3480156101e157600080fd5b50336000908152600460205260409020546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022557600080fd5b50610239610234366004613c93565b610762565b6040519015158152602001610210565b34801561025557600080fd5b50610269610264366004613cee565b6107bf565b6040516001600160e01b03199091168152602001610210565b34801561028e57600080fd5b506102a261029d366004613d39565b610b35565b604051908152602001610210565b3480156102bc57600080fd5b506102d06102cb366004613de8565b610c49565b005b3480156102de57600080fd5b506102f26102ed366004613ee4565b610cf9565b604051610210929190613f10565b34801561030c57600080fd5b506102d061031b366004613f73565b610d15565b34801561032c57600080fd5b506102d061033b366004613c93565b610dd9565b34801561034c57600080fd5b50604080518082018252600f81526e073616665373537392e76312e302e3608c1b602082015290516102109190614004565b34801561038a57600080fd5b506102d0610399366004613c93565b610fa4565b3480156103aa57600080fd5b506f71727de22e5e9d8baf0edac6f37da0326101fc565b3480156103cd57600080fd5b506101fc6103dc36600461402d565b6001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b031690565b34801561041857600080fd5b5061023961042736600461404a565b6112cb565b34801561043857600080fd5b5061044c610447366004613cee565b611373565b6040516102109190614063565b34801561046557600080fd5b506102a26104743660046140c8565b61145c565b34801561048557600080fd5b506102d0610494366004613cee565b6114fc565b3480156104a557600080fd5b506102f26104b4366004613ee4565b611899565b3480156104c557600080fd5b506102d06104d4366004614112565b6118aa565b3480156104e557600080fd5b506102396104f436600461404a565b611919565b34801561050557600080fd5b506102a2611968565b6060806001600160a01b0384161561058e576105753385600061052f6119c1565b3460003660405160240161054694939291906141a1565b60408051601f198184030181529190526020810180516001600160e01b031663d68f602560e01b1790526119cd565b91508180602001905181019061058b919061428a565b91505b6001600160a01b038316156105c5576105ac3384600061052f6119c1565b9050808060200190518101906105c2919061428a565b90505b9250929050565b600080356001600160e01b031916815260036020908152604080832033845290915290208054606091906001600160a01b03811690600160a01b900460f81b8161063c57604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61064a81607f60f91b611a76565b1561068e576106843383888861065e6119c1565b604051602001610670939291906142be565b604051602081830303815290604052611a88565b93505050506106d9565b610699816000611a76565b156106d5576106843383600089896106af6119c1565b6040516020016106c1939291906142be565b6040516020818303038152906040526119cd565b5050505b92915050565b6001600160a01b038416156107355761073533856000856040516024016107069190614004565b60408051601f198184030181529190526020810180516001600160e01b0316630b9dfbed60e11b179052611b5d565b6001600160a01b0383161561075c5761075c33846000846040516024016107069190614004565b50505050565b60006001850361077c5761077584611bfc565b90506107b7565b6002850361078d5761077584611c0a565b600385036107a057610775848484611c18565b600485036107b357610775848484611c64565b5060005b949350505050565b600033828203610959576000610890826001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083091906142e4565b60408051602081018a90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca91015b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052611c9f565b8051602090910120604051635ae6bd3760e01b8152600481018290529091506001600160a01b03831690635ae6bd3790602401602060405180830381865afa1580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090491906142e4565b6000036109475760405162461bcd60e51b815260206004820152601160248201527012185cda081b9bdd08185c1c1c9bdd9959607a1b6044820152606401610633565b50630b135d3f60e11b9150610b2e9050565b600061096860148286886142fd565b61097191614327565b60601c9050801580610989575061098781611bfc565b155b15610ab3576000610a28836001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f591906142e4565b60408051602081018b90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca910161085f565b805160208201209091506001600160a01b03841663934f3a118284610a508a6014818e6142fd565b6040518563ffffffff1660e01b8152600401610a6f9493929190614374565b60006040518083038186803b158015610a8757600080fd5b505afa158015610a9b573d6000803e3d6000fd5b50630b135d3f60e11b9750610b2e9650505050505050565b6000610b123383610ac26119c1565b8a610ad08a6014818e6142fd565b604051602401610ae394939291906141a1565b60408051601f198184030181529190526020810180516001600160e01b0316637aa8f17760e11b179052611a88565b905080806020019051810190610b2891906143ab565b93505050505b9392505050565b60006f71727de22e5e9d8baf0edac6f37da032610b506119c1565b6001600160a01b031614610b7757604051635629665f60e11b815260040160405180910390fd5b6020840135606081901c90811580610b955750610b9382611bfc565b155b15610baa57610ba386611d19565b9250610c0f565b6000610bf5338460008a8a604051602401610bc692919061440d565b60408051601f198184030181529190526020810180516001600160e01b0316639700320360e01b1790526119cd565b905080806020019051810190610c0b91906142e4565b9350505b8315610c4057610c40336f71727de22e5e9d8baf0edac6f37da0328660405180602001604052806000815250611b5d565b50509392505050565b6f71727de22e5e9d8baf0edac6f37da032610c626119c1565b6001600160a01b03161480610c8f5750610c7a6119c1565b6001600160a01b0316336001600160a01b0316145b610cac57604051635629665f60e11b815260040160405180910390fd5b610cde610cbc6020830183614511565b610cc9602084018461452e565b610cd96060860160408701614577565b611dce565b610cee8989898989898989611e85565b505050505050505050565b60606000610d0a60013386866121a4565b915091509250929050565b6f71727de22e5e9d8baf0edac6f37da032610d2e6119c1565b6001600160a01b03161480610d5b5750610d466119c1565b6001600160a01b0316336001600160a01b0316145b610d7857604051635629665f60e11b815260040160405180910390fd5b610d83600133612368565b8060005b8181101561075c5736848483818110610da257610da2614592565b9050602002810190610db491906145a8565b9050610dd033610dc76020840184614511565b600191906123e3565b50600101610d87565b336000908152600460209081526040808320547fd00bcad91b775f25eb0aee15808d12dfdaa6dc5a7d6b754e26f9c205d2a3b8df909252822054639517e29f60e01b926001600160a01b03928316929091169080610e37848461050e565b91509150610e526f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b0316610e636119c1565b6001600160a01b03161480610e905750610e7b6119c1565b6001600160a01b0316336001600160a01b0316145b610ead57604051635629665f60e11b815260040160405180910390fd5b606060018a03610ec957610ec28989896124d8565b9050610f2e565b60028a03610edc57610ec2898989612534565b60038a03610eef57610ec289898961254f565b60048a03610f0257610ec28989896126ce565b89610f1257610ec289898961286e565b60405163041c38b360e41b8152600481018b9052602401610633565b610f97337f00000000000000000000000000000000000000000000000000000000000000008c8c85604051602401610f68939291906145c8565b60408051601f198184030181529190526020810180516001600160e01b0316639517e29f60e01b179052612a1f565b50610cee848484846106df565b336000908152600460209081526040808320547fc45a7acaba78a7b4c4432b604d301355b314c0a7811768a1ee2563c9d34ca4e09092529091205484916314e2ec7560e31b916001600160a01b0391821691908116908416821480159061101d5750806001600160a01b0316846001600160a01b031614155b156111a35760008061102f848461050e565b9150915061104a6f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b031661105b6119c1565b6001600160a01b0316148061108857506110736119c1565b6001600160a01b0316336001600160a01b0316145b6110a557604051635629665f60e11b815260040160405180910390fd5b606060018b036110c1576110ba8a8a8a612ab8565b9050611126565b60028b036110d4576110ba8a8a8a612ae1565b60038b036110e7576110ba8a8a8a612b02565b60048b036110fa576110ba8a8a8a612b4e565b8a61110a576110ba8a8a8a612c06565b60405163041c38b360e41b8152600481018c9052602401610633565b61118f337f00000000000000000000000000000000000000000000000000000000000000008d8d85604051602401611160939291906145c8565b60408051601f198184030181529190526020810180516001600160e01b0316637827252560e01b179052612d59565b5061119c848484846106df565b50506112c1565b6f71727de22e5e9d8baf0edac6f37da0326111bc6119c1565b6001600160a01b031614806111e957506111d46119c1565b6001600160a01b0316336001600160a01b0316145b61120657604051635629665f60e11b815260040160405180910390fd5b6060600189036112225761121b888888612ab8565b9050611287565b600289036112355761121b888888612ae1565b600389036112485761121b888888612b02565b6004890361125b5761121b888888612b4e565b8861126b5761121b888888612c06565b60405163041c38b360e41b8152600481018a9052602401610633565b610cee337f00000000000000000000000000000000000000000000000000000000000000008b8b85604051602401611160939291906145c8565b5050505050505050565b600081600881901b6112e182600160f81b611a76565b156112ef5760019250611332565b6112fa826000611a76565b156113085760019250611332565b61131a826001600160f81b0319611a76565b156113285760019250611332565b5060009392505050565b8280156113455750611345816000611a76565b15611351575050919050565b828015611367575061136781600160f81b611a76565b15611328575050919050565b60606113856113806119c1565b611c0a565b6113b6576113916119c1565b604051635c93ff2f60e11b81526001600160a01b039091166004820152602401610633565b336000908152600460209081526040808320547f4162c930ade27880570b0eb31efbc8a626b97e81a40ced27163509dfe16398829092528220546335a4725960e21b926001600160a01b03928316929091169080611414848461050e565b915091506114206119c1565b600261142c8282612e0f565b8a600881901b61143e81838e8e612e9a565b995050505050611450848484846106df565b50505050509392505050565b6000602082901b640100000000600160c01b03166f71727de22e5e9d8baf0edac6f37da032604051631aab3f0d60e11b81526001600160a01b0386811660048301526001600160c01b038416602483015291909116906335567e1a90604401602060405180830381865afa1580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906142e4565b336000908152600460209081526040808320547fccfe1b2bef70acd8e661aeb5430e147f4c75cb320972acba718a28da428e1a3090925282205463e9ae5c5360e01b926001600160a01b0392831692909116908061155a848461050e565b915091506115756f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b03166115866119c1565b6001600160a01b031614806115b3575061159e6119c1565b6001600160a01b0316336001600160a01b0316145b6115d057604051635629665f60e11b815260040160405180910390fd5b87600881901b336115e2826000611a76565b1561173b576115f583600160f81b611a76565b156116165789358a0160208101903561160f838383613242565b505061188a565b611621836000611a76565b15611689576000803660006116368e8e6132a9565b935093509350935061168085858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b5d92505050565b5050505061188a565b61169b836001600160f81b0319611a76565b156117205760006116af6014828c8e6142fd565b6116b891614327565b60601c90503660008c8c60149080926116d3939291906142fd565b91509150611718848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a1f92505050565b50505061188a565b82604051632e5bf3f960e21b815260040161063391906145fb565b61174982600160f81b611a76565b1561186f5761175c83600160f81b611a76565b156117765789358a0160208101903561160f8383836132fa565b611781836000611a76565b156117e0576000803660006117968e8e6132a9565b935093509350935061168085858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061336192505050565b6117f2836001600160f81b0319611a76565b156117205760006118066014828c8e6142fd565b61180f91614327565b60601c90503660008c8c601490809261182a939291906142fd565b91509150611718848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5992505050565b816040516308c3ee0360e11b815260040161063391906145fb565b5050506112c1848484846106df565b60606000610d0a60023386866121a4565b6f71727de22e5e9d8baf0edac6f37da0326118c36119c1565b6001600160a01b031614806118f057506118db6119c1565b6001600160a01b0316336001600160a01b0316145b61190d57604051635629665f60e11b815260040160405180910390fd5b61075c84848484611dce565b60006001820361192b57506001919050565b6002820361193b57506001919050565b6003820361194b57506001919050565b6004820361195b57506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60131936013560601c90565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401611a049493929190614648565b6000604051808303816000875af1158015611a23573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4b919081019061468e565b9250905080611a6d57604051632b3f6d1160e21b815260040160405180910390fd5b50949350505050565b6001600160f81b031990811691161490565b606060008383604051602401611a9f9291906146db565b60408051601f198184030181529181526020820180516001600160e01b0316636a22165760e01b17905251909150600090611b00907f00000000000000000000000000000000000000000000000000000000000000009084906024016146db565b60408051601f19818403018152919052602080820180516001600160e01b031663b4faba0960e01b17815282519293509091600091895afa5060203d036040519350808401604052806020853e50600051610c4057825160208401fd5b60405163468721a760e01b81526000906001600160a01b0386169063468721a790611b92908790879087908790600401614648565b6020604051808303816000875af1158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd591906146ff565b905080611bf557604051632b3f6d1160e21b815260040160405180910390fd5b5050505050565b60006106d960013384613417565b60006106d960023384613417565b600080611c278385018561402d565b6001600160e01b03191660009081526003602090815260408083203384529091529020546001600160a01b03908116908616149150509392505050565b60008080611c7484860186614729565b915091506000611c84838361345b565b6001600160a01b039081169088161493505050509392505050565b6060601960f81b600160f81b858585604051602001611cbf929190614755565b60408051808303601f190181529082905280516020918201206001600160f81b0319958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b60008080803681611d3a876f71727de22e5e9d8baf0edac6f37da0326134f1565b8451602086012060405163934f3a1160e01b8152959a5093985091965094509250339163934f3a1191611d7591899087908790600401614374565b60006040518083038186803b158015611d8d57600080fd5b505afa925050508015611d9e575060015b611db557611dae60018486613724565b9550611dc4565b611dc160008486613724565b95505b5050505050919050565b33600090815260208190526040902080546001600160a01b0319166001600160a01b03861690811790915515611e4957611e4933856000848787604051602401611e1a9392919061477b565b60408051601f198184030181529190526020810180516001600160e01b031663f05c04e160e01b179052611b5d565b6040516001600160a01b0385169033907f9452c8fb077c3ea8f28a77c87488af657b1e44d010ad9a5992d73870da040e9490600090a350505050565b3360009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f602052604090205460609088906001600160a01b0316611f7d57611ed1600133612368565b60005b81811015611f7757368b8b83818110611eef57611eef614592565b9050602002810190611f0191906145a8565b9050611f25611f136020830183614511565b611f2060208401846147d3565b6124d8565b9350611f6e337f00000000000000000000000000000000000000000000000000000000000000006001611f5b6020860186614511565b88604051602401610f68939291906145c8565b50600101611ed4565b50611f9e565b8015611f9e5760405163d8e3ed1b60e01b8152336004820152602401610633565b611fa9600233612368565b508560005b8181101561203e5736898983818110611fc957611fc9614592565b9050602002810190611fdb91906145a8565b9050611fff611fed6020830183614511565b611ffa60208401846147d3565b612534565b9350612035337f00000000000000000000000000000000000000000000000000000000000000006002611f5b6020860186614511565b50600101611fae565b5084905060005b818110156120d5573687878381811061206057612060614592565b905060200281019061207291906145a8565b90506120966120846020830183614511565b61209160208401846147d3565b61254f565b93506120cc337f00000000000000000000000000000000000000000000000000000000000000006003611f5b6020860186614511565b50600101612045565b5082905060005b8181101561216c57368585838181106120f7576120f7614592565b905060200281019061210991906145a8565b905061212d61211b6020830183614511565b61212860208401846147d3565b6126ce565b9350612163337f00000000000000000000000000000000000000000000000000000000000000006004611f5b6020860186614511565b506001016120dc565b5060405133907ff48581d8a62b775b74f2fb67f1d5806a9a356fbcc598040ab3071d3e37af40c290600090a250505050505050505050565b606060006001600160a01b0384166001148015906121ca57506121c8868686613417565b155b156121f357604051637c84ecfb60e01b81526001600160a01b0385166004820152602401610633565b826000036122145760405163f725081760e01b815260040160405180910390fd5b826001600160401b0381111561222c5761222c6141d3565b604051908082528060200260200182016040528015612255578160200160208202803683370190505b506001600160a01b038086166000908152602089815260408083208a85168452909152812054929450911691505b6001600160a01b038216158015906122a557506001600160a01b038216600114155b80156122b057508381105b1561231557818382815181106122c8576122c8614592565b6001600160a01b039283166020918202929092018101919091529281166000908152888452604080822089841683529094529290922054909116908061230d8161482f565b915050612283565b6001600160a01b03821660011480159061232f5750600081115b1561235b5782612340600183614848565b8151811061235057612350614592565b602002602001015191505b8083525094509492505050565b60016000908152602083815260408083206001600160a01b03808616855292529091205416156123ab576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602093845260408082206001600160a01b0394909416825292909352912080546001600160a01b0319169091179055565b6001600160a01b038116158061240257506001600160a01b0381166001145b1561242b57604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610633565b6001600160a01b038181166000908152602085815260408083208685168452909152902054161561247a57604051631034f46960e21b81526001600160a01b0382166004820152602401610633565b60016000908152602084815260408083206001600160a01b039586168085528184528285208054968816808752988552838620918652908452919093208054949095166001600160a01b031994851617909455528154169091179055565b60608360016124e78282612e0f565b6124f3600133886123e3565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b60608360026125438282612e0f565b6124f3600233886123e3565b606083600361255e8282612e0f565b6000808061256e878901896148ac565b919450925090506001600160e01b031983166306d61fe760e41b14806125a457506001600160e01b03198316638a91b0e360e01b145b156125ce576040516379bd117b60e01b81526001600160e01b031984166004820152602401610633565b6125d9826000611a76565b80156125ee57506125ee82607f60f91b611a76565b1561260e57816040516376087dc160e01b815260040161063391906145fb565b6001600160e01b0319831660009081526003602090815260408083203384529091529020546001600160a01b031615612666576040516374420d1560e01b81526001600160e01b031984166004820152602401610633565b6001600160e01b03199092166000908152600360209081526040808320338452909152902080546001600160a01b038a166001600160a01b031960f89490941c600160a01b02939093166001600160a81b031990911617919091179055925050509392505050565b60608360046126dd8282612e0f565b600080806126ed8789018961491a565b9194509250905060008084600181111561270957612709614610565b14801561271e57506001600160e01b03198316155b156127945750336000908152600460205260409020546001600160a01b031680156127675760405163741cbe0360e01b81526001600160a01b0382166004820152602401610633565b33600090815260046020526040902080546001600160a01b0319166001600160a01b038c16179055612861565b60018460018111156127a8576127a8614610565b0361284857506001600160e01b0319821660009081526005602090815260408083203384529091529020546001600160a01b031680156128065760405163741cbe0360e01b81526001600160a01b0382166004820152602401610633565b6001600160e01b031983166000908152600560209081526040808320338452909152902080546001600160a01b0319166001600160a01b038c16179055612861565b604051635691922f60e01b815260040160405180910390fd5b5098975050505050505050565b606082358301602081810191359085810135860180820191903590604088013588019081019035848381146128b65760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156129d85760008888838181106128d5576128d5614592565b905060200201359050600181036129145761290e8d8888858181106128fc576128fc614592565b9050602002810190611f2091906147d3565b506129cf565b600281036129445761290e8d88888581811061293257612932614592565b9050602002810190611ffa91906147d3565b600381036129745761290e8d88888581811061296257612962614592565b905060200281019061209191906147d3565b600481036129a45761290e8d88888581811061299257612992614592565b905060200281019061212891906147d3565b60405163484d218160e01b81526001600160a01b038e16600482015260248101829052604401610633565b506001016128b9565b5082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b60405163468721a760e01b81526000906001600160a01b0385169063468721a790612a5590869085908790600190600401614648565b6020604051808303816000875af1158015612a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9891906146ff565b90508061075c57604051632b3f6d1160e21b815260040160405180910390fd5b60606000612ac883850185614948565b92509050612ad9600133838861375c565b509392505050565b60606000612af183850185614948565b92509050612ad9600233838861375c565b60606000612b128385018561498d565b6001600160e01b03199091166000908152600360209081526040808320338452909152902080546001600160a01b031916905595945050505050565b6060600080612b5f8486018661491a565b945090925090506000826001811115612b7a57612b7a614610565b148015612b8f57506001600160e01b03198116155b15612bb65733600090815260046020526040902080546001600160a01b0319169055610c40565b6001826001811115612bca57612bca614610565b03612848576001600160e01b031981166000908152600560209081526040808320338452909152902080546001600160a01b0319169055610c40565b60608235830160208181019135908581013586018082019190359060408801358801908101903584838114612c4e5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156129d8576000888883818110612c6d57612c6d614592565b90506020020135905060018103612cb157612cab8d888885818110612c9457612c94614592565b9050602002810190612ca691906147d3565b612ab8565b50612d50565b60028103612ce657612cab8d888885818110612ccf57612ccf614592565b9050602002810190612ce191906147d3565b612ae1565b60038103612d1b57612cab8d888885818110612d0457612d04614592565b9050602002810190612d1691906147d3565b612b02565b600481036129a457612cab8d888885818110612d3957612d39614592565b9050602002810190612d4b91906147d3565b612b4e565b50600101612c51565b60405163468721a760e01b81526000906001600160a01b0385169063468721a790612d8f90869085908790600190600401614648565b6020604051808303816000875af1158015612dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd291906146ff565b90508061075c57604080516001600160a01b038616815260006020820152600080516020614c64833981519152910160405180910390a150505050565b336000908152602081905260409020546001600160a01b03168015612e955760405163529562a160e01b81523360048201526001600160a01b0384811660248301526044820184905282169063529562a19060640160006040518083038186803b158015612e7c57600080fd5b505afa158015612e90573d6000803e3d6000fd5b505050505b505050565b6060612ea7856000611a76565b1561309357612eba84600160f81b611a76565b15612edd5782358301602081019035612ed4338383613853565b925050506107b7565b612ee8846000611a76565b15612f9c57600080366000612efd87876132a9565b6040805160018082528183019092529498509296509094509250816020015b6060815260200190600190039081612f1c579050509450612f7533858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119cd92505050565b85600081518110612f8857612f88614592565b6020026020010181905250505050506107b7565b612fae846001600160f81b0319611a76565b15613078576000612fc260148285876142fd565b612fcb91614327565b60601c9050366000612fe085601481896142fd565b604080516001808252818301909252929450909250816020015b6060815260200190600190039081612ffa579050509350613052338484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138cf92505050565b8460008151811061306557613065614592565b60200260200101819052505050506107b7565b83604051632e5bf3f960e21b815260040161063391906145fb565b6130a185600160f81b611a76565b15613227576130b484600160f81b611a76565b156130d957823583016020810190356130ce338383613970565b93506107b792505050565b6130e4846000611a76565b15613171576000803660006130f987876132a9565b6040805160018082528183019092529498509296509094509250816020015b6060815260200190600190039081613118579050509450612f7533858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a6692505050565b613183846001600160f81b0319611a76565b1561307857600061319760148285876142fd565b6131a091614327565b60601c90503660006131b585601481896142fd565b604080516001808252818301909252929450909250816020015b60608152602001906001900390816131cf579050509350613052338484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b2692505050565b846040516308c3ee0360e11b815260040161063391906145fb565b612e95837f0000000000000000000000000000000000000000000000000000000000000000848460405160240161327a9291906149ab565b60408051601f198184030181529190526020810180516001600160e01b0316633f707e6b60e01b179052612a1f565b60008036816132bb60148287896142fd565b6132c491614327565b60601c93506132d76034601487896142fd565b6132e091614a5d565b92506132ef85603481896142fd565b949793965094505050565b612e95837f000000000000000000000000000000000000000000000000000000000000000084846040516024016133329291906149ab565b60408051601f198184030181529190526020810180516001600160e01b0316632864481160e11b179052612d59565b60405163468721a760e01b81526000906001600160a01b0386169063468721a790613396908790879087908790600401614648565b6020604051808303816000875af11580156133b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d991906146ff565b905080611bf557604080516001600160a01b038716815260006020820152600080516020614c64833981519152910160405180910390a15050505050565b600060016001600160a01b038316148015906107b75750506001600160a01b0390811660009081526020938452604080822093831682529290935291205416151590565b60008083600181111561347057613470614610565b14801561348557506001600160e01b03198216155b156134a55750336000908152600460205260409020546001600160a01b03165b60018360018111156134b9576134b9614610565b036106d957506001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b0316919050565b6060600080368181816135086101008a018a6147d3565b909250905061351b6006600083856142fd565b61352491614a7b565b60d01c9550613537600c600683856142fd565b61354091614a7b565b60d01c945061355281600c81856142fd565b9350935050506000604051806101c001604052807fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f60001b81526020018960000160208101906135a29190614511565b6001600160a01b03168152602001896020013581526020018980604001906135ca91906147d3565b6040516135d8929190614ab1565b60405190819003902081526020016135f360608b018b6147d3565b604051613601929190614ab1565b604051809103902081526020016136178a613be6565b6001600160801b0316815260200161362e8a613bf6565b6001600160801b031681526020018960a00135815260200161364f8a613c0b565b6001600160801b031681526020016136668a613c1a565b6001600160801b0316815260200161368160e08b018b6147d3565b60405161368f929190614ab1565b6040805191829003909120825265ffffffffffff80891660208401528716908201526001600160a01b0389166060909101526101c08120909150601960f81b600160f81b6136db611968565b6040516001600160f81b03199384166020820152929091166021830152602282015260428101829052606201604051602081830303815290604052965050509295509295909350565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561374c57600061374f565b60015b60ff161717949350505050565b6001600160a01b038116158061377b57506001600160a01b0381166001145b156137a457604051637c84ecfb60e01b81526001600160a01b0383166004820152602401610633565b6001600160a01b0382811660009081526020868152604080832087851684529091529020548116908216146137f757604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610633565b6001600160a01b039081166000908152602085815260408083209584168084528683528184208054968616855297835281842090845282529091208054939092166001600160a01b031993841617909155919091528154169055565b60606138bc847f0000000000000000000000000000000000000000000000000000000000000000858560405160240161388d9291906149ab565b60408051601f198184030181529190526020810180516001600160e01b0316636108557360e01b1790526138cf565b8060200190518101906107b79190614b70565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b81526004016139079493929190614648565b6000604051808303816000875af1158015613926573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261394e919081019061468e565b9250905080612ad957604051632b3f6d1160e21b815260040160405180910390fd5b60608060006139dc867f000000000000000000000000000000000000000000000000000000000000000087876040516024016139ad9291906149ab565b60408051601f198184030181529190526020810180516001600160e01b0316639abb6e1760e01b179052613b26565b9050808060200190518101906139f29190614ba4565b8151919450925060005b81811015613a5b57848181518110613a1657613a16614592565b6020026020010151613a5357604080516001600160a01b038a16815260208101839052600080516020614c64833981519152910160405180910390a15b6001016139fc565b505050935093915050565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401613a9d9493929190614648565b6000604051808303816000875af1158015613abc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ae4919081019061468e565b9250905080611a6d57604080516001600160a01b038816815260006020820152600080516020614c64833981519152910160405180910390a150949350505050565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b8152600401613b5e9493929190614648565b6000604051808303816000875af1158015613b7d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ba5919081019061468e565b9250905080612ad957604080516001600160a01b038716815260006020820152600080516020614c64833981519152910160405180910390a1509392505050565b60006106d9826080013560801c90565b60006001600160801b036080830135166106d9565b600060c082013560801c6106d9565b60006001600160801b0360c0830135166106d9565b6001600160a01b0381168114613c4457600080fd5b50565b803561196381613c2f565b60008083601f840112613c6457600080fd5b5081356001600160401b03811115613c7b57600080fd5b6020830191508360208285010111156105c557600080fd5b60008060008060608587031215613ca957600080fd5b843593506020850135613cbb81613c2f565b925060408501356001600160401b03811115613cd657600080fd5b613ce287828801613c52565b95989497509550505050565b600080600060408486031215613d0357600080fd5b8335925060208401356001600160401b03811115613d2057600080fd5b613d2c86828701613c52565b9497909650939450505050565b600080600060608486031215613d4e57600080fd5b83356001600160401b03811115613d6457600080fd5b84016101208187031215613d7757600080fd5b95602085013595506040909401359392505050565b60008083601f840112613d9e57600080fd5b5081356001600160401b03811115613db557600080fd5b6020830191508360208260051b85010111156105c557600080fd5b600060608284031215613de257600080fd5b50919050565b600080600080600080600080600060a08a8c031215613e0657600080fd5b89356001600160401b03811115613e1c57600080fd5b613e288c828d01613d8c565b909a5098505060208a01356001600160401b03811115613e4757600080fd5b613e538c828d01613d8c565b90985096505060408a01356001600160401b03811115613e7257600080fd5b613e7e8c828d01613d8c565b90965094505060608a01356001600160401b03811115613e9d57600080fd5b613ea98c828d01613d8c565b90945092505060808a01356001600160401b03811115613ec857600080fd5b613ed48c828d01613dd0565b9150509295985092959850929598565b60008060408385031215613ef757600080fd5b8235613f0281613c2f565b946020939093013593505050565b6040808252835190820181905260009060208501906060840190835b81811015613f535783516001600160a01b0316835260209384019390920191600101613f2c565b50506001600160a01b039490941660209390930192909252509092915050565b60008060208385031215613f8657600080fd5b82356001600160401b03811115613f9c57600080fd5b613fa885828601613d8c565b90969095509350505050565b60005b83811015613fcf578181015183820152602001613fb7565b50506000910152565b60008151808452613ff0816020860160208601613fb4565b601f01601f19169290920160200192915050565b602081526000610b2e6020830184613fd8565b6001600160e01b031981168114613c4457600080fd5b60006020828403121561403f57600080fd5b8135610b2e81614017565b60006020828403121561405c57600080fd5b5035919050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156140bc57603f198786030184526140a7858351613fd8565b9450602093840193919091019060010161408b565b50929695505050505050565b600080604083850312156140db57600080fd5b82356140e681613c2f565b915060208301356140f681613c2f565b809150509250929050565b803560ff8116811461196357600080fd5b6000806000806060858703121561412857600080fd5b843561413381613c2f565b935060208501356001600160401b0381111561414e57600080fd5b61415a87828801613d8c565b909450925061416d905060408601614101565b905092959194509250565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b03851681528360208201526060604082015260006141c9606083018486614178565b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614211576142116141d3565b604052919050565b60006001600160401b03821115614232576142326141d3565b50601f01601f191660200190565b600082601f83011261425157600080fd5b815161426461425f82614219565b6141e9565b81815284602083860101111561427957600080fd5b6107b7826020830160208701613fb4565b60006020828403121561429c57600080fd5b81516001600160401b038111156142b257600080fd5b6107b784828501614240565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b6000602082840312156142f657600080fd5b5051919050565b6000808585111561430d57600080fd5b8386111561431a57600080fd5b5050820193919092039150565b80356bffffffffffffffffffffffff19811690601484101561436d576bffffffffffffffffffffffff196bffffffffffffffffffffffff198560140360031b1b82161691505b5092915050565b84815260606020820152600061438d6060830186613fd8565b82810360408401526143a0818587614178565b979650505050505050565b6000602082840312156143bd57600080fd5b8151610b2e81614017565b6000808335601e198436030181126143df57600080fd5b83016020810192503590506001600160401b038111156143fe57600080fd5b8036038213156105c557600080fd5b6040815261442e6040820161442185613c47565b6001600160a01b03169052565b60208301356060820152600061444760408501856143c8565b610120608085015261445e61016085018284614178565b91505061446e60608601866143c8565b848303603f190160a0860152614485838284614178565b608088013560c08781019190915260a089013560e080890191909152908901356101008801529093506144bd925087019050866143c8565b848303603f19016101208601526144d5838284614178565b925050506144e76101008601866143c8565b848303603f19016101408601526144ff838284614178565b93505050508260208301529392505050565b60006020828403121561452357600080fd5b8135610b2e81613c2f565b6000808335601e1984360301811261454557600080fd5b8301803591506001600160401b0382111561455f57600080fd5b6020019150600581901b36038213156105c557600080fd5b60006020828403121561458957600080fd5b610b2e82614101565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126145be57600080fd5b9190910192915050565b8381526001600160a01b03831660208201526060604082018190526000906145f290830184613fd8565b95945050505050565b6001600160f81b031991909116815260200190565b634e487b7160e01b600052602160045260246000fd5b6002811061464457634e487b7160e01b600052602160045260246000fd5b9052565b60018060a01b038516815283602082015260806040820152600061466f6080830185613fd8565b90506145f26060830184614626565b8051801515811461196357600080fd5b600080604083850312156146a157600080fd5b6146aa8361467e565b915060208301516001600160401b038111156146c557600080fd5b6146d185828601614240565b9150509250929050565b6001600160a01b03831681526040602082018190526000906107b790830184613fd8565b60006020828403121561471157600080fd5b610b2e8261467e565b80356002811061196357600080fd5b6000806040838503121561473c57600080fd5b6147458361471a565b915060208301356140f681614017565b8281526000825161476d816020850160208701613fb4565b919091016020019392505050565b60ff84168152604060208201819052810182905260008360608301825b858110156147c85782356147ab81613c2f565b6001600160a01b0316825260209283019290910190600101614798565b509695505050505050565b6000808335601e198436030181126147ea57600080fd5b8301803591506001600160401b0382111561480457600080fd5b6020019150368190038213156105c557600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161484157614841614819565b5060010190565b818103818111156106d9576106d9614819565b600082601f83011261486c57600080fd5b813561487a61425f82614219565b81815284602083860101111561488f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156148c157600080fd5b83356148cc81614017565b925060208401356001600160f81b0319811681146148e957600080fd5b915060408401356001600160401b0381111561490457600080fd5b6149108682870161485b565b9150509250925092565b60008060006060848603121561492f57600080fd5b6149388461471a565b925060208401356148e981614017565b6000806040838503121561495b57600080fd5b823561496681613c2f565b915060208301356001600160401b0381111561498157600080fd5b6146d18582860161485b565b600080604083850312156149a057600080fd5b823561496681614017565b6020808252810182905260006040600584901b830181019083018583605e1936839003015b87821015614a5057868503603f1901845282358181126149ef57600080fd5b890180356149fc81613c2f565b6001600160a01b0316865260208181013590870152614a1e60408201826143c8565b915060606040880152614a35606088018383614178565b965050506020830192506020840193506001820191506149d0565b5092979650505050505050565b803560208310156106d957600019602084900360031b1b1692915050565b80356001600160d01b0319811690600684101561436d576001600160d01b031960069490940360031b84901b1690921692915050565b8183823760009101908152919050565b60006001600160401b03821115614ada57614ada6141d3565b5060051b60200190565b600082601f830112614af557600080fd5b8151614b0361425f82614ac1565b8082825260208201915060208360051b860101925085831115614b2557600080fd5b602085015b83811015614b665780516001600160401b03811115614b4857600080fd5b614b57886020838a0101614240565b84525060209283019201614b2a565b5095945050505050565b600060208284031215614b8257600080fd5b81516001600160401b03811115614b9857600080fd5b6107b784828501614ae4565b60008060408385031215614bb757600080fd5b82516001600160401b03811115614bcd57600080fd5b8301601f81018513614bde57600080fd5b8051614bec61425f82614ac1565b8082825260208201915060208360051b850101925087831115614c0e57600080fd5b6020840193505b82841015614c3757614c268461467e565b825260209384019390910190614c15565b8095505050505060208301516001600160401b03811115614c5757600080fd5b6146d185828601614ae456feb8bc84bd77f5eb08210b8eb20fd63b3ec6a7992d277ab94663bae0e066f792aca26469706673582212200d02bd25771a1d64ddd9e60d84bf6d2381636a59cdc715f1f0a2c7ae4cc5390864736f6c634300081a00336080604052348015600f57600080fd5b506109c28061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636a2216571161005b5780636a221657146100d357806378272525146100e65780639517e29f146100f95780639abb6e171461010c57600080fd5b80633f707e6b1461008257806350c890221461009757806361085573146100aa575b600080fd5b6100956100903660046105ba565b61012d565b005b6100956100a53660046105ba565b610197565b6100bd6100b83660046105ba565b6101fc565b6040516100ca91906106c4565b60405180910390f35b6100956100e1366004610710565b6102be565b6100956100f43660046107da565b6102e1565b6100956101073660046107da565b61038a565b61011f61011a3660046105ba565b610429565b6040516100ca929190610864565b8060005b81811015610191573684848381811061014c5761014c6108be565b905060200281019061015e91906108d4565b905061018761017060208301836108f4565b6020830135610182604085018561090f565b610553565b5050600101610131565b50505050565b8060005b8181101561019157368484838181106101b6576101b66108be565b90506020028101906101c891906108d4565b90506101f16101da60208301836108f4565b60208301356101ec604085018561090f565b610589565b50505060010161019b565b6060818067ffffffffffffffff811115610218576102186106fa565b60405190808252806020026020018201604052801561024b57816020015b60608152602001906001900390816102365790505b50915060005b818110156102b6573685858381811061026c5761026c6108be565b905060200281019061027e91906108d4565b905061029061017060208301836108f4565b8483815181106102a2576102a26108be565b602090810291909101015250600101610251565b505092915050565b604051600080835160208501865afa3d6000833e80156102dc573d82f35b503d81fd5b604051638a91b0e360e01b81526001600160a01b03841690638a91b0e39061030f908590859060040161095d565b600060405180830381600087803b15801561032957600080fd5b505af115801561033d573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e93500190505b60405180910390a150505050565b6040516306d61fe760e41b81526001600160a01b03841690636d61fe70906103b8908590859060040161095d565b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905061037c565b606080828067ffffffffffffffff811115610446576104466106fa565b60405190808252806020026020018201604052801561047957816020015b60608152602001906001900390816104645790505b5091508067ffffffffffffffff811115610495576104956106fa565b6040519080825280602002602001820160405280156104be578160200160208202803683370190505b50925060005b8181101561054a57368686838181106104df576104df6108be565b90506020028101906104f191906108d4565b90506105036101da60208301836108f4565b868481518110610515576105156108be565b6020026020010186858151811061052e5761052e6108be565b60209081029190910101919091529015159052506001016104c4565b50509250929050565b60405181838237600038838387895af1610570573d6000823e3d81fd5b3d8152602081013d6000823e3d01604052949350505050565b604051600090828482376000388483888a5af191503d8152602081013d6000823e3d81016040525094509492505050565b600080602083850312156105cd57600080fd5b823567ffffffffffffffff8111156105e457600080fd5b8301601f810185136105f557600080fd5b803567ffffffffffffffff81111561060c57600080fd5b8560208260051b840101111561062157600080fd5b6020919091019590945092505050565b600082825180855260208501945060208160051b8301016020850160005b838110156106b857848303601f190188528151805180855260005b818110156106865760208184018101518783018201520161066a565b506000602082870101526020601f19601f8301168601019450505060208201915060208801975060018101905061064f565b50909695505050505050565b6020815260006106d76020830184610631565b9392505050565b80356001600160a01b03811681146106f557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072357600080fd5b61072c836106de565b9150602083013567ffffffffffffffff81111561074857600080fd5b8301601f8101851361075957600080fd5b803567ffffffffffffffff811115610773576107736106fa565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107a2576107a26106fa565b6040528181528282016020018710156107ba57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080606085870312156107f057600080fd5b84359350610800602086016106de565b9250604085013567ffffffffffffffff81111561081c57600080fd5b8501601f8101871361082d57600080fd5b803567ffffffffffffffff81111561084457600080fd5b87602082840101111561085657600080fd5b949793965060200194505050565b6040808252835190820181905260009060208501906060840190835b818110156108a05783511515835260209384019390920191600101610880565b505083810360208501526108b48186610631565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126108ea57600080fd5b9190910192915050565b60006020828403121561090657600080fd5b6106d7826106de565b6000808335601e1984360301811261092657600080fd5b83018035915067ffffffffffffffff82111561094157600080fd5b60200191503681900382131561095657600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122070a59ccb068447caf8f890604a59f833f8725c3e3d150ae8a83f15caaa17700e64736f6c634300081a0033" + "0x000000000000000000000000000000000000000054eb9d8a32e548026d135a6f60a0604052348015600f57600080fd5b50604051601a906046565b604051809103906000f0801580156035573d6000803e3d6000fd5b506001600160a01b03166080526053565b6109e180614ee983390190565b608051614e2e6100bb600039600081816112230152818161141b0152818161157c01528181611dc501528181612216015281816122f0015281816123870152818161241e0152818161357a015281816136320152818161395a0152613a7a0152614e2e6000f3fe60806040526004361061012e5760003560e01c8063a71763a8116100ab578063d828435d1161006f578063d828435d146104a2578063e9ae5c53146104c2578063ea5f61d0146104e2578063eab77e1714610502578063f2dc691d14610522578063f698da251461054257610135565b8063a71763a8146103c7578063b0d691fe146103e7578063b875d5d81461040a578063d03c791414610455578063d691c9641461047557610135565b806355d559f4116100f257806355d559f4146102dd5780635faac46b1461030d57806379aad60e1461033b5780639517e29f1461035b5780639cfd7cff1461037b57610135565b80630a664dba146101e0578063112d3a7d146102245780631626ba7e1461025457806319822f7c1461028d578063540fb4f9146102bb57610135565b3661013557005b600036606060003560e01c63bc197c81811463f23a6e6182141763150b7a028214171561016657806020526020603cf35b50336000818152600460209081526040808320546001600160e01b031984351680855260058452828520958552949092528220546001600160a01b0391821692911690806101b48484610557565b915091506101c28888610615565b95506101d084848484610728565b5050505050915050805190602001f35b3480156101ec57600080fd5b50336000908152600460205260409020546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023057600080fd5b5061024461023f366004613d49565b6107ab565b604051901515815260200161021b565b34801561026057600080fd5b5061027461026f366004613da4565b610820565b6040516001600160e01b0319909116815260200161021b565b34801561029957600080fd5b506102ad6102a8366004613e08565b610b96565b60405190815260200161021b565b3480156102c757600080fd5b506102db6102d6366004613eab565b610caa565b005b3480156102e957600080fd5b506102fd6102f8366004613fa7565b610d5a565b60405161021b9493929190614048565b34801561031957600080fd5b5061032d610328366004614094565b610fb7565b60405161021b9291906140c0565b34801561034757600080fd5b506102db610356366004614123565b610fd3565b34801561036757600080fd5b506102db610376366004613d49565b6110c8565b34801561038757600080fd5b50604080518082018252601a81527f7268696e6573746f6e652e73616665373537392e76312e302e300000000000006020820152905161021b9190614164565b3480156103d357600080fd5b506102db6103e2366004613d49565b611293565b3480156103f357600080fd5b506f71727de22e5e9d8baf0edac6f37da032610207565b34801561041657600080fd5b5061020761042536600461418d565b6001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b031690565b34801561046157600080fd5b506102446104703660046141aa565b6115ba565b34801561048157600080fd5b50610495610490366004613da4565b611662565b60405161021b91906141c3565b3480156104ae57600080fd5b506102ad6104bd366004614228565b61174b565b3480156104ce57600080fd5b506102db6104dd366004613da4565b6117eb565b3480156104ee57600080fd5b5061032d6104fd366004614094565b611b88565b34801561050e57600080fd5b506102db61051d366004614267565b611b99565b34801561052e57600080fd5b5061024461053d3660046141aa565b611c08565b34801561054e57600080fd5b506102ad611c57565b6060806001600160a01b038416156105d7576105be33856000610578611cb0565b3460003660405160240161058f94939291906142f6565b60408051601f198184030181529190526020810180516001600160e01b031663d68f602560e01b179052611cbc565b9150818060200190518101906105d491906143df565b91505b6001600160a01b0383161561060e576105f533846000610578611cb0565b90508080602001905181019061060b91906143df565b90505b9250929050565b600080356001600160e01b031916815260036020908152604080832033845290915290208054606091906001600160a01b03811690600160a01b900460f81b8161068557604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61069381607f60f91b611d65565b156106d7576106cd338388886106a7611cb0565b6040516020016106b993929190614413565b604051602081830303815290604052611d77565b9350505050610722565b6106e2816000611d65565b1561071e576106cd3383600089896106f8611cb0565b60405160200161070a93929190614413565b604051602081830303815290604052611cbc565b5050505b92915050565b6001600160a01b0384161561077e5761077e338560008560405160240161074f9190614164565b60408051601f198184030181529190526020810180516001600160e01b0316630b9dfbed60e11b179052611e4c565b6001600160a01b038316156107a5576107a5338460008460405160240161074f9190614164565b50505050565b6000600185036107dd57336001600160a01b038516036107cd57506001610818565b6107d684611eeb565b9050610818565b600285036107ee576107d684611ef9565b60038503610801576107d6848484611f07565b60048503610814576107d6848484611f53565b5060005b949350505050565b6000338282036109ba5760006108f1826001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108919190614439565b60408051602081018a90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca91015b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052611f8e565b8051602090910120604051635ae6bd3760e01b8152600481018290529091506001600160a01b03831690635ae6bd3790602401602060405180830381865afa158015610941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109659190614439565b6000036109a85760405162461bcd60e51b815260206004820152601160248201527012185cda081b9bdd08185c1c1c9bdd9959607a1b604482015260640161067c565b50630b135d3f60e11b9150610b8f9050565b60006109c96014828688614452565b6109d29161447c565b60601c90508015806109ea57506109e881611eeb565b155b15610b14576000610a89836001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190614439565b60408051602081018b90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca91016108c0565b805160208201209091506001600160a01b03841663934f3a118284610ab18a6014818e614452565b6040518563ffffffff1660e01b8152600401610ad094939291906144c9565b60006040518083038186803b158015610ae857600080fd5b505afa158015610afc573d6000803e3d6000fd5b50630b135d3f60e11b9750610b8f9650505050505050565b6000610b733383610b23611cb0565b8a610b318a6014818e614452565b604051602401610b4494939291906142f6565b60408051601f198184030181529190526020810180516001600160e01b0316637aa8f17760e11b179052611d77565b905080806020019051810190610b8991906144f5565b93505050505b9392505050565b60006f71727de22e5e9d8baf0edac6f37da032610bb1611cb0565b6001600160a01b031614610bd857604051635629665f60e11b815260040160405180910390fd5b6020840135606081901c90811580610bf65750610bf482611eeb565b155b15610c0b57610c0486612008565b9250610c70565b6000610c56338460008a8a604051602401610c27929190614557565b60408051601f198184030181529190526020810180516001600160e01b0316639700320360e01b179052611cbc565b905080806020019051810190610c6c9190614439565b9350505b8315610ca157610ca1336f71727de22e5e9d8baf0edac6f37da0328660405180602001604052806000815250611e4c565b50509392505050565b6f71727de22e5e9d8baf0edac6f37da032610cc3611cb0565b6001600160a01b03161480610cf05750610cdb611cb0565b6001600160a01b0316336001600160a01b0316145b610d0d57604051635629665f60e11b815260040160405180910390fd5b610d3f610d1d602083018361465b565b610d2a6020840184614678565b610d3a60608601604087016146c1565b6120b7565b610d4f898989898989898961216e565b505050505050505050565b6060600080823682610d706101008901896146dc565b9092509050610d83600660008385614452565b610d8c91614722565b60d01c9450610d9f600c60068385614452565b610da891614722565b60d01c9350610dba81600c8185614452565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516101c081019091527fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f815294975095509293505060208084019250610e3691508a018a61465b565b6001600160a01b0316815260200188602001358152602001888060400190610e5e91906146dc565b604051610e6c929190614758565b6040519081900390208152602001610e8760608a018a6146dc565b604051610e95929190614758565b60405180910390208152602001610eab8961248d565b6001600160801b03168152602001610ec28961249d565b6001600160801b031681526020018860a001358152602001610ee3896124b2565b6001600160801b03168152602001610efa896124c1565b6001600160801b03168152602001610f1560e08a018a6146dc565b604051610f23929190614758565b6040805191829003909120825265ffffffffffff80881660208401528616908201526001600160a01b0388166060909101526101c08120909150601960f81b600160f81b610f6f611c57565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529550505092959194509250565b60606000610fc860013386866124d6565b915091509250929050565b6f71727de22e5e9d8baf0edac6f37da032610fec611cb0565b6001600160a01b031614806110195750611004611cb0565b6001600160a01b0316336001600160a01b0316145b61103657604051635629665f60e11b815260040160405180910390fd5b61104160013361269a565b8060005b81811015611097573684848381811061106057611060614768565b9050602002810190611072919061477e565b905061108e33611085602084018461465b565b60019190612715565b50600101611045565b5060405133907ff48581d8a62b775b74f2fb67f1d5806a9a356fbcc598040ab3071d3e37af40c290600090a2505050565b336000908152600460209081526040808320547fd00bcad91b775f25eb0aee15808d12dfdaa6dc5a7d6b754e26f9c205d2a3b8df909252822054639517e29f60e01b926001600160a01b039283169290911690806111268484610557565b915091506111416f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b0316611152611cb0565b6001600160a01b0316148061117f575061116a611cb0565b6001600160a01b0316336001600160a01b0316145b61119c57604051635629665f60e11b815260040160405180910390fd5b606060018a036111b8576111b189898961280a565b905061121d565b60028a036111cb576111b1898989612866565b60038a036111de576111b1898989612881565b60048a036111f1576111b1898989612a00565b89611201576111b1898989612ba0565b60405163041c38b360e41b8152600481018b905260240161067c565b611286337f00000000000000000000000000000000000000000000000000000000000000008c8c856040516024016112579392919061479e565b60408051601f198184030181529190526020810180516001600160e01b0316639517e29f60e01b179052612d51565b50610d4f84848484610728565b336000908152600460209081526040808320547fc45a7acaba78a7b4c4432b604d301355b314c0a7811768a1ee2563c9d34ca4e09092529091205484916314e2ec7560e31b916001600160a01b0391821691908116908416821480159061130c5750806001600160a01b0316846001600160a01b031614155b156114925760008061131e8484610557565b915091506113396f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b031661134a611cb0565b6001600160a01b031614806113775750611362611cb0565b6001600160a01b0316336001600160a01b0316145b61139457604051635629665f60e11b815260040160405180910390fd5b606060018b036113b0576113a98a8a8a612dea565b9050611415565b60028b036113c3576113a98a8a8a612e13565b60038b036113d6576113a98a8a8a612e34565b60048b036113e9576113a98a8a8a612e80565b8a6113f9576113a98a8a8a612f38565b60405163041c38b360e41b8152600481018c905260240161067c565b61147e337f00000000000000000000000000000000000000000000000000000000000000008d8d8560405160240161144f9392919061479e565b60408051601f198184030181529190526020810180516001600160e01b0316637827252560e01b17905261308b565b5061148b84848484610728565b50506115b0565b6f71727de22e5e9d8baf0edac6f37da0326114ab611cb0565b6001600160a01b031614806114d857506114c3611cb0565b6001600160a01b0316336001600160a01b0316145b6114f557604051635629665f60e11b815260040160405180910390fd5b6060600189036115115761150a888888612dea565b9050611576565b600289036115245761150a888888612e13565b600389036115375761150a888888612e34565b6004890361154a5761150a888888612e80565b8861155a5761150a888888612f38565b60405163041c38b360e41b8152600481018a905260240161067c565b610d4f337f00000000000000000000000000000000000000000000000000000000000000008b8b8560405160240161144f9392919061479e565b5050505050505050565b600081600881901b6115d082600160f81b611d65565b156115de5760019250611621565b6115e9826000611d65565b156115f75760019250611621565b611609826001600160f81b0319611d65565b156116175760019250611621565b5060009392505050565b8280156116345750611634816000611d65565b15611640575050919050565b828015611656575061165681600160f81b611d65565b15611617575050919050565b606061167461166f611cb0565b611ef9565b6116a557611680611cb0565b604051635c93ff2f60e11b81526001600160a01b03909116600482015260240161067c565b336000908152600460209081526040808320547f4162c930ade27880570b0eb31efbc8a626b97e81a40ced27163509dfe16398829092528220546335a4725960e21b926001600160a01b039283169290911690806117038484610557565b9150915061170f611cb0565b600261171b8282613141565b8a600881901b61172d81838e8e6131cc565b99505050505061173f84848484610728565b50505050509392505050565b6000602082901b640100000000600160c01b03166f71727de22e5e9d8baf0edac6f37da032604051631aab3f0d60e11b81526001600160a01b0386811660048301526001600160c01b038416602483015291909116906335567e1a90604401602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190614439565b336000908152600460209081526040808320547fccfe1b2bef70acd8e661aeb5430e147f4c75cb320972acba718a28da428e1a3090925282205463e9ae5c5360e01b926001600160a01b039283169290911690806118498484610557565b915091506118646f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b0316611875611cb0565b6001600160a01b031614806118a2575061188d611cb0565b6001600160a01b0316336001600160a01b0316145b6118bf57604051635629665f60e11b815260040160405180910390fd5b87600881901b336118d1826000611d65565b15611a2a576118e483600160f81b611d65565b156119055789358a016020810190356118fe838383613574565b5050611b79565b611910836000611d65565b15611978576000803660006119258e8e6135db565b935093509350935061196f85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e4c92505050565b50505050611b79565b61198a836001600160f81b0319611d65565b15611a0f57600061199e6014828c8e614452565b6119a79161447c565b60601c90503660008c8c60149080926119c293929190614452565b91509150611a07848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5192505050565b505050611b79565b82604051632e5bf3f960e21b815260040161067c91906147d1565b611a3882600160f81b611d65565b15611b5e57611a4b83600160f81b611d65565b15611a655789358a016020810190356118fe83838361362c565b611a70836000611d65565b15611acf57600080366000611a858e8e6135db565b935093509350935061196f85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061369392505050565b611ae1836001600160f81b0319611d65565b15611a0f576000611af56014828c8e614452565b611afe9161447c565b60601c90503660008c8c6014908092611b1993929190614452565b91509150611a07848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061308b92505050565b816040516308c3ee0360e11b815260040161067c91906147d1565b5050506115b084848484610728565b60606000610fc860023386866124d6565b6f71727de22e5e9d8baf0edac6f37da032611bb2611cb0565b6001600160a01b03161480611bdf5750611bca611cb0565b6001600160a01b0316336001600160a01b0316145b611bfc57604051635629665f60e11b815260040160405180910390fd5b6107a5848484846120b7565b600060018203611c1a57506001919050565b60028203611c2a57506001919050565b60038203611c3a57506001919050565b60048203611c4a57506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60131936013560601c90565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401611cf3949392919061481e565b6000604051808303816000875af1158015611d12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3a9190810190614864565b9250905080611d5c57604051632b3f6d1160e21b815260040160405180910390fd5b50949350505050565b6001600160f81b031990811691161490565b606060008383604051602401611d8e9291906148b1565b60408051601f198184030181529181526020820180516001600160e01b0316636a22165760e01b17905251909150600090611def907f00000000000000000000000000000000000000000000000000000000000000009084906024016148b1565b60408051601f19818403018152919052602080820180516001600160e01b031663b4faba0960e01b17815282519293509091600091895afa5060203d036040519350808401604052806020853e50600051610ca157825160208401fd5b60405163468721a760e01b81526000906001600160a01b0386169063468721a790611e8190879087908790879060040161481e565b6020604051808303816000875af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec491906148d5565b905080611ee457604051632b3f6d1160e21b815260040160405180910390fd5b5050505050565b600061072260013384613749565b600061072260023384613749565b600080611f168385018561418d565b6001600160e01b03191660009081526003602090815260408083203384529091529020546001600160a01b03908116908616149150509392505050565b60008080611f63848601866148ff565b915091506000611f73838361378d565b6001600160a01b039081169088161493505050509392505050565b6060601960f81b600160f81b858585604051602001611fae92919061492b565b60408051808303601f190181529082905280516020918201206001600160f81b0319958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b600080808080612028866f71727de22e5e9d8baf0edac6f37da032610d5a565b8351602085012060405163934f3a1160e01b81529498509296509094509250339163934f3a119161205f9188908690600401614951565b60006040518083038186803b15801561207757600080fd5b505afa925050508015612088575060015b61209f5761209860018385613823565b94506120ae565b6120ab60008385613823565b94505b50505050919050565b33600090815260208190526040902080546001600160a01b0319166001600160a01b0386169081179091551561213257612132338560008487876040516024016121039392919061497c565b60408051601f198184030181529190526020810180516001600160e01b031663f05c04e160e01b179052611e4c565b6040516001600160a01b0385169033907f9452c8fb077c3ea8f28a77c87488af657b1e44d010ad9a5992d73870da040e9490600090a350505050565b3360009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f602052604090205460609088906001600160a01b0316612266576121ba60013361269a565b60005b8181101561226057368b8b838181106121d8576121d8614768565b90506020028101906121ea919061477e565b905061220e6121fc602083018361465b565b61220960208401846146dc565b61280a565b9350612257337f00000000000000000000000000000000000000000000000000000000000000006001612244602086018661465b565b886040516024016112579392919061479e565b506001016121bd565b50612287565b80156122875760405163d8e3ed1b60e01b815233600482015260240161067c565b61229260023361269a565b508560005b8181101561232757368989838181106122b2576122b2614768565b90506020028101906122c4919061477e565b90506122e86122d6602083018361465b565b6122e360208401846146dc565b612866565b935061231e337f00000000000000000000000000000000000000000000000000000000000000006002612244602086018661465b565b50600101612297565b5084905060005b818110156123be573687878381811061234957612349614768565b905060200281019061235b919061477e565b905061237f61236d602083018361465b565b61237a60208401846146dc565b612881565b93506123b5337f00000000000000000000000000000000000000000000000000000000000000006003612244602086018661465b565b5060010161232e565b5082905060005b8181101561245557368585838181106123e0576123e0614768565b90506020028101906123f2919061477e565b9050612416612404602083018361465b565b61241160208401846146dc565b612a00565b935061244c337f00000000000000000000000000000000000000000000000000000000000000006004612244602086018661465b565b506001016123c5565b5060405133907ff48581d8a62b775b74f2fb67f1d5806a9a356fbcc598040ab3071d3e37af40c290600090a250505050505050505050565b6000610722826080013560801c90565b60006001600160801b03608083013516610722565b600060c082013560801c610722565b60006001600160801b0360c083013516610722565b606060006001600160a01b0384166001148015906124fc57506124fa868686613749565b155b1561252557604051637c84ecfb60e01b81526001600160a01b038516600482015260240161067c565b826000036125465760405163f725081760e01b815260040160405180910390fd5b826001600160401b0381111561255e5761255e614328565b604051908082528060200260200182016040528015612587578160200160208202803683370190505b506001600160a01b038086166000908152602089815260408083208a85168452909152812054929450911691505b6001600160a01b038216158015906125d757506001600160a01b038216600114155b80156125e257508381105b1561264757818382815181106125fa576125fa614768565b6001600160a01b039283166020918202929092018101919091529281166000908152888452604080822089841683529094529290922054909116908061263f816149ea565b9150506125b5565b6001600160a01b0382166001148015906126615750600081115b1561268d5782612672600183614a03565b8151811061268257612682614768565b602002602001015191505b8083525094509492505050565b60016000908152602083815260408083206001600160a01b03808616855292529091205416156126dd576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602093845260408082206001600160a01b0394909416825292909352912080546001600160a01b0319169091179055565b6001600160a01b038116158061273457506001600160a01b0381166001145b1561275d57604051637c84ecfb60e01b81526001600160a01b038216600482015260240161067c565b6001600160a01b03818116600090815260208581526040808320868516845290915290205416156127ac57604051631034f46960e21b81526001600160a01b038216600482015260240161067c565b60016000908152602084815260408083206001600160a01b039586168085528184528285208054968816808752988552838620918652908452919093208054949095166001600160a01b031994851617909455528154169091179055565b60608360016128198282613141565b61282560013388612715565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b60608360026128758282613141565b61282560023388612715565b60608360036128908282613141565b600080806128a087890189614a67565b919450925090506001600160e01b031983166306d61fe760e41b14806128d657506001600160e01b03198316638a91b0e360e01b145b15612900576040516379bd117b60e01b81526001600160e01b03198416600482015260240161067c565b61290b826000611d65565b8015612920575061292082607f60f91b611d65565b1561294057816040516376087dc160e01b815260040161067c91906147d1565b6001600160e01b0319831660009081526003602090815260408083203384529091529020546001600160a01b031615612998576040516374420d1560e01b81526001600160e01b03198416600482015260240161067c565b6001600160e01b03199092166000908152600360209081526040808320338452909152902080546001600160a01b038a166001600160a01b031960f89490941c600160a01b02939093166001600160a81b031990911617919091179055925050509392505050565b6060836004612a0f8282613141565b60008080612a1f87890189614ad5565b91945092509050600080846001811115612a3b57612a3b6147e6565b148015612a5057506001600160e01b03198316155b15612ac65750336000908152600460205260409020546001600160a01b03168015612a995760405163741cbe0360e01b81526001600160a01b038216600482015260240161067c565b33600090815260046020526040902080546001600160a01b0319166001600160a01b038c16179055612b93565b6001846001811115612ada57612ada6147e6565b03612b7a57506001600160e01b0319821660009081526005602090815260408083203384529091529020546001600160a01b03168015612b385760405163741cbe0360e01b81526001600160a01b038216600482015260240161067c565b6001600160e01b031983166000908152600560209081526040808320338452909152902080546001600160a01b0319166001600160a01b038c16179055612b93565b604051635691922f60e01b815260040160405180910390fd5b5098975050505050505050565b60608235830160208181019135908581013586018082019190359060408801358801908101903584838114612be85760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015612d0a576000888883818110612c0757612c07614768565b90506020020135905060018103612c4657612c408d888885818110612c2e57612c2e614768565b905060200281019061220991906146dc565b50612d01565b60028103612c7657612c408d888885818110612c6457612c64614768565b90506020028101906122e391906146dc565b60038103612ca657612c408d888885818110612c9457612c94614768565b905060200281019061237a91906146dc565b60048103612cd657612c408d888885818110612cc457612cc4614768565b905060200281019061241191906146dc565b60405163484d218160e01b81526001600160a01b038e1660048201526024810182905260440161067c565b50600101612beb565b5082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b60405163468721a760e01b81526000906001600160a01b0385169063468721a790612d879086908590879060019060040161481e565b6020604051808303816000875af1158015612da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dca91906148d5565b9050806107a557604051632b3f6d1160e21b815260040160405180910390fd5b60606000612dfa83850185614b03565b92509050612e0b600133838861385b565b509392505050565b60606000612e2383850185614b03565b92509050612e0b600233838861385b565b60606000612e4483850185614b48565b6001600160e01b03199091166000908152600360209081526040808320338452909152902080546001600160a01b031916905595945050505050565b6060600080612e9184860186614ad5565b945090925090506000826001811115612eac57612eac6147e6565b148015612ec157506001600160e01b03198116155b15612ee85733600090815260046020526040902080546001600160a01b0319169055610ca1565b6001826001811115612efc57612efc6147e6565b03612b7a576001600160e01b031981166000908152600560209081526040808320338452909152902080546001600160a01b0319169055610ca1565b60608235830160208181019135908581013586018082019190359060408801358801908101903584838114612f805760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015612d0a576000888883818110612f9f57612f9f614768565b90506020020135905060018103612fe357612fdd8d888885818110612fc657612fc6614768565b9050602002810190612fd891906146dc565b612dea565b50613082565b6002810361301857612fdd8d88888581811061300157613001614768565b905060200281019061301391906146dc565b612e13565b6003810361304d57612fdd8d88888581811061303657613036614768565b905060200281019061304891906146dc565b612e34565b60048103612cd657612fdd8d88888581811061306b5761306b614768565b905060200281019061307d91906146dc565b612e80565b50600101612f83565b60405163468721a760e01b81526000906001600160a01b0385169063468721a7906130c19086908590879060019060040161481e565b6020604051808303816000875af11580156130e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310491906148d5565b9050806107a557604080516001600160a01b038616815260006020820152600080516020614dd9833981519152910160405180910390a150505050565b336000908152602081905260409020546001600160a01b031680156131c75760405163529562a160e01b81523360048201526001600160a01b0384811660248301526044820184905282169063529562a19060640160006040518083038186803b1580156131ae57600080fd5b505afa1580156131c2573d6000803e3d6000fd5b505050505b505050565b60606131d9856000611d65565b156133c5576131ec84600160f81b611d65565b1561320f5782358301602081019035613206338383613952565b92505050610818565b61321a846000611d65565b156132ce5760008036600061322f87876135db565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161324e5790505094506132a733858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cbc92505050565b856000815181106132ba576132ba614768565b602002602001018190525050505050610818565b6132e0846001600160f81b0319611d65565b156133aa5760006132f46014828587614452565b6132fd9161447c565b60601c90503660006133128560148189614452565b604080516001808252818301909252929450909250816020015b606081526020019060019003908161332c579050509350613384338484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139ce92505050565b8460008151811061339757613397614768565b6020026020010181905250505050610818565b83604051632e5bf3f960e21b815260040161067c91906147d1565b6133d385600160f81b611d65565b15613559576133e684600160f81b611d65565b1561340b5782358301602081019035613400338383613a6f565b935061081892505050565b613416846000611d65565b156134a35760008036600061342b87876135db565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161344a5790505094506132a733858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b6592505050565b6134b5846001600160f81b0319611d65565b156133aa5760006134c96014828587614452565b6134d29161447c565b60601c90503660006134e78560148189614452565b604080516001808252818301909252929450909250816020015b6060815260200190600190039081613501579050509350613384338484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c2592505050565b846040516308c3ee0360e11b815260040161067c91906147d1565b6131c7837f000000000000000000000000000000000000000000000000000000000000000084846040516024016135ac929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316633f707e6b60e01b179052612d51565b60008036816135ed6014828789614452565b6135f69161447c565b60601c9350613609603460148789614452565b61361291614c18565b92506136218560348189614452565b949793965094505050565b6131c7837f00000000000000000000000000000000000000000000000000000000000000008484604051602401613664929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316632864481160e11b17905261308b565b60405163468721a760e01b81526000906001600160a01b0386169063468721a7906136c890879087908790879060040161481e565b6020604051808303816000875af11580156136e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370b91906148d5565b905080611ee457604080516001600160a01b038716815260006020820152600080516020614dd9833981519152910160405180910390a15050505050565b600060016001600160a01b038316148015906108185750506001600160a01b0390811660009081526020938452604080822093831682529290935291205416151590565b6000808360018111156137a2576137a26147e6565b1480156137b757506001600160e01b03198216155b156137d75750336000908152600460205260409020546001600160a01b03165b60018360018111156137eb576137eb6147e6565b0361072257506001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b0316919050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561384b57600061384e565b60015b60ff161717949350505050565b6001600160a01b038116158061387a57506001600160a01b0381166001145b156138a357604051637c84ecfb60e01b81526001600160a01b038316600482015260240161067c565b6001600160a01b0382811660009081526020868152604080832087851684529091529020548116908216146138f657604051637c84ecfb60e01b81526001600160a01b038216600482015260240161067c565b6001600160a01b039081166000908152602085815260408083209584168084528683528184208054968616855297835281842090845282529091208054939092166001600160a01b031993841617909155919091528154169055565b60606139bb847f0000000000000000000000000000000000000000000000000000000000000000858560405160240161398c929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316636108557360e01b1790526139ce565b8060200190518101906108189190614ce5565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b8152600401613a06949392919061481e565b6000604051808303816000875af1158015613a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a4d9190810190614864565b9250905080612e0b57604051632b3f6d1160e21b815260040160405180910390fd5b6060806000613adb867f00000000000000000000000000000000000000000000000000000000000000008787604051602401613aac929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316639abb6e1760e01b179052613c25565b905080806020019051810190613af19190614d19565b8151919450925060005b81811015613b5a57848181518110613b1557613b15614768565b6020026020010151613b5257604080516001600160a01b038a16815260208101839052600080516020614dd9833981519152910160405180910390a15b600101613afb565b505050935093915050565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401613b9c949392919061481e565b6000604051808303816000875af1158015613bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613be39190810190614864565b9250905080611d5c57604080516001600160a01b038816815260006020820152600080516020614dd9833981519152910160405180910390a150949350505050565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b8152600401613c5d949392919061481e565b6000604051808303816000875af1158015613c7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ca49190810190614864565b9250905080612e0b57604080516001600160a01b038716815260006020820152600080516020614dd9833981519152910160405180910390a1509392505050565b6001600160a01b0381168114613cfa57600080fd5b50565b8035611c5281613ce5565b60008083601f840112613d1a57600080fd5b5081356001600160401b03811115613d3157600080fd5b60208301915083602082850101111561060e57600080fd5b60008060008060608587031215613d5f57600080fd5b843593506020850135613d7181613ce5565b925060408501356001600160401b03811115613d8c57600080fd5b613d9887828801613d08565b95989497509550505050565b600080600060408486031215613db957600080fd5b8335925060208401356001600160401b03811115613dd657600080fd5b613de286828701613d08565b9497909650939450505050565b60006101208284031215613e0257600080fd5b50919050565b600080600060608486031215613e1d57600080fd5b83356001600160401b03811115613e3357600080fd5b613e3f86828701613def565b9660208601359650604090950135949350505050565b60008083601f840112613e6757600080fd5b5081356001600160401b03811115613e7e57600080fd5b6020830191508360208260051b850101111561060e57600080fd5b600060608284031215613e0257600080fd5b600080600080600080600080600060a08a8c031215613ec957600080fd5b89356001600160401b03811115613edf57600080fd5b613eeb8c828d01613e55565b909a5098505060208a01356001600160401b03811115613f0a57600080fd5b613f168c828d01613e55565b90985096505060408a01356001600160401b03811115613f3557600080fd5b613f418c828d01613e55565b90965094505060608a01356001600160401b03811115613f6057600080fd5b613f6c8c828d01613e55565b90945092505060808a01356001600160401b03811115613f8b57600080fd5b613f978c828d01613e99565b9150509295985092959850929598565b60008060408385031215613fba57600080fd5b82356001600160401b03811115613fd057600080fd5b613fdc85828601613def565b9250506020830135613fed81613ce5565b809150509250929050565b60005b83811015614013578181015183820152602001613ffb565b50506000910152565b60008151808452614034816020860160208601613ff8565b601f01601f19169290920160200192915050565b60808152600061405b608083018761401c565b65ffffffffffff8616602084015265ffffffffffff851660408401528281036060840152614089818561401c565b979650505050505050565b600080604083850312156140a757600080fd5b82356140b281613ce5565b946020939093013593505050565b6040808252835190820181905260009060208501906060840190835b818110156141035783516001600160a01b03168352602093840193909201916001016140dc565b50506001600160a01b039490941660209390930192909252509092915050565b6000806020838503121561413657600080fd5b82356001600160401b0381111561414c57600080fd5b61415885828601613e55565b90969095509350505050565b602081526000610b8f602083018461401c565b6001600160e01b031981168114613cfa57600080fd5b60006020828403121561419f57600080fd5b8135610b8f81614177565b6000602082840312156141bc57600080fd5b5035919050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561421c57603f1987860301845261420785835161401c565b945060209384019391909101906001016141eb565b50929695505050505050565b6000806040838503121561423b57600080fd5b823561424681613ce5565b91506020830135613fed81613ce5565b803560ff81168114611c5257600080fd5b6000806000806060858703121561427d57600080fd5b843561428881613ce5565b935060208501356001600160401b038111156142a357600080fd5b6142af87828801613e55565b90945092506142c2905060408601614256565b905092959194509250565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038516815283602082015260606040820152600061431e6060830184866142cd565b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561436657614366614328565b604052919050565b60006001600160401b0382111561438757614387614328565b50601f01601f191660200190565b600082601f8301126143a657600080fd5b81516143b96143b48261436e565b61433e565b8181528460208386010111156143ce57600080fd5b610818826020830160208701613ff8565b6000602082840312156143f157600080fd5b81516001600160401b0381111561440757600080fd5b61081884828501614395565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60006020828403121561444b57600080fd5b5051919050565b6000808585111561446257600080fd5b8386111561446f57600080fd5b5050820193919092039150565b80356bffffffffffffffffffffffff1981169060148410156144c2576bffffffffffffffffffffffff196bffffffffffffffffffffffff198560140360031b1b82161691505b5092915050565b8481526060602082015260006144e2606083018661401c565b82810360408401526140898185876142cd565b60006020828403121561450757600080fd5b8151610b8f81614177565b6000808335601e1984360301811261452957600080fd5b83016020810192503590506001600160401b0381111561454857600080fd5b80360382131561060e57600080fd5b604081526145786040820161456b85613cfd565b6001600160a01b03169052565b6020830135606082015260006145916040850185614512565b61012060808501526145a8610160850182846142cd565b9150506145b86060860186614512565b848303603f190160a08601526145cf8382846142cd565b608088013560c08781019190915260a089013560e0808901919091529089013561010088015290935061460792508701905086614512565b848303603f190161012086015261461f8382846142cd565b92505050614631610100860186614512565b848303603f19016101408601526146498382846142cd565b93505050508260208301529392505050565b60006020828403121561466d57600080fd5b8135610b8f81613ce5565b6000808335601e1984360301811261468f57600080fd5b8301803591506001600160401b038211156146a957600080fd5b6020019150600581901b360382131561060e57600080fd5b6000602082840312156146d357600080fd5b610b8f82614256565b6000808335601e198436030181126146f357600080fd5b8301803591506001600160401b0382111561470d57600080fd5b60200191503681900382131561060e57600080fd5b80356001600160d01b031981169060068410156144c2576001600160d01b031960069490940360031b84901b1690921692915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261479457600080fd5b9190910192915050565b8381526001600160a01b03831660208201526060604082018190526000906147c89083018461401c565b95945050505050565b6001600160f81b031991909116815260200190565b634e487b7160e01b600052602160045260246000fd5b6002811061481a57634e487b7160e01b600052602160045260246000fd5b9052565b60018060a01b0385168152836020820152608060408201526000614845608083018561401c565b90506147c860608301846147fc565b80518015158114611c5257600080fd5b6000806040838503121561487757600080fd5b61488083614854565b915060208301516001600160401b0381111561489b57600080fd5b6148a785828601614395565b9150509250929050565b6001600160a01b03831681526040602082018190526000906108189083018461401c565b6000602082840312156148e757600080fd5b610b8f82614854565b803560028110611c5257600080fd5b6000806040838503121561491257600080fd5b61491b836148f0565b91506020830135613fed81614177565b82815260008251614943816020850160208701613ff8565b919091016020019392505050565b83815260606020820152600061496a606083018561401c565b828103604084015261431e818561401c565b60ff84168152604060208201819052810182905260008360608301825b858110156149c95782356149ac81613ce5565b6001600160a01b0316825260209283019290910190600101614999565b509695505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016149fc576149fc6149d4565b5060010190565b81810381811115610722576107226149d4565b600082601f830112614a2757600080fd5b8135614a356143b48261436e565b818152846020838601011115614a4a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614a7c57600080fd5b8335614a8781614177565b925060208401356001600160f81b031981168114614aa457600080fd5b915060408401356001600160401b03811115614abf57600080fd5b614acb86828701614a16565b9150509250925092565b600080600060608486031215614aea57600080fd5b614af3846148f0565b92506020840135614aa481614177565b60008060408385031215614b1657600080fd5b8235614b2181613ce5565b915060208301356001600160401b03811115614b3c57600080fd5b6148a785828601614a16565b60008060408385031215614b5b57600080fd5b8235614b2181614177565b6020808252810182905260006040600584901b830181019083018583605e1936839003015b87821015614c0b57868503603f190184528235818112614baa57600080fd5b89018035614bb781613ce5565b6001600160a01b0316865260208181013590870152614bd96040820182614512565b915060606040880152614bf06060880183836142cd565b96505050602083019250602084019350600182019150614b8b565b5092979650505050505050565b8035602083101561072257600019602084900360031b1b1692915050565b60006001600160401b03821115614c4f57614c4f614328565b5060051b60200190565b600082601f830112614c6a57600080fd5b8151614c786143b482614c36565b8082825260208201915060208360051b860101925085831115614c9a57600080fd5b602085015b83811015614cdb5780516001600160401b03811115614cbd57600080fd5b614ccc886020838a0101614395565b84525060209283019201614c9f565b5095945050505050565b600060208284031215614cf757600080fd5b81516001600160401b03811115614d0d57600080fd5b61081884828501614c59565b60008060408385031215614d2c57600080fd5b82516001600160401b03811115614d4257600080fd5b8301601f81018513614d5357600080fd5b8051614d616143b482614c36565b8082825260208201915060208360051b850101925087831115614d8357600080fd5b6020840193505b82841015614dac57614d9b84614854565b825260209384019390910190614d8a565b8095505050505060208301516001600160401b03811115614dcc57600080fd5b6148a785828601614c5956feb8bc84bd77f5eb08210b8eb20fd63b3ec6a7992d277ab94663bae0e066f792aca2646970667358221220ea7603497be0a0e1ddc106666c75af038c8db18b0f9143f6418b0e8b232c109164736f6c634300081a00336080604052348015600f57600080fd5b506109c28061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636a2216571161005b5780636a221657146100d357806378272525146100e65780639517e29f146100f95780639abb6e171461010c57600080fd5b80633f707e6b1461008257806350c890221461009757806361085573146100aa575b600080fd5b6100956100903660046105ba565b61012d565b005b6100956100a53660046105ba565b610197565b6100bd6100b83660046105ba565b6101fc565b6040516100ca91906106c4565b60405180910390f35b6100956100e1366004610710565b6102be565b6100956100f43660046107da565b6102e1565b6100956101073660046107da565b61038a565b61011f61011a3660046105ba565b610429565b6040516100ca929190610864565b8060005b81811015610191573684848381811061014c5761014c6108be565b905060200281019061015e91906108d4565b905061018761017060208301836108f4565b6020830135610182604085018561090f565b610553565b5050600101610131565b50505050565b8060005b8181101561019157368484838181106101b6576101b66108be565b90506020028101906101c891906108d4565b90506101f16101da60208301836108f4565b60208301356101ec604085018561090f565b610589565b50505060010161019b565b6060818067ffffffffffffffff811115610218576102186106fa565b60405190808252806020026020018201604052801561024b57816020015b60608152602001906001900390816102365790505b50915060005b818110156102b6573685858381811061026c5761026c6108be565b905060200281019061027e91906108d4565b905061029061017060208301836108f4565b8483815181106102a2576102a26108be565b602090810291909101015250600101610251565b505092915050565b604051600080835160208501865afa3d6000833e80156102dc573d82f35b503d81fd5b604051638a91b0e360e01b81526001600160a01b03841690638a91b0e39061030f908590859060040161095d565b600060405180830381600087803b15801561032957600080fd5b505af115801561033d573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e93500190505b60405180910390a150505050565b6040516306d61fe760e41b81526001600160a01b03841690636d61fe70906103b8908590859060040161095d565b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905061037c565b606080828067ffffffffffffffff811115610446576104466106fa565b60405190808252806020026020018201604052801561047957816020015b60608152602001906001900390816104645790505b5091508067ffffffffffffffff811115610495576104956106fa565b6040519080825280602002602001820160405280156104be578160200160208202803683370190505b50925060005b8181101561054a57368686838181106104df576104df6108be565b90506020028101906104f191906108d4565b90506105036101da60208301836108f4565b868481518110610515576105156108be565b6020026020010186858151811061052e5761052e6108be565b60209081029190910101919091529015159052506001016104c4565b50509250929050565b60405181838237600038838387895af1610570573d6000823e3d81fd5b3d8152602081013d6000823e3d01604052949350505050565b604051600090828482376000388483888a5af191503d8152602081013d6000823e3d81016040525094509492505050565b600080602083850312156105cd57600080fd5b823567ffffffffffffffff8111156105e457600080fd5b8301601f810185136105f557600080fd5b803567ffffffffffffffff81111561060c57600080fd5b8560208260051b840101111561062157600080fd5b6020919091019590945092505050565b600082825180855260208501945060208160051b8301016020850160005b838110156106b857848303601f190188528151805180855260005b818110156106865760208184018101518783018201520161066a565b506000602082870101526020601f19601f8301168601019450505060208201915060208801975060018101905061064f565b50909695505050505050565b6020815260006106d76020830184610631565b9392505050565b80356001600160a01b03811681146106f557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072357600080fd5b61072c836106de565b9150602083013567ffffffffffffffff81111561074857600080fd5b8301601f8101851361075957600080fd5b803567ffffffffffffffff811115610773576107736106fa565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107a2576107a26106fa565b6040528181528282016020018710156107ba57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080606085870312156107f057600080fd5b84359350610800602086016106de565b9250604085013567ffffffffffffffff81111561081c57600080fd5b8501601f8101871361082d57600080fd5b803567ffffffffffffffff81111561084457600080fd5b87602082840101111561085657600080fd5b949793965060200194505050565b6040808252835190820181905260009060208501906060840190835b818110156108a05783511515835260209384019390920191600101610880565b505083810360208501526108b48186610631565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126108ea57600080fd5b9190910192915050565b60006020828403121561090657600080fd5b6106d7826106de565b6000808335601e1984360301811261092657600080fd5b83018035915067ffffffffffffffff82111561094157600080fd5b60200191503681900382131561095657600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea26469706673582212205c0679bac7989901111b6824de732603e322da5b9b75ee077344853294d8b7b664736f6c634300081a0033" /* ========= V06 CORE ========= */ diff --git a/packages/permissionless-test/mock-aa-infra/alto/index.ts b/packages/permissionless-test/mock-aa-infra/alto/index.ts index 75708535..eb1bc0f2 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/index.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/index.ts @@ -147,18 +147,6 @@ export const setupContracts = async (rpc: string) => { gas: 15_000_000n, nonce: nonce++ }), - walletClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, - data: SAFE_7579_MODULE_CREATECALL, - gas: 15_000_000n, - nonce: nonce++ - }), - walletClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, - data: SAFE_7579_REGISTRY_CREATECALL, - gas: 15_000_000n, - nonce: nonce++ - }), walletClient.sendTransaction({ to: DETERMINISTIC_DEPLOYER, data: SAFE_7579_LAUNCHPAD_CREATECALL, @@ -334,6 +322,18 @@ export const setupContracts = async (rpc: string) => { data: SAFE_MULTI_SEND_CALL_ONLY_CREATECALL, gas: 15_000_000n, nonce: nonce++ + }), + walletClient.sendTransaction({ + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_MODULE_CREATECALL, + gas: 15_000_000n, + nonce: nonce++ + }), + walletClient.sendTransaction({ + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_REGISTRY_CREATECALL, + gas: 15_000_000n, + nonce: nonce++ }) ]) @@ -451,8 +451,8 @@ export const setupContracts = async (rpc: string) => { "0x41675C099F32341bf84BFc5382aF534df5C7461a", // Safe Singleton "0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526", // Safe Multi Send "0x9641d764fc13c8B624c04430C7356C1C7C8102e2", // Safe Multi Send Call Only - "0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2", // Safe 7579 module - "0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE", // Safe 7579 launchpad + "0x7579EE8307284F293B1927136486880611F20002", // Safe 7579 module + "0x7579011aB74c46090561ea277Ba79D510c6C00ff", // Safe 7579 launchpad "0x25A4b2F363678E13A0A5DB79b712dE00347a593E", // Safe 7579 Registry "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789", // EntryPoint V0.6 "0x9406Cc6185a346906296840746125a0E44976454", // Simple Account Factory V0.6 diff --git a/packages/permissionless-test/src/utils.ts b/packages/permissionless-test/src/utils.ts index a0e95139..967325cd 100644 --- a/packages/permissionless-test/src/utils.ts +++ b/packages/permissionless-test/src/utils.ts @@ -343,11 +343,17 @@ export const getSafeClient = async ({ version: "1.4.1", saltNonce: 420n, safe4337ModuleAddress: erc7579 - ? "0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2" + ? "0x7579EE8307284F293B1927136486880611F20002" : undefined, erc7579LaunchpadAddress: erc7579 - ? "0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE" - : undefined + ? "0x7579011aB74c46090561ea277Ba79D510c6C00ff" + : undefined, + ...(erc7579 + ? { + attesters: ["0x000000333034E9f539ce08819E12c1b8Cb29084d"], + attestersThreshold: 1 + } + : {}) }) } From d2b46567eb36675c345388a731719d4b07f0402e Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Tue, 29 Oct 2024 12:20:32 +0000 Subject: [PATCH 3/6] Fix registry and 7579 launchpad deployment --- bun.lockb | Bin 536664 -> 536648 bytes .../mock-aa-infra/alto/index.ts | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 5b9ea53759792dcae66a687596af03e3d50fce79..6dc806fc515139d15126380bcff4e7fff8616661 100755 GIT binary patch delta 41742 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 delta 41944 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 diff --git a/packages/permissionless-test/mock-aa-infra/alto/index.ts b/packages/permissionless-test/mock-aa-infra/alto/index.ts index eb1bc0f2..55c4e97d 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/index.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/index.ts @@ -149,13 +149,13 @@ export const setupContracts = async (rpc: string) => { }), walletClient.sendTransaction({ to: DETERMINISTIC_DEPLOYER, - data: SAFE_7579_LAUNCHPAD_CREATECALL, + data: SAFE_V07_MODULE_CREATECALL, gas: 15_000_000n, nonce: nonce++ }), walletClient.sendTransaction({ to: DETERMINISTIC_DEPLOYER, - data: SAFE_V07_MODULE_CREATECALL, + data: SAFE_7579_REGISTRY_CREATECALL, gas: 15_000_000n, nonce: nonce++ }), @@ -331,7 +331,7 @@ export const setupContracts = async (rpc: string) => { }), walletClient.sendTransaction({ to: SAFE_SINGLETON_FACTORY, - data: SAFE_7579_REGISTRY_CREATECALL, + data: SAFE_7579_LAUNCHPAD_CREATECALL, gas: 15_000_000n, nonce: nonce++ }) From 036e22f663fb8aa0a9e2503e067a77bca3850152 Mon Sep 17 00:00:00 2001 From: yoanslvy <97676023+yoanslvy@users.noreply.github.com> Date: Wed, 30 Oct 2024 10:09:42 +0100 Subject: [PATCH 4/6] test: abi changes --- bun.lockb | Bin 503392 -> 503392 bytes .../actions/erc7579/isModuleInstalled.ts | 21 +++++++----------- .../utils/encodeInstallModule.ts | 15 ++++++++----- .../utils/encodeUninstallModule.ts | 15 ++++++++----- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/bun.lockb b/bun.lockb index 23bd6465877dff5ade512655fe1f12d8c992a6ef..621ba7c5313a4e5b8abdb316b4dddf274050684e 100755 GIT binary patch delta 98 zcmaEGNAAHLxrQx_rjHpJx0^j?oNfZ7&xtb~-^a)}ecCmq^+2xMbtZX!Af5J%DP002 q{f}wB2$0SbWoNfZ7&xtb~-^a)_ecCmq^+2xMbtZX!Af5J%DP002 q{f}wB2$0SbW Date: Thu, 31 Oct 2024 13:52:57 +0700 Subject: [PATCH 5/6] feat: update tests (#1) * feat: update safe7579 tests * feat: update deployments * chore: format --------- Co-authored-by: kopy-kat --- bun.lockb | Bin 503392 -> 503440 bytes .../mock-aa-infra/alto/constants.ts | 16 ++- .../mock-aa-infra/alto/index.ts | 92 ++++++++++++++++-- .../actions/erc7579/installModule.test.ts | 8 +- .../actions/erc7579/installModules.test.ts | 8 +- .../actions/erc7579/isModuleInstalled.test.ts | 4 +- .../actions/erc7579/uninstallModule.test.ts | 4 +- .../actions/erc7579/uninstallModules.test.ts | 4 +- 8 files changed, 110 insertions(+), 26 deletions(-) diff --git a/bun.lockb b/bun.lockb index 621ba7c5313a4e5b8abdb316b4dddf274050684e..6e1b001a11f9b9a4706e528cfbdfd92b11a87e5a 100755 GIT binary patch delta 36800 zcmeI5cYIXky0&K^3{3|V4WJTf4pKwzPVTuR7+knK80j0lb9w(ruht7OsxwAS zUp_7}Y?mphwLxtZ7zVq~dNQ*5$w+X?F)g-GrN&*>{J`adPHeS$-o)VAU0RHV>|ioA zXkxHci^Eax_>cNd!R{;%Omv54S|a-*SVZ7Jgag?OIhYj;WDvdi!O?*#QkIt)7^XEPb$c3kG13UazD5H5Bm!hz)K6*?Dy97wJ%UpP*;7~%Yu1_Jw; zSmt5{$YDnerWVf#4oq-)D-o{OT?mK9>_aWpeZ%1quvgVGv=JD?ol0-i%SgBK7EjTubca!s&fg3GNy*ldIIC6Gg7a=TwgINK_O^$)%N zG05q+A)Mc*UjGbii~QZ|KY(1lpAin=5S!o^R5;5&+rjD5z?3G$HGuSH89@FlG z8F6L8Am`Z*KSJQ{tT;Koqt{8+JA+hvxNl5O-xZ!4-@_U4b|k0o9SkIF2K)L5lEwY- zgEQy{a_bMGban)f_d3Z1!quJ2%(?Kdtbe45n7i!mG^Xj`wyGe7e6P z52nk}jz{^G-u_=9C%MX}15^9Y4z^BkB?}t?H&mR_^Mms9}K3x=6Z3J9>))E#cGgSwFabria(t6S2WGXHzw!V!hK^>wRBIiT`Onn)cm=@wzd*&pg8NDo$bBJF3w#+4m%>> zBRXL`_sw1)=d-uBZ%nFg_(Ar-4^FplGrS0#-~b;H1zGP8a$N_297y_u-DkQd*=``n z6*%1MNBDS>#VoIrEDpktbTGHs$@pmny=$C_5q$R;3v$Ne*xJeZIX?aZA3xs5{}WT2 z=i%t)Z1OOg8+w^HzucJ*a(k}u`jsFDl8d>@c{RvU1^B`3o9Xr0lo&`ZXTH}-78f=P zjN*6}Y{DgAZ`4DBX0x!Z*Z{!ar z+rH#=lJnXO(pS3QAya)8V4v{~{2g!Bn4J7w_aryrBarG7uYUou-ItXA7qZ<~Xve0t z-X7F%Bn21nBgpmt*&C4D*?)jk+ub)N+c)D6Cl}P*>m-XIualfbE0FD4H}`jh*505o zc@(vSCwKP=(w!Z>J<0d}u3jfO<8EGWOwOm5dy?&Xr#@O3?0`QxUoXUK!By+yW1`-& zF*%2W+>6MX!R$mL9Ip8ETu;I8%wWD?qPr7m?|=F^h&`Ce~KuESOEzfURxps3)pY$F;xua6QJJ*41|DxA7dVP~~3&=hAiq~IvR)Jjcx1H~TJX8`}y}>6ShsNZL zwz(%cgBp;(q+f$vk#C*fJL^DB_Y=qs`OUc<fsOon*s@oDaJvxu?q9 zuXa!JEaEx()R8HCkmaAbS5W0_-vGJ%w?MAXJ0J&=_4h!|cB}iwfW+mHRIsmoR^F9WjPBs0Nf!6;dSkNPp77*e z9G@C{q%3drd%bKivpj>z{BQ+{wc(aD}-Vr(f8Q#9oXGd}|^PCIZlWf1xxyZ*SeLR@31z!ijV>9Iq zulEKd{Y_rq5jnotr@Iy8j=9sPyW6MxKNH)}Uyet;VPkU5A9GJ~3(LIzS7f^n)-tzV&r+>%!o_mtZd*7LQ;^yE^3I6{7 z=q>&~P`{`D&INN5>wJSqe(>Jzb&})x>6W{!c`JXPXwHwjCbaKbc%9?~A&~pDmDgK4 z+khNMe196~1aiiEIx|2{zcB>#d<0J-3a?sr7) z{VCplD#%~ES!$nXDEzm`EtumA`YW>CT(l$SdwY^AvJ~WsUkBRtrId@CKn^4u+zN8b zR)TzIxy#3s^d%tM-3M|(4>(Ifwtv*euLk)NtO0q9Yyi1OE5VjL{@z4^6TAy@M(=|h zNG@Qj*Gabf6y%nC1#(5c207g~&hOm+9pr+41UZmw_mhwR8MNb{1nkQ4BChBFTG zcgM*Io1@MZYU$%!Ia_->lGC+uwslW(%R7Ud&z|lYR$lEt2 z$4`LgbQgQOJdke&3%ota@r!up0M~R0$O)G^uLU`fY`EO(J0hnq^6@0+lLF~)^!iOc zp5*wOy`E?&kX%r)k0ANWbSKEy?jH9fXMDfcNsfQe>m=)sdVNRaavsNc95ac)(%Cs#d=cb8a{3KkC%FQfKyJWmAP>%W+<)Ny6VSe-+=c?r7QX{I z{1v(7KX|*wTa)X+-B2sN09G^yFngl_c>R&C;0+4z7vR} zSmz7<5GxqK;~EP8g*-xc;V+r*#9x8cTj0&zU+Y}#~3P}3bjfu=ix{^?F3{=PKb5yU%zIFQ^UO?L#@okH9d zO?L!gCp6s=)O1Hs(;Y$hMZldwO?L$GDpu1SK}~lAHQf=^bVrcgA;dR?9o-4UH%xkd zj%vCisOgR%9uJN0`oxQ!w&SDJeuwZ zYPut+>5d@XlF)QV5bq4)=klgIf_8K#5Z^cH`MIj;jv%`c=pgKhfBBA})DSS|R&glf^=v zkn^6&5}{tmecxoM5c}A!Dn_e4$c^d}Ojfs1l+dn=BNn zh0IS(CWRUyYn#a;p;pNL)MT+xC*;(aED`F3+|Nvw3Zc)f78A;Z@ZU_vg>oVN3zK<5 zg^=;3$$X(whs1tI&Gg%_k3%P$c zSt^9Sw^~dn6T&~3j0@#L`i~~_gbE>}&Sbt&DMWrUSs+vi(VtBg3e`g9FD8>hjga-L z$s(av$o|b_u}~-E{BE*Ds26hoFj*>u>a7+N%7pNClX0Qkup+$~-X>P$+0P38Ol1TO z`9h@-X=buOs1l;hO%@8(LS~xDq);PdwJ=#E)C$=llf^=vkkis+iBK=(wlY~Ngj!oI zCX@-`HYVdjxscx0WS&qVWb9-zU#Ju!JDV&Js)T6RWT8+kWVSPz6l#R5_9lyjS|NKE zlf^=vkh81F5}{tm?O?K02<>LIm{2B!cQ+Xq%7t`$^-_64g^R~3XvWr3xp~m+S6pAP%UKcV=^h!2w4%6MMABR-OFULP$%T{Hd!Ln z3%UE6EEPigSuG}%3E}-s#)Wbr{Q#4BLWPjg$7H@xDMX?s3xp~m+Sg>EP%UKkGno`> zgslE1i-cMsdw|Jep-#v-&}4~FFXSF%vQ!8iY_*tBCWJFh#)WbreW1xap+d+w#ALou zDMSu6Ss+vi(Zfs@3e`g9;U<$pjgWPO$s(av$Uf3!u}~-EWSJ}x>V@2+OqL3vK~{?i zWkPtc$+%E1qz^HfCsYU-Lrvxjl|tlblLbPR5Ix3Zp-?SkW}8e3HA2=flSM+UkUiXF zu}~-E9BZ;fs26gNGg&Hxj<;G&C=gR0+|z$wHx8$h^R0Qm7HK z#+xh>YK80zO%@AvLe51dON4qMcY?`MAvDoyF`-NdUu-filnd#3Ci8>}A>$I0`9h@- znPjp+s1l-+O%@8(Lgu9=lR}MPSNFqtP*2pLzJ%oi$!$W2pMxs<_ncVq|ju6P$fj?nk*Em zh0J*-lR}MqTm@F3Rgq$LiB|^QBn=)A{ zgs!(*Oehn=H<*kI}A>$^K`9h@-x!GiaP$fifFoVNE|Ymeg^*EVGGC|^B6piC z5UPaeJthl*$KWU){u}A>#v+`9h@-sWw?4 zR0+`!O%@8(LgrSJNufr_`p9IFP%C7AY_eFW6LLN=St8U6x!X*Z3ZYM}78A;ZaE-~h zP%fl@W-?Ex5HdbDnJ-idk-wQN5UPae7bXjZY9aGWlS!dQ$ok4;kx(mSe{Hf@s1tH( zO_m7tLhd&vONG$4R*MN`LijtAaiLsD|GUXNp+d;`-ekT|DMWrSSs+vi(H~6~3e`ep zoynw7BV_$#vPh^EvVS&NEYt}(znCl$>V@22O_mCw->eoB%7pOmCgVc6kp73sJfT9! zs5hA}R0@&pCJTfr!-{BgURx}*pVj=C$_yHkLXD8s%w&;JD`Yn}SuE5EIcX+KgnA*j zg~?JO6tY@OC=PLZMp7+{t88s1dSu zHd!Rp3fWV%wrCQF2RA-BKDQXw?JYB8Zq2p?!NE|d%D2bs(h zDuj%KP38-gLL}2MRFXSF! zvQ!8iX|lSM+UkUhd=u}~-Ej5Jvy)C;+zOqL3vldTpL%7pM} zlX0P3NI%77o=_oVoP$q=WHW?Snh4ir|^Mnc^W1Pu+p;CyPW3oV~5~AmtEEKAR z%=1hpg&HC2e3L~&t&klzSuE5EITx5L5$c89@g_@!(1liu31vd~B9n2UTu7f_GEb-w zGA5eL7b=Cw#U=}cDj}L@vQVf7_)M)}puSx_?&4XWx+b^z3HU^lyyTxpyl5j*{nj*} zZ9kT`Kd~2jcS@T(X>#+`lP0IF9Ufeo>c1xKq(oQT#LxSI_-Gmqtn=;{hEI#((A^#X zwp#Gxmg{bzKPy+@ZoFP|50#^nRKNaJhxoMIQ`zngrQ`E%cpLjDmwZq-cPn?_$?lHy ziP?k2Xm?p~Tri*NcbdCF-mVke>Fx%5JM;t=h`Jlrec;%Z!^Q3*D8KD56CY}B&s*vRx!UC= z-mo{^9quN;~bJ?)N9N9Tt0L7w4b z0XbX+$z2#l%H2)(hJE4Ix-0N@{otN+Hv^6<*dJNvZkD$j0Jq-V9Cv&U(@Hq*xx`#Z zt_^SV;v@Zd@H9M5oeyZrbH_)jvmGDSbcxS!fzNOt+$47mk5=b1oF=>DF77UhP{T<-98e74e2 zeh}X2?szyp-;f91UG7dm`Fc1WV?&pp91q6(-Hk%|Rd)}#I~nfvR(dR9V3o_!kbG()kJ?gqr=a|jy9eFn!tthV z9*hsUI~C=myNBJK1~&(e2k0a2PDgnP91qY()A0Vw*Xa!8a!3x3dBZbNJ{XQi?c?sw zLU}9>OdgcJ( z<5A|G;IPr%g(!1tI5c#Da8c^o=hHeQCP4AIGsD43Z$1%aKC+UB)fRUbqs+%y@(_B( zT^`DB!ST>|)!ij1^O>yN$*;Magfbs5d=B`!yU8do;iHBr-*9;;%1gcBo9?E-Epx|i z8n`nqLzcUH3y$wRmm_?&xRc-YcKIk*aL;3S&)rm%H@bVj;c%J;x!L6h-tY>zE$*t_ zT?uy&9ABXi;rJq5g(O+P@DUs*xf+?_?lYfuI^6zTdkmkuE8yXDfXlzRr2Cz%Fnr-| z2FhvP?n`&qz_oPumAjd6t=xU>ZWde{ceUU+r6*;tMp#yF? z%AdFkxw{UI2Q2qcOLr?!o`Y~`1&3J%ijao?bh{HA*DHnaH^%mV*eAXobsqH`+PS*{ z<%T|P+QackzY+Nv1@6iY-tH!pe{r`P95>`<x3*3URPbTj1t`PS4)?!qS z_lE58gll*!($K$E4>)f8N~Ddq>j}r=ZOG2c z5W>$#bVtH9!+_#^D%ut5Ht0a><@%IKw9pb_2y@VwgMriFwsu&*ARYz)f>^th=Y+u5@=C99QOP zguRlj1lfBHm+=hJLG2QO6J3@=e#j{>rp-gjt5UeA3GH&9|p&P{q1l*FCvG# zJI&n&ICizd;dFN!QGN+!4rjP~3FX@o-jI*!;0#|zZi3^1cb2j3GS*;-lo?*z>bG7Z6fd%8$$BnxfqgL z@;1WG@_3+J;uF7vGCS7eFv;D!D1U?rc@SnY&J=I=KFa)%vlhI}-3KUV zv0If26xhuXx1<_5%6C`3yAR>m%?e*Hc7w!rTain#b$l77x%&v^YtW9noZTd`-N(pW zpWl`4K7l(4({i|~;dR=E3fIu~hBy2a&fcHF>F#P!9)uZkMGM@0hVo!Ij$`j4m`z~q zCM{uIYRsmzUa1+I(z@cQ-M4H?yP(-mty7`RX&JloF~fXR@%IR?-|%|P?(|QE2 zN{!i^c6c{FfqoD&1UVYv#SvZ%8HNl;j!QkcIc?~X{C}&5AiP}B7a4@*^C|fUAiP?! z4-!FoA-xeklD{po6B14xTA9`(!5$WP!D21Kixe*)>yQ_b4ai31Wn>dliEKe$LHNGQ z_gP+?xE&dSGW(<8HHc}*mB>}dbYv`Y4stGX9ZL7ddvxv# z)ejkf9Eco*9E=Q1{jnu&&lX)!Y@6!xO4^=@4k)H09T7emo==(o1^E^E4f!46e?YB6 zcwyuzgcn1eL3pi$*EV=9<9USFFV-WsA-v4M%L=@Va0GHBl7;j~M&eiZWMp*nK7Dat*@E1hbJjNF2EU8IN3uT!c(O*m=xh*q~#<<5PWJOBEdMoUs zRbVN?hmhjo?FoCL`yzZc=TAfu5}kX&RWax%gz7lV-@$kE6# z2p<}A7sBqDK0vCG50N$)7ed&v!H-zEpZI|{g$l1$@JhrN$l1tPWE^r1Qia80mwszgPAF+Y0mGc|OnU**7;k^?r}95PRZg z_uJ_E+B%PU9FCpL@O*tSG8LJKT#Q_RHscX?miscY2?@i0jIG;-3__jf??aHG$kE6# z$gtFyH_|%pk%Qt%$Vg-qax!ux@-V&vcq6TQ;&kkkGm$aK*~nOA1F{j}gX(8sd#*vQ zMR^&*$NMiq_zaQLz*CXqkrR+#FbzA<DuScqS_Bi1mCVj$DAS2iT!VYm7@_``MilI|^QpZRRQU#?-ZM;;n?;c|C!wLD=Qj zDx?%)zs8FYo*1)p?tdWl2>+4>k!DD9 zgy+E_1n0g9JK1fG3Qur(Ld!p(&m+$wcO&;8dB`N>9OOKN9lNp%?N-=HTk!|;BjjV` zeQfLXn8%IS*2@u|Xz@dNF>))yzRW(sbe|$M$dYEM`>N71cDWv9p1$6MtVHfey;FsK zb3cka3w;=Q1Sv%3A?!4II>NrJ#~?9;9c6!wMb{!cOXUe@e`F)_67n*#8L32iBkPd$ zNComD!iOzCi>yU@Ay0DObU~pVvMYjag9E!ERS3^yZ^!mbKz6}`*&|^-ws!^UGm%-y zY-A3?Ggn>%;@K)sPI)r=6T%bA-;qC%?Fi2wPe5`Io;S8>zQ0Zkc_R1*7E*=0g}jZh zN9qm8dSo4PVXE8PX&t(ZMUg#jv$JmY7#>CXBK?qEQzPF_>o|tJxBnga9?3)oB8MP{ zBS#>e5q44E9a)CeUyAg=8tj8akYNbVBzczD3~7#}AuW+Msr7HC?cI$Rl-@yjg7`kd zYd^f!vlZd>oljCN-bp(*_($r(chaWzXV-z3AUt#AnIg{&^O32@4QSmF*$e4{bVGWi zc6m3gV}j>m2O#~B{>T92AY>pCLU>yCGS-!+U9TZ;A?z-A1;W!Vo@VhBYBz*uP3Iwb z$P|Q~upfl$$i>Jd$RuPkG6lH|;i=O}$Owd|Orwxf z5ZsOxI1M=ii6Lhr`(h>dMA{M9=0g#lCGo82V5Be71?h_Ltf(W>i66Uf!mF?wDt~}K zBY#7_KsF&fRa$`XWa2io;hD}PWHQ1t9QMyu!NO$BMq!^xGYF&;@Lkdt&ATyC!2+um^BkX~>7U3BOzY;1$<{~(;NCXP7aCWvC z!3=rvh8Jsiab`bcf8+`@T#WHckgqWlcGo-tZXq%cIRI^V-DVNWlkjGGB{CFmqQ@fZ z@rF`?@cYFz$gK$866~wM&(W@yUFU2?;Z5Wn!msk4;>$B+k+hY@~5#xKP91=xYeD6A}dOI3ERw>C z@w9z0vH*D;c?@ZA?Cb6^WC1cCDMaQXBQTE^NC;rI;;B~v)|ZorI!@Z1~MA>5+pkrxmyJca3|B5z~nuOgqp ze~#RO6eG7GrO1QGqsUz3W3>Mi*?{RsZbM-mvIi<*WGCbW)F&gCA{QW6Ap8b}mu7h> zmX}%gM|MJ9!3qsWMSc{_24;g?QitLK~ zfR*7zH(q4pMK$g`PRMIybW022L z{(`;N^YRieC-G7d8+?e&LasutM(B7Y=p*brUe#$hX18O-Zb7a_*fni7l7*at`J8|i z<7I4Kv|)d_TqrNr>fNzbVT^fd)0&qSjb72IYv^#8jxbZe zHej2BE9*f(xbDy z`<#7ftI(F!FSKou`XRXR@iRkn!X5tHpnGUb>icl0TkECmY;yt+rMk2W4P6~;7wR5t zy|umMw$%Lgp?<0N+lMMr548{Vn0xy!q1CtV(z5%Ft-JEP9K)d0=KEU?Z9UJc!&8%2 zwcIOp@B=MBX+4ea>KLw1bz9YPSlg{$#T$KU?{=X*Qj1r$?9qh{u!m|9*Jmd*S&-?KUibU}X2cIk|yAV7owI`bQ545Y@u$aJJ2nVtqlFteTG7A}k(C>qAAhVJE z5&8mz?GE(%Fz0ahhd4(B0>`2l2%umC8A6Ukg2*ulXEYMwK;|GPJ5L9>2hK(~knNJ6 z#ItsabFv9^7)Y+yBvvqNj-1T}2)Bc~nVgDnx@ia(I}_nRa`k3AuLe1gT<*L;V0)V| zfeL4|0O5=lvYuQ%J!?qvz3EvUZ6z1OamXYWwhZA)RU;fS$$8yncJt&i??p%+NgPP7 z-2JRz0JZZeIKu~MG5i^MbUcA@>z_urfM*d-|2z^%E}xOrEzZ(vgv+aQt^wI>t@9<2 zLngW1uOpo8n+WS05!OFKIQ=IG=iB7<&%n;e-@N`qAh5Nq-_H;n$gJd*S7hyyyy=Rp zuKdy6*6=qQ9SCHSbN(IaifoArm)HfQ?}{HGFpm`{$9MNS$@=yn)ei16$?1D#1>&|z zebIoMwu?6;IfLCms($WC7I()F&R`J8S72{SXE*RDualhbF<$>aY1^*`TchDPZ%A^& zGrgWks^G|BO6@%7SRvK6&)4tZvECv$8t=(~rYBo6CG&ndG|hO~X;s zeLTtH4CfW@$(-bJECTx*?@8C2V|Ma=uE`cxW_7h4v%uSClIlA5Bv)k-$k!|Bo@8;c z^9JXQlo&EewZuKi1MXfP7#vXeA7e)>=^?fn;%>*GWz|AKVpu6zl*#?c+1a6?zsvJNd?(teuiy&cQD< zuFMPGHj`8@x+mH0C9jj5SH1i7?*ELOeuK9o`EmYEJOA85!3L5I-}O4ljoAcJeeCrw zK(_mm@;@NkeT8;x`n9+J2k|0v0WBE8E&ACTkbHU5pec^zkUB#l z$-{j-$=^Yvz%JlekT2O;K0cFNvGMTP$t|zJFYLcuKs&Cq zlTF*B&gnxzf5lL+!!8$OgROi5vLEXEc|DVy!T#>aEm1!lupa)Q@Mwx8(rOwv#C@ukl5yxrd!hoHOAM`V(p zq0`_wqf34Ke}>$k%Y8bMduFEBTN!UHkQ_G~KRDqWZ%A?l=6XGoY&Xw6$#&N`6YfcV zrY60fNwiOnS&+4*y$Fka!W+CH$>PoU(I0#fpZ~yfnGn@$*VzZ zf2i|tkn=ej#;a!l&%7@sAXnsD=l9MZK~DD*$PM|;X$!;h zZK>O0#I{&EXV48~!yUXH2JtV@*Vzx`g7xAU@&<(8rV0ZVpO?@P6N5( zW1Qna{0p4z_3_RL&PmSmK>li(2698oLH-7~8stE7z2|}0xq$`lL4D+B2)55`@E_K> z!V7%?*MqEAdOhh2B3ZoIeU5b2Z4{iLZcM&>J9E=q->d_zuW{ zWc{r7P~d_-^bwil7Hop&jGDmhK^`caupJMWeVDk55)_`HuU41f= zqqhO+w{=glxP#X-nU$Qh7{3oNHW0>WPPP-sweJgZvj>8l?VccqO!7M55$^vD>WKX} zW?(D!UzwhtL9q^6J_wI%O z>?9! z*?tf_xtF)g2RYpk=TOi-8d+e&{Xov}0Iweeav=W#j&?uB zeI~hLXZiSZd_2itgcCt7c#``J>Z6&0FUJ(0U@FMB-z=ZtKSORng-`cqWV@?6V)-o0 z^$AF>$O4dSz6j)=S?u+jKn^6wF9o?}%Rqj>RQq_6{!WnX?ghD=<<9#-wtqP84ITx# zpeH~cBx^zL()A!$r~%{z?}D7s`ydCB3;59MB-=HCobD@-E7A;dx^JA{xsU%11unP+ zpZ$@%^ScC_CSJb~iyZ;&(0!t`Xj*7=~^$HNWmhj0{c7UDqi z4}bqJ?;7HA{`96H-XYO;*AVtWHTM(-l84J(tYFw2d6?acki1)n1Ic~Kn}j%kZFddX zo@l#kh<6KdAbHGW-YrDWI-6wPEkw^cKP$)kbbofY5ZiM+KVjPL8nWHlcGnP&h0WYO z)OObp-)y{Fhy%$tW!qgtZFddnE+QTcZFdb}C$!x)v>T2Eeps~KHH4iIXuE5u?XDqR zXlc7^sO_$y%)5p7>A*TZE8FfGYP)Nw?XID=yN25C8d{3$+q`_Uxx0nDulZ;#;ikt|9zIihs6iyKAWJt|8v`#NR`0cMT22 z4Ip;c4hy^t*ml=Y+g(F#cMa*|q3y0A+%dv04{di1{r`T~&~Z2lTJQ4tH^^VQf4^%e zdC5yzqqDM-4KHP#2t;2tR0xei{yLKhp-CvHH(4n(3x(@VRtYUa(FT*%LRu((#bind zy=t|XP$T5NX0k-674lv;St`^C;Wtc{3H3sx!DPA6AVl9ZSs^qE`EQv_2u(u4+a@c8 zW})yMlT|{CQ1q_JY9TEYzh^Qfgxr7wL;zpCQF4nA-vIKnNTl8J~UY_ zGzig6CM$$SA^#(j386_S_}FBn&@2>wVzNqT5sI2jRtssN_*0W9A@rHmVnU6O`?<*y zp;pNItI1NKP6&TtvP`HKB43&;7aD}LSAQ+r9zz$-oj*=P%lKbG+8b*2+>@V6+)ws-^FA?Xc7v# znyeI>g~F{&RtYUa(bgubg|tw-jmeY{+SY0@p+?Bv&SZ&DE9BX$mn;?Pgm5=&StisA zk?tnTg$5zo!(@ffDCBQ%G9fex1v{9m6q<#?znH8NT7;qV$BAlVw7^5Q&;B7aD}<0FxC$ zqmVz)WI|{X3I>_16q<#?!6vJO7NKZQlhs06DBjCtN(k+3wU|&N|ESn5-7kLh*qn zQ$pwKay&?w{=noI~yLcyUX zD}`pE@Gz5ALW@vzxXEfEEfgPNG9`qLv|3E45ps_*St8U5c}JTp73zd=k;yWlUWgoH zvRr5oq9aXK2#rGiD3b}HNhmnhWTnt76dq@?N@x*^jyG8?q=n)WOs0fTvDIQijgWhy z$r7Pf$UDhosZb|`Pc~U5)C-YQOqL4`LiALV6+)wsKiXtMXc7ueGg&D#3xzS0RYHqU zG{$7LkQR!^noJ3yaaM~7HA3#`CQF1`A@2;6r9zz$KGS5GP%lKzGFdJ(2+(wAv6gEa7SclT43jA#bcNMoLXD6+(`1QIE9A{GSt`^C;VVs+3H3sx!eqJ7 zAVg=ItPmQ7{HshRgeIY2j>$@)Sty)qvPx(Ximo0?VX{Q1 z74oh%St`^C;rS-ZgnA*ez+}15AVjY-Ss^qE`3p@ZgeIZjdXtqxvrxFmWR=h&6jhq6 z7Scj-(qu{qEw)-rs1b5+Fj*qh3VAo0EEVd6@Dh_{LcI{V$z-|EAVhCASs^qE`Bf$p zLX%K%i^)o%Stwj;vPx(Xik6wI7SclTttL}K=r*gxgc>3Dc9SJSt&n$z$x@+C2v?gd z6Y7P?ohHkL1|fQv$qJ!S$iLfULTC~S?lD;@Gz*3InyeC9grfUQRtssNc)7`x5K37s zCe#SI_nRycYK6QNCQF4nA^d>JGNE3GJZQ39Xb_?gnXC{Rh5Uz2CWI!T;1QFRLbFg< zW3ozU5sFrttQOKj@uMbFLg+E8#e^Cm_i>XYLamVZgvnB&P6$6~vP`HKB2Sqt7aD|U zt;q_ZQOJMVWI|{X3Ran{6q<#?XG~TJEke<=CaZP(gjbwYTJ$ugl{h`eC3TxbxYYfV-NjY9s5CKE!FQ1Ft;N}*XOeA#4`&>|GAGg&R9 zh2naXDIv7pYB8Zk$lYMFM5q<=UNKoJ)Cu8NO_mAuLgY1*=F#WT{Xmg#Tu;OsE$k-# z386_S*wSRB&@2?@nyeC9grY7ctA(^s+|^`C2yJDxm{23+Zf&wes1@?IFV-(Y$#S7Vhz>DXAv6m4Lro@xCZS*-la)fVP`IzjDxpOv+RtRQ zkQR#fH<=Pb2Usm8)Cjo+CQF1`A@4wwr9zz$KFDO5P%lJ=nJgC?gy_L0D}+WNf4Iqn z&?FQbVzN?b779n0tP)y;qC%6^LRu(3)MQEs9cHzdP$T3XZn8wE74nWSSt`^C;Ui6! z3H3tcD3j$vgAhI1WQEWumw5T1X4U$C^wDq2sI; z6KaIq<4u+bwL;zrCQF4nAzW;-OsE$kCz>o58ieRcCM$$SA^&8P386_SIK^b8&@2?5 zYO+db5sF5etQOKj@o6SgLMUdnm{23+jxkvx)CzfHO_mCELU^3XGNE3GoNlsQXb_@j zn5+;Qh5R#3CWI!T;4G7sLbFgSuLc6;&V)yGpOB!6AoKc*86u!|U&img-tg#U* zyKcxHkcA$ig0s(`oW1h=$-z~JWgVX!^my=?ctrof$(~k&J2wKX^L`-4A1)Kv)g5mh zv}de>{oq&!0=)g2Lw{6w`v>pAWe*MhcJeJ3v0o zC;MPH(j6Zn^_;t-;JDx&k(c1OvPJH~C@+QM>pv2Xlkhda)u%nt=hqW%ID#P_ILT!% z)TVpG)~BNPhT9pAnomgQ*7iYu^#5Ek*{AIb_qOl;3*7At_ozEQFZykijVPVSU_l ztxrtf6Xo;V#akbr&IdQ0?-M6{hI_+Jb~oQ=$X?(saJRtS5I8=wkO$s%?uMd#D%T#v zLU;S1JjUJia9HVhU|+~z@B;I|tMrEZp?oFwFAqHa4@_>|{>W9_=NR~?b`}pnmb<&r z9lM`Pxm)7yK)AcH3?862`TPz-`JUFtiB@^TVUYKG!&}@P3^x<57r4~jaFl1kaaiW= z5R|WUcPkuMdIT~G;c&aRD@2)3IOD;1N9zG{C@QU;yxi#x4}-(~sW#l@?r_xjEJGf6 zce^_RyQ5J4435Kn?&3$I^0_x$?y?B(uih}_?ijcYa6B0A zcQ+E{SKX~}$E|(cr+vU3pBcsHBl4hq&>inKe2I@LqkPEa@hJ1&Y#xjcyE_5pYu!EK zt{AQYjt6LsyAx5K0>=Y%rMr_*E`#InsJoL<&WGbc`&ba4zdTmhOV2nQnLI)t_lBpU z9P){ua5owb4_LF|Nq48Ab`562gZ3$RF_c>$)LQFqjJM;#__VvRSiU_>7YM9^p^ZAuL@Lq8@5oJExlE>Jq z?2dyAnS{Ir$%E%LZ&->lpU}#e;dOWCq0C1Oj|JawcRtDs+%>qH47bqTo9-@vyB?0i zTkbC8_Vcyl*1YX<3d(CjY=-Cexw{DE7u~(Q)H zucNy!;OyD>(;;(Qe(4Qoz;$-_mAfn8__dQmv%8rnucE;4wYym;^CjT$4IH=WN`wa@ zhwr>y1-GBOhr9Q0E@z{Bo$rP3-CYH@(A^I{!#QwE-2Le7=E7CMarge@?rM~8_jW(K zn+Lbt9QMaAF0X<7#<%WQcL}&AguDDVI37ROBKCwqFuT3pCG%1K*ryG;TL5<Nn zuWjY+7Nh)&yRG54AvYlL-#7(^9+3DKxDh!Vj=MMP6E8veC~vnD99Qrrq_zL6Uf%9z zxX#|LHyn#qNUpn`z1=NvUF70_?Pnf3O95a!efKGa(AEjR+QN<)kW@| z_XONV?hXt`xqA}j7R-4mc(l8xQ2x)W zLHT&RcDI4YxqBAnec-A&&fRk;?+3?$eeG~I&m;T0D|WXUj@_zoIFUWiuwfnY63QId zF%R7ug~OTNupVXprsM&7mb>*Rk48HlQ0y#-Gu(iTh2!ybw!2qQp6T;D z$K9)NIE#u0c#yUBF!UPApZM#}-iA2C*Vzz`2hRjJzMgL&>^qOg$s}*rfHM2p<524E zO_bT|AdemPR>W!FLil(*9y^oS^AH#EHo|W&Jb2ih5#2k;f!H(8ffu@a7v+O|Z%uLc z9vnMc;mdWAyZ1Q_wwNyiyF=pq8j&l|j(hxKcOUTc|0$QUGy zY=d+{IwM;k{8E>Nj6`u1ax8Kjay)VZQivRitU>r>^QRF$2|Wk>FqQhT)@+zc?i$l*`GK2>}L1aD^agO*sTov zzDXcckx57?at_+?fyOUk;V&cWkS_2aVe39Y*rzd1-+8)z2r>dGL=Hm^M~*;_M8Zem z2hZP+K}I6SBF7=eBL(e}FTNh^9p`VoQ;^X}3>k}zL)Ievg~O-S&%oAQfn103LWIxw zpN~wzN}UXzgdBw&jr@XX*yAR@XR;Rv{)!)uy>Tuw0XZ9CHx}<9Q#%Hd6W$2+8a4x! znFu>*EkVvk&Oz8S>>)@ejAKve^Rd9|5T1Iodn5KXT!%ffCi%=8_^{#0GW+{_40!@! zpI|BEeuSMOUxV;OIgaq$_zL7C=AHH*y{_894(v3t=a)?29`GJB+>cZ9+am z-p6*c=l3Pp)-q%X+TM)Zf-FVY*%>=PZbCk7mwcxo7~U$0@(l=2XKzB5C3D`yzPSg* z`;g_xgUCb3Y-A3?9;eF@KHfHlj6sGV%~B zcyh~YLOh}62`o=oe?oZf`8$$E0`NS?JQ_I$>6ASNF9-@edF09BD_F=I$eYMp$lD0J zv|fwUA*+#dkqO8|WD-(}u)FYS2>bqKSL6ebfykibJl*8!B~K?WMy4V+Vv6p_jz}2k zojl;3V7K^gDDwP`e}fx@3`X`u_-C-8NC$-HaxY_Dd9L;v@)p9rhAR=CtMS~7r(N42 z8?j%`Le4{`Ane|KZ)9g=SEL8>6ZXf?$gezD{y$;he57-THc4=b@NG78(gFTztRo=W8-1CcP&3*o6$clL4E1BIKg^R@%i z;LpfkkuQ*S2v4uBMtBl&E86h%XfkpE!qX!5?06}{vmyRH;1*;l@;JilzdR$VLwH&B zGNcrlh~y&U;`nhkG9DR$?1%7_XBJX{lp}021K}CYV&n$oMq~+cGg5`zf-FOBMQ%gx zK&p{)WJjbY!n2&I*h4oXw;)TAr@L?S&kN6=m1m{Oi<}*r*DG-M77o@UKbtBKILFgnu-80C^C(133gMIkQ7D zuQ7N^{BYDeAeES&Ji+=V5e%VsBgoarTx2$K6*3C*;K^tQByP*Xb5z~ zTDGnoxfsXVjhGqtz#@cO!38Zw+o{OgnBl9)XYijRyr_H&aw~E_vI2P+xeECR?VFIb znEn%RHL?TBU63u2`124KAQvL%Ak&cbSOH$6MEfl0+6GOAubs;uWk32w$4k*O)V*iy@z*`~|`bPGb>VJhFvsgqww2 zhFp$t8eSXPggwdYJRyE{ihav|e#h4K<9`cGcuj8--T`rW@Z!SjI z@$L-d3gk+p0-1vpBRpofa%_J!!i9f|w7xr7Ke`)!v>r(8kf9^Og%3kGVQa2M{W#P) zego{Qpk_|QIn z*3|yf`j6SCC#J=(D3}po4{-9nL!SNh+Y5*G4E2HO4a4JzEuMJ!@fYVEzo>i95YH;Q z!SKsmC$Q7r_36~AYbNvz&4k$oW+}*NZoO&ZU6Y@Sq&jBB21N%(g9Gt#m|W1geUGd) z$$NqRAE99vG+Z+Et~G!38#NdW2S*3zM+aNqaha>yF%($&ZRhsM@3T^m%n4nYyUjmu zOYcx1*{e&aSI*cjwpD@Y$s@ajhOeC8CDb!3XGK@Zhm((W4Gl~_x>acVY1wQOi3V i+IfXnH?%f-YI%n~JGSn+)*ZzOxI1k3B)?5$FZ^EvYdNt1 diff --git a/packages/permissionless-test/mock-aa-infra/alto/constants.ts b/packages/permissionless-test/mock-aa-infra/alto/constants.ts index f0aa689c..6cdd4d20 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/constants.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/constants.ts @@ -55,7 +55,19 @@ export const SAFE_7579_LAUNCHPAD_CREATECALL = "0x0000000000000000000000000000000000000000e5068a3f93a9e201a183295860e060405234801561001057600080fd5b50604051612d70380380612d7083398101604081905261002f91610089565b6001600160a01b03821661005657604051632039d3c960e01b815260040160405180910390fd5b306080526001600160a01b0391821660a0521660c0526100c3565b6001600160a01b038116811461008657600080fd5b50565b6000806040838503121561009c57600080fd5b82516100a781610071565b60208401519092506100b881610071565b809150509250929050565b60805160a05160c051612c4761012960003960008181610159015281816104900152610fc60152600081816101aa015281816105be015281816110a701526113ea01526000818160f6015281816105690152818161099301526111100152612c476000f3fe6080604052600436106100ec5760003560e01c8063663c87d81161008a578063d78343d911610059578063d78343d914610348578063d9ed0e8f14610368578063f2dc691d14610388578063f698da25146103a857600080fd5b8063663c87d81461028c578063928107f9146102ac5780639cfd7cff146102cc578063d03c79141461031857600080fd5b806319822f7c116100c657806319822f7c146101ec5780633c9de1b81461021a5780634fff40e11461023c57806355d559f41461025c57600080fd5b806306433b1b14610147578063137e051e1461019857806315cca638146101cc57600080fd5b36610142576000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116911614610140576040516308e3edd160e41b815260040160405180910390fd5b005b600080fd5b34801561015357600080fd5b5061017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101a457600080fd5b5061017b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101d857600080fd5b506101406101e7366004611ab5565b6103bd565b3480156101f857600080fd5b5061020c610207366004611bb2565b610563565b60405190815260200161018f565b34801561022657600080fd5b50600080516020612bf28339815191525461020c565b34801561024857600080fd5b50610140610257366004611bff565b61098e565b34801561026857600080fd5b5061027c610277366004611c87565b610abe565b60405161018f9493929190611d28565b34801561029857600080fd5b5061017b6102a7366004611e7c565b610d1b565b3480156102b857600080fd5b5061020c6102c736600461206e565b610df5565b3480156102d857600080fd5b50604080518082018252601a81527f7268696e6573746f6e652e73616665373537392e76312e302e300000000000006020820152905161018f9190612184565b34801561032457600080fd5b5061033861033336600461219e565b610e47565b604051901515815260200161018f565b34801561035457600080fd5b506101406103633660046121b7565b610ef0565b34801561037457600080fd5b506101406103833660046122e3565b61109c565b34801561039457600080fd5b506103386103a336600461219e565b611324565b3480156103b457600080fd5b5061020c611373565b3330146103dd57604051630a57d61d60e01b815260040160405180910390fd5b60405163610b592560e01b81526001600160a01b038b166004820152309063610b592590602401600060405180830381600087803b15801561041e57600080fd5b505af1158015610432573d6000803e3d6000fd5b50506040805160008082526020820190925230935063540fb4f992509061047c565b6040805180820190915260008152606060208201528152602001906001900390816104545790505b508b8b8b8b8b8b60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018d8d8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8c166020909101526040516001600160e01b031960e08b901b168152610525989796959493929190600401612520565b600060405180830381600087803b15801561053f57600080fd5b505af1158015610553573d6000803e3d6000fd5b5050505050505050505050505050565b600080547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146105b3576040516308e3edd160e41b815260040160405180910390fd5b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fc57604051632039d3c960e01b815260040160405180910390fd5b6106096060850185612593565b610618916004916000916125d9565b61062191612603565b6001600160e01b03191663d9ed0e8f60e01b146106515760405163c3d40f7760e01b815260040160405180910390fd5b60006106606060860186612593565b61066e9160049082906125d9565b81019061067b919061206e565b9050610693600080516020612bf28339815191525490565b61069c82610df5565b146106ba5760405163278328b160e21b815260040160405180910390fd5b600080866020013590508060601c915060008360a001516001600160a01b03168460c001516040516024016106ef9190612633565b60408051601f19818403018152918152602080830180516001600160e01b0316633cd56b0760e11b17905290516107299291339101612646565b60408051601f198184030181529082905261074391612678565b6000604051808303816000865af19150503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b50509050806107a75760405163c3d40f7760e01b815260040160405180910390fd5b60c084015151600090815b818110156108c95760008760c0015182815181106107d2576107d2612694565b6020026020010151600001519050806001600160a01b0316636d61fe708960c00151848151811061080557610805612694565b6020026020010151602001516040518263ffffffff1660e01b815260040161082d9190612184565b600060405180830381600087803b15801561084757600080fd5b505af115801561085b573d6000803e3d6000fd5b505060408051600181526001600160a01b03851660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905060405180910390a1866001600160a01b0316816001600160a01b0316036108c057600193505b506001016107b2565b50811561094857604051639700320360e01b81526001600160a01b038616906397003203906108fe908d908d9060040161277e565b6020604051808303816000875af115801561091d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094191906127a0565b965061096f565b6000806000610957898e6113cc565b92509250925061096983158383611542565b99505050505b8715610981576000806000808b335af1505b5050505050509392505050565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116146109dd576040516308e3edd160e41b815260040160405180910390fd5b60006109f5600080516020612bf28339815191525490565b14610a135760405163d4d496e560e01b815260040160405180910390fd5b610a2984600080516020612bf283398151915255565b6001600160a01b03831615610ab8576000836001600160a01b03168383604051610a549291906127b9565b600060405180830381855af49150503d8060008114610a8f576040519150601f19603f3d011682016040523d82523d6000602084013e610a94565b606091505b5050905080610ab657604051631f57fed560e31b815260040160405180910390fd5b505b50505050565b6060600080823682610ad4610100890189612593565b9092509050610ae76006600083856125d9565b610af0916127c9565b60d01c9450610b03600c600683856125d9565b610b0c916127c9565b60d01c9350610b1e81600c81856125d9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516101c081019091527fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f815294975095509293505060208084019250610b9a91508a018a6127f7565b6001600160a01b0316815260200188602001358152602001888060400190610bc29190612593565b604051610bd09291906127b9565b6040519081900390208152602001610beb60608a018a612593565b604051610bf99291906127b9565b60405180910390208152602001610c0f8961157a565b6001600160801b03168152602001610c2689611590565b6001600160801b031681526020018860a001358152602001610c47896115a5565b6001600160801b03168152602001610c5e896115b4565b6001600160801b03168152602001610c7960e08a018a612593565b604051610c879291906127b9565b6040805191829003909120825265ffffffffffff80881660208401528616908201526001600160a01b0388166060909101526101c08120909150601960f81b600160f81b610cd3611373565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529550505092959194509250565b6000818051906020012083604051602001610d40929190918252602082015260400190565b60405160208183030381529060405280519060200120925060ff60f81b858486896001600160a01b0316604051602001610d7b929190612814565b60405160208183030381529060405280519060200120604051602001610dd394939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b80516020808301516040808501516060860151608087015160a088015160c08901519451600098610e2a989097969101612836565b604051602081830303815290604052805190602001209050919050565b600081600881901b6001600160f81b03198216600160f81b03610e6d5760019250610ea9565b6001600160f81b03198216610e855760019250610ea9565b6001600160f81b031980831603610e9f5760019250610ea9565b5060009392505050565b828015610ebe57506001600160f81b03198116155b15610eca575050919050565b828015610ee457506001600160f81b03198116600160f81b145b15610e9f575050919050565b60405163610b592560e01b81526001600160a01b038d166004820152309063610b592590602401600060405180830381600087803b158015610f3157600080fd5b505af1158015610f45573d6000803e3d6000fd5b505060405163f08a032360e01b81526001600160a01b038f16600482015230925063f08a03239150602401600060405180830381600087803b158015610f8a57600080fd5b505af1158015610f9e573d6000803e3d6000fd5b50505050306001600160a01b031663540fb4f98c8c8c8c8c8c8c8c60405180606001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020018e8e8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050509082525060ff8d166020909101526040516001600160e01b031960e08c901b16815261105c99989796959493929190600401612894565b600060405180830381600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50505050505050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110e557604051632039d3c960e01b815260040160405180910390fd5b6110f260208201826127f7565b600080546001600160a01b0319166001600160a01b039283161790557f00000000000000000000000000000000000000000000000000000000000000001661114060808301606084016127f7565b6001600160a01b03161461116757604051633007073760e01b815260040160405180910390fd5b6302b994c760e31b61117c6080830183612593565b61118b916004916000916125d9565b61119491612603565b6001600160e01b031916146111bc57604051633007073760e01b815260040160405180910390fd5b3063b63e800d6111cf6020840184612909565b60408501356111e460808701606088016127f7565b6111f16080880188612593565b61120160c08a0160a08b016127f7565b60008060006040518b63ffffffff1660e01b815260040161122b9a99989796959493929190612952565b600060405180830381600087803b15801561124557600080fd5b505af1158015611259573d6000803e3d6000fd5b50506000600080516020612bf283398151915255506112759050565b60008061128860c0840160a085016127f7565b6001600160a01b031661129e60e0850185612593565b306040516020016112b193929190612a0a565b60408051601f19818403018152908290526112cb91612678565b6000604051808303816000865af19150503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b50915091508161131f57805160208201fd5b505050565b60006001820361133657506001919050565b6002820361134657506001919050565b6003820361135657506001919050565b6004820361136657506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60008060006060808660a001516001600160a01b03166355d559f4877f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401611426929190612a2b565b600060405180830381865afa158015611443573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146b9190810190612ab8565b8351602085012060408c01519298509296509294509192509060009061149490839085906115c9565b905061149f816118c1565b60208901516114ad816118c1565b6114b6816118cd565b80516000805b8281101561152e5760006114f28583815181106114db576114db612694565b6020026020010151876118d690919063ffffffff16565b5090508015611525578261150581612b52565b9350508d6040015183106115255760019b5050505050505050505061153b565b506001016114bc565b5060009950505050505050505b9250925092565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561156a57600061156d565b60015b60ff161717949350505050565b600061158a826080013560801c90565b92915050565b60006001600160801b0360808301351661158a565b600060c082013560801c61158a565b60006001600160801b0360c08301351661158a565b606060006115d8836041612b6b565b8451909150836001600160401b038111156115f5576115f5611d6e565b60405190808252806020026020018201604052801561161e578160200160208202803683370190505b5092508181101561164257604051638baa579f60e01b815260040160405180910390fd5b60005b848110156118b7576000806000806116758a86604102016020810151604082015160609092015160001a92909190565b9250925092508260ff16600003611816579092508290611696896041612b6b565b8110156116cc576040516338a245ff60e11b81526004810182905260006024820181905260448201526064015b60405180910390fd5b856116d8826020612b82565b1115611708576040516338a245ff60e11b81526004810182905260006024820152604481018790526064016116c3565b6020818b018101519087908290611720908590612b82565b61172a9190612b82565b111561175a576040516338a245ff60e11b81526004810183905260248101829052604481018890526064016116c3565b60606020838d01019050631626ba7e60e01b6001600160e01b031916866001600160a01b0316631626ba7e8f846040518363ffffffff1660e01b81526004016117a4929190612b95565b602060405180830381865afa1580156117c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e59190612bae565b6001600160e01b0319161461180f578060405163605d348960e01b81526004016116c39190612184565b505061187c565b601e8360ff16111561186d576118666118548c6020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b61185f600486612bd8565b84846118f9565b935061187c565b6118798b8484846118f9565b93505b8388868151811061188f5761188f612694565b6001600160a01b03909216602092830291909101909101525050600190920191506116459050565b5050509392505050565b6118ca81611937565b50565b6118ca8161198c565b6000806118ee84846001600160a01b031660006119d5565b909590945092505050565b60006040518560005260ff85166020528360405282606052602060406080600060015afa5060006060523d6060185191508060405250949350505050565b8051600082528060051b82016020601f198185015b8201838111611984578051828201805182811161196b5750505061194c565b5b818601528301805182811161196c575084015261194c565b505050915250565b60028151106118ca576020810160408201600183510160051b83015b81518351146119bc57602083019250815183525b6020820191508082036119a857505081900360051c9052565b60008060001960018651600087870197505b81830160011c94508460051b8901518701905087811482841117611a2157808811611a165783850191506119e7565b6001850192506119e7565b84151597148716989290930190950295509350505050565b6001600160a01b03811681146118ca57600080fd5b803561136e81611a39565b60008083601f840112611a6b57600080fd5b5081356001600160401b03811115611a8257600080fd5b6020830191508360208260051b8501011115611a9d57600080fd5b9250929050565b803560ff8116811461136e57600080fd5b60008060008060008060008060008060c08b8d031215611ad457600080fd5b611add8b611a4e565b995060208b01356001600160401b0380821115611af957600080fd5b611b058e838f01611a59565b909b50995060408d0135915080821115611b1e57600080fd5b611b2a8e838f01611a59565b909950975060608d0135915080821115611b4357600080fd5b611b4f8e838f01611a59565b909750955060808d0135915080821115611b6857600080fd5b50611b758d828e01611a59565b9094509250611b88905060a08c01611aa4565b90509295989b9194979a5092959850565b60006101208284031215611bac57600080fd5b50919050565b600080600060608486031215611bc757600080fd5b83356001600160401b03811115611bdd57600080fd5b611be986828701611b99565b9660208601359650604090950135949350505050565b60008060008060608587031215611c1557600080fd5b843593506020850135611c2781611a39565b925060408501356001600160401b0380821115611c4357600080fd5b818701915087601f830112611c5757600080fd5b813581811115611c6657600080fd5b886020828501011115611c7857600080fd5b95989497505060200194505050565b60008060408385031215611c9a57600080fd5b82356001600160401b03811115611cb057600080fd5b611cbc85828601611b99565b9250506020830135611ccd81611a39565b809150509250929050565b60005b83811015611cf3578181015183820152602001611cdb565b50506000910152565b60008151808452611d14816020860160208601611cd8565b601f01601f19169290920160200192915050565b608081526000611d3b6080830187611cfc565b65ffffffffffff8681166020850152851660408401528281036060840152611d638185611cfc565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715611da657611da6611d6e565b60405290565b60405161010081016001600160401b0381118282101715611da657611da6611d6e565b604051601f8201601f191681016001600160401b0381118282101715611df757611df7611d6e565b604052919050565b60006001600160401b03821115611e1857611e18611d6e565b50601f01601f191660200190565b600082601f830112611e3757600080fd5b8135611e4a611e4582611dff565b611dcf565b818152846020838601011115611e5f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e9457600080fd5b8535611e9f81611a39565b94506020860135611eaf81611a39565b935060408601356001600160401b0380821115611ecb57600080fd5b611ed789838a01611e26565b9450606088013593506080880135915080821115611ef457600080fd5b50611f0188828901611e26565b9150509295509295909350565b60006001600160401b03821115611f2757611f27611d6e565b5060051b60200190565b600082601f830112611f4257600080fd5b81356020611f52611e4583611f0e565b8083825260208201915060208460051b870101935086841115611f7457600080fd5b602086015b84811015611f99578035611f8c81611a39565b8352918301918301611f79565b509695505050505050565b600082601f830112611fb557600080fd5b81356020611fc5611e4583611f0e565b82815260059290921b84018101918181019086841115611fe457600080fd5b8286015b84811015611f995780356001600160401b03808211156120085760008081fd5b908801906040828b03601f19018113156120225760008081fd5b61202a611d84565b8784013561203781611a39565b815290830135908282111561204c5760008081fd5b61205a8c8984870101611e26565b818901528652505050918301918301611fe8565b60006020828403121561208057600080fd5b81356001600160401b038082111561209757600080fd5b9083019061010082860312156120ac57600080fd5b6120b4611dac565b6120bd83611a4e565b81526020830135828111156120d157600080fd5b6120dd87828601611f31565b602083015250604083013560408201526120f960608401611a4e565b606082015260808301358281111561211057600080fd5b61211c87828601611e26565b60808301525061212e60a08401611a4e565b60a082015260c08301358281111561214557600080fd5b61215187828601611fa4565b60c08301525060e08301358281111561216957600080fd5b61217587828601611e26565b60e08301525095945050505050565b6020815260006121976020830184611cfc565b9392505050565b6000602082840312156121b057600080fd5b5035919050565b60008060008060008060008060008060008060e08d8f0312156121d957600080fd5b6121e28d611a4e565b9b506001600160401b0360208e013511156121fc57600080fd5b61220c8e60208f01358f01611a59565b909b5099506001600160401b0360408e0135111561222957600080fd5b6122398e60408f01358f01611a59565b90995097506001600160401b0360608e0135111561225657600080fd5b6122668e60608f01358f01611a59565b90975095506001600160401b0360808e0135111561228357600080fd5b6122938e60808f01358f01611a59565b90955093506001600160401b0360a08e013511156122b057600080fd5b6122c08e60a08f01358f01611a59565b90935091506122d160c08e01611aa4565b90509295989b509295989b509295989b565b6000602082840312156122f557600080fd5b81356001600160401b0381111561230b57600080fd5b8201610100818503121561219757600080fd5b600082825180855260208086019550808260051b84010181860160005b8481101561238657858303601f19018952815180516001600160a01b03168452840151604085850181905261237281860183611cfc565b9a86019a945050509083019060010161233b565b5090979650505050505050565b6000808335601e198436030181126123aa57600080fd5b83016020810192503590506001600160401b038111156123c957600080fd5b803603821315611a9d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008383855260208086019550808560051b830101846000805b8881101561248f57858403601f19018a52823536899003603e19018112612440578283fd5b88016040813561244f81611a39565b6001600160a01b0316865261246682880183612393565b9250818888015261247a82880184836123d8565b9c88019c96505050928501925060010161241b565b509198975050505050505050565b60008151808452602080850194506020840160005b838110156124d75781516001600160a01b0316875295820195908201906001016124b2565b509495945050505050565b60018060a01b0381511682526000602082015160606020850152612509606085018261249d565b60409384015160ff16949093019390935250919050565b60a08152600061253360a083018b61231e565b8281036020840152612546818a8c612401565b9050828103604084015261255b81888a612401565b90508281036060840152612570818688612401565b9050828103608084015261258481856124e2565b9b9a5050505050505050505050565b6000808335601e198436030181126125aa57600080fd5b8301803591506001600160401b038211156125c457600080fd5b602001915036819003821315611a9d57600080fd5b600080858511156125e957600080fd5b838611156125f657600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561262b5780818660040360031b1b83161692505b505092915050565b602081526000612197602083018461231e565b60008351612658818460208801611cd8565b60609390931b6001600160601b0319169190920190815260140192915050565b6000825161268a818460208701611cd8565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006101206126c9846126bc85611a4e565b6001600160a01b03169052565b602083013560208501526126e06040840184612393565b8260408701526126f383870182846123d8565b925050506127046060840184612393565b85830360608701526127178382846123d8565b925050506080830135608085015260a083013560a085015260c083013560c085015261274660e0840184612393565b85830360e08701526127598382846123d8565b9250505061010061276c81850185612393565b86840383880152611d638482846123d8565b60408152600061279160408301856126aa565b90508260208301529392505050565b6000602082840312156127b257600080fd5b5051919050565b8183823760009101908152919050565b6001600160d01b0319813581811691600685101561262b5760069490940360031b84901b1690921692915050565b60006020828403121561280957600080fd5b813561219781611a39565b60008351612826818460208801611cd8565b9190910191825250602001919050565b600060018060a01b03808a16835260e0602084015261285860e084018a61249d565b886040850152818816606085015283810360808501526128788188611cfc565b905081861660a085015283810360c0850152612584818661231e565b60a0815260006128a860a083018b8d612401565b82810360208401526128bb818a8c612401565b905082810360408401526128d081888a612401565b905082810360608401526128e5818688612401565b905082810360808401526128f981856124e2565b9c9b505050505050505050505050565b6000808335601e1984360301811261292057600080fd5b8301803591506001600160401b0382111561293a57600080fd5b6020019150600581901b3603821315611a9d57600080fd5b61010080825281018a9052600061012082018c825b8d81101561299857813561297a81611a39565b6001600160a01b031683526020928301929190910190600101612967565b50508a60208401526129b5604084018b6001600160a01b03169052565b82810360608401526129c881898b6123d8565b9150506129e060808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c083015261258460e08301846001600160a01b03169052565b8284823760609190911b6001600160601b0319169101908152601401919050565b604081526000612a3e60408301856126aa565b905060018060a01b03831660208301529392505050565b600082601f830112612a6657600080fd5b8151612a74611e4582611dff565b818152846020838601011115612a8957600080fd5b612a9a826020830160208701611cd8565b949350505050565b805165ffffffffffff8116811461136e57600080fd5b60008060008060808587031215612ace57600080fd5b84516001600160401b0380821115612ae557600080fd5b612af188838901612a55565b9550612aff60208801612aa2565b9450612b0d60408801612aa2565b93506060870151915080821115612b2357600080fd5b50612b3087828801612a55565b91505092959194509250565b634e487b7160e01b600052601160045260246000fd5b600060018201612b6457612b64612b3c565b5060010190565b808202811582820484141761158a5761158a612b3c565b8082018082111561158a5761158a612b3c565b828152604060208201526000612a9a6040830184611cfc565b600060208284031215612bc057600080fd5b81516001600160e01b03198116811461219757600080fd5b60ff828116828216039081111561158a5761158a612b3c56fe982e06ee6a56dfc0f1ac189a5d23506361ca0a3ce45a9c7b8d33d65d43746a24a26469706673582212207d5588f32687eed2f7e9571e6218cfcff2c44b91a85496193f533aec5d0aa59464736f6c634300081900330000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032000000000000000000000000000000000069e2a187aeffb852bf3ccdc95151b2" export const SAFE_7579_REGISTRY_CREATECALL: Hex = - "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600f57600080fd5b506103d18061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063529562a11161005b578063529562a1146100bf57806396fb7217146100d2578063c23697a8146100e0578063f05c04e1146100f157600080fd5b80630bb30abc146100825780632ed94467146100985780634c13560c146100ad575b600080fd5b6100966100903660046101c8565b50505050565b005b6100966100a6366004610222565b5050505050565b6100966100bb366004610284565b5050565b6100966100cd3660046102b7565b505050565b6100966100bb3660046102f4565b6100966100ee36600461031e565b50565b6100966100ff366004610340565b6040513381527fb8a00d6d8ca1be30bfec34d8f97e55f0f0fd9eeb7fb46e030516363d4cfe1ad69060200160405180910390a16040517fb6d9a72244037f5f1de04d8ff74cd328f1574efc59a02163d0fec0554871974690600090a1505050565b80356001600160a01b038116811461017757600080fd5b919050565b60008083601f84011261018e57600080fd5b50813567ffffffffffffffff8111156101a657600080fd5b6020830191508360208260051b85010111156101c157600080fd5b9250929050565b600080600080606085870312156101de57600080fd5b6101e785610160565b9350602085013567ffffffffffffffff81111561020357600080fd5b61020f8782880161017c565b9598909750949560400135949350505050565b60008060008060006080868803121561023a57600080fd5b61024386610160565b945060208601359350604086013567ffffffffffffffff81111561026657600080fd5b6102728882890161017c565b96999598509660600135949350505050565b6000806040838503121561029757600080fd5b6102a083610160565b91506102ae60208401610160565b90509250929050565b6000806000606084860312156102cc57600080fd5b6102d584610160565b92506102e360208501610160565b929592945050506040919091013590565b6000806040838503121561030757600080fd5b61031083610160565b946020939093013593505050565b60006020828403121561033057600080fd5b61033982610160565b9392505050565b60008060006040848603121561035557600080fd5b833560ff8116811461036657600080fd5b9250602084013567ffffffffffffffff81111561038257600080fd5b61038e8682870161017c565b949790965093945050505056fea2646970667358221220181467498dc4fab0c64814a0965539f6b8e992676b95c29db59b1cc06cd50f0f64736f6c634300081a0033" + "0x0000000000000000000000000000000000000000d7f995ff1ea60f02e52877f761014060405234801561001157600080fd5b5060405161001e90610106565b604051809103906000f08015801561003a573d6000803e3d6000fd5b506001600160a01b03166080523060a0524660c05260608061009c60408051808201825260128152715268696e6573746f6e65526567697374727960701b60208083019190915282518084019093526004835263076312e360e41b9083015291565b815160209283012081519183019190912060e0829052610100819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061012052506101139050565b6101d9806149bc83390190565b60805160a05160c05160e051610100516101205161485a610162600039600061213d015260006121f7015260006121d1015260006121810152600061215e01526000611b8b015261485a6000f3fe6080604052600436106102045760003560e01c80637cb2afd811610118578063b65d1012116100a0578063dd0fd2781161006f578063dd0fd2781461069e578063e14f3d32146106cb578063f05c04e1146106eb578063f095ec1b1461070b578063f190e2b11461072b57600080fd5b8063b65d101214610604578063b6b791a114610624578063c23697a814610651578063d90486241461067157600080fd5b8063945e3641116100e7578063945e36411461054a57806396fb72171461056a5780639f3e1b531461058a578063b060cb1e146105aa578063b50b706b146105d757600080fd5b80637cb2afd8146104c257806384b0196e146104e257806388dc678d1461050a5780638e6ec8241461052a57600080fd5b80634990a6821161019b57806355f47dde1161016a57806355f47dde146103b6578063617734d0146103d657806370d2af24146103f657806371c61a2b1461041657806377efcab4146104a257600080fd5b80634990a682146103365780634c13560c146103565780634ece78ca14610376578063529562a11461039657600080fd5b80631d4d9810116101d75780631d4d98101461029b57806329757d37146102c95780632b30c899146102e95780632ed944671461031657600080fd5b806303b79c841461020957806304a1f298146102395780630bb30abc1461025b5780631896f70a1461027b575b600080fd5b61021c610217366004613836565b61073e565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024557600080fd5b5061025961025436600461393b565b6107b8565b005b34801561026757600080fd5b506102596102763660046139c6565b610875565b34801561028757600080fd5b50610259610296366004613a21565b61098c565b3480156102a757600080fd5b506102bb6102b6366004613a51565b610acf565b604051908152602001610230565b3480156102d557600080fd5b506102596102e4366004613ab9565b610cc2565b3480156102f557600080fd5b50610309610304366004613b3f565b610d77565b6040516102309190613c11565b34801561032257600080fd5b50610259610331366004613c60565b610eb9565b34801561034257600080fd5b50610259610351366004613cc3565b610fb0565b34801561036257600080fd5b50610259610371366004613d04565b610fbf565b34801561038257600080fd5b50610259610391366004613d32565b610fcb565b3480156103a257600080fd5b506102596103b1366004613d96565b611077565b3480156103c257600080fd5b506102bb6103d1366004613dd7565b611087565b3480156103e257600080fd5b506102bb6103f1366004613e1d565b6110c1565b34801561040257600080fd5b506102bb610411366004613e66565b6110fe565b34801561042257600080fd5b5061047b610431366004613e83565b60408051808201909152600080825260208201525060009081526020818152604091829020825180840190935280546001600160a01b039081168452600190910154169082015290565b6040805182516001600160a01b039081168252602093840151169281019290925201610230565b3480156104ae57600080fd5b506102596104bd366004613e9c565b611131565b3480156104ce57600080fd5b506102596104dd366004613a21565b61113e565b3480156104ee57600080fd5b506104f76111e0565b6040516102309796959493929190613f08565b34801561051657600080fd5b50610259610525366004613fa1565b611249565b34801561053657600080fd5b50610259610545366004613ff4565b6112a4565b34801561055657600080fd5b50610259610565366004614057565b611357565b34801561057657600080fd5b5061025961058536600461409d565b611362565b34801561059657600080fd5b506102bb6105a53660046140c9565b61136d565b3480156105b657600080fd5b506105ca6105c5366004613e83565b6114f0565b60405161023091906140e6565b3480156105e357600080fd5b506102bb6105f23660046140c9565b60056020526000908152604090205481565b34801561061057600080fd5b5061025961061f366004614125565b6115ea565b34801561063057600080fd5b5061064461063f3660046140c9565b6115f6565b6040516102309190614188565b34801561065d57600080fd5b5061025961066c3660046140c9565b611656565b34801561067d57600080fd5b5061069161068c366004613d04565b611662565b604051610230919061419b565b3480156106aa57600080fd5b506106be6106b93660046140c9565b6116fb565b60405161023091906141aa565b3480156106d757600080fd5b506102bb6106e6366004613e1d565b61184d565b3480156106f757600080fd5b506102596107063660046141eb565b611882565b34801561071757600080fd5b5061021c610726366004614211565b611af7565b61021c61073936600461424f565b611b04565b600087815260208190526040812060018101546001600160a01b031661077f5760405163f184406b60e01b8152600481018a90526024015b60405180910390fd5b61078a88888c611c1b565b9150600061079b83338c8a8a611cee565b90506107aa8184848888611e6c565b505098975050505050505050565b6001600160a01b0385166000908152600560205260408120805482906107dd906142f9565b9182905550905060006107f96107f4878785611f20565b61213b565b9050600061083e888387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061085e57604051638baa579f60e01b815260040160405180910390fd5b61086a888a8989612358565b505050505050505050565b81801580610881575081155b1561089f576040516305a74e6160e01b815260040160405180910390fd5b818110156108c0576040516339093e6560e21b815260040160405180910390fd5b6000805b8281101561096c5760008686838181106108e0576108e0614312565b90506020020160208101906108f591906140c9565b9050826001600160a01b0316816001600160a01b0316116109295760405163cd0ecff160e01b815260040160405180910390fd5b809250610941600061093b8a84612478565b906124a2565b156109525761094f85614328565b94505b846000036109635750505050610986565b506001016108c4565b506040516339093e6560e21b815260040160405180910390fd5b50505050565b806001600160a01b0381161580610a0f57506040516301ffc9a760e01b81526314f0f87d60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0d919061433f565b155b15610a385760405163f9492e7560e01b81526001600160a01b0382166004820152602401610776565b60008381526020819052604090206001015483906001600160a01b03163314610a7457604051634ca8886760e01b815260040160405180910390fd5b60008481526020819052604080822080546001600160a01b0319166001600160a01b03871690811782559151909287917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09190a35050505050565b6000816001600160a01b03811615801590610b5657506040516301ffc9a760e01b815263b2275fa960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b54919061433f565b155b15610b7f57604051630f09140760e01b81526001600160a01b0382166004820152602401610776565b60006040518060600160405280610b934290565b65ffffffffffff168152602001856001600160a01b0316815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050610bf28161254a565b60008181526002602052604090205490935065ffffffffffff1615610c2d57604051635988c65560e11b815260048101849052602401610776565b60008381526002602090815260409182902083518154928501516001600160a01b0316600160301b026001600160d01b031990931665ffffffffffff90911617919091178155908201518291906001820190610c8990826143f3565b505060405133915084907fd16733fb8c2a502f4e1d1d63970cbab355e37ff6d6d12a215b7d0197ea5535f490600090a350509392505050565b6001600160a01b038416600090815260056020526040812080548290610ce7906142f9565b918290555090506000610cfd6107f48684612586565b90506000610d42878387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b905080610d6257604051638baa579f60e01b815260040160405180910390fd5b610d6d8789886126c8565b5050505050505050565b606081806001600160401b03811115610d9257610d92614361565b604051908082528060200260200182016040528015610dcb57816020015b610db86137aa565b815260200190600190039081610db05790505b50915060005b81811015610eb057610e0986868684818110610def57610def614312565b9050602002016020810190610e0491906140c9565b612478565b6040805161010081018252825465ffffffffffff8082168352600160301b820481166020840152600160601b82041692820192909252600160901b90910463ffffffff16606082015260018201546001600160a01b0390811660808301526002830154811660a083015260038301541660c082015260049091015460e08201528351849083908110610e9d57610e9d614312565b6020908102919091010152600101610dd1565b50509392505050565b81801580610ec5575081155b15610ee3576040516305a74e6160e01b815260040160405180910390fd5b81811015610f04576040516339093e6560e21b815260040160405180910390fd5b6000805b8281101561096c576000868683818110610f2457610f24614312565b9050602002016020810190610f3991906140c9565b9050826001600160a01b0316816001600160a01b031611610f6d5760405163cd0ecff160e01b815260040160405180910390fd5b809250610f7e8861093b8b84612478565b15610f8f57610f8c85614328565b94505b84600003610fa05750505050610fa9565b50600101610f08565b5050505050565b610fbb33838361270d565b5050565b610fbb82826000612807565b6001600160a01b038516600090815260056020526040812080548290610ff0906142f9565b9182905550905060006110076107f48787856129c0565b9050600061104c888387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061106c57604051638baa579f60e01b815260040160405180910390fd5b610d6d88888861270d565b611082838383612807565b505050565b6001600160a01b0381166000908152600560205260408120546110ba906107f4906110b39060016144b2565b8590612586565b9392505050565b6001600160a01b0381166000908152600560205260408120546110f6906107f4906110ed9060016144b2565b869086906129c0565b949350505050565b6001600160a01b0381166000908152600560205260408120546110ba906107f49061112a9060016144b2565b8590612ac5565b61113b3382612b39565b50565b60008281526020819052604090206001015482906001600160a01b0316331461117a57604051634ca8886760e01b815260040160405180910390fd5b6000838152602081815260409182902060010180546001600160a01b0319166001600160a01b038616908117909155915191825284917f7a2c54badf601a71ed23c3ec8c070bac418dfd4fb160e0351861983746662d77910160405180910390a2505050565b600f60f81b606080600080808361123760408051808201825260128152715268696e6573746f6e65526567697374727960701b60208083019190915282518084019093526004835263076312e360e41b9083015291565b97989097965046955030945091925090565b600086815260208190526040902060018101546001600160a01b03166112855760405163f184406b60e01b815260048101889052602401610776565b60006112958760008a8989611cee565b9050610d6d8188848787611e6c565b6001600160a01b0384166000908152600560205260408120805482906112c9906142f9565b9182905550905060006112df6107f48684612ac5565b90506000611324878387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061134457604051638baa579f60e01b815260040160405180910390fd5b61134e8787612b39565b50505050505050565b610fbb3383836126c8565b610fbb338383612807565b6000816001600160a01b03811615806113f257506040516301ffc9a760e01b81526314f0f87d60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f0919061433f565b155b1561141b5760405163f9492e7560e01b81526001600160a01b0382166004820152602401610776565b604080518082019091526001600160a01b038416815233602082015261144081612b64565b6000818152602081905260409020549093506001600160a01b03161561147957604051630f5f2ba160e21b815260040160405180910390fd5b600083815260208181526040808320845181546001600160a01b03199081166001600160a01b03928316178355938601516001909201805490941691811691909117909255519086169185917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09190a35050919050565b604080516060808201835260008083526020830152918101919091526000828152600260209081526040918290208251606081018452815465ffffffffffff81168252600160301b90046001600160a01b031692810192909252600181018054929391929184019161156190614377565b80601f016020809104026020016040519081016040528092919081815260200182805461158d90614377565b80156115da5780601f106115af576101008083540402835291602001916115da565b820191906000526020600020905b8154815290600101906020018083116115bd57829003601f168201915b5050505050815250509050919050565b61108233848484612358565b6040805160608082018352600080835260208084018290528385018390526001600160a01b038681168352600180835292869020865194850187528054855292830154169083015260028101805493949293919284019161156190614377565b61113b33826000612807565b61166a6137aa565b6116748383612478565b6040805161010081018252825465ffffffffffff8082168352600160301b820481166020840152600160601b82041692820192909252600160901b90910463ffffffff16606082015260018201546001600160a01b0390811660808301526002830154811660a083015260038301541660c082015260049091015460e08201529392505050565b6001600160a01b0380821660009081526003602052604081208054606093919260ff821692620100009092049091169082900361173a57505050919050565b816001600160401b0381111561175257611752614361565b60405190808252806020026020018201604052801561177b578160200160208202803683370190505b509350808460008151811061179257611792614312565b6001600160a01b039092166020928302919091019091015260015b8281101561184457836001016000866001846117c991906144c5565b815181106117d9576117d9614312565b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208a851682529091522054865191169086908390811061182457611824614312565b6001600160a01b03909216602092830291909101909101526001016117ad565b50505050919050565b6001600160a01b0381166000908152600560205260408120546110f6906107f4906118799060016144b2565b86908690611f20565b604080516020808402828101820190935283825283926118bf929186918591829190850190849080828437600092019190915250612b9692505050565b6118dc5760405163cd0ecff160e01b815260040160405180910390fd5b8015806118e9575060ff81115b156119075760405163cd0ecff160e01b815260040160405180910390fd5b8181146119275760405163cd0ecff160e01b815260040160405180910390fd5b60008383828161193957611939614312565b905060200201602081019061194e91906140c9565b6001600160a01b0316036119755760405163cd0ecff160e01b815260040160405180910390fd5b33600090815260036020526040902060ff85168210156119a85760405163aabd5a0960e01b815260040160405180910390fd5b805460ff8681166101000261ffff199092169084161717815583836000816119d2576119d2614312565b90506020020160208101906119e791906140c9565b81546001600160a01b0391909116620100000262010000600160b01b031990911617815581611a1581614328565b92505060005b82811015611ac4576000858583818110611a3757611a37614312565b9050602002016020810190611a4c91906140c9565b90508585611a5b8460016144b2565b818110611a6a57611a6a614312565b9050602002016020810190611a7f91906140c9565b6001600160a01b03918216600090815260018581016020908152604080842033855290915290912080546001600160a01b031916929093169190911790915501611a1b565b5060405133907ff689fb4afceb60ac48a5ca8113a5a57cb15e51d317f0ec57e07340192d9fb45990600090a25050505050565b60006110f6838386612ba1565b600083815260208190526040812060018101546001600160a01b0316611b405760405163f184406b60e01b815260048101869052602401610776565b306001600160a01b038b1603611b74576040516301b3a38360e21b81526001600160a01b038b166004820152602401610776565b604051630d84daa960e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636c26d548903490611bc6908e908e908e90600401614501565b60206040518083038185885af1158015611be4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c09919061452f565b9150600061079b836000888b8b611cee565b600081606081901c3314801590611c3b57506001600160601b0319811615155b15611c59576040516381e69d9b60e01b815260040160405180910390fd5b600085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611ca1925089915088905087612ba1565b905081602001825186818334f595505050806001600160a01b0316846001600160a01b031614611ce45760405163e6c4247b60e01b815260040160405180910390fd5b5050509392505050565b604080516060808201835260008083526020830152918101919091526001600160a01b038616600090815260016020526040812054611d2c91141590565b15611d55576040516345ed80e960e01b81526001600160a01b0387166004820152602401610776565b6001600160a01b0386163b611d7d57604051637483e90760e01b815260040160405180910390fd5b6040518060600160405280858152602001866001600160a01b0316815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b03898116825260016020818152604093849020865181559086015191810180546001600160a01b03191692909316919091179091559083015192935083929091506002820190611e2c90826143f3565b50506040516001600160a01b03881691507fbc854169953f463b8509327459b9a9785beb45f6cdafdad8e75b9a33f401676890600090a295945050505050565b82546001600160a01b03168015801590611efa5750604051633da3df8760e21b81526001600160a01b0382169063f68f7e1c90611eb590339089908b908990899060040161454c565b6020604051808303816000875af1158015611ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef8919061433f565b155b15611f1857604051633b0cfdad60e01b815260040160405180910390fd5b505050505050565b6000606083825b818110156120d457827fe78ff87b9693fc54b8a43c3b84702ae7bfbb7fc6235105790033913428381e1f888884818110611f6357611f63614312565b9050602002810190611f759190614597565b611f839060208101906140c9565b898985818110611f9557611f95614312565b9050602002810190611fa79190614597565b611fb89060408101906020016145b7565b8a8a86818110611fca57611fca614312565b9050602002810190611fdc9190614597565b611fea9060408101906145df565b604051611ff8929190614625565b60405180910390208b8b8781811061201257612012614312565b90506020028101906120249190614597565b612032906060810190614635565b60405160200161204392919061467e565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b039094169381019390935265ffffffffffff9091166060830152608082015260a081019190915260c001604051602081830303815290604052805190602001206040516020016120ba9291906146ad565b60408051601f198184030181529190529250600101611f27565b508151602080840191909120604080517f432f54a02ff5e7b0998295a12eea6e09f826e00e15ebb49cdb5dd6914e7eadf793810193909352820152606081018590526080015b60405160208183030381529060405280519060200120925050509392505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141661222e5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b6001600160a01b0390921691600083156110ba5760405183600052602083015160405260408351036122c3576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d15176122c1575060006060526040525060016110ba565b505b604183510361230957606083015160001a6020526040830151606052602060016080600060015afa805186183d1517612307575060006060526040525060016110ba565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b806000816001600160401b0381111561237357612373614361565b6040519080825280602002602001820160405280156123ac57816020015b6123996137aa565b8152602001906001900390816123915790505b5090506000805b838110156124455760006123eb888a8989868181106123d4576123d4614312565b90506020028101906123e69190614597565b612c2e565b8584815181106123fd576123fd614312565b6020026020010181935082905250508160000361241c5780925061243c565b82811461243c57604051631ac80ea760e01b815260040160405180910390fd5b506001016123b3565b50600086815260026020526040902061245f908390613047565b600081815260208190526040902061134e908390613119565b6001600160a01b039182166000908152600460209081526040808320939094168252919091522090565b815460009063ffffffff81811691603081901c821691606082901c81169160901c16836124d6576000945050505050612544565b82158015906124e457508242115b156124f6576000945050505050612544565b8115612509576000945050505050612544565b8515158015612529575061252763ffffffff8083169088906131bf16565b155b1561253b576000945050505050612544565b60019450505050505b92915050565b60003382604001518360200151604051602001612569939291906146cf565b604051602081830303815290604052805190602001209050919050565b60007fe6fb0252edfa0719f65bc4b7ff11df181a55bbef752d6bacaff6f4a369160b757fe78ff87b9693fc54b8a43c3b84702ae7bfbb7fc6235105790033913428381e1f6125d760208601866140c9565b6125e760408701602088016145b7565b6125f460408801886145df565b604051612602929190614625565b6040519081900390206126186060890189614635565b60405160200161262992919061467e565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b039094169381019390935265ffffffffffff9091166060830152608082015260a081019190915260c0015b60408051601f19818403018152828252805160209182012090830193909352810191909152606081018390526080015b60405160208183030381529060405280519060200120905092915050565b6000806126d6848685612c2e565b600086815260026020526040902091935091506126f49083906131de565b6000818152602081905260409020610fa990839061324d565b806000816001600160401b0381111561272857612728614361565b60405190808252806020026020018201604052801561276157816020015b61274e6137aa565b8152602001906001900390816127465790505b5090506000805b838110156127ed5760006127938888888581811061278857612788614312565b9050602002016132f1565b8584815181106127a5576127a5614312565b602002602001018193508290525050816000036127c4578092506127e4565b8281146127e457604051631ac80ea760e01b815260040160405180910390fd5b50600101612768565b50600081815260208190526040902061134e9083906134e7565b6001600160a01b0380841660009081526003602052604090208054909160ff808316926101008104909116916201000090910416801580612846575081155b15612864576040516305a74e6160e01b815260040160405180910390fd5b816001036128f95760006128788783612478565b905061288481876124a2565b15612893575050505050505050565b60015b8481101561096c576001600160a01b03928316600090815260018701602090815260408083208c87168452909152902054909216916128d58884612478565b91506128e182886124a2565b156128f157505050505050505050565b600101612896565b60006129058783612478565b905061291181876124a2565b15612924578261292081614328565b9350505b60015b848110156129a0576001600160a01b03928316600090815260018701602090815260408083208c87168452909152902054909216916129668884612478565b915061297282886124a2565b15612985578361298181614328565b9450505b8360000361299857505050505050505050565b600101612927565b508215610d6d576040516339093e6560e21b815260040160405180910390fd5b6000606083825b81811015612a7b57827fe772c71320d83e91a3076e1414875f1affb9dbb84c39717315b34b38b9b4ef8e888884818110612a0357612a03614312565b612a179260209182020190810191506140c9565b604051602001612a3a9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120604051602001612a619291906146ad565b60408051601f1981840301815291905292506001016129c7565b508151602080840191909120604080517f7d1efebd1edb795fc2fef1b96025f39b311dd4c4481a7f726342969d70b423c8938101939093528201526060810185905260800161211a565b60007f0c087e39c84c32f053f4f3e0086d64914296a605bd371cfe0bdca1d506aed4707fe772c71320d83e91a3076e1414875f1affb9dbb84c39717315b34b38b9b4ef8e612b1660208601866140c9565b60405160200161267a9291909182526001600160a01b0316602082015260400190565b600080612b4684846132f1565b60008181526020819052604090209193509150610fa99083906135cf565b80516040516001600160601b031933606090811b821660208401529290921b9091166034820152600090604801612569565b600061254482613618565b600030828585604051602001612bb8929190614625565b60405160208183030381529060405280519060200120604051602001612c0e939291906001600160f81b0319815260609390931b6001600160601b03191660018401526015830191909152603582015260550190565b60408051601f198184030181529190528051602090910120949350505050565b612c366137aa565b60008481526002602052604081205465ffffffffffff16612c6a57604051635f9bd90760e11b815260040160405180910390fd5b426000612c7d60408601602087016145b7565b65ffffffffffff1614158015612cb2575065ffffffffffff8116612ca760408601602087016145b7565b65ffffffffffff1611155b15612cd0576040516308e8b93760e01b815260040160405180910390fd5b6000612cdf60208601866140c9565b90506000612ced8288612478565b805490915065ffffffffffff1615801590612d1657508054600160601b900465ffffffffffff16155b15612d34576040516335d9080560e01b815260040160405180910390fd5b6001600160a01b038216600090815260016020526040902054935083612d7857604051634eb2dcd760e01b81526001600160a01b0383166004820152602401610776565b6000612d97612d906001600160a01b038a1685613651565b8890613689565b90506040518061010001604052808565ffffffffffff168152602001886020016020810190612dc691906145b7565b65ffffffffffff16815260006020820152604001612e21612dea60608b018b614635565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136d792505050565b63ffffffff168152602001846001600160a01b03168152602001896001600160a01b03168152602001826001600160a01b031681526020018a81525095508560046000856001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160040155905050806001600160a01b0316886001600160a01b0316846001600160a01b03167ff68f1df3d74509783e9300e8637b046836c091fd39cdcd33b14b0ffdf6940d628c60405161303391815260200190565b60405180910390a450505050935093915050565b805465ffffffffffff1661306e57604051635f9bd90760e11b815260040160405180910390fd5b8054600160301b90046001600160a01b031680158015906130fb57506040516365b7641360e11b81526001600160a01b0382169063cb6ec826906130b6908690600401613c11565b6020604051808303816000875af11580156130d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f9919061433f565b155b1561108257604051635e1d867960e01b815260040160405180910390fd5b80546001600160a01b03168061312e57505050565b6040516367b14e7760e11b81526001600160a01b0382169063cf629cee9061315a908690600401613c11565b6020604051808303816000875af1158015613179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319d919061433f565b151560000361108257604051635b0ae41f60e01b815260040160405180910390fd5b60006131cc8260026147fb565b831663ffffffff161515905092915050565b805465ffffffffffff1661320557604051635f9bd90760e11b815260040160405180910390fd5b8054600160301b90046001600160a01b031680158015906130fb5750604051637949978f60e01b81526001600160a01b03821690637949978f906130b690869060040161419b565b80546001600160a01b031680158015906132d357506040516334c85d0760e01b81526001600160a01b038216906334c85d079061328e90869060040161419b565b6020604051808303816000875af11580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d1919061433f565b155b1561108257604051635b0ae41f60e01b815260040160405180910390fd5b6132f96137aa565b60008060048161330c60208701876140c9565b6001600160a01b0390811682526020808301939093526040918201600090812089831682528452828120835161010081018552815465ffffffffffff8082168352600160301b8204811683890152600160601b82041695820195909552600160901b90940463ffffffff166060850152600180820154841660808601526002820154841660a0860152600382015490931660c0850152600481015460e0850152929650919350916133bf908701876140c9565b6001600160a01b03908116825260208201929092526040016000205460c0850151909350166134015760405163120a2e7760e01b815260040160405180910390fd5b846001600160a01b03168360a001516001600160a01b03161461343757604051634ca8886760e01b815260040160405180910390fd5b604083015165ffffffffffff16156134625760405163905e710760e01b815260040160405180910390fd5b805465ffffffffffff60601b1916600160601b65ffffffffffff4216021781556001600160a01b03851661349960208601866140c9565b6001600160a01b03167feee7de70b290c411a060d8bb9b1cba152a40d74147fef0974d7c2b25ac9b718a8560e001516040516134d791815260200190565b60405180910390a3509250929050565b80546000906001600160a01b031680613504576001915050612544565b604051636ac403ff60e11b81526001600160a01b0382169063d58807fe90613530908790600401613c11565b6020604051808303816000875af192505050801561356b575060408051601f3d908101601f191682019092526135689181019061433f565b60015b6135b5576040516001600160a01b03821681527fbab8c8262d5baeb21d73c5944504fb6c26d6eb88d29af8653bd3382ad8fe56a99060200160405180910390a16000915050612544565b80156135c657600192505050612544565b505b5092915050565b80546000906001600160a01b0316806135ec576001915050612544565b604051638b6e59ff60e01b81526001600160a01b03821690638b6e59ff9061353090879060040161419b565b805160019060021161364c57815160051b82016020830192505b82516020909301805190931091508083188202613632575b505b919050565b6040516001600160601b0319606084811b8216602084015283901b1660348201524260488201524660688201526000906088016126aa565b60006110ba61369b60408501856145df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061375f915050565b80516000908180805b83811015613755578581815181106136fa576136fa614312565b60200260200101519150601f821180613718575061371883836131bf565b1561373657604051631092ef5760e11b815260040160405180910390fd5b6137418260026147fb565b61374b9084614807565b92506001016136e0565b5090949350505050565b60008251600181018060401b6bfd61000080600a3d393df3001761ffff821186015283600a8201601587016000f5925050816137a35763301164256000526004601cfd5b9092525090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60008083601f84011261380057600080fd5b5081356001600160401b0381111561381757600080fd5b60208301915083602082850101111561382f57600080fd5b9250929050565b60008060008060008060008060a0898b03121561385257600080fd5b883597506020890135965060408901356001600160401b038082111561387757600080fd5b6138838c838d016137ee565b909850965060608b013591508082111561389c57600080fd5b6138a88c838d016137ee565b909650945060808b01359150808211156138c157600080fd5b506138ce8b828c016137ee565b999c989b5096995094979396929594505050565b6001600160a01b038116811461113b57600080fd5b60008083601f84011261390957600080fd5b5081356001600160401b0381111561392057600080fd5b6020830191508360208260051b850101111561382f57600080fd5b6000806000806000806080878903121561395457600080fd5b863595506020870135613966816138e2565b945060408701356001600160401b038082111561398257600080fd5b61398e8a838b016138f7565b909650945060608901359150808211156139a757600080fd5b506139b489828a016137ee565b979a9699509497509295939492505050565b600080600080606085870312156139dc57600080fd5b84356139e7816138e2565b935060208501356001600160401b03811115613a0257600080fd5b613a0e878288016138f7565b9598909750949560400135949350505050565b60008060408385031215613a3457600080fd5b823591506020830135613a46816138e2565b809150509250929050565b600080600060408486031215613a6657600080fd5b83356001600160401b03811115613a7c57600080fd5b613a88868287016137ee565b9094509250506020840135613a9c816138e2565b809150509250925092565b60006080828403121561364a57600080fd5b600080600080600060808688031215613ad157600080fd5b853594506020860135613ae3816138e2565b935060408601356001600160401b0380821115613aff57600080fd5b613b0b89838a01613aa7565b94506060880135915080821115613b2157600080fd5b50613b2e888289016137ee565b969995985093965092949392505050565b600080600060408486031215613b5457600080fd5b8335613b5f816138e2565b925060208401356001600160401b03811115613b7a57600080fd5b613b86868287016138f7565b9497909650939450505050565b65ffffffffffff8082511683528060208301511660208401528060408301511660408401525063ffffffff6060820151166060830152608081015160018060a01b0380821660808501528060a08401511660a0850152505060c0810151613c0560c08401826001600160a01b03169052565b5060e090810151910152565b6020808252825182820181905260009190848201906040850190845b81811015613c5457613c40838551613b93565b928401926101009290920191600101613c2d565b50909695505050505050565b600080600080600060808688031215613c7857600080fd5b8535613c83816138e2565b94506020860135935060408601356001600160401b03811115613ca557600080fd5b613cb1888289016138f7565b96999598509660600135949350505050565b60008060208385031215613cd657600080fd5b82356001600160401b03811115613cec57600080fd5b613cf8858286016138f7565b90969095509350505050565b60008060408385031215613d1757600080fd5b8235613d22816138e2565b91506020830135613a46816138e2565b600080600080600060608688031215613d4a57600080fd5b8535613d55816138e2565b945060208601356001600160401b0380821115613d7157600080fd5b613d7d89838a016138f7565b90965094506040880135915080821115613b2157600080fd5b600080600060608486031215613dab57600080fd5b8335613db6816138e2565b92506020840135613dc6816138e2565b929592945050506040919091013590565b60008060408385031215613dea57600080fd5b82356001600160401b03811115613e0057600080fd5b613e0c85828601613aa7565b9250506020830135613a46816138e2565b600080600060408486031215613e3257600080fd5b83356001600160401b03811115613e4857600080fd5b613a88868287016138f7565b60006020828403121561364a57600080fd5b60008060408385031215613e7957600080fd5b613d228484613e54565b600060208284031215613e9557600080fd5b5035919050565b600060208284031215613eae57600080fd5b6110ba8383613e54565b60005b83811015613ed3578181015183820152602001613ebb565b50506000910152565b60008151808452613ef4816020860160208601613eb8565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e06020840152613f2960e084018a613edc565b8381036040850152613f3b818a613edc565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015613f8f57835183529284019291840191600101613f73565b50909c9b505050505050505050505050565b60008060008060008060808789031215613fba57600080fd5b863595506020870135613fcc816138e2565b945060408701356001600160401b0380821115613fe857600080fd5b61398e8a838b016137ee565b6000806000806060858703121561400a57600080fd5b8435614015816138e2565b93506140248660208701613e54565b925060408501356001600160401b0381111561403f57600080fd5b61404b878288016137ee565b95989497509550505050565b6000806040838503121561406a57600080fd5b8235915060208301356001600160401b0381111561408757600080fd5b61409385828601613aa7565b9150509250929050565b600080604083850312156140b057600080fd5b82356140bb816138e2565b946020939093013593505050565b6000602082840312156140db57600080fd5b81356110ba816138e2565b6020815265ffffffffffff825116602082015260018060a01b036020830151166040820152600060408301516060808401526110f66080840182613edc565b60008060006040848603121561413a57600080fd5b8335925060208401356001600160401b03811115613b7a57600080fd5b8051825260018060a01b03602082015116602083015260006040820151606060408501526110f66060850182613edc565b6020815260006110ba6020830184614157565b61010081016125448284613b93565b6020808252825182820181905260009190848201906040850190845b81811015613c545783516001600160a01b0316835292840192918401916001016141c6565b60008060006040848603121561420057600080fd5b833560ff81168114613b5f57600080fd5b60008060006040848603121561422657600080fd5b8335925060208401356001600160401b0381111561424357600080fd5b613b86868287016137ee565b60008060008060008060008060a0898b03121561426b57600080fd5b8835614276816138e2565b975060208901356001600160401b038082111561429257600080fd5b61429e8c838d016137ee565b909950975060408b01359150808211156142b757600080fd5b6142c38c838d016137ee565b909750955060608b0135945060808b01359150808211156138c157600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161430b5761430b6142e3565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600081614337576143376142e3565b506000190190565b60006020828403121561435157600080fd5b815180151581146110ba57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061438b57607f821691505b60208210810361364a57634e487b7160e01b600052602260045260246000fd5b601f821115611082576000816000526020600020601f850160051c810160208610156143d45750805b601f850160051c820191505b81811015611f18578281556001016143e0565b81516001600160401b0381111561440c5761440c614361565b6144208161441a8454614377565b846143ab565b602080601f831160018114614455576000841561443d5750858301515b600019600386901b1c1916600185901b178555611f18565b600085815260208120601f198616915b8281101561448457888601518255948401946001909101908401614465565b50858210156144a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115612544576125446142e3565b81810381811115612544576125446142e3565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061452690830184866144d8565b95945050505050565b60006020828403121561454157600080fd5b81516110ba816138e2565b6001600160a01b0386811682528516602082015260806040820181905260009061457890830186614157565b828103606084015261458b8185876144d8565b98975050505050505050565b60008235607e198336030181126145ad57600080fd5b9190910192915050565b6000602082840312156145c957600080fd5b813565ffffffffffff811681146110ba57600080fd5b6000808335601e198436030181126145f657600080fd5b8301803591506001600160401b0382111561461057600080fd5b60200191503681900382131561382f57600080fd5b8183823760009101908152919050565b6000808335601e1984360301811261464c57600080fd5b8301803591506001600160401b0382111561466657600080fd5b6020019150600581901b360382131561382f57600080fd5b60008184825b858110156146a2578135835260209283019290910190600101614684565b509095945050505050565b600083516146bf818460208801613eb8565b9190910191825250602001919050565b60006bffffffffffffffffffffffff19808660601b16835284516146fa816014860160208901613eb8565b60609490941b169190920160148101919091526028019392505050565b600181815b80851115614752578160001904821115614738576147386142e3565b8085161561474557918102915b93841c939080029061471c565b509250929050565b60008261476957506001612544565b8161477657506000612544565b816001811461478c5760028114614796576147b2565b6001915050612544565b60ff8411156147a7576147a76142e3565b50506001821b612544565b5060208310610133831016604e8410600b84101617156147d5575081810a612544565b6147df8383614717565b80600019048211156147f3576147f36142e3565b029392505050565b60006110ba838361475a565b63ffffffff8181168382160190808211156135c8576135c86142e356fea2646970667358221220807a0dcf2c6cec2c89009e31067a7ecb222a220b82380e3501b0be4d5c970b7a64736f6c634300081900336080604052348015600f57600080fd5b506101ba8061001f6000396000f3fe60806040526004361061001e5760003560e01c80636c26d54814610023575b600080fd5b6100366100313660046100b4565b610052565b6040516001600160a01b03909116815260200160405180910390f35b6000806020600084516020860134885af19050600051915080610097576040516301b3a38360e21b81526001600160a01b038516600482015260240160405180910390fd5b5092915050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156100c757600080fd5b82356001600160a01b03811681146100de57600080fd5b9150602083013567ffffffffffffffff808211156100fb57600080fd5b818501915085601f83011261010f57600080fd5b8135818111156101215761012161009e565b604051601f8201601f19908116603f011681019083821181831017156101495761014961009e565b8160405282815288602084870101111561016257600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea264697066735822122082f36f23f015ada9d664f10f5d27ddc7546765cf8fc5e39ce6bf9a4c41ed5a7564736f6c63430008190033" + +export const SAFE_7579_REGISTRY_SCHEMA_CREATECALL: Hex = + "0x7109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000006080604052348015600f57600080fd5b506104768061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780636b122fe01461008a5780637949978f1461009f578063cb6ec826146100b3575b600080fd5b61007561005f3660046100ec565b6001600160e01b03191663b2275fa960e01b1490565b60405190151581526020015b60405180910390f35b6100926100c9565b604051610081919061011d565b6100756100ad36600461016c565b50600190565b6100756100c1366004610185565b600192915050565b606060405180610280016040528061024681526020016101fb6102469139905090565b6000602082840312156100fe57600080fd5b81356001600160e01b03198116811461011657600080fd5b9392505050565b60006020808352835180602085015260005b8181101561014b5785810183015185820160400152820161012f565b506000604082860101526040601f19601f8301168501019250505092915050565b6000610100828403121561017f57600080fd5b50919050565b6000806020838503121561019857600080fd5b823567ffffffffffffffff808211156101b057600080fd5b818501915085601f8301126101c457600080fd5b8135818111156101d357600080fd5b8660208260081b85010111156101e857600080fd5b6020929092019691955090935050505056fe28656e756d20455243373537394d6f64756c655479706520284e6f6e652c56616c696461746f722c4578656375746f722c46616c6c6261636b2c486f6f6b292c737472756374204d6f64756c6554797065417474726962757465732028455243373537394d6f64756c6554797065206d6f64756c65547970652c627974657320656e636f64656441747472696275746573292c737472756374204d6f64756c6541747472696275746573202861646472657373206d6f64756c65416464726573732c6279746573207061636b6564417474726962757465732c4d6f64756c6554797065417474726962757465735b5d2074797065417474726962757465732c6279746573207061636b656445787465726e616c446570656e64656e6379292c656e756d205369676e61747572655479706520284e6f6e652c534543503235364b312c45524331323731292c7374727563742041756469746f722028737472696e67206e616d652c737472696e67207572692c737472696e675b5d20617574686f7273292c737472756374205369676e617475726520285369676e61747572655479706520736967547970652c61646472657373207369676e65722c6279746573207369676e6174757265446174612c627974657333322068617368292c73747275637420417564697453756d6d6172792028737472696e67207469746c652c41756469746f722061756469746f722c4d6f64756c6541747472696275746573206d6f64756c65417474726962757465732c5369676e6174757265207369676e61747572652929a26469706673582212204726af82f957cdb631a52b984e7986b85ac718da9f73354a4e4e4aba1e0f7c9e64736f6c63430008190033" + +export const SAFE_7579_REGISTRY_RESOLVER_CREATECALL: Hex = + "0x7109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000006080604052348015600f57600080fd5b506102b18061001f6000396000f3fe6080604052600436106100555760003560e01c806301ffc9a71461005a57806334c85d071461009f5780638b6e59ff1461009f578063cf629cee146100b3578063d58807fe146100b3578063f68f7e1c146100c9575b600080fd5b34801561006657600080fd5b5061008b6100753660046100e2565b6001600160e01b0319166314f0f87d60e21b1490565b604051901515815260200160405180910390f35b61008b6100ad366004610113565b50600190565b61008b6100c136600461012c565b600192915050565b61008b6100d73660046101bd565b600195945050505050565b6000602082840312156100f457600080fd5b81356001600160e01b03198116811461010c57600080fd5b9392505050565b6000610100828403121561012657600080fd5b50919050565b6000806020838503121561013f57600080fd5b823567ffffffffffffffff8082111561015757600080fd5b818501915085601f83011261016b57600080fd5b81358181111561017a57600080fd5b8660208260081b850101111561018f57600080fd5b60209290920196919550909350505050565b80356001600160a01b03811681146101b857600080fd5b919050565b6000806000806000608086880312156101d557600080fd5b6101de866101a1565b94506101ec602087016101a1565b9350604086013567ffffffffffffffff8082111561020957600080fd5b908701906060828a03121561021d57600080fd5b9093506060870135908082111561023357600080fd5b818801915088601f83011261024757600080fd5b81358181111561025657600080fd5b89602082850101111561026857600080fd5b969995985093965060200194939250505056fea26469706673582212200fd7510f89312a1ee1883bc4ed18362003432e2dd98611e0980494e3b20c65b764736f6c63430008190033" + +export const SAFE_7579_REGISTRY_SCHEMA_PROXY_CREATECALL: Hex = + "0x7109709ecfa91a80626ff3989d68f67f5b1dd12b00000000000000000000000060a0604052604051610e6e380380610e6e8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b505050610489565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e600080516020610e4e833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f8919061046d565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b80600080516020610e4e8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6105248061092a83390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b03808211156103e657600080fd5b818601915086601f8301126103fa57600080fd5b81518181111561040c5761040c610363565b604051601f8201601f19908116603f0116810190838211818310171561043457610434610363565b8160405282815289602084870101111561044d57600080fd5b61045e836020830160208801610379565b80955050505050509250925092565b6000825161047f818460208701610379565b9190910192915050565b6080516104876104a36000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a9a894a6bcae36ad95efe9ad586ba6184ef220ff9186606dcd0cc687f032365d64736f6c63430008190033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212203fbd8cfb2d4fbb0565995a90dbae5aab0a992ab7c875f2fd813f8b9e260d040664736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000006a1154d99087f6bdb183cfc8cf7b6e67c641d9e3000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000" + +export const SAFE_7579_REGISTRY_RESOLVER_PROXY_CREATECALL: Hex = + "0x7109709ecfa91a80626ff3989d68f67f5b1dd12b00000000000000000000000060a0604052604051610e6e380380610e6e8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b505050610489565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e600080516020610e4e833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f8919061046d565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b80600080516020610e4e8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6105248061092a83390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b03808211156103e657600080fd5b818601915086601f8301126103fa57600080fd5b81518181111561040c5761040c610363565b604051601f8201601f19908116603f0116810190838211818310171561043457610434610363565b8160405282815289602084870101111561044d57600080fd5b61045e836020830160208801610379565b80955050505050509250925092565b6000825161047f818460208701610379565b9190910192915050565b6080516104876104a36000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a9a894a6bcae36ad95efe9ad586ba6184ef220ff9186606dcd0cc687f032365d64736f6c63430008190033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212203fbd8cfb2d4fbb0565995a90dbae5aab0a992ab7c875f2fd813f8b9e260d040664736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000080227007ea32188620ce93ed8702807dd7e5af61000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000" export const SAFE_7579_MODULE_CREATECALL: Hex = "0x000000000000000000000000000000000000000054eb9d8a32e548026d135a6f60a0604052348015600f57600080fd5b50604051601a906046565b604051809103906000f0801580156035573d6000803e3d6000fd5b506001600160a01b03166080526053565b6109e180614ee983390190565b608051614e2e6100bb600039600081816112230152818161141b0152818161157c01528181611dc501528181612216015281816122f0015281816123870152818161241e0152818161357a015281816136320152818161395a0152613a7a0152614e2e6000f3fe60806040526004361061012e5760003560e01c8063a71763a8116100ab578063d828435d1161006f578063d828435d146104a2578063e9ae5c53146104c2578063ea5f61d0146104e2578063eab77e1714610502578063f2dc691d14610522578063f698da251461054257610135565b8063a71763a8146103c7578063b0d691fe146103e7578063b875d5d81461040a578063d03c791414610455578063d691c9641461047557610135565b806355d559f4116100f257806355d559f4146102dd5780635faac46b1461030d57806379aad60e1461033b5780639517e29f1461035b5780639cfd7cff1461037b57610135565b80630a664dba146101e0578063112d3a7d146102245780631626ba7e1461025457806319822f7c1461028d578063540fb4f9146102bb57610135565b3661013557005b600036606060003560e01c63bc197c81811463f23a6e6182141763150b7a028214171561016657806020526020603cf35b50336000818152600460209081526040808320546001600160e01b031984351680855260058452828520958552949092528220546001600160a01b0391821692911690806101b48484610557565b915091506101c28888610615565b95506101d084848484610728565b5050505050915050805190602001f35b3480156101ec57600080fd5b50336000908152600460205260409020546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023057600080fd5b5061024461023f366004613d49565b6107ab565b604051901515815260200161021b565b34801561026057600080fd5b5061027461026f366004613da4565b610820565b6040516001600160e01b0319909116815260200161021b565b34801561029957600080fd5b506102ad6102a8366004613e08565b610b96565b60405190815260200161021b565b3480156102c757600080fd5b506102db6102d6366004613eab565b610caa565b005b3480156102e957600080fd5b506102fd6102f8366004613fa7565b610d5a565b60405161021b9493929190614048565b34801561031957600080fd5b5061032d610328366004614094565b610fb7565b60405161021b9291906140c0565b34801561034757600080fd5b506102db610356366004614123565b610fd3565b34801561036757600080fd5b506102db610376366004613d49565b6110c8565b34801561038757600080fd5b50604080518082018252601a81527f7268696e6573746f6e652e73616665373537392e76312e302e300000000000006020820152905161021b9190614164565b3480156103d357600080fd5b506102db6103e2366004613d49565b611293565b3480156103f357600080fd5b506f71727de22e5e9d8baf0edac6f37da032610207565b34801561041657600080fd5b5061020761042536600461418d565b6001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b031690565b34801561046157600080fd5b506102446104703660046141aa565b6115ba565b34801561048157600080fd5b50610495610490366004613da4565b611662565b60405161021b91906141c3565b3480156104ae57600080fd5b506102ad6104bd366004614228565b61174b565b3480156104ce57600080fd5b506102db6104dd366004613da4565b6117eb565b3480156104ee57600080fd5b5061032d6104fd366004614094565b611b88565b34801561050e57600080fd5b506102db61051d366004614267565b611b99565b34801561052e57600080fd5b5061024461053d3660046141aa565b611c08565b34801561054e57600080fd5b506102ad611c57565b6060806001600160a01b038416156105d7576105be33856000610578611cb0565b3460003660405160240161058f94939291906142f6565b60408051601f198184030181529190526020810180516001600160e01b031663d68f602560e01b179052611cbc565b9150818060200190518101906105d491906143df565b91505b6001600160a01b0383161561060e576105f533846000610578611cb0565b90508080602001905181019061060b91906143df565b90505b9250929050565b600080356001600160e01b031916815260036020908152604080832033845290915290208054606091906001600160a01b03811690600160a01b900460f81b8161068557604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61069381607f60f91b611d65565b156106d7576106cd338388886106a7611cb0565b6040516020016106b993929190614413565b604051602081830303815290604052611d77565b9350505050610722565b6106e2816000611d65565b1561071e576106cd3383600089896106f8611cb0565b60405160200161070a93929190614413565b604051602081830303815290604052611cbc565b5050505b92915050565b6001600160a01b0384161561077e5761077e338560008560405160240161074f9190614164565b60408051601f198184030181529190526020810180516001600160e01b0316630b9dfbed60e11b179052611e4c565b6001600160a01b038316156107a5576107a5338460008460405160240161074f9190614164565b50505050565b6000600185036107dd57336001600160a01b038516036107cd57506001610818565b6107d684611eeb565b9050610818565b600285036107ee576107d684611ef9565b60038503610801576107d6848484611f07565b60048503610814576107d6848484611f53565b5060005b949350505050565b6000338282036109ba5760006108f1826001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108919190614439565b60408051602081018a90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca91015b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052611f8e565b8051602090910120604051635ae6bd3760e01b8152600481018290529091506001600160a01b03831690635ae6bd3790602401602060405180830381865afa158015610941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109659190614439565b6000036109a85760405162461bcd60e51b815260206004820152601160248201527012185cda081b9bdd08185c1c1c9bdd9959607a1b604482015260640161067c565b50630b135d3f60e11b9150610b8f9050565b60006109c96014828688614452565b6109d29161447c565b60601c90508015806109ea57506109e881611eeb565b155b15610b14576000610a89836001600160a01b031663f698da256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190614439565b60408051602081018b90527f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca91016108c0565b805160208201209091506001600160a01b03841663934f3a118284610ab18a6014818e614452565b6040518563ffffffff1660e01b8152600401610ad094939291906144c9565b60006040518083038186803b158015610ae857600080fd5b505afa158015610afc573d6000803e3d6000fd5b50630b135d3f60e11b9750610b8f9650505050505050565b6000610b733383610b23611cb0565b8a610b318a6014818e614452565b604051602401610b4494939291906142f6565b60408051601f198184030181529190526020810180516001600160e01b0316637aa8f17760e11b179052611d77565b905080806020019051810190610b8991906144f5565b93505050505b9392505050565b60006f71727de22e5e9d8baf0edac6f37da032610bb1611cb0565b6001600160a01b031614610bd857604051635629665f60e11b815260040160405180910390fd5b6020840135606081901c90811580610bf65750610bf482611eeb565b155b15610c0b57610c0486612008565b9250610c70565b6000610c56338460008a8a604051602401610c27929190614557565b60408051601f198184030181529190526020810180516001600160e01b0316639700320360e01b179052611cbc565b905080806020019051810190610c6c9190614439565b9350505b8315610ca157610ca1336f71727de22e5e9d8baf0edac6f37da0328660405180602001604052806000815250611e4c565b50509392505050565b6f71727de22e5e9d8baf0edac6f37da032610cc3611cb0565b6001600160a01b03161480610cf05750610cdb611cb0565b6001600160a01b0316336001600160a01b0316145b610d0d57604051635629665f60e11b815260040160405180910390fd5b610d3f610d1d602083018361465b565b610d2a6020840184614678565b610d3a60608601604087016146c1565b6120b7565b610d4f898989898989898961216e565b505050505050505050565b6060600080823682610d706101008901896146dc565b9092509050610d83600660008385614452565b610d8c91614722565b60d01c9450610d9f600c60068385614452565b610da891614722565b60d01c9350610dba81600c8185614452565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516101c081019091527fc03dfc11d8b10bf9cf703d558958c8c42777f785d998c62060d85a4f0ef6ea7f815294975095509293505060208084019250610e3691508a018a61465b565b6001600160a01b0316815260200188602001358152602001888060400190610e5e91906146dc565b604051610e6c929190614758565b6040519081900390208152602001610e8760608a018a6146dc565b604051610e95929190614758565b60405180910390208152602001610eab8961248d565b6001600160801b03168152602001610ec28961249d565b6001600160801b031681526020018860a001358152602001610ee3896124b2565b6001600160801b03168152602001610efa896124c1565b6001600160801b03168152602001610f1560e08a018a6146dc565b604051610f23929190614758565b6040805191829003909120825265ffffffffffff80881660208401528616908201526001600160a01b0388166060909101526101c08120909150601960f81b600160f81b610f6f611c57565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529550505092959194509250565b60606000610fc860013386866124d6565b915091509250929050565b6f71727de22e5e9d8baf0edac6f37da032610fec611cb0565b6001600160a01b031614806110195750611004611cb0565b6001600160a01b0316336001600160a01b0316145b61103657604051635629665f60e11b815260040160405180910390fd5b61104160013361269a565b8060005b81811015611097573684848381811061106057611060614768565b9050602002810190611072919061477e565b905061108e33611085602084018461465b565b60019190612715565b50600101611045565b5060405133907ff48581d8a62b775b74f2fb67f1d5806a9a356fbcc598040ab3071d3e37af40c290600090a2505050565b336000908152600460209081526040808320547fd00bcad91b775f25eb0aee15808d12dfdaa6dc5a7d6b754e26f9c205d2a3b8df909252822054639517e29f60e01b926001600160a01b039283169290911690806111268484610557565b915091506111416f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b0316611152611cb0565b6001600160a01b0316148061117f575061116a611cb0565b6001600160a01b0316336001600160a01b0316145b61119c57604051635629665f60e11b815260040160405180910390fd5b606060018a036111b8576111b189898961280a565b905061121d565b60028a036111cb576111b1898989612866565b60038a036111de576111b1898989612881565b60048a036111f1576111b1898989612a00565b89611201576111b1898989612ba0565b60405163041c38b360e41b8152600481018b905260240161067c565b611286337f00000000000000000000000000000000000000000000000000000000000000008c8c856040516024016112579392919061479e565b60408051601f198184030181529190526020810180516001600160e01b0316639517e29f60e01b179052612d51565b50610d4f84848484610728565b336000908152600460209081526040808320547fc45a7acaba78a7b4c4432b604d301355b314c0a7811768a1ee2563c9d34ca4e09092529091205484916314e2ec7560e31b916001600160a01b0391821691908116908416821480159061130c5750806001600160a01b0316846001600160a01b031614155b156114925760008061131e8484610557565b915091506113396f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b031661134a611cb0565b6001600160a01b031614806113775750611362611cb0565b6001600160a01b0316336001600160a01b0316145b61139457604051635629665f60e11b815260040160405180910390fd5b606060018b036113b0576113a98a8a8a612dea565b9050611415565b60028b036113c3576113a98a8a8a612e13565b60038b036113d6576113a98a8a8a612e34565b60048b036113e9576113a98a8a8a612e80565b8a6113f9576113a98a8a8a612f38565b60405163041c38b360e41b8152600481018c905260240161067c565b61147e337f00000000000000000000000000000000000000000000000000000000000000008d8d8560405160240161144f9392919061479e565b60408051601f198184030181529190526020810180516001600160e01b0316637827252560e01b17905261308b565b5061148b84848484610728565b50506115b0565b6f71727de22e5e9d8baf0edac6f37da0326114ab611cb0565b6001600160a01b031614806114d857506114c3611cb0565b6001600160a01b0316336001600160a01b0316145b6114f557604051635629665f60e11b815260040160405180910390fd5b6060600189036115115761150a888888612dea565b9050611576565b600289036115245761150a888888612e13565b600389036115375761150a888888612e34565b6004890361154a5761150a888888612e80565b8861155a5761150a888888612f38565b60405163041c38b360e41b8152600481018a905260240161067c565b610d4f337f00000000000000000000000000000000000000000000000000000000000000008b8b8560405160240161144f9392919061479e565b5050505050505050565b600081600881901b6115d082600160f81b611d65565b156115de5760019250611621565b6115e9826000611d65565b156115f75760019250611621565b611609826001600160f81b0319611d65565b156116175760019250611621565b5060009392505050565b8280156116345750611634816000611d65565b15611640575050919050565b828015611656575061165681600160f81b611d65565b15611617575050919050565b606061167461166f611cb0565b611ef9565b6116a557611680611cb0565b604051635c93ff2f60e11b81526001600160a01b03909116600482015260240161067c565b336000908152600460209081526040808320547f4162c930ade27880570b0eb31efbc8a626b97e81a40ced27163509dfe16398829092528220546335a4725960e21b926001600160a01b039283169290911690806117038484610557565b9150915061170f611cb0565b600261171b8282613141565b8a600881901b61172d81838e8e6131cc565b99505050505061173f84848484610728565b50505050509392505050565b6000602082901b640100000000600160c01b03166f71727de22e5e9d8baf0edac6f37da032604051631aab3f0d60e11b81526001600160a01b0386811660048301526001600160c01b038416602483015291909116906335567e1a90604401602060405180830381865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190614439565b336000908152600460209081526040808320547fccfe1b2bef70acd8e661aeb5430e147f4c75cb320972acba718a28da428e1a3090925282205463e9ae5c5360e01b926001600160a01b039283169290911690806118498484610557565b915091506118646f71727de22e5e9d8baf0edac6f37da03290565b6001600160a01b0316611875611cb0565b6001600160a01b031614806118a2575061188d611cb0565b6001600160a01b0316336001600160a01b0316145b6118bf57604051635629665f60e11b815260040160405180910390fd5b87600881901b336118d1826000611d65565b15611a2a576118e483600160f81b611d65565b156119055789358a016020810190356118fe838383613574565b5050611b79565b611910836000611d65565b15611978576000803660006119258e8e6135db565b935093509350935061196f85858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e4c92505050565b50505050611b79565b61198a836001600160f81b0319611d65565b15611a0f57600061199e6014828c8e614452565b6119a79161447c565b60601c90503660008c8c60149080926119c293929190614452565b91509150611a07848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5192505050565b505050611b79565b82604051632e5bf3f960e21b815260040161067c91906147d1565b611a3882600160f81b611d65565b15611b5e57611a4b83600160f81b611d65565b15611a655789358a016020810190356118fe83838361362c565b611a70836000611d65565b15611acf57600080366000611a858e8e6135db565b935093509350935061196f85858585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061369392505050565b611ae1836001600160f81b0319611d65565b15611a0f576000611af56014828c8e614452565b611afe9161447c565b60601c90503660008c8c6014908092611b1993929190614452565b91509150611a07848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061308b92505050565b816040516308c3ee0360e11b815260040161067c91906147d1565b5050506115b084848484610728565b60606000610fc860023386866124d6565b6f71727de22e5e9d8baf0edac6f37da032611bb2611cb0565b6001600160a01b03161480611bdf5750611bca611cb0565b6001600160a01b0316336001600160a01b0316145b611bfc57604051635629665f60e11b815260040160405180910390fd5b6107a5848484846120b7565b600060018203611c1a57506001919050565b60028203611c2a57506001919050565b60038203611c3a57506001919050565b60048203611c4a57506001919050565b506000919050565b919050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b60131936013560601c90565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401611cf3949392919061481e565b6000604051808303816000875af1158015611d12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d3a9190810190614864565b9250905080611d5c57604051632b3f6d1160e21b815260040160405180910390fd5b50949350505050565b6001600160f81b031990811691161490565b606060008383604051602401611d8e9291906148b1565b60408051601f198184030181529181526020820180516001600160e01b0316636a22165760e01b17905251909150600090611def907f00000000000000000000000000000000000000000000000000000000000000009084906024016148b1565b60408051601f19818403018152919052602080820180516001600160e01b031663b4faba0960e01b17815282519293509091600091895afa5060203d036040519350808401604052806020853e50600051610ca157825160208401fd5b60405163468721a760e01b81526000906001600160a01b0386169063468721a790611e8190879087908790879060040161481e565b6020604051808303816000875af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec491906148d5565b905080611ee457604051632b3f6d1160e21b815260040160405180910390fd5b5050505050565b600061072260013384613749565b600061072260023384613749565b600080611f168385018561418d565b6001600160e01b03191660009081526003602090815260408083203384529091529020546001600160a01b03908116908616149150509392505050565b60008080611f63848601866148ff565b915091506000611f73838361378d565b6001600160a01b039081169088161493505050509392505050565b6060601960f81b600160f81b858585604051602001611fae92919061492b565b60408051808303601f190181529082905280516020918201206001600160f81b0319958616918301919091529290931660218401526022830152604282015260620160405160208183030381529060405290509392505050565b600080808080612028866f71727de22e5e9d8baf0edac6f37da032610d5a565b8351602085012060405163934f3a1160e01b81529498509296509094509250339163934f3a119161205f9188908690600401614951565b60006040518083038186803b15801561207757600080fd5b505afa925050508015612088575060015b61209f5761209860018385613823565b94506120ae565b6120ab60008385613823565b94505b50505050919050565b33600090815260208190526040902080546001600160a01b0319166001600160a01b0386169081179091551561213257612132338560008487876040516024016121039392919061497c565b60408051601f198184030181529190526020810180516001600160e01b031663f05c04e160e01b179052611e4c565b6040516001600160a01b0385169033907f9452c8fb077c3ea8f28a77c87488af657b1e44d010ad9a5992d73870da040e9490600090a350505050565b3360009081527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f602052604090205460609088906001600160a01b0316612266576121ba60013361269a565b60005b8181101561226057368b8b838181106121d8576121d8614768565b90506020028101906121ea919061477e565b905061220e6121fc602083018361465b565b61220960208401846146dc565b61280a565b9350612257337f00000000000000000000000000000000000000000000000000000000000000006001612244602086018661465b565b886040516024016112579392919061479e565b506001016121bd565b50612287565b80156122875760405163d8e3ed1b60e01b815233600482015260240161067c565b61229260023361269a565b508560005b8181101561232757368989838181106122b2576122b2614768565b90506020028101906122c4919061477e565b90506122e86122d6602083018361465b565b6122e360208401846146dc565b612866565b935061231e337f00000000000000000000000000000000000000000000000000000000000000006002612244602086018661465b565b50600101612297565b5084905060005b818110156123be573687878381811061234957612349614768565b905060200281019061235b919061477e565b905061237f61236d602083018361465b565b61237a60208401846146dc565b612881565b93506123b5337f00000000000000000000000000000000000000000000000000000000000000006003612244602086018661465b565b5060010161232e565b5082905060005b8181101561245557368585838181106123e0576123e0614768565b90506020028101906123f2919061477e565b9050612416612404602083018361465b565b61241160208401846146dc565b612a00565b935061244c337f00000000000000000000000000000000000000000000000000000000000000006004612244602086018661465b565b506001016123c5565b5060405133907ff48581d8a62b775b74f2fb67f1d5806a9a356fbcc598040ab3071d3e37af40c290600090a250505050505050505050565b6000610722826080013560801c90565b60006001600160801b03608083013516610722565b600060c082013560801c610722565b60006001600160801b0360c083013516610722565b606060006001600160a01b0384166001148015906124fc57506124fa868686613749565b155b1561252557604051637c84ecfb60e01b81526001600160a01b038516600482015260240161067c565b826000036125465760405163f725081760e01b815260040160405180910390fd5b826001600160401b0381111561255e5761255e614328565b604051908082528060200260200182016040528015612587578160200160208202803683370190505b506001600160a01b038086166000908152602089815260408083208a85168452909152812054929450911691505b6001600160a01b038216158015906125d757506001600160a01b038216600114155b80156125e257508381105b1561264757818382815181106125fa576125fa614768565b6001600160a01b039283166020918202929092018101919091529281166000908152888452604080822089841683529094529290922054909116908061263f816149ea565b9150506125b5565b6001600160a01b0382166001148015906126615750600081115b1561268d5782612672600183614a03565b8151811061268257612682614768565b602002602001015191505b8083525094509492505050565b60016000908152602083815260408083206001600160a01b03808616855292529091205416156126dd576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602093845260408082206001600160a01b0394909416825292909352912080546001600160a01b0319169091179055565b6001600160a01b038116158061273457506001600160a01b0381166001145b1561275d57604051637c84ecfb60e01b81526001600160a01b038216600482015260240161067c565b6001600160a01b03818116600090815260208581526040808320868516845290915290205416156127ac57604051631034f46960e21b81526001600160a01b038216600482015260240161067c565b60016000908152602084815260408083206001600160a01b039586168085528184528285208054968816808752988552838620918652908452919093208054949095166001600160a01b031994851617909455528154169091179055565b60608360016128198282613141565b61282560013388612715565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b60608360026128758282613141565b61282560023388612715565b60608360036128908282613141565b600080806128a087890189614a67565b919450925090506001600160e01b031983166306d61fe760e41b14806128d657506001600160e01b03198316638a91b0e360e01b145b15612900576040516379bd117b60e01b81526001600160e01b03198416600482015260240161067c565b61290b826000611d65565b8015612920575061292082607f60f91b611d65565b1561294057816040516376087dc160e01b815260040161067c91906147d1565b6001600160e01b0319831660009081526003602090815260408083203384529091529020546001600160a01b031615612998576040516374420d1560e01b81526001600160e01b03198416600482015260240161067c565b6001600160e01b03199092166000908152600360209081526040808320338452909152902080546001600160a01b038a166001600160a01b031960f89490941c600160a01b02939093166001600160a81b031990911617919091179055925050509392505050565b6060836004612a0f8282613141565b60008080612a1f87890189614ad5565b91945092509050600080846001811115612a3b57612a3b6147e6565b148015612a5057506001600160e01b03198316155b15612ac65750336000908152600460205260409020546001600160a01b03168015612a995760405163741cbe0360e01b81526001600160a01b038216600482015260240161067c565b33600090815260046020526040902080546001600160a01b0319166001600160a01b038c16179055612b93565b6001846001811115612ada57612ada6147e6565b03612b7a57506001600160e01b0319821660009081526005602090815260408083203384529091529020546001600160a01b03168015612b385760405163741cbe0360e01b81526001600160a01b038216600482015260240161067c565b6001600160e01b031983166000908152600560209081526040808320338452909152902080546001600160a01b0319166001600160a01b038c16179055612b93565b604051635691922f60e01b815260040160405180910390fd5b5098975050505050505050565b60608235830160208181019135908581013586018082019190359060408801358801908101903584838114612be85760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015612d0a576000888883818110612c0757612c07614768565b90506020020135905060018103612c4657612c408d888885818110612c2e57612c2e614768565b905060200281019061220991906146dc565b50612d01565b60028103612c7657612c408d888885818110612c6457612c64614768565b90506020028101906122e391906146dc565b60038103612ca657612c408d888885818110612c9457612c94614768565b905060200281019061237a91906146dc565b60048103612cd657612c408d888885818110612cc457612cc4614768565b905060200281019061241191906146dc565b60405163484d218160e01b81526001600160a01b038e1660048201526024810182905260440161067c565b50600101612beb565b5082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b60405163468721a760e01b81526000906001600160a01b0385169063468721a790612d879086908590879060019060040161481e565b6020604051808303816000875af1158015612da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dca91906148d5565b9050806107a557604051632b3f6d1160e21b815260040160405180910390fd5b60606000612dfa83850185614b03565b92509050612e0b600133838861385b565b509392505050565b60606000612e2383850185614b03565b92509050612e0b600233838861385b565b60606000612e4483850185614b48565b6001600160e01b03199091166000908152600360209081526040808320338452909152902080546001600160a01b031916905595945050505050565b6060600080612e9184860186614ad5565b945090925090506000826001811115612eac57612eac6147e6565b148015612ec157506001600160e01b03198116155b15612ee85733600090815260046020526040902080546001600160a01b0319169055610ca1565b6001826001811115612efc57612efc6147e6565b03612b7a576001600160e01b031981166000908152600560209081526040808320338452909152902080546001600160a01b0319169055610ca1565b60608235830160208181019135908581013586018082019190359060408801358801908101903584838114612f805760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015612d0a576000888883818110612f9f57612f9f614768565b90506020020135905060018103612fe357612fdd8d888885818110612fc657612fc6614768565b9050602002810190612fd891906146dc565b612dea565b50613082565b6002810361301857612fdd8d88888581811061300157613001614768565b905060200281019061301391906146dc565b612e13565b6003810361304d57612fdd8d88888581811061303657613036614768565b905060200281019061304891906146dc565b612e34565b60048103612cd657612fdd8d88888581811061306b5761306b614768565b905060200281019061307d91906146dc565b612e80565b50600101612f83565b60405163468721a760e01b81526000906001600160a01b0385169063468721a7906130c19086908590879060019060040161481e565b6020604051808303816000875af11580156130e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310491906148d5565b9050806107a557604080516001600160a01b038616815260006020820152600080516020614dd9833981519152910160405180910390a150505050565b336000908152602081905260409020546001600160a01b031680156131c75760405163529562a160e01b81523360048201526001600160a01b0384811660248301526044820184905282169063529562a19060640160006040518083038186803b1580156131ae57600080fd5b505afa1580156131c2573d6000803e3d6000fd5b505050505b505050565b60606131d9856000611d65565b156133c5576131ec84600160f81b611d65565b1561320f5782358301602081019035613206338383613952565b92505050610818565b61321a846000611d65565b156132ce5760008036600061322f87876135db565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161324e5790505094506132a733858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cbc92505050565b856000815181106132ba576132ba614768565b602002602001018190525050505050610818565b6132e0846001600160f81b0319611d65565b156133aa5760006132f46014828587614452565b6132fd9161447c565b60601c90503660006133128560148189614452565b604080516001808252818301909252929450909250816020015b606081526020019060019003908161332c579050509350613384338484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139ce92505050565b8460008151811061339757613397614768565b6020026020010181905250505050610818565b83604051632e5bf3f960e21b815260040161067c91906147d1565b6133d385600160f81b611d65565b15613559576133e684600160f81b611d65565b1561340b5782358301602081019035613400338383613a6f565b935061081892505050565b613416846000611d65565b156134a35760008036600061342b87876135db565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161344a5790505094506132a733858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b6592505050565b6134b5846001600160f81b0319611d65565b156133aa5760006134c96014828587614452565b6134d29161447c565b60601c90503660006134e78560148189614452565b604080516001808252818301909252929450909250816020015b6060815260200190600190039081613501579050509350613384338484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c2592505050565b846040516308c3ee0360e11b815260040161067c91906147d1565b6131c7837f000000000000000000000000000000000000000000000000000000000000000084846040516024016135ac929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316633f707e6b60e01b179052612d51565b60008036816135ed6014828789614452565b6135f69161447c565b60601c9350613609603460148789614452565b61361291614c18565b92506136218560348189614452565b949793965094505050565b6131c7837f00000000000000000000000000000000000000000000000000000000000000008484604051602401613664929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316632864481160e11b17905261308b565b60405163468721a760e01b81526000906001600160a01b0386169063468721a7906136c890879087908790879060040161481e565b6020604051808303816000875af11580156136e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370b91906148d5565b905080611ee457604080516001600160a01b038716815260006020820152600080516020614dd9833981519152910160405180910390a15050505050565b600060016001600160a01b038316148015906108185750506001600160a01b0390811660009081526020938452604080822093831682529290935291205416151590565b6000808360018111156137a2576137a26147e6565b1480156137b757506001600160e01b03198216155b156137d75750336000908152600460205260409020546001600160a01b03165b60018360018111156137eb576137eb6147e6565b0361072257506001600160e01b03191660009081526005602090815260408083203384529091529020546001600160a01b0316919050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561384b57600061384e565b60015b60ff161717949350505050565b6001600160a01b038116158061387a57506001600160a01b0381166001145b156138a357604051637c84ecfb60e01b81526001600160a01b038316600482015260240161067c565b6001600160a01b0382811660009081526020868152604080832087851684529091529020548116908216146138f657604051637c84ecfb60e01b81526001600160a01b038216600482015260240161067c565b6001600160a01b039081166000908152602085815260408083209584168084528683528184208054968616855297835281842090845282529091208054939092166001600160a01b031993841617909155919091528154169055565b60606139bb847f0000000000000000000000000000000000000000000000000000000000000000858560405160240161398c929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316636108557360e01b1790526139ce565b8060200190518101906108189190614ce5565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b8152600401613a06949392919061481e565b6000604051808303816000875af1158015613a25573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a4d9190810190614864565b9250905080612e0b57604051632b3f6d1160e21b815260040160405180910390fd5b6060806000613adb867f00000000000000000000000000000000000000000000000000000000000000008787604051602401613aac929190614b66565b60408051601f198184030181529190526020810180516001600160e01b0316639abb6e1760e01b179052613c25565b905080806020019051810190613af19190614d19565b8151919450925060005b81811015613b5a57848181518110613b1557613b15614768565b6020026020010151613b5257604080516001600160a01b038a16815260208101839052600080516020614dd9833981519152910160405180910390a15b600101613afb565b505050935093915050565b60606000856001600160a01b0316635229073f86868660006040518563ffffffff1660e01b8152600401613b9c949392919061481e565b6000604051808303816000875af1158015613bbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613be39190810190614864565b9250905080611d5c57604080516001600160a01b038816815260006020820152600080516020614dd9833981519152910160405180910390a150949350505050565b60606000846001600160a01b0316635229073f8560008660016040518563ffffffff1660e01b8152600401613c5d949392919061481e565b6000604051808303816000875af1158015613c7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ca49190810190614864565b9250905080612e0b57604080516001600160a01b038716815260006020820152600080516020614dd9833981519152910160405180910390a1509392505050565b6001600160a01b0381168114613cfa57600080fd5b50565b8035611c5281613ce5565b60008083601f840112613d1a57600080fd5b5081356001600160401b03811115613d3157600080fd5b60208301915083602082850101111561060e57600080fd5b60008060008060608587031215613d5f57600080fd5b843593506020850135613d7181613ce5565b925060408501356001600160401b03811115613d8c57600080fd5b613d9887828801613d08565b95989497509550505050565b600080600060408486031215613db957600080fd5b8335925060208401356001600160401b03811115613dd657600080fd5b613de286828701613d08565b9497909650939450505050565b60006101208284031215613e0257600080fd5b50919050565b600080600060608486031215613e1d57600080fd5b83356001600160401b03811115613e3357600080fd5b613e3f86828701613def565b9660208601359650604090950135949350505050565b60008083601f840112613e6757600080fd5b5081356001600160401b03811115613e7e57600080fd5b6020830191508360208260051b850101111561060e57600080fd5b600060608284031215613e0257600080fd5b600080600080600080600080600060a08a8c031215613ec957600080fd5b89356001600160401b03811115613edf57600080fd5b613eeb8c828d01613e55565b909a5098505060208a01356001600160401b03811115613f0a57600080fd5b613f168c828d01613e55565b90985096505060408a01356001600160401b03811115613f3557600080fd5b613f418c828d01613e55565b90965094505060608a01356001600160401b03811115613f6057600080fd5b613f6c8c828d01613e55565b90945092505060808a01356001600160401b03811115613f8b57600080fd5b613f978c828d01613e99565b9150509295985092959850929598565b60008060408385031215613fba57600080fd5b82356001600160401b03811115613fd057600080fd5b613fdc85828601613def565b9250506020830135613fed81613ce5565b809150509250929050565b60005b83811015614013578181015183820152602001613ffb565b50506000910152565b60008151808452614034816020860160208601613ff8565b601f01601f19169290920160200192915050565b60808152600061405b608083018761401c565b65ffffffffffff8616602084015265ffffffffffff851660408401528281036060840152614089818561401c565b979650505050505050565b600080604083850312156140a757600080fd5b82356140b281613ce5565b946020939093013593505050565b6040808252835190820181905260009060208501906060840190835b818110156141035783516001600160a01b03168352602093840193909201916001016140dc565b50506001600160a01b039490941660209390930192909252509092915050565b6000806020838503121561413657600080fd5b82356001600160401b0381111561414c57600080fd5b61415885828601613e55565b90969095509350505050565b602081526000610b8f602083018461401c565b6001600160e01b031981168114613cfa57600080fd5b60006020828403121561419f57600080fd5b8135610b8f81614177565b6000602082840312156141bc57600080fd5b5035919050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561421c57603f1987860301845261420785835161401c565b945060209384019391909101906001016141eb565b50929695505050505050565b6000806040838503121561423b57600080fd5b823561424681613ce5565b91506020830135613fed81613ce5565b803560ff81168114611c5257600080fd5b6000806000806060858703121561427d57600080fd5b843561428881613ce5565b935060208501356001600160401b038111156142a357600080fd5b6142af87828801613e55565b90945092506142c2905060408601614256565b905092959194509250565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038516815283602082015260606040820152600061431e6060830184866142cd565b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561436657614366614328565b604052919050565b60006001600160401b0382111561438757614387614328565b50601f01601f191660200190565b600082601f8301126143a657600080fd5b81516143b96143b48261436e565b61433e565b8181528460208386010111156143ce57600080fd5b610818826020830160208701613ff8565b6000602082840312156143f157600080fd5b81516001600160401b0381111561440757600080fd5b61081884828501614395565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60006020828403121561444b57600080fd5b5051919050565b6000808585111561446257600080fd5b8386111561446f57600080fd5b5050820193919092039150565b80356bffffffffffffffffffffffff1981169060148410156144c2576bffffffffffffffffffffffff196bffffffffffffffffffffffff198560140360031b1b82161691505b5092915050565b8481526060602082015260006144e2606083018661401c565b82810360408401526140898185876142cd565b60006020828403121561450757600080fd5b8151610b8f81614177565b6000808335601e1984360301811261452957600080fd5b83016020810192503590506001600160401b0381111561454857600080fd5b80360382131561060e57600080fd5b604081526145786040820161456b85613cfd565b6001600160a01b03169052565b6020830135606082015260006145916040850185614512565b61012060808501526145a8610160850182846142cd565b9150506145b86060860186614512565b848303603f190160a08601526145cf8382846142cd565b608088013560c08781019190915260a089013560e0808901919091529089013561010088015290935061460792508701905086614512565b848303603f190161012086015261461f8382846142cd565b92505050614631610100860186614512565b848303603f19016101408601526146498382846142cd565b93505050508260208301529392505050565b60006020828403121561466d57600080fd5b8135610b8f81613ce5565b6000808335601e1984360301811261468f57600080fd5b8301803591506001600160401b038211156146a957600080fd5b6020019150600581901b360382131561060e57600080fd5b6000602082840312156146d357600080fd5b610b8f82614256565b6000808335601e198436030181126146f357600080fd5b8301803591506001600160401b0382111561470d57600080fd5b60200191503681900382131561060e57600080fd5b80356001600160d01b031981169060068410156144c2576001600160d01b031960069490940360031b84901b1690921692915050565b8183823760009101908152919050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261479457600080fd5b9190910192915050565b8381526001600160a01b03831660208201526060604082018190526000906147c89083018461401c565b95945050505050565b6001600160f81b031991909116815260200190565b634e487b7160e01b600052602160045260246000fd5b6002811061481a57634e487b7160e01b600052602160045260246000fd5b9052565b60018060a01b0385168152836020820152608060408201526000614845608083018561401c565b90506147c860608301846147fc565b80518015158114611c5257600080fd5b6000806040838503121561487757600080fd5b61488083614854565b915060208301516001600160401b0381111561489b57600080fd5b6148a785828601614395565b9150509250929050565b6001600160a01b03831681526040602082018190526000906108189083018461401c565b6000602082840312156148e757600080fd5b610b8f82614854565b803560028110611c5257600080fd5b6000806040838503121561491257600080fd5b61491b836148f0565b91506020830135613fed81614177565b82815260008251614943816020850160208701613ff8565b919091016020019392505050565b83815260606020820152600061496a606083018561401c565b828103604084015261431e818561401c565b60ff84168152604060208201819052810182905260008360608301825b858110156149c95782356149ac81613ce5565b6001600160a01b0316825260209283019290910190600101614999565b509695505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016149fc576149fc6149d4565b5060010190565b81810381811115610722576107226149d4565b600082601f830112614a2757600080fd5b8135614a356143b48261436e565b818152846020838601011115614a4a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614a7c57600080fd5b8335614a8781614177565b925060208401356001600160f81b031981168114614aa457600080fd5b915060408401356001600160401b03811115614abf57600080fd5b614acb86828701614a16565b9150509250925092565b600080600060608486031215614aea57600080fd5b614af3846148f0565b92506020840135614aa481614177565b60008060408385031215614b1657600080fd5b8235614b2181613ce5565b915060208301356001600160401b03811115614b3c57600080fd5b6148a785828601614a16565b60008060408385031215614b5b57600080fd5b8235614b2181614177565b6020808252810182905260006040600584901b830181019083018583605e1936839003015b87821015614c0b57868503603f190184528235818112614baa57600080fd5b89018035614bb781613ce5565b6001600160a01b0316865260208181013590870152614bd96040820182614512565b915060606040880152614bf06060880183836142cd565b96505050602083019250602084019350600182019150614b8b565b5092979650505050505050565b8035602083101561072257600019602084900360031b1b1692915050565b60006001600160401b03821115614c4f57614c4f614328565b5060051b60200190565b600082601f830112614c6a57600080fd5b8151614c786143b482614c36565b8082825260208201915060208360051b860101925085831115614c9a57600080fd5b602085015b83811015614cdb5780516001600160401b03811115614cbd57600080fd5b614ccc886020838a0101614395565b84525060209283019201614c9f565b5095945050505050565b600060208284031215614cf757600080fd5b81516001600160401b03811115614d0d57600080fd5b61081884828501614c59565b60008060408385031215614d2c57600080fd5b82516001600160401b03811115614d4257600080fd5b8301601f81018513614d5357600080fd5b8051614d616143b482614c36565b8082825260208201915060208360051b850101925087831115614d8357600080fd5b6020840193505b82841015614dac57614d9b84614854565b825260209384019390910190614d8a565b8095505050505060208301516001600160401b03811115614dcc57600080fd5b6148a785828601614c5956feb8bc84bd77f5eb08210b8eb20fd63b3ec6a7992d277ab94663bae0e066f792aca2646970667358221220ea7603497be0a0e1ddc106666c75af038c8db18b0f9143f6418b0e8b232c109164736f6c634300081a00336080604052348015600f57600080fd5b506109c28061001f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636a2216571161005b5780636a221657146100d357806378272525146100e65780639517e29f146100f95780639abb6e171461010c57600080fd5b80633f707e6b1461008257806350c890221461009757806361085573146100aa575b600080fd5b6100956100903660046105ba565b61012d565b005b6100956100a53660046105ba565b610197565b6100bd6100b83660046105ba565b6101fc565b6040516100ca91906106c4565b60405180910390f35b6100956100e1366004610710565b6102be565b6100956100f43660046107da565b6102e1565b6100956101073660046107da565b61038a565b61011f61011a3660046105ba565b610429565b6040516100ca929190610864565b8060005b81811015610191573684848381811061014c5761014c6108be565b905060200281019061015e91906108d4565b905061018761017060208301836108f4565b6020830135610182604085018561090f565b610553565b5050600101610131565b50505050565b8060005b8181101561019157368484838181106101b6576101b66108be565b90506020028101906101c891906108d4565b90506101f16101da60208301836108f4565b60208301356101ec604085018561090f565b610589565b50505060010161019b565b6060818067ffffffffffffffff811115610218576102186106fa565b60405190808252806020026020018201604052801561024b57816020015b60608152602001906001900390816102365790505b50915060005b818110156102b6573685858381811061026c5761026c6108be565b905060200281019061027e91906108d4565b905061029061017060208301836108f4565b8483815181106102a2576102a26108be565b602090810291909101015250600101610251565b505092915050565b604051600080835160208501865afa3d6000833e80156102dc573d82f35b503d81fd5b604051638a91b0e360e01b81526001600160a01b03841690638a91b0e39061030f908590859060040161095d565b600060405180830381600087803b15801561032957600080fd5b505af115801561033d573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e93500190505b60405180910390a150505050565b6040516306d61fe760e41b81526001600160a01b03841690636d61fe70906103b8908590859060040161095d565b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b5050604080518781526001600160a01b03871660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef123935001905061037c565b606080828067ffffffffffffffff811115610446576104466106fa565b60405190808252806020026020018201604052801561047957816020015b60608152602001906001900390816104645790505b5091508067ffffffffffffffff811115610495576104956106fa565b6040519080825280602002602001820160405280156104be578160200160208202803683370190505b50925060005b8181101561054a57368686838181106104df576104df6108be565b90506020028101906104f191906108d4565b90506105036101da60208301836108f4565b868481518110610515576105156108be565b6020026020010186858151811061052e5761052e6108be565b60209081029190910101919091529015159052506001016104c4565b50509250929050565b60405181838237600038838387895af1610570573d6000823e3d81fd5b3d8152602081013d6000823e3d01604052949350505050565b604051600090828482376000388483888a5af191503d8152602081013d6000823e3d81016040525094509492505050565b600080602083850312156105cd57600080fd5b823567ffffffffffffffff8111156105e457600080fd5b8301601f810185136105f557600080fd5b803567ffffffffffffffff81111561060c57600080fd5b8560208260051b840101111561062157600080fd5b6020919091019590945092505050565b600082825180855260208501945060208160051b8301016020850160005b838110156106b857848303601f190188528151805180855260005b818110156106865760208184018101518783018201520161066a565b506000602082870101526020601f19601f8301168601019450505060208201915060208801975060018101905061064f565b50909695505050505050565b6020815260006106d76020830184610631565b9392505050565b80356001600160a01b03811681146106f557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072357600080fd5b61072c836106de565b9150602083013567ffffffffffffffff81111561074857600080fd5b8301601f8101851361075957600080fd5b803567ffffffffffffffff811115610773576107736106fa565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107a2576107a26106fa565b6040528181528282016020018710156107ba57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600080606085870312156107f057600080fd5b84359350610800602086016106de565b9250604085013567ffffffffffffffff81111561081c57600080fd5b8501601f8101871361082d57600080fd5b803567ffffffffffffffff81111561084457600080fd5b87602082840101111561085657600080fd5b949793965060200194505050565b6040808252835190820181905260009060208501906060840190835b818110156108a05783511515835260209384019390920191600101610880565b505083810360208501526108b48186610631565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126108ea57600080fd5b9190910192915050565b60006020828403121561090657600080fd5b6106d7826106de565b6000808335601e1984360301811261092657600080fd5b83018035915067ffffffffffffffff82111561094157600080fd5b60200191503681900382131561095657600080fd5b9250929050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea26469706673582212205c0679bac7989901111b6824de732603e322da5b9b75ee077344853294d8b7b664736f6c634300081a0033" @@ -163,7 +175,7 @@ export const TRUST_DEFAULT_FALLBACK_HANDLER: Hex = "0x00000000000000000000000000000000000000000000000000000000000000006080604052604051620020183803806200201883398101604081905262000026916200156b565b60408051600480825260a08201909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200003e5750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b81600081518110620000b157620000b1620015c8565b6001600160e01b03199290921660209283029190910182015260408051600580825260c08201909252600092909190820160a08036833701905050905063b61d27f660e01b816000815181106200010c576200010c620015c8565b6001600160e01b03199092166020928302919091019091015280516323f0ed1560e11b9082906001908110620001465762000146620015c8565b6001600160e01b0319909216602092830291909101909101528051633a871cdd60e01b9082906002908110620001805762000180620015c8565b6001600160e01b0319909216602092830291909101909101528051631a10fa5160e31b9082906003908110620001ba57620001ba620015c8565b6001600160e01b031990921660209283029190910190910152805163586b48ff60e11b9082906004908110620001f457620001f4620015c8565b6001600160e01b03199290921660209283029190910182015260408051600580825260c08201909252600092909190820160a08036833701905050905063150b7a0260e01b816000815181106200024f576200024f620015c8565b6001600160e01b031990921660209283029190910190910152805163f23a6e6160e01b9082906001908110620002895762000289620015c8565b6001600160e01b031990921660209283029190910190910152805163bc197c8160e01b9082906002908110620002c357620002c3620015c8565b6001600160e01b03199092166020928302919091019091015280516223de2960e01b9082906003908110620002fc57620002fc620015c8565b6001600160e01b0319909216602092830291909101909101528051635260769b60e11b9082906004908110620003365762000336620015c8565b6001600160e01b0319929092166020928302919091018201526040805160098082526101408201909252600092909190820161012080368337019050509050637a0ed62760e01b81600081518110620003935762000393620015c8565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b9082906001908110620003cd57620003cd620015c8565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b9082906002908110620004075762000407620015c8565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b9082906003908110620004415762000441620015c8565b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b90829060049081106200047b576200047b620015c8565b6001600160e01b031990921660209283029190910190910152805163f9796ccf60e01b9082906005908110620004b557620004b5620015c8565b6001600160e01b031990921660209283029190910190910152805162d2a81160e11b9082906006908110620004ee57620004ee620015c8565b6001600160e01b031990921660209283029190910190910152805163d42139a960e01b9082906007908110620005285762000528620015c8565b6001600160e01b03199092166020928302919091019091015280516371d17b7f60e11b9082906008908110620005625762000562620015c8565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038b168152908101600081526020018581525085600081518110620005b557620005b5620015c8565b60200260200101819052506040518060600160405280896001600160a01b0316815260200160006002811115620005f057620005f0620015de565b815260200184815250856001815181106200060f576200060f620015c8565b60200260200101819052506040518060600160405280886001600160a01b03168152602001600060028111156200064a576200064a620015de565b81526020018381525085600281518110620006695762000669620015c8565b60200260200101819052506040518060600160405280876001600160a01b0316815260200160006002811115620006a457620006a4620015de565b81526020018281525085600381518110620006c357620006c3620015c8565b6020026020010181905250620006f1856000604051806020016040528060008152506200070060201b60201c565b5050505050505050506200184c565b60005b83518110156200090c576000848281518110620007245762000724620015c8565b602002602001015160200151905060006002811115620007485762000748620015de565b8160028111156200075d576200075d620015de565b03620007bb57620007b58583815181106200077c576200077c620015c8565b6020026020010151600001518684815181106200079d576200079d620015c8565b6020026020010151604001516200095b60201b60201c565b620008f6565b6001816002811115620007d257620007d2620015de565b036200082a57620007b5858381518110620007f157620007f1620015c8565b602002602001015160000151868481518110620008125762000812620015c8565b60200260200101516040015162000bf760201b60201c565b6002816002811115620008415762000841620015de565b036200089957620007b5858381518110620008605762000860620015c8565b602002602001015160000151868481518110620008815762000881620015c8565b60200260200101516040015162000ea160201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b508062000903816200160a565b91505062000703565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405162000942939291906200167a565b60405180910390a162000956828262001005565b505050565b805180620009af5760405162461bcd60e51b815260206004820152602b602482015260008051602062001ff883398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620008ed565b60008051602062001f8c8339815191526001600160a01b03841662000a2c5760405162461bcd60e51b815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201526b65206164647265737328302960a01b6064820152608401620008ed565b6001600160a01b0384166000908152600182016020526040812054906001600160601b038216900362000a655762000a658286620010dd565b60005b8381101562000bef57600085828151811062000a885762000a88620015c8565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0316801562000b305760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620008ed565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558d168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000bd48162001781565b9450505050808062000be6906200160a565b91505062000a68565b505050505050565b80518062000c4b5760405162461bcd60e51b815260206004820152602b602482015260008051602062001ff883398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620008ed565b60008051602062001f8c8339815191526001600160a01b03841662000ccc5760405162461bcd60e51b815260206004820152603060248201527f4c69624469616d6f6e644375743a205265706c6163652066616365742063616e60448201526f2774206265206164647265737328302960801b6064820152608401620008ed565b6001600160a01b0384166000908152600182016020526040812054906001600160601b038216900362000d055762000d058286620010dd565b60005b8381101562000bef57600085828151811062000d285762000d28620015c8565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908816810362000dd55760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d6520666163657400000000000000000000006064820152608401620008ed565b62000de28582846200114a565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558d168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000e868162001781565b9450505050808062000e98906200160a565b91505062000d08565b80518062000ef55760405162461bcd60e51b815260206004820152602b602482015260008051602062001ff883398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620008ed565b60008051602062001f8c8339815191526001600160a01b0384161562000f845760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620008ed565b60005b8281101562000ffe57600084828151811062000fa75762000fa7620015c8565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000fe68482846200114a565b5050808062000ff5906200160a565b91505062000f87565b5050505050565b6001600160a01b03821662001018575050565b6200103d8260405180606001604052806028815260200162001fac602891396200152a565b600080836001600160a01b0316836040516200105a9190620017b2565b600060405180830381855af49150503d806000811462001097576040519150601f19603f3d011682016040523d82523d6000602084013e6200109c565b606091505b509150915081620010d757805115620010b85780518082602001fd5b838360405163192105d760e01b8152600401620008ed929190620017d0565b50505050565b620011028160405180606001604052806024815260200162001fd4602491396200152a565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b038216620011c85760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620008ed565b306001600160a01b03831603620012395760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620008ed565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b031692916200128a91620017fe565b905080821462001383576001600160a01b03841660009081526001860160205260408120805483908110620012c357620012c3620015c8565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110620013175762001317620015c8565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480620013af57620013af6200181a565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900362000ffe5760028501546000906200141590600190620017fe565b6001600160a01b0386166000908152600180890160205260409091200154909150808214620014cb576000876002018381548110620014585762001458620015c8565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106200148c576200148c620015c8565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480620014e157620014e16200181a565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b8181620010d75760405162461bcd60e51b8152600401620008ed919062001830565b80516001600160a01b03811681146200156657600080fd5b919050565b600080600080608085870312156200158257600080fd5b6200158d856200154e565b93506200159d602086016200154e565b9250620015ad604086016200154e565b9150620015bd606086016200154e565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200161f576200161f620015f4565b5060010190565b60005b838110156200164357818101518382015260200162001629565b50506000910152565b600081518084526200166681602086016020860162001626565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200174f57898403607f19018652815180516001600160a01b03168552838101518986019060038110620016eb57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620017395783516001600160e01b03191682529286019260019290920191908601906200170d565b50978501979550505090820190600101620016a3565b50506001600160a01b038a169088015286810360408801526200177381896200164c565b9a9950505050505050505050565b60006001600160601b038281166002600160601b03198101620017a857620017a8620015f4565b6001019392505050565b60008251620017c681846020870162001626565b9190910192915050565b6001600160a01b0383168152604060208201819052600090620017f6908301846200164c565b949350505050565b81810381811115620018145762001814620015f4565b92915050565b634e487b7160e01b600052603160045260246000fd5b6020815260006200184560208301846200164c565b9392505050565b610730806200185c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806352ef6b2c146100515780637a0ed6271461006f578063adfca15e14610084578063cdffacc6146100a4575b600080fd5b610059610140565b60405161006691906104ab565b60405180910390f35b6100776101d1565b6040516100669190610562565b61009761009236600461060a565b6103d1565b6040516100669190610647565b61011b6100b236600461065a565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081527f183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd491f602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b60607f183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd491f6002018054806020026020016040519081016040528092919081815260200182805480156101c757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161019c575b5050505050905090565b7f183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd4921546060907f183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd491f908067ffffffffffffffff8111156102315761023161069c565b60405190808252806020026020018201604052801561027757816020015b60408051808201909152600081526060602082015281526020019060019003908161024f5790505b50925060005b818110156103cb57600083600201828154811061029c5761029c6106cb565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808583815181106102dc576102dc6106cb565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561039d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161034a5790505b50505050508583815181106103b4576103b46106cb565b60209081029190910181015101525060010161027d565b50505090565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd4920602090815260409182902080548351818402810184019094528084526060939283018282801561049f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161044c5790505b50505050509050919050565b6020808252825182820181905260009190848201906040850190845b818110156104f957835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016104c7565b50909695505050505050565b600081518084526020808501945080840160005b838110156105575781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610519565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b838110156105fc578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528701518784018790526105e987850182610505565b9588019593505090860190600101610589565b509098975050505050505050565b60006020828403121561061c57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461064057600080fd5b9392505050565b6020815260006106406020830184610505565b60006020828403121561066c57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461064057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122024a872696a5ad50024326567061c50adea63ff0d49edf0ac60339459d33d571664736f6c63430008150033183cde5d4f6bb7b445b8fc2f7f15d0fd1d162275aded24183babbffee7cd491f4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20660000000000000000000000000b9504140771c3688ff041917192277d2f52e1e0000000000000000000000000fde53272dcd7938d16e031a6989753c3217283320000000000000000000000003143e1c0af0cdc153423863923cf4e3818e34daa000000000000000000000000ce36b85d12d81cd619c745c7717f3396e184ac7c" export const ERC_7579_TEST_MODULE_CREATECALL = - "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600f57600080fd5b50610f6a8061001f6000396000f3fe6080604052600436106100a75760003560e01c8063d26cdce311610064578063d26cdce3146101c1578063d60b347f146101d4578063e508600314610204578063ecd0596114610217578063fbe5ce0a14610238578063fd8b84b11461025857600080fd5b806306fdde03146100ac57806354fd4d50146100f65780636d61fe70146101245780637065cb48146101465780638a91b0e314610166578063ccfdec8c14610186575b600080fd5b3480156100b857600080fd5b5060408051808201909152600f81526e27bbb730b13632a2bc32b1baba37b960891b60208201525b6040516100ed9190610aca565b60405180910390f35b34801561010257600080fd5b506040805180820190915260058152640312e302e360dc1b60208201526100e0565b34801561013057600080fd5b5061014461013f366004610b46565b610285565b005b34801561015257600080fd5b50610144610161366004610ba4565b610311565b34801561017257600080fd5b50610144610181366004610b46565b6103c9565b34801561019257600080fd5b506101b36101a1366004610ba4565b60016020526000908152604090205481565b6040519081526020016100ed565b6101446101cf366004610bbf565b6103f5565b3480156101e057600080fd5b506101f46101ef366004610ba4565b6104b8565b60405190151581526020016100ed565b610144610212366004610bbf565b6104e8565b34801561022357600080fd5b506101f4610232366004610c12565b60021490565b34801561024457600080fd5b50610144610253366004610c2b565b61053e565b34801561026457600080fd5b50610278610273366004610ba4565b610573565b6040516100ed9190610c5e565b3360006102956014828587610cab565b61029e91610cd5565b60601c90506102cf600080846001600160a01b03166001600160a01b031681526020019081526020016000206105aa565b6001600160a01b03821660009081526020819052604090206102f19082610607565b506001600160a01b03166000908152600160208190526040909120555050565b3361031b816104b8565b6103485760405163f91bd6f160e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b03821661037a5760405163b20f76e360e01b81526001600160a01b038316600482015260240161033f565b6001600160a01b038116600090815260208190526040902061039c9083610607565b6001600160a01b03811660009081526001602052604081208054916103c083610d20565b91905055505050565b3360009081526020819052604090206103e1906106dd565b505033600090815260016020526040812055565b6001600160a01b03831660009081526020819052604090206104179033610758565b61043457604051631a27eac360e11b815260040160405180910390fd5b826001600160a01b031663d691c96461044b610794565b84846040518463ffffffff1660e01b815260040161046b93929190610d39565b6000604051808303816000875af115801561048a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104b29190810190610db6565b50505050565b6001600160a01b038181166000908152602081815260408083206001845290915281205490911615155b92915050565b6001600160a01b038316600090815260208190526040902061050a9033610758565b61052757604051631a27eac360e11b815260040160405180910390fd5b826001600160a01b031663d691c96461044b6107a7565b3360009081526020819052604090206105589083836107b9565b3360009081526001602052604081208054916103c083610ecd565b6001600160a01b038116600090815260016020818152604080842054918490529092206060926105a3929061088e565b5092915050565b60016000908152602082905260409020546001600160a01b0316156105e2576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602092909252604090912080546001600160a01b0319169091179055565b6001600160a01b038116158061062657506001600160a01b0381166001145b1561064f57604051637c84ecfb60e01b81526001600160a01b038216600482015260240161033f565b6001600160a01b03818116600090815260208490526040902054161561069357604051631034f46960e21b81526001600160a01b038216600482015260240161033f565b60016000818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b60016000908152602082905260409020546001600160a01b03165b6001600160a01b03811615610736576001600160a01b03908116600090815260208390526040902080546001600160a01b03198116909155166106f8565b50600160009081526020919091526040902080546001600160a01b0319169055565b600060016001600160a01b0383161480159061078d57506001600160a01b038281166000908152602085905260409020541615155b9392505050565b60006107a281808080610a3b565b905090565b60006107a2600160f81b828080610a3b565b6001600160a01b03811615806107d857506001600160a01b0381166001145b1561080157604051637c84ecfb60e01b81526001600160a01b038316600482015260240161033f565b6001600160a01b0382811660009081526020859052604090205481169082161461084957604051637c84ecfb60e01b81526001600160a01b038216600482015260240161033f565b6001600160a01b0390811660008181526020949094526040808520805494841686529085208054949093166001600160a01b0319948516179092559092528154169055565b606060006001600160a01b0384166001148015906108b357506108b18585610758565b155b156108dc57604051637c84ecfb60e01b81526001600160a01b038516600482015260240161033f565b826000036108fd5760405163f725081760e01b815260040160405180910390fd5b8267ffffffffffffffff81111561091657610916610d6f565b60405190808252806020026020018201604052801561093f578160200160208202803683370190505b506001600160a01b03808616600090815260208890526040812054929450911691505b6001600160a01b0382161580159061098457506001600160a01b038216600114155b801561098f57508381105b156109e957818382815181106109a7576109a7610ee4565b6001600160a01b0392831660209182029290920181019190915292811660009081529287905260409092205490911690806109e181610d20565b915050610962565b6001600160a01b038216600114801590610a035750600081115b15610a2f5782610a14600183610efa565b81518110610a2457610a24610ee4565b602002602001015191505b80835250935093915050565b604080516001600160f81b03198087166020830152851660218201526000602282018190526001600160e01b03198516602683015269ffffffffffffffffffff198416602a8301529101604051602081830303815290604052610a9d90610f0d565b95945050505050565b60005b83811015610ac1578181015183820152602001610aa9565b50506000910152565b6020815260008251806020840152610ae9816040850160208701610aa6565b601f01601f19169190910160400192915050565b60008083601f840112610b0f57600080fd5b50813567ffffffffffffffff811115610b2757600080fd5b602083019150836020828501011115610b3f57600080fd5b9250929050565b60008060208385031215610b5957600080fd5b823567ffffffffffffffff811115610b7057600080fd5b610b7c85828601610afd565b90969095509350505050565b80356001600160a01b0381168114610b9f57600080fd5b919050565b600060208284031215610bb657600080fd5b61078d82610b88565b600080600060408486031215610bd457600080fd5b610bdd84610b88565b9250602084013567ffffffffffffffff811115610bf957600080fd5b610c0586828701610afd565b9497909650939450505050565b600060208284031215610c2457600080fd5b5035919050565b60008060408385031215610c3e57600080fd5b610c4783610b88565b9150610c5560208401610b88565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015610c9f5783516001600160a01b031683529284019291840191600101610c7a565b50909695505050505050565b60008085851115610cbb57600080fd5b83861115610cc857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015610d025780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610d3257610d32610d0a565b5060010190565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dae57610dae610d6f565b604052919050565b60006020808385031215610dc957600080fd5b825167ffffffffffffffff80821115610de157600080fd5b8185019150601f86601f840112610df757600080fd5b825182811115610e0957610e09610d6f565b8060051b610e18868201610d85565b918252848101860191868101908a841115610e3257600080fd5b87870192505b83831015610ebf57825186811115610e505760008081fd5b8701603f81018c13610e625760008081fd5b88810151604088821115610e7857610e78610d6f565b610e89828901601f19168c01610d85565b8281528e82848601011115610e9e5760008081fd5b610ead838d8301848701610aa6565b85525050509187019190870190610e38565b9a9950505050505050505050565b600081610edc57610edc610d0a565b506000190190565b634e487b7160e01b600052603260045260246000fd5b818103818111156104e2576104e2610d0a565b80516020808301519190811015610f2e576000198160200360031b1b821691505b5091905056fea2646970667358221220c65136fce0b201208eef061080f14f2bd4c40a5b6bc536237b6b4ff59f86c2aa64736f6c63430008190033" + "0x03b79c840000000000000000000000000000000000000000000000000000000000001337dbca873b13c783c0c9c6ddfc4280e505580bf6cc3dac83f8a0f7b44acaafca4f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000010c000000000000000000000000000000000000000000000000000000000000010e00000000000000000000000000000000000000000000000000000000000000ffb6080604052348015600e575f80fd5b50610fdf8061001c5f395ff3fe6080604052600436106100a5575f3560e01c8063d26cdce311610062578063d26cdce3146101b7578063d60b347f146101ca578063e5086003146101f9578063ecd059611461020c578063fbe5ce0a1461022c578063fd8b84b11461024b575f80fd5b806306fdde03146100a957806354fd4d50146100f25780636d61fe701461011f5780637065cb48146101405780638a91b0e31461015f578063ccfdec8c1461017e575b5f80fd5b3480156100b4575f80fd5b5060408051808201909152600f81526e27bbb730b13632a2bc32b1baba37b960891b60208201525b6040516100e99190610b67565b60405180910390f35b3480156100fd575f80fd5b506040805180820190915260058152640312e302e360dc1b60208201526100dc565b34801561012a575f80fd5b5061013e610139366004610be1565b610277565b005b34801561014b575f80fd5b5061013e61015a366004610c3b565b61036a565b34801561016a575f80fd5b5061013e610179366004610be1565b61045c565b348015610189575f80fd5b506101a9610198366004610c3b565b60016020525f908152604090205481565b6040519081526020016100e9565b61013e6101c5366004610c54565b6104ae565b3480156101d5575f80fd5b506101e96101e4366004610c3b565b61056d565b60405190151581526020016100e9565b61013e610207366004610c54565b61059c565b348015610217575f80fd5b506101e9610226366004610ca3565b60021490565b348015610237575f80fd5b5061013e610246366004610cba565b6105f2565b348015610256575f80fd5b5061026a610265366004610c3b565b610665565b6040516100e99190610ceb565b335f6102866014828587610d37565b61028f91610d5e565b60601c9050806102c25760405163b20f76e360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0382165f9081526020819052604090206102e29061069b565b6001600160a01b0382165f90815260208190526040902061030390826106f6565b6001600160a01b0382165f8181526001602081905260409182902055517f1cd4a6da6e6a6f4dc754cedd54ead3b9cd0e2f5804cda2ba60506c2899fb29df9061035c9084906001600160a01b0391909116815260200190565b60405180910390a250505050565b336103748161056d565b61039c5760405163f91bd6f160e01b81526001600160a01b03821660048201526024016102b9565b6001600160a01b0382166103ce5760405163b20f76e360e01b81526001600160a01b03831660048201526024016102b9565b6001600160a01b0381165f9081526020819052604090206103ef90836106f6565b6001600160a01b0381165f90815260016020526040812080549161041283610da7565b90915550506040516001600160a01b0383811682528216907fc82bdbbf677a2462f2a7e22e4ba9abd209496b69cd7b868b3b1d28f76e09a40a906020015b60405180910390a25050565b335f908152602081905260409020610473906107ca565b335f81815260016020526040808220829055517f9d00629762554452d03c3b45626436df6ca1c3795d05d04df882f6db481b1be09190a25050565b6001600160a01b0383165f9081526020819052604090206104cf9033610825565b6104ec57604051631a27eac360e11b815260040160405180910390fd5b826001600160a01b031663d691c9643461050461085f565b85856040518563ffffffff1660e01b815260040161052493929190610dbf565b5f6040518083038185885af115801561053f573d5f803e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526105679190810190610e39565b50505050565b6001600160a01b038181165f908152602081815260408083206001845290915281205490911615155b92915050565b6001600160a01b0383165f9081526020819052604090206105bd9033610825565b6105da57604051631a27eac360e11b815260040160405180910390fd5b826001600160a01b031663d691c96434610504610871565b335f90815260208190526040902061060b908383610882565b335f90815260016020526040812080549161062583610f47565b90915550506040516001600160a01b038216815233907fe594d081b4382713733fe631966432c9cea5199afb2db5c3c1931f9f9300367990602001610450565b6001600160a01b0381165f90815260016020818152604080842054918490529092206060926106949290610955565b5092915050565b60015f908152602082905260409020546001600160a01b0316156106d2576040516329e42f3360e11b815260040160405180910390fd5b60015f818152602092909252604090912080546001600160a01b0319169091179055565b6001600160a01b038116158061071557506001600160a01b0381166001145b1561073e57604051637c84ecfb60e01b81526001600160a01b03821660048201526024016102b9565b6001600160a01b038181165f90815260208490526040902054161561078157604051631034f46960e21b81526001600160a01b03821660048201526024016102b9565b60015f818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b60015f908152602082905260409020546001600160a01b03165b6001600160a01b03811615610821576001600160a01b039081165f90815260208390526040902080546001600160a01b03198116909155166107e4565b5050565b5f60016001600160a01b0383161480159061085857506001600160a01b038281165f908152602085905260409020541615155b9392505050565b5f61086c81808080610afd565b905090565b5f61086c600160f81b828080610afd565b6001600160a01b03811615806108a157506001600160a01b0381166001145b156108ca57604051637c84ecfb60e01b81526001600160a01b03831660048201526024016102b9565b6001600160a01b038281165f9081526020859052604090205481169082161461091157604051637c84ecfb60e01b81526001600160a01b03821660048201526024016102b9565b6001600160a01b039081165f8181526020949094526040808520805494841686529085208054949093166001600160a01b0319948516179092559092528154169055565b60605f6001600160a01b03841660011480159061097957506109778585610825565b155b156109a257604051637c84ecfb60e01b81526001600160a01b03851660048201526024016102b9565b825f036109c25760405163f725081760e01b815260040160405180910390fd5b8267ffffffffffffffff8111156109db576109db610df4565b604051908082528060200260200182016040528015610a04578160200160208202803683370190505b506001600160a01b038086165f90815260208890526040812054929450911691505b6001600160a01b03821615801590610a4857506001600160a01b038216600114155b8015610a5357508381105b15610aac5781838281518110610a6b57610a6b610f5c565b6001600160a01b039283166020918202929092018101919091529281165f908152928790526040909220549091169080610aa481610da7565b915050610a26565b6001600160a01b038216600114801590610ac557505f81115b15610af15782610ad6600183610f70565b81518110610ae657610ae6610f5c565b602002602001015191505b80835250935093915050565b604080516001600160f81b03198087166020830152851660218201525f602282018190526001600160e01b03198516602683015269ffffffffffffffffffff198416602a8301529101604051602081830303815290604052610b5e90610f83565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8083601f840112610bac575f80fd5b50813567ffffffffffffffff811115610bc3575f80fd5b602083019150836020828501011115610bda575f80fd5b9250929050565b5f8060208385031215610bf2575f80fd5b823567ffffffffffffffff811115610c08575f80fd5b610c1485828601610b9c565b90969095509350505050565b80356001600160a01b0381168114610c36575f80fd5b919050565b5f60208284031215610c4b575f80fd5b61085882610c20565b5f805f60408486031215610c66575f80fd5b610c6f84610c20565b9250602084013567ffffffffffffffff811115610c8a575f80fd5b610c9686828701610b9c565b9497909650939450505050565b5f60208284031215610cb3575f80fd5b5035919050565b5f8060408385031215610ccb575f80fd5b610cd483610c20565b9150610ce260208401610c20565b90509250929050565b602080825282518282018190525f9190848201906040850190845b81811015610d2b5783516001600160a01b031683529284019291840191600101610d06565b50909695505050505050565b5f8085851115610d45575f80fd5b83861115610d51575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015610d8b5780818660140360031b1b83161692505b505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201610db857610db8610d93565b5060010190565b83815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e3157610e31610df4565b604052919050565b5f6020808385031215610e4a575f80fd5b825167ffffffffffffffff80821115610e61575f80fd5b8185019150601f86601f840112610e76575f80fd5b825182811115610e8857610e88610df4565b8060051b610e97868201610e08565b918252848101860191868101908a841115610eb0575f80fd5b87870192505b83831015610f3957825186811115610ecc575f80fd5b8701603f81018c13610edc575f80fd5b88810151604088821115610ef257610ef2610df4565b610f03828901601f19168c01610e08565b8281528e82848601011115610f16575f80fd5b828285018d83015e5f9281018c0192909252508352509187019190870190610eb6565b9a9950505050505050505050565b5f81610f5557610f55610d93565b505f190190565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561059657610596610d93565b80516020808301519190811015610fa3575f198160200360031b1b821691505b5091905056fea2646970667358221220fd20c30d790f9e29c7fee691f54ed598408181fcc342f8f909eaa9478dfd384a64736f6c63430008190033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" export const THIRDWEB_FACTORY_V06_CREATECALL = "0x2941b584dbc3085f5c1f208bcbf0a2f1e407b4fb7ea5d5135384ded28b2b3d5460c06040523480156200001157600080fd5b506040516200666a3803806200666a833981016040819052620000349162000297565b8030604051620000449062000270565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000078573d6000803e3d6000fd5b506001600160a01b03908116608052811660a05262000099600083620000a1565b50506200031e565b620000ad8282620000bd565b620000b9828262000137565b5050565b60008281527f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e500602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60006200014362000205565b60008481526020919091526040902054905060016200016162000205565b600085815260209190915260408120805490919062000182908490620002ec565b909155508290506200019362000205565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b039290921691909117905580620001d562000205565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b905090565b60006200020060008060ff196200023e60017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c62000308565b6040516020016200025191815260200190565b60408051601f1981840301815291905280516020909101201692915050565b6141f5806200247583390190565b6001600160a01b03811681146200029457600080fd5b50565b60008060408385031215620002ab57600080fd5b8251620002b8816200027e565b6020840151909250620002cb816200027e565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620003025762000302620002d6565b92915050565b81810381811115620003025762000302620002d6565b60805160a05161211562000360600039600081816102a30152610b760152600081816101780152818161060001528181610ad20152610df601526121156000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c806308e93d0a1461012d5780630b61e12b1461014b5780630e6254fd1461016057806311464fbe14610173578063248a9ca3146101b25780632f2ff15d146101d357806336568abe146101e657806358451f97146101f957806383a03f8c146102015780638878ed33146102145780639010d07c1461022757806391d148541461023a5780639387a3801461025d578063938e3d7b14610270578063a217fddf14610283578063a32fa5b31461028b578063a65d69d41461029e578063ac9650d8146102c5578063c3c5a547146102e5578063ca15c873146102f8578063d547741f1461030b578063d8fd8f441461031e578063e68a7c3b14610331578063e8a3d48514610344575b600080fd5b610135610359565b6040516101429190611945565b60405180910390f35b61015e6101593660046119ae565b61036a565b005b61013561016e3660046119d8565b61040b565b61019a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610142565b6101c56101c03660046119f3565b610435565b604051908152602001610142565b61015e6101e1366004611a0c565b610453565b61015e6101f4366004611a0c565b6104fd565b6101c561055c565b61015e61020f3660046119f3565b610568565b61019a610222366004611a38565b6105b6565b61019a610235366004611aba565b610630565b61024d610248366004611a0c565b61073e565b6040519015158152602001610142565b61015e61026b3660046119ae565b610772565b61015e61027e366004611af2565b610809565b6101c5600081565b61024d610299366004611a0c565b61085a565b61019a7f000000000000000000000000000000000000000000000000000000000000000081565b6102d86102d3366004611ba2565b6108bd565b6040516101429190611c66565b61024d6102f33660046119d8565b610a19565b6101c56103063660046119f3565b610a25565b61015e610319366004611a0c565b610ac2565b61019a61032c366004611a38565b610acd565b61013561033f366004611aba565b610c18565b61034c610d49565b6040516101429190611cca565b60606103656000610de1565b905090565b336103758183610dee565b61039a5760405162461bcd60e51b815260040161039190611cdd565b60405180910390fd5b6001600160a01b03831660009081526002602052604081206103bc9083610e32565b9050801561040557836001600160a01b0316826001600160a01b03167f12146497b3b826918ec47f0cac7272a09ed06b30c16c030e99ec48ff5dd60b4760405160405180910390a35b50505050565b6001600160a01b038116600090815260026020526040902060609061042f90610de1565b92915050565b600061043f610e47565b600092835260010160205250604090205490565b61047761045e610e47565b6000848152600191909101602052604090205433610e6b565b61047f610e47565b6000838152602091825260408082206001600160a01b0385168352909252205460ff16156104ef5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610391565b6104f98282610ef0565b5050565b336001600160a01b038216146105525760405162461bcd60e51b815260206004820152601a60248201527921b0b71037b7363c903932b737bab731b2903337b91039b2b63360311b6044820152606401610391565b6104f98282610f04565b60006103656000610f18565b336105738183610dee565b61058f5760405162461bcd60e51b815260040161039190611cdd565b61059a600082610e32565b6104f95760405162461bcd60e51b815260040161039190611d14565b6000806105f98585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f2292505050565b90506106257f000000000000000000000000000000000000000000000000000000000000000082610f55565b9150505b9392505050565b60008061063b610fb5565b600085815260209190915260408120549150805b82811015610735576000610661610fb5565b60008881526020918252604080822085835260010190925220546001600160a01b0316146106d9578482036106c757610698610fb5565b600087815260209182526040808220938252600190930190915220546001600160a01b0316925061042f915050565b6106d2600183611d74565b9150610723565b6106e486600061073e565b801561071057506106f3610fb5565b600087815260209182526040808220828052600201909252205481145b1561072357610720600183611d74565b91505b61072e600182611d74565b905061064f565b50505092915050565b6000610748610e47565b6000938452602090815260408085206001600160a01b039490941685529290525090205460ff1690565b3361077d8183610dee565b6107995760405162461bcd60e51b815260040161039190611cdd565b6001600160a01b03831660009081526002602052604081206107bb9083610fbf565b9050801561040557836001600160a01b0316826001600160a01b03167f98d1ebbe00ae92a5de96a0f49742a8afa89f42363592bc2e7cfaaed68b45e7a660405160405180910390a350505050565b610811610fd4565b61084e5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610391565b61085781610fe0565b50565b6000610864610e47565b600084815260209182526040808220828052909252205460ff166108b45761088a610e47565b6000848152602091825260408082206001600160a01b0386168352909252205460ff16905061042f565b50600192915050565b6060816001600160401b038111156108d7576108d7611adc565b60405190808252806020026020018201604052801561090a57816020015b60608152602001906001900390816108f55790505b509050336000805b848110156107355781156109915761096f3087878481811061093657610936611d87565b90506020028101906109489190611d9d565b8660405160200161095b93929190611dea565b6040516020818303038152906040526110c7565b84828151811061098157610981611d87565b6020026020010181905250610a11565b6109f3308787848181106109a7576109a7611d87565b90506020028101906109b99190611d9d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506110c792505050565b848281518110610a0557610a05611d87565b60200260200101819052505b600101610912565b600061042f81836110ec565b600080610a30610fb5565b6000848152602091909152604081205491505b81811015610a9d576000610a55610fb5565b60008681526020918252604080822085835260010190925220546001600160a01b031614610a8b57610a88600184611d74565b92505b610a96600182611d74565b9050610a43565b50610aa983600061073e565b15610abc57610ab9600183611d74565b91505b50919050565b61055261045e610e47565b6000807f000000000000000000000000000000000000000000000000000000000000000090506000610b358686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f2292505050565b90506000610b438383610f55565b90506001600160a01b0381163b15610b5f579250610629915050565b610b69838361110e565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bc257610ba6600082610e32565b610bc25760405162461bcd60e51b815260040161039190611d14565b610bce818888886111a5565b866001600160a01b0316816001600160a01b03167fac631f3001b55ea1509cf3d7e74898f85392a61a76e8149181ae1259622dabc860405160405180910390a39695505050505050565b60608183108015610c325750610c2e6000610f18565b8211155b610c8a5760405162461bcd60e51b815260206004820152602360248201527f426173654163636f756e74466163746f72793a20696e76616c696420696e646960448201526263657360e81b6064820152608401610391565b6000610c968484611e0b565b9050610ca28484611e0b565b6001600160401b03811115610cb957610cb9611adc565b604051908082528060200260200182016040528015610ce2578160200160208202803683370190505b50915060005b81811015610d4157610d05610cfd8683611d74565b60009061120d565b838281518110610d1757610d17611d87565b6001600160a01b0390921660209283029190910190910152610d3a600182611d74565b9050610ce8565b505092915050565b6060610d53611219565b8054610d5e90611e1e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8a90611e1e565b8015610dd75780601f10610dac57610100808354040283529160200191610dd7565b820191906000526020600020905b815481529060010190602001808311610dba57829003601f168201915b5050505050905090565b606060006106298361123d565b600080610e1b7f000000000000000000000000000000000000000000000000000000000000000084610f55565b6001600160a01b0385811691161491505092915050565b6000610629836001600160a01b038416611299565b7f0a7b0f5c59907924802379ebe98cdc23e2ee7820f63d30126e10b3752010e50090565b610e73610e47565b6000838152602091825260408082206001600160a01b0385168352909252205460ff166104f957610eae816001600160a01b031660146112e8565b610eb98360206112e8565b604051602001610eca929190611e52565b60408051601f198184030181529082905262461bcd60e51b825261039191600401611cca565b610efa8282611483565b6104f982826114ec565b610f0e82826115ab565b6104f98282611614565b600061042f825490565b60008282604051602001610f37929190611ebf565b60405160208183030381529060405280519060200120905092915050565b6040513060388201526f5af43d82803e903d91602b57fd5bf3ff602482015260148101839052733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018290526037600c82012060788201526055604390910120600090610629565b60006103656116a3565b6000610629836001600160a01b038416611705565b6000610365813361073e565b6000610fea611219565b8054610ff590611e1e565b80601f016020809104026020016040519081016040528092919081815260200182805461102190611e1e565b801561106e5780601f106110435761010080835404028352916020019161106e565b820191906000526020600020905b81548152906001019060200180831161105157829003601f168201915b505050505090508161107e611219565b906110899082611f34565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516110bb929190611ff3565b60405180910390a15050565b606061062983836040518060600160405280602781526020016120b9602791396117f8565b6001600160a01b03811660009081526001830160205260408120541515610629565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661042f5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b6044820152606401610391565b60405163347d5e2560e21b81526001600160a01b0385169063d1f57894906111d590869086908690600401612018565b600060405180830381600087803b1580156111ef57600080fd5b505af1158015611203573d6000803e3d6000fd5b5050505050505050565b60006106298383611870565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b60608160000180548060200260200160405190810160405280929190818152602001828054801561128d57602002820191906000526020600020905b815481526020019060010190808311611279575b50505050509050919050565b60008181526001830160205260408120546112e05750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042f565b50600061042f565b606060006112f7836002612058565b611302906002611d74565b6001600160401b0381111561131957611319611adc565b6040519080825280601f01601f191660200182016040528015611343576020820181803683370190505b509050600360fc1b8160008151811061135e5761135e611d87565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061138d5761138d611d87565b60200101906001600160f81b031916908160001a90535060006113b1846002612058565b6113bc906001611d74565b90505b6001811115611434576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113f0576113f0611d87565b1a60f81b82828151811061140657611406611d87565b60200101906001600160f81b031916908160001a90535060049490941c9361142d8161206f565b90506113bf565b5083156106295760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610391565b600161148d610e47565b6000848152602091825260408082206001600160a01b0386168084529352808220805460ff1916941515949094179093559151339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60006114f6610fb5565b6000848152602091909152604090205490506001611512610fb5565b6000858152602091909152604081208054909190611531908490611d74565b90915550829050611540610fb5565b6000858152602091825260408082208583526001019092522080546001600160a01b0319166001600160a01b039290921691909117905580611580610fb5565b6000948552602090815260408086206001600160a01b03909516865260029094019052919092205550565b6115b58282610e6b565b6115bd610e47565b6000838152602091825260408082206001600160a01b0385168084529352808220805460ff191690555133929185917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061161e610fb5565b6000848152602091825260408082206001600160a01b03861683526002019092522054905061164b610fb5565b6000848152602091825260408082208483526001019092522080546001600160a01b031916905561167a610fb5565b6000938452602090815260408085206001600160a01b0390941685526002909301905250812055565b60008060ff196116d460017f0c4ba382c0009cf238e4c1ca1a52f51c61e6248a70bdfb34e5ed49d5578a5c0c611e0b565b6040516020016116e691815260200190565b60408051601f1981840301815291905280516020909101201692915050565b600081815260018301602052604081205480156117ee576000611729600183611e0b565b855490915060009061173d90600190611e0b565b90508181146117a257600086600001828154811061175d5761175d611d87565b906000526020600020015490508087600001848154811061178057611780611d87565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806117b3576117b3612086565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061042f565b600091505061042f565b6060600080856001600160a01b031685604051611815919061209c565b600060405180830381855af49150503d8060008114611850576040519150601f19603f3d011682016040523d82523d6000602084013e611855565b606091505b50915091506118668683838761189a565b9695505050505050565b600082600001828154811061188757611887611d87565b9060005260206000200154905092915050565b60608315611909578251600003611902576001600160a01b0385163b6119025760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610391565b5081611913565b611913838361191b565b949350505050565b81511561192b5781518083602001fd5b8060405162461bcd60e51b81526004016103919190611cca565b6020808252825182820181905260009190848201906040850190845b818110156119865783516001600160a01b031683529284019291840191600101611961565b50909695505050505050565b80356001600160a01b03811681146119a957600080fd5b919050565b600080604083850312156119c157600080fd5b6119ca83611992565b946020939093013593505050565b6000602082840312156119ea57600080fd5b61062982611992565b600060208284031215611a0557600080fd5b5035919050565b60008060408385031215611a1f57600080fd5b82359150611a2f60208401611992565b90509250929050565b600080600060408486031215611a4d57600080fd5b611a5684611992565b925060208401356001600160401b0380821115611a7257600080fd5b818601915086601f830112611a8657600080fd5b813581811115611a9557600080fd5b876020828501011115611aa757600080fd5b6020830194508093505050509250925092565b60008060408385031215611acd57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611b0457600080fd5b81356001600160401b0380821115611b1b57600080fd5b818401915084601f830112611b2f57600080fd5b813581811115611b4157611b41611adc565b604051601f8201601f19908116603f01168101908382118183101715611b6957611b69611adc565b81604052828152876020848701011115611b8257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060208385031215611bb557600080fd5b82356001600160401b0380821115611bcc57600080fd5b818501915085601f830112611be057600080fd5b813581811115611bef57600080fd5b8660208260051b8501011115611c0457600080fd5b60209290920196919550909350505050565b60005b83811015611c31578181015183820152602001611c19565b50506000910152565b60008151808452611c52816020860160208601611c16565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015611cbd57603f19888603018452611cab858351611c3a565b94509285019290850190600101611c8f565b5092979650505050505050565b6020815260006106296020830184611c3a565b6020808252601f908201527f4163636f756e74466163746f72793a206e6f7420616e206163636f756e742e00604082015260600190565b6020808252602a908201527f4163636f756e74466163746f72793a206163636f756e7420616c7265616479206040820152691c9959da5cdd195c995960b21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042f5761042f611d5e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611db457600080fd5b8301803591506001600160401b03821115611dce57600080fd5b602001915036819003821315611de357600080fd5b9250929050565b8284823760609190911b6001600160601b0319169101908152601401919050565b8181038181111561042f5761042f611d5e565b600181811c90821680611e3257607f821691505b602082108103610abc57634e487b7160e01b600052602260045260246000fd5b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351611e82816015850160208801611c16565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351611eb3816026840160208801611c16565b01602601949350505050565b6001600160a01b038316815260406020820181905260009061191390830184611c3a565b601f821115611f2f576000816000526020600020601f850160051c81016020861015611f0c5750805b601f850160051c820191505b81811015611f2b57828155600101611f18565b5050505b505050565b81516001600160401b03811115611f4d57611f4d611adc565b611f6181611f5b8454611e1e565b84611ee3565b602080601f831160018114611f965760008415611f7e5750858301515b600019600386901b1c1916600185901b178555611f2b565b600085815260208120601f198616915b82811015611fc557888601518255948401946001909101908401611fa6565b5085821015611fe35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006120066040830185611c3a565b82810360208401526106258185611c3a565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b808202811582820484141761042f5761042f611d5e565b60008161207e5761207e611d5e565b506000190190565b634e487b7160e01b600052603160045260246000fd5b600082516120ae818460208701611c16565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208fee46949383576f28224ce9e6b6a4b07519741c4de38b0c75218e600dce91e564736f6c634300081700336101806040523480156200001257600080fd5b50604051620041f5380380620041f5833981016040819052620000359162000250565b60408051808201825260078152661058d8dbdd5b9d60ca1b60208083019182528351808501855260018152603160f81b908201529151902060e08190527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c093840190965280519401939093209092529190526101205281816200011762000134565b6001600160a01b03908116610140521661016052506200028f9050565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee03005460ff808216916101009004168015620001c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60ff828116101562000233577f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee0300805460ff191660ff90811790915560408051918252517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a15b5050565b6001600160a01b03811681146200024d57600080fd5b50565b600080604083850312156200026457600080fd5b8251620002718162000237565b6020840151909250620002848162000237565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161016051613ed66200031f60003960006115de01526000818161044b015281816120c20152818161225c0152818161228a015281816122e30152818161235e015261238e01526000611e1b01526000611e6a01526000611e4501526000611d9e01526000611dc801526000611df20152613ed66000f3fe60806040526004361061014b5760003560e01c806301ffc9a714610157578063150b7a021461018c5780631626ba7e146101c55780631dd756c5146101e557806324d7806c14610205578063399b77da146102255780633a871cdd1461025357806347e1da2a146102735780634a58db19146102955780634d44560d1461029d5780635892e236146102bd5780637dff5a79146102dd5780638b52d723146102fd578063938e3d7b1461031f578063a9082d841461033f578063ac9650d81461037e578063b0d691fe146103ab578063b61d27f6146103cd578063b76464d5146103ed578063bc197c811461040d578063c45a015514610439578063d087d2881461046d578063d1f5789414610482578063d42f2f35146104a2578063e8a3d485146104b7578063e9523c97146104d9578063f15d424e146104fb578063f23a6e611461052857600080fd5b3661015257005b600080fd5b34801561016357600080fd5b50610177610172366004612d97565b610554565b60405190151581526020015b60405180910390f35b34801561019857600080fd5b506101ac6101a7366004612ea3565b61059a565b6040516001600160e01b03199091168152602001610183565b3480156101d157600080fd5b506101ac6101e0366004612f0e565b6105ab565b3480156101f157600080fd5b50610177610200366004612f6d565b6106ca565b34801561021157600080fd5b50610177610220366004612fb2565b61098e565b34801561023157600080fd5b50610245610240366004612fcf565b6109bd565b604051908152602001610183565b34801561025f57600080fd5b5061024561026e366004612fe8565b610a88565b34801561027f57600080fd5b5061029361028e366004613079565b610aae565b005b610293610c15565b3480156102a957600080fd5b506102936102b8366004613112565b610c7d565b3480156102c957600080fd5b506102936102d836600461317f565b610cf0565b3480156102e957600080fd5b506101776102f8366004612fb2565b6110ad565b34801561030957600080fd5b50610312611166565b6040516101839190613292565b34801561032b57600080fd5b5061029361033a3660046132f6565b6113ad565b34801561034b57600080fd5b5061035f61035a36600461317f565b6113fe565b6040805192151583526001600160a01b03909116602083015201610183565b34801561038a57600080fd5b5061039e61039936600461333e565b611455565b60405161018391906133cf565b3480156103b757600080fd5b506103c06115ba565b6040516101839190613426565b3480156103d957600080fd5b506102936103e836600461343a565b611603565b3480156103f957600080fd5b50610293610408366004612fb2565b611693565b34801561041957600080fd5b506101ac610428366004613527565b63bc197c8160e01b95945050505050565b34801561044557600080fd5b506103c07f000000000000000000000000000000000000000000000000000000000000000081565b34801561047957600080fd5b506102456116c5565b34801561048e57600080fd5b5061029361049d3660046135d4565b611745565b3480156104ae57600080fd5b506103126118fd565b3480156104c357600080fd5b506104cc611a6e565b604051610183919061361b565b3480156104e557600080fd5b506104ee611b06565b604051610183919061362e565b34801561050757600080fd5b5061051b610516366004612fb2565b611b18565b604051610183919061367b565b34801561053457600080fd5b506101ac61054336600461368e565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b148061058557506001600160e01b03198216630a85bd0160e11b145b80610594575061059482611bf0565b92915050565b630a85bd0160e11b5b949350505050565b6000806105b7846109bd565b905060006105c58285611c25565b90506105d08161098e565b156105e75750630b135d3f60e11b91506105949050565b3360006105f2611c49565b6001600160a01b038416600090815260069190910160205260409020905061061a8183611c6d565b8061064a575061062981611c8f565b600114801561064a5750600061063f8282611c99565b6001600160a01b0316145b6106a75760405162461bcd60e51b8152602060048201526024808201527f4163636f756e743a2063616c6c6572206e6f7420617070726f7665642074617260448201526333b2ba1760e11b60648201526084015b60405180910390fd5b6106b0836110ad565b156106c057630b135d3f60e11b94505b5050505092915050565b60006106d4611c49565b6001600160a01b0384166000908152600491909101602052604090205460ff161561070157506001610594565b600061070b611c49565b6001600160a01b0385166000908152600591909101602090815260408083208151606081018352815481526001909101546001600160801b0380821694830194909452600160801b9004909216908201529150610766611c49565b6006016000866001600160a01b03166001600160a01b0316815260200190815260200160002090504282602001516001600160801b031611806107b6575081604001516001600160801b03164210155b806107c757506107c581611c8f565b155b156107d757600092505050610594565b60006107ee6107e960608701876136f6565b611ca5565b905060006107fb83611c8f565b600114801561081c575060006108118482611c99565b6001600160a01b0316145b90506324f16c0560e11b6001600160e01b03198316016108935760008061084e61084960608a018a6136f6565b611cdf565b9150915082610874576108618583611c6d565b6108745760009650505050505050610594565b855181111561088c5760009650505050505050610594565b5050610981565b635c0f12eb60e11b6001600160e01b0319831601610974576000806108c36108be60608a018a6136f6565b611d44565b5091509150826109235760005b8251811015610921576109058382815181106108ee576108ee61373c565b602002602001015187611c6d90919063ffffffff16565b610919576000975050505050505050610594565b6001016108d0565b505b60005b825181101561096c578181815181106109415761094161373c565b602002602001015187600001511015610964576000975050505050505050610594565b600101610926565b505050610981565b6000945050505050610594565b5060019695505050505050565b6000610998611c49565b6001600160a01b03909216600090815260049290920160205250604090205460ff1690565b600080826040516020016109d391815260200190565b60405160208183030381529060405280519060200120905060007f82cac545155fcbf147f2a9013809613677ac7d65498556e6d19ce43bcbf6c28482604051602001610a29929190918252602082015260400190565b604051602081830303815290604052805190602001209050610a49611d91565b60405161190160f01b60208201526022810191909152604281018290526062016040516020818303038152906040528051906020012092505050919050565b6000610a92611eb8565b610a9c8484611f21565b9050610aa782612066565b9392505050565b610ab66115ba565b6001600160a01b0316336001600160a01b03161480610ad95750610ad93361098e565b610af55760405162461bcd60e51b815260040161069e90613752565b610afd6120b3565b8481148015610b0b57508483145b610b575760405162461bcd60e51b815260206004820152601d60248201527f4163636f756e743a2077726f6e67206172726179206c656e677468732e000000604482015260640161069e565b60005b85811015610c0c57610c03878783818110610b7757610b7761373c565b9050602002016020810190610b8c9190612fb2565b868684818110610b9e57610b9e61373c565b90506020020135858585818110610bb757610bb761373c565b9050602002810190610bc991906136f6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061219992505050565b50600101610b5a565b50505050505050565b610c1d6115ba565b6001600160a01b031663b760faf934306040518363ffffffff1660e01b8152600401610c499190613426565b6000604051808303818588803b158015610c6257600080fd5b505af1158015610c76573d6000803e3d6000fd5b5050505050565b610c8561220a565b610c8d6115ba565b6001600160a01b031663205c287883836040518363ffffffff1660e01b8152600401610cba929190613793565b600060405180830381600087803b158015610cd457600080fd5b505af1158015610ce8573d6000803e3d6000fd5b505050505050565b6000610cff6020850185612fb2565b905042610d1260e0860160c087016137c3565b6001600160801b031611158015610d415750610d35610100850160e086016137c3565b6001600160801b031642105b610d775760405162461bcd60e51b8152602060048201526007602482015266085c195c9a5bd960ca1b604482015260640161069e565b600080610d858686866113fe565b9150915081610dbf5760405162461bcd60e51b815260040161069e906020808252600490820152632173696760e01b604082015260600190565b6001610dc9611c49565b610100880135600090815260079190910160209081526040808320805460ff1916941515949094179093559091610e05919089019089016137ef565b60ff161115610e32576000610e2060408801602089016137ef565b60ff166001149050610c0c8482612248565b610e3b8361098e565b15610e705760405162461bcd60e51b815260206004820152600560248201526430b236b4b760d91b604482015260640161069e565b610e8583610e7c611c49565b6002019061231d565b50604051806060016040528087606001358152602001876080016020810190610eae91906137c3565b6001600160801b03168152602001610ecc60c0890160a08a016137c3565b6001600160801b03169052610edf611c49565b6001600160a01b03851660009081526005919091016020908152604080832084518155918401519301516001600160801b03908116600160801b02931692909217600190920191909155610f55610f34611c49565b6001600160a01b038616600090815260069190910160205260409020612332565b805190915060005b81811015610fbf57610fac838281518110610f7a57610f7a61373c565b6020026020010151610f8a611c49565b6001600160a01b0389166000908152600691909101602052604090209061233f565b50610fb8600182613820565b9050610f5d565b50610fcd6040890189613833565b9050905060005b8181101561104e5761103b610fec60408b018b613833565b83818110610ffc57610ffc61373c565b90506020020160208101906110119190612fb2565b611019611c49565b6001600160a01b0389166000908152600691909101602052604090209061231d565b50611047600182613820565b9050610fd4565b5061105888612354565b846001600160a01b0316836001600160a01b03167ff21d10c26e35863a8df291aca54181ee8c4a3bc8e00246c3f7a5a14b69d826a78a60405161109b919061390d565b60405180910390a35050505050505050565b6000806110b8611c49565b6001600160a01b038416600090815260059190910160209081526040918290208251606081018452815481526001909101546001600160801b03808216938301849052600160801b90910416928101929092529091504210801590611129575080604001516001600160801b031642105b8015610aa75750600061115e61113d611c49565b6001600160a01b038616600090815260069190910160205260409020611c8f565b119392505050565b6060600061117d611175611c49565b600201612332565b80519091506000805b8281101561120e576111b08482815181106111a3576111a361373c565b60200260200101516110ad565b156111c757816111bf816139f8565b9250506111fc565b60008482815181106111db576111db61373c565b60200260200101906001600160a01b031690816001600160a01b0316815250505b611207600182613820565b9050611186565b50806001600160401b0381111561122757611227612de6565b60405190808252806020026020018201604052801561126057816020015b61124d612d4d565b8152602001906001900390816112455790505b5093506000805b838110156113a55760006001600160a01b031685828151811061128c5761128c61373c565b60200260200101516001600160a01b0316146113935760008582815181106112b6576112b661373c565b6020026020010151905060006112ca611c49565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611334610f34611c49565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250888580611373906139f8565b9650815181106113855761138561373c565b602002602001018190525050505b61139e600182613820565b9050611267565b505050505090565b6113b56123e9565b6113f25760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015260640161069e565b6113fb81612401565b50565b60008061141461140d866124e8565b858561262c565b905061141e611c49565b6101008601356000908152600791909101602052604090205460ff1615801561144b575061144b8161098e565b9150935093915050565b6060816001600160401b0381111561146f5761146f612de6565b6040519080825280602002602001820160405280156114a257816020015b606081526020019060019003908161148d5790505b509050336000805b848110156115b157811561152957611507308787848181106114ce576114ce61373c565b90506020028101906114e091906136f6565b866040516020016114f393929190613a11565b60405160208183030381529060405261267e565b8482815181106115195761151961373c565b60200260200101819052506115a9565b61158b3087878481811061153f5761153f61373c565b905060200281019061155191906136f6565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061267e92505050565b84828151811061159d5761159d61373c565b60200260200101819052505b6001016114aa565b50505092915050565b6000806115c56126a3565b546001600160a01b0316905080156115dc57919050565b7f000000000000000000000000000000000000000000000000000000000000000091505090565b61160b6115ba565b6001600160a01b0316336001600160a01b0316148061162e575061162e3361098e565b61164a5760405162461bcd60e51b815260040161069e90613752565b6116526120b3565b610c76848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061219992505050565b61169b61220a565b806116a46126a3565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60006116cf6115ba565b604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190613a32565b905090565b600061174f6126c7565b5460ff169050600061175f6126c7565b54610100900460ff169050801580801561177c575060018360ff16105b8061179b575061178b306126eb565b15801561179b57508260ff166001145b6117fe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161069e565b60016118086126c7565b805460ff191660ff92909216919091179055801561184157600161182a6126c7565b80549115156101000261ff00199092169190911790555b6118818686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126fa92505050565b6118896126a3565b6001018190555061189b866001612248565b8015610ce85760006118ab6126c7565b80549115156101000261ff0019909216919091179055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b6060600061190c611175611c49565b8051909150806001600160401b0381111561192957611929612de6565b60405190808252806020026020018201604052801561196257816020015b61194f612d4d565b8152602001906001900390816119475790505b50925060005b81811015611a685760008382815181106119845761198461373c565b602002602001015190506000611998611c49565b6001600160a01b038316600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611a02610f34611c49565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250868481518110611a4757611a4761373c565b60200260200101819052505050600181611a619190613820565b9050611968565b50505090565b6060611a7861272d565b8054611a8390613a4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611aaf90613a4b565b8015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b5050505050905090565b6060611740611b13611c49565b612332565b611b20612d4d565b6000611b2a611c49565b6001600160a01b038416600081815260059290920160209081526040928390208351606081018552815481526001909101546001600160801b0380821683850152600160801b9091041681850152835160a081019094529183529092508101611bb5611b94611c49565b6001600160a01b038716600090815260069190910160205260409020612332565b81526020018260000151815260200182602001516001600160801b0316815260200182604001516001600160801b0316815250915050919050565b60006001600160e01b03198216630271189760e51b148061059457506301ffc9a760e01b6001600160e01b0319831614610594565b6000806000611c348585612751565b91509150611c4181612796565b509392505050565b7f3181e78fc1b109bc611fd2406150bf06e33faa75f71cba12c3e1fd670f2def0090565b6001600160a01b03811660009081526001830160205260408120541515610aa7565b6000610594825490565b6000610aa783836128db565b60006004821015611cc85760405162461bcd60e51b815260040161069e90613a7f565b611cd6600460008486613a9e565b610aa791613ac8565b6000806044831015611d035760405162461bcd60e51b815260040161069e90613a7f565b611d11602460048587613a9e565b810190611d1e9190612fb2565b9150611d2e604460248587613a9e565b810190611d3b9190612fcf565b90509250929050565b606080806064841015611d695760405162461bcd60e51b815260040161069e90613a7f565b611d768460048188613a9e565b810190611d839190613b77565b919790965090945092505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611dea57507f000000000000000000000000000000000000000000000000000000000000000046145b15611e1457507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b611ec06115ba565b6001600160a01b0316336001600160a01b031614611f1f5760405162461bcd60e51b815260206004820152601c60248201527b1858d8dbdd5b9d0e881b9bdd08199c9bdb48115b9d1c9e541bda5b9d60221b604482015260640161069e565b565b7b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b6000908152601c829052603c81206000611f9f611f626101408701876136f6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611c259050565b9050611fab81866106ca565b611fba57600192505050610594565b6000611fc4611c49565b6001600160a01b03929092166000908152600590920160209081526040808420815160608082018452825482526001909201546001600160801b0380821683870152600160801b8204908116928501929092528351928301845295825265ffffffffffff8087169483019490945292831691015260d09290921b6001600160d01b03191660a09290921b65ffffffffffff60a01b169190911795945050505050565b80156113fb57604051600090339060001990849084818181858888f193505050503d8060008114610c76576040519150601f19603f3d011682016040523d82523d6000602084013e610c76565b60405163c3c5a54760e01b81527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0382169063c3c5a54790612101903090600401613426565b602060405180830381865afa15801561211e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121429190613c5c565b6113fb57806001600160a01b03166383a03f8c61215d6126a3565b600101546040518263ffffffff1660e01b815260040161217f91815260200190565b600060405180830381600087803b158015610c6257600080fd5b60606000846001600160a01b031684846040516121b69190613c7e565b60006040518083038185875af1925050503d80600081146121f3576040519150601f19603f3d011682016040523d82523d6000602084013e6121f8565b606091505b509250905080611c4157815160208301fd5b6122133361098e565b611f1f5760405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b604482015260640161069e565b6122528282612905565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156123195780156122e1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630b61e12b836122c06126a3565b600101546040518363ffffffff1660e01b8152600401610cba929190613793565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639387a380836122c06126a3565b5050565b6000610aa7836001600160a01b0384166129b4565b60606000610aa783612a03565b6000610aa7836001600160a01b038416612a5f565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156113fb576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630b61e12b6123c06020840184612fb2565b6123c86126a3565b600101546040518363ffffffff1660e01b815260040161217f929190613793565b60006123f43361098e565b8061174057505030331490565b600061240b61272d565b805461241690613a4b565b80601f016020809104026020016040519081016040528092919081815260200182805461244290613a4b565b801561248f5780601f106124645761010080835404028352916020019161248f565b820191906000526020600020905b81548152906001019060200180831161247257829003601f168201915b505050505090508161249f61272d565b906124aa9082613ce7565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516124dc929190613da6565b60405180910390a15050565b60607f3fd4a1a1a267c84185e3b7eecd57c68783c0581d538b9d6e5f23e4670497c1e96125186020840184612fb2565b61252860408501602086016137ef565b6125356040860186613833565b604051602001612546929190613dd4565b60408051601f198184030181529190528051602090910120606086013561257360a08801608089016137c3565b61258360c0890160a08a016137c3565b61259360e08a0160c08b016137c3565b6125a46101008b0160e08c016137c3565b60408051602081019a909a526001600160a01b039098169789019790975260ff9095166060880152608087019390935260a08601919091526001600160801b0390811660c086015290811660e0850152908116610100848101919091529116610120830152830135610140820152610160016040516020818303038152906040529050919050565b60006105a383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508751602089012061267892509050612b52565b90611c25565b6060610aa78383604051806060016040528060278152602001613e7a60279139612b7f565b7f036f52c1827dab135f7fd44ca0bddde297e2f659c710e0ec53e975f22b54830090565b7f322cf19c484104d3b1a9c2982ebae869ede3fa5f6c4703ca41b9a48c76ee030090565b6001600160a01b03163b151590565b6000828260405160200161270f929190613e16565b60405160208183030381529060405280519060200120905092915050565b7f4bc804ba64359c0e35e5ed5d90ee596ecaa49a3a930ddcb1470ea0dd625da90090565b60008082516041036127875760208301516040840151606085015160001a61277b87828585612bf7565b9450945050505061278f565b506000905060025b9250929050565b60008160048111156127aa576127aa613e3a565b036127b25750565b60018160048111156127c6576127c6613e3a565b0361280e5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161069e565b600281600481111561282257612822613e3a565b0361286f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161069e565b600381600481111561288357612883613e3a565b036113fb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161069e565b60008260000182815481106128f2576128f261373c565b9060005260206000200154905092915050565b8061290e611c49565b6001600160a01b038416600090815260049190910160205260409020805460ff19169115159190911790558015612957576129518261294b611c49565b9061231d565b5061296b565b61296982612963611c49565b9061233f565b505b816001600160a01b03167f235bc17e7930760029e9f4d860a2a8089976de5b381cf8380fc11c1d88a11133826040516129a8911515815260200190565b60405180910390a25050565b60008181526001830160205260408120546129fb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610594565b506000610594565b606081600001805480602002602001604051908101604052809291908181526020018280548015612a5357602002820191906000526020600020905b815481526020019060010190808311612a3f575b50505050509050919050565b60008181526001830160205260408120548015612b48576000612a83600183613e50565b8554909150600090612a9790600190613e50565b9050818114612afc576000866000018281548110612ab757612ab761373c565b9060005260206000200154905080876000018481548110612ada57612ada61373c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612b0d57612b0d613e63565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610594565b6000915050610594565b6000610594612b5f611d91565b8360405161190160f01b8152600281019290925260228201526042902090565b6060600080856001600160a01b031685604051612b9c9190613c7e565b600060405180830381855af49150503d8060008114612bd7576040519150601f19603f3d011682016040523d82523d6000602084013e612bdc565b606091505b5091509150612bed86838387612cb1565b9695505050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612c245750600090506003612ca8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c78573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612ca157600060019250925050612ca8565b9150600090505b94509492505050565b60608315612d1e578251600003612d1757612ccb856126eb565b612d175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161069e565b50816105a3565b6105a38383815115612d335781518083602001fd5b8060405162461bcd60e51b815260040161069e919061361b565b6040518060a0016040528060006001600160a01b03168152602001606081526020016000815260200160006001600160801b0316815260200160006001600160801b031681525090565b600060208284031215612da957600080fd5b81356001600160e01b031981168114610aa757600080fd5b6001600160a01b03811681146113fb57600080fd5b8035612de181612dc1565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e2457612e24612de6565b604052919050565b60006001600160401b03831115612e4557612e45612de6565b612e58601f8401601f1916602001612dfc565b9050828152838383011115612e6c57600080fd5b828260208301376000602084830101529392505050565b600082601f830112612e9457600080fd5b610aa783833560208501612e2c565b60008060008060808587031215612eb957600080fd5b8435612ec481612dc1565b93506020850135612ed481612dc1565b92506040850135915060608501356001600160401b03811115612ef657600080fd5b612f0287828801612e83565b91505092959194509250565b60008060408385031215612f2157600080fd5b8235915060208301356001600160401b03811115612f3e57600080fd5b612f4a85828601612e83565b9150509250929050565b60006101608284031215612f6757600080fd5b50919050565b60008060408385031215612f8057600080fd5b8235612f8b81612dc1565b915060208301356001600160401b03811115612fa657600080fd5b612f4a85828601612f54565b600060208284031215612fc457600080fd5b8135610aa781612dc1565b600060208284031215612fe157600080fd5b5035919050565b600080600060608486031215612ffd57600080fd5b83356001600160401b0381111561301357600080fd5b61301f86828701612f54565b9660208601359650604090950135949350505050565b60008083601f84011261304757600080fd5b5081356001600160401b0381111561305e57600080fd5b6020830191508360208260051b850101111561278f57600080fd5b6000806000806000806060878903121561309257600080fd5b86356001600160401b03808211156130a957600080fd5b6130b58a838b01613035565b909850965060208901359150808211156130ce57600080fd5b6130da8a838b01613035565b909650945060408901359150808211156130f357600080fd5b5061310089828a01613035565b979a9699509497509295939492505050565b6000806040838503121561312557600080fd5b823561313081612dc1565b946020939093013593505050565b60008083601f84011261315057600080fd5b5081356001600160401b0381111561316757600080fd5b60208301915083602082850101111561278f57600080fd5b60008060006040848603121561319457600080fd5b83356001600160401b03808211156131ab57600080fd5b9085019061012082880312156131c057600080fd5b909350602085013590808211156131d657600080fd5b506131e38682870161313e565b9497909650939450505050565b6001600160801b03169052565b80516001600160a01b03908116835260208083015160a082860181905281519086018190526000939183019290849060c08801905b8083101561325457855185168252948301946001929092019190830190613232565b50604087015160408901526060870151945061327360608901866131f0565b6080870151945061328760808901866131f0565b979650505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156132e957603f198886030184526132d78583516131fd565b945092850192908501906001016132bb565b5092979650505050505050565b60006020828403121561330857600080fd5b81356001600160401b0381111561331e57600080fd5b8201601f8101841361332f57600080fd5b6105a384823560208401612e2c565b6000806020838503121561335157600080fd5b82356001600160401b0381111561336757600080fd5b61337385828601613035565b90969095509350505050565b60005b8381101561339a578181015183820152602001613382565b50506000910152565b600081518084526133bb81602086016020860161337f565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156132e957603f198886030184526134148583516133a3565b945092850192908501906001016133f8565b6001600160a01b0391909116815260200190565b6000806000806060858703121561345057600080fd5b843561345b81612dc1565b93506020850135925060408501356001600160401b0381111561347d57600080fd5b6134898782880161313e565b95989497509550505050565b60006001600160401b038211156134ae576134ae612de6565b5060051b60200190565b600082601f8301126134c957600080fd5b813560206134de6134d983613495565b612dfc565b8083825260208201915060208460051b87010193508684111561350057600080fd5b602086015b8481101561351c5780358352918301918301613505565b509695505050505050565b600080600080600060a0868803121561353f57600080fd5b853561354a81612dc1565b9450602086013561355a81612dc1565b935060408601356001600160401b038082111561357657600080fd5b61358289838a016134b8565b9450606088013591508082111561359857600080fd5b6135a489838a016134b8565b935060808801359150808211156135ba57600080fd5b506135c788828901612e83565b9150509295509295909350565b6000806000604084860312156135e957600080fd5b83356135f481612dc1565b925060208401356001600160401b0381111561360f57600080fd5b6131e38682870161313e565b602081526000610aa760208301846133a3565b6020808252825182820181905260009190848201906040850190845b8181101561366f5783516001600160a01b03168352928401929184019160010161364a565b50909695505050505050565b602081526000610aa760208301846131fd565b600080600080600060a086880312156136a657600080fd5b85356136b181612dc1565b945060208601356136c181612dc1565b9350604086013592506060860135915060808601356001600160401b038111156136ea57600080fd5b6135c788828901612e83565b6000808335601e1984360301811261370d57600080fd5b8301803591506001600160401b0382111561372757600080fd5b60200191503681900382131561278f57600080fd5b634e487b7160e01b600052603260045260246000fd5b60208082526021908201527f4163636f756e743a206e6f742061646d696e206f7220456e747279506f696e746040820152601760f91b606082015260800190565b6001600160a01b03929092168252602082015260400190565b80356001600160801b0381168114612de157600080fd5b6000602082840312156137d557600080fd5b610aa7826137ac565b803560ff81168114612de157600080fd5b60006020828403121561380157600080fd5b610aa7826137de565b634e487b7160e01b600052601160045260246000fd5b808201808211156105945761059461380a565b6000808335601e1984360301811261384a57600080fd5b8301803591506001600160401b0382111561386457600080fd5b6020019150600581901b360382131561278f57600080fd5b6000808335601e1984360301811261389357600080fd5b83016020810192503590506001600160401b038111156138b257600080fd5b8060051b360382131561278f57600080fd5b8183526000602080850194508260005b858110156139025781356138e781612dc1565b6001600160a01b0316875295820195908201906001016138d4565b509495945050505050565b6020815261392e6020820161392184612dd6565b6001600160a01b03169052565b600061393c602084016137de565b60ff8116604084015250613953604084018461387c565b61012080606086015261396b610140860183856138c4565b925060608601356080860152613983608087016137ac565b915061399260a08601836131f0565b61399e60a087016137ac565b91506139ad60c08601836131f0565b6139b960c087016137ac565b91506139c860e08601836131f0565b6139d460e087016137ac565b91506101006139e5818701846131f0565b9590950135939094019290925250919050565b600060018201613a0a57613a0a61380a565b5060010190565b8284823760609190911b6001600160601b0319169101908152601401919050565b600060208284031215613a4457600080fd5b5051919050565b600181811c90821680613a5f57607f821691505b602082108103612f6757634e487b7160e01b600052602260045260246000fd5b602080825260059082015264214461746160d81b604082015260600190565b60008085851115613aae57600080fd5b83861115613abb57600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015613af05780818660040360031b1b83161692505b505092915050565b600082601f830112613b0957600080fd5b81356020613b196134d983613495565b82815260059290921b84018101918181019086841115613b3857600080fd5b8286015b8481101561351c5780356001600160401b03811115613b5b5760008081fd5b613b698986838b0101612e83565b845250918301918301613b3c565b600080600060608486031215613b8c57600080fd5b83356001600160401b0380821115613ba357600080fd5b818601915086601f830112613bb757600080fd5b81356020613bc76134d983613495565b82815260059290921b8401810191818101908a841115613be657600080fd5b948201945b83861015613c0d578535613bfe81612dc1565b82529482019490820190613beb565b97505087013592505080821115613c2357600080fd5b613c2f878388016134b8565b93506040860135915080821115613c4557600080fd5b50613c5286828701613af8565b9150509250925092565b600060208284031215613c6e57600080fd5b81518015158114610aa757600080fd5b60008251613c9081846020870161337f565b9190910192915050565b601f821115613ce2576000816000526020600020601f850160051c81016020861015613cc35750805b601f850160051c820191505b81811015610ce857828155600101613ccf565b505050565b81516001600160401b03811115613d0057613d00612de6565b613d1481613d0e8454613a4b565b84613c9a565b602080601f831160018114613d495760008415613d315750858301515b600019600386901b1c1916600185901b178555610ce8565b600085815260208120601f198616915b82811015613d7857888601518255948401946001909101908401613d59565b5085821015613d965787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613db960408301856133a3565b8281036020840152613dcb81856133a3565b95945050505050565b60008184825b85811015613e0b578135613ded81612dc1565b6001600160a01b031683526020928301929190910190600101613dda565b509095945050505050565b6001600160a01b03831681526040602082018190526000906105a3908301846133a3565b634e487b7160e01b600052602160045260246000fd5b818103818111156105945761059461380a565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220247c9feadcfb4aa67bba286fdc86b80cc167fce1383f2afbc218bf965fb6bc3264736f6c63430008170033000000000000000000000000dd99b75f095d0c4d5112ace938e4e6ed962fb0240000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789" diff --git a/packages/permissionless-test/mock-aa-infra/alto/index.ts b/packages/permissionless-test/mock-aa-infra/alto/index.ts index 55c4e97d..ebeefcf8 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/index.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/index.ts @@ -35,6 +35,10 @@ import { SAFE_7579_LAUNCHPAD_CREATECALL, SAFE_7579_MODULE_CREATECALL, SAFE_7579_REGISTRY_CREATECALL, + SAFE_7579_REGISTRY_RESOLVER_CREATECALL, + SAFE_7579_REGISTRY_RESOLVER_PROXY_CREATECALL, + SAFE_7579_REGISTRY_SCHEMA_CREATECALL, + SAFE_7579_REGISTRY_SCHEMA_PROXY_CREATECALL, SAFE_MULTI_SEND_CALL_ONLY_CREATECALL, SAFE_MULTI_SEND_CREATECALL, SAFE_PROXY_FACTORY_CREATECALL, @@ -60,6 +64,7 @@ import { const DETERMINISTIC_DEPLOYER = "0x4e59b44847b379578588920ca78fbf26c0b4956c" const SAFE_SINGLETON_FACTORY = "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7" const BICONOMY_SINGLETON_FACTORY = "0x988C135a1049Ce61730724afD342fb7C56CD2776" +const SAFE_7579_REGISTRY = "0x000000000069E2a187AEFFb852bF3cCdC95151B2" export const ENTRY_POINT_SIMULATIONS_ADDRESS = "0x74Cb5e4eE81b86e70f9045036a1C5477de69eE87" @@ -98,6 +103,11 @@ export const setupContracts = async (rpc: string) => { address: walletClient.account.address }) + await anvilClient.setCode({ + address: SAFE_SINGLETON_FACTORY, + bytecode: SAFE_SINGLETON_FACTORY_BYTECODE + }) + await Promise.all([ walletClient.sendTransaction({ to: DETERMINISTIC_DEPLOYER, @@ -154,7 +164,7 @@ export const setupContracts = async (rpc: string) => { nonce: nonce++ }), walletClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, + to: SAFE_SINGLETON_FACTORY, data: SAFE_7579_REGISTRY_CREATECALL, gas: 15_000_000n, nonce: nonce++ @@ -274,8 +284,26 @@ export const setupContracts = async (rpc: string) => { nonce: nonce++ }), walletClient.sendTransaction({ - to: DETERMINISTIC_DEPLOYER, - data: ERC_7579_TEST_MODULE_CREATECALL, + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_REGISTRY_SCHEMA_CREATECALL, + gas: 15_000_000n, + nonce: nonce++ + }), + walletClient.sendTransaction({ + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_REGISTRY_RESOLVER_CREATECALL, + gas: 15_000_000n, + nonce: nonce++ + }), + walletClient.sendTransaction({ + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_REGISTRY_SCHEMA_PROXY_CREATECALL, + gas: 15_000_000n, + nonce: nonce++ + }), + walletClient.sendTransaction({ + to: SAFE_SINGLETON_FACTORY, + data: SAFE_7579_REGISTRY_RESOLVER_PROXY_CREATECALL, gas: 15_000_000n, nonce: nonce++ }), @@ -293,11 +321,6 @@ export const setupContracts = async (rpc: string) => { }) ]) - await anvilClient.setCode({ - address: SAFE_SINGLETON_FACTORY, - bytecode: SAFE_SINGLETON_FACTORY_BYTECODE - }) - await Promise.all([ walletClient.sendTransaction({ to: SAFE_SINGLETON_FACTORY, @@ -372,6 +395,55 @@ export const setupContracts = async (rpc: string) => { }) ]) + const rhinestoneAttester = "0x000000333034E9f539ce08819E12c1b8Cb29084d" + await anvilClient.setBalance({ + address: rhinestoneAttester, + value: parseEther("100") + }) + + await anvilClient.impersonateAccount({ + address: rhinestoneAttester + }) + + // register schema + await sendTransaction(walletClient, { + account: rhinestoneAttester, + to: SAFE_7579_REGISTRY, + data: "0x1d4d9810000000000000000000000000000000000000000000000000000000000000004000000000000000000000000086430e19d7d204807bbb8cda997bb57b7ee785dd000000000000000000000000000000000000000000000000000000000000024628656e756d20455243373537394d6f64756c655479706520284e6f6e652c56616c696461746f722c4578656375746f722c46616c6c6261636b2c486f6f6b292c737472756374204d6f64756c6554797065417474726962757465732028455243373537394d6f64756c6554797065206d6f64756c65547970652c627974657320656e636f64656441747472696275746573292c737472756374204d6f64756c6541747472696275746573202861646472657373206d6f64756c65416464726573732c6279746573207061636b6564417474726962757465732c4d6f64756c6554797065417474726962757465735b5d2074797065417474726962757465732c6279746573207061636b656445787465726e616c446570656e64656e6379292c656e756d205369676e61747572655479706520284e6f6e652c534543503235364b312c45524331323731292c7374727563742041756469746f722028737472696e67206e616d652c737472696e67207572692c737472696e675b5d20617574686f7273292c737472756374205369676e617475726520285369676e61747572655479706520736967547970652c61646472657373207369676e65722c6279746573207369676e6174757265446174612c627974657333322068617368292c73747275637420417564697453756d6d6172792028737472696e67207469746c652c41756469746f722061756469746f722c4d6f64756c6541747472696275746573206d6f64756c65417474726962757465732c5369676e6174757265207369676e617475726529290000000000000000000000000000000000000000000000000000" + }) + + // regsiter resolver + await sendTransaction(walletClient, { + account: rhinestoneAttester, + to: SAFE_7579_REGISTRY, + data: "0x9f3e1b53000000000000000000000000f0f468571e764664c93308504642af941d9f77f1" + }) + + await anvilClient.stopImpersonatingAccount({ + address: rhinestoneAttester + }) + + // deploy module + await sendTransaction(walletClient, { + to: SAFE_7579_REGISTRY, + data: ERC_7579_TEST_MODULE_CREATECALL + }) + + await anvilClient.impersonateAccount({ + address: rhinestoneAttester + }) + + // attest to module + await sendTransaction(walletClient, { + account: rhinestoneAttester, + to: SAFE_7579_REGISTRY, + data: "0x945e364193d46fcca4ef7d66a413c7bde08bb1ff14bacbd04c4069bb24cd7c21729d7bf100000000000000000000000000000000000000000000000000000000000000400000000000000000000000004fd8d57b94966982b62e9588c27b4171b55e835400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000094000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000000104f776e61626c6556616c696461746f7200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001041636b656520426c6f636b636861696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001168747470733a2f2f61636b65652e78797a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000012c5a074c49b70c3a16e20c5a06f6e736bc3bd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124d696368616c2050c599657672c3a174696c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4e616f6b6920596f736869646100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4a616e2050c599657672c3a174696c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000184a6f736566204761747465726d617965722c2050682e442e00000000000000000000000000000000000000004fd8d57b94966982b62e9588c27b4171b55e835400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000b0101010101000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000005010100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a1e8f5d6ccd82f2a2ac4ca5df4d51c71e48a54d5000000000000000000000000000000000000000000000000000000000000008022d5e995295e4d3b8bd198dc4ed6381026e7520b1bc156174254b97f3662ebbc000000000000000000000000000000000000000000000000000000000000004113d756b32e6788c67a57e3e445e05f0629f0e6f1f0f8af95d8995fd7586fcde03c9589572c75141fe7041c8ca63eab97c8743e98b7c2582dd9382619b23a84dd010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002" + }) + + await anvilClient.stopImpersonatingAccount({ + address: rhinestoneAttester + }) + // ==== SETUP KERNEL V0.6 CONTRACTS ==== // const kernelFactoryOwner = "0x9775137314fE595c943712B0b336327dfa80aE8A" await anvilClient.setBalance({ @@ -453,7 +525,7 @@ export const setupContracts = async (rpc: string) => { "0x9641d764fc13c8B624c04430C7356C1C7C8102e2", // Safe Multi Send Call Only "0x7579EE8307284F293B1927136486880611F20002", // Safe 7579 module "0x7579011aB74c46090561ea277Ba79D510c6C00ff", // Safe 7579 launchpad - "0x25A4b2F363678E13A0A5DB79b712dE00347a593E", // Safe 7579 Registry + "0x000000000069E2a187AEFFb852bF3cCdC95151B2", // Safe 7579 Registry "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789", // EntryPoint V0.6 "0x9406Cc6185a346906296840746125a0E44976454", // Simple Account Factory V0.6 "0x0000001c5b32F37F5beA87BDD5374eB2aC54eA8e", // Biconomy ECDSA Ownership Registry Module @@ -481,7 +553,7 @@ export const setupContracts = async (rpc: string) => { "0x3143E1C0Af0Cdc153423863923Cf4e3818e34Daa", // Trust TokenReceiverFacet "0xCe36b85d12D81cd619C745c7717f3396E184Ac7C", // Trust DiamondLoupeFacet "0x2e7f1dAe1F3799d20f5c31bEFdc7A620f664728D", // Trust DefaultFallbackHandler - "0xc98B026383885F41d9a995f85FC480E9bb8bB891", // ERC7579 Test Module + "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", // ERC7579 Test Module "0x85e23b94e7F5E9cC1fF78BCe78cfb15B81f0DF00", // Thirdweb factory 0.6 "0x4be0ddfebca9a5a4a617dee4dece99e7c862dceb" // Thirdweb factory 0.7 ]) diff --git a/packages/permissionless/actions/erc7579/installModule.test.ts b/packages/permissionless/actions/erc7579/installModule.test.ts index 7a308b55..980724ff 100644 --- a/packages/permissionless/actions/erc7579/installModule.test.ts +++ b/packages/permissionless/actions/erc7579/installModule.test.ts @@ -35,7 +35,7 @@ describe.each(getCoreSmartAccounts())( const opHash = await installModule(smartClient, { account: smartClient.account, type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", initData: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -74,7 +74,7 @@ describe.each(getCoreSmartAccounts())( const isModuleInstalled = await smartClient.isModuleInstalled({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: "0x" }) @@ -127,7 +127,7 @@ describe.each(getCoreSmartAccounts())( const opHash = await installModule(smartClient, { account: smartClient.account, type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -165,7 +165,7 @@ describe.each(getCoreSmartAccounts())( const isModuleInstalled = await smartClient.isModuleInstalled({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: "0x" }) diff --git a/packages/permissionless/actions/erc7579/installModules.test.ts b/packages/permissionless/actions/erc7579/installModules.test.ts index c8e50be1..7d057f67 100644 --- a/packages/permissionless/actions/erc7579/installModules.test.ts +++ b/packages/permissionless/actions/erc7579/installModules.test.ts @@ -45,7 +45,7 @@ describe.each(getCoreSmartAccounts())( { type: "executor", address: - "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -88,7 +88,7 @@ describe.each(getCoreSmartAccounts())( const isModuleInstalled = await smartClient.isModuleInstalled({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: "0x" }) @@ -144,7 +144,7 @@ describe.each(getCoreSmartAccounts())( { type: "executor", address: - "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -187,7 +187,7 @@ describe.each(getCoreSmartAccounts())( const isModuleInstalled = await smartClient.isModuleInstalled({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: "0x" }) diff --git a/packages/permissionless/actions/erc7579/isModuleInstalled.test.ts b/packages/permissionless/actions/erc7579/isModuleInstalled.test.ts index e2b2648f..b7b1d782 100644 --- a/packages/permissionless/actions/erc7579/isModuleInstalled.test.ts +++ b/packages/permissionless/actions/erc7579/isModuleInstalled.test.ts @@ -35,7 +35,7 @@ describe.each(getCoreSmartAccounts())( const opHash = await smartClient.installModule({ account: smartClient.account as any, type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -60,7 +60,7 @@ describe.each(getCoreSmartAccounts())( { account: smartClient.account, type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: "0x" } ) diff --git a/packages/permissionless/actions/erc7579/uninstallModule.test.ts b/packages/permissionless/actions/erc7579/uninstallModule.test.ts index 1da2316f..65376b31 100644 --- a/packages/permissionless/actions/erc7579/uninstallModule.test.ts +++ b/packages/permissionless/actions/erc7579/uninstallModule.test.ts @@ -34,7 +34,7 @@ describe.each(getCoreSmartAccounts())( const opHash = await smartClient.installModule({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -59,7 +59,7 @@ describe.each(getCoreSmartAccounts())( { account: smartClient.account, type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? "0x" : encodeAbiParameters( diff --git a/packages/permissionless/actions/erc7579/uninstallModules.test.ts b/packages/permissionless/actions/erc7579/uninstallModules.test.ts index 9da4f4e3..bc94af39 100644 --- a/packages/permissionless/actions/erc7579/uninstallModules.test.ts +++ b/packages/permissionless/actions/erc7579/uninstallModules.test.ts @@ -34,7 +34,7 @@ describe.each(getCoreSmartAccounts())( const opHash = await smartClient.installModule({ type: "executor", - address: "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + address: "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? encodePacked( ["address", "bytes"], @@ -62,7 +62,7 @@ describe.each(getCoreSmartAccounts())( { type: "executor", address: - "0xc98B026383885F41d9a995f85FC480E9bb8bB891", + "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", context: name.startsWith("Kernel 7579") ? "0x" : encodeAbiParameters( From b293e3e97749e4382628f1b4d9d2e34a0b493c59 Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 3 Nov 2024 11:00:23 +0000 Subject: [PATCH 6/6] Add changeset --- .changeset/smart-camels-collect.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smart-camels-collect.md diff --git a/.changeset/smart-camels-collect.md b/.changeset/smart-camels-collect.md new file mode 100644 index 00000000..19f7a537 --- /dev/null +++ b/.changeset/smart-camels-collect.md @@ -0,0 +1,5 @@ +--- +"permissionless": patch +--- + +Fixed support for latest audited 7579 contracts