0 txs
11 calls
constructor
No constructor.
functions
aggregators
viewfunction aggregators(address) view returns (bool)
feeReceiver
viewfunction feeReceiver() view returns (address)
operators
viewfunction operators(address) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
permit2
viewfunction permit2() view returns (address)
permit2DomainSeperator
viewfunction permit2DomainSeperator() view returns (bytes32)
permit2NextNonce
viewfunction permit2NextNonce(address owner) view returns (uint256 nonce)
permit2NextNonceAfter
viewfunction permit2NextNonceAfter(address owner, uint256 start) view returns (uint256 nonce)
addAggregator
nonpayablefunction addAggregator(address[] _aggregators)
batchSwap
payablefunction batchSwap(tuple[] swaps) payable
delAggregator
nonpayablefunction delAggregator(address _aggregator)
initialize
nonpayablefunction initialize(address _reeReceiver)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeReceiver
nonpayablefunction setFeeReceiver(address _feeReceiver)
setPermit2
nonpayablefunction setPermit2(address _permit2)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateOperator
nonpayablefunction updateOperator(address _operator, bool on)
withdraw
nonpayablefunction withdraw(address token, address receiver, uint256 amount)
events
AddAggregator
event AddAggregator(address aggregator)
DelAggregator
event DelAggregator(address aggregator)
OSwap
event OSwap(address indexed from, bytes32 indexed orderHash, address swapAddress, uint256 returnAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetFeeReceiver
event SetFeeReceiver(address feeReceiver)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50614cc7806100206000396000f3fe60806040526004361061012e5760003560e01c80638456cb59116100ab578063c4d66de81161006f578063c4d66de8146103a4578063d9caed12146103cd578063dfb12936146103f6578063efdcd9741461041f578063f2fde38b14610448578063ff3a920f1461047157610135565b80638456cb59146102de5780638da5cb5b146102f5578063ac320a9014610320578063b3f006741461033c578063be698cfc1461036757610135565b80633f4ba83a116100f25780633f4ba83a146102315780635c975abb146102485780636d44a3b214610273578063715018a61461029c578063844fb31c146102b357610135565b8063101ec30a1461013a578063112cdab91461016357806312261ee7146101a057806313e7c9d8146101cb57806321c3bc4c1461020857610135565b3661013557005b600080fd5b34801561014657600080fd5b50610161600480360381019061015c91906133d7565b6104ae565b005b34801561016f57600080fd5b5061018a600480360381019061018591906133d7565b61056e565b604051610197919061341f565b60405180910390f35b3480156101ac57600080fd5b506101b561058e565b6040516101c29190613449565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906133d7565b6105b4565b6040516101ff919061341f565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906134c9565b6105d4565b005b34801561023d57600080fd5b506102466107ea565b005b34801561025457600080fd5b5061025d610870565b60405161026a919061341f565b60405180910390f35b34801561027f57600080fd5b5061029a60048036038101906102959190613542565b610887565b005b3480156102a857600080fd5b506102b161095e565b005b3480156102bf57600080fd5b506102c86109e6565b6040516102d5919061359b565b60405180910390f35b3480156102ea57600080fd5b506102f3610a7e565b005b34801561030157600080fd5b5061030a610b04565b6040516103179190613449565b60405180910390f35b61033a6004803603810190610335919061360c565b610b2e565b005b34801561034857600080fd5b50610351610c55565b60405161035e919061367a565b60405180910390f35b34801561037357600080fd5b5061038e600480360381019061038991906136cb565b610c7b565b60405161039b919061371a565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613761565b610cd3565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137cc565b610dd1565b005b34801561040257600080fd5b5061041d600480360381019061041891906133d7565b610e7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613761565b610f8b565b005b34801561045457600080fd5b5061046f600480360381019061046a91906133d7565b611082565b005b34801561047d57600080fd5b50610498600480360381019061049391906133d7565b61117a565b6040516104a5919061371a565b60405180910390f35b6104b661118f565b73ffffffffffffffffffffffffffffffffffffffff166104d4610b04565b73ffffffffffffffffffffffffffffffffffffffff161461052a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105219061387c565b60405180910390fd5b80609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60996020528060005260406000206000915054906101000a900460ff1681565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609a6020528060005260406000206000915054906101000a900460ff1681565b6105dc61118f565b73ffffffffffffffffffffffffffffffffffffffff166105fa610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610650576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106479061387c565b60405180910390fd5b60005b828290508110156107e557600073ffffffffffffffffffffffffffffffffffffffff168383838181106106895761068861389c565b5b905060200201602081019061069e91906133d7565b73ffffffffffffffffffffffffffffffffffffffff1614156106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec90613917565b60405180910390fd5b60016099600085858581811061070e5761070d61389c565b5b905060200201602081019061072391906133d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3c2e997dfcda81cee806d36ea9c069913d276e873b388b126482814ef56e97308383838181106107a8576107a761389c565b5b90506020020160208101906107bd91906133d7565b6040516107ca9190613449565b60405180910390a180806107dd90613966565b915050610653565b505050565b6107f261118f565b73ffffffffffffffffffffffffffffffffffffffff16610810610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d9061387c565b60405180910390fd5b61086e611197565b565b6000606560009054906101000a900460ff16905090565b61088f61118f565b73ffffffffffffffffffffffffffffffffffffffff166108ad610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa9061387c565b60405180910390fd5b80609a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61096661118f565b73ffffffffffffffffffffffffffffffffffffffff16610984610b04565b73ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d19061387c565b60405180910390fd5b6109e46000611239565b565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633644e5156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7991906139db565b905090565b610a8661118f565b73ffffffffffffffffffffffffffffffffffffffff16610aa4610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af19061387c565b60405180910390fd5b610b026112ff565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b609a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb190613a7a565b60405180910390fd5b610bc2610870565b15610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990613ae6565b60405180910390fd5b60005b82829050811015610c5057610c3d838383818110610c2657610c2561389c565b5b9050602002810190610c389190613b15565b6113a2565b8080610c4890613966565b915050610c05565b505050565b609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600883901c9050600083905060ff80168160ff161415610caf578180610ca390613b69565b92505060009050610cbe565b8080610cba90613bbe565b9150505b610cc9858383611b62565b9250505092915050565b600060019054906101000a900460ff16610cfb5760008054906101000a900460ff1615610d04565b610d03611c9f565b5b610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90613c5a565b60405180910390fd5b60008060019054906101000a900460ff161590508015610d93576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610d9b611cb0565b610da3611d11565b610dac82610f8b565b8015610dcd5760008060016101000a81548160ff0219169083151502179055505b5050565b610dd961118f565b73ffffffffffffffffffffffffffffffffffffffff16610df7610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e449061387c565b60405180910390fd5b610e7882828573ffffffffffffffffffffffffffffffffffffffff16611d729092919063ffffffff16565b505050565b610e8561118f565b73ffffffffffffffffffffffffffffffffffffffff16610ea3610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef09061387c565b60405180910390fd5b6000609960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff11d18001d3397a2024bf40def3a2374cd366b56ec54eba9a0f59d1ca85c27b381604051610f809190613449565b60405180910390a150565b610f9361118f565b73ffffffffffffffffffffffffffffffffffffffff16610fb1610b04565b73ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe9061387c565b60405180910390fd5b80609860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f816040516110779190613cd9565b60405180910390a150565b61108a61118f565b73ffffffffffffffffffffffffffffffffffffffff166110a8610b04565b73ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f59061387c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590613d66565b60405180910390fd5b61117781611239565b50565b600061118882600080611b62565b9050919050565b600033905090565b61119f610870565b6111de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d590613dd2565b60405180910390fd5b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61122261118f565b60405161122f9190613449565b60405180910390a1565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611307610870565b15611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613ae6565b60405180910390fd5b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861138b61118f565b6040516113989190613449565b60405180910390a1565b60028180602001906113b49190613df2565b90501480156113d4575060038180604001906113d09190613e55565b9050145b611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613f04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1681606001602081019061143e91906133d7565b73ffffffffffffffffffffffffffffffffffffffff161415611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90613f70565b60405180910390fd5b609960008260600160208101906114ac91906133d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613fdc565b60405180910390fd5b60008180602001906115459190613df2565b60008181106115575761155661389c565b5b905060200201602081019061156c9190613ffc565b905060008280602001906115809190613df2565b60018181106115925761159161389c565b5b90506020020160208101906115a79190613ffc565b90506115d58360000160208101906115bf91906133d7565b83858060c001906115d09190614029565b611e6d565b611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b906140d8565b60405180910390fd5b8280604001906116249190613e55565b60008181106116365761163561389c565b5b90506020020135611666308473ffffffffffffffffffffffffffffffffffffffff16611e8590919063ffffffff16565b10156116a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169e90614144565b60405180910390fd5b60006116d2308373ffffffffffffffffffffffffffffffffffffffff16611e8590919063ffffffff16565b90506117398460600160208101906116ea91906133d7565b8580604001906116fa9190613e55565b600081811061170c5761170b61389c565b5b905060200201358573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b600084606001602081019061174e91906133d7565b73ffffffffffffffffffffffffffffffffffffffff16348680608001906117759190614029565b6040516117839291906141a3565b60006040518083038185875af1925050503d80600081146117c0576040519150601f19603f3d011682016040523d82523d6000602084013e6117c5565b606091505b505090506000816118e957611845609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168780604001906118069190613e55565b60018181106118185761181761389c565b5b905060200201358773ffffffffffffffffffffffffffffffffffffffff166120ab9092919063ffffffff16565b6118e486600001602081019061185b91906133d7565b6118be88806040019061186e9190613e55565b60018181106118805761187f61389c565b5b905060200201358980604001906118979190613e55565b60008181106118a9576118a861389c565b5b9050602002013561213190919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff166120ab9092919063ffffffff16565b611ae1565b61192483611916308773ffffffffffffffffffffffffffffffffffffffff16611e8590919063ffffffff16565b61213190919063ffffffff16565b905060008111611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090614208565b60405180910390fd5b60018660e0013514156119f0576119eb609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168780604001906119ac9190613e55565b60018181106119be576119bd61389c565b5b905060200201358773ffffffffffffffffffffffffffffffffffffffff16611d729092919063ffffffff16565b611aa3565b611a65609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878060400190611a269190613e55565b6002818110611a3857611a3761389c565b5b905060200201358673ffffffffffffffffffffffffffffffffffffffff16611d729092919063ffffffff16565b611aa0868060400190611a789190613e55565b6002818110611a8a57611a8961389c565b5b905060200201358261213190919063ffffffff16565b90505b611ae0866000016020810190611ab991906133d7565b828673ffffffffffffffffffffffffffffffffffffffff166120ab9092919063ffffffff16565b5b8560a00135866000016020810190611af991906133d7565b73ffffffffffffffffffffffffffffffffffffffff167fdb1dbe5521d653ceda13f62b24a9193dad6eaf697b4db14cabd9d7ff4a641b2e886060016020810190611b4391906133d7565b84604051611b52929190614228565b60405180910390a3505050505050565b60005b600115611c97576000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fe02b4486866040518363ffffffff1660e01b8152600401611bcb929190614282565b602060405180830381865afa158015611be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0c91906142c0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811415611c4c5783611c4090613b69565b93506000925050611b65565b60008360ff1614611c61578260ff1681901c90505b5b60018082161415611c8557600181901c905082611c7e90613bbe565b9250611c62565b611c8f8484612147565b915050611c98565b5b9392505050565b6000611caa3061217f565b15905090565b600060019054906101000a900460ff16611cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf69061435f565b60405180910390fd5b611d07612192565b611d0f6121e3565b565b600060019054906101000a900460ff16611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d579061435f565b60405180910390fd5b611d68612192565b611d70612244565b565b6000811115611e6857611d84836122b0565b15611e3b5760008273ffffffffffffffffffffffffffffffffffffffff1682604051611daf906143a5565b60006040518083038185875af1925050503d8060008114611dec576040519150601f19603f3d011682016040523d82523d6000602084013e611df1565b606091505b5050905080611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c90614406565b60405180910390fd5b50611e67565b611e6682828573ffffffffffffffffffffffffffffffffffffffff166120ab9092919063ffffffff16565b5b5b505050565b6000611e7b8484848861236b565b9050949350505050565b6000611e90836122b0565b15611eb4578173ffffffffffffffffffffffffffffffffffffffff16319050611f31565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401611eed9190613449565b602060405180830381865afa158015611f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2e91906142c0565b90505b92915050565b611f40836122b0565b15611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790614472565b60405180910390fd5b6000811415611fba57611fb58260008573ffffffffffffffffffffffffffffffffffffffff166124da9092919063ffffffff16565b6120a6565b60008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611ff7929190614492565b602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203891906142c0565b9050818110156120a4576000811115612078576120778360008673ffffffffffffffffffffffffffffffffffffffff166124da9092919063ffffffff16565b5b6120a383838673ffffffffffffffffffffffffffffffffffffffff166124da9092919063ffffffff16565b5b505b505050565b61212c8363a9059cbb60e01b84846040516024016120ca929190614228565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612629565b505050565b6000818361213f91906144bb565b905092915050565b60006008837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16901b90508160ff168117905092915050565b600080823b905060008111915050919050565b600060019054906101000a900460ff166121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d89061435f565b60405180910390fd5b565b600060019054906101000a900460ff16612232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122299061435f565b60405180910390fd5b61224261223d61118f565b611239565b565b600060019054906101000a900460ff16612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a9061435f565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061232d575061101073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806123645750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000808484905011156124cd5760e084849050148061238e575061010084849050145b15612430576000806123a18787876126f1565b9150915081612425576123e9816040518060400160405280600f81526020017f5065726d6974206661696c65643a200000000000000000000000000000000000815250612851565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241c9190614577565b60405180910390fd5b6000925050506124d2565b60008061243e868686612d4f565b91509150816124c257612486816040518060400160405280601081526020017f5065726d697432206661696c65643a2000000000000000000000000000000000815250612851565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b99190614577565b60405180910390fd5b6001925050506124d2565b600090505b949350505050565b6000811480612564575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401612521929190614492565b602060405180830381865afa15801561253e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256291906142c0565b145b6125a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259a9061460b565b60405180910390fd5b6126248363095ea7b360e01b84846040516024016125c2929190614228565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612629565b505050565b600061268b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e9c9092919063ffffffff16565b90506000815114806126ad5750808060200190518101906126ac9190614640565b5b6126ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e3906146df565b60405180910390fd5b505050565b6000606060e08484905014156127a0578473ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b85856040516020016127349392919061474c565b60405160208183030381529060405260405161275091906147b2565b6000604051808303816000865af19150503d806000811461278d576040519150601f19603f3d011682016040523d82523d6000602084013e612792565b606091505b508092508193505050612849565b610100848490501415612848578473ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c60e01b85856040516020016127e09392919061474c565b6040516020818303038152906040526040516127fc91906147b2565b6000604051808303816000865af19150503d8060008114612839576040519150601f19603f3d011682016040523d82523d6000602084013e61283e565b606091505b5080925081935050505b5b935093915050565b60606004835110612c30576000602084015190507f08c379a0afcc32b1a39302f7cb8073359698411ab5fd6e3edb2c02c0b5fba8aa7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480156128d457506044845110155b15612a93576000606060248601519150816024018601905080518260246128fb91906147c9565b61290591906147c9565b8651101561297b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e76616c69642072657665727420726561736f6e000000000000000000000081525060200191505060405180910390fd5b84816040516020018083805190602001908083835b602083106129b35780518252602082019150602081019050602083039250612990565b6001836020036101000a038019825116818451168082178552505050505050905001807f4572726f7228000000000000000000000000000000000000000000000000000081525060060182805190602001908083835b60208310612a2c5780518252602082019150602081019050602083039250612a09565b6001836020036101000a038019825116818451168082178552505050505050905001807f2900000000000000000000000000000000000000000000000000000000000000815250600101925050506040516020818303038152906040529350505050612d49565b7f4e487b71539e0164c9d29506cc725e49342bcac15e0927282bf30fedfe1c72687bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148015612b01575060248451145b15612c2e5760006024850151905083612b1982612eb4565b6040516020018083805190602001908083835b60208310612b4f5780518252602082019150602081019050602083039250612b2c565b6001836020036101000a038019825116818451168082178552505050505050905001807f50616e696328000000000000000000000000000000000000000000000000000081525060060182805190602001908083835b60208310612bc85780518252602082019150602081019050602083039250612ba5565b6001836020036101000a038019825116818451168082178552505050505050905001807f29000000000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405292505050612d49565b505b81612c3a84612ee5565b6040516020018083805190602001908083835b60208310612c705780518252602082019150602081019050602083039250612c4d565b6001836020036101000a038019825116818451168082178552505050505050905001807f556e6b6e6f776e2800000000000000000000000000000000000000000000000081525060080182805190602001908083835b60208310612ce95780518252602082019150602081019050602083039250612cc6565b6001836020036101000a038019825116818451168082178552505050505050905001807f29000000000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405290505b92915050565b6000606060008585810190612d649190614a49565b50925050508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dce90614b19565b60405180910390fd5b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330f28b7a60e01b8787604051602001612e2c9392919061474c565b604051602081830303815290604052604051612e4891906147b2565b6000604051808303816000865af19150503d8060008114612e85576040519150601f19603f3d011682016040523d82523d6000602084013e612e8a565b606091505b50809350819450505050935093915050565b6060612eab84846000856131af565b90509392505050565b6060612ede8260405160200180828152602001915050604051602081830303815290604052612ee5565b9050919050565b606060006f3031323334353637383961626364656660801b9050600060028451612f0f9190614b39565b6002612f1b91906147c9565b67ffffffffffffffff811115612f3457612f33614824565b5b6040519080825280601f01601f191660200182016040528015612f665781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612f9e57612f9d61389c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106130025761300161389c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b84518110156131a4578260048683815181106130535761305261389c565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff16601081106130995761309861389c565b5b1a60f81b8260028360026130ad9190614b39565b6130b791906147c9565b815181106130c8576130c761389c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f60f81b8683815181106131105761310f61389c565b5b602001015160f81c60f81b1660f81c60ff16601081106131335761313261389c565b5b1a60f81b8260038360026131479190614b39565b61315191906147c9565b815181106131625761316161389c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061319c90613966565b915050613034565b508092505050919050565b6060824710156131f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131eb90614c05565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161321d91906147b2565b60006040518083038185875af1925050503d806000811461325a576040519150601f19603f3d011682016040523d82523d6000602084013e61325f565b606091505b50915091506132708783838761327c565b92505050949350505050565b606083156132df576000835114156132d757613297856132f2565b6132d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132cd90614c71565b60405180910390fd5b5b8290506132ea565b6132e98383613315565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156133285781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335c9190614577565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133a482613379565b9050919050565b6133b481613399565b81146133bf57600080fd5b50565b6000813590506133d1816133ab565b92915050565b6000602082840312156133ed576133ec61336f565b5b60006133fb848285016133c2565b91505092915050565b60008115159050919050565b61341981613404565b82525050565b60006020820190506134346000830184613410565b92915050565b61344381613399565b82525050565b600060208201905061345e600083018461343a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261348957613488613464565b5b8235905067ffffffffffffffff8111156134a6576134a5613469565b5b6020830191508360208202830111156134c2576134c161346e565b5b9250929050565b600080602083850312156134e0576134df61336f565b5b600083013567ffffffffffffffff8111156134fe576134fd613374565b5b61350a85828601613473565b92509250509250929050565b61351f81613404565b811461352a57600080fd5b50565b60008135905061353c81613516565b92915050565b600080604083850312156135595761355861336f565b5b6000613567858286016133c2565b92505060206135788582860161352d565b9150509250929050565b6000819050919050565b61359581613582565b82525050565b60006020820190506135b0600083018461358c565b92915050565b60008083601f8401126135cc576135cb613464565b5b8235905067ffffffffffffffff8111156135e9576135e8613469565b5b6020830191508360208202830111156136055761360461346e565b5b9250929050565b600080602083850312156136235761362261336f565b5b600083013567ffffffffffffffff81111561364157613640613374565b5b61364d858286016135b6565b92509250509250929050565b600061366482613379565b9050919050565b61367481613659565b82525050565b600060208201905061368f600083018461366b565b92915050565b6000819050919050565b6136a881613695565b81146136b357600080fd5b50565b6000813590506136c58161369f565b92915050565b600080604083850312156136e2576136e161336f565b5b60006136f0858286016133c2565b9250506020613701858286016136b6565b9150509250929050565b61371481613695565b82525050565b600060208201905061372f600083018461370b565b92915050565b61373e81613659565b811461374957600080fd5b50565b60008135905061375b81613735565b92915050565b6000602082840312156137775761377661336f565b5b60006137858482850161374c565b91505092915050565b600061379982613399565b9050919050565b6137a98161378e565b81146137b457600080fd5b50565b6000813590506137c6816137a0565b92915050565b6000806000606084860312156137e5576137e461336f565b5b60006137f3868287016137b7565b93505060206138048682870161374c565b9250506040613815868287016136b6565b9150509250925092565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061386660208361381f565b915061387182613830565b602082019050919050565b6000602082019050818103600083015261389581613859565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f61676772656761746f72206973207a65726f2061646472657373000000000000600082015250565b6000613901601a8361381f565b915061390c826138cb565b602082019050919050565b60006020820190508181036000830152613930816138f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061397182613695565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139a4576139a3613937565b5b600182019050919050565b6139b881613582565b81146139c357600080fd5b50565b6000815190506139d5816139af565b92915050565b6000602082840312156139f1576139f061336f565b5b60006139ff848285016139c6565b91505092915050565b7f4f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b6000613a6460248361381f565b9150613a6f82613a08565b604082019050919050565b60006020820190508181036000830152613a9381613a57565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613ad060108361381f565b9150613adb82613a9a565b602082019050919050565b60006020820190508181036000830152613aff81613ac3565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600161010003833603038112613b3257613b31613b06565b5b80830191505092915050565b60007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b7482613b3e565b91507effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ba657613ba5613937565b5b600182019050919050565b600060ff82169050919050565b6000613bc982613bb1565b915060ff821415613bdd57613bdc613937565b5b600182019050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000613c44602e8361381f565b9150613c4f82613be8565b604082019050919050565b60006020820190508181036000830152613c7381613c37565b9050919050565b6000819050919050565b6000613c9f613c9a613c9584613379565b613c7a565b613379565b9050919050565b6000613cb182613c84565b9050919050565b6000613cc382613ca6565b9050919050565b613cd381613cb8565b82525050565b6000602082019050613cee6000830184613cca565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d5060268361381f565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613dbc60148361381f565b9150613dc782613d86565b602082019050919050565b60006020820190508181036000830152613deb81613daf565b9050919050565b60008083356001602003843603038112613e0f57613e0e613b06565b5b80840192508235915067ffffffffffffffff821115613e3157613e30613b0b565b5b602083019250602082023603831315613e4d57613e4c613b10565b5b509250929050565b60008083356001602003843603038112613e7257613e71613b06565b5b80840192508235915067ffffffffffffffff821115613e9457613e93613b0b565b5b602083019250602082023603831315613eb057613eaf613b10565b5b509250929050565b7f496e76616c696420616d6f756e7473206c656e67746800000000000000000000600082015250565b6000613eee60168361381f565b9150613ef982613eb8565b602082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b7f5377617041646472657373206973207a65726f20616464726573730000000000600082015250565b6000613f5a601b8361381f565b9150613f6582613f24565b602082019050919050565b60006020820190508181036000830152613f8981613f4d565b9050919050565b7f5377617041646472657373206973206e6f7420737570706f7274000000000000600082015250565b6000613fc6601a8361381f565b9150613fd182613f90565b602082019050919050565b60006020820190508181036000830152613ff581613fb9565b9050919050565b6000602082840312156140125761401161336f565b5b6000614020848285016137b7565b91505092915050565b6000808335600160200384360303811261404657614045613b06565b5b80840192508235915067ffffffffffffffff82111561406857614067613b0b565b5b60208301925060018202360383131561408457614083613b10565b5b509250929050565b7f5472616e73666572206973206661696c65640000000000000000000000000000600082015250565b60006140c260128361381f565b91506140cd8261408c565b602082019050919050565b600060208201905081810360008301526140f1816140b5565b9050919050565b7f5472616e73666572206973206661696c65642e00000000000000000000000000600082015250565b600061412e60138361381f565b9150614139826140f8565b602082019050919050565b6000602082019050818103600083015261415d81614121565b9050919050565b600081905092915050565b82818337600083830152505050565b600061418a8385614164565b935061419783858461416f565b82840190509392505050565b60006141b082848661417e565b91508190509392505050565b7f52657475726e20616d6f756e74206973206e6f74207a65726f00000000000000600082015250565b60006141f260198361381f565b91506141fd826141bc565b602082019050919050565b60006020820190508181036000830152614221816141e5565b9050919050565b600060408201905061423d600083018561343a565b61424a602083018461370b565b9392505050565b600061426c61426761426284613b3e565b613c7a565b613695565b9050919050565b61427c81614251565b82525050565b6000604082019050614297600083018561343a565b6142a46020830184614273565b9392505050565b6000815190506142ba8161369f565b92915050565b6000602082840312156142d6576142d561336f565b5b60006142e4848285016142ab565b91505092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000614349602b8361381f565b9150614354826142ed565b604082019050919050565b600060208201905081810360008301526143788161433c565b9050919050565b50565b600061438f600083614164565b915061439a8261437f565b600082019050919050565b60006143b082614382565b9150819050919050565b7f4661696c656420746f207472616e736665722045544800000000000000000000600082015250565b60006143f060168361381f565b91506143fb826143ba565b602082019050919050565b6000602082019050818103600083015261441f816143e3565b9050919050565b7f417070726f76652063616c6c6564206f6e204554480000000000000000000000600082015250565b600061445c60158361381f565b915061446782614426565b602082019050919050565b6000602082019050818103600083015261448b8161444f565b9050919050565b60006040820190506144a7600083018561343a565b6144b4602083018461343a565b9392505050565b60006144c682613695565b91506144d183613695565b9250828210156144e4576144e3613937565b5b828203905092915050565b600081519050919050565b60005b838110156145185780820151818401526020810190506144fd565b83811115614527576000848401525b50505050565b6000601f19601f8301169050919050565b6000614549826144ef565b614553818561381f565b93506145638185602086016144fa565b61456c8161452d565b840191505092915050565b60006020820190508181036000830152614591818461453e565b905092915050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b60006145f560368361381f565b915061460082614599565b604082019050919050565b60006020820190508181036000830152614624816145e8565b9050919050565b60008151905061463a81613516565b92915050565b6000602082840312156146565761465561336f565b5b60006146648482850161462b565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006146c9602a8361381f565b91506146d48261466d565b604082019050919050565b600060208201905081810360008301526146f8816146bc565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b614746614741826146ff565b61472b565b82525050565b60006147588286614735565b60048201915061476982848661417e565b9150819050949350505050565b600081519050919050565b600061478c82614776565b6147968185614164565b93506147a68185602086016144fa565b80840191505092915050565b60006147be8284614781565b915081905092915050565b60006147d482613695565b91506147df83613695565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561481457614813613937565b5b828201905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61485c8261452d565b810181811067ffffffffffffffff8211171561487b5761487a614824565b5b80604052505050565b600061488e613365565b905061489a8282614853565b919050565b6000604082840312156148b5576148b461481f565b5b6148bf6040614884565b905060006148cf848285016133c2565b60008301525060206148e3848285016136b6565b60208301525092915050565b6000608082840312156149055761490461481f565b5b61490f6060614884565b9050600061491f8482850161489f565b6000830152506040614933848285016136b6565b6020830152506060614947848285016136b6565b60408301525092915050565b6000604082840312156149695761496861481f565b5b6149736040614884565b90506000614983848285016133c2565b6000830152506020614997848285016136b6565b60208301525092915050565b600080fd5b600067ffffffffffffffff8211156149c3576149c2614824565b5b6149cc8261452d565b9050602081019050919050565b60006149ec6149e7846149a8565b614884565b905082815260208101848484011115614a0857614a076149a3565b5b614a1384828561416f565b509392505050565b600082601f830112614a3057614a2f613464565b5b8135614a408482602086016149d9565b91505092915050565b6000806000806101008587031215614a6457614a6361336f565b5b6000614a72878288016148ef565b9450506080614a8387828801614953565b93505060c0614a948782880161374c565b92505060e085013567ffffffffffffffff811115614ab557614ab4613374565b5b614ac187828801614a1b565b91505092959194509250565b7f5065726d6974322064656e696564000000000000000000000000000000000000600082015250565b6000614b03600e8361381f565b9150614b0e82614acd565b602082019050919050565b60006020820190508181036000830152614b3281614af6565b9050919050565b6000614b4482613695565b9150614b4f83613695565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b8857614b87613937565b5b828202905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000614bef60268361381f565b9150614bfa82614b93565b604082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000614c5b601d8361381f565b9150614c6682614c25565b602082019050919050565b60006020820190508181036000830152614c8a81614c4e565b905091905056fea2646970667358221220b9af85ec78ecb07859038b283647abc1472c20e8b15c50999adedfaeecab7e5d64736f6c634300080a0033