0 txs
1.3k calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
assetAt
viewfunction assetAt(uint256 i) view returns (address)
assetCount
viewfunction assetCount() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
computeMintAmt
viewfunction computeMintAmt(uint256 underlyingAmtIn) view returns (uint256)
computeRedemptionAmts
viewfunction computeRedemptionAmts(uint256 noteAmtBurnt) view returns (tuple[])
decimals
viewfunction decimals() view returns (uint8)
FEE_ONE
viewfunction FEE_ONE() view returns (uint256)
FEE_POLICY_DECIMALS
viewfunction FEE_POLICY_DECIMALS() view returns (uint8)
feePolicy
viewfunction feePolicy() view returns (address)
getTVL
viewfunction getTVL() view returns (uint256)
getVaultAssetValue
viewfunction getVaultAssetValue(address token) view returns (uint256)
isVaultAsset
viewfunction isVaultAsset(address token) view returns (bool)
keeper
viewfunction keeper() view returns (address)
MAX_DEPLOYED_COUNT
viewfunction MAX_DEPLOYED_COUNT() view returns (uint8)
minDeploymentAmt
viewfunction minDeploymentAmt() view returns (uint256)
minUnderlyingBal
viewfunction minUnderlyingBal() view returns (uint256)
minUnderlyingPerc
viewfunction minUnderlyingPerc() view returns (uint256)
name
viewfunction name() view returns (string)
ONE
viewfunction ONE() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PERC_DECIMALS
viewfunction PERC_DECIMALS() view returns (uint8)
perp
viewfunction perp() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
TRANCHE_DUST_AMT
viewfunction TRANCHE_DUST_AMT() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
vaultAssetBalance
viewfunction vaultAssetBalance(address token) view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
computePerpToUnderlyingSwapAmt
nonpayablefunction computePerpToUnderlyingSwapAmt(uint256 perpAmtIn) returns (uint256, uint256, tuple)
computeUnderlyingToPerpSwapAmt
nonpayablefunction computeUnderlyingToPerpSwapAmt(uint256 underlyingAmtIn) returns (uint256, uint256, tuple)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deploy
nonpayablefunction deploy()
deposit
nonpayablefunction deposit(uint256 underlyingAmtIn) returns (uint256)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
init
nonpayablefunction init(string name, string symbol, address perp_, address feePolicy_)
pause
nonpayablefunction pause()
recover
nonpayablefunction recover()
recover
nonpayablefunction recover(address token)
recoverAndRedeem
nonpayablefunction recoverAndRedeem(uint256 notes) returns (tuple[])
recoverAndRedeploy
nonpayablefunction recoverAndRedeploy()
redeem
nonpayablefunction redeem(uint256 notes) returns (tuple[])
renounceOwnership
nonpayablefunction renounceOwnership()
swapPerpsForUnderlying
nonpayablefunction swapPerpsForUnderlying(uint256 perpAmtIn) returns (uint256)
swapUnderlyingForPerps
nonpayablefunction swapUnderlyingForPerps(uint256 underlyingAmtIn) returns (uint256)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferERC20
nonpayablefunction transferERC20(address token, address to, uint256 amount)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateFeePolicy
nonpayablefunction updateFeePolicy(address feePolicy_)
updateKeeper
nonpayablefunction updateKeeper(address keeper_)
updateMinDeploymentAmt
nonpayablefunction updateMinDeploymentAmt(uint256 minDeploymentAmt_)
updateMinUnderlyingBal
nonpayablefunction updateMinUnderlyingBal(uint256 minUnderlyingBal_)
updateMinUnderlyingPerc
nonpayablefunction updateMinUnderlyingPerc(uint256 minUnderlyingPerc_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
AssetSynced
event AssetSynced(address token, uint256 balance)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
DeployedCountOverLimit
error DeployedCountOverLimit()
InsufficientDeployment
error InsufficientDeployment()
InsufficientLiquidity
error InsufficientLiquidity()
InvalidPerc
error InvalidPerc()
OutOfBounds
error OutOfBounds()
UnacceptableSwap
error UnacceptableSwap()
UnacceptableTrancheLength
error UnacceptableTrancheLength()
UnauthorizedCall
error UnauthorizedCall()
UnauthorizedTransferOut
error UnauthorizedTransferOut()
UnexpectedAsset
error UnexpectedAsset()
UnexpectedDecimals
error UnexpectedDecimals()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615b2d80620000f36000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806382589038116101de578063c2ee3a081161010f578063dd62ed3e116100ad578063eafe7a741161007c578063eafe7a7414610763578063ef98f8841461076b578063f2fde38b1461077e578063fa16a7ec1461079157600080fd5b8063dd62ed3e146106fa578063e1a2209f14610733578063e36894f914610746578063e6467f521461075957600080fd5b8063ce746024116100e9578063ce746024146106ac578063d5620d60146106b4578063da3c031f146106d4578063db006a75146106e757600080fd5b8063c2ee3a08146104c2578063ca6be1f81461068f578063cc03c2e3146106a257600080fd5b8063a457c2d71161017c578063aced166111610156578063aced166114610641578063b6b55f2514610655578063bf5d221414610668578063bfa4c00c1461067b57600080fd5b8063a457c2d714610608578063a9059cbb1461061b578063aa9239f51461062e57600080fd5b806395d89b41116101b857806395d89b41146105d257806397790217146105da57806397b3fcaa146105ed5780639db5dbe4146105f557600080fd5b806382589038146105a55780638456cb59146105b95780638da5cb5b146105c157600080fd5b806342966c68116102c35780636f307dc3116102615780637375c5d6116102305780637375c5d61461057757806375d5179f146104ba578063775c300c1461058a57806379cc67901461059257600080fd5b80636f307dc31461051257806370a082311461053e578063715018a614610567578063726176871461056f57600080fd5b8063614b4a431161029d578063614b4a43146104c257806362b232a4146104ca57806369f6f92c146104dd5780636df71ab3146104f057600080fd5b806342966c681461049c5780635c975abb146104af5780636048d491146104ba57600080fd5b80632ad537e311610330578063395093511161030a578063395093511461046f57806339697825146104825780633f45e08f1461048a5780633f4ba83a1461049457600080fd5b80632ad537e314610434578063313ce56714610447578063372feac81461045c57600080fd5b80630e07f8541161036c5780630e07f854146103e957806318160ddd146103fc5780631cd66a951461040e57806323b872dd1461042157600080fd5b806306fdde0314610393578063095ea7b3146103b15780630cd865ec146103d4575b600080fd5b61039b61079b565b6040516103a8919061518b565b60405180910390f35b6103c46103bf3660046151d3565b61082d565b60405190151581526020016103a8565b6103e76103e23660046151ff565b610847565b005b6103e76103f73660046152fc565b6108f9565b6035545b6040519081526020016103a8565b61040061041c366004615385565b610b33565b6103c461042f36600461539e565b610c58565b6104006104423660046151ff565b610c7e565b60125b60405160ff90911681526020016103a8565b61040061046a366004615385565b610d58565b6103c461047d3660046151d3565b610e4a565b61044a602f81565b6104006101305481565b6103e7610e89565b6103e76104aa366004615385565b610ebf565b60c95460ff166103c4565b61044a600881565b610400610ec9565b6103c46104d83660046151ff565b610ed8565b6103e76104eb3660046151ff565b610eff565b6105036104fe366004615385565b610fb2565b6040516103a8939291906153df565b61012d54610526906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b61040061054c3660046151ff565b6001600160a01b031660009081526033602052604090205490565b6103e76112e0565b6103e76112f2565b6104006105853660046151ff565b611302565b6103e7611380565b6103e76105a03660046151d3565b61151a565b61013254610526906001600160a01b031681565b6103e7611533565b6097546001600160a01b0316610526565b61039b611567565b6103e76105e83660046151ff565b611576565b6104006115a1565b6103e761060336600461539e565b611702565b6103c46106163660046151d3565b61175c565b6103c46106293660046151d3565b6117f9565b61052661063c366004615385565b611807565b61013354610526906001600160a01b031681565b610400610663366004615385565b611864565b6103e7610676366004615385565b6118e2565b61013154610526906001600160a01b031681565b6103e761069d366004615385565b611914565b6104006298968081565b6103e7611972565b6106c76106c2366004615385565b611b8e565b6040516103a8919061540e565b6103e76106e2366004615385565b611ba1565b6106c76106f5366004615385565b611bd3565b610400610708366004615466565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b610503610741366004615385565b611d62565b610400610754366004615385565b61203a565b6104006101345481565b61040061215f565b6106c7610779366004615385565b61217c565b6103e761078c3660046151ff565b612508565b6104006101355481565b6060603680546107aa9061549f565b80601f01602080910402602001604051908101604052809291908181526020018280546107d69061549f565b80156108235780601f106107f857610100808354040283529160200191610823565b820191906000526020600020905b81548152906001019060200180831161080657829003601f168201915b5050505050905090565b60003361083b81858561257e565b60019150505b92915050565b61084f6126a2565b6108576126fb565b61086361012e8261274e565b1561088c5761087181612770565b61012d54610887906001600160a01b03166128d2565b6108ec565b610131546001600160a01b039081169082168190036108d3576108ae81612983565b6108b7816128d2565b61012d546108cd906001600160a01b03166128d2565b506108ec565b604051632c88119960e11b815260040160405180910390fd5b6108f6600160fb55565b50565b600054610100900460ff16158080156109195750600054600160ff909116105b806109335750303b158015610933575060005460ff166001145b6109aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff1916600117905580156109cd576000805461ff0019166101001790555b6109d78585612aca565b6109df612b2d565b6109e7612b86565b6109ef612be7565b6109f7612c48565b826001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5991906154d9565b61012d80546001600160a01b03199081166001600160a01b03938416179091556101318054909116918516919091179055610a9382610eff565b610aa86105e86097546001600160a01b031690565b6000610130819055610134556003610ac26008600a6155f0565b610acc9190615615565b6101355561012d54610ae6906001600160a01b03166128d2565b8015610b2c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000610b3d6126a2565b610b456126fb565b6101315461012d546001600160a01b03918216911660008080610b6787611d62565b91945092509050821580610b79575086155b15610b975760405163173825e960e21b815260040160405180910390fd5b610bac6001600160a01b03861633308a612ca9565b8115610c0d57604051630852cd8d60e31b8152600481018390526001600160a01b038616906342966c6890602401600060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505050505b610c1685612983565b610c2a6001600160a01b0385163385612d29565b610c38848260200151612d59565b610c41846128d2565b509093505050505b610c53600160fb55565b919050565b600033610c66858285612e0f565b610c71858585612e9b565b60019150505b9392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038416906370a0823190602401602060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ceb9190615629565b61012d549091506001600160a01b0390811690841603610d0b5792915050565b610d1761012e8461274e565b15610d4f5782629896808211610d2e576000610d47565b61012d54610d479082906001600160a01b031684613046565b949350505050565b50600092915050565b60008061013260009054906101000a90046001600160a01b03166001600160a01b03166346ebcf236040518163ffffffff1660e01b8152600401602060405180830381865afa158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190615629565b90506000610de060355490565b90506000808211610dfd57610df8620f424086615642565b610e11565b610e1185610e096115a1565b849190613079565b9050610e4183610e236008600a6155f0565b610e2d9190615659565b610e396008600a6155f0565b839190613079565b95945050505050565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919061083b9082908690610e8490879061566c565b61257e565b610133546001600160a01b03163314610eb557604051637bf6a16f60e01b815260040160405180910390fd5b610ebd61316b565b565b6108f633826131bd565b610ed56008600a6155f0565b81565b61012d546000906001600160a01b0383811691161480610841575061084161012e8361274e565b610f076132f1565b600860ff16816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e919061567f565b60ff1614610f8f5760405163c51d798560e01b815260040160405180910390fd5b61013280546001600160a01b0319166001600160a01b0392909216919091179055565b600080610fd960405180606001604052806000815260200160008152602001600081525090565b610131546001600160a01b03166000610ff18261334b565b90506000611064836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105a9190615629565b8351899190613079565b9050600061013260009054906101000a90046001600160a01b03166001600160a01b0316630a98b70d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190615629565b61013254604051624d5b2360e21b81529192506000916001600160a01b0390911690636978ed069082906301356c8c9061111e9089906004016156a2565b602060405180830381865afa15801561113b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115f9190615629565b61013260009054906101000a90046001600160a01b03166001600160a01b03166301356c8c60405180606001604052808f8b6000015161119f919061566c565b81526020018a6020015181526020018a604001518152506040518263ffffffff1660e01b81526004016111d291906156a2565b602060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190615629565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112789190615629565b905060006112968361128c6008600a6155f0565b869190600161345c565b90506112cf6112a5838561566c565b6112b16008600a6155f0565b6112bb9190615659565b6112c76008600a6155f0565b869190613079565b9a9099509397509295505050505050565b6112e86132f1565b610ebd60006134ad565b6112fa611972565b610ebd611380565b600061130d82610ed8565b611318576000610841565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108419190615629565b6113886126a2565b6113906126fb565b61012d54610131546040516370a0823160e01b81523060048201526001600160a01b03928316929091169060009083906370a0823190602401602060405180830381865afa1580156113e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140a9190615629565b905061013454811161142f5760405163bb55fd2760e01b815260040160405180910390fd5b6101345461143d9082615659565b90506101305481116114625760405163167bb86960e11b815260040160405180910390fd5b6114d0826001600160a01b0316638fb69c4b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c991906154d9565b84836134ff565b6114da8284613588565b6114f75760405163167bb86960e11b815260040160405180910390fd5b61012d5461150d906001600160a01b03166128d2565b505050610ebd600160fb55565b611525823383612e0f565b61152f82826131bd565b5050565b610133546001600160a01b0316331461155f57604051637bf6a16f60e01b815260040160405180910390fd5b610ebd613824565b6060603780546107aa9061549f565b61157e6132f1565b61013380546001600160a01b0319166001600160a01b0392909216919091179055565b61012d546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156115ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116139190615629565b9050600061162261012e613861565b905060005b8160ff168160ff1610156116fa57600061164661012e60ff841661386b565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190615629565b9050629896808111156116e75761012d546116da9083906001600160a01b031683613046565b6116e4908661566c565b94505b5050806116f3906156c3565b9050611627565b509092915050565b61170a6132f1565b6117126126a2565b61171b83610ed8565b15611739576040516328071e2f60e11b815260040160405180910390fd5b61174d6001600160a01b0384168383612d29565b611757600160fb55565b505050565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156117e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a1565b6117ee828686840361257e565b506001949350505050565b60003361083b818585612e9b565b60008160000361182357505061012d546001600160a01b031690565b61182e61012e613861565b821161184b57610841611842600184615659565b61012e9061386b565b604051632d0483c560e21b815260040160405180910390fd5b600061186e6126a2565b6118766126fb565b600061188183610d58565b905082158061188e575080155b1561189d576000915050610c49565b61012d546118b6906001600160a01b0316333086612ca9565b6118c03382613877565b61012d546118d6906001600160a01b03166128d2565b9050610c53600160fb55565b610133546001600160a01b0316331461190e57604051637bf6a16f60e01b815260040160405180910390fd5b61013055565b610133546001600160a01b0316331461194057604051637bf6a16f60e01b815260040160405180910390fd5b61194c6008600a6155f0565b81111561196c576040516366e3134960e11b815260040160405180910390fd5b61013555565b61197a6126a2565b6119826126fb565b600061198f61012e613861565b905060008160ff16116119a25750611b84565b60005b8160ff168160ff161015611b2b5760006119c461012e60ff841661386b565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a329190615629565b905060008111611a43575050611b1b565b6000826001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa791906154d9565b90506000611abd826001600160a01b0316613938565b90506000611ad3836001600160a01b0316613acb565b11611ae857611ae3828585613b4a565b611b16565b8051516001600160a01b038581169116148015611b0757506298968083115b15611b1657611b168282613c6c565b505050505b611b24816156c3565b90506119a5565b50805b60ff811615611b6b57611b59611b54611b486001846156f8565b61012e9060ff1661386b565b613cc9565b80611b6381615711565b915050611b2e565b5061012d54611b82906001600160a01b03166128d2565b505b610ebd600160fb55565b6060611b98611972565b61084182611bd3565b610133546001600160a01b03163314611bcd57604051637bf6a16f60e01b815260040160405180910390fd5b61013455565b6060611bdd6126a2565b611be56126fb565b60008211611c32576040805160008082526020820190925290611c2a565b6040805180820190915260008082526020820152815260200190600190039081611c035790505b509050610c49565b6000611c3d8361217c565b9050611c4933846131bd565b805160005b8160ff168160ff161015611d5557828160ff1681518110611c7157611c716156e2565b60200260200101516020015160000315611d4557611ce333848360ff1681518110611c9e57611c9e6156e2565b602002602001015160200151858460ff1681518110611cbf57611cbf6156e2565b6020026020010151600001516001600160a01b0316612d299092919063ffffffff16565b8060ff16600003611d1c57611d17838260ff1681518110611d0657611d066156e2565b6020026020010151600001516128d2565b611d45565b611d45838260ff1681518110611d3457611d346156e2565b602002602001015160000151613cc9565b611d4e816156c3565b9050611c4e565b5050600160fb5592915050565b600080611d8960405180606001604052806000815260200160008152602001600081525090565b610131546001600160a01b03166000611da18261334b565b90506000611e178260000151846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f9190615629565b899190613079565b9050600061013260009054906101000a90046001600160a01b03166001600160a01b031663ca9cbcbe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e939190615629565b61013254604051624d5b2360e21b81529192506000916001600160a01b039091169063bf39d3db9082906301356c8c90611ed19089906004016156a2565b602060405180830381865afa158015611eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f129190615629565b61013254604080516060810190915288516001600160a01b03909216916301356c8c91908190611f43908b90615659565b81526020018a6020015181526020018a604001518152506040518263ffffffff1660e01b8152600401611f7691906156a2565b602060405180830381865afa158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190615629565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015611ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201c9190615629565b90506000611296836120306008600a6155f0565b8c9190600161345c565b60006120446126a2565b61204c6126fb565b61012d54610131546001600160a01b0391821691166000808061206e87610fb2565b91945092509050821580612080575086155b1561209e5760405163173825e960e21b815260040160405180910390fd5b6120b36001600160a01b03861633308a612ca9565b6120d384868360000151846040015186886120ce919061566c565b613df1565b811561213457604051630852cd8d60e31b8152600481018390526001600160a01b038516906342966c6890602401600060405180830381600087803b15801561211b57600080fd5b505af115801561212f573d6000803e3d6000fd5b505050505b6121486001600160a01b0385163385612d29565b612156858260200151612d59565b610c41856128d2565b600061216c61012e613861565b61217790600161566c565b905090565b6060600061218960355490565b9050600061013260009054906101000a90046001600160a01b03166001600160a01b031663916b7ed76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122059190615629565b9050600061221461012e613861565b61221f90600161572e565b905060008160ff1667ffffffffffffffff81111561223f5761223f61521c565b60405190808252806020026020018201604052801561228457816020015b604080518082019091526000808252602082015281526020019060019003908161225d5790505b5061012d546040805180820182526001600160a01b0390921680835290516370a0823160e01b8152306004820152929350916020820190612317908a90899086906370a08231906024015b602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190615629565b9190613079565b8152508260008151811061232d5761232d6156e2565b602090810291909101015261238c846123486008600a6155f0565b6123529190615659565b61235e6008600a6155f0565b84600081518110612371576123716156e2565b6020026020010151602001516130799092919063ffffffff16565b8260008151811061239f5761239f6156e2565b602090810291909101810151015260015b8360ff168160ff1610156124fc5760006123ce611b486001846156f8565b6040805180820182526001600160a01b03831680825291516370a0823160e01b8152306004820152929350916020830191612415918d918c916370a08231906024016122cf565b815250848360ff168151811061242d5761242d6156e2565b6020908102919091010152612473866124486008600a6155f0565b6124529190615659565b61245e6008600a6155f0565b868560ff1681518110612371576123716156e2565b848360ff1681518110612488576124886156e2565b6020026020010151602001818152505062989680848360ff16815181106124b1576124b16156e2565b60200260200101516020015110156124eb576000848360ff16815181106124da576124da6156e2565b602002602001015160200181815250505b506124f5816156c3565b90506123b0565b50909695505050505050565b6125106132f1565b6001600160a01b0381166125755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a1565b6108f6816134ad565b6001600160a01b0383166125e05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a1565b6001600160a01b0382166126415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a1565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260fb54036126f45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109a1565b600260fb55565b60c95460ff1615610ebd5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016109a1565b6001600160a01b03811660009081526001830160205260408120541515610c77565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db9190615629565b9050600081116127ee5761152f82613cc9565b6000826001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285291906154d9565b90506000612868826001600160a01b0316613acb565b1161288157612878818484613b4a565b61175783613cc9565b629896808211156128785760006128a0826001600160a01b0316613938565b90506128ac8282613c6c565b80516128bf9060005b6020020151613cc9565b80516128cc9060016128b5565b50505050565b6040516370a0823160e01b81523060048201527f3498084e435368f22f5e58d4957c351579c10be5ab20874cc78c9d0e28fa04099082906001600160a01b038216906370a0823190602401602060405180830381865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e9190615629565b604080516001600160a01b03909316835260208301919091520160405180910390a150565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156129ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ee9190615629565b9050600081116129fc575050565b60405163db006a7560e01b8152600481018290526000906001600160a01b0384169063db006a75906024016000604051808303816000875af1158015612a46573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a6e919081019061576b565b805190915060015b8160ff168160ff161015610b2c576000838260ff1681518110612a9b57612a9b6156e2565b6020026020010151600001519050612ab281612770565b50612abc816156c3565b9050612a76565b600160fb55565b600054610100900460ff16612b235760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b61152f828261412a565b600054610100900460ff16610ebd5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b600054610100900460ff16612bdf5760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b610ebd61419c565b600054610100900460ff16612c405760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b610ebd6141fe565b600054610100900460ff16612ca15760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b610ebd614263565b6040516001600160a01b03808516602483015283166044820152606481018290526128cc9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909316929092179091526142bc565b6040516001600160a01b03831660248201526044810182905261175790849063a9059cbb60e01b90606401612cdd565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc49190615629565b90506101345481111580612df1575061013554612dee612de66008600a6155f0565b839085613079565b11155b156117575760405163bb55fd2760e01b815260040160405180910390fd5b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146128cc5781811015612e8e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109a1565b6128cc848484840361257e565b6001600160a01b038316612eff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a1565b6001600160a01b038216612f615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a1565b6001600160a01b03831660009081526033602052604090205481811015612fd95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a1565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906130399086815260200190565b60405180910390a36128cc565b6000808061305d6001600160a01b038716866143a4565b909250905061306f828583600161345c565b9695505050505050565b60008080600019858709858702925082811083820303915050806000036130b3578382816130a9576130a96155ff565b0492505050610c77565b8084116131025760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f77000000000000000000000060448201526064016109a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b613173614719565b60c9805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03821661321d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a1565b6001600160a01b038216600090815260336020526040902054818110156132915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109a1565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6097546001600160a01b03163314610ebd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109a1565b61336f60405180606001604052806000815260200160008152602001600081525090565b6040518060600160405280836001600160a01b03166397b3fcaa6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156133ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133de9190615629565b81526020016133eb6115a1565b8152602001836001600160a01b0316638b5393826040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134549190615629565b905292915050565b60008061346a868686613079565b9050600183600281111561348057613480615824565b14801561349d575060008480613498576134986155ff565b868809115b15610e415761306f60018261566c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613513846001600160a01b0316613938565b905061352083858461476b565b60405163b6b55f2560e01b8152600481018390526001600160a01b0385169063b6b55f2590602401600060405180830381600087803b15801561356257600080fd5b505af1158015613576573d6000803e3d6000fd5b505082516128bf9250905060006128b5565b600080836001600160a01b031663364d22fc6040518163ffffffff1660e01b81526004016000604051808303816000875af11580156135cb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f3919081019061583a565b9050600080856001600160a01b031663332d83d56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365c91906154d9565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156136a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ca9190615629565b90506136d782888361476b565b835160005b8160ff168160ff161080156136f15750600083115b1561380e576000868260ff168151811061370d5761370d6156e2565b6020908102919091010151604051632bf8f1a560e01b81526001600160a01b0387811660048301528083166024830152604482018790529192506000918c1690632bf8f1a59060640160408051808303816000875af1158015613774573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379891906158c9565b80519091506137a85750506137fe565b896001600160a01b0316888460ff16815181106137c7576137c76156e2565b60200260200101516001600160a01b0316146137e6576137e682612770565b60208101516137f59086615659565b94506001965050505b613807816156c3565b90506136dc565b5061381883612770565b50919695505050505050565b61382c6126fb565b60c9805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586131a03390565b6000610841825490565b6000610c7783836147ff565b6001600160a01b0382166138cd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a1565b80603560008282546138df919061566c565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b613940615124565b816001600160a01b03166359eb82246040518163ffffffff1660e01b8152600401602060405180830381865afa15801561397e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a29190615629565b6002146139c25760405163673f20ed60e11b815260040160405180910390fd5b6040516313612cb160e11b8152600060048201526001600160a01b038316906326c25962906024016040805180830381865afa158015613a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2a91906158fb565b82516020840151600060200201919091526001600160a01b0391821690526040516313612cb160e11b815260016004820152908316906326c25962906024016040805180830381865afa158015613a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa991906158fb565b82516020808501518101929092526001600160a01b0392909216910152919050565b600080826001600160a01b031663d59624b46040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b309190615629565b9050428111613b40576000610c77565b610c774282615659565b826001600160a01b031663ae4e7fdf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bac9190615929565b613c0457826001600160a01b03166387b652076040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613beb57600080fd5b505af1158015613bff573d6000803e3d6000fd5b505050505b604051630cf4838d60e21b81526001600160a01b038381166004830152602482018390528416906333d20e34906044015b600060405180830381600087803b158015613c4f57600080fd5b505af1158015613c63573d6000803e3d6000fd5b50505050505050565b6000613c788230614829565b9050600081600081518110613c8f57613c8f6156e2565b6020026020010151111561175757604051637cd7d93560e11b81526001600160a01b0384169063f9afb26a90613c3590849060040161594b565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d349190615629565b604080516001600160a01b0385168152602081018390529192507f3498084e435368f22f5e58d4957c351579c10be5ab20874cc78c9d0e28fa0409910160405180910390a16000613d8761012e8461274e565b9050600082118015613d97575080155b15613dd557613da861012e84614977565b50602f613db661012e613861565b111561175757604051633d816dad60e01b815260040160405180910390fd5b81158015613de05750805b15611757576128cc61012e8461498c565b6000856001600160a01b0316638fb69c4b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5791906154d9565b90506000866001600160a01b031663332d83d56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebf91906154d9565b90506000806140886040518060c001604052808981526020018b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3a9190615629565b81526040516370a0823160e01b81526001600160a01b0388811660048301526020909201918c16906370a0823190602401602060405180830381865afa158015613f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fac9190615629565b8152602001866001600160a01b031663fc7b9c186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140139190615629565b8152602001856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407a9190615629565b8152602001889052866149a1565b915091506140978489846134ff565b6140a2838a8361476b565b6040516311f9fbc960e21b81526001600160a01b038481166004830152602482018390528a16906347e7ef24906044016020604051808303816000875af11580156140f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141159190615629565b5061411f83613cc9565b505050505050505050565b600054610100900460ff166141835760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b603661418f83826159d1565b50603761175782826159d1565b600054610100900460ff166141f55760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b610ebd336134ad565b600054610100900460ff166142575760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b60c9805460ff19169055565b600054610100900460ff16612ac35760405162461bcd60e51b815260206004820152602b6024820152600080516020615ad883398151915260448201526a6e697469616c697a696e6760a81b60648201526084016109a1565b6000614311826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614a5a9092919063ffffffff16565b90508051600014806143325750808060200190518101906143329190615929565b6117575760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109a1565b6000806000846001600160a01b03166364c9ec6f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061440b91906154d9565b90506000856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561444d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144719190615629565b90506000826001600160a01b031663ae4e7fdf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144d79190615929565b15614553576040516370a0823160e01b81526001600160a01b0388811660048301528716906370a0823190602401602060405180830381865afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145469190615629565b9450909250614712915050565b826001600160a01b03166359eb82246040518163ffffffff1660e01b8152600401602060405180830381865afa158015614591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b59190615629565b6002146145d55760405163673f20ed60e11b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b038481166004830152600091908816906370a0823190602401602060405180830381865afa15801561461f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146439190615629565b90506001600160a01b038089169061465e9086166001614a69565b6001600160a01b0316036146fe57600083856001600160a01b031663fc7b9c186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d19190615629565b6146db9190615659565b905060006146e98284614ade565b90506146f58184615659565b9350505061470b565b6147088382614ade565b91505b5093509150505b9250929050565b60c95460ff16610ebd5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016109a1565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156147bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147df9190615629565b9050818110156128cc576128cc6001600160a01b03851684600019614af4565b6000826000018281548110614816576148166156e2565b9060005260206000200154905092915050565b60408051600280825260608083018452926000929190602083019080368337019050508451516040516370a0823160e01b81526001600160a01b0386811660048301529293509116906370a0823190602401602060405180830381865afa158015614898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148bc9190615629565b816000815181106148cf576148cf6156e2565b60209081029190910101528351600160200201516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801561492a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061494e9190615629565b81600181518110614961576149616156e2565b602002602001018181525050610d478482614c10565b6000610c77836001600160a01b038416614e69565b6000610c77836001600160a01b038416614eb8565b6000806000808560200151116149b757836149cb565b845160208601516149cb918691600161345c565b905060006149e186608001518760400151614ade565b905060008660800151116149f55781614a08565b6080860151614a0890839083600161345c565b9150600080876060015111614a1d5782614a34565b60408701516060880151614a34918591600161345c565b60a0880151909150614a4d9082906103e890600161345c565b9792965091945050505050565b6060610d478484600085614fab565b6040516313612cb160e11b815260ff821660048201526000906001600160a01b038416906326c25962906024016040805180830381865afa158015614ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ad691906158fb565b509392505050565b6000818310614aed5781610c77565b5090919050565b801580614b6e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015614b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b6c9190615629565b155b614be05760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016109a1565b6040516001600160a01b03831660248201526044810182905261175790849063095ea7b360e01b90606401612cdd565b604080516002808252606080830184529260009291906020830190803683370190505060208501519091506001602002015183600181518110614c5557614c556156e2565b6020026020010151614c679190615a91565b83600181518110614c7a57614c7a6156e2565b6020026020010151614c8c9190615659565b81600181518110614c9f57614c9f6156e2565b6020026020010181815250508360200151600160028110614cc257614cc26156e2565b60200201518460200151600060028110614cde57614cde6156e2565b602002015182600181518110614cf657614cf66156e2565b6020026020010151614d089190615642565b614d129190615615565b81600081518110614d2557614d256156e2565b60200260200101818152505082600081518110614d4457614d446156e2565b602002602001015181600081518110614d5f57614d5f6156e2565b60200260200101511115610c775760208401515183518490600090614d8657614d866156e2565b6020026020010151614d989190615a91565b83600081518110614dab57614dab6156e2565b6020026020010151614dbd9190615659565b81600081518110614dd057614dd06156e2565b6020026020010181815250508360200151600060028110614df357614df36156e2565b60200201518460200151600160028110614e0f57614e0f6156e2565b602002015182600081518110614e2757614e276156e2565b6020026020010151614e399190615642565b614e439190615615565b81600181518110614e5657614e566156e2565b6020026020010181815250509392505050565b6000818152600183016020526040812054614eb057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610841565b506000610841565b60008181526001830160205260408120548015614fa1576000614edc600183615659565b8554909150600090614ef090600190615659565b9050818114614f55576000866000018281548110614f1057614f106156e2565b9060005260206000200154905080876000018481548110614f3357614f336156e2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614f6657614f66615aa5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610841565b6000915050610841565b60608247101561500c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109a1565b600080866001600160a01b031685876040516150289190615abb565b60006040518083038185875af1925050503d8060008114615065576040519150601f19603f3d011682016040523d82523d6000602084013e61506a565b606091505b509150915061507b87838387615086565b979650505050505050565b606083156150f55782516000036150ee576001600160a01b0385163b6150ee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109a1565b5081610d47565b610d47838381511561510a5781518083602001fd5b8060405162461bcd60e51b81526004016109a1919061518b565b6040518060400160405280615137615149565b8152602001615144615149565b905290565b60405180604001604052806002906020820280368337509192915050565b60005b8381101561518257818101518382015260200161516a565b50506000910152565b60208152600082518060208401526151aa816040850160208701615167565b601f01601f19169190910160400192915050565b6001600160a01b03811681146108f657600080fd5b600080604083850312156151e657600080fd5b82356151f1816151be565b946020939093013593505050565b60006020828403121561521157600080fd5b8135610c77816151be565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156152555761525561521c565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156152845761528461521c565b604052919050565b600082601f83011261529d57600080fd5b813567ffffffffffffffff8111156152b7576152b761521c565b6152ca601f8201601f191660200161525b565b8181528460208386010111156152df57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561531257600080fd5b843567ffffffffffffffff8082111561532a57600080fd5b6153368883890161528c565b9550602087013591508082111561534c57600080fd5b506153598782880161528c565b935050604085013561536a816151be565b9150606085013561537a816151be565b939692955090935050565b60006020828403121561539757600080fd5b5035919050565b6000806000606084860312156153b357600080fd5b83356153be816151be565b925060208401356153ce816151be565b929592945050506040919091013590565b8381526020810183905260a08101610d4760408301848051825260208082015190830152604090810151910152565b602080825282518282018190526000919060409081850190868401855b8281101561545957815180516001600160a01b0316855286015186850152928401929085019060010161542b565b5091979650505050505050565b6000806040838503121561547957600080fd5b8235615484816151be565b91506020830135615494816151be565b809150509250929050565b600181811c908216806154b357607f821691505b6020821081036154d357634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156154eb57600080fd5b8151610c77816151be565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561554757816000190482111561552d5761552d6154f6565b8085161561553a57918102915b93841c9390800290615511565b509250929050565b60008261555e57506001610841565b8161556b57506000610841565b8160018114615581576002811461558b576155a7565b6001915050610841565b60ff84111561559c5761559c6154f6565b50506001821b610841565b5060208310610133831016604e8410600b84101617156155ca575081810a610841565b6155d4838361550c565b80600019048211156155e8576155e86154f6565b029392505050565b6000610c7760ff84168361554f565b634e487b7160e01b600052601260045260246000fd5b600082615624576156246155ff565b500490565b60006020828403121561563b57600080fd5b5051919050565b8082028115828204841417610841576108416154f6565b81810381811115610841576108416154f6565b80820180821115610841576108416154f6565b60006020828403121561569157600080fd5b815160ff81168114610c7757600080fd5b81518152602080830151908201526040808301519082015260608101610841565b600060ff821660ff81036156d9576156d96154f6565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b60ff8281168282160390811115610841576108416154f6565b600060ff821680615724576157246154f6565b6000190192915050565b60ff8181168382160190811115610841576108416154f6565b600067ffffffffffffffff8211156157615761576161521c565b5060051b60200190565b6000602080838503121561577e57600080fd5b825167ffffffffffffffff81111561579557600080fd5b8301601f810185136157a657600080fd5b80516157b96157b482615747565b61525b565b81815260069190911b820183019083810190878311156157d857600080fd5b928401925b8284101561507b57604084890312156157f65760008081fd5b6157fe615232565b8451615809816151be565b815284860151868201528252604090930192908401906157dd565b634e487b7160e01b600052602160045260246000fd5b6000602080838503121561584d57600080fd5b825167ffffffffffffffff81111561586457600080fd5b8301601f8101851361587557600080fd5b80516158836157b482615747565b81815260059190911b820183019083810190878311156158a257600080fd5b928401925b8284101561507b5783516158ba816151be565b825292840192908401906158a7565b6000604082840312156158db57600080fd5b6158e3615232565b82518152602083015160208201528091505092915050565b6000806040838503121561590e57600080fd5b8251615919816151be565b6020939093015192949293505050565b60006020828403121561593b57600080fd5b81518015158114610c7757600080fd5b6020808252825182820181905260009190848201906040850190845b818110156124fc57835183529284019291840191600101615967565b601f82111561175757600081815260208120601f850160051c810160208610156159aa5750805b601f850160051c820191505b818110156159c9578281556001016159b6565b505050505050565b815167ffffffffffffffff8111156159eb576159eb61521c565b6159ff816159f9845461549f565b84615983565b602080601f831160018114615a345760008415615a1c5750858301515b600019600386901b1c1916600185901b1785556159c9565b600085815260208120601f198616915b82811015615a6357888601518255948401946001909101908401615a44565b5085821015615a815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082615aa057615aa06155ff565b500690565b634e487b7160e01b600052603160045260246000fd5b60008251615acd818460208701615167565b919091019291505056fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a2646970667358221220f7af5dac7ea9a187e42ebd1c38e23447ff38842f32739e879c14f22f0125827564736f6c63430008140033