0 txs
0 calls
constructor
constructor(address factoryV1, address legacyFactoryV2, address factoryV2, address legacyRouterV2, address routerV2)
functions
findBestPathFromAmountIn
viewfunction findBestPathFromAmountIn(address[] route, uint128 amountIn) view returns (tuple quote)
findBestPathFromAmountOut
viewfunction findBestPathFromAmountOut(address[] route, uint128 amountOut) view returns (tuple quote)
getFactoryV1
viewfunction getFactoryV1() view returns (address factoryV1)
getFactoryV2
viewfunction getFactoryV2() view returns (address factoryV2)
getLegacyFactoryV2
viewfunction getLegacyFactoryV2() view returns (address legacyFactoryV2)
getLegacyRouterV2
viewfunction getLegacyRouterV2() view returns (address legacyRouterV2)
getRouterV2
viewfunction getRouterV2() view returns (address routerV2)
events
No events.
errors
JoeLibrary__AddressZero
error JoeLibrary__AddressZero()
JoeLibrary__IdenticalAddresses
error JoeLibrary__IdenticalAddresses()
JoeLibrary__InsufficientAmount
error JoeLibrary__InsufficientAmount()
JoeLibrary__InsufficientLiquidity
error JoeLibrary__InsufficientLiquidity()
LBQuoter_InvalidLength
error LBQuoter_InvalidLength()
SafeCast__Exceeds128Bits
error SafeCast__Exceeds128Bits()
Uint128x128Math__PowUnderflow
error Uint128x128Math__PowUnderflow(uint256 x, int256 y)
Uint256x256Math__MulDivOverflow
error Uint256x256Math__MulDivOverflow()
Uint256x256Math__MulShiftOverflow
error Uint256x256Math__MulShiftOverflow()
creation bytecode
0x6101206040523480156200001257600080fd5b5060405162003a5b38038062003a5b83398101604081905262000035916200007d565b6001600160a01b0394851660805292841660a05290831660c052908216610100521660e052620000ed565b80516001600160a01b03811681146200007857600080fd5b919050565b600080600080600060a086880312156200009657600080fd5b620000a18662000060565b9450620000b16020870162000060565b9350620000c16040870162000060565b9250620000d16060870162000060565b9150620000e16080870162000060565b90509295509295909350565b60805160a05160c05160e051610100516138c96200019260003960008181610109015281816110be01526124cc01526000818160e301528181610a920152611e2b01526000818161016801528181610e9101526122b1015260008181610142015281816108340152818161086501528181611bd70152611c1001526000818160840152818161046201528181610491015281816117c9015261180001526138c96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806333141d3e1161005b57806333141d3e14610107578063592142261461012d5780638fe4b3ad14610140578063ca56fc721461016657600080fd5b806307da8f57146100825780630f902a40146100c157806323229d6d146100e1575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100d46100cf3660046130d5565b61018c565b6040516100b89190613277565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b6100d461013b3660046130d5565b611500565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b7f00000000000000000000000000000000000000000000000000000000000000006100a4565b6101cc6040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b60028310156101ee57604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506102309150600190508561335a565b90508067ffffffffffffffff81111561024b5761024b613371565b604051908082528060200260200182016040528015610274578160200160208202803683370190505b5060208301528067ffffffffffffffff81111561029357610293613371565b6040519080825280602002602001820160405280156102bc578160200160208202803683370190505b5060408301528067ffffffffffffffff8111156102db576102db613371565b604051908082528060200260200182016040528015610304578160200160208202803683370190505b5060608301528067ffffffffffffffff81111561032357610323613371565b60405190808252806020026020018201604052801561034c578160200160208202803683370190505b5060c08301528367ffffffffffffffff81111561036b5761036b613371565b604051908082528060200260200182016040528015610394578160200160208202803683370190505b5060808301528367ffffffffffffffff8111156103b3576103b3613371565b6040519080825280602002602001820160405280156103dc578160200160208202803683370190505b508260a001819052508282608001516000815181106103fd576103fd613387565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015160008151811061043557610435613387565b60200260200101906001600160801b031690816001600160801b03168152505060005b818110156114f7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610832577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058787848181106104d0576104d0613387565b90506020020160208101906104e591906133b2565b88886104f28660016133d6565b81811061050157610501613387565b905060200201602081019061051691906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058591906133ee565b8360200151828151811061059b5761059b613387565b6001600160a01b03909216602092830291909101820152830151805160009190839081106105cb576105cb613387565b60200260200101516001600160a01b03161415801561061057506000836080015182815181106105fd576105fd613387565b60200260200101516001600160801b0316115b15610832576000806106968560200151848151811061063157610631613387565b602002602001015189898681811061064b5761064b613387565b905060200201602081019061066091906133b2565b8a8a61066d8860016133d6565b81811061067c5761067c613387565b905060200201602081019061069191906133b2565b612952565b915091506000821180156106aa5750600081115b1561082f576106e0856080015184815181106106c8576106c8613387565b60200260200101516001600160801b03168383612a20565b60808601516106f08560016133d6565b8151811061070057610700613387565b60200260200101906001600160801b031690816001600160801b0316815250506107698560a00151848151811061073957610739613387565b60200260200101516103e561074e919061340b565b6001600160801b0316610763846103e861343a565b83612ab7565b60a08601516107798560016133d6565b8151811061078957610789613387565b60200260200101906001600160801b031690816001600160801b031681525050660aa87bee5380008560c0015184815181106107c7576107c7613387565b60200260200101906001600160801b031690816001600160801b0316815250506000856060015184815181106107ff576107ff613387565b60200260200101906002811115610818576108186131cf565b9081600281111561082b5761082b6131cf565b9052505b50505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615610e8d5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d78888858181106108a4576108a4613387565b90506020020160208101906108b991906133b2565b89896108c68760016133d6565b8181106108d5576108d5613387565b90506020020160208101906108ea91906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610935573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261095d91908101906134f9565b905060008151118015610996575060008460800151838151811061098357610983613387565b60200260200101516001600160801b0316115b15610e8b5760005b8151811015610e89578181815181106109b9576109b9613387565b602002602001015160600151610e7757600088886109d88660016133d6565b8181106109e7576109e7613387565b90506020020160208101906109fc91906133b2565b6001600160a01b0316838381518110610a1757610a17613387565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8491906133ee565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632004b724848481518110610ad157610ad1613387565b60200260200101516020015188608001518781518110610af357610af3613387565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b0316602482015283151560448201526064016040805180830381865afa925050508015610b73575060408051601f3d908101601f19168201909252610b70918101906135dc565b60015b610b7c57610e75565b6080880151610b8c8760016133d6565b81518110610b9c57610b9c613387565b60200260200101516001600160801b0316821115610e725760808801518290610bc68860016133d6565b81518110610bd657610bd6613387565b60200260200101906001600160801b031690816001600160801b031681525050848481518110610c0857610c08613387565b60200260200101516020015188602001518781518110610c2a57610c2a613387565b60200260200101906001600160a01b031690816001600160a01b031681525050848481518110610c5c57610c5c613387565b60200260200101516000015161ffff1688604001518781518110610c8257610c82613387565b602002602001018181525050600188606001518781518110610ca657610ca6613387565b60200260200101906002811115610cbf57610cbf6131cf565b90816002811115610cd257610cd26131cf565b815250506000858581518110610cea57610cea613387565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d579190613600565b92505050610db5828a60a001518981518110610d7557610d75613387565b60200260200101516001600160801b0316610d90919061335a565b828b604001518a81518110610da757610da7613387565b602002602001015187612b1d565b60a08a0151610dc58960016133d6565b81518110610dd557610dd5613387565b60200260200101906001600160801b031690816001600160801b03168152505088608001518781518110610e0b57610e0b613387565b60200260200101516001600160801b031682670de0b6b3a7640000610e30919061343a565b610e3a9190613644565b8960c001518881518110610e5057610e50613387565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b80610e8181613666565b91505061099e565b505b505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636622e0d7888885818110610ed057610ed0613387565b9050602002016020810190610ee591906133b2565b8989610ef28760016133d6565b818110610f0157610f01613387565b9050602002016020810190610f1691906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015610f61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f899190810190613681565b905060008151118015610fc25750600084608001518381518110610faf57610faf613387565b60200260200101516001600160801b0316115b156114e45760005b81518110156114e257818181518110610fe557610fe5613387565b6020026020010151606001516114d057600088886110048660016133d6565b81811061101357611013613387565b905060200201602081019061102891906133b2565b6001600160a01b031683838151811061104357611043613387565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b091906133ee565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a0d376cf8484815181106110fd576110fd613387565b6020026020010151602001518860800151878151811061111f5761111f613387565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156111a0575060408051601f3d908101601f1916820190925261119d9181019061375f565b60015b6111a9576114ce565b6001600160801b0383161580156111f8575060808901516111cb8860016133d6565b815181106111db576111db613387565b60200260200101516001600160801b0316826001600160801b0316115b156114ca576080890151829061120f8960016133d6565b8151811061121f5761121f613387565b60200260200101906001600160801b031690816001600160801b03168152505085858151811061125157611251613387565b6020026020010151602001518960200151888151811061127357611273613387565b60200260200101906001600160a01b031690816001600160a01b0316815250508585815181106112a5576112a5613387565b60200260200101516000015161ffff16896040015188815181106112cb576112cb613387565b6020026020010181815250506002896060015188815181106112ef576112ef613387565b60200260200101906002811115611308576113086131cf565b9081600281111561131b5761131b6131cf565b81525050600086868151811061133357611333613387565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a091906137a1565b90506113fc828b60a001518a815181106113bc576113bc613387565b60200260200101516113ce91906137c6565b6001600160801b0316828c604001518b815181106113ee576113ee613387565b602002602001015188612b1d565b60a08b015161140c8a60016133d6565b8151811061141c5761141c613387565b60200260200101906001600160801b031690816001600160801b0316815250506114928a60800151898151811061145557611455613387565b60200260200101516001600160801b0316836001600160801b0316670de0b6b3a7640000611483919061343a565b61148d9190613644565b612b69565b8a60c0015189815181106114a8576114a8613387565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b806114da81613666565b915050610fca565b505b50806114ef81613666565b915050610458565b50509392505050565b6115406040518060e00160405280606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b600283101561156257604051632973c80b60e01b815260040160405180910390fd5b8383808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552506115a49150600190508561335a565b90508067ffffffffffffffff8111156115bf576115bf613371565b6040519080825280602002602001820160405280156115e8578160200160208202803683370190505b5060208301528067ffffffffffffffff81111561160757611607613371565b604051908082528060200260200182016040528015611630578160200160208202803683370190505b5060408301528067ffffffffffffffff81111561164f5761164f613371565b604051908082528060200260200182016040528015611678578160200160208202803683370190505b5060608301528067ffffffffffffffff81111561169757611697613371565b6040519080825280602002602001820160405280156116c0578160200160208202803683370190505b5060c08301528367ffffffffffffffff8111156116df576116df613371565b604051908082528060200260200182016040528015611708578160200160208202803683370190505b5060808301528367ffffffffffffffff81111561172757611727613371565b604051908082528060200260200182016040528015611750578160200160208202803683370190505b508260a00181905250828260800151828151811061177057611770613387565b60200260200101906001600160801b031690816001600160801b031681525050828260a0015182815181106117a7576117a7613387565b6001600160801b0390921660209283029190910190910152805b80156114f7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611bd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e6a43905878761183260018661335a565b81811061184157611841613387565b905060200201602081019061185691906133b2565b88888581811061186857611868613387565b905060200201602081019061187d91906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156118c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ec91906133ee565b60208401516118fc60018461335a565b8151811061190c5761190c613387565b6001600160a01b0390921660209283029190910182015283015160009061193460018461335a565b8151811061194457611944613387565b60200260200101516001600160a01b031614158015611989575060008360800151828151811061197657611976613387565b60200260200101516001600160801b0316115b15611bd557600080611a0385602001516001856119a6919061335a565b815181106119b6576119b6613387565b602002602001015189896001876119cd919061335a565b8181106119dc576119dc613387565b90506020020160208101906119f191906133b2565b8a8a8781811061067c5761067c613387565b91509150600082118015611a3c575084608001518381518110611a2857611a28613387565b60200260200101516001600160801b031681115b15611bd257611a7285608001518481518110611a5a57611a5a613387565b60200260200101516001600160801b03168383612b98565b6080860151611a8260018661335a565b81518110611a9257611a92613387565b60200260200101906001600160801b031690816001600160801b031681525050611afb8560a001518481518110611acb57611acb613387565b60200260200101516103e8611ae0919061340b565b6001600160801b0316611af5836103e561343a565b84612ab7565b611b069060016133d6565b60a0860151611b1660018661335a565b81518110611b2657611b26613387565b6001600160801b039092166020928302919091019091015260c0850151660aa87bee53800090611b5760018661335a565b81518110611b6757611b67613387565b6001600160801b03909216602092830291909101909101526060850151600090611b9260018661335a565b81518110611ba257611ba2613387565b60200260200101906002811115611bbb57611bbb6131cf565b90816002811115611bce57611bce6131cf565b9052505b50505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156122a55760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d78888611c4260018761335a565b818110611c5157611c51613387565b9050602002016020810190611c6691906133b2565b898986818110611c7857611c78613387565b9050602002016020810190611c8d91906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015611cd8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0091908101906134f9565b905060008151118015611d395750600084608001518381518110611d2657611d26613387565b60200260200101516001600160801b0316115b156122a35760005b81518110156122a157818181518110611d5c57611d5c613387565b60200260200101516060015161228f576000888885818110611d8057611d80613387565b9050602002016020810190611d9591906133b2565b6001600160a01b0316838381518110611db057611db0613387565b6020026020010151602001516001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1d91906133ee565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635bdd4b7c848481518110611e6a57611e6a613387565b60200260200101516020015188608001518781518110611e8c57611e8c613387565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b0316602482015283151560448201526064016040805180830381865afa925050508015611f0c575060408051601f3d908101601f19168201909252611f09918101906135dc565b60015b611f155761228d565b8115801590611f8d57506080880151611f2f60018861335a565b81518110611f3f57611f3f613387565b60200260200101516001600160801b0316821080611f8d57506080880151611f6860018861335a565b81518110611f7857611f78613387565b60200260200101516001600160801b03166000145b1561228a5760808801518290611fa460018961335a565b81518110611fb457611fb4613387565b60200260200101906001600160801b031690816001600160801b031681525050848481518110611fe657611fe6613387565b6020026020010151602001518860200151600188612004919061335a565b8151811061201457612014613387565b60200260200101906001600160a01b031690816001600160a01b03168152505084848151811061204657612046613387565b60200260200101516000015161ffff168860400151600188612068919061335a565b8151811061207857612078613387565b60209081029190910101526060880151600190612095828961335a565b815181106120a5576120a5613387565b602002602001019060028111156120be576120be6131cf565b908160028111156120d1576120d16131cf565b8152505060008585815181106120e9576120e9613387565b6020026020010151602001516001600160a01b0316631b05b83e6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121569190613600565b92505050816121b78a60a00151898151811061217457612174613387565b60200260200101516001600160801b0316838c6040015160018c612198919061335a565b815181106121a8576121a8613387565b60200260200101518815612b1d565b6121c191906137ee565b60a08a01516121d160018a61335a565b815181106121e1576121e1613387565b6001600160801b0390921660209283029190910190910152608089015161220960018961335a565b8151811061221957612219613387565b60200260200101516001600160801b031682670de0b6b3a764000061223e919061343a565b6122489190613644565b60c08a015161225860018a61335a565b8151811061226857612268613387565b60200260200101906001600160801b031690816001600160801b031681525050505b50505b505b8061229981613666565b915050611d41565b505b505b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636622e0d788886122e360018761335a565b8181106122f2576122f2613387565b905060200201602081019061230791906133b2565b89898681811061231957612319613387565b905060200201602081019061232e91906133b2565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401600060405180830381865afa158015612379573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123a19190810190613681565b9050600081511180156123da57506000846080015183815181106123c7576123c7613387565b60200260200101516001600160801b0316115b1561293f5760005b815181101561293d578181815181106123fd576123fd613387565b60200260200101516060015161292b57600088888581811061242157612421613387565b905060200201602081019061243691906133b2565b6001600160a01b031683838151811061245157612451613387565b6020026020010151602001516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be91906133ee565b6001600160a01b03161490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663964f987c84848151811061250b5761250b613387565b6020026020010151602001518860800151878151811061252d5761252d613387565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201528315156044820152606401606060405180830381865afa9250505080156125ae575060408051601f3d908101601f191682019092526125ab9181019061375f565b60015b6125b757612929565b6001600160801b0382161580156125d657506001600160801b03831615155b8015612654575060808901516125ed60018961335a565b815181106125fd576125fd613387565b60200260200101516001600160801b0316836001600160801b031610806126545750608089015161262f60018961335a565b8151811061263f5761263f613387565b60200260200101516001600160801b03166000145b15612925576080890151839061266b60018a61335a565b8151811061267b5761267b613387565b60200260200101906001600160801b031690816001600160801b0316815250508585815181106126ad576126ad613387565b60200260200101516020015189602001516001896126cb919061335a565b815181106126db576126db613387565b60200260200101906001600160a01b031690816001600160a01b03168152505085858151811061270d5761270d613387565b60200260200101516000015161ffff16896040015160018961272f919061335a565b8151811061273f5761273f613387565b6020908102919091010152606089015160029061275d60018a61335a565b8151811061276d5761276d613387565b60200260200101906002811115612786576127866131cf565b90816002811115612799576127996131cf565b8152505060008686815181106127b1576127b1613387565b6020026020010151602001516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281e91906137a1565b90508161287d8b60a001518a8151811061283a5761283a613387565b60200260200101516001600160801b0316838d6040015160018d61285e919061335a565b8151811061286e5761286e613387565b60200260200101518915612b1d565b61288791906137ee565b60a08b015161289760018b61335a565b815181106128a7576128a7613387565b6001600160801b039092166020928302919091019091015260808a01516128e3906128d360018b61335a565b8151811061145557611455613387565b60c08b01516128f360018b61335a565b8151811061290357612903613387565b60200260200101906001600160801b031690816001600160801b031681525050505b5050505b505b8061293581613666565b9150506123e2565b505b508061294a81613819565b9150506117c1565b60008060006129618585612c34565b509050600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156129a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c9919061384e565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150826001600160a01b0316876001600160a01b031614612a0e578082612a11565b81815b90999098509650505050505050565b600083612a405760405163b229ed3360e01b815260040160405180910390fd5b821580612a4b575081155b15612a69576040516398c59a2960e01b815260040160405180910390fd5b6000612a77856103e561343a565b90506000612a85848361343a565b9050600082612a96876103e861343a565b612aa091906133d6565b9050612aac8183613644565b979650505050505050565b600083612ad75760405163b229ed3360e01b815260040160405180910390fd5b821580612ae2575081155b15612b00576040516398c59a2960e01b815260040160405180910390fd5b82612b0b838661343a565b612b159190613644565b949350505050565b60008115612b4657612b3f61148d866080612b388888612cc0565b9190612cfb565b9050612b15565b612b6061148d6080612b588787612cc0565b889190612d68565b95945050505050565b806001600160801b0381168114612b9357604051632f45db3d60e21b815260040160405180910390fd5b919050565b600083612bb85760405163b229ed3360e01b815260040160405180910390fd5b821580612bc3575081155b15612be1576040516398c59a2960e01b815260040160405180910390fd5b6000612bed858561343a565b612bf9906103e861343a565b90506000612c07868561335a565b612c13906103e561343a565b9050612c1f8183613644565b612c2a9060016133d6565b9695505050505050565b600080826001600160a01b0316846001600160a01b03161415612c6a57604051630df4665760e21b815260040160405180910390fd5b826001600160a01b0316846001600160a01b031610612c8a578284612c8d565b83835b90925090506001600160a01b038216612cb9576040516304cda58760e51b815260040160405180910390fd5b9250929050565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901612b608282612d92565b6000806000612d0a8686612ff5565b9150915081600014612d20578360ff1682901c92505b80156114f757600160ff85161b8110612d4c57604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b8301925050509392505050565b600060ff831684811b9061ffff6101008290031686901c90612c2a9087906001901b868585613014565b6000808083612daa5750600160801b9150612fef9050565b50826000811215612dbc579015906000035b62100000811015612fac57600160801b9250846001600160801b03811115612de657911591600019045b6001821615612df75792830260801c925b800260801c6002821615612e0d5792830260801c925b800260801c6004821615612e235792830260801c925b800260801c6008821615612e395792830260801c925b800260801c6010821615612e4f5792830260801c925b800260801c6020821615612e655792830260801c925b800260801c6040821615612e7b5792830260801c925b8002608090811c90821615612e925792830260801c925b800260801c610100821615612ea95792830260801c925b800260801c610200821615612ec05792830260801c925b800260801c610400821615612ed75792830260801c925b800260801c610800821615612eee5792830260801c925b800260801c611000821615612f055792830260801c925b800260801c612000821615612f1c5792830260801c925b800260801c614000821615612f335792830260801c925b800260801c618000821615612f4a5792830260801c925b800260801c62010000821615612f625792830260801c925b800260801c62020000821615612f7a5792830260801c925b800260801c62040000821615612f925792830260801c925b800260801c62080000821615612faa5792830260801c925b505b82612fd857604051631dba598d60e11b8152600481018690526024810185905260440160405180910390fd5b81612fe35782612b60565b612b6083600019613644565b92915050565b6000806000198385098385029250828110838203039150509250929050565b6000816130325783838161302a5761302a61362e565b049050612b60565b838210613052576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b6001600160801b03811681146130d257600080fd5b50565b6000806000604084860312156130ea57600080fd5b833567ffffffffffffffff8082111561310257600080fd5b818601915086601f83011261311657600080fd5b81358181111561312557600080fd5b8760208260051b850101111561313a57600080fd5b60209283019550935050840135613150816130bd565b809150509250925092565b600081518084526020808501945080840160005b838110156131945781516001600160a01b03168752958201959082019060010161316f565b509495945050505050565b600081518084526020808501945080840160005b83811015613194578151875295820195908201906001016131b3565b634e487b7160e01b600052602160045260246000fd5b60008151808452602080850194508084016000805b848110156132325782516003811061322057634e487b7160e01b83526021600452602483fd5b885296830196918301916001016131fa565b50959695505050505050565b600081518084526020808501945080840160005b838110156131945781516001600160801b031687529582019590820190600101613252565b602081526000825160e0602084015261329461010084018261315b565b90506020840151601f19808584030160408601526132b2838361315b565b925060408601519150808584030160608601526132cf838361319f565b925060608601519150808584030160808601526132ec83836131e5565b925060808601519150808584030160a0860152613309838361323e565b925060a08601519150808584030160c0860152613326838361323e565b925060c08601519150808584030160e086015250612b60828261323e565b634e487b7160e01b600052601160045260246000fd5b60008282101561336c5761336c613344565b500390565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130d257600080fd5b6000602082840312156133c457600080fd5b81356133cf8161339d565b9392505050565b600082198211156133e9576133e9613344565b500190565b60006020828403121561340057600080fd5b81516133cf8161339d565b60006001600160801b038083168185168183048111821515161561343157613431613344565b02949350505050565b600081600019048311821515161561345457613454613344565b500290565b6040516080810167ffffffffffffffff8111828210171561347c5761347c613371565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156134ab576134ab613371565b604052919050565b600067ffffffffffffffff8211156134cd576134cd613371565b5060051b60200190565b805161ffff81168114612b9357600080fd5b80518015158114612b9357600080fd5b6000602080838503121561350c57600080fd5b825167ffffffffffffffff81111561352357600080fd5b8301601f8101851361353457600080fd5b8051613547613542826134b3565b613482565b81815260079190911b8201830190838101908783111561356657600080fd5b928401925b82841015612aac57608084890312156135845760008081fd5b61358c613459565b613595856134d7565b8152858501516135a48161339d565b8187015260406135b58682016134e9565b9082015260606135c68682016134e9565b908201528252608093909301929084019061356b565b600080604083850312156135ef57600080fd5b505080516020909101519092909150565b60008060006060848603121561361557600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601260045260246000fd5b60008261366157634e487b7160e01b600052601260045260246000fd5b500490565b600060001982141561367a5761367a613344565b5060010190565b6000602080838503121561369457600080fd5b825167ffffffffffffffff8111156136ab57600080fd5b8301601f810185136136bc57600080fd5b80516136ca613542826134b3565b81815260079190911b820183019083810190878311156136e957600080fd5b928401925b82841015612aac57608084890312156137075760008081fd5b61370f613459565b613718856134d7565b8152858501516137278161339d565b8187015260406137388682016134e9565b9082015260606137498682016134e9565b90820152825260809390930192908401906136ee565b60008060006060848603121561377457600080fd5b835161377f816130bd565b6020850151909350613790816130bd565b6040850151909250613150816130bd565b6000602082840312156137b357600080fd5b815162ffffff811681146133cf57600080fd5b60006001600160801b03838116908316818110156137e6576137e6613344565b039392505050565b60006001600160801b0380831681851680830382111561381057613810613344565b01949350505050565b60008161382857613828613344565b506000190190565b80516dffffffffffffffffffffffffffff81168114612b9357600080fd5b60008060006060848603121561386357600080fd5b61386c84613830565b925061387a60208501613830565b9150604084015163ffffffff8116811461315057600080fdfea2646970667358221220ad53fc3daaa3949c7c2189777e8f82d3b6671e9853e763891569e37bcc6c602c64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005a5c0c4832828ff878ce3ab4fec44d21200b149600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e221e65f85336db137b22596c5c5c259a629d15