@mantleio/contracts
Version:
[Mantle] L1 and L2 smart contracts for Mantle
260 lines (259 loc) • 42.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "BlockFinalizationVerifier",
"sourceName": "contracts/L1/fraud-proof/verifier/subverifiers/BlockFinalizationVerifier.sol",
"abi": [
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "coinbase",
"type": "address"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "number",
"type": "uint256"
},
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"components": [
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "gasPrice",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "gas",
"type": "uint64"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "v",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "r",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "s",
"type": "uint256"
}
],
"internalType": "struct EVMTypesLib.Transaction",
"name": "transaction",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "inputRoot",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
}
],
"internalType": "struct VerificationContext.Context",
"name": "ctx",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "currStateHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "encoded",
"type": "bytes"
}
],
"name": "executeOneStepProof",
"outputs": [
{
"components": [
{
"internalType": "uint64",
"name": "blockNumber",
"type": "uint64"
},
{
"internalType": "bytes32",
"name": "globalStateRoot",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "cumulativeGasUsed",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "blockHashRoot",
"type": "bytes32"
}
],
"internalType": "struct OneStepProof.BlockStateProof",
"name": "endState",
"type": "tuple"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "coinbase",
"type": "address"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "number",
"type": "uint256"
},
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"components": [
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "gasPrice",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "gas",
"type": "uint64"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "v",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "r",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "s",
"type": "uint256"
}
],
"internalType": "struct EVMTypesLib.Transaction",
"name": "transaction",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "inputRoot",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
}
],
"internalType": "struct VerificationContext.Context",
"name": "ctx",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "currStateHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "encoded",
"type": "bytes"
}
],
"name": "verifyOneStepProof",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50612293806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80632138b3e41461003b57806389c3ad0f14610061575b600080fd5b61004e610049366004611d7d565b6100b1565b6040519081526020015b60405180910390f35b61007461006f366004611d7d565b6100d0565b6040516100589190815167ffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b60006100c76100c2868686866100d0565b6101f5565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101829052906100fc611a48565b61010785858461020e565b604051919350915060009085878237839020905086811461016f5760405162461bcd60e51b815260206004820152600f60248201527f4261642053746174652050726f6f66000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610192848888600187600001516101889190611e96565b8760a0015161043c565b909450905060006101a48a8386610681565b90506101bc85898987600001518860a0015186610756565b606080890191909152855167ffffffffffffffff16885260408087015160208a0152950151948701949094525050505050949350505050565b600061020082610a95565b805190602001209050919050565b6000610218611a48565b6101d061022f67ffffffffffffffff851686611ebf565b101561027d5760405162461bcd60e51b815260206004820152601760248201527f50726f6f6620556e646572666c6f772028496e746572290000000000000000006044820152606401610166565b6102ca8367ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b699050565b67ffffffffffffffff16815261032d6102e4846008611ed6565b67ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b699050565b67ffffffffffffffff16602082015261039361034a846010611ed6565b67ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b60408201526103a66102e4846030611ed6565b67ffffffffffffffff1660608201526103c36102e4846050611ed6565b67ffffffffffffffff1660808201526103e061034a846070611ed6565b60a08201526103f361034a846090611ed6565b60c082015261040661034a8460b0611ed6565b60e0820152610420858561041b8660d0611ed6565b610c35565b610100820152610432836101d0611ed6565b9150935093915050565b6040805160208101909152600080825290819061045a87878a610ce4565b60408051808201909152600081526060602082015291995091506104b588888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610db3915050565b83518151929b50909250906000805b8460200151518160ff1610156105bd5760018084161415610544578385602001518260ff16815181106104f9576104f9611f02565b602002602001015160405160200161051b929190918252602082015260400190565b6040516020818303038152906040528051906020012093508060ff166001901b82179150610599565b84602001518160ff168151811061055d5761055d611f02565b602002602001015184604051602001610580929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c925080806105b590611f31565b9150506104c4565b5087831461060d5760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8867ffffffffffffffff168167ffffffffffffffff16146106705760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b505091519899975050505050505050565b600061068b611a9b565b8381527f1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493476020820152845173ffffffffffffffffffffffffffffffffffffffff16604082810191909152830151606082015260c0830151608082015260e083015160a0820152600160c0820152825167ffffffffffffffff1660e08201526304c4b40067ffffffffffffffff908116610100830152608084015116610120820152602085015167ffffffffffffffff166101408201526101008301516101608201526100c781610fc5565b6040805160208101909152600080825290819061077488888b610ce4565b604080518082019091526000815260606020820152919a5091506107cf89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e9250610db3915050565b83518151929c50909250906000805b8460200151518160ff1610156108d7576001808416141561085e578385602001518260ff168151811061081357610813611f02565b6020026020010151604051602001610835929190918252602082015260400190565b6040516020818303038152906040528051906020012093508060ff166001901b821791506108b3565b84602001518160ff168151811061087757610877611f02565b60200260200101518460405160200161089a929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c925080806108cf90611f31565b9150506107de565b508883146109275760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8967ffffffffffffffff168167ffffffffffffffff161461098a5760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8351889350915060005b8460200151518160ff161015610a815760018084161415610a08578385602001518260ff16815181106109c9576109c9611f02565b60200260200101516040516020016109eb929190918252602082015260400190565b604051602081830303815290604052805190602001209350610a5d565b84602001518160ff1681518110610a2157610a21611f02565b602002602001015184604051602001610a44929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c92508080610a7990611f31565b915050610994565b509b9c919b50909950505050505050505050565b6060610b0f8260000151604051602001610ada919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528290611341565b9050610b2b8260200151604051602001610ada91815260200190565b9050610b478260400151604051602001610ada91815260200190565b9050610b638260600151604051602001610ada91815260200190565b92915050565b6000610b76826008611f51565b83511015610bc65760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610166565b50016008015190565b6000610bdc826020611f51565b83511015610c2c5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610166565b50016020015190565b610c3d611afd565b610c45611afd565b60005b6008811015610cdb57610c9e8467ffffffffffffffff1687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b82518260088110610cb157610cb1611f02565b602002018181525050602084610cc79190611ed6565b935080610cd381611f69565b915050610c48565b50949350505050565b60408051602081019091526000808252906020610d0b67ffffffffffffffff851686611ebf565b1015610d595760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b610da68367ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b8152610432836020611ed6565b604080518082019091526000808252606060208301529060098367ffffffffffffffff168551610de39190611ebf565b1015610e315760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b610e458467ffffffffffffffff8516610b69565b67ffffffffffffffff1681526000610e72610e61856008611ed6565b869067ffffffffffffffff166113dc565b9050610e7f600985611ed6565b9350610e8c816020611fa2565b60ff168467ffffffffffffffff168651610ea69190611ebf565b1015610ef45760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b8060ff1667ffffffffffffffff811115610f1057610f10611b23565b604051908082528060200260200182016040528015610f39578160200160208202803683370190505b50602083015260005b8160ff168167ffffffffffffffff161015610fb857610f6b8667ffffffffffffffff8716610bcf565b83602001518267ffffffffffffffff1681518110610f8b57610f8b611f02565b602002602001018181525050602085610fa49190611ed6565b945080610fb081611fcb565b915050610f42565b50839250505b9250929050565b60408051600f8082526102008201909252600091829190816020015b6060815260200190600190039081610fe1579050509050611026836000015160405160200161101291815260200190565b604051602081830303815290604052611442565b8160008151811061103957611039611f02565b602002602001018190525061105e836020015160405160200161101291815260200190565b8160018151811061107157611071611f02565b602002602001018190525061108983604001516114b1565b8160028151811061109c5761109c611f02565b60200260200101819052506110c1836060015160405160200161101291815260200190565b816003815181106110d4576110d4611f02565b60200260200101819052506110f9836080015160405160200161101291815260200190565b8160048151811061110c5761110c611f02565b60200260200101819052506111318360a0015160405160200161101291815260200190565b8160058151811061114457611144611f02565b602002602001018190525061116c836101600151600001516040516020016110129190611ff3565b8160068151811061117f5761117f611f02565b60200260200101819052506111978360c001516114ed565b816007815181106111aa576111aa611f02565b60200260200101819052506111c28360e001516114ed565b816008815181106111d5576111d5611f02565b60200260200101819052506111f883610100015167ffffffffffffffff166114ed565b8160098151811061120b5761120b611f02565b602002602001018190525061122e83610120015167ffffffffffffffff166114ed565b81600a8151811061124157611241611f02565b602002602001018190525061126483610140015167ffffffffffffffff166114ed565b81600b8151811061127757611277611f02565b602002602001018190525061129a60405180602001604052806000815250611442565b81600c815181106112ad576112ad611f02565b60200260200101819052506112d16000801b60405160200161101291815260200190565b81600d815181106112e4576112e4611f02565b60209081029190910181019190915260405160009181019190915261130b90602801611012565b81600e8151811061131e5761131e611f02565b602002602001018190525061133281611500565b80519060200120915050919050565b6060806040519050835180825260208201818101602087015b8183101561137257805183526020928301920161135a565b50855184518101855292509050808201602086015b8183101561139f578051835260209283019201611387565b508651929092011591909101601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660405250905092915050565b60006113e9826001611f51565b835110156114395760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610166565b50016001015190565b60608082516001148015611470575060808360008151811061146657611466611f02565b016020015160f81c105b1561147c575081610b63565b61148883516080611544565b8360405160200161149a929190612063565b604051602081830303815290604052905092915050565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015290610b6390603401611012565b6060610b636114fb8361173b565b611442565b6060600061150d8361189d565b905061151b815160c0611544565b8160405160200161152d929190612063565b604051602081830303815290604052915050919050565b60608060388410156115c357604080516001808252818301909252906020820181803683370190505090506115798385612080565b60f81b8160008151811061158f5761158f611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611734565b600060015b6115d281876120d4565b156115f857816115e181611f69565b92506115f19050610100826120e8565b90506115c8565b611603826001611f51565b67ffffffffffffffff81111561161b5761161b611b23565b6040519080825280601f01601f191660200182016040528015611645576020820181803683370190505b5092506116528583612080565b61165d906037612080565b60f81b8360008151811061167357611673611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611731576101006116bb8284611ebf565b6116c79061010061223d565b6116d190886120d4565b6116db9190612249565b60f81b8382815181106116f0576116f0611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061172981611f69565b9150506116a7565b50505b9392505050565b606060008260405160200161175291815260200190565b604051602081830303815290604052905060005b60208110156117c45781818151811061178157611781611f02565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156117b2576117c4565b806117bc81611f69565b915050611766565b60006117d1826020611ebf565b67ffffffffffffffff8111156117e9576117e9611b23565b6040519080825280601f01601f191660200182016040528015611813576020820181803683370190505b50905060005b8151811015610cdb57838361182d81611f69565b94508151811061183f5761183f611f02565b602001015160f81c60f81b82828151811061185c5761185c611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061189581611f69565b915050611819565b60608151600014156118bd57505060408051600081526020810190915290565b6000805b8351811015611904578381815181106118dc576118dc611f02565b602002602001015151826118f09190611f51565b9150806118fc81611f69565b9150506118c1565b60008267ffffffffffffffff81111561191f5761191f611b23565b6040519080825280601f01601f191660200182016040528015611949576020820181803683370190505b50600092509050602081015b8551831015610cdb57600086848151811061197257611972611f02565b602002602001015190506000602082019050611990838284516119cd565b8785815181106119a2576119a2611f02565b602002602001015151836119b69190611f51565b9250505082806119c590611f69565b935050611955565b8282825b60208110611a0957815183526119e8602084611f51565b92506119f5602083611f51565b9150611a02602082611ebf565b90506119d1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526101008101611a96611afd565b905290565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611a965b60408051610120810190915280611a966020820160088161010080368337509192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715611b7657611b76611b23565b60405290565b60405160e0810167ffffffffffffffff81118282101715611b7657611b76611b23565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bc357600080fd5b919050565b803567ffffffffffffffff81168114611bc357600080fd5b600082601f830112611bf157600080fd5b813567ffffffffffffffff80821115611c0c57611c0c611b23565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611c5257611c52611b23565b81604052838152866020858801011115611c6b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101208284031215611c9e57600080fd5b611ca6611b52565b9050611cb182611bc8565b815260208201356020820152611cc960408301611bc8565b6040820152611cda60608301611b9f565b60608201526080820135608082015260a082013567ffffffffffffffff811115611d0357600080fd5b611d0f84828501611be0565b60a08301525060c082013560c082015260e082013560e082015261010080830135818301525092915050565b60008083601f840112611d4d57600080fd5b50813567ffffffffffffffff811115611d6557600080fd5b602083019150836020828501011115610fbe57600080fd5b60008060008060608587031215611d9357600080fd5b843567ffffffffffffffff80821115611dab57600080fd5b9086019060e08289031215611dbf57600080fd5b611dc7611b7c565b611dd083611b9f565b81526020830135602082015260408301356040820152611df260608401611b9f565b6060820152608083013582811115611e0957600080fd5b611e158a828601611c8b565b60808301525060a083013560a082015260c083013560c082015280965050602087013594506040870135915080821115611e4e57600080fd5b50611e5b87828801611d3b565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611eb757611eb7611e67565b039392505050565b600082821015611ed157611ed1611e67565b500390565b600067ffffffffffffffff808316818516808303821115611ef957611ef9611e67565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415611f4857611f48611e67565b60010192915050565b60008219821115611f6457611f64611e67565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f9b57611f9b611e67565b5060010190565b600060ff821660ff84168160ff0481118215151615611fc357611fc3611e67565b029392505050565b600067ffffffffffffffff80831681811415611fe957611fe9611e67565b6001019392505050565b60008183825b6008811015612018578151835260209283019290910190600101611ff9565b5050506101008201905092915050565b6000815160005b81811015612049576020818501810151868301520161202f565b81811115612058576000828601525b509290920192915050565b60006120786120728386612028565b84612028565b949350505050565b600060ff821660ff84168060ff0382111561209d5761209d611e67565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120e3576120e36120a5565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561212057612120611e67565b500290565b600181815b8085111561217e57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561216457612164611e67565b8085161561217157918102915b93841c939080029061212a565b509250929050565b60008261219557506001610b63565b816121a257506000610b63565b81600181146121b857600281146121c2576121de565b6001915050610b63565b60ff8411156121d3576121d3611e67565b50506001821b610b63565b5060208310610133831016604e8410600b8410161715612201575081810a610b63565b61220b8383612125565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611fc357611fc3611e67565b60006117348383612186565b600082612258576122586120a5565b50069056fea2646970667358221220ca7e6b01fb0a637bfa7f3c180d69ecdfbcfa2a0d8a4b9fce4b0ec61cc3109e3d64736f6c63430008090033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80632138b3e41461003b57806389c3ad0f14610061575b600080fd5b61004e610049366004611d7d565b6100b1565b6040519081526020015b60405180910390f35b61007461006f366004611d7d565b6100d0565b6040516100589190815167ffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b60006100c76100c2868686866100d0565b6101f5565b95945050505050565b6040805160808101825260008082526020820181905291810182905260608101829052906100fc611a48565b61010785858461020e565b604051919350915060009085878237839020905086811461016f5760405162461bcd60e51b815260206004820152600f60248201527f4261642053746174652050726f6f66000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610192848888600187600001516101889190611e96565b8760a0015161043c565b909450905060006101a48a8386610681565b90506101bc85898987600001518860a0015186610756565b606080890191909152855167ffffffffffffffff16885260408087015160208a0152950151948701949094525050505050949350505050565b600061020082610a95565b805190602001209050919050565b6000610218611a48565b6101d061022f67ffffffffffffffff851686611ebf565b101561027d5760405162461bcd60e51b815260206004820152601760248201527f50726f6f6620556e646572666c6f772028496e746572290000000000000000006044820152606401610166565b6102ca8367ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b699050565b67ffffffffffffffff16815261032d6102e4846008611ed6565b67ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b699050565b67ffffffffffffffff16602082015261039361034a846010611ed6565b67ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b60408201526103a66102e4846030611ed6565b67ffffffffffffffff1660608201526103c36102e4846050611ed6565b67ffffffffffffffff1660808201526103e061034a846070611ed6565b60a08201526103f361034a846090611ed6565b60c082015261040661034a8460b0611ed6565b60e0820152610420858561041b8660d0611ed6565b610c35565b610100820152610432836101d0611ed6565b9150935093915050565b6040805160208101909152600080825290819061045a87878a610ce4565b60408051808201909152600081526060602082015291995091506104b588888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610db3915050565b83518151929b50909250906000805b8460200151518160ff1610156105bd5760018084161415610544578385602001518260ff16815181106104f9576104f9611f02565b602002602001015160405160200161051b929190918252602082015260400190565b6040516020818303038152906040528051906020012093508060ff166001901b82179150610599565b84602001518160ff168151811061055d5761055d611f02565b602002602001015184604051602001610580929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c925080806105b590611f31565b9150506104c4565b5087831461060d5760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8867ffffffffffffffff168167ffffffffffffffff16146106705760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b505091519899975050505050505050565b600061068b611a9b565b8381527f1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493476020820152845173ffffffffffffffffffffffffffffffffffffffff16604082810191909152830151606082015260c0830151608082015260e083015160a0820152600160c0820152825167ffffffffffffffff1660e08201526304c4b40067ffffffffffffffff908116610100830152608084015116610120820152602085015167ffffffffffffffff166101408201526101008301516101608201526100c781610fc5565b6040805160208101909152600080825290819061077488888b610ce4565b604080518082019091526000815260606020820152919a5091506107cf89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e9250610db3915050565b83518151929c50909250906000805b8460200151518160ff1610156108d7576001808416141561085e578385602001518260ff168151811061081357610813611f02565b6020026020010151604051602001610835929190918252602082015260400190565b6040516020818303038152906040528051906020012093508060ff166001901b821791506108b3565b84602001518160ff168151811061087757610877611f02565b60200260200101518460405160200161089a929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c925080806108cf90611f31565b9150506107de565b508883146109275760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8967ffffffffffffffff168167ffffffffffffffff161461098a5760405162461bcd60e51b815260206004820152601260248201527f42616420426c6f636b4861736850726f6f6600000000000000000000000000006044820152606401610166565b8351889350915060005b8460200151518160ff161015610a815760018084161415610a08578385602001518260ff16815181106109c9576109c9611f02565b60200260200101516040516020016109eb929190918252602082015260400190565b604051602081830303815290604052805190602001209350610a5d565b84602001518160ff1681518110610a2157610a21611f02565b602002602001015184604051602001610a44929190918252602082015260400190565b6040516020818303038152906040528051906020012093505b60018367ffffffffffffffff16901c92508080610a7990611f31565b915050610994565b509b9c919b50909950505050505050505050565b6060610b0f8260000151604051602001610ada919060c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016815260080190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528290611341565b9050610b2b8260200151604051602001610ada91815260200190565b9050610b478260400151604051602001610ada91815260200190565b9050610b638260600151604051602001610ada91815260200190565b92915050565b6000610b76826008611f51565b83511015610bc65760405162461bcd60e51b815260206004820152601460248201527f746f55696e7436345f6f75744f66426f756e64730000000000000000000000006044820152606401610166565b50016008015190565b6000610bdc826020611f51565b83511015610c2c5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610166565b50016020015190565b610c3d611afd565b610c45611afd565b60005b6008811015610cdb57610c9e8467ffffffffffffffff1687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b82518260088110610cb157610cb1611f02565b602002018181525050602084610cc79190611ed6565b935080610cd381611f69565b915050610c48565b50949350505050565b60408051602081019091526000808252906020610d0b67ffffffffffffffff851686611ebf565b1015610d595760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b610da68367ffffffffffffffff1686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610bcf9050565b8152610432836020611ed6565b604080518082019091526000808252606060208301529060098367ffffffffffffffff168551610de39190611ebf565b1015610e315760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b610e458467ffffffffffffffff8516610b69565b67ffffffffffffffff1681526000610e72610e61856008611ed6565b869067ffffffffffffffff166113dc565b9050610e7f600985611ed6565b9350610e8c816020611fa2565b60ff168467ffffffffffffffff168651610ea69190611ebf565b1015610ef45760405162461bcd60e51b815260206004820152600f60248201527f50726f6f6620556e646572666c6f7700000000000000000000000000000000006044820152606401610166565b8060ff1667ffffffffffffffff811115610f1057610f10611b23565b604051908082528060200260200182016040528015610f39578160200160208202803683370190505b50602083015260005b8160ff168167ffffffffffffffff161015610fb857610f6b8667ffffffffffffffff8716610bcf565b83602001518267ffffffffffffffff1681518110610f8b57610f8b611f02565b602002602001018181525050602085610fa49190611ed6565b945080610fb081611fcb565b915050610f42565b50839250505b9250929050565b60408051600f8082526102008201909252600091829190816020015b6060815260200190600190039081610fe1579050509050611026836000015160405160200161101291815260200190565b604051602081830303815290604052611442565b8160008151811061103957611039611f02565b602002602001018190525061105e836020015160405160200161101291815260200190565b8160018151811061107157611071611f02565b602002602001018190525061108983604001516114b1565b8160028151811061109c5761109c611f02565b60200260200101819052506110c1836060015160405160200161101291815260200190565b816003815181106110d4576110d4611f02565b60200260200101819052506110f9836080015160405160200161101291815260200190565b8160048151811061110c5761110c611f02565b60200260200101819052506111318360a0015160405160200161101291815260200190565b8160058151811061114457611144611f02565b602002602001018190525061116c836101600151600001516040516020016110129190611ff3565b8160068151811061117f5761117f611f02565b60200260200101819052506111978360c001516114ed565b816007815181106111aa576111aa611f02565b60200260200101819052506111c28360e001516114ed565b816008815181106111d5576111d5611f02565b60200260200101819052506111f883610100015167ffffffffffffffff166114ed565b8160098151811061120b5761120b611f02565b602002602001018190525061122e83610120015167ffffffffffffffff166114ed565b81600a8151811061124157611241611f02565b602002602001018190525061126483610140015167ffffffffffffffff166114ed565b81600b8151811061127757611277611f02565b602002602001018190525061129a60405180602001604052806000815250611442565b81600c815181106112ad576112ad611f02565b60200260200101819052506112d16000801b60405160200161101291815260200190565b81600d815181106112e4576112e4611f02565b60209081029190910181019190915260405160009181019190915261130b90602801611012565b81600e8151811061131e5761131e611f02565b602002602001018190525061133281611500565b80519060200120915050919050565b6060806040519050835180825260208201818101602087015b8183101561137257805183526020928301920161135a565b50855184518101855292509050808201602086015b8183101561139f578051835260209283019201611387565b508651929092011591909101601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660405250905092915050565b60006113e9826001611f51565b835110156114395760405162461bcd60e51b815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610166565b50016001015190565b60608082516001148015611470575060808360008151811061146657611466611f02565b016020015160f81c105b1561147c575081610b63565b61148883516080611544565b8360405160200161149a929190612063565b604051602081830303815290604052905092915050565b604051606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015290610b6390603401611012565b6060610b636114fb8361173b565b611442565b6060600061150d8361189d565b905061151b815160c0611544565b8160405160200161152d929190612063565b604051602081830303815290604052915050919050565b60608060388410156115c357604080516001808252818301909252906020820181803683370190505090506115798385612080565b60f81b8160008151811061158f5761158f611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611734565b600060015b6115d281876120d4565b156115f857816115e181611f69565b92506115f19050610100826120e8565b90506115c8565b611603826001611f51565b67ffffffffffffffff81111561161b5761161b611b23565b6040519080825280601f01601f191660200182016040528015611645576020820181803683370190505b5092506116528583612080565b61165d906037612080565b60f81b8360008151811061167357611673611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600190505b818111611731576101006116bb8284611ebf565b6116c79061010061223d565b6116d190886120d4565b6116db9190612249565b60f81b8382815181106116f0576116f0611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061172981611f69565b9150506116a7565b50505b9392505050565b606060008260405160200161175291815260200190565b604051602081830303815290604052905060005b60208110156117c45781818151811061178157611781611f02565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016156117b2576117c4565b806117bc81611f69565b915050611766565b60006117d1826020611ebf565b67ffffffffffffffff8111156117e9576117e9611b23565b6040519080825280601f01601f191660200182016040528015611813576020820181803683370190505b50905060005b8151811015610cdb57838361182d81611f69565b94508151811061183f5761183f611f02565b602001015160f81c60f81b82828151811061185c5761185c611f02565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061189581611f69565b915050611819565b60608151600014156118bd57505060408051600081526020810190915290565b6000805b8351811015611904578381815181106118dc576118dc611f02565b602002602001015151826118f09190611f51565b9150806118fc81611f69565b9150506118c1565b60008267ffffffffffffffff81111561191f5761191f611b23565b6040519080825280601f01601f191660200182016040528015611949576020820181803683370190505b50600092509050602081015b8551831015610cdb57600086848151811061197257611972611f02565b602002602001015190506000602082019050611990838284516119cd565b8785815181106119a2576119a2611f02565b602002602001015151836119b69190611f51565b9250505082806119c590611f69565b935050611955565b8282825b60208110611a0957815183526119e8602084611f51565b92506119f5602083611f51565b9150611a02602082611ebf565b90506119d1565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526101008101611a96611afd565b905290565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611a965b60408051610120810190915280611a966020820160088161010080368337509192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715611b7657611b76611b23565b60405290565b60405160e0810167ffffffffffffffff81118282101715611b7657611b76611b23565b803573ffffffffffffffffffffffffffffffffffffffff81168114611bc357600080fd5b919050565b803567ffffffffffffffff81168114611bc357600080fd5b600082601f830112611bf157600080fd5b813567ffffffffffffffff80821115611c0c57611c0c611b23565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611c5257611c52611b23565b81604052838152866020858801011115611c6b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006101208284031215611c9e57600080fd5b611ca6611b52565b9050611cb182611bc8565b815260208201356020820152611cc960408301611bc8565b6040820152611cda60608301611b9f565b60608201526080820135608082015260a082013567ffffffffffffffff811115611d0357600080fd5b611d0f84828501611be0565b60a08301525060c082013560c082015260e082013560e082015261010080830135818301525092915050565b60008083601f840112611d4d57600080fd5b50813567ffffffffffffffff811115611d6557600080fd5b602083019150836020828501011115610fbe57600080fd5b60008060008060608587031215611d9357600080fd5b843567ffffffffffffffff80821115611dab57600080fd5b9086019060e08289031215611dbf57600080fd5b611dc7611b7c565b611dd083611b9f565b81526020830135602082015260408301356040820152611df260608401611b9f565b6060820152608083013582811115611e0957600080fd5b611e158a828601611c8b565b60808301525060a083013560a082015260c083013560c082015280965050602087013594506040870135915080821115611e4e57600080fd5b50611e5b87828801611d3b565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611eb757611eb7611e67565b039392505050565b600082821015611ed157611ed1611e67565b500390565b600067ffffffffffffffff808316818516808303821115611ef957611ef9611e67565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415611f4857611f48611e67565b60010192915050565b60008219821115611f6457611f64611e67565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f9b57611f9b611e67565b5060010190565b600060ff821660ff84168160ff0481118215151615611fc357611fc3611e67565b029392505050565b600067ffffffffffffffff80831681811415611fe957611fe9611e67565b6001019392505050565b60008183825b6008811015612018578151835260209283019290910190600101611ff9565b5050506101008201905092915050565b6000815160005b81811015612049576020818501810151868301520161202f565b81811115612058576000828601525b509290920192915050565b60006120786120728386612028565b84612028565b949350505050565b600060ff821660ff84168060ff0382111561209d5761209d611e67565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120e3576120e36120a5565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561212057612120611e67565b500290565b600181815b8085111561217e57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561216457612164611e67565b8085161561217157918102915b93841c939080029061212a565b509250929050565b60008261219557506001610b63565b816121a257506000610b63565b81600181146121b857600281146121c2576121de565b6001915050610b63565b60ff8411156121d3576121d3611e67565b50506001821b610b63565b5060208310610133831016604e8410600b8410161715612201575081810a610b63565b61220b8383612125565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611fc357611fc3611e67565b60006117348383612186565b600082612258576122586120a5565b50069056fea2646970667358221220ca7e6b01fb0a637bfa7f3c180d69ecdfbcfa2a0d8a4b9fce4b0ec61cc3109e3d64736f6c63430008090033",
"linkReferences": {},
"deployedLinkReferences": {}
}