bsc/core/systemcontracts/gibbs/chapel/StakingContract

1 line
40 KiB
Plaintext

60806040526004361061036f5760003560e01c806370fd5bad116101c6578063b88a802f116100f7578063d7ecfcb611610095578063f45fd80b1161006f578063f45fd80b14610bd0578063f9a2bbc714610c15578063fc3e590814610646578063fd6a687914610c2a57610376565b8063d7ecfcb6146107ee578063dc927faf14610ba6578063edc1a5b014610bbb57610376565b8063c2117d82116100d1578063c2117d8214610abc578063c81b166214610ad1578063c8509d8114610ae6578063d61b9b9314610b6b57610376565b8063b88a802f14610a57578063baaafd3b14610a6c578063bf8546ca14610a8157610376565b806396713da911610164578063a78abc161161013e578063a78abc1614610939578063ab51bb9614610962578063ac43175114610977578063b14315df14610a4257610376565b806396713da9146108fa5780639dc092621461090f578063a1a11bf51461092457610376565b806375d47a0a116101a057806375d47a0a1461084b5780637942fd0514610860578063831d65d11461087557806392b888a4146105f257610376565b806370fd5bad146107ee578063718a8aa81461080357806375aca5931461081857610376565b8063413d9c3a116102a05780635d17c8bd1161023e57806369b635b61161021857806369b635b61461075b5780636bd8f804146107705780636e47b482146107a65780636fb7f7eb146107bb57610376565b80635d17c8bd1461071c5780635d499b1b1461073157806362b171d21461074657610376565b80634bf6c8821161027a5780634bf6c882146106b15780634d99dd16146106c657806351e80672146106f2578063552aaf931461070757610376565b8063413d9c3a1461065b57806343756e5c14610670578063493279b11461068557610376565b8063151817e31161030d578063333ad3e7116102e7578063333ad3e71461061c57806334c43354146106315780633dffc387146105f25780633fdfa7e41461064657610376565b8063151817e3146105c757806317c9efb0146105f25780632fdeb1111461060757610376565b80630bee7a67116103495780630bee7a671461043b5780630e2374a5146104695780631182b8751461049a57806311fe9ec61461059457610376565b8063026e402b1461037b57806302985992146103a9578063047636d1146103d057610376565b3661037657005b600080fd5b6103a76004803603604081101561039157600080fd5b506001600160a01b038135169060200135610c3f565b005b3480156103b557600080fd5b506103be611141565b60408051918252519081900360200190f35b3480156103dc57600080fd5b50610403600480360360208110156103f357600080fd5b50356001600160a01b0316611147565b6040518082606080838360005b83811015610428578181015183820152602001610410565b5050505090500191505060405180910390f35b34801561044757600080fd5b5061045061119b565b6040805163ffffffff9092168252519081900360200190f35b34801561047557600080fd5b5061047e6111a0565b604080516001600160a01b039092168252519081900360200190f35b3480156104a657600080fd5b5061051f600480360360408110156104bd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156104e157600080fd5b8201836020820111156104f357600080fd5b803590602001918460018302840111600160201b8311171561051457600080fd5b5090925090506111a6565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610559578181015183820152602001610541565b50505050905090810190601f1680156105865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105a057600080fd5b506103be600480360360208110156105b757600080fd5b50356001600160a01b031661135c565b3480156105d357600080fd5b506105dc611377565b6040805160ff9092168252519081900360200190f35b3480156105fe57600080fd5b506105dc61137c565b34801561061357600080fd5b506103be611381565b34801561062857600080fd5b50610450611387565b34801561063d57600080fd5b506103be61138c565b34801561065257600080fd5b506105dc611397565b34801561066757600080fd5b506103be61139c565b34801561067c57600080fd5b5061047e6113a3565b34801561069157600080fd5b5061069a6113a9565b6040805161ffff9092168252519081900360200190f35b3480156106bd57600080fd5b506105dc6113ae565b6103a7600480360360408110156106dc57600080fd5b506001600160a01b0381351690602001356113b3565b3480156106fe57600080fd5b5061047e61199a565b34801561071357600080fd5b506105dc6119a0565b34801561072857600080fd5b506103be6119a5565b34801561073d57600080fd5b506103be6119ab565b34801561075257600080fd5b506103be6119b4565b34801561076757600080fd5b506103be611aec565b6103a76004803603606081101561078657600080fd5b506001600160a01b03813581169160208101359091169060400135611af2565b3480156107b257600080fd5b5061047e612160565b3480156107c757600080fd5b506103be600480360360208110156107de57600080fd5b50356001600160a01b0316612166565b3480156107fa57600080fd5b506105dc612181565b34801561080f57600080fd5b506105dc612186565b34801561082457600080fd5b506103be6004803603602081101561083b57600080fd5b50356001600160a01b031661218b565b34801561085757600080fd5b5061047e6121a6565b34801561086c57600080fd5b506105dc6121ac565b34801561088157600080fd5b506103a76004803603604081101561089857600080fd5b60ff8235169190810190604081016020820135600160201b8111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460018302840111600160201b831117156108ef57600080fd5b5090925090506121b1565b34801561090657600080fd5b506105dc612473565b34801561091b57600080fd5b5061047e612478565b34801561093057600080fd5b5061047e61247e565b34801561094557600080fd5b5061094e612484565b604080519115158252519081900360200190f35b34801561096e57600080fd5b506104506119a0565b34801561098357600080fd5b506103a76004803603604081101561099a57600080fd5b810190602081018135600160201b8111156109b457600080fd5b8201836020820111156109c657600080fd5b803590602001918460018302840111600160201b831117156109e757600080fd5b919390929091602081019035600160201b811115610a0457600080fd5b820183602082011115610a1657600080fd5b803590602001918460018302840111600160201b83111715610a3757600080fd5b50909250905061248d565b348015610a4e57600080fd5b506105dc612a8a565b348015610a6357600080fd5b506103be612a8f565b348015610a7857600080fd5b506103be612bc4565b348015610a8d57600080fd5b506103be60048036036040811015610aa457600080fd5b506001600160a01b0381358116916020013516612bcf565b348015610ac857600080fd5b506103be612bfc565b348015610add57600080fd5b5061047e612c02565b348015610af257600080fd5b506103a760048036036040811015610b0957600080fd5b60ff8235169190810190604081016020820135600160201b811115610b2d57600080fd5b820183602082011115610b3f57600080fd5b803590602001918460018302840111600160201b83111715610b6057600080fd5b509092509050612c08565b348015610b7757600080fd5b506103be60048036036040811015610b8e57600080fd5b506001600160a01b0381358116916020013516612e25565b348015610bb257600080fd5b5061047e612e50565b348015610bc757600080fd5b506103be612e56565b348015610bdc57600080fd5b506103be60048036036060811015610bf357600080fd5b506001600160a01b038135811691602081013582169160409091013516612e63565b348015610c2157600080fd5b5061047e612e98565b348015610c3657600080fd5b5061047e612e9e565b60105460ff1660021415610c8b576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610cb357506402540be4008106155b610d04576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16610d41576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600354821015610d98576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642064656c656761746520616d6f756e74000000000000000000604482015290519081900360640190fd5b600154610dac90839063ffffffff612ea416565b341015610df7576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f756768206d73672076616c756560601b604482015290519081900360640190fd5b60405133906108fc9060009081818181818888f19350505050610e55576040805162461bcd60e51b815260206004820152601160248201527034b73b30b634b2103232b632b3b0ba37b960791b604482015290519081900360640190fd5b6000610e6c836402540be40063ffffffff612f0516565b90506000610e80348563ffffffff612f4716565b90506000610e9960025483612f4790919063ffffffff16565b6040805160038082526080820190925291925060609190816020015b6060815260200190600190039081610eb5579050509050610ed533612f89565b81600081518110610ee257fe5b6020026020010181905250610eff876001600160a01b0316612f89565b81600181518110610f0c57fe5b6020026020010181905250610f2084612fac565b81600281518110610f2d57fe5b60200260200101819052506060610f4d6001610f4884612fbf565b613049565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600b909352912080549091019055905061200063f7a251d7601083610fab876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611009578181015183820152602001610ff1565b50505050905090810190601f1680156110365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561105757600080fd5b505af115801561106b573d6000803e3d6000fd5b5061100492506108fc91506110889050898663ffffffff612ea416565b6040518115909202916000818181858888f193505050501580156110b0573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156110e1573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927f5f32ed2794e2e72d19e3cb2320e8820a499c4204887372beba51f5e61c040867929081900390910190a350506010805460ff19166001179055505050505050565b60035481565b61114f614dd9565b611157614dd9565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b61200181565b606033612000146111e85760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff16611225576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b61122d614df7565b61127461126f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b6130f4565b905060006112896112848361313e565b61318c565b90506000606060ff8316600414156112ae576112a484613243565b9092509050611305565b60ff8316600514156112c3576112a484613423565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615611351576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b606181565b600881565b60105460ff16600214156113ff576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561142757506402540be4008106155b611478576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166114b5576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b600154341015611503576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156115be576002548211611556576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b038716845290915290205482146115be576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526005602090815260408083206001600160a01b0387168452909152902054821115611627576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b038716845290915290205442101561169f576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b60006116b6836402540be40063ffffffff612f0516565b60025490915034906000906116d290839063ffffffff612f4716565b6040805160038082526080820190925291925060609190816020015b60608152602001906001900390816116ee57905050905061170e33612f89565b8160008151811061171b57fe5b6020026020010181905250611738876001600160a01b0316612f89565b8160018151811061174557fe5b602002602001018190525061175984612fac565b8160028151811061176657fe5b602002602001018190525060606117816002610f4884612fbf565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506117d242620a8c0063ffffffff612ea416565b3360009081526007602090815260408083206001600160a01b038d16845290915290205561200063f7a251d7601083611816876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561187457818101518382015260200161185c565b50505050905090810190601f1680156118a15780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156118c257600080fd5b505af11580156118d6573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611909573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f1935050505015801561193a573d6000803e3d6000fd5b50604080518881526020810185905281516001600160a01b038b169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff19166001179055505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611a03576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611a6a576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290555183156108fc0291849190818181858888f19350505050158015611aa5573d6000803e3d6000fd5b5060408051828152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a26010805460ff1916600117905590565b60035490565b60105460ff1660021415611b3e576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015611b6657506402540be4008106155b611bb7576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611bf4576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b826001600160a01b0316846001600160a01b03161415611c52576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103932b232b632b3b0ba34b7b760611b604482015290519081900360640190fd5b600154341015611ca0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210158015611cd557503360009081526005602090815260408083206001600160a01b03881684529091529020548211155b611d17576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b3360009081526009602090815260408083206001600160a01b03888116855290835281842090871684529091529020544210801590611d8557503360009081526009602090815260408083206001600160a01b03878116855290835281842090881684529091529020544210155b611dd6576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720726564656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b6000611ded836402540be40063ffffffff612f0516565b6002549091503490600090611e0990839063ffffffff612f4716565b60408051600480825260a0820190925291925060609190816020015b6060815260200190600190039081611e25579050509050611e4533612f89565b81600081518110611e5257fe5b6020026020010181905250611e6f886001600160a01b0316612f89565b81600181518110611e7c57fe5b6020026020010181905250611e99876001600160a01b0316612f89565b81600281518110611ea657fe5b6020026020010181905250611eba84612fac565b81600381518110611ec757fe5b60200260200101819052506060611ee26003610f4884612fbf565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600d9093529120805490910190559050611f3342620a8c0063ffffffff612ea416565b3360009081526009602090815260408083206001600160a01b038d81168552908352818420908e168452909152902055611f7642620a8c0063ffffffff612ea416565b3360009081526009602090815260408083206001600160a01b038e81168552908352818420908d16845290915290205561200063f7a251d7601083611fc6876402540be40063ffffffff612f0516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561202457818101518382015260200161200c565b50505050905090810190601f1680156120515780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156120b9573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156120ea573d6000803e3d6000fd5b50876001600160a01b0316896001600160a01b0316336001600160a01b03167fdb0d03fdfcb145c486c442659e6a341a8828985505097cb5190afcf541e840158a87604051808381526020018281526020019250505060405180910390a450506010805460ff1916600117905550505050505050565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146121f15760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff1661222e576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612236614df7565b61227861126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b905060008060606000805b61228c8661363f565b156122f757806122a9576122a26112848761313e565b94506122ef565b80600114156122c5576122be6112848761313e565b93506122ef565b80600214156122ea576122df6122da8761313e565b613660565b9250600191506122ef565b6122f7565b600101612283565b8161233d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b612346836136d0565b612389576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61239561126f846130cf565b955060006123a56112848861313e565b90506123af614df7565b6123b88861363f565b156123db576123d461126f6123cf6122da8b61313e565b6130cf565b905061241c565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff82166001141561243857612433818888613724565b612466565b60ff82166002141561244f57612433818888613adb565b60ff8216600314156112c357612433818888613da8565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b60005460ff166124e4576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b33611007146125245760405162461bcd60e51b815260040180806020018281038252602e815260200180614f0d602e913960400191505060405180910390fd5b61258584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b6020820152915061410d9050565b156126eb57602081146125df576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161261d918585808385018382808284376000920191909152506141f492505050565b9050600354811061265f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614f3b602e913960400191505060405180910390fd5b600254811161269f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614f69602e913960400191505060405180910390fd5b6402540be4008106156126e35760405162461bcd60e51b815260040180806020018281038252602c815260200180614ee1602c913960400191505060405180910390fd5b6001556129f8565b61274f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b6020820152915061410d9050565b1561287557602081146127a9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916127e7918585808385018382808284376000920191909152506141f492505050565b905060015481106128295760405162461bcd60e51b815260040180806020018281038252602e815260200180614e61602e913960400191505060405180910390fd5b6402540be40081061561286d5760405162461bcd60e51b815260040180806020018281038252602f815260200180614e32602f913960400191505060405180910390fd5b6002556129f8565b6128d984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b6020820152915061410d9050565b156129bb5760208114612933576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091612971918585808385018382808284376000920191909152506141f492505050565b905060015481116129b35760405162461bcd60e51b8152600401808060200182810382526031815260200180614e8f6031913960400191505060405180910390fd5b6003556129f8565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff1660021415612ade576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612b42576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290555183156108fc0291849190818181858888f19350505050158015612b7d573d6000803e3d6000fd5b5060408051828152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a26010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b3361200014612c485760405162461bcd60e51b815260040180806020018281038252602f815260200180614f97602f913960400191505060405180910390fd5b60005460ff16612c85576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556000805460ff191690911790555b612cc482828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136d092505050565b612d07576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b612d0f614df7565b612d5161126f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130cf92505050565b90506000612d616112848361313e565b9050612d6b614df7565b612d748361363f565b15612d9257612d8b61126f6123cf6122da8661313e565b9050612dd8565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff821660011415612df257612ded816141f9565b612e1c565b60ff821660021415612e0757612ded81614413565b60ff8216600314156112c357612ded8161453d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b61100481565b600082820183811015612efe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000612efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506146a2565b6000612efe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614744565b60408051600560a21b8318601482015260348101909152606090612efe8161479e565b6060612bf6612fba836147f4565b61479e565b6060815160001415612fe05750604080516000815260208101909152611196565b606082600081518110612fef57fe5b602002602001015190506000600190505b8351811015613030576130268285838151811061301957fe5b60200260200101516148da565b9150600101613000565b50612efe613043825160c060ff16614957565b826148da565b6040805160028082526060828101909352829190816020015b60608152602001906001900390816130625790505090506130858460ff16612fac565b8160008151811061309257fe5b60200260200101819052506130a68361479e565b816001815181106130b357fe5b60200260200101819052506130c781612fbf565b949350505050565b6130d7614e17565b506040805180820190915281518152602082810190820152919050565b6130fc614df7565b61310582614a4f565b61310e57600080fd5b600061311d8360200151614a89565b60208085015160408051808201909152868152920190820152915050919050565b613146614e17565b61314f8261363f565b61315857600080fd5b6020820151600061316882614aec565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906131a157508151602110155b6131aa57600080fd5b60006131b98360200151614a89565b90508083600001511015613214576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561323a57826020036101000a820491505b50949350505050565b600060606000806000805b6132578761363f565b156132a957826132795761327261326d8861313e565b614c1f565b915061329e565b82600114156132995761328e6112848861313e565b90506001935061329e565b6132a9565b82600101925061324e565b836132ef576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b505050506040513d602081101561336357600080fd5b50519050806133885761337a600484846065614c39565b96509650505050505061341e565b6001600160a01b0383166000908152600660205260409020546133b1908363ffffffff612ea416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b6134398861363f565b156134a257836134565761344f61326d8961313e565b9250613497565b83600114156134725761346b61326d8961313e565b9150613497565b8360021415613492576134876112848961313e565b905060019450613497565b6134a2565b836001019350613430565b846134e8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561353257600080fd5b505af1158015613546573d6000803e3d6000fd5b505050506040513d602081101561355c57600080fd5b505190508061358257613573600585846065614c39565b9750975050505050505061341e565b6001600160a01b0380851660008181526007602090815260408083209488168352938152838220829055918152600890915220546135c6908363ffffffff612ea416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b6000613649614e17565b505080518051602091820151919092015191011190565b805160609061366e57600080fd5b600061367d8360200151614a89565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156136b4576020820181803683370190505b509050600081602001905061323a848760200151018285614d35565b8051602080830191909120600e546000908152600a90925260408220548082146136ff57600092505050611196565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6137368861363f565b1561379f57836137535761374c61326d8961313e565b9250613794565b836001141561376f5761376861326d8961313e565b9150613794565b836002141561378f576137846112848961313e565b905060019450613794565b61379f565b83600101935061372d565b846137e5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006137fc826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156139425760ff87161561386f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613898908263ffffffff612ea416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546138da908263ffffffff612ea416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613ad0565b60ff8816613a94576001600160a01b038416600090815260086020526040902054613973908263ffffffff612ea416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156139cf57600080fd5b505af11580156139e3573d6000803e3d6000fd5b505050506040513d60208110156139f957600080fd5b5051613a42576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613ad0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b613aed8861363f565b15613b565783613b0a57613b0361326d8961313e565b9250613b4b565b8360011415613b2657613b1f61326d8961313e565b9150613b4b565b8360021415613b4657613b3b6112848961313e565b905060019450613b4b565b613b56565b836001019350613ae4565b84613b9c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb3826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff881660011415613d325760ff871615613c26576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613c4f908263ffffffff612f4716565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613c91908263ffffffff612f4716565b6001600160a01b03808616600090815260056020908152604080832093881683529290522055613cca42620a8c0063ffffffff612ea416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613ad0565b60ff8816613a94576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613ad0565b6000806000806000805b613dbb8961363f565b15613e405784613dd857613dd161326d8a61313e565b9350613e35565b8460011415613df457613ded61326d8a61313e565b9250613e35565b8460021415613e1057613e0961326d8a61313e565b9150613e35565b8460031415613e3057613e256112848a61313e565b905060019550613e35565b613e40565b846001019450613db2565b85613e86576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613e9d826402540be40063ffffffff614d8016565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156140705760ff881615613f10576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613f46908263ffffffff612f4716565b6001600160a01b03868116600090815260056020908152604080832089851684529091528082209390935590851681522054613f829082612ea4565b6001600160a01b03808716600090815260056020908152604080832093881683529290522055613fbb42620a8c0063ffffffff612ea416565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613ffe42620a8c0063ffffffff612ea416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4614101565b60ff8916613a94576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b602083106141425780518252601f199092019160209182019101614123565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106141b05780518252601f199092019160209182019101614191565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b61420b8661363f565b1561427457836142285761422161326d8761313e565b9250614269565b83600114156142445761423d61326d8761313e565b9150614269565b8360021415614264576142596112848761313e565b905060019450614269565b614274565b836001019350614202565b846142ba576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006142d1826402540be40063ffffffff614d8016565b6001600160a01b0385166000908152600b602090815260408083208054600019019055600890915290205490915061430f908263ffffffff612ea416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561436b57600080fd5b505af115801561437f573d6000803e3d6000fd5b505050506040513d602081101561439557600080fd5b50516143de576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b6144258661363f565b1561448e57836144425761443b61326d8761313e565b9250614483565b836001141561445e5761445761326d8761313e565b9150614483565b836002141561447e576144736112848761313e565b905060019450614483565b61448e565b83600101935061441c565b846144d4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b6145508761363f565b156145d5578461456d5761456661326d8861313e565b93506145ca565b84600114156145895761458261326d8861313e565b92506145ca565b84600214156145a55761459e61326d8861313e565b91506145ca565b84600314156145c5576145ba6112848861313e565b9050600195506145ca565b6145d5565b846001019450614547565b8561461b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b6000818361472e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146f35781810151838201526020016146db565b50505050905090810190601f1680156147205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161473a57fe5b0495945050505050565b600081848411156147965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156146f35781810151838201526020016146db565b505050900390565b6060815160011480156147d05750607f60f81b826000815181106147be57fe5b01602001516001600160f81b03191611155b156147dc575080611196565b612bf66147ee8351608060ff16614957565b836148da565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166148385750601861485c565b6fffffffffffffffffffffffffffffffff1984166148585750601061485c565b5060005b60208110156148925781818151811061487157fe5b01602001516001600160f81b0319161561488a57614892565b60010161485c565b60008160200390506060816040519080825280601f01601f1916602001820160405280156148c7576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561490b5780518352602092830192016148f3565b50855184518101855292509050808201602086015b81831015614938578051835260209283019201614920565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106149a7576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614a015782840160f81b816000815181106149e357fe5b60200101906001600160f81b031916908160001a9053509050612bf6565b6060614a0c856147f4565b90508381510160370160f81b82600081518110614a2557fe5b60200101906001600160f81b031916908160001a905350614a4682826148da565b95945050505050565b8051600090614a6057506000611196565b6020820151805160001a9060c0821015614a7f57600092505050611196565b5060019392505050565b8051600090811a6080811015614aa3576000915050611196565b60b8811080614abe575060c08110801590614abe575060f881105b15614acd576001915050611196565b60c0811015614ae15760b519019050611196565b60f519019050611196565b80516000908190811a6080811015614b075760019150614c18565b60b8811015614b1c57607e1981019150614c18565b60c0811015614b9657600060b78203600186019550806020036101000a865104915060018101820193505080831015614b90576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614c18565b60f8811015614bab5760be1981019150614c18565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614c16576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090601514614c3057600080fd5b612bf68261318c565b60006060614c52846402540be40063ffffffff612f0516565b60408051600480825260a0820190925291955060609190816020015b6060815260200190600190039081614c6e579050509050614c918760ff16612fac565b81600081518110614c9e57fe5b6020026020010181905250614cbb866001600160a01b0316612f89565b81600181518110614cc857fe5b6020026020010181905250614cdc85612fac565b81600281518110614ce957fe5b6020026020010181905250614d038463ffffffff16612fac565b81600381518110614d1057fe5b60200260200101819052506060614d2682612fbf565b94989497509395505050505050565b80614d3f57612e20565b5b60208110614d5f578251825260209283019290910190601f1901614d40565b915181516020939093036101000a6000190180199091169216919091179052565b600082614d8f57506000612bf6565b82820282848281614d9c57fe5b0414612efe5760405162461bcd60e51b8152600401808060200182810382526021815260200180614ec06021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614e0a614e17565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a2646970667358221220066cc7c05d87e3cd20ecf3649deba7ac4ce8b389992969b6006793cbf330c73564736f6c63430006040033