0 txs
11.6k calls
constructor
constructor()
functions
bridgeTokenLzEid
viewfunction bridgeTokenLzEid(address) view returns (uint16)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
defaultPools
viewfunction defaultPools(uint256) view returns (address)
defaultRewarders
viewfunction defaultRewarders(uint256, uint256) view returns (address)
defaultStartEpochTimestamp
viewfunction defaultStartEpochTimestamp() view returns (uint256)
destinationCompoundPool
viewfunction destinationCompoundPool() view returns (address)
destinationLzEid
viewfunction destinationLzEid(uint256) view returns (uint16)
dp
viewfunction dp() view returns (address)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
gasForDestinationLzReceive
viewfunction gasForDestinationLzReceive() view returns (uint256)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isCompoundableTokens
viewfunction isCompoundableTokens(address) view returns (bool)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
liquidityHandler
viewfunction liquidityHandler() view returns (address)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
owner
viewfunction owner() view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
tlcStaking
viewfunction tlcStaking() view returns (address)
tokens
viewfunction tokens(uint256) view returns (address)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
usdc
viewfunction usdc() view returns (address)
zapHelper
viewfunction zapHelper() view returns (address)
addDestinationLzEid
nonpayablefunction addDestinationLzEid(uint16[] _lzEids)
addToken
nonpayablefunction addToken(address[] newTokens, bool[] newIsCompoundTokens)
claimAndCompound
payablefunction claimAndCompound(address user, bool isCrossChain, uint8 option) payable
claimAndCompound
payablefunction claimAndCompound(address user, bool isCrossChain) payable
compound
payablefunction compound(address[] pools, address[][] rewarders, uint256 startEpochTimestamp, uint256 noOfEpochs, bool isCrossChain, uint8 option) payable
compound
payablefunction compound(address[] pools, address[][] rewarders, uint256 startEpochTimestamp, uint256 noOfEpochs, bool isCrossChain) payable
compound
payablefunction compound(address[] pools, address[][] rewarders, uint256 startEpochTimestamp, uint256 noOfEpochs) payable
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
initialize
nonpayablefunction initialize(address dp_, address destinationCompoundPool_, address[] tokens_, bool[] isCompoundTokens_, address tlcStaking_, address lzEndpointV1_)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
recoverToken
nonpayablefunction recoverToken(address _token, address _to, uint256 _amount)
removeToken
nonpayablefunction removeToken(address token)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
setBridgeTokenLzEids
nonpayablefunction setBridgeTokenLzEids(address[] _tokens, uint16[] _lzEids)
setCompoundToken
nonpayablefunction setCompoundToken(address token, bool isCompoundToken)
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setDefaultConfigs
nonpayablefunction setDefaultConfigs(address[] _defaultPools, address[][] _defaultRewarders, uint256 _defaultStartEpochTimestamp)
setDestinationCompoundPool
nonpayablefunction setDestinationCompoundPool(address _destinationCompoundPool)
setGasForDestinationLzReceive
nonpayablefunction setGasForDestinationLzReceive(uint256 gasLimit)
setLiquidityHandler
nonpayablefunction setLiquidityHandler(address _liquidityHandler)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _srcChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
setUSDC
nonpayablefunction setUSDC(address _usdc)
setZapHelper
nonpayablefunction setZapHelper(address _zapHelper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Initialized
event Initialized(uint8 version)
LogAddDestinationLzEid
event LogAddDestinationLzEid(uint16 lzEid)
LogAddToken
event LogAddToken(address token, bool isCompoundToken)
LogRemoveToken
event LogRemoveToken(address token)
LogSetBridgeTokenLzEid
event LogSetBridgeTokenLzEid(address token, uint16 lzEid)
LogSetCompoundToken
event LogSetCompoundToken(address token, bool isCompoundToken)
LogSetDestinationCompoundPool
event LogSetDestinationCompoundPool(address oldDestinationCompoundPool_, address newDestinationCompoundPool)
LogSetGasForDestinationLzReceive
event LogSetGasForDestinationLzReceive(uint256 oldGasLimit, uint256 newGasLimit)
LogSetLiquidityHandler
event LogSetLiquidityHandler(address oldHandler, address newHandler)
LogSetUSDC
event LogSetUSDC(address usdc)
LogSetZapHelper
event LogSetZapHelper(address oldZapHelper, address newZapHelper)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
errors
Compounder2_InconsistentLength
error Compounder2_InconsistentLength()
Transfer_NativeFailed
error Transfer_NativeFailed(address _to, uint256 _value)
Transfer_ToAddressIsZero
error Transfer_ToAddressIsZero()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61511d80620000f46000396000f3fe6080604052600436106102895760003560e01c80621d35671461029557806307e0db17146102b75780630df37483146102d75780630ff5f8b5146102f757806310ddb137146103175780631ddbddd614610337578063282e720e1461035757806331c36e781461036a5780633b5a0a711461037d5780633d8b38f61461039d5780633e413bee146103d25780633f1f4fa4146103ff57806342d65a8d1461043a5780634f64b2be1461045a57806352e136cc1461047a578063556382b81461049a5780635b8c41e6146104c75780635fa7b58414610516578063603bf3f314610536578063644b2d0f1461055657806366ad5c8a146105765780636a0bd0d9146105965780636f54a681146105c7578063715018a6146105e757806371adb283146105fc5780637533d7881461061c5780638cfd8f5c146106495780638da5cb5b1461068157806393eb049d14610696578063943fb872146106b6578063950c8a74146106d6578063973f927c146106f65780639f38369a14610709578063a334125d14610729578063a6c3d16514610749578063a7229fd914610769578063ae470d9114610789578063b353aaa71461079c578063b3e089a2146107bc578063b9dfad79146107dc578063baf3292d146107fc578063c44618341461081c578063c8cf993714610832578063cbed8b9c14610848578063d1deba1f14610868578063d2d3c8b41461087b578063d5eb23921461089b578063d8d009f0146108bb578063d9e08811146108db578063df2a5b3b146108fb578063e4595db21461091b578063e992ef5e1461092e578063eb8d72b71461094e578063ed193e291461096e578063f2fde38b1461099e578063f3234f40146109be578063f5ecbdbc146109d457600080fd5b3661029057005b600080fd5b3480156102a157600080fd5b506102b56102b0366004613eb4565b6109f4565b005b3480156102c357600080fd5b506102b56102d2366004613f47565b610c10565b3480156102e357600080fd5b506102b56102f2366004613f62565b610c7d565b34801561030357600080fd5b506102b5610312366004613faf565b610c9c565b34801561032357600080fd5b506102b5610332366004613f47565b610d89565b34801561034357600080fd5b506102b5610352366004613fe8565b610dc1565b6102b5610365366004614170565b610e32565b6102b5610378366004614208565b610ea1565b34801561038957600080fd5b506102b5610398366004613fe8565b610f0f565b3480156103a957600080fd5b506103bd6103b8366004614293565b610f80565b60405190151581526020015b60405180910390f35b3480156103de57600080fd5b5060d6546103f2906001600160a01b031681565b6040516103c991906142e5565b34801561040b57600080fd5b5061042c61041a366004613f47565b60686020526000908152604090205481565b6040519081526020016103c9565b34801561044657600080fd5b506102b5610455366004614293565b61104c565b34801561046657600080fd5b506103f26104753660046142f9565b6110b6565b34801561048657600080fd5b5060ca546103f2906001600160a01b031681565b3480156104a657600080fd5b506104ba6104b53660046142f9565b6110e0565b6040516103c99190614312565b3480156104d357600080fd5b5061042c6104e2366004614348565b6097602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561052257600080fd5b506102b5610531366004613fe8565b611118565b34801561054257600080fd5b506102b5610551366004614445565b61126c565b34801561056257600080fd5b506102b56105713660046144a8565b611394565b34801561058257600080fd5b506102b5610591366004613eb4565b61145f565b3480156105a257600080fd5b506104ba6105b1366004613fe8565b60d16020526000908152604090205461ffff1681565b3480156105d357600080fd5b506102b56105e2366004614540565b611533565b3480156105f357600080fd5b506102b5611670565b34801561060857600080fd5b5060cd546103f2906001600160a01b031681565b34801561062857600080fd5b5061063c610637366004613f47565b611684565b6040516103c991906145e9565b34801561065557600080fd5b5061042c6106643660046145fc565b606760209081526000928352604080842090915290825290205481565b34801561068d57600080fd5b506103f261171e565b3480156106a257600080fd5b5060c9546103f2906001600160a01b031681565b3480156106c257600080fd5b506102b56106d13660046142f9565b61172d565b3480156106e257600080fd5b506069546103f2906001600160a01b031681565b6102b561070436600461462f565b611776565b34801561071557600080fd5b5061063c610724366004613f47565b611790565b34801561073557600080fd5b506103f26107443660046146a2565b6118a6565b34801561075557600080fd5b506102b5610764366004614293565b6118ea565b34801561077557600080fd5b506102b56107843660046146c4565b611966565b6102b5610797366004614705565b611979565b3480156107a857600080fd5b506065546103f2906001600160a01b031681565b3480156107c857600080fd5b506102b56107d7366004613fe8565b611ad7565b3480156107e857600080fd5b506102b56107f7366004614743565b611b38565b34801561080857600080fd5b506102b5610817366004613fe8565b611b6f565b34801561082857600080fd5b5061042c61271081565b34801561083e57600080fd5b5061042c60d05481565b34801561085457600080fd5b506102b56108633660046147af565b611bcd565b6102b5610876366004613eb4565b611c46565b34801561088757600080fd5b506102b561089636600461481d565b611e5c565b3480156108a757600080fd5b5060d5546103f2906001600160a01b031681565b3480156108c757600080fd5b506102b56108d6366004613fe8565b611fc3565b3480156108e757600080fd5b5060d4546103f2906001600160a01b031681565b34801561090757600080fd5b506102b56109163660046148cb565b612034565b6102b5610929366004613faf565b6120e6565b34801561093a57600080fd5b506103f26109493660046142f9565b612231565b34801561095a57600080fd5b506102b5610969366004614293565b612241565b34801561097a57600080fd5b506103bd610989366004613fe8565b60cc6020526000908152604090205460ff1681565b3480156109aa57600080fd5b506102b56109b9366004613fe8565b61229b565b3480156109ca57600080fd5b5061042c60d35481565b3480156109e057600080fd5b5061063c6109ef366004614907565b612314565b6065546001600160a01b0316336001600160a01b031614610a5c5760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526066602052604081208054610a7a90614954565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa690614954565b8015610af35780601f10610ac857610100808354040283529160200191610af3565b820191906000526020600020905b815481529060010190602001808311610ad657829003601f168201915b50505050509050805186869050148015610b0e575060008151115b8015610b36575080516020820120604051610b2c908890889061498e565b6040518091039020145b610b915760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610a53565b610c078787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506123a992505050565b50505050505050565b610c18612422565b6065546040516307e0db1760e01b81526001600160a01b03909116906307e0db1790610c48908490600401614312565b600060405180830381600087803b158015610c6257600080fd5b505af1158015610c76573d6000803e3d6000fd5b5050505050565b610c85612422565b61ffff909116600090815260686020526040902055565b610ca4612422565b6001600160a01b038216600090815260cc60205260409020805460ff19168215801591909117909155610d4c5760ca5460405163095ea7b360e01b81526001600160a01b038481169263095ea7b392610d0792909116906000199060040161499e565b6020604051808303816000875af1158015610d26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4a91906149b7565b505b7f620eb6364251a296acd084afce13f309351d07798a8e685b4fed072a636d63658282604051610d7d9291906149d4565b60405180910390a15050565b610d91612422565b6065546040516310ddb13760e01b81526001600160a01b03909116906310ddb13790610c48908490600401614312565b610dc9612422565b60d4546040517f77ed63adc83ac5ed225aac31552de3888ec4a5614b104d66c53f5afd6347b4f291610e08916001600160a01b039091169084906149ef565b60405180910390a160d480546001600160a01b0319166001600160a01b0392909216919091179055565b610e3f3387878787612481565b6000610e4d336001846125f6565b90508215610e6457610e5f33826133d7565b610c07565b8015610c0757604051339082156108fc029083906000818181858888f19350505050158015610e97573d6000803e3d6000fd5b5050505050505050565b610eae3386868686612481565b6000610ebd33600160006125f6565b90508115610ed457610ecf33826133d7565b610f07565b8015610f0757604051339082156108fc029083906000818181858888f19350505050158015610c07573d6000803e3d6000fd5b505050505050565b610f17612422565b60d5546040517f62400b18faf616cb9868e26f58bbcbac802a123a57c685667e5e4d63bb07be3f91610f56916001600160a01b039091169084906149ef565b60405180910390a160d580546001600160a01b0319166001600160a01b0392909216919091179055565b61ffff831660009081526066602052604081208054829190610fa190614954565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcd90614954565b801561101a5780601f10610fef5761010080835404028352916020019161101a565b820191906000526020600020905b815481529060010190602001808311610ffd57829003601f168201915b50505050509050838360405161103192919061498e565b60405180910390208180519060200120149150509392505050565b611054612422565b6065546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d9061108890869086908690600401614a32565b600060405180830381600087803b1580156110a257600080fd5b505af1158015610c07573d6000803e3d6000fd5b60cb81815481106110c657600080fd5b6000918252602090912001546001600160a01b0316905081565b60d281815481106110f057600080fd5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b611120612422565b60cb5460005b8181101561126757826001600160a01b031660cb828154811061114b5761114b614a50565b6000918252602090912001546001600160a01b03160361125f5760cb805461117590600190614a7c565b8154811061118557611185614a50565b60009182526020909120015460cb80546001600160a01b0390921691839081106111b1576111b1614a50565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060cb8054806111f0576111f0614a95565b6001900381819060005260206000200160006101000a8154906001600160a01b0302191690559055611223836000610c9c565b7fc459bfeac99abefb39c79f8c9bde7a7e1823b71c3b3f6a55a8544727d2c7ac7c8360405161125291906142e5565b60405180910390a1505050565b600101611126565b505050565b611274612422565b8051825114611296576040516342fb19e160e11b815260040160405180910390fd5b60005b8251811015611267577feb51f0475c46d1f0dc986feb7a520a76f4e10e6a6a98d7ecbe4da0dfaa1186d98382815181106112d5576112d5614a50565b60200260200101518383815181106112ef576112ef614a50565b602002602001015160405161131d9291906001600160a01b0392909216825261ffff16602082015260400190565b60405180910390a181818151811061133757611337614a50565b602002602001015160d1600085848151811061135557611355614a50565b6020908102919091018101516001600160a01b03168252810191909152604001600020805461ffff191661ffff92909216919091179055600101611299565b61139c612422565b60005b815181101561145b577f3d5d7210377ee8663a591d5fd61edea7ff21493ea5ddeec48d65f6ea6aae9d1b8282815181106113db576113db614a50565b60200260200101516040516113f09190614312565b60405180910390a160d282828151811061140c5761140c614a50565b6020908102919091018101518254600181810185556000948552929093206010840401805461ffff9283166002600f909616959095026101000a9485029290940219909316179091550161139f565b5050565b3330146114bd5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610a53565b610f078686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061347b92505050565b61153b612422565b81518151811461155e576040516342fb19e160e11b815260040160405180910390fd5b60005b8181101561166a5760cb84828151811061157d5761157d614a50565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905583516115f7908590839081106115d0576115d0614a50565b60200260200101518483815181106115ea576115ea614a50565b6020026020010151610c9c565b7f36646e34548f0efccb4f6147eeb92fe0cab810c7df28306d791d5d6539a51a9e84828151811061162a5761162a614a50565b602002602001015184838151811061164457611644614a50565b602002602001015160405161165a9291906149d4565b60405180910390a1600101611561565b50505050565b611678612422565b611682600061349e565b565b6066602052600090815260409020805461169d90614954565b80601f01602080910402602001604051908101604052809291908181526020018280546116c990614954565b80156117165780601f106116eb57610100808354040283529160200191611716565b820191906000526020600020905b8154815290600101906020018083116116f957829003601f168201915b505050505081565b6033546001600160a01b031690565b611735612422565b60d35460408051918252602082018390527f9698c1d91697cd0a62063d5a015b94279d48ab7df5acd71f5c09da157238ce7c910160405180910390a160d355565b6117833385858585612481565b610c7633600160006125f6565b61ffff81166000908152606660205260408120805460609291906117b390614954565b80601f01602080910402602001604051908101604052809291908181526020018280546117df90614954565b801561182c5780601f106118015761010080835404028352916020019161182c565b820191906000526020600020905b81548152906001019060200180831161180f57829003601f168201915b5050505050905080516000036118845760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610a53565b61189f6000601483516118979190614a7c565b8391906134f0565b9392505050565b60cf82815481106118b657600080fd5b9060005260206000200181815481106118ce57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6118f2612422565b81813060405160200161190793929190614aab565b60408051601f1981840301815291815261ffff85166000908152606660205220906119329082614b27565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161125293929190614a32565b61196e612422565b6112678383836135fd565b611a7f8360ce8054806020026020016040519081016040528092919081815260200182805480156119d357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119b5575b505050505060cf805480602002602001604051908101604052809291908181526020016000905b82821015611a7057600084815260209081902083018054604080518285028101850190915281815292830182828015611a5c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a3e575b5050505050815260200190600101906119fa565b5050505060d054600019612481565b6000611a8d846001846125f6565b90508215611aa457611a9f84826133d7565b61166a565b801561166a57604051339082156108fc029083906000818181858888f19350505050158015610c76573d6000803e3d6000fd5b611adf612422565b7f103c5bd4d1fbed26f9d95c639ecfb64bbece2b8f7d599a45f9aaab41c3e9ded081604051611b0e91906142e5565b60405180910390a160d680546001600160a01b0319166001600160a01b0392909216919091179055565b611b40612422565b8251611b539060ce906020860190613d30565b508151611b679060cf906020850190613d95565b5060d0555050565b611b77612422565b606980546001600160a01b0319166001600160a01b0383161790556040517f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b90611bc29083906142e5565b60405180910390a150565b611bd5612422565b6065546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c90611c0d9088908890889088908890600401614be0565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b505050505050505050565b61ffff86166000908152609760205260408082209051611c69908890889061498e565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611ce95760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610a53565b808383604051611cfa92919061498e565b604051809103902014611d595760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610a53565b61ffff87166000908152609760205260408082209051611d7c908990899061498e565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611e14918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061347b92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611e4b959493929190614c0e565b60405180910390a150505050505050565b600054610100900460ff1615808015611e7c5750600054600160ff909116105b80611e9d5750611e8b30613620565b158015611e9d575060005460ff166001145b611f005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a53565b6000805460ff191660011790558015611f23576000805461ff0019166101001790555b611f2c8261362f565b60c980546001600160a01b03808a166001600160a01b03199283161790925560ca805492891692909116919091179055611f668585611533565b60cd80546001600160a01b0319166001600160a01b0385161790558015610c07576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611e4b565b611fcb612422565b60ca546040517f84072d63ef4eee188521e92a9e4add98e65be501255aa6a505b14307d35c9d919161200a916001600160a01b039091169084906149ef565b60405180910390a160ca80546001600160a01b0319166001600160a01b0392909216919091179055565b61203c612422565b600081116120845760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610a53565b61ffff83811660008181526067602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611252565b6121dd8260ce80548060200260200160405190810160405280929190818152602001828054801561214057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612122575b505050505060cf805480602002602001604051908101604052809291908181526020016000905b82821015611a70576000848152602090819020830180546040805182850281018501909152818152928301828280156121c957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116121ab575b505050505081526020019060010190612167565b60006121ec83600160006125f6565b905081156121fe5761126783826133d7565b801561126757604051339082156108fc029083906000818181858888f1935050505015801561166a573d6000803e3d6000fd5b60ce81815481106110c657600080fd5b612249612422565b61ffff83166000908152606660205260409020612267828483614c49565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161125293929190614a32565b6122a3612422565b6001600160a01b0381166123085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a53565b6123118161349e565b50565b606554604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015612376573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261239e9190810190614d02565b90505b949350505050565b60008061240c5a60966366ad5c8a60e01b898989896040516024016123d19493929190614d78565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190613667565b9150915081610f0757610f0786868686856136f1565b3361242b61171e565b6001600160a01b0316146116825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a53565b835160005b81811015610c07578581815181106124a0576124a0614a50565b602090810291909101015160cd546001600160a01b0391821691160361255b578581815181106124d2576124d2614a50565b60200260200101516001600160a01b0316635ceed29f8886868986815181106124fd576124fd614a50565b60200260200101516040518563ffffffff1660e01b81526004016125249493929190614dfa565b600060405180830381600087803b15801561253e57600080fd5b505af1158015612552573d6000803e3d6000fd5b505050506125ee565b85818151811061256d5761256d614a50565b60200260200101516001600160a01b031663f3603cca8887848151811061259657612596614a50565b60200260200101516040518363ffffffff1660e01b81526004016125bb929190614e31565b600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050505b600101612486565b60006126336040518060a001604052806000815260200160008152602001606081526020016000815260200160006001600160a01b031681525090565b60cb54815234606082015260005b81518110156133ca5760cb818154811061265d5761265d614a50565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906126969030906004016142e5565b602060405180830381865afa1580156126b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d79190614e55565b60208084019182526040805191820181526000825284015251156133c25760c95460cb80546001600160a01b03909216918390811061271857612718614a50565b6000918252602090912001546001600160a01b0316148061277c575084801561277c575060cc600060cb838154811061275357612753614a50565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff165b156129535760cb818154811061279457612794614a50565b60009182526020909120015460ca5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926127d5929116906000199060040161499e565b6020604051808303816000875af11580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281891906149b7565b5060ca5460cb80546001600160a01b0390921691638340f5499189918590811061284457612844614a50565b600091825260209182902001549086015160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156128a457600080fd5b505af11580156128b8573d6000803e3d6000fd5b5050505060cb81815481106128cf576128cf614a50565b600091825260208220015460ca5460405163095ea7b360e01b81526001600160a01b039283169363095ea7b39361290a93169160040161499e565b6020604051808303816000875af1158015612929573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294d91906149b7565b506133c2565b600060d1600060cb848154811061296c5761296c614a50565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461ffff161115612ed05760cb81815481106129ae576129ae614a50565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa1580156129fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a209190614e6e565b60ff1660061480612acb575060cb8181548110612a3f57612a3f614a50565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa158015612a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab19190614e6e565b60ff166012148015612acb575064e8d4a510008260200151115b15612ecb5760cb8181548110612ae357612ae3614a50565b60009182526020808320909101546001600160a01b03166080850181905260408051633b58a71760e21b81529051919363ed629c5c93600480840194919391929183900301908290875af1158015612b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6391906149b7565b15612c4d57600182608001516001600160a01b0316638cfd8f5c60d1600060cb8681548110612b9457612b94614a50565b6000918252602080832091909101546001600160a01b031683528201929092526040908101822054905160e084901b6001600160e01b031916815261ffff909116600482015260248101919091526044016020604051808303816000875af1158015612c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c289190614e55565b604051602001612c39929190614e91565b60408051601f198184030181529181528301525b60655460cb80546000926001600160a01b0316916340a7bb109160d191859187908110612c7c57612c7c614a50565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460cb805461ffff9092169186908110612cbc57612cbc614a50565b60009182526020822001546001600160a01b031690612cda8c61378e565b6020808a0151604051612d0f9493920160f89390931b6001600160f81b03191683526001830191909152602182015260410190565b60408051601f19818403018152828252908901516001600160e01b031960e087901b168352612d4694939260009190600401614eae565b6040805180830381865afa158015612d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d869190614f02565b50905060cb8281548110612d9c57612d9c614a50565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b031663695ef6bf823060d1600060cb8881548110612de157612de1614a50565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461ffff16612e138c61378e565b886020015160405180606001604052808f6001600160a01b0316815260200160006001600160a01b031681526020018b604001518152506040518763ffffffff1660e01b8152600401612e6a959493929190614f26565b6000604051808303818588803b158015612e8357600080fd5b505af1158015612e97573d6000803e3d6000fd5b50505050508083606001511115612ec2578083606001818151612eba9190614a7c565b90525061294d565b60006060840152505b6133c2565b60d65460cb80546001600160a01b039092169183908110612ef357612ef3614a50565b6000918252602090912001546001600160a01b0316148015612f2657506001846002811115612f2457612f24614f81565b145b156130965760cb8181548110612f3e57612f3e614a50565b60009182526020909120015460d55460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f7f929116906000199060040161499e565b6020604051808303816000875af1158015612f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc291906149b7565b5060d554602083015160405163c4e2ac2160e01b815260048101919091526001600160a01b038881166024830152600160448301529091169063c4e2ac21906064016020604051808303816000875af1158015613023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130479190614e55565b5060cb818154811061305b5761305b614a50565b600091825260208220015460d55460405163095ea7b360e01b81526001600160a01b039283169363095ea7b39361290a93169160040161499e565b60d65460cb80546001600160a01b0390921691839081106130b9576130b9614a50565b6000918252602090912001546001600160a01b03161480156130ec575060028460028111156130ea576130ea614f81565b145b1561338a5760cb818154811061310457613104614a50565b60009182526020909120015460d45460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392613145929116906000199060040161499e565b6020604051808303816000875af1158015613164573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318891906149b7565b5060d45460408051636bd11b0560e11b815290516000926001600160a01b03169163d7a2360a9160048083019260209291908290030181865afa1580156131d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f79190614e55565b9050600060d460009054906101000a90046001600160a01b03166001600160a01b0316630ba81afd838a60cb878154811061323457613234614a50565b600091825260208083209190910154908a015160405160e087901b6001600160e01b03191681526001600160a01b0394851660048201529390911660248401526044830152606482018190526084820187905260a4820181905260c482015260e40160206040518083038185885af11580156132b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132d99190614e55565b905060cb83815481106132ee576132ee614a50565b600091825260208220015460d45460405163095ea7b360e01b81526001600160a01b039283169363095ea7b39361332993169160040161499e565b6020604051808303816000875af1158015613348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336c91906149b7565b50818460600181815161337f9190614a7c565b9052506133c2915050565b6133c286836020015160cb84815481106133a6576133a6614a50565b6000918252602090912001546001600160a01b0316919061379a565b600101612641565b5060600151949350505050565b60d3546040516001916000916133f1918491602001614e91565b604051602081830303815290604052905060005b60d254811015610c765761347360d2828154811061342557613425614a50565b90600052602060002090601091828204019190066002029054906101000a900461ffff168660405160200161345a91906142e5565b60405160208183030381529060405287600086896137f0565b600101613405565b6000818060200190518101906134919190614f97565b9050610c768160006120e6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060816134fe81601f614fb4565b101561353d5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a53565b6135478284614fb4565b8451101561358b5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a53565b6060821580156135aa57604051915060008252602082016040526135f4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156135e35780518352602092830192016135cb565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b038316613615576112678282613979565b611267838383613a18565b6001600160a01b03163b151590565b600054610100900460ff166136565760405162461bcd60e51b8152600401610a5390614fc7565b61365e613a53565b61231181613a83565b6000606060008060008661ffff166001600160401b0381111561368c5761368c614005565b6040519080825280601f01601f1916602001820160405280156136b6576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156136d8578692505b828152826000602083013e909890975095505050505050565b8180519060200120609760008761ffff1661ffff168152602001908152602001600020856040516137229190615012565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c9061377f908790879087908790879061502e565b60405180910390a15050505050565b6001600160a01b031690565b6112678363a9059cbb60e01b84846040516024016137b992919061499e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613acc565b61ffff86166000908152606660205260408120805461380e90614954565b80601f016020809104026020016040519081016040528092919081815260200182805461383a90614954565b80156138875780601f1061385c57610100808354040283529160200191613887565b820191906000526020600020905b81548152906001019060200180831161386a57829003601f168201915b5050505050905080516000036138f85760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610a53565b613903878751613b9e565b60655460405162c5803160e81b81526001600160a01b039091169063c580310090849061393e908b9086908c908c908c908c90600401615080565b6000604051808303818588803b15801561395757600080fd5b505af115801561396b573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b0382166139a0576040516306b7a93160e41b815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146139ed576040519150601f19603f3d011682016040523d82523d6000602084013e6139f2565b606091505b5050905080611267578282604051631196f20d60e21b8152600401610a5392919061499e565b6001600160a01b038216613a3f576040516306b7a93160e41b815260040160405180910390fd5b6112676001600160a01b038416838361379a565b600054610100900460ff16613a7a5760405162461bcd60e51b8152600401610a5390614fc7565b6116823361349e565b600054610100900460ff16613aaa5760405162461bcd60e51b8152600401610a5390614fc7565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000613b21826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613c0f9092919063ffffffff16565b8051909150156112675780806020019051810190613b3f91906149b7565b6112675760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a53565b61ffff821660009081526068602052604081205490819003613bbf57506127105b808211156112675760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610a53565b60606123a1848460008585600080866001600160a01b03168587604051613c369190615012565b60006040518083038185875af1925050503d8060008114613c73576040519150601f19603f3d011682016040523d82523d6000602084013e613c78565b606091505b5091509150613c8987838387613c94565b979650505050505050565b60608315613d01578251600003613cfa57613cae85613620565b613cfa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a53565b50816123a1565b6123a18383815115613d165781518083602001fd5b8060405162461bcd60e51b8152600401610a5391906145e9565b828054828255906000526020600020908101928215613d85579160200282015b82811115613d8557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613d50565b50613d91929150613dee565b5090565b828054828255906000526020600020908101928215613de2579160200282015b82811115613de25782518051613dd2918491602090910190613d30565b5091602001919060010190613db5565b50613d91929150613e03565b5b80821115613d915760008155600101613def565b80821115613d91576000613e178282613e20565b50600101613e03565b50805460008255906000526020600020908101906123119190613dee565b803561ffff81168114613e5057600080fd5b919050565b60008083601f840112613e6757600080fd5b5081356001600160401b03811115613e7e57600080fd5b602083019150836020828501011115613e9657600080fd5b9250929050565b80356001600160401b0381168114613e5057600080fd5b60008060008060008060808789031215613ecd57600080fd5b613ed687613e3e565b955060208701356001600160401b0380821115613ef257600080fd5b613efe8a838b01613e55565b9097509550859150613f1260408a01613e9d565b94506060890135915080821115613f2857600080fd5b50613f3589828a01613e55565b979a9699509497509295939492505050565b600060208284031215613f5957600080fd5b61189f82613e3e565b60008060408385031215613f7557600080fd5b613f7e83613e3e565b946020939093013593505050565b6001600160a01b038116811461231157600080fd5b801515811461231157600080fd5b60008060408385031215613fc257600080fd5b8235613fcd81613f8c565b91506020830135613fdd81613fa1565b809150509250929050565b600060208284031215613ffa57600080fd5b813561189f81613f8c565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561404357614043614005565b604052919050565b60006001600160401b0382111561406457614064614005565b5060051b60200190565b600082601f83011261407f57600080fd5b8135602061409461408f8361404b565b61401b565b82815260059290921b840181019181810190868411156140b357600080fd5b8286015b848110156140d75780356140ca81613f8c565b83529183019183016140b7565b509695505050505050565b600082601f8301126140f357600080fd5b8135602061410361408f8361404b565b82815260059290921b8401810191818101908684111561412257600080fd5b8286015b848110156140d75780356001600160401b038111156141455760008081fd5b6141538986838b010161406e565b845250918301918301614126565b803560038110613e5057600080fd5b60008060008060008060c0878903121561418957600080fd5b86356001600160401b03808211156141a057600080fd5b6141ac8a838b0161406e565b975060208901359150808211156141c257600080fd5b506141cf89828a016140e2565b955050604087013593506060870135925060808701356141ee81613fa1565b91506141fc60a08801614161565b90509295509295509295565b600080600080600060a0868803121561422057600080fd5b85356001600160401b038082111561423757600080fd5b61424389838a0161406e565b9650602088013591508082111561425957600080fd5b50614266888289016140e2565b9450506040860135925060608601359150608086013561428581613fa1565b809150509295509295909350565b6000806000604084860312156142a857600080fd5b6142b184613e3e565b925060208401356001600160401b038111156142cc57600080fd5b6142d886828701613e55565b9497909650939450505050565b6001600160a01b0391909116815260200190565b60006020828403121561430b57600080fd5b5035919050565b61ffff91909116815260200190565b60006001600160401b0382111561433a5761433a614005565b50601f01601f191660200190565b60008060006060848603121561435d57600080fd5b61436684613e3e565b925060208401356001600160401b0381111561438157600080fd5b8401601f8101861361439257600080fd5b80356143a061408f82614321565b8181528760208385010111156143b557600080fd5b816020840160208301376000602083830101528094505050506143da60408501613e9d565b90509250925092565b600082601f8301126143f457600080fd5b8135602061440461408f8361404b565b82815260059290921b8401810191818101908684111561442357600080fd5b8286015b848110156140d75761443881613e3e565b8352918301918301614427565b6000806040838503121561445857600080fd5b82356001600160401b038082111561446f57600080fd5b61447b8683870161406e565b9350602085013591508082111561449157600080fd5b5061449e858286016143e3565b9150509250929050565b6000602082840312156144ba57600080fd5b81356001600160401b038111156144d057600080fd5b6123a1848285016143e3565b600082601f8301126144ed57600080fd5b813560206144fd61408f8361404b565b82815260059290921b8401810191818101908684111561451c57600080fd5b8286015b848110156140d757803561453381613fa1565b8352918301918301614520565b6000806040838503121561455357600080fd5b82356001600160401b038082111561456a57600080fd5b6145768683870161406e565b9350602085013591508082111561458c57600080fd5b5061449e858286016144dc565b60005b838110156145b457818101518382015260200161459c565b50506000910152565b600081518084526145d5816020860160208601614599565b601f01601f19169290920160200192915050565b60208152600061189f60208301846145bd565b6000806040838503121561460f57600080fd5b61461883613e3e565b915061462660208401613e3e565b90509250929050565b6000806000806080858703121561464557600080fd5b84356001600160401b038082111561465c57600080fd5b6146688883890161406e565b9550602087013591508082111561467e57600080fd5b5061468b878288016140e2565b949794965050505060408301359260600135919050565b600080604083850312156146b557600080fd5b50508035926020909101359150565b6000806000606084860312156146d957600080fd5b83356146e481613f8c565b925060208401356146f481613f8c565b929592945050506040919091013590565b60008060006060848603121561471a57600080fd5b833561472581613f8c565b9250602084013561473581613fa1565b91506143da60408501614161565b60008060006060848603121561475857600080fd5b83356001600160401b038082111561476f57600080fd5b61477b8783880161406e565b9450602086013591508082111561479157600080fd5b5061479e868287016140e2565b925050604084013590509250925092565b6000806000806000608086880312156147c757600080fd5b6147d086613e3e565b94506147de60208701613e3e565b93506040860135925060608601356001600160401b0381111561480057600080fd5b61480c88828901613e55565b969995985093965092949392505050565b60008060008060008060c0878903121561483657600080fd5b863561484181613f8c565b9550602087013561485181613f8c565b945060408701356001600160401b038082111561486d57600080fd5b6148798a838b0161406e565b9550606089013591508082111561488f57600080fd5b5061489c89828a016144dc565b93505060808701356148ad81613f8c565b915060a08701356148bd81613f8c565b809150509295509295509295565b6000806000606084860312156148e057600080fd5b6148e984613e3e565b92506148f760208501613e3e565b9150604084013590509250925092565b6000806000806080858703121561491d57600080fd5b61492685613e3e565b935061493460208601613e3e565b9250604085013561494481613f8c565b9396929550929360600135925050565b600181811c9082168061496857607f821691505b60208210810361498857634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b6001600160a01b03929092168252602082015260400190565b6000602082840312156149c957600080fd5b815161189f81613fa1565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8416815260406020820152600061239e604083018486614a09565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115614a8f57614a8f614a66565b92915050565b634e487b7160e01b600052603160045260246000fd5b8284823760609190911b6001600160601b0319169101908152601401919050565b601f82111561126757600081815260208120601f850160051c81016020861015614af35750805b601f850160051c820191505b81811015610f0757828155600101614aff565b600019600383901b1c191660019190911b1790565b81516001600160401b03811115614b4057614b40614005565b614b5481614b4e8454614954565b84614acc565b602080601f831160018114614b835760008415614b715750858301515b614b7b8582614b12565b865550610f07565b600085815260208120601f198616915b82811015614bb257888601518255948401946001909101908401614b93565b5085821015614bd05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff808816835280871660208401525084604083015260806060830152613c89608083018486614a09565b61ffff86168152608060208201526000614c2c608083018688614a09565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b03831115614c6057614c60614005565b614c7483614c6e8354614954565b83614acc565b6000601f841160018114614ca25760008515614c905750838201355b614c9a8682614b12565b845550610c76565b600083815260209020601f19861690835b82811015614cd35786850135825560209485019460019092019101614cb3565b5086821015614cf05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600060208284031215614d1457600080fd5b81516001600160401b03811115614d2a57600080fd5b8201601f81018413614d3b57600080fd5b8051614d4961408f82614321565b818152856020838501011115614d5e57600080fd5b614d6f826020830160208601614599565b95945050505050565b61ffff85168152608060208201526000614d9560808301866145bd565b6001600160401b03851660408401528281036060840152613c8981856145bd565b600081518084526020808501945080840160005b83811015614def5781516001600160a01b031687529582019590820190600101614dca565b509495945050505050565b60018060a01b0385168152836020820152826040820152608060608201526000614e276080830184614db6565b9695505050505050565b6001600160a01b03831681526040602082018190526000906123a190830184614db6565b600060208284031215614e6757600080fd5b5051919050565b600060208284031215614e8057600080fd5b815160ff8116811461189f57600080fd5b60f09290921b6001600160f01b0319168252600282015260220190565b61ffff861681526001600160a01b038516602082015260a060408201819052600090614edc908301866145bd565b84151560608401528281036080840152614ef681856145bd565b98975050505050505050565b60008060408385031215614f1557600080fd5b505080516020909101519092909150565b600060018060a01b03808816835261ffff8716602084015285604084015284606084015260a060808401528084511660a08401528060208501511660c0840152506040830151606060e0840152614ef66101008401826145bd565b634e487b7160e01b600052602160045260246000fd5b600060208284031215614fa957600080fd5b815161189f81613f8c565b80820180821115614a8f57614a8f614a66565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615024818460208701614599565b9190910192915050565b61ffff8616815260a06020820152600061504b60a08301876145bd565b6001600160401b0386166040840152828103606084015261506c81866145bd565b90508281036080840152614ef681856145bd565b61ffff8716815260c06020820152600061509d60c08301886145bd565b82810360408401526150af81886145bd565b6001600160a01b0387811660608601528616608085015283810360a085015290506150da81856145bd565b999850505050505050505056fea26469706673582212207cbc907086d411743b67998b6389989dd27b19df5d5c59c8e7f3aba998ff734464736f6c63430008120033