2.7k txs
12.1k calls
constructor
constructor(uint32 startTimestamp, address _owner) payable
functions
DAILY_ALLOCATION_ETH_BUILDING
viewfunction DAILY_ALLOCATION_ETH_BUILDING() view returns (uint256)
DAILY_ALLOCATION_ETH_BURNING
viewfunction DAILY_ALLOCATION_ETH_BURNING() view returns (uint256)
DAILY_ALLOCATION_TITAN_X_BUILDING
viewfunction DAILY_ALLOCATION_TITAN_X_BUILDING() view returns (uint256)
DAILY_ALLOCATION_TITAN_X_BURNING
viewfunction DAILY_ALLOCATION_TITAN_X_BURNING() view returns (uint256)
ethIntervalsBuild
viewfunction ethIntervalsBuild(uint32) view returns (uint128 amountAllocated, uint128 amountBurned)
ethIntervalsBurn
viewfunction ethIntervalsBurn(uint32) view returns (uint128 amountAllocated, uint128 amountBurned)
ethToTitanXSlippage
viewfunction ethToTitanXSlippage() view returns (uint8)
ethUsedForBuilds
viewfunction ethUsedForBuilds() view returns (uint256)
ethUsedForBurns
viewfunction ethUsedForBurns() view returns (uint256)
fractalETH
viewfunction fractalETH() view returns (uint256)
fractalTitanX
viewfunction fractalTitanX() view returns (uint256)
getTitanXQuoteForETH
viewfunction getTitanXQuoteForETH(uint256 baseAmount) view returns (uint256 quote)
getTorusQuoteForTitanX
viewfunction getTorusQuoteForTitanX(uint256 baseAmount) view returns (uint256 quote)
lastBurnedETHIntervalStartTimestamp
viewfunction lastBurnedETHIntervalStartTimestamp() view returns (uint32)
lastBurnedTitanXIntervalStartTimestamp
viewfunction lastBurnedTitanXIntervalStartTimestamp() view returns (uint32)
lastETHBuildIntervalNumber
viewfunction lastETHBuildIntervalNumber() view returns (uint32)
lastETHBuildIntervalStartTimestamp
viewfunction lastETHBuildIntervalStartTimestamp() view returns (uint32)
lastETHBurnIntervalNumber
viewfunction lastETHBurnIntervalNumber() view returns (uint32)
lastFractalRelease
viewfunction lastFractalRelease() view returns (uint256)
lastTitanXBuildIntervalNumber
viewfunction lastTitanXBuildIntervalNumber() view returns (uint32)
lastTitanXBuildIntervalStartTimestamp
viewfunction lastTitanXBuildIntervalStartTimestamp() view returns (uint32)
lastTitanXBurnIntervalNumber
viewfunction lastTitanXBurnIntervalNumber() view returns (uint32)
liquidityAdded
viewfunction liquidityAdded() view returns (bool)
liquidityAddedBuild
viewfunction liquidityAddedBuild() view returns (bool)
liquiditySlippage
viewfunction liquiditySlippage() view returns (uint8)
lpToken
viewfunction lpToken() view returns (uint248 tokenId, bool isTitanXToken0)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
POSITION_MANAGER
viewfunction POSITION_MANAGER() view returns (address)
startTimeStamp
viewfunction startTimeStamp() view returns (uint32)
titanXIntervalsBuild
viewfunction titanXIntervalsBuild(uint32) view returns (uint128 amountAllocated, uint128 amountBurned)
titanXIntervalsBurn
viewfunction titanXIntervalsBurn(uint32) view returns (uint128 amountAllocated, uint128 amountBurned)
titanXToTorusSlippage
viewfunction titanXToTorusSlippage() view returns (uint8)
titanXUsedForBuilds
viewfunction titanXUsedForBuilds() view returns (uint256)
titanXUsedForBurns
viewfunction titanXUsedForBurns() view returns (uint256)
torusCreateAndStake
viewfunction torusCreateAndStake() view returns (address)
torusToken
viewfunction torusToken() view returns (address)
totalETHBuilt
viewfunction totalETHBuilt() view returns (uint256)
totalETHBurn
viewfunction totalETHBurn() view returns (uint256)
totalETHForBuild
viewfunction totalETHForBuild() view returns (uint256)
totalTitanXBuilt
viewfunction totalTitanXBuilt() view returns (uint256)
totalTitanXBurn
viewfunction totalTitanXBurn() view returns (uint256)
totalTitanXBurnt
viewfunction totalTitanXBurnt() view returns (uint256)
totalTitanXForBuild
viewfunction totalTitanXForBuild() view returns (uint256)
totalTorusBurnt
viewfunction totalTorusBurnt() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
addLiquidityToTorusTitanXPool
nonpayablefunction addLiquidityToTorusTitanXPool(uint32 _deadline)
burnFees
nonpayablefunction burnFees() returns (uint256 amount0, uint256 amount1)
burnTorus
nonpayablefunction burnTorus()
distributeETHForBuilding
payablefunction distributeETHForBuilding() payable
distributeETHForBurning
payablefunction distributeETHForBurning() payable
distributeTitanXForBuilding
nonpayablefunction distributeTitanXForBuilding(uint256 _amount)
distributeTitanXForBurning
nonpayablefunction distributeTitanXForBurning(uint256 _amount)
releaseFractalFunds
nonpayablefunction releaseFractalFunds()
renounceOwnership
nonpayablefunction renounceOwnership()
setCreateAndStakeContract
nonpayablefunction setCreateAndStakeContract(address _torusCreateAndStake)
setDailyAllocationETHBuilding
nonpayablefunction setDailyAllocationETHBuilding(uint256 _newDailyAllocation)
setDailyAllocationETHBurning
nonpayablefunction setDailyAllocationETHBurning(uint256 _newDailyAllocation)
setDailyAllocationTitanXBuilding
nonpayablefunction setDailyAllocationTitanXBuilding(uint256 _newDailyAllocation)
setDailyAllocationTitanXBurning
nonpayablefunction setDailyAllocationTitanXBurning(uint256 _newDailyAllocation)
setLiquiditySlippage
nonpayablefunction setLiquiditySlippage(uint8 _newSlippage)
setSlippageForETHToTitanX
nonpayablefunction setSlippageForETHToTitanX(uint8 _newSlippage)
setSlippageForTitanXToTorus
nonpayablefunction setSlippageForTitanXToTorus(uint8 _newSlippage)
swapETHForTorusAndBuild
nonpayablefunction swapETHForTorusAndBuild(uint32 _deadline)
swapETHForTorusAndBurn
nonpayablefunction swapETHForTorusAndBurn(uint32 _deadline)
swapTitanXForTorusAndBuild
nonpayablefunction swapTitanXForTorusAndBuild(uint32 _deadline)
swapTitanXForTorusAndBurn
nonpayablefunction swapTitanXForTorusAndBurn(uint32 _deadline)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BuyAndBuild
event BuyAndBuild(uint256 indexed tokenAllocated, uint256 indexed torusPurchased, address indexed caller)
BuyAndBurn
event BuyAndBurn(uint256 indexed titanXAmount, uint256 indexed torusBurnt, address indexed caller)
CreateAndStakeContractUpdated
event CreateAndStakeContractUpdated(address indexed oldCreateAndStake, address indexed newCreateAndStake)
DailyAllocationETHBuildingUpdated
event DailyAllocationETHBuildingUpdated(uint256 newDailyAllocation)
DailyAllocationETHBurningUpdated
event DailyAllocationETHBurningUpdated(uint256 newDailyAllocation)
DailyAllocationTitanXBuildingUpdated
event DailyAllocationTitanXBuildingUpdated(uint256 newDailyAllocation)
DailyAllocationTitanXBurningUpdated
event DailyAllocationTitanXBurningUpdated(uint256 newDailyAllocation)
ETHToTitanXSlippageUpdated
event ETHToTitanXSlippageUpdated(uint8 newSlippage)
FractalFundsReleased
event FractalFundsReleased(uint256 releasedTitanX, uint256 releasedETH)
LiquiditySlippageUpdated
event LiquiditySlippageUpdated(uint8 newSlippage)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
TitanXToTorusSlippageUpdated
event TitanXToTorusSlippageUpdated(uint8 newSlippage)
TorusBurned
event TorusBurned(uint256 indexed torusBurnt)
errors
FractalReleaseNotReady
error FractalReleaseNotReady()
IntervalAlreadyBurned
error IntervalAlreadyBurned()
IntervalAlreadyUsed
error IntervalAlreadyUsed()
InvalidInput
error InvalidInput()
LiquidityAlreadyAdded
error LiquidityAlreadyAdded()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
NotEnoughTitanXForLiquidity
error NotEnoughTitanXForLiquidity()
NotStartedYet
error NotStartedYet()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
T
error T()
creation bytecode
0x60e080604052604081614bdb803803809161001a8285610297565b8339810103126102685780519063ffffffff82169081830361026857602001516001600160a01b0381169290839003610268576001600055821561028157600280546001600160a01b0319908116909155600180549182168517905560405193690a0a0000000000000000936a0a0000000000000000000093909267ffffffff0000000092906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36064600c556064600d556064600e556064600f55601854928160c0523360a05273f19308f923582a6f7c465e5ce7a9dc1bec6665b160805260145560201b169283916affffffffffffff0000000019161717176018558067ffffffff000000001960165416176016558067ffffffff0000000019601c541617601c5567ffffffff0000000019601a541617601a5563095ea7b360e01b81523060048201526000196024820152602081604481600073f19308f923582a6f7c465e5ce7a9dc1bec6665b15af1801561027557610238575b60405161490a90816102d1823960805181818161043f01526137d7015260a0518181816109f801528181610d9e01528181611a4a01528181611af50152818161233f01528181612ee50152818161383e0152613bf1015260c05181818161054a0152818161068901528181610aa001528181611d920152818161201e01528181613065015281816132fd015281816134900152613a7c0152f35b6020813d60201161026d575b8161025160209383610297565b81010312610268575180151503610268573861019e565b600080fd5b3d9150610244565b6040513d6000823e3d90fd5b631e4fbdf760e01b600052600060045260246000fd5b601f909101601f19168101906001600160401b038211908210176102ba57604052565b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c9081621dd3ea146120a757508063038a0fc214611ff85780630421fd7314611fda57806311ce408e14611fb4578063150b7a0214611f445780631766608a14611ed85780631bea83fe14611ea957806320918db714611e8557806322d41f2f14611e6c57806330dc71ac14611d7057806334a4dd8714611d2057806339b6ce6414611be45780633bef64b114611bc657806340f6ac31146119415780634310b4ab1461192357806350fff5c7146118ff578063522897f8146118e157806353ad9b961461178757806353c5ca60146116e45780635c083c93146116c65780635fcbd2851461169257806361a0d03c1461167457806363273d5c1461165057806369ea8787146116005780636faa5b5c146115dc5780636ffc69871461154f578063715018a6146114e857806379ba5097146114605780637e8c8212146114415780638c0c428d146114235780638da5cb5b146113fa578063922bffbf1461138e57806392fa755314611368578063995c1c43146113185780639ed1f0f9146112fa578063a53466d3146112dc578063a569d2c214611270578063a5a3506814611253578063a6aaae9614610d3b578063a9c0527a14610d1d578063aded25c914610cff578063b58b588314610c71578063b80f2a9714610c4b578063b8b5796914610c2d578063ba14078214610bb7578063bb26848614610b67578063bc35401314610b40578063be86f02214610b22578063c381da4f14610a87578063c93625c114610a63578063ccd0005214610a45578063d4328f7814610a27578063d4fba9f2146109e2578063d6d315a414610884578063d7d74300146107e7578063d9443923146107c4578063d9a17529146107a6578063d9c4539814610788578063e30c39781461075f578063e3221eb514610670578063e5bdccd71461064c578063ead5e79414610626578063ecb2d32d14610602578063ef474ad7146105dc578063f2fde38b1461056e578063f38d00f01461052d578063f6b8cd5a14610511578063fbeaee88146104f35763fc9b61ae1461031757600080fd5b346104f05760203660031901126104f05760043563ffffffff81168091036104ec5761034161346c565b610349613063565b60ff601c5460401c16156104dd5763ffffffff601a5416825260196020526040822080548060801c6104ce5781546001600160801b0390811660809290921b6001600160801b0319169190911782559054169060968202828104609614831517156104ba576127106103bd910480936120fd565b916104178360011c92610410816103d486886120fd565b956103e188601d54612120565b601d556103f96103f1878a612120565b601f546120fd565b601f5561040888600a54612120565b600a5561379f565b8094613beb565b6014546291050081018091116104a6579061046c91421015610499575b61043c612ece565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613a2f565b33917f302485b9d53be977b4eb410b57770a1772f7ac7e5a137ec6ac179e403f69b5418480a46001815580f35b6104a161216b565b610434565b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526011600452602484fd5b63c0f8532b60e01b8452600484fd5b631864d7ab60e21b8252600482fd5b5080fd5b80fd5b50346104f057806003193601126104f0576020600c54604051908152f35b50346104f057806003193601126104f05761052a612ece565b80f35b50346104f057806003193601126104f057602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346104f05760203660031901126104f0576105886120cc565b6105906132d2565b600280546001600160a01b0319166001600160a01b039283169081179091556001549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346104f057806003193601126104f057602063ffffffff601a54821c16604051908152f35b50346104f057806003193601126104f057602060ff60185460481c16604051908152f35b50346104f057806003193601126104f057602063ffffffff601854821c16604051908152f35b50346104f057806003193601126104f057602063ffffffff60165416604051908152f35b50806003193601126104f05734156107505763ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421180610731575b610724575b601c3402348104601c036107105760646106eb91046106e06106d882346120fd565b601154612120565b601155601354612120565b601355601454629105008101809111610710574210156107085780f35b61052a61216b565b634e487b7160e01b82526011600452602482fd5b61072c61348e565b6106b6565b5061025861074a63ffffffff60185460201c16426120fd565b116106b1565b63b4fa3fb360e01b8152600490fd5b50346104f057806003193601126104f0576002546040516001600160a01b039091168152602090f35b50346104f057806003193601126104f0576020601d54604051908152f35b50346104f057806003193601126104f0576020601e54604051908152f35b50346104f057806003193601126104f057602060ff600554166040519015158152f35b50346104f05760203660031901126104f05760043560ff811690818103610880576108106132d2565b606482118015610876575b610867577f58897fd62867a3483c79f9ab9742ec64537a4662a8833601685976c487d72e679160209160ff60481b6018549160481b169060ff60481b191617601855604051908152a180f35b63b4fa3fb360e01b8352600483fd5b506002821061081b565b8280fd5b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec576108af61346c565b6108b76132fb565b60ff60055416156104dd5763ffffffff60165416825260156020526040822080548060801c6109d35781546001600160801b03908116608083901b6001600160801b031916178355166001600160801b038254166096810290808204609614901517156104a6576001600160801b0361094261093b61271061096b940480956120fd565b958661379f565b9361094f86600854612120565b60085561095e85600654612120565b60065554166010546120fd565b6010556014546291050081018091116104a65790610999914210156109c6575b610993612ece565b33613957565b33917f1b3ed074dce570943c9d4e66776a060e8ac73af4f6b002482b09e561d90f038c8480a46001815580f35b6109ce61216b565b61098b565b6331bbcb2160e11b8452600484fd5b50346104f057806003193601126104f0576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346104f057806003193601126104f0576020601154604051908152f35b50346104f057806003193601126104f0576020600f54604051908152f35b50346104f057806003193601126104f057602063ffffffff601c5416604051908152f35b50806003193601126104f05734156107505763ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421180610b03575b610af6575b610ad934602054612120565b602055601454629105008101809111610710574210156107085780f35b610afe613a7a565b610acd565b50610258610b1c63ffffffff601c5460201c16426120fd565b11610ac8565b50346104f057806003193601126104f0576020600e54604051908152f35b50346104f05760203660031901126104f0576020610b5f6004356129c2565b604051908152f35b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec578152601760209081526040918290205482516001600160801b038216815260809190911c91810191909152f35b50346104f05760203660031901126104f0577fec2b187c67e6a6938c53c9d50df457b5b6f66de14c4cc3c53e98cbabcf1899bf6020600435610bf76132d2565b80600f55606481101580610c21575b610c0f9061212d565b610c17613a7a565b604051908152a180f35b506103e8811115610c06565b50346104f057806003193601126104f0576020601f54604051908152f35b50346104f057806003193601126104f057602063ffffffff601654821c16604051908152f35b50346104f05760203660031901126104f05760043560ff81169081810361088057610c9a6132d2565b606482118015610cf5575b610867576018805460ff60501b191660509290921b60ff60501b169190911790556040519081527f996f439f738f8a223f90e5c110de60604027e6a47b1732636c8abd1766a6353190602090a180f35b5060028210610ca5565b50346104f057806003193601126104f0576020601054604051908152f35b50346104f057806003193601126104f0576020600b54604051908152f35b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec5760055460ff8116611244576c02863c1f5cdae42f9540000000601054106112355760ff1916600117600555601c805460ff60401b1916600160401b1790557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610880576040516326fb5edb60e21b8152838160048183875af1801561122a57611216575b508173f19308f923582a6f7c465e5ce7a9dc1bec6665b1106000146111fb5773f19308f923582a6f7c465e5ce7a9dc1bec6665b1825b6001600160a01b03821673f19308f923582a6f7c465e5ce7a9dc1bec6665b181149485156111db576c02863c1f5cdae42f95400000009469043c33c1937564800000925b610e7387876142e3565b610e7d84866142e3565b60ff60185460501c166064610eb460ff610ead83610ea68d84610e9f89612988565b16906121f4565b0494612988565b16876121f4565b0490610ec261115319612999565b610ecd611154612999565b6040519461016086018681106001600160401b038211176111c757918c916004999897969594936040528652602086019260018060a01b038c16845262ffffff604088016127108152606089019260020b8352608089019360020b845260a0890194855260c08901958d875260e08a019788526101008a019889526101208a0199308b5261014081019b8c526040519d8e91634418b22b60e11b835260018060a01b0390511691015260018060a01b0390511660248d0152511660448b01525160020b60648a01525160020b60848901525160a48801525160c48701525160e48601525161010485015260018060a01b0390511661012484015251610144830152608082610164818b73c36442b4a4522e871399cd717abdd847ab11fe885af19182156110f757889689918a94611172575b50818111611102575b5050818311611075575b505050611021611026926143a5565b6143a5565b60018060f81b03169080602060405161103e81612227565b848152015260f81b6001600160f81b031916176004556010546c02863c1f5cdae42f953fffffff1981019081116107105760105580f35b60206004916040969394965192838092639ddbd21160e01b82525afa9485156110f75761102695611021946110bd938b926110c4575b506110b691926120fd565b9085613a2f565b9238611012565b6110b692506110ea9060203d6020116110f0575b6110e28183612273565b810190612311565b916110ab565b503d6110d8565b6040513d8a823e3d90fd5b604051639ddbd21160e01b815291602083600481875afa9081156111675761113d938c92611144575b5061113691926120fd565b9087613a2f565b3880611008565b61113692506111619060203d6020116110f0576110e28183612273565b9161112b565b6040513d8d823e3d90fd5b97509250506080863d6080116111bf575b8161119060809383612273565b810103126111bb5785516111a6602088016129ae565b50606060408801519701519096909238610fff565b8780fd5b3d9150611183565b634e487b7160e01b8f52604160045260248ffd5b69043c33c1937564800000946c02863c1f5cdae42f954000000092610e69565b8173f19308f923582a6f7c465e5ce7a9dc1bec6665b1610e25565b8361122391949294612273565b9138610def565b6040513d86823e3d90fd5b631bbc2d7d60e21b8352600483fd5b630fd02b6d60e41b8352600483fd5b50346104f057806003193601126104f05760208054604051908152f35b50346104f05760203660031901126104f0577f9127263eda2b46ebbe29a3927987e41735ec4e0ffa012dd37dd2e5e23bb9756b60206004356112b06132d2565b80600e556064811015806112d0575b6112c89061212d565b610c17613063565b506103e88111156112bf565b50346104f057806003193601126104f0576020600654604051908152f35b50346104f057806003193601126104f0576020600954604051908152f35b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec578152601960209081526040918290205482516001600160801b038216815260809190911c91810191909152f35b50346104f057806003193601126104f057602060ff601c5460401c166040519015158152f35b50346104f05760203660031901126104f0577ffd4d5d30e48f7ca9d989668161b3141e515f003ea4f2aca8f79b9145bf00648060206004356113ce6132d2565b80600d556064811015806113ee575b6113e69061212d565b610c1761348e565b506103e88111156113dd565b50346104f057806003193601126104f0576001546040516001600160a01b039091168152602090f35b50346104f057806003193601126104f0576020600d54604051908152f35b50346104f05760203660031901126104f0576020610b5f600435612330565b50346104f057806003193601126104f057600254336001600160a01b03909116036114d557600280546001600160a01b0319908116909155600180543392811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b63118cdaa760e01b815233600452602490fd5b50346104f057806003193601126104f0576115016132d2565b600280546001600160a01b031990811690915560018054918216905581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346104f05760203660031901126104f05760043560ff811690818103610880576115786132d2565b6064821180156115d2575b610867576018805460ff60401b1916604092831b68ff000000000000000016179055519081527fdd491bf453cab2875967c496dead5e0f34f6cb6eddf3bd17be6a93c1df69138990602090a180f35b5060028210611583565b50346104f057806003193601126104f057602060ff60185460501c16604051908152f35b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec578152601b60209081526040918290205482516001600160801b038216815260809190911c91810191909152f35b50346104f057806003193601126104f057602063ffffffff601a5416604051908152f35b50346104f057806003193601126104f0576020600a54604051908152f35b50346104f057806003193601126104f057600454604080516001600160f81b038316815260f89290921c1515602083015290f35b50346104f057806003193601126104f0576020601354604051908152f35b50346104f05760203660031901126104f0576116fe6120cc565b600354906001600160a01b0382169081611754576001600160a01b03166001600160a01b03199290921682176003557f31914ab371ab98283208269c0ab79aebe4135bdd5dfc68bda29352ee7fa04ae48380a380f35b60405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b6044820152606490fd5b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec576117b261346c565b6117ba613a7a565b601c5460ff8160401c16156118d25763ffffffff168252601b6020526040822080548060801c6104ce5781546001600160801b0390811660809290921b6001600160801b0319169190911782559054169060968202828104609614831517156104ba5761271061182c910480936120fd565b9161188961183a8385613682565b9261184785601e54612120565b601e5561185f6118578487612120565b6020546120fd565b60205561186e85600b54612120565b600b55610410816118838660011c80976120fd565b9561379f565b6014546291050081018091116104a65784808061046c9481944210156118c5575b6118b2612ece565b33617530f16118bf612294565b506122d3565b6118cd61216b565b6118aa565b631864d7ab60e21b8352600483fd5b50346104f057806003193601126104f0576020601254604051908152f35b50346104f057806003193601126104f057602060ff60185460401c16604051908152f35b50346104f057806003193601126104f0576020600754604051908152f35b50346104f057806003193601126104f05761195a61346c565b60405161196681612227565b600454602060018060f81b03821692838152019060f81c1515815260405191608083018381106001600160401b03821117611bb257604090815290835230602084019081526001600160801b0384830181815260608601828152845163fc6f786560e01b81529651600488015292516001600160a01b0316602487015251811660448601529051166064840152826084818673c36442b4a4522e871399cd717abdd847ab11fe885af1908115611ba75783928492611b6c575b505115611b6657815b80611adf575b506040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561122a578491611aa8575b50604093600191611a9b575b5582519182526020820152f35b611aa3612ece565b611a8e565b90506020813d602011611ad7575b81611ac360209383612273565b81010312611ad357516040611a82565b8380fd5b3d9150611ab6565b604051639ddbd21160e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611b5b57611b36928691611b3c575b50613957565b38611a2e565b611b55915060203d6020116110f0576110e28183612273565b38611b30565b6040513d87823e3d90fd5b80611a28565b925090506040823d604011611b9f575b81611b8960409383612273565b8101031261088057602082519201519038611a1f565b3d9150611b7c565b6040513d85823e3d90fd5b634e487b7160e01b85526041600452602485fd5b50346104f057806003193601126104f0576020600854604051908152f35b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec57611c0f61346c565b611c1761348e565b60ff60055416156104dd5763ffffffff60185416825260176020526040822080548060801c6109d35781546001600160801b031660809190911b6001600160801b0319161781556001600160801b0381541660968102818104609614821517156104a65782546001600160801b031660809290921b6001600160801b0319169190911782556127109004611cf56001600160801b03611ccc611cbc84838754166120fd565b95611cc78188613682565b61379f565b93611cd986600954612120565b600955611ce885600654612120565b60065554166011546120fd565b6011556014546291050081018091116104a6578480806109999481944210156118c5576118b2612ece565b50346104f05760203660031901126104f05760043563ffffffff81168091036104ec578152601560209081526040918290205482516001600160801b038216815260809190911c91810191909152f35b50346104f05760203660031901126104f0576004358015611e5d5763ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421180611e3e575b611e31575b611dca8130336131f9565b601c8102818104601c03611e1d5790611df5611ded6064611e00940480936120fd565b601054612120565b601055601254612120565b601255601454629105008101809111610710574210156107085780f35b634e487b7160e01b83526011600452602483fd5b611e396132fb565b611dbf565b50610258611e5763ffffffff60165460201c16426120fd565b11611dba565b63b4fa3fb360e01b8252600482fd5b50346104f057806003193601126104f05761052a61216b565b50346104f057806003193601126104f057602063ffffffff60185416604051908152f35b50346104f057806003193601126104f057602060405173c36442b4a4522e871399cd717abdd847ab11fe888152f35b50346104f05760203660031901126104f0577fad307686991d52e430babc16ccec906ae187b9e7857b451be5d0e27dc56be94e6020600435611f186132d2565b80600c55606481101580611f38575b611f309061212d565b610c176132fb565b506103e8811115611f27565b50346104f05760803660031901126104f057611f5e6120cc565b50611f676120e7565b506064356001600160401b0381116104ec57366023820112156104ec5780600401356001600160401b03811161088057369101602401116104f057604051630a85bd0160e11b8152602090f35b50346104f057806003193601126104f057602063ffffffff601c54821c16604051908152f35b50346104f057806003193601126104f0576020601454604051908152f35b50346104f05760203660031901126104f0576004358015611e5d5761205e9063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016421180612088575b61207b575b6120568130336131f9565b601f54612120565b601f55601454629105008101809111610710574210156107085780f35b612083613063565b61204b565b506102586120a163ffffffff601a5460201c16426120fd565b11612046565b9050346104ec57816003193601126104ec576003546001600160a01b03168152602090f35b600435906001600160a01b03821682036120e257565b600080fd5b602435906001600160a01b03821682036120e257565b9190820391821161210a57565b634e487b7160e01b600052601160045260246000fd5b9190820180921161210a57565b1561213457565b60405162461bcd60e51b815260206004820152600f60248201526e4d696e2031252c206d61782031302560881b6044820152606490fd5b60145462910500810180911161210a5742106121e3577f5478430add375261e67bd1f93748ff3c37420be046abfea3a378fb368fba610f60406012546121b381601054612120565b6010556013546121c581601154612120565b60115582519182526020820152a16000601255600060135542601455565b63feff205960e01b60005260046000fd5b8181029291811591840414171561210a57565b8115612211570490565b634e487b7160e01b600052601260045260246000fd5b604081019081106001600160401b0382111761224257604052565b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b0382111761224257604052565b90601f801991011681019081106001600160401b0382111761224257604052565b3d156122ce573d906001600160401b03821161224257604051916122c2601f8201601f191660200184612273565b82523d6000602084013e565b606090565b156122da57565b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b908160209103126120e257516001600160a01b03811681036120e25790565b60405163d86e6d3960e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa90811561297c5760009161295d575b50604051633850c7bd60e01b8152610384916001600160a01b03169060009060e081600481865afa801561289857829183916128cd575b5061ffff169081156128a35761ffff60019116019061ffff8211611e1d5761ffff90816040519363252c09d760e01b85521606166004820152608081602481865afa9081156128985782908392612873575b509015612800575b612422915063ffffffff4216613f08565b8263ffffffff8216106127f8575b5063ffffffff600092169182156127ce5780604051612450606082612273565b60028152602081019360403686378561246883613f39565b528261247383613f5c565b5260405163883bdbfd60e01b81526020600482015291516024830181905291948592604484019190855b8181106127ac5750505082809103915afa91821561279f5781908293612685575b506124d56124cb82613f5c565b5160060b91613f39565b5160060b900391667fffffffffffff198312667fffffffffffff841317610710576001600160a01b0361250782613f5c565b5116906001600160a01b039061251c90613f39565b51169003906001600160a01b03821161265d578360060b9260060b90831561267157667fffffffffffff19821460001985141661265d575082810560020b9260008212918261264e575b5050612638575b6001600160a01b038381026001600160c01b0316938404900361210a5760201b640100000000600160c01b031691821561221157506125ac9150613f6c565b6001600160a01b03166001600160801b0381116125ff57806125cd916121f4565b9073f19308f923582a6f7c465e5ce7a9dc1bec6665b110156125f657906125f391614885565b90565b6125f391614800565b80612609916146b0565b9073f19308f923582a6f7c465e5ce7a9dc1bec6665b1101561262f57906125f3916147b1565b6125f39161470f565b90627fffff19811461210a57600019019061256d565b0760060b151590503880612566565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b81526012600452602490fd5b9250503d8082843e6126978184612273565b8201916040818403126104ec5780516001600160401b0381116108805781019083601f83011215610880578151916126ce83613f22565b926126dc6040519485612273565b80845260208085019160051b8301019186831161279b57602001905b828210612783575050506020810151906001600160401b038211611ad357019280601f8501121561088057835161272e81613f22565b9461273c6040519687612273565b81865260208087019260051b82010192831161277f57602001905b82821061276757505050386124be565b6020809161277484613e7d565b815201910190612757565b8480fd5b6020809161279084613ea0565b8152019101906126f8565b8580fd5b50604051903d90823e3d90fd5b825163ffffffff1684528796508895506020938401939092019160010161249d565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b915038612430565b5060405163252c09d760e01b815260048101829052608081602481865afa918215612867579061242292612835575b50612411565b612857915060803d608011612860575b61284f8183612273565b810190613eae565b5050503861282f565b503d612845565b604051903d90823e3d90fd5b905061288e915060803d6080116128605761284f8183612273565b9291505038612409565b6040513d84823e3d90fd5b60405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606490fd5b91505060e0813d60e011612955575b816128e960e09383612273565b810103126104ec576128fa81613e7d565b5060208101518060020b036104ec5761291560408201613e91565b61292160608301613e91565b9161292e60808201613e91565b5060a081015160ff811603611ad3579061294d60c061ffff93016131ec565b5091906123b7565b3d91506128dc565b612976915060203d6020116110f0576110e28183612273565b38612380565b6040513d6000823e3d90fd5b60ff166064039060ff821161210a57565b60c89060020b02908160020b91820361210a57565b51906001600160801b03821682036120e257565b6103846000604051633850c7bd60e01b815260e08160048173c45a81bc23a64ea556ab4cdf08a86b61cdceea8b5afa80156128985782918391612e3e575b5061ffff169081156128a35761ffff60019116019061ffff8211611e1d5761ffff90816040519363252c09d760e01b8552160616600482015260808160248173c45a81bc23a64ea556ab4cdf08a86b61cdceea8b5afa9081156128985782908392612e19575b509015612dae575b612a7f915063ffffffff4216613f08565b8163ffffffff821610612da6575b5063ffffffff16600081156127ce5760405190612aab606083612273565b600282526020820191604036843783612ac382613f39565b5281612ace82613f5c565b5281604051809463883bdbfd60e01b825260248201936020600484015251809452604482019093835b818110612d8457505081929350038173c45a81bc23a64ea556ab4cdf08a86b61cdceea8b5afa91821561279f5781908293612c72575b50612b3a6124cb82613f5c565b5160060b900391667fffffffffffff198312667fffffffffffff841317610710576001600160a01b03612b6c82613f5c565b5116906001600160a01b0390612b8190613f39565b51169003906001600160a01b03821161265d578360060b9260060b90831561267157667fffffffffffff19821460001985141661265d575082810560020b92600082129182612c63575b5050612c4d575b6001600160a01b038381026001600160c01b0316938404900361210a5760201b640100000000600160c01b03169182156122115750612c119150613f6c565b6001600160a01b0316906001600160801b038211612c3b57612c36826125f3936121f4565b614885565b612c48826125f3936146b0565b6147b1565b90627fffff19811461210a576000190190612bd2565b0760060b151590503880612bcb565b9250503d8082843e612c848184612273565b8201916040818403126104ec5780516001600160401b0381116108805781019083601f8301121561088057815191612cbb83613f22565b92612cc96040519485612273565b80845260208085019160051b8301019186831161279b57602001905b828210612d6c575050506020810151906001600160401b038211611ad357019280601f85011215610880578351612d1b81613f22565b94612d296040519687612273565b81865260208087019260051b82010192831161277f57602001905b828210612d545750505038612b2d565b60208091612d6184613e7d565b815201910190612d44565b60208091612d7984613ea0565b815201910190612ce5565b855163ffffffff16835260209586019587955088945090920191600101612af7565b905038612a8d565b5060405163252c09d760e01b81526004810182905260808160248173c45a81bc23a64ea556ab4cdf08a86b61cdceea8b5afa9182156128675790612a7f92612df7575b50612a6e565b612e10915060803d6080116128605761284f8183612273565b50505038612df1565b9050612e34915060803d6080116128605761284f8183612273565b9291505038612a66565b91505060e0813d60e011612ec6575b81612e5a60e09383612273565b810103126104ec57612e6b81613e7d565b5060208101518060020b036104ec57612e8660408201613e91565b612e9260608301613e91565b91612e9f60808201613e91565b5060a081015160ff811603611ad35790612ebe60c061ffff93016131ec565b509190612a00565b3d9150612e4d565b6040516370a0823160e01b815230600482015260007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316602083602481845afa928315612898578293612f9e575b50612f3183600654612120565b600655803b156104ec57818091602460405180948193630852cd8d60e31b83528860048401525af180156128985790827f89af60e661efa3da35b4ce1b5165e52acf2e747e41905d84e9ec3230e7b006b29392612f8e575b9050a2565b612f9791612273565b3881612f89565b9092506020813d602011612fca575b81612fba60209383612273565b810103126104ec57519138612f24565b3d9150612fad565b63ffffffff1663ffffffff811461210a5760010190565b63ffffffff6102589116029063ffffffff821691820361210a57565b63ffffffff60019116019063ffffffff821161210a57565b9063ffffffff8091169116019063ffffffff821161210a57565b81516020929092015160801b6001600160801b0319166001600160801b0392909216919091179055565b565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81168042106131db57601a549063ffffffff8260201c1690811590816000146131c4576130bb63ffffffff91426120fd565b16915b60009182918291829182911561317a5750505050505063ffffffff6130e3911661442e565b90939290919060015b6130f8575b5050505050565b63ffffffff60201b61311b6131629561311563ffffffff96612fe9565b9061301d565b60201b169063ffffffff60201b191617601a556001600160801b036040519461314386612227565b1684526000602085015216918260005260196020526040600020613037565b63ffffffff19601a541617601a5538808080806130f1565b91949750919463ffffffff9096939616610258811161319b575b50506130ec565b935095505092506131ac915061442e565b909392600192916131bc90612fd2565b923880613194565b5063ffffffff6131d483426120fd565b16916130be565b631864d7ab60e21b60005260046000fd5b519081151582036120e257565b6040516323b872dd60e01b602082019081526001600160a01b0392831660248301529190921660448301526064808301939093529181526000918291613240608482612273565b51908273f19308f923582a6f7c465e5ce7a9dc1bec6665b15af1613262612294565b8161329b575b501561327057565b60405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606490fd5b80518015925082156132b0575b505038613268565b81925090602091810103126120e25760206132cb91016131ec565b38806132a8565b6001546001600160a01b031633036132e657565b63118cdaa760e01b6000523360045260246000fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81168042106131db576016549063ffffffff8260201c1690811590816000146134555761335363ffffffff91426120fd565b16915b60009182918291829182911561340b5750505050505063ffffffff61337b9116614503565b90939290919060015b61338f575050505050565b63ffffffff60201b6133ac6133f39561311563ffffffff96612fe9565b60201b169063ffffffff60201b1916176016556001600160801b03604051946133d486612227565b1684526000602085015216918260005260156020526040600020613037565b63ffffffff19601654161760165538808080806130f1565b91949750919463ffffffff9096939616610258811161342c575b5050613384565b9350955050925061343d9150614503565b9093926001929161344d90612fd2565b923880613425565b5063ffffffff61346583426120fd565b1691613356565b60026000541461347d576002600055565b633ee5aeb560e01b60005260046000fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81168042106131db576018549063ffffffff8260201c1690811590816000146135e8576134e663ffffffff91426120fd565b16915b60009182918291829182911561359e5750505050505063ffffffff61350e91166145b3565b90939290919060015b613522575050505050565b63ffffffff60201b61353f6135869561311563ffffffff96612fe9565b60201b169063ffffffff60201b1916176018556001600160801b036040519461356786612227565b1684526000602085015216918260005260176020526040600020613037565b63ffffffff19601854161760185538808080806130f1565b91949750919463ffffffff909693961661025881116135bf575b5050613517565b935095505092506135d091506145b3565b909392600192916135e090612fd2565b9238806135b8565b5063ffffffff6135f883426120fd565b16916134e9565b9190916020815282519260a060208301528351908160c084015260005b82811061366c575060e0939450608090600085848601015260018060a01b03602082015116604085015260408101516060850152606081015182850152015160a0830152601f8019910116010190565b80602080928801015160e082870101520161361c565b604051736015551cd911ff4685072e2793f56c841e3ab66160611b60208281019190915261027160ec1b603483015273f19308f923582a6f7c465e5ce7a9dc1bec6665b160601b6037830152602b8252613745939092906136e4604b84612273565b60646137046136f2846129c2565b60ff610e9f8160185460481c16612988565b04906040519361371385612258565b8452308585015260408401528160608401526080830152604051808095819463c04b8d5960e01b8352600483016135ff565b039173e592427a0aece92de3edee1f18e0157c058615645af190811561297c57600091613770575090565b90506020813d602011613797575b8161378b60209383612273565b810103126120e2575190565b3d915061377e565b60405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c0586156460048201526024810182905260208160448160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561297c57613915575b5060405173f19308f923582a6f7c465e5ce7a9dc1bec6665b160601b60208281019190915261027160ec1b60348301527f000000000000000000000000000000000000000000000000000000000000000060601b6bffffffffffffffffffffffff19166037830152602b82526138e8939092613889604b84612273565b60646138a961389783612330565b60ff610e9f8160185460401c16612988565b0491604051936138b885612258565b845230858501526040840152606083015260808201526040518093819263c04b8d5960e01b8352600483016135ff565b0381600073e592427a0aece92de3edee1f18e0157c058615645af190811561297c57600091613770575090565b906020823d60201161394f575b8161392f60209383612273565b810103126120e2576138e8926139466020936131ec565b5092509061380c565b3d9150613922565b60405163a9059cbb60e01b602082019081526001600160a01b039092166024820152604481019290925260009182919061399e81606481015b03601f198101835282612273565b51908273f19308f923582a6f7c465e5ce7a9dc1bec6665b15af16139c0612294565b816139f8575b50156139ce57565b60405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606490fd5b8051801592508215613a0d575b5050386139c6565b81925090602091810103126120e2576020613a2891016131ec565b3880613a05565b60405163a9059cbb60e01b602082019081526001600160a01b03909316602482015260448101939093526000928392908390613a6e8160648101613990565b51925af16139c0612294565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff81168042106131db57601c549063ffffffff8260201c169081159081600014613bd457613ad263ffffffff91426120fd565b16915b600091829182918291829115613b8a5750505050505063ffffffff613afa9116614658565b90939290919060015b613b0e575050505050565b63ffffffff60201b613b2b613b729561311563ffffffff96612fe9565b60201b169063ffffffff60201b191617601c556001600160801b0360405194613b5386612227565b16845260006020850152169182600052601b6020526040600020613037565b63ffffffff19601c541617601c5538808080806130f1565b91949750919463ffffffff90969396166102588111613bab575b5050613b03565b93509550509250613bbc9150614658565b90939260019291613bcc90612fd2565b923880613ba4565b5063ffffffff613be483426120fd565b1691613ad5565b916000917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673f19308f923582a6f7c465e5ce7a9dc1bec6665b1811115613e605773f19308f923582a6f7c465e5ce7a9dc1bec6665b19481945b506001600160a01b03861673f19308f923582a6f7c465e5ce7a9dc1bec6665b103613e5a5791925b613c8083876142e3565b613c8a84866142e3565b60ff60185460501c16906064613cba60ff610ead83613cb383613cac89612988565b168a6121f4565b0495612988565b0460018060f81b0360045416926040519360c085018581106001600160401b03821117612242576040528452602084018681526040850190888252606086019283526080860193845260a086019485526040519563219f5d1760e01b87525160048701525160248601525160448501525160648401525160848301525160a482015260608160c481600073c36442b4a4522e871399cd717abdd847ab11fe885af192831561297c576000918294613e11575b50818111613dd6575b5050818311613d8e575b505050611021613061926143a5565b60206004916040969394965192838092639ddbd21160e01b82525afa94851561297c576130619561102194613dcf936000926110c457506110b691926120fd565b9238613d7f565b604051639ddbd21160e01b815291602083600481875afa90811561297c57613e0a93600092611144575061113691926120fd565b3880613d75565b919093506060823d606011613e52575b81613e2e60609383612273565b810103126104f05750613e40816129ae565b50604060208201519101519238613d6c565b3d9150613e21565b92613c76565b809473f19308f923582a6f7c465e5ce7a9dc1bec6665b194613c4e565b51906001600160a01b03821682036120e257565b519061ffff821682036120e257565b51908160060b82036120e257565b91908260809103126120e257815163ffffffff811681036120e25791613ed660208201613ea0565b916125f36060613ee860408501613e7d565b93016131ec565b63ffffffff6000199116019063ffffffff821161210a57565b9063ffffffff8091169116039063ffffffff821161210a57565b6001600160401b0381116122425760051b60200190565b805115613f465760200190565b634e487b7160e01b600052603260045260246000fd5b805160011015613f465760400190565b60020b60008112156142dd5780600003905b620d89e882116142cc5760018216156142ba576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b16916002811661429e575b60048116614282575b60088116614266575b6010811661424a575b6020811661422e575b60408116614212575b608081166141f6575b61010081166141da575b61020081166141be575b61040081166141a2575b6108008116614186575b611000811661416a575b612000811661414e575b6140008116614132575b6180008116614116575b6201000081166140fa575b6202000081166140df575b6204000081166140c4575b62080000166140ab575b60001261409c575b63ffffffff8116614094576000905b60201c60ff91909116016001600160a01b031690565b60019061407e565b8015612211576000190461406f565b6b048a170391f7dc42444e8fa290910260801c90614067565b6d2216e584f5fa1ea926041bedfe9890920260801c9161405d565b916e5d6af8dedb81196699c329225ee6040260801c91614052565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614047565b916f31be135f97d08fd981231505542fcfa60260801c9161403c565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614032565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91614028565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161401e565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614014565b916ff3392b0822b70005940c7a398e4b70f30260801c9161400a565b916ff987a7253ac413176f2b074cf7815e540260801c91614000565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613ff6565b916ffe5dee046a99a2a811c461f1969c30530260801c91613fec565b916fff2ea16466c96a3843ec78b326b528610260801c91613fe3565b916fff973b41fa98c081472e6896dfb254c00260801c91613fda565b916fffcb9843d60f6159c9db58835c9266440260801c91613fd1565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613fc8565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613fbf565b916ffff97272373d413259a46990580e213a0260801c91613fb6565b6001600160881b03600160801b613fab565b6315e4079d60e11b60005260046000fd5b80613f7e565b60009190829182604051602081019263095ea7b360e01b845273c36442b4a4522e871399cd717abdd847ab11fe88602483015260448201526044815261432a606482612273565b51925af1614336612294565b8161436e575b501561434457565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b8051801592508215614383575b50503861433c565b81925090602091810103126120e257602061439e91016131ec565b388061437b565b6000809160405182602082019163095ea7b360e01b835273c36442b4a4522e871399cd717abdd847ab11fe8860248201528160448201526044815261432a606482612273565b906001600160801b03809116911602906001600160801b03821691820361210a57565b906001600160801b03809116911601906001600160801b03821161210a57565b9061446c61446763ffffffff93601a5490858260201c16156000146144d457600061025882116144c757505060005b9485915b1661301d565b613005565b91601f54916144a66001600160801b03609061271061448d600e54886121f4565b0404166144a063ffffffff8516826143eb565b9061440e565b92806001600160801b038516116144ba5750565b6001600160801b03169250565b506102589004851661445d565b60009061025881116144ed57505060005b948591614461565b6144fe915061025890048616613eef565b6144e5565b60165490600063ffffffff8360201c161560001461458757506000610258821161457657505060005b905b6145426144678363ffffffff81941661301d565b926144a6601054936144a063ffffffff6001600160801b03609061271061456b600c548b6121f4565b0404169216826143eb565b50610258900463ffffffff1661452c565b90610258811161459957505b9061452e565b6145ae9150610258900463ffffffff16613eef565b614593565b60185490600063ffffffff8360201c161560001461462c57506000610258821161461b57505060005b905b6145f26144678363ffffffff81941661301d565b926144a6601154936144a063ffffffff6001600160801b03609061271061456b600d548b6121f4565b50610258900463ffffffff166145dc565b90610258811161463e57505b906145de565b6146539150610258900463ffffffff16613eef565b614638565b9061468f61446763ffffffff93601c5490858260201c16156000146144d457600061025882116144c757505060009485911661301d565b91602054916144a66001600160801b03609061271061448d600f54886121f4565b81810291600091600019828209928480851094039380850394146147045783600160401b11156146f5575090600160401b910990828211900360c01b910360401c1790565b63227bc15360e01b8152600490fd5b925050505060401c90565b90608082901b9060001983600160801b09928280851094039380850394146147a55783821115614794578190600160801b09816000038216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b63227bc15360e01b60005260046000fd5b50906125f39250612207565b60009082810292600019818309928480851094039380850394146147f557600160801b8410156146f55750600160801b910990828211900360801b910360801c1790565b925050505060801c90565b9060c082901b9060001983600160c01b09928280851094039380850394146147a55783821115614794578190600160c01b09816000038216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b60009082810292600019818309928480851094039380850394146148c957600160c01b8410156146f55750600160c01b910990828211900360401b910360c01c1790565b925050505060c01c9056fea264697066735822122097e5c492606dc1bca7d00d35bf168633d77f8c02c31ab8a7ce48bb561d32bbd764736f6c634300081a003300000000000000000000000000000000000000000000000000000000686fffa00000000000000000000000006d3a73f6bf13f08f8339890bbcfd774d4d85cd81