120 txs
91 calls
constructor
constructor(address initialOwner, address _auctioneer, address _permit2, address _externalCallHandler)
functions
auctioneer
viewfunction auctioneer() view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
externalCallHandler
viewfunction externalCallHandler() view returns (address)
orderManuallyInitialized
viewfunction orderManuallyInitialized(bytes32 orderHash) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
permit2
viewfunction permit2() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
cancelManuallyCreatedOrder
nonpayablefunction cancelManuallyCreatedOrder(tuple order)
createOrderManually
nonpayablefunction createOrderManually(tuple order)
fulfillLimitOrder
nonpayablefunction fulfillLimitOrder(uint256 promisedAmountOut, tuple order, bytes userSignature, tuple permission, bytes auctioneerSignature, address fulfillerContract, bytes callBackData, bool orderWasInitializedManually)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuctioneer
nonpayablefunction setAuctioneer(address newAuctioneer)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AuctioneerSet
event AuctioneerSet(address)
EIP712DomainChanged
event EIP712DomainChanged()
OrderFulfilled
event OrderFulfilled(bytes32 indexed orderHash, uint256 mainAmountOut)
OrderManuallyCancelled
event OrderManuallyCancelled(bytes32 orderHash)
OrderManuallyInitialized
event OrderManuallyInitialized(bytes32 orderHash)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
FeeOnTransferTokensNotSupported
error FeeOnTransferTokensNotSupported()
InvalidAuctioneerSignature
error InvalidAuctioneerSignature()
InvalidOrder
error InvalidOrder()
InvalidPermission
error InvalidPermission()
InvalidPromisedAmountOut
error InvalidPromisedAmountOut()
InvalidShortString
error InvalidShortString()
NotASolver
error NotASolver()
NotAUser
error NotAUser()
OrderWasAlreadyManuallyInitialized
error OrderWasAlreadyManuallyInitialized()
OrderWasNotManuallyInitialized
error OrderWasNotManuallyInitialized()
OverdueDeadline
error OverdueDeadline()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RequestedTransferNotFulfilled
error RequestedTransferNotFulfilled(address token, address account, uint256 minAmount, uint256 received)
RequestedTransfersLengthMismatch
error RequestedTransfersLengthMismatch()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101a060405234801561001157600080fd5b50604051613dd6380380613dd6833981016040819052610030916102dc565b604080518082018252601581527f53696e676c65436861696e47756172644c696d69740000000000000000000000602080830191909152825180840190935260018352603160f81b9083015290848484886001600160a01b0381166100b057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100b9816101ea565b506001600160a01b03831615806100d757506001600160a01b038216155b806100e957506001600160a01b038116155b156101075760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b039485161790559082166080521660a052610138826003610206565b61016052610147816004610206565b61018052815160208084019190912061012052815190820120610140524660e0526101d66101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c052505030610100525061050a92505050565b600180546001600160a01b031916905561020381610239565b50565b60006020835110156102225761021b83610289565b9050610233565b8161022d84826103da565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f815111156102b4578260405163305a27a960e01b81526004016100a79190610498565b80516102bf826104e6565b179392505050565b6001600160a01b038116811461020357600080fd5b600080600080608085870312156102f257600080fd5b84516102fd816102c7565b602086015190945061030e816102c7565b604086015190935061031f816102c7565b6060860151909250610330816102c7565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061036557607f821691505b60208210810361038557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103d557806000526020600020601f840160051c810160208510156103b25750805b601f840160051c820191505b818110156103d257600081556001016103be565b50505b505050565b81516001600160401b038111156103f3576103f361033b565b610407816104018454610351565b8461038b565b6020601f82116001811461043b57600083156104235750848201515b600019600385901b1c1916600184901b1784556103d2565b600084815260208120601f198516915b8281101561046b578785015182556020948501946001909201910161044b565b50848210156104895786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156104c657602081860181015160408684010152016104a9565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103855760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051610160516101805161384761058f60003960006119d8015260006119a6015260006121c70152600061219f015260006120fa015260006121240152600061214e01526000818161021b01528181611e280152612765015260008181610108015261135e01526138476000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c80638da5cb5b1161008c578063df3be9b911610066578063df3be9b914610216578063e30c39781461023d578063f2fde38b1461025b578063f32132361461026e57600080fd5b80638da5cb5b146101b2578063b7d8c5a6146101d0578063dc27c13e1461020357600080fd5b80635ec2c7bf116100c85780635ec2c7bf14610167578063715018a61461018757806379ba50971461018f57806384b0196e1461019757600080fd5b8062ede7e4146100ee57806312261ee714610103578063526a004814610154575b600080fd5b6101016100fc36600461295d565b610281565b005b61012a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101016101623660046129fe565b61034f565b60025461012a9073ffffffffffffffffffffffffffffffffffffffff1681565b610101610492565b6101016104a6565b61019f610522565b60405161014b9796959493929190612b81565b60005473ffffffffffffffffffffffffffffffffffffffff1661012a565b6101f36101de366004612c42565b60056020526000908152604090205460ff1681565b604051901515815260200161014b565b610101610211366004612c5b565b610584565b61012a7f000000000000000000000000000000000000000000000000000000000000000081565b60015473ffffffffffffffffffffffffffffffffffffffff1661012a565b61010161026936600461295d565b6109ab565b61010161027c366004612c5b565b610a5b565b610289610bbb565b73ffffffffffffffffffffffffffffffffffffffff81166102d6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f4ee0985a129917c72eab0afe7ec6060bf6c6e0796bedc42de903d9dbbadfc51d9060200160405180910390a150565b600061036261035d8c612ee9565b610c0e565b9050610372818d8d8b8b8b610f44565b811561042a5760008181526005602052604090205460ff166103c0576040517f462b743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006005600083815260200190815260200160002060006101000a81548160ff021916908315150217905550610425858c604001358d6020016020810190610408919061295d565b73ffffffffffffffffffffffffffffffffffffffff16919061121a565b610437565b610437818c8c8c896112a0565b60006104478d8d8b898989611789565b9050817f5c36d11ac0f0183c71c1510b7905a133ced19e12a469813de8c0be5a97644b6e8260405161047b91815260200190565b60405180910390a250505050505050505050505050565b61049a610bbb565b6104a4600061196e565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610516576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b61051f8161196e565b50565b60006060806000806000606061053661199f565b61053e6119d1565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610591602082018261295d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f5576040517f25602e6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810135158061062b5750600061061360a083016080840161295d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610662576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4261067561012083016101008401612fb7565b63ffffffff1610156106b3576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106c5604083016020840161295d565b73ffffffffffffffffffffffffffffffffffffffff1603610712576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061072061035d83612ee9565b60008181526005602052604090205490915060ff161561076c576040517f54b0ccbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061077e604084016020850161295d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156107ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080e9190612fd2565b9050610847333060408601803590610829906020890161295d565b73ffffffffffffffffffffffffffffffffffffffff169291906119fe565b60008161085a604086016020870161295d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190612fd2565b6108f4919061301a565b90508360400135811015610934576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fdcef777a456015e43fb48986c15368416c3103dcf3ec68d9ae8c3111006ff69c9061099d9085815260200190565b60405180910390a150505050565b6109b3610bbb565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610a1660005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610a68602082018261295d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610acc576040517f25602e6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ada61035d83612ee9565b60008181526005602052604090205490915060ff16610b25576040517f462b743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b49610b35602084018461295d565b60408401803590610408906020870161295d565b6000818152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f83ac8dd1b61f3fb0ce7944414f284fc0c798d63f009df7b90dbaf29845280c0790610baf9083815260200190565b60405180910390a15050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104a4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161050d565b60008082608001515167ffffffffffffffff811115610c2f57610c2f612c98565b604051908082528060200260200182016040528015610c58578160200160208202803683370190505b50905060005b836080015151811015610cb657610c9184608001518281518110610c8457610c8461302d565b6020026020010151611a4a565b828281518110610ca357610ca361302d565b6020908102919091010152600101610c5e565b50604080517f53696e676c65436861696e4c696d69744f72646572280000000000000000000060208201527f6164647265737320757365722c0000000000000000000000000000000000000060368201527f6164647265737320746f6b656e496e2c0000000000000000000000000000000060438201527f75696e7432353620616d6f756e74496e2c00000000000000000000000000000060538201527f5472616e7366657244617461207265717565737465644f75747075742c00000060648201527f5472616e73666572446174615b5d2065787472615472616e73666572732c000060818201527f627974657320656e636f64656445787465726e616c43616c6c446174612c0000609f8201527f75696e74333220646561646c696e652c0000000000000000000000000000000060bd8201527f75696e74323536206e6f6e63652900000000000000000000000000000000000060cd820152815160bb81830301815261013b8201909252603b60db8201818152916137d79060fb0139604051602001610e4692919061305c565b60405160208183030381529060405280519060200120836000015184602001518560400151610e788760600151611a4a565b85604051602001610e89919061308b565b604051602081830303815290604052805190602001208860a00151805190602001208960c001518a60e00151604051602001610f269998979695949392919098895273ffffffffffffffffffffffffffffffffffffffff97881660208a01529590961660408801526060870193909352608086019190915260a085015260c084015263ffffffff9190911660e08301526101008201526101200190565b60405160208183030381529060405280519060200120915050919050565b60408401351580610f7a57506000610f6260a086016080870161295d565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fb1576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610fc461012086016101008701612fb7565b63ffffffff161080610fea575042610fe260e0850160c08601612fb7565b63ffffffff16105b15611021576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361102f602085018561295d565b73ffffffffffffffffffffffffffffffffffffffff16146110aa576127106110596103e8826130c1565b6110679060408601356130d4565b61107191906130eb565b8510156110aa576040517f95b2fb6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82604001358510156110e8576040517f9463b69700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82602001358614611125576040517f868a64de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061117861113c61113787611b0a565b611bfc565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c4a92505050565b509092509050600081600381111561119257611192613126565b1415806111b3575073ffffffffffffffffffffffffffffffffffffffff8216155b806111d9575060025473ffffffffffffffffffffffffffffffffffffffff838116911614155b15611210576040517f070f548200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261129b91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c97565b505050565b8060006112b3604087016020880161295d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291909116906370a0823190602401602060405180830381865afa158015611321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113459190612fd2565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663137c29fe61140e61138f89612ee9565b6040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a08101825260208084015173ffffffffffffffffffffffffffffffffffffffff1660608301908152848401516080840152825260e08401519082015260c09092015163ffffffff169082015290565b61145a8561141b8b612ee9565b60408051808201825260008082526020918201528151808301835273ffffffffffffffffffffffffffffffffffffffff90941684529101519082015290565b61146760208b018b61295d565b6040517f53696e676c65436861696e4c696d69744f72646572280000000000000000000060208201527f6164647265737320757365722c0000000000000000000000000000000000000060368201527f6164647265737320746f6b656e496e2c0000000000000000000000000000000060438201527f75696e7432353620616d6f756e74496e2c00000000000000000000000000000060538201527f5472616e7366657244617461207265717565737465644f75747075742c00000060648201527f5472616e73666572446174615b5d2065787472615472616e73666572732c000060818201527f627974657320656e636f64656445787465726e616c43616c6c446174612c0000609f8201527f75696e74333220646561646c696e652c0000000000000000000000000000000060bd8201527f75696e74323536206e6f6e63652900000000000000000000000000000000000060cd8201528c9060db01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e8083529091906137a960208301396040518060600160405280603b81526020016137d7603b913960405160200161163293929190613155565b6040516020818303038152906040528b8b6040518863ffffffff1660e01b815260040161166597969594939291906131c4565b600060405180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506000818760200160208101906116ad919061295d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015291909116906370a0823190602401602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f9190612fd2565b611749919061301a565b90508660400135811015611210576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060405180606001604052808860600160000160208101906117ad919061295d565b73ffffffffffffffffffffffffffffffffffffffff1681526020016117d860a08a0160808b0161295d565b73ffffffffffffffffffffffffffffffffffffffff16815260200189815250905061196260405180610100016040528089602001602081019061181b919061295d565b73ffffffffffffffffffffffffffffffffffffffff168152602001896040013581526020018381526020018860600180360381019061185a91906132c1565b815260200161186c60c08b018b6132dd565b808060200260200160405190810160405280939291908181526020016000905b828210156118b8576118a9606083028601368190038101906132c1565b8152602001906001019061188c565b505050505081526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161192760e08b018b613344565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250611d3b565b98975050505050505050565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561051f81611fc0565b60606119cc7f00000000000000000000000000000000000000000000000000000000000000006003612035565b905090565b60606119cc7f00000000000000000000000000000000000000000000000000000000000000006004612035565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611a449186918216906323b872dd90608401611254565b50505050565b60006040518060600160405280603b81526020016137d7603b9139604051602001611a7591906133a9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120855186830151878501519386019290925273ffffffffffffffffffffffffffffffffffffffff90811693850193909352919091166060830152608082015260a0015b604051602081830303815290604052805190602001209050919050565b60006040518060600160405280603b81526020016137d7603b9139604051602001611b3591906133c5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209182012090611b789084018461295d565b60208401356040850135611b9c611b97368890038801606089016132c1565b611a4a565b611bac60e0880160c08901612fb7565b60408051602081019790975273ffffffffffffffffffffffffffffffffffffffff909516948601949094526060850192909252608084015260a083015263ffffffff1660c082015260e001611aed565b6000611c44611c096120e0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b60008060008351604103611c845760208401516040850151606086015160001a611c7688828585612218565b955095509550505050611c90565b50508151600091506002905b9250925092565b600080602060008451602086016000885af180611cba576040513d6000823e3d81fd5b50506000513d91508115611cd2578060011415611cec565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611a44576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161050d565b60e0810151516080820151516000911515908290611d5a9060026130c1565b67ffffffffffffffff811115611d7257611d72612c98565b604051908082528060200260200182016040528015611ddb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611d905790505b5090506000611e7681604051806060016040528088604001516000015173ffffffffffffffffffffffffffffffffffffffff16815260200186611e2657886040015160200151611e48565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff1681526040808a01510151602090910152849190612312565b9050611e91818660600151846123129092919063ffffffff16565b905060005b856080015151811015611edf57611ed58287608001518381518110611ebd57611ebd61302d565b6020026020010151856123129092919063ffffffff16565b9150600101611e96565b508082526000611eee83612492565b60a08701518751602089015160c08a01516040517f3071d61d00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff90931693633071d61d93611f58939291899190600401613514565b600060405180830381600087803b158015611f7257600080fd5b505af1158015611f86573d6000803e3d6000fd5b50505050611f9d818461255890919063ffffffff16565b94508315611fb757611fb786604001518760e001516126fc565b50505050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff831461204f57612048836127db565b9050611c44565b81805461205b906135cf565b80601f0160208091040260200160405190810160405280929190818152602001828054612087906135cf565b80156120d45780601f106120a9576101008083540402835291602001916120d4565b820191906000526020600020905b8154815290600101906020018083116120b757829003601f168201915b50505050509050611c44565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561214657507f000000000000000000000000000000000000000000000000000000000000000046145b1561217057507f000000000000000000000000000000000000000000000000000000000000000090565b6119cc604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156122535750600091506003905082612308565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156122a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166122fe57506000925060019150829050612308565b9250600091508190505b9450945094915050565b6000816040015160000361232757508161248b565b8351831115612362576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8381101561245e57826000015173ffffffffffffffffffffffffffffffffffffffff1685828151811061239a5761239a61302d565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161480156124155750826020015173ffffffffffffffffffffffffffffffffffffffff168582815181106123f1576123f161302d565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff16145b156124565782604001518582815181106124315761243161302d565b602002602001015160400181815161244991906130c1565b90525083915061248b9050565b600101612365565b50818484815181106124725761247261302d565b60209081029190910101526124888360016130c1565b90505b9392505050565b60606000825167ffffffffffffffff8111156124b0576124b0612c98565b6040519080825280602002602001820160405280156124d9578160200160208202803683370190505b50905060005b83518110156125515761252c8482815181106124fd576124fd61302d565b60200260200101516000015185838151811061251b5761251b61302d565b60200260200101516020015161281a565b82828151811061253e5761253e61302d565b60209081029190910101526001016124df565b5092915050565b60008251825114612595576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000805b83518110156125515760006125d88583815181106125ba576125ba61302d565b60200260200101516000015186848151811061251b5761251b61302d565b905060008483815181106125ee576125ee61302d565b602002602001015182612601919061301a565b90508260000361260f578093505b8583815181106126215761262161302d565b6020026020010151604001518110156126f2578583815181106126465761264661302d565b6020026020010151600001518684815181106126645761266461302d565b6020026020010151602001518785815181106126825761268261302d565b602090810291909101015160409081015190517f1f00e79900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064810182905260840161050d565b505060010161259a565b60008060008084806020019051810190612716919061362b565b895160208b01516040517f9aca0642000000000000000000000000000000000000000000000000000000008152959950939750919550935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692639aca0642926127a1929189908990899089906004016136db565b600060405180830381600087803b1580156127bb57600080fd5b505af11580156127cf573d6000803e3d6000fd5b50505050505050505050565b606060006127e8836128ea565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600073ffffffffffffffffffffffffffffffffffffffff8316156128cd576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156128a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c89190612fd2565b61248b565b5073ffffffffffffffffffffffffffffffffffffffff1631919050565b600060ff8216601f811115611c44576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461051f57600080fd5b80356129588161292b565b919050565b60006020828403121561296f57600080fd5b813561248b8161292b565b6000610140828403121561298d57600080fd5b50919050565b60008083601f8401126129a557600080fd5b50813567ffffffffffffffff8111156129bd57600080fd5b6020830191508360208285010111156129d557600080fd5b9250929050565b600060e0828403121561298d57600080fd5b8035801515811461295857600080fd5b60008060008060008060008060008060006101c08c8e031215612a2057600080fd5b8b359a5060208c013567ffffffffffffffff811115612a3e57600080fd5b612a4a8e828f0161297a565b9a505060408c013567ffffffffffffffff811115612a6757600080fd5b612a738e828f01612993565b909a509850612a8790508d60608e016129dc565b96506101408c013567ffffffffffffffff811115612aa457600080fd5b612ab08e828f01612993565b9097509550612ac490506101608d0161294d565b93506101808c013567ffffffffffffffff811115612ae157600080fd5b612aed8e828f01612993565b9094509250612b0190506101a08d016129ee565b90509295989b509295989b9093969950565b60005b83811015612b2e578181015183820152602001612b16565b50506000910152565b60008151808452612b4f816020860160208601612b13565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201526000612bbc60e0830189612b37565b8281036040840152612bce8189612b37565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015612c31578351835260209384019390920191600101612c13565b50909b9a5050505050505050505050565b600060208284031215612c5457600080fd5b5035919050565b600060208284031215612c6d57600080fd5b813567ffffffffffffffff811115612c8457600080fd5b612c908482850161297a565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715612ceb57612ceb612c98565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d3857612d38612c98565b604052919050565b600060608284031215612d5257600080fd5b6040516060810167ffffffffffffffff81118282101715612d7557612d75612c98565b6040529050808235612d868161292b565b81526020830135612d968161292b565b6020820152604092830135920191909152919050565b600082601f830112612dbd57600080fd5b813567ffffffffffffffff811115612dd757612dd7612c98565b612de660208260051b01612cf1565b80828252602082019150602060608402860101925085831115612e0857600080fd5b602085015b83811015612e2f57612e1f8782612d40565b8352602090920191606001612e0d565b5095945050505050565b600067ffffffffffffffff821115612e5357612e53612c98565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612e9057600080fd5b8135612ea3612e9e82612e39565b612cf1565b818152846020838601011115612eb857600080fd5b816020850160208301376000918101602001919091529392505050565b803563ffffffff8116811461295857600080fd5b60006101408236031215612efc57600080fd5b612f04612cc7565b612f0d8361294d565b8152612f1b6020840161294d565b602082015260408381013590820152612f373660608501612d40565b606082015260c083013567ffffffffffffffff811115612f5657600080fd5b612f6236828601612dac565b60808301525060e083013567ffffffffffffffff811115612f8257600080fd5b612f8e36828601612e7f565b60a083015250612fa16101008401612ed5565b60c0820152610120929092013560e08301525090565b600060208284031215612fc957600080fd5b61248b82612ed5565b600060208284031215612fe457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611c4457611c44612feb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000835161306e818460208801612b13565b835190830190613082818360208801612b13565b01949350505050565b8151600090829060208501835b828110156130b6578151845260209384019390910190600101613098565b509195945050505050565b80820180821115611c4457611c44612feb565b8082028115828204841417611c4457611c44612feb565b600082613121577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f53696e676c65436861696e4c696d69744f72646572207769746e65737329000081526000845161318d81601e850160208901612b13565b8451908301906131a481601e840160208901612b13565b84519101601e01906131ba818360208801612b13565b0195945050505050565b6131ef818951805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208801516040820152604088015160608201526132306080820188805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff861660c08201528460e0820152610140610100820152600061326b610140830186612b37565b8281036101208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011682010191505098975050505050505050565b6000606082840312156132d357600080fd5b61248b8383612d40565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261331257600080fd5b83018035915067ffffffffffffffff82111561332d57600080fd5b60200191506060810236038213156129d557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261337957600080fd5b83018035915067ffffffffffffffff82111561339457600080fd5b6020019150368190038213156129d557600080fd5b600082516133bb818460208701612b13565b9190910192915050565b7f53696e676c65436861696e4c696d6974536f6c7665725065726d697373696f6e81527f280000000000000000000000000000000000000000000000000000000000000060208201527f6164647265737320736f6c7665722c000000000000000000000000000000000060218201527f62797465733332206f72646572486173682c000000000000000000000000000060308201527f75696e7432353620616d6f756e744f75744d696e2c000000000000000000000060428201527f5472616e73666572446174612070726f746f636f6c4665655472616e7366657260578201527f2c0000000000000000000000000000000000000000000000000000000000000060778201527f75696e743332207065726d697373696f6e446561646c696e6529000000000000607882015260008251613507816092850160208701612b13565b9190910160920192915050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683528560208401526080604084015280855180835260a08501915060208701925060005b818110156135bb57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff60208201511660208501526040810151604085015250606083019250602084019350600181019050613555565b505083810360608501526119628186612b37565b600181811c908216806135e357607f821691505b60208210810361298d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80516002811061295857600080fd5b6000806000806080858703121561364157600080fd5b845161364c8161292b565b602086015190945061365d8161292b565b604086015190935067ffffffffffffffff81111561367a57600080fd5b8501601f8101871361368b57600080fd5b8051613699612e9e82612e39565b8181528860208385010111156136ae57600080fd5b6136bf826020830160208601612b13565b93506136d09150506060860161361c565b905092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015273ffffffffffffffffffffffffffffffffffffffff8516604082015273ffffffffffffffffffffffffffffffffffffffff8416606082015260c06080820152600061375e60c0830185612b37565b905060028310613797577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260a083015297965050505050505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74295472616e7366657244617461286164647265737320746f6b656e2c616464726573732072656365697665722c75696e7432353620616d6f756e7429a2646970667358221220a44fe2143fe2534b60068f92c2a534c9a32b55d8f3c9ffb1ae6b5a5b6044f55a64736f6c634300081c0033000000000000000000000000d8655d1154a74748ac48f673264efba5c369f4bd000000000000000000000000c89ce8ce46946432afc55b867af58cb211adcd9a000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000878ca4122e961fc7c1098456aabf0bcf7138d2de