0 txs
6 calls
constructor
constructor()
functions
_getEthSignedMessageHash
purefunction _getEthSignedMessageHash(bytes32 _messageHash) pure returns (bytes32)
_signatureVerificationSigner
viewfunction _signatureVerificationSigner() view returns (address)
ABI_VERSION
viewfunction ABI_VERSION() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
encodeDepositParams
purefunction encodeDepositParams(tuple depositParams) pure returns (bytes32)
encodeRedeemParams
purefunction encodeRedeemParams(tuple redeemParams) pure returns (bytes32)
getBalance
viewfunction getBalance(address assetAddress) view returns (uint256)
getFeesAccount
viewfunction getFeesAccount() view returns (address)
getRedemptionFee
viewfunction getRedemptionFee() view returns (uint256)
getRedemptionFeeAmount
viewfunction getRedemptionFeeAmount(uint256 amount) view returns (uint256 feeAmount)
getSafeHarborModeEnabled
viewfunction getSafeHarborModeEnabled() view returns (bool)
getVersion
viewfunction getVersion() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256 totalAssetsAmount)
totalSupply
viewfunction totalSupply() view returns (uint256)
VAULT
viewfunction VAULT() view returns (address)
WRAPPED_NATIVE_ASSET_ADDRESS
viewfunction WRAPPED_NATIVE_ASSET_ADDRESS() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
payablefunction deposit(address receiver, tuple depositParams, bytes depositParamsSignature) payable returns (uint256 shares, uint256 assetsAdded)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _vault, address __asset, string _name, string _symbol, address _wrappedNativeAssetAddress, address _strategyAdmin, address _sigVerificationSigner, address _feeAccount)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
redeem
nonpayablefunction redeem(address receiver, address _owner, tuple redeemParams, bytes redeemParamsSignature) returns (tuple tokensRemoved)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeesAccount
nonpayablefunction setFeesAccount(address _value)
setMaxTransfersPerBlock
nonpayablefunction setMaxTransfersPerBlock(uint256 maxTransfers)
setRedemptionFee
nonpayablefunction setRedemptionFee(uint256 _value)
setSafeHarborRedemptions
nonpayablefunction setSafeHarborRedemptions(bool allow)
setSafeLTVThreshold
nonpayablefunction setSafeLTVThreshold(uint256 threshold)
setSharesToAssetRatioThreshold
nonpayablefunction setSharesToAssetRatioThreshold(uint256 threshold)
setSignatureVerificationSigner
nonpayablefunction setSignatureVerificationSigner(address signer)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
FeeAccountUpdated
event FeeAccountUpdated(address actor, address feeAccount)
Initialized
event Initialized(uint8 version)
MaxTransfersPerBlockUpdate
event MaxTransfersPerBlockUpdate(uint256 maxTransfers)
Mint
event Mint((address sender, address owner, (uint256[] amounts, address[] addresses) tokensAdded, uint256 assetsAdded, uint256 shares) mintEvent)
NativeAssetWrap
event NativeAssetWrap(address actor, uint256 amount, bool indexed wrappingToNative)
NativeTransfer
event NativeTransfer(address indexed from, uint256 value)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Redeem
event Redeem((address sender, address receiver, address owner, (uint256[] amounts, address[] addresses) tokensRemoved, uint256 assetsRemoved, uint256 shares) redeemEvent)
RedemptionFee
event RedemptionFee(address actor, address asset, uint256 amount, uint256 feeAmount, uint256 additionalFeeAmount)
RedemptionFeeUpdated
event RedemptionFeeUpdated(address actor, uint256 redemptionFee)
SignatureVerificationSignerUpdate
event SignatureVerificationSignerUpdate(address signer, address updatedBy)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UpdateSafeLTVThreshold
event UpdateSafeLTVThreshold(address sender, uint256 threshold)
UpdateSharesToAssetsRatioThreshold
event UpdateSharesToAssetsRatioThreshold(address sender, uint256 threshold)
Upgraded
event Upgraded(address indexed implementation)
errors
AccountNotAdmin
error AccountNotAdmin(address)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
DeadlineExceeded
error DeadlineExceeded()
EnforcedSafeLTV
error EnforcedSafeLTV(uint256 invalidLTV)
ExceededShareToAssetRatioDeltaThreshold
error ExceededShareToAssetRatioDeltaThreshold()
FailedInnerCall
error FailedInnerCall()
InvalidERC20Address
error InvalidERC20Address()
InvalidInputs
error InvalidInputs()
InvalidMsgValue
error InvalidMsgValue()
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
NoSignatureVerificationSignerSet
error NoSignatureVerificationSignerSet()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SafeHarborModeEnabled
error SafeHarborModeEnabled()
TransfersLimitExceeded
error TransfersLimitExceeded()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516159b26200011f60003960008181610e6801528181610ef20152818161105a015281816110df015261155001526159b26000f3fe6080604052600436106102ab5760003560e01c80637018b08e11610164578063be666a08116100c6578063df881af61161008a578063f2fde38b11610064578063f2fde38b14610862578063f6b45cfd14610882578063f8b2cb4f1461089757600080fd5b8063df881af614610802578063e5ea2dbd14610822578063ef8b30f71461084257600080fd5b8063be666a081461072e578063c29ee25e1461075b578063c64fca111461077b578063dd62ed3e1461079c578063ddb00dfc146107e257600080fd5b80638da5cb5b11610128578063a457c2d711610102578063a457c2d7146106c1578063a9059cbb146106e1578063ac9650d81461070157600080fd5b80638da5cb5b1461065a57806395d89b41146106785780639cd6f0091461068d57600080fd5b80637018b08e146105ba57806370a08231146105da578063715018a6146106105780637dbc1df0146106255780638b0a15d71461064557600080fd5b8063313ce5671161020d5780634966528b116101d157806352d1902d116101ab57806352d1902d14610565578063676f774c1461057a5780636a63cee71461059a57600080fd5b80634966528b1461050a5780634f1ef2861461052a578063500c22bc1461053d57600080fd5b8063313ce567146104635780633659cfe61461048a57806338d52e0f146104aa57806339509351146104c9578063411557d1146104e957600080fd5b8063095ea7b31161026f5780631a532377116102495780631a5323771461040157806323b872dd1461042157806324906f861461044157600080fd5b8063095ea7b3146103a45780630d8e6e2c146103d457806318160ddd146103ec57600080fd5b806301038ad1146102ec57806301e1d1141461031f578063025fb6621461033457806305ca86661461036157806306fdde031461038257600080fd5b366102e75760405134815233907f88479153c5a43e333375e4daf2e98cddbb4cb43428c64efdab6e987c263b66209060200160405180910390a2005b600080fd5b3480156102f857600080fd5b5061030c6103073660046147cd565b6108b7565b6040519081526020015b60405180910390f35b34801561032b57600080fd5b5061030c6108e7565b34801561034057600080fd5b50610349610c7c565b6040516001600160a01b039091168152602001610316565b34801561036d57600080fd5b5061012f54610349906001600160a01b031681565b34801561038e57600080fd5b50610397610caf565b6040516103169190614852565b3480156103b057600080fd5b506103c46103bf366004614885565b610d41565b6040519015158152602001610316565b3480156103e057600080fd5b5060005460ff1661030c565b3480156103f857600080fd5b5060995461030c565b34801561040d57600080fd5b5061030c61041c3660046148b1565b610d5b565b34801561042d57600080fd5b506103c461043c3660046148ca565b610d96565b34801561044d57600080fd5b5061046161045c3660046148b1565b610dbc565b005b34801561046f57600080fd5b50610478610e3e565b60405160ff9091168152602001610316565b34801561049657600080fd5b506104616104a536600461490b565b610e5e565b3480156104b657600080fd5b50610130546001600160a01b0316610349565b3480156104d557600080fd5b506103c46104e4366004614885565b610fb5565b3480156104f557600080fd5b5061012e54610349906001600160a01b031681565b34801561051657600080fd5b5061046161052536600461490b565b610ff4565b6104616105383660046149f0565b611050565b61055061054b366004614aaf565b611193565b60408051928352602083019190915201610316565b34801561057157600080fd5b5061030c611543565b34801561058657600080fd5b50610461610595366004614b36565b611608565b3480156105a657600080fd5b5061030c6105b53660046148b1565b611645565b3480156105c657600080fd5b506104616105d5366004614b73565b611678565b3480156105e657600080fd5b5061030c6105f536600461490b565b6001600160a01b031660009081526097602052604090205490565b34801561061c57600080fd5b506104616118cb565b34801561063157600080fd5b506104616106403660046148b1565b6118df565b34801561065157600080fd5b506103c46118f0565b34801561066657600080fd5b506033546001600160a01b0316610349565b34801561068457600080fd5b5061039761195d565b34801561069957600080fd5b507f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc5461030c565b3480156106cd57600080fd5b506103c46106dc366004614885565b61196c565b3480156106ed57600080fd5b506103c46106fc366004614885565b611a09565b34801561070d57600080fd5b5061072161071c366004614c45565b611a17565b6040516103169190614cba565b34801561073a57600080fd5b5061074e610749366004614d1c565b611b03565b6040516103169190614e4e565b34801561076757600080fd5b506104616107763660046148b1565b611fe8565b34801561078757600080fd5b5061012d54610349906001600160a01b031681565b3480156107a857600080fd5b5061030c6107b7366004614e61565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b3480156107ee57600080fd5b506104616107fd36600461490b565b61201d565b34801561080e57600080fd5b5061030c61081d366004614e9a565b61202e565b34801561082e57600080fd5b5061046161083d3660046148b1565b612041565b34801561084e57600080fd5b5061030c61085d3660046148b1565b61207f565b34801561086e57600080fd5b5061046161087d36600461490b565b6120ba565b34801561088e57600080fd5b5061030c600181565b3480156108a357600080fd5b5061030c6108b236600461490b565b612130565b6000816040516020016108ca9190614ffb565b604051602081830303815290604052805190602001209050919050565b61012e546040805163312f6b8360e01b815290516000926001600160a01b0316918391839163312f6b839160048083019260209291908290030181865afa158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a91906150a7565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b0316630479d6446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d691906150a7565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b031663315deeaa6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5291906150c4565b9050600061012e60009054906101000a90046001600160a01b03166001600160a01b0316636d01875d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace91906150c4565b6040516370a0823160e01b81526001600160a01b0387811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e91906150c4565b6040516370a0823160e01b81526001600160a01b0388811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae91906150c4565b61012e5460408051638d6cb20960e01b8152815193945060009384936001600160a01b031692638d6cb20992600480820193918290030181865afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1e91906150dd565b9092509050610c2e84828461213b565b610c38908b615117565b9950610c44838b615117565b99508515610c7057610c5786828461213b565b610c61908b615117565b9950610c6d858b61512a565b99505b50505050505050505090565b60007f68433f9d83ac21ac7a279e7d087229a9129597a360563c499bb398b5664b27c15b546001600160a01b0316919050565b6060609a8054610cbe9061513d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cea9061513d565b8015610d375780601f10610d0c57610100808354040283529160200191610d37565b820191906000526020600020905b815481529060010190602001808311610d1a57829003601f168201915b5050505050905090565b600033610d4f81858561222d565b60019150505b92915050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016108ca565b600033610da4858285612351565b610daf8585856123e3565b60019150505b9392505050565b610dc461258e565b612710811180610dd2575080155b15610df0576040516379a67d5b60e11b815260040160405180910390fd5b6101318190557fdeb9dbe5b2059ee709cbce2d435120228838d8b25d6faba2b7a82d1765804d7a335b604080516001600160a01b03909216825260208201849052015b60405180910390a150565b60008061013054610e599190600160a01b900460ff16615171565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ef05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f22612781565b6001600160a01b031614610f8d5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ee7565b610f96816127a9565b60408051600080825260208201909252610fb2918391906127b1565b50565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190610d4f9082908690610fef908790615117565b61222d565b610ffc612942565b61012f80546001600160a01b0319166001600160a01b038316908117909155604080519182523360208301527ff9609f48c525640f20a918156cdb6ca7d8c7e9e7e4939bb1dc8944c5ea07b13a9101610e33565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110dd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ee7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661110f612781565b6001600160a01b03161461117a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ee7565b611183826127a9565b61118f828260016127b1565b5050565b60008061119e6118f0565b156111bc5760405163379917b760e21b815260040160405180910390fd5b84356111c78161299c565b60008060006111d46108e7565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906150c4565b92509250925061125d6129bd565b611265612a16565b6112ad6112718a61202e565b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6c92505050565b6112cb6112bd60408b018b61518a565b6112c690615242565b612ad9565b60006112eb6112dd60408c018c61518a565b6112e690615242565b612c40565b905060006112f76108e7565b905061130282612dae565b61012e5482516020840151604051632e04cb3d60e11b81526001600160a01b0390931692635c09967a9261133a929091600401615304565b600060405180830381600087803b15801561135457600080fd5b505af1158015611368573d6000803e3d6000fd5b505061012e546001600160a01b03169150638a850396905061138d60608e018e615329565b3561139b60608f018f615329565b6113a990602081019061533f565b8e80606001906113b99190615329565b604001356040518463ffffffff1660e01b81526004016113db93929190615355565b600060405180830381600087803b1580156113f557600080fd5b505af1158015611409573d6000803e3d6000fd5b5050505061012e60009054906101000a90046001600160a01b03166001600160a01b031663a53df2e26040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561145e57600080fd5b505af1158015611472573d6000803e3d6000fd5b505050508061147f6108e7565b611489919061512a565b965061149487612e32565b97506114a08c89612e94565b7fea6d2283017564fe3077751d8472a782667962d7a0aa847e4499a1d1223f77206040518060a001604052806114d33390565b6001600160a01b031681526020018e6001600160a01b031681526020018481526020018981526020018a81525060405161150d919061537e565b60405180910390a150506115216001606555565b61152c838383612f5c565b61153683836130af565b5050505094509492505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115e35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ee7565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61161061258e565b807fd8e383845db7ecbb6065c22cc5d1320931e4ef39a73fc10e0587d5257ff503795b805460ff191691151591909117905550565b6000610d55826116737f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc5490565b6131eb565b600054610100900460ff16158080156116985750600054600160ff909116105b806116b25750303b1580156116b2575060005460ff166001145b6117155760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ee7565b6000805460ff191660011790558015611738576000805461ff0019166101001790555b876001600160a01b0316896001600160a01b0316630479d6446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a491906150a7565b6001600160a01b0316146117cb576040516379a67d5b60e11b815260040160405180910390fd5b6117d789888885613204565b6117e083613257565b6117e8613297565b6117f1856132ce565b876000806117fe836132fe565b915091508161180e576012611810565b805b610130805474ffffffffffffffffffffffffffffffffffffffffff1916600160a01b60ff93909316929092026001600160a01b031916919091176001600160a01b0385161790556101f46101315564e8d4a5100061013255600161013555611877876133da565b50505080156118c0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6118d3612942565b6118dd60006133da565b565b6118e761258e565b610fb28161342c565b61012e5460408051621eab8360e01b815290516000926001600160a01b031691621eab839160048083019260209291908290030181865afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5991906153db565b6060609b8054610cbe9061513d565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190838110156119f15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ee7565b6119fe828686840361222d565b506001949350505050565b600033610d4f8185856123e3565b6060818067ffffffffffffffff811115611a3357611a33614928565b604051908082528060200260200182016040528015611a6657816020015b6060815260200190600190039081611a515790505b50915060005b81811015611afb57611ad630868684818110611a8a57611a8a6153f8565b9050602002810190611a9c919061540e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061349892505050565b838281518110611ae857611ae86153f8565b6020908102919091010152600101611a6c565b505092915050565b6040805180820190915260608082526020820152611b1f6118f0565b15611b3d5760405163379917b760e21b815260040160405180910390fd5b8335611b488161299c565b6000806000611b556108e7565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd091906150c4565b925092509250611bde6129bd565b611be6612a16565b611c2e611bf2896108b7565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6c92505050565b611c3661350e565b94506000611c426108e7565b61012e549091506001600160a01b031663686f957f611c6460a08c018c615455565b35611c7260a08d018d615455565b60200135611c8360a08e018e615455565b60400135611c9460a08f018f615455565b611ca290606081019061533f565b8e8060a00190611cb29190615455565b608001356040518663ffffffff1660e01b8152600401611cd695949392919061546b565b600060405180830381600087803b158015611cf057600080fd5b505af1158015611d04573d6000803e3d6000fd5b5050505060005b866020015151811015611e4a57600087602001518281518110611d3057611d306153f8565b602090810291909101015161012e546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da991906150c4565b905087600001518281518110611dc157611dc16153f8565b6020026020010151811115611e1c578751805183908110611de457611de46153f8565b602002602001015181611df7919061512a565b8851805184908110611e0b57611e0b6153f8565b602002602001018181525050611e41565b600088600001518381518110611e3457611e346153f8565b6020026020010181815250505b50600101611d0b565b50600060808a0135611e6460608c013560408d0135615117565b611e6e9190615117565b9050336001600160a01b038c1614611e8b57611e8b8b3383612351565b6000611e9b60408c01358361512a565b90508015611f0957611eb58c611eaf610c7c565b83613762565b6040805133815230602082015280820184905260608d810135908201526080808e01359082015290517f632ab32db4f924366c4cd564eb2be04e8624ebc77ccda5bf0ab709cc5aee578b9181900360a00190a15b611f178c8c6040013561376d565b611f218d896138a1565b611f296108e7565b611f33908461512a565b92507fe1431d08ed5059493cf3c41e53ba9f7270b0d68a0def64f9880220a12fdd16bb6040518060c00160405280611f683390565b6001600160a01b031681526020018f6001600160a01b031681526020018e6001600160a01b031681526020018a815260200185815260200184815250604051611fb191906154a2565b60405180910390a1505050611fc66001606555565b611fd1838383612f5c565b611fdb83836130af565b5050505095945050505050565b611ff061258e565b6101328190557f4a1d82c0187fa542af202f039cadf137e625e5d39bbcfbdb6633f0d007a28ce533610e19565b61202561258e565b610fb2816139d4565b6000816040516020016108ca91906155a5565b61204961258e565b6101358190556040518181527f9208de066946f0bfb1d3fcdb43a3590fed3ffeb924e12f42dcada9317aa5b66690602001610e33565b6000610d5561208c6108e7565b612097906001615117565b6120a36000600a6157a7565b6099546120b09190615117565b8491906000613a6f565b6120c2612942565b6001600160a01b0381166121275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ee7565b610fb2816133da565b6000610d5582613aca565b60008080600019858709858702925082811083820303915050806000036121755783828161216b5761216b6157b6565b0492505050610db5565b8084116121c45760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401610ee7565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03831661228f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ee7565b6001600160a01b0382166122f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ee7565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526098602090815260408083209386168352929052205460001981146123dd57818110156123d05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ee7565b6123dd848484840361222d565b50505050565b6001600160a01b0383166124475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ee7565b6001600160a01b0382166124a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ee7565b6001600160a01b038316600090815260976020526040902054818110156125215760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ee7565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125819086815260200190565b60405180910390a36123dd565b61012e546040805163194fe0ef60e01b815290516001600160a01b039092169182916391d1485491839163194fe0ef91600480830192602092919082900301816000875af11580156125e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260891906150c4565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267791906153db565b1580156127615750806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f091906150c4565b336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561273b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275f91906153db565b155b15610fb257604051633ba76d1160e01b8152336004820152602401610ee7565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610ca0565b610fb2612942565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156127e9576127e483613b65565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612843575060408051601f3d908101601f19168201909252612840918101906150c4565b60015b6128b55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610ee7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146129365760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ee7565b506127e4838383613c13565b6033546001600160a01b031633146118dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ee7565b80421115610fb25760405163559895a360e01b815260040160405180910390fd5b600260655403612a0f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ee7565b6002606555565b610134544314612a2c5743610134556000610133555b60016101336000828254612a409190615117565b9091555050610135546101335411156118dd5760405163ef9b428960e01b815260040160405180910390fd5b61012f546001600160a01b0316612a96576040516374d91ee760e11b815260040160405180910390fd5b6000612aa183610d5b565b61012f54909150612abc906001600160a01b03168284613c38565b6127e457604051638baa579f60e01b815260040160405180910390fd5b6020810151518151518114612b01576040516379a67d5b60e11b815260040160405180910390fd5b60001960005b82811015612bc65773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031684602001518281518110612b4357612b436153f8565b60200260200101516001600160a01b031603612b6457905060018101612b07565b612bbe333086600001518481518110612b7f57612b7f6153f8565b602002602001015187602001518581518110612b9d57612b9d6153f8565b60200260200101516001600160a01b0316613cd5909392919063ffffffff16565b600101612b07565b5060001981148015612bd757503415155b15612bf557604051631841b4e160e01b815260040160405180910390fd5b6000198114158015612c2257508251805182908110612c1657612c166153f8565b60200260200101513414155b156127e457604051631841b4e160e01b815260040160405180910390fd5b604080518082019091526060808252602082015260001960005b836020015151811015612cc15773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b031684602001518281518110612c9b57612c9b6153f8565b60200260200101516001600160a01b031603612cb957809150612cc1565b600101612c5a565b506000198114612da757612cf183600001518281518110612ce457612ce46153f8565b6020026020010151613d2d565b61012d54602084015180516001600160a01b039092169183908110612d1857612d186153f8565b60200260200101906001600160a01b031690816001600160a01b031681525050600115157fdef0dc72021788040d6ab985a42aa3d5efe5a52d77485682afa2fc1525df6b7f3085600001518481518110612d7457612d746153f8565b6020026020010151604051612d9e9291906001600160a01b03929092168252602082015260400190565b60405180910390a25b5090919050565b61012e548151516001600160a01b03909116906000905b808210156123dd57612e27308486600001518581518110612de857612de86153f8565b602002602001015187602001518681518110612e0657612e066153f8565b60200260200101516001600160a01b0316613d92909392919063ffffffff16565b600190910190612dc5565b600080612e3d6108e7565b90506000838211612e4f576000612e59565b612e59848361512a565b9050612e8c612e6a6000600a6157a7565b609954612e779190615117565b612e82836001615117565b8691906000613a6f565b949350505050565b6001600160a01b038216612eea5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ee7565b8060996000828254612efc9190615117565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001606555565b60008060008061013154612f6e6108e7565b60995461012e60009054906101000a90046001600160a01b03166001600160a01b0316634ed2b8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe991906150c4565b93509350935093506000876000148015613001575086155b9050600084158015613011575083155b9050818061301c5750805b1561302c57505050505050505050565b506000905061303e858761271061213b565b9050600061305761304f8389615117565b612710613ddc565b90506000878310613069576000613073565b613073838961512a565b90508184118061308257508084105b156130a357604051633716553f60e21b815260048101859052602401610ee7565b50505050505050505050565b6000806130ba6108e7565b609954915091508260001480156130d15750600081115b80156130f25750806130e56000600a6157a7565b6130ef90846157cc565b14155b156131105760405163a79d53cf60e01b815260040160405180910390fd5b808314801561311f5750818414155b1561313d5760405163a79d53cf60e01b815260040160405180910390fd5b82156123dd57600061314f8486613deb565b9050600080600084871061317657613167858861512a565b613171878a61512a565b61318a565b613180878661512a565b61318a898861512a565b91509150600061319a8383613deb565b90506131a68582613ddc565b6131b08683613e20565b6131ba919061512a565b9350505050610132548111156131e35760405163a79d53cf60e01b815260040160405180910390fd5b505050505050565b60006127106131fa83856157cc565b610db591906157e3565b600054610100900460ff1661322b5760405162461bcd60e51b8152600401610ee790615805565b613233613e2f565b61323b613e5e565b6132458383613e8d565b61324e81613ebe565b6123dd84613fd0565b600054610100900460ff1661327e5760405162461bcd60e51b8152600401610ee790615805565b61328661403b565b61328e613e2f565b610fb281614062565b600054610100900460ff166132be5760405162461bcd60e51b8152600401610ee790615805565b6132c661403b565b6118dd61403b565b600054610100900460ff166132f55760405162461bcd60e51b8152600401610ee790615805565b610fb2816140ac565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161334591615850565b600060405180830381855afa9150503d8060008114613380576040519150601f19603f3d011682016040523d82523d6000602084013e613385565b606091505b509150915081801561339957506020815110155b156133cd576000818060200190518101906133b491906150c4565b905060ff81116133cb576001969095509350505050565b505b5060009485945092505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b612710811061344e576040516379a67d5b60e11b815260040160405180910390fd5b807f14aa58a89d3f94ea99187ab98e735eb8f742cc801507b0f8968576d3fdc3c8cc557ffd299d8f08e0fbf1ccad155dda5e11040f0a90f1b4d7f2acff52316738f4c1db33610e19565b6060600080846001600160a01b0316846040516134b59190615850565b600060405180830381855af49150503d80600081146134f0576040519150601f19603f3d011682016040523d82523d6000602084013e6134f5565b606091505b50915091506135058583836140f6565b95945050505050565b604080518082018252606080825260208083018290528351600280825292810185529293908301908036833750506040805160028082526060820183529092509060208301908036833750505060208381019190915290825261012e546040805163312f6b8360e01b815290516001600160a01b039092169263312f6b83926004808401938290030181865afa1580156135ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d091906150a7565b81602001516000815181106135e7576135e76153f8565b6001600160a01b0392831660209182029290920181019190915261012e546040805163011e759160e21b815290519190931692630479d6449260048083019391928290030181865afa158015613641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366591906150a7565b816020015160018151811061367c5761367c6153f8565b6001600160a01b03909216602092830291909101820152810151516000905b8082101561375d57826020015182815181106136b9576136b96153f8565b602090810291909101015161012e546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa15801561370e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373291906150c4565b8351805184908110613746576137466153f8565b60200260200101818152505081600101915061369b565b505090565b6127e48383836123e3565b6001600160a01b0382166137cd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ee7565b6001600160a01b038216600090815260976020526040902054818110156138415760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ee7565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60005b8160200151518110156127e45761012e54825180516001600160a01b039092169162f714ce9190849081106138db576138db6153f8565b6020026020010151846020015184815181106138f9576138f96153f8565b60200260200101516040518363ffffffff1660e01b81526004016139309291909182526001600160a01b0316602082015260400190565b6020604051808303816000875af115801561394f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061397391906153db565b506139cc838360000151838151811061398e5761398e6153f8565b6020026020010151846020015184815181106139ac576139ac6153f8565b60200260200101516001600160a01b03166141529092919063ffffffff16565b6001016138a4565b6001600160a01b0381166139fb576040516379a67d5b60e11b815260040160405180910390fd5b7f68433f9d83ac21ac7a279e7d087229a9129597a360563c499bb398b5664b27c180546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f63f8f609737c2dc01ff1d619040ccd6cb6d0e1e7b04f5271d959deefa09ef54b9101610e33565b600080613a7d86868661213b565b90506001836002811115613a9357613a93615862565b148015613ab0575060008480613aab57613aab6157b6565b868809115b1561350557613ac0600182615117565b9695505050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03831601613af8575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5591906150c4565b919050565b6001600160a01b0381163b613bd25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ee7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b613c1c836141a2565b600082511180613c295750805b156127e4576123dd83836141e2565b600080600080613c4785614207565b925092509250866001600160a01b031660018783868660405160008152602001604052604051613c93949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015613cb5573d6000803e3d6000fd5b505050602060405103516001600160a01b03161493505050509392505050565b8373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601613d14576040516376fe282b60e11b815260040160405180910390fd5b8115613d2657613d268585858561424c565b5050505050565b61012d60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613d7e57600080fd5b505af11580156131e3573d6000803e3d6000fd5b8373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601613dd1576040516376fe282b60e11b815260040160405180910390fd5b613d268584846142b3565b6000818310612da75781610db5565b60008215610d5557610db56ec097ce7bc90715b34b9f1000000000613e1885670de0b6b3a76400006157cc565b84919061213b565b6000818311612da75781610db5565b600054610100900460ff16613e565760405162461bcd60e51b8152600401610ee790615805565b6118dd614343565b600054610100900460ff16613e855760405162461bcd60e51b8152600401610ee790615805565b6118dd614373565b600054610100900460ff16613eb45760405162461bcd60e51b8152600401610ee790615805565b61118f828261439a565b600054610100900460ff1615808015613ede5750600054600160ff909116105b80613ef85750303b158015613ef8575060005460ff166001145b613f5b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ee7565b6000805460ff191660011790558015613f7e576000805461ff0019166101001790555b613f87826143da565b801561118f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600054610100900460ff16613ff75760405162461bcd60e51b8152600401610ee790615805565b61012e80546001600160a01b0319166001600160a01b03831617905560007fd8e383845db7ecbb6065c22cc5d1320931e4ef39a73fc10e0587d5257ff50379611633565b600054610100900460ff166118dd5760405162461bcd60e51b8152600401610ee790615805565b600054610100900460ff166140895760405162461bcd60e51b8152600401610ee790615805565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166140d35760405162461bcd60e51b8152600401610ee790615805565b61012d80546001600160a01b0319166001600160a01b0392909216919091179055565b60608261410b57614106826144a3565b610db5565b815115801561412257506001600160a01b0384163b155b1561414b57604051639996b31560e01b81526001600160a01b0385166004820152602401610ee7565b5080610db5565b8273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601614191576040516376fe282b60e11b815260040160405180910390fd5b81156123dd576123dd8484846144cc565b6141ab81613b65565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610db5838360405180606001604052806027815260200161597f602791396144fd565b6000806000835160411461422e57604051634be6321b60e01b815260040160405180910390fd5b50505060208101516040820151606090920151909260009190911a90565b6040516001600160a01b0384811660248301528381166044830152606482018390526123dd9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061456b565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261430484826145ce565b6123dd576040516001600160a01b0384811660248301526000604483015261433991869182169063095ea7b390606401614281565b6123dd848261456b565b600054610100900460ff1661436a5760405162461bcd60e51b8152600401610ee790615805565b6118dd336133da565b600054610100900460ff16612f555760405162461bcd60e51b8152600401610ee790615805565b600054610100900460ff166143c15760405162461bcd60e51b8152600401610ee790615805565b609a6143cd83826158be565b50609b6127e482826158be565b600054610100900460ff16158080156143fa5750600054600160ff909116105b806144145750303b158015614414575060005460ff166001145b6144775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ee7565b6000805460ff19166001179055801561449a576000805461ff0019166101001790555b613f87826139d4565b8051156144b35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b038381166024830152604482018390526127e491859182169063a9059cbb90606401614281565b6060600080856001600160a01b03168560405161451a9190615850565b600060405180830381855af49150503d8060008114614555576040519150601f19603f3d011682016040523d82523d6000602084013e61455a565b606091505b5091509150613ac086838387614671565b60006145806001600160a01b038416836146ea565b905080516000141580156145a55750808060200190518101906145a391906153db565b155b156127e457604051635274afe760e01b81526001600160a01b0384166004820152602401610ee7565b6000806000846001600160a01b0316846040516145eb9190615850565b6000604051808303816000865af19150503d8060008114614628576040519150601f19603f3d011682016040523d82523d6000602084013e61462d565b606091505b509150915081801561465757508051158061465757508080602001905181019061465791906153db565b80156135055750505050506001600160a01b03163b151590565b606083156146e05782516000036146d9576001600160a01b0385163b6146d95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ee7565b5081612e8c565b612e8c83836146f8565b6060610db583836000614722565b8151156147085781518083602001fd5b8060405162461bcd60e51b8152600401610ee79190614852565b6060814710156147475760405163cd78605960e01b8152306004820152602401610ee7565b600080856001600160a01b031684866040516147639190615850565b60006040518083038185875af1925050503d80600081146147a0576040519150601f19603f3d011682016040523d82523d6000602084013e6147a5565b606091505b5091509150613ac08683836140f6565b600060c082840312156147c757600080fd5b50919050565b6000602082840312156147df57600080fd5b813567ffffffffffffffff8111156147f657600080fd5b612e8c848285016147b5565b60005b8381101561481d578181015183820152602001614805565b50506000910152565b6000815180845261483e816020860160208601614802565b601f01601f19169290920160200192915050565b602081526000610db56020830184614826565b6001600160a01b0381168114610fb257600080fd5b8035613b6081614865565b6000806040838503121561489857600080fd5b82356148a381614865565b946020939093013593505050565b6000602082840312156148c357600080fd5b5035919050565b6000806000606084860312156148df57600080fd5b83356148ea81614865565b925060208401356148fa81614865565b929592945050506040919091013590565b60006020828403121561491d57600080fd5b8135610db581614865565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561496157614961614928565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561499057614990614928565b604052919050565b600067ffffffffffffffff8311156149b2576149b2614928565b6149c5601f8401601f1916602001614967565b90508281528383830111156149d957600080fd5b828260208301376000602084830101529392505050565b60008060408385031215614a0357600080fd5b8235614a0e81614865565b9150602083013567ffffffffffffffff811115614a2a57600080fd5b8301601f81018513614a3b57600080fd5b614a4a85823560208401614998565b9150509250929050565b6000608082840312156147c757600080fd5b60008083601f840112614a7857600080fd5b50813567ffffffffffffffff811115614a9057600080fd5b602083019150836020828501011115614aa857600080fd5b9250929050565b60008060008060608587031215614ac557600080fd5b8435614ad081614865565b9350602085013567ffffffffffffffff80821115614aed57600080fd5b614af988838901614a54565b94506040870135915080821115614b0f57600080fd5b50614b1c87828801614a66565b95989497509550505050565b8015158114610fb257600080fd5b600060208284031215614b4857600080fd5b8135610db581614b28565b600082601f830112614b6457600080fd5b610db583833560208501614998565b600080600080600080600080610100898b031215614b9057600080fd5b8835614b9b81614865565b97506020890135614bab81614865565b9650604089013567ffffffffffffffff80821115614bc857600080fd5b614bd48c838d01614b53565b975060608b0135915080821115614bea57600080fd5b50614bf78b828c01614b53565b9550506080890135614c0881614865565b935060a0890135614c1881614865565b925060c0890135614c2881614865565b9150614c3660e08a0161487a565b90509295985092959890939650565b60008060208385031215614c5857600080fd5b823567ffffffffffffffff80821115614c7057600080fd5b818501915085601f830112614c8457600080fd5b813581811115614c9357600080fd5b8660208260051b8501011115614ca857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614d0f57603f19888603018452614cfd858351614826565b94509285019290850190600101614ce1565b5092979650505050505050565b600080600080600060808688031215614d3457600080fd5b8535614d3f81614865565b94506020860135614d4f81614865565b9350604086013567ffffffffffffffff80821115614d6c57600080fd5b614d7889838a016147b5565b94506060880135915080821115614d8e57600080fd5b50614d9b88828901614a66565b969995985093965092949392505050565b600081518084526020808501945080840160005b83811015614ddc57815187529582019590820190600101614dc0565b509495945050505050565b600081518084526020808501945080840160005b83811015614ddc5781516001600160a01b031687529582019590820190600101614dfb565b6000815160408452614e356040850182614dac565b9050602083015184820360208601526135058282614de7565b602081526000610db56020830184614e20565b60008060408385031215614e7457600080fd5b8235614e7f81614865565b91506020830135614e8f81614865565b809150509250929050565b600060208284031215614eac57600080fd5b813567ffffffffffffffff811115614ec357600080fd5b612e8c84828501614a54565b6000823560de19833603018112614ee557600080fd5b90910192915050565b6000808335601e19843603018112614f0557600080fd5b830160208101925035905067ffffffffffffffff811115614f2557600080fd5b803603821315614aa857600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008135614f6a81614865565b6001600160a01b0380821685526020840135602086015260408401359150614f9182614865565b166040840152606082810135908401526080820135614faf81614b28565b15156080840152614fc360a0830183614eee565b60e060a0860152614fd860e086018284614f34565b915050614fe860c0840184614eee565b85830360c0870152613ac0838284614f34565b6020815281356020820152602082013560408201526040820135606082015260608201356080820152608082013560a0820152600060a0830135609e1984360301811261504757600080fd5b60c0838101528301803560e0840152602081013561010084015260408101356101208401526150796060820182614ecf565b60a061014085015261508f610180850182614f5d565b90506080820135610160850152809250505092915050565b6000602082840312156150b957600080fd5b8151610db581614865565b6000602082840312156150d657600080fd5b5051919050565b600080604083850312156150f057600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d5557610d55615101565b81810381811115610d5557610d55615101565b600181811c9082168061515157607f821691505b6020821081036147c757634e487b7160e01b600052602260045260246000fd5b60ff8181168382160190811115610d5557610d55615101565b60008235603e198336030181126151a057600080fd5b9190910192915050565b600067ffffffffffffffff8211156151c4576151c4614928565b5060051b60200190565b600082601f8301126151df57600080fd5b813560206151f46151ef836151aa565b614967565b82815260059290921b8401810191818101908684111561521357600080fd5b8286015b8481101561523757803561522a81614865565b8352918301918301615217565b509695505050505050565b60006040823603121561525457600080fd5b61525c61493e565b823567ffffffffffffffff8082111561527457600080fd5b9084019036601f83011261528757600080fd5b813560206152976151ef836151aa565b82815260059290921b840181019181810190368411156152b657600080fd5b948201945b838610156152d4578535825294820194908201906152bb565b865250868101359350828411156152ea57600080fd5b6152f6368589016151ce565b908501525091949350505050565b6040815260006153176040830185614dac565b82810360208401526135058185614de7565b60008235605e198336030181126151a057600080fd5b6000823560de198336030181126151a057600080fd5b83815260606020820152600061536e6060830185614f5d565b9050826040830152949350505050565b6020815260006001600160a01b0380845116602084015280602085015116604084015250604083015160a060608401526153bb60c0840182614e20565b905060608401516080840152608084015160a08401528091505092915050565b6000602082840312156153ed57600080fd5b8151610db581614b28565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261542557600080fd5b83018035915067ffffffffffffffff82111561544057600080fd5b602001915036819003821315614aa857600080fd5b60008235609e198336030181126151a057600080fd5b85815284602082015283604082015260a06060820152600061549060a0830185614f5d565b90508260808301529695505050505050565b6020815260006001600160a01b0380845116602084015280602085015116604084015280604085015116606084015250606083015160c060808401526154eb60e0840182614e20565b9050608084015160a084015260a084015160c08401528091505092915050565b6000808335601e1984360301811261552257600080fd5b830160208101925035905067ffffffffffffffff81111561554257600080fd5b8060051b3603821315614aa857600080fd5b60008235605e19833603018112614ee557600080fd5b80358252600061557d6020830183614ecf565b606060208501526155916060850182614f5d565b604093840135949093019390935250919050565b600060208083528335818401528084013560408401526040840135603e198536030181126155d257600080fd5b6080606085015284016155e5818061550b565b604060a08701528060e08701526101007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561562257600080fd5b8160051b9150818382890137908601915081016156418385018461550b565b87840360600160c089015291829052909250906000908290610120015b84831015615691578335915061567382614865565b6001600160a01b03821681529285019260019290920191850161565e565b61569e60608a018a615554565b888203601f190160808a015295506156b6818761556a565b9998505050505050505050565b600181815b808511156156fe5781600019048211156156e4576156e4615101565b808516156156f157918102915b93841c93908002906156c8565b509250929050565b60008261571557506001610d55565b8161572257506000610d55565b816001811461573857600281146157425761575e565b6001915050610d55565b60ff84111561575357615753615101565b50506001821b610d55565b5060208310610133831016604e8410600b8410161715615781575081810a610d55565b61578b83836156c3565b806000190482111561579f5761579f615101565b029392505050565b6000610db560ff841683615706565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610d5557610d55615101565b60008261580057634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516151a0818460208701614802565b634e487b7160e01b600052602160045260246000fd5b601f8211156127e457600081815260208120601f850160051c8101602086101561589f5750805b601f850160051c820191505b818110156131e3578281556001016158ab565b815167ffffffffffffffff8111156158d8576158d8614928565b6158ec816158e6845461513d565b84615878565b602080601f83116001811461592157600084156159095750858301515b600019600386901b1c1916600185901b1785556131e3565b600085815260208120601f198616915b8281101561595057888601518255948401946001909101908401615931565b508582101561596e5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000814000a