49 txs
102 calls
constructor
constructor(address _vault, address _router, address _weth, address _shortsTracker, uint256 _depositFee, uint256 _minExecutionFee, address _executionFeeReceiver)
functions
admin
viewfunction admin() view returns (address)
BASIS_POINTS_DIVISOR
viewfunction BASIS_POINTS_DIVISOR() view returns (uint256)
callbackGasLimit
viewfunction callbackGasLimit() view returns (uint256)
decreasePositionRequestKeys
viewfunction decreasePositionRequestKeys(uint256) view returns (bytes32)
decreasePositionRequestKeysStart
viewfunction decreasePositionRequestKeysStart() view returns (uint256)
decreasePositionRequests
viewfunction decreasePositionRequests(bytes32) view returns (address account, address indexToken, uint256 collateralDelta, uint256 sizeDelta, bool isLong, address receiver, uint256 acceptablePrice, uint256 minOut, uint256 executionFee, uint256 blockNumber, uint256 blockTime, bool withdrawETH, address callbackTarget)
decreasePositionsIndex
viewfunction decreasePositionsIndex(address) view returns (uint256)
depositFee
viewfunction depositFee() view returns (uint256)
executionFeeReceiver
viewfunction executionFeeReceiver() view returns (address)
feeReserves
viewfunction feeReserves(address) view returns (uint256)
getDecreasePositionRequestPath
viewfunction getDecreasePositionRequestPath(bytes32 _key) view returns (address[])
getIncreasePositionRequestPath
viewfunction getIncreasePositionRequestPath(bytes32 _key) view returns (address[])
getRequestKey
purefunction getRequestKey(address _account, uint256 _index) pure returns (bytes32)
getRequestQueueLengths
viewfunction getRequestQueueLengths() view returns (uint256, uint256, uint256, uint256)
gov
viewfunction gov() view returns (address)
increasePositionBufferBps
viewfunction increasePositionBufferBps() view returns (uint256)
increasePositionRequestKeys
viewfunction increasePositionRequestKeys(uint256) view returns (bytes32)
increasePositionRequestKeysStart
viewfunction increasePositionRequestKeysStart() view returns (uint256)
increasePositionRequests
viewfunction increasePositionRequests(bytes32) view returns (address account, address indexToken, uint256 amountIn, uint256 minOut, uint256 sizeDelta, bool isLong, uint256 acceptablePrice, uint256 executionFee, uint256 blockNumber, uint256 blockTime, bool hasCollateralInETH, address callbackTarget)
increasePositionsIndex
viewfunction increasePositionsIndex(address) view returns (uint256)
isLeverageEnabled
viewfunction isLeverageEnabled() view returns (bool)
isPositionKeeper
viewfunction isPositionKeeper(address) view returns (bool)
maxGlobalLongSizes
viewfunction maxGlobalLongSizes(address) view returns (uint256)
maxGlobalShortSizes
viewfunction maxGlobalShortSizes(address) view returns (uint256)
maxTimeDelay
viewfunction maxTimeDelay() view returns (uint256)
minBlockDelayKeeper
viewfunction minBlockDelayKeeper() view returns (uint256)
minExecutionFee
viewfunction minExecutionFee() view returns (uint256)
minTimeDelayPublic
viewfunction minTimeDelayPublic() view returns (uint256)
referralStorage
viewfunction referralStorage() view returns (address)
router
viewfunction router() view returns (address)
shortsTracker
viewfunction shortsTracker() view returns (address)
vault
viewfunction vault() view returns (address)
weth
viewfunction weth() view returns (address)
approve
nonpayablefunction approve(address _token, address _spender, uint256 _amount)
cancelDecreasePosition
nonpayablefunction cancelDecreasePosition(bytes32 _key, address _executionFeeReceiver) returns (bool)
cancelIncreasePosition
nonpayablefunction cancelIncreasePosition(bytes32 _key, address _executionFeeReceiver) returns (bool)
createDecreasePosition
payablefunction createDecreasePosition(tuple _params) payable returns (bytes32)
createIncreasePosition
payablefunction createIncreasePosition(tuple params, uint256 _amountIn) payable returns (bytes32)
createIncreasePositionETH
payablefunction createIncreasePositionETH(tuple params) payable returns (bytes32)
executeDecreasePosition
nonpayablefunction executeDecreasePosition(bytes32 _key, address _executionFeeReceiver) returns (bool)
executeDecreasePositions
nonpayablefunction executeDecreasePositions(uint256 _endIndex, address _executionFeeReceiver)
executeIncreasePosition
nonpayablefunction executeIncreasePosition(bytes32 _key, address _executionFeeReceiver) returns (bool)
executeIncreasePositions
nonpayablefunction executeIncreasePositions(uint256 _endIndex, address _executionFeeReceiver)
sendValue
nonpayablefunction sendValue(address _receiver, uint256 _amount)
setAdmin
nonpayablefunction setAdmin(address _admin)
setCallbackGasLimit
nonpayablefunction setCallbackGasLimit(uint256 _callbackGasLimit)
setDelayValues
nonpayablefunction setDelayValues(uint256 _minBlockDelayKeeper, uint256 _minTimeDelayPublic, uint256 _maxTimeDelay)
setDepositFee
nonpayablefunction setDepositFee(uint256 _depositFee)
setExecutionFeeReceiver
nonpayablefunction setExecutionFeeReceiver(address _executionFeeReceiver)
setGov
nonpayablefunction setGov(address _gov)
setIncreasePositionBufferBps
nonpayablefunction setIncreasePositionBufferBps(uint256 _increasePositionBufferBps)
setIsLeverageEnabled
nonpayablefunction setIsLeverageEnabled(bool _isLeverageEnabled)
setMaxGlobalSizes
nonpayablefunction setMaxGlobalSizes(address[] _tokens, uint256[] _longSizes, uint256[] _shortSizes)
setMinExecutionFee
nonpayablefunction setMinExecutionFee(uint256 _minExecutionFee)
setPositionKeeper
nonpayablefunction setPositionKeeper(address _account, bool _isActive)
setReferralStorage
nonpayablefunction setReferralStorage(address _referralStorage)
setRequestKeysStartValues
nonpayablefunction setRequestKeysStartValues(uint256 _increasePositionRequestKeysStart, uint256 _decreasePositionRequestKeysStart)
withdrawFees
nonpayablefunction withdrawFees(address _token, address _receiver)
events
Callback
event Callback(address callbackTarget, bool success)
CancelDecreasePosition
event CancelDecreasePosition(address indexed account, address[] path, address indexToken, uint256 collateralDelta, uint256 sizeDelta, bool isLong, address receiver, uint256 acceptablePrice, uint256 minOut, uint256 executionFee, uint256 blockGap, uint256 timeGap)
CancelIncreasePosition
event CancelIncreasePosition(address indexed account, address[] path, address indexToken, uint256 amountIn, uint256 minOut, uint256 sizeDelta, bool isLong, uint256 acceptablePrice, uint256 executionFee, uint256 blockGap, uint256 timeGap)
CreateDecreasePosition
event CreateDecreasePosition(address indexed account, address[] path, address indexToken, uint256 collateralDelta, uint256 sizeDelta, bool isLong, address receiver, uint256 acceptablePrice, uint256 minOut, uint256 executionFee, uint256 index, uint256 queueIndex)
CreateIncreasePosition
event CreateIncreasePosition(address indexed account, address[] path, address indexToken, uint256 amountIn, uint256 minOut, uint256 sizeDelta, bool isLong, uint256 acceptablePrice, uint256 executionFee, uint256 index, uint256 queueIndex)
DecreasePositionReferral
event DecreasePositionReferral(address account, uint256 sizeDelta, uint256 marginFeeBasisPoints, bytes32 referralCode, address referrer)
ExecuteDecreasePosition
event ExecuteDecreasePosition(address indexed account, address[] path, address indexToken, uint256 collateralDelta, uint256 sizeDelta, bool isLong, address receiver, uint256 acceptablePrice, uint256 minOut, uint256 executionFee, uint256 blockGap, uint256 timeGap)
ExecuteIncreasePosition
event ExecuteIncreasePosition(address indexed account, address[] path, address indexToken, uint256 amountIn, uint256 minOut, uint256 sizeDelta, bool isLong, uint256 acceptablePrice, uint256 executionFee, uint256 blockGap, uint256 timeGap)
IncreasePositionReferral
event IncreasePositionReferral(address account, uint256 sizeDelta, uint256 marginFeeBasisPoints, bytes32 referralCode, address referrer)
SetAdmin
event SetAdmin(address admin)
SetCallbackGasLimit
event SetCallbackGasLimit(uint256 callbackGasLimit)
SetDelayValues
event SetDelayValues(uint256 minBlockDelayKeeper, uint256 minTimeDelayPublic, uint256 maxTimeDelay)
SetDepositFee
event SetDepositFee(uint256 depositFee)
SetExecutionFeeReceiver
event SetExecutionFeeReceiver(address executionFeeReceiver)
SetIncreasePositionBufferBps
event SetIncreasePositionBufferBps(uint256 increasePositionBufferBps)
SetIsLeverageEnabled
event SetIsLeverageEnabled(bool isLeverageEnabled)
SetMaxGlobalSizes
event SetMaxGlobalSizes(address[] tokens, uint256[] longSizes, uint256[] shortSizes)
SetMinExecutionFee
event SetMinExecutionFee(uint256 minExecutionFee)
SetPositionKeeper
event SetPositionKeeper(address indexed account, bool isActive)
SetReferralStorage
event SetReferralStorage(address referralStorage)
SetRequestKeysStartValues
event SetRequestKeysStartValues(uint256 increasePositionRequestKeysStart, uint256 decreasePositionRequestKeysStart)
WithdrawFees
event WithdrawFees(address token, address receiver, uint256 amount)
errors
No errors.
creation bytecode
0x608060405260646008556012805460ff191660011790553480156200002357600080fd5b5060405162005f3c38038062005f3c8339810160408190526200004691620000ec565b600160008190558054336001600160a01b031991821681179092556003805482166001600160a01b039a8b16179055600580548216988a16989098179097556006805488169689169690961790955560079290925560048054861693871693909317909255600280548516909317909255600d55600e805490921692169190911790556200016f565b80516001600160a01b0381168114620000e757600080fd5b919050565b600080600080600080600060e0888a0312156200010857600080fd5b6200011388620000cf565b96506200012360208901620000cf565b95506200013360408901620000cf565b94506200014360608901620000cf565b93506080880151925060a088015191506200016160c08901620000cf565b905092959891949750929550565b615dbd806200017f6000396000f3fe6080604052600436106103845760003560e01c806363ae2103116101d1578063b39b0ae911610102578063f2cea6a5116100a0578063fa4445771161006f578063fa44457714610bad578063faf990f314610bda578063fbfa77cf14610cd3578063fc2cee6214610cf357600080fd5b8063f2cea6a514610b14578063f3883d8b14610b4d578063f851a44014610b6d578063f887ea4014610b8d57600080fd5b8063d91cc0b2116100dc578063d91cc0b214610aa1578063e1f21c6714610ab4578063ef12c67e14610ad4578063f255527814610af457600080fd5b8063b39b0ae914610a58578063cb0269c914610a6b578063cfad57a214610a8157600080fd5b80638a54942f1161016f57806398d1e03a1161014957806398d1e03a146109ec5780639a20810014610a025780639b57862014610a22578063ae4d7f9a14610a3857600080fd5b80638a54942f1461097f57806395e9bbd71461099f5780639698d25a146109bf57600080fd5b80636d456139116101ab5780636d4561391461090c5780636f09c6ae1461092c578063704b6c021461093f5780637c2eb9f71461095f57600080fd5b806363ae2103146108c0578063657bc5d0146108d657806367a52793146108f657600080fd5b806327b42c0f116102b65780634067b132116102545780635d5c22e8116102235780635d5c22e81461082657806360a362e21461085357806362f8a3fe14610873578063633451de1461089357600080fd5b80634067b132146107b05780634278555f146107d0578063490ae210146107f05780635841fcaa1461081057600080fd5b806336eba48a1161029057806336eba48a146107305780633a2a80c7146107605780633e72a262146107765780633fc8cef31461079057600080fd5b806327b42c0f146106d0578063308aa81f146106f05780633422ead11461071057600080fd5b80631bca8cf011610323578063225fc9fd116102fd578063225fc9fd1461065a578063233bfe3b1461067a57806324a084df1461069a57806324f74697146106ba57600080fd5b80631bca8cf0146105195780631ce9cb8f1461052f5780631f2851061461055c57600080fd5b80630fa6aec61161035f5780630fa6aec6146104965780631045c74e146104b6578063126082cf146104e357806312d43a51146104f957600080fd5b80626cc35e146103fb57806304225954146104385780630d4d003d1461046657600080fd5b366103f6576006546001600160a01b031633146103f45760405162461bcd60e51b815260206004820152602360248201527f42617365506f736974696f6e4d616e616765723a20696e76616c69642073656e6044820152623232b960e91b60648201526084015b60405180910390fd5b005b600080fd5b34801561040757600080fd5b5060095461041b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561044457600080fd5b506104586104533660046152e5565b610d13565b60405190815260200161042f565b34801561047257600080fd5b50610486610481366004615313565b610d34565b604051901515815260200161042f565b3480156104a257600080fd5b50600e5461041b906001600160a01b031681565b3480156104c257600080fd5b506104586104d1366004615343565b600b6020526000908152604090205481565b3480156104ef57600080fd5b5061045861271081565b34801561050557600080fd5b5060015461041b906001600160a01b031681565b34801561052557600080fd5b5061045860165481565b34801561053b57600080fd5b5061045861054a366004615343565b600a6020526000908152604090205481565b34801561056857600080fd5b506105ea6105773660046152e5565b601c602052600090815260409020805460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169a988a16999798969760ff80881698610100988990048316989093918216929104168d565b604080516001600160a01b039e8f1681529c8e1660208e01528c019a909a5260608b019890985295151560808a015293891660a089015260c088019290925260e087015261010086015261012085015261014084015215156101608301529091166101808201526101a00161042f565b34801561066657600080fd5b50610486610675366004615313565b611119565b34801561068657600080fd5b506103f46106953660046152e5565b61141e565b3480156106a657600080fd5b506103f46106b5366004615360565b611484565b3480156106c657600080fd5b5061045860175481565b3480156106dc57600080fd5b506104866106eb366004615313565b6114c5565b3480156106fc57600080fd5b506103f461070b36600461538c565b61186f565b34801561071c57600080fd5b506103f461072b3660046153bc565b6118e0565b34801561073c57600080fd5b5061048661074b366004615343565b60186020526000908152604090205460ff1681565b34801561076c57600080fd5b5061045860105481565b34801561078257600080fd5b506012546104869060ff1681565b34801561079c57600080fd5b5060065461041b906001600160a01b031681565b3480156107bc57600080fd5b506103f46107cb3660046153ea565b611969565b3480156107dc57600080fd5b506104586107eb3660046152e5565b6119e9565b3480156107fc57600080fd5b506103f461080b3660046152e5565b6119f9565b34801561081c57600080fd5b50610458600f5481565b34801561083257600080fd5b506108466108413660046152e5565b611a58565b60405161042f919061545a565b34801561085f57600080fd5b5061048661086e366004615313565b611b87565b34801561087f57600080fd5b5061045861088e366004615360565b611e4c565b34801561089f57600080fd5b506104586108ae366004615343565b60196020526000908152604090205481565b3480156108cc57600080fd5b50610458600d5481565b3480156108e257600080fd5b5060045461041b906001600160a01b031681565b34801561090257600080fd5b5061045860075481565b34801561091857600080fd5b506103f4610927366004615343565b611e93565b61045861093a36600461546d565b611f0b565b34801561094b57600080fd5b506103f461095a366004615343565b61206b565b34801561096b57600080fd5b506103f461097a3660046154a9565b6120e3565b34801561098b57600080fd5b506103f461099a3660046152e5565b61214e565b3480156109ab57600080fd5b506108466109ba3660046152e5565b6121ad565b3480156109cb57600080fd5b506104586109da366004615343565b600c6020526000908152604090205481565b3480156109f857600080fd5b5061045860085481565b348015610a0e57600080fd5b506103f4610a1d366004615313565b6122d4565b348015610a2e57600080fd5b5061045860155481565b348015610a4457600080fd5b506103f4610a53366004615343565b612486565b610458610a663660046154df565b6124fe565b348015610a7757600080fd5b5061045860115481565b348015610a8d57600080fd5b506103f4610a9c366004615343565b612674565b610458610aaf366004615524565b6126c0565b348015610ac057600080fd5b506103f4610acf366004615559565b612811565b348015610ae057600080fd5b506103f4610aef366004615670565b6128b4565b348015610b0057600080fd5b506103f4610b0f366004615756565b6129c9565b348015610b2057600080fd5b5060155460135460165460145460408051948552602085019390935291830152606082015260800161042f565b348015610b5957600080fd5b506103f4610b68366004615313565b612a82565b348015610b7957600080fd5b5060025461041b906001600160a01b031681565b348015610b9957600080fd5b5060055461041b906001600160a01b031681565b348015610bb957600080fd5b50610458610bc8366004615343565b601b6020526000908152604090205481565b348015610be657600080fd5b50610c69610bf53660046152e5565b601a602052600090815260409020805460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169a988a169997989697959660ff958616969495939492939092908216916101009004168c565b604080516001600160a01b039d8e1681529b8d1660208d01528b019990995260608a0197909752608089019590955292151560a088015260c087019190915260e086015261010085015261012084015215156101408301529091166101608201526101800161042f565b348015610cdf57600080fd5b5060035461041b906001600160a01b031681565b348015610cff57600080fd5b506103f4610d0e3660046152e5565b612c34565b60138181548110610d2357600080fd5b600091825260209091200154905081565b6000610d3e612c93565b6000838152601c6020908152604080832081516101c08101835281546001600160a01b031681526001820180548451818702810187019095528085529194929385840193909290830182828015610dbe57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da0575b505050918352505060028201546001600160a01b0390811660208301526003830154604083015260048301546060830152600583015460ff8082161515608085015261010091829004831660a0850152600685015460c0850152600785015460e08501526008850154828501526009850154610120850152600a850154610140850152600b909401549384161515610160840152909204821661018090910152815191925016610e72576001915050611109565b6000610e8d8261014001518361016001518460000151612ced565b905080610e9f57600092505050611109565b6000858152601c6020526040812080546001600160a01b031916815590610ec9600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820180546001600160a81b031990811690915560068301829055600783018290556008830182905560098301829055600a8301829055600b9092018054909216909155825160208401518051610f759291908490610f4e57610f4e615784565b60200260200101518560400151866060015187608001518860a00151308a60e00151612e33565b905080156110395760018360200151511115610feb5760035460208401518051610fd4926001600160a01b0316918491600090610fb457610fb4615784565b60200260200101516001600160a01b03166131f49092919063ffffffff16565b610fe883602001518461010001513061324b565b90505b8261018001511561100957611004818460c001516132f8565b611039565b6110398360c00151828560200151600187602001515161102991906157b0565b81518110610fb457610fb4615784565b611048836101200151866132f8565b82600001516001600160a01b03167f21435c5b618d77ff3657140cd3318e2cffaebc5e0e1b7318f56a9ba4044c3ed284602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001516110be8e61014001514361338c90919063ffffffff16565b6101608f01516110cf90429061338c565b6040516110e69b9a999897969594939291906157c7565b60405180910390a2611101836101a001518760016000613398565b600193505050505b6111136001600055565b92915050565b6000611123612c93565b6000838152601a6020908152604080832081516101a08101835281546001600160a01b0316815260018201805484518187028101870190955280855291949293858401939092908301828280156111a357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611185575b505050918352505060028201546001600160a01b039081166020830152600383015460408301526004830154606083015260058301546080830152600683015460ff908116151560a0840152600784015460c0840152600884015460e0840152600984015461010080850191909152600a850154610120850152600b9094015490811615156101408401529290920482166101609091015281519192501661124f576001915050611109565b600061126a826101200151836101400151846000015161348e565b90508061127c57600092505050611109565b6000858152601a6020526040812080546001600160a01b0319168155906112a6600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820181905560068201805460ff19169055600782018190556008820181905560098201819055600a820155600b0180546001600160a81b03191690556101608201511561132957611324826060015183600001516132f8565b61134d565b61134d826000015183606001518460200151600081518110610fb457610fb4615784565b61135c826101000151856132f8565b81600001516001600160a01b03167f35b638e650e2328786fb405bd69d2083dbedc018d086662e74b775b4f1dae4bf83602001518460400151856060015186608001518760a001518860c001518960e001518a61010001516113cc8c61012001514361338c90919063ffffffff16565b6101408d01516113dd90429061338c565b6040516113f39a9998979695949392919061583a565b60405180910390a261140e8261018001518660006001613398565b6001925050506111136001600055565b6002546001600160a01b031633146114485760405162461bcd60e51b81526004016103eb9061589d565b60088190556040518181527f21167d0d4661af93817ebce920f18986eed3d75d5e1c03f2aed05efcbafbc452906020015b60405180910390a150565b6001546001600160a01b031633146114ae5760405162461bcd60e51b81526004016103eb906158d4565b6114c16001600160a01b038316826134db565b5050565b60006114cf612c93565b6000838152601a6020908152604080832081516101a08101835281546001600160a01b03168152600182018054845181870281018701909552808552919492938584019390929083018282801561154f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611531575b505050918352505060028201546001600160a01b039081166020830152600383015460408301526004830154606083015260058301546080830152600683015460ff908116151560a0840152600784015460c0840152600884015460e0840152600984015461010080850191909152600a850154610120850152600b909401549081161515610140840152929092048216610160909101528151919250166115fb576001915050611109565b60006116168261012001518361014001518460000151612ced565b90508061162857600092505050611109565b6000858152601a6020526040812080546001600160a01b031916815590611652600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820181905560068201805460ff19169055600782018190556008820181905560098201819055600a820155600b0180546001600160a81b031916905560608201511561176357606082015160208301515160011015611714576003546060840151602085015180516116fe936001600160a01b0316929190600090610fb457610fb4615784565b611711836020015184608001513061324b565b90505b60006117343385602001518487604001518860c001518960a001516135f4565b60035460208601518051929350611760926001600160a01b0390921691849190611029906001906157b0565b50505b8151602083015180516117af92919061177e906001906157b0565b8151811061178e5761178e615784565b602002602001015184604001518560a001518660c001518760e001516136e2565b6117be826101000151856132f8565b81600001516001600160a01b03167f1be316b94d38c07bd41cdb4913772d0a0a82802786a2f8b657b6e85dbcdfc64183602001518460400151856060015186608001518760a001518860c001518960e001518a610100015161182e8c61012001514361338c90919063ffffffff16565b6101408d015161183f90429061338c565b6040516118559a9998979695949392919061583a565b60405180910390a261140e82610180015186600180613398565b6002546001600160a01b031633146118995760405162461bcd60e51b81526004016103eb9061589d565b6015829055601681905560408051838152602081018390527febb0f666150f4be5b60c45df8f3e49992510b0128027fe58eea6110f296493bc910160405180910390a15050565b6002546001600160a01b0316331461190a5760405162461bcd60e51b81526004016103eb9061589d565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527ffbabc02389290a451c6e600d05bf9887b99bfad39d8e1237e4e3df042e4941fe910160405180910390a25050565b6002546001600160a01b031633146119935760405162461bcd60e51b81526004016103eb9061589d565b600f8390556010829055601181905560408051848152602081018490529081018290527fb98e759701eaca2e60c25e91109003c1c7442ef731b5d569037063005da8254d906060015b60405180910390a1505050565b60148181548110610d2357600080fd5b6002546001600160a01b03163314611a235760405162461bcd60e51b81526004016103eb9061589d565b60078190556040518181527f974fd3c1fcb4653dfc4fb740c4c692cd212d55c28f163f310128cb64d830067590602001611479565b6000818152601c6020908152604080832081516101c08101835281546001600160a01b031681526001820180548451818702810187019095528085526060969592948584019390929190830182828015611adb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611abd575b505050918352505060028201546001600160a01b039081166020808401919091526003840154604084015260048401546060840152600584015460ff8082161515608086015261010091829004841660a0860152600686015460c0860152600786015460e08601526008860154828601526009860154610120860152600a860154610140860152600b909501549485161515610160850152909304166101809091015201519392505050565b6000611b91612c93565b6000838152601c6020908152604080832081516101c08101835281546001600160a01b031681526001820180548451818702810187019095528085529194929385840193909290830182828015611c1157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611bf3575b505050918352505060028201546001600160a01b0390811660208301526003830154604083015260048301546060830152600583015460ff8082161515608085015261010091829004831660a0850152600685015460c0850152600785015460e08501526008850154828501526009850154610120850152600a850154610140850152600b909401549384161515610160840152909204821661018090910152815191925016611cc5576001915050611109565b6000611ce0826101400151836101600151846000015161348e565b905080611cf257600092505050611109565b6000858152601c6020526040812080546001600160a01b031916815590611d1c600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820180546001600160a81b031990811690915560068301829055600783018290556008830182905560098301829055600a830191909155600b90910180549091169055610120820151611d9490856132f8565b81600001516001600160a01b03167f87abfd78e844f28318363bdf3da99eab2f4a2da9ff7ae365484507f7b6c3f80583602001518460400151856060015186608001518760a001518860c001518960e001518a61010001518b6101200151611e0a8d61014001514361338c90919063ffffffff16565b6101608e0151611e1b90429061338c565b604051611e329b9a999897969594939291906157c7565b60405180910390a261140e826101a0015186600080613398565b6040516bffffffffffffffffffffffff19606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b6002546001600160a01b03163314611ebd5760405162461bcd60e51b81526004016103eb9061589d565b600e80546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfc06b8bdd810c128dbf0415dc06b000ccccb25bddcc3c834c5f3947467f81b090602001611479565b6000611f15612c93565b600d548261010001351015611f3c5760405162461bcd60e51b81526004016103eb90615903565b8161010001353414611f605760405162461bcd60e51b81526004016103eb90615920565b611f6a828061593d565b905060011480611f855750611f7f828061593d565b90506002145b611fa15760405162461bcd60e51b81526004016103eb9061598e565b611fb3610140830161012084016154a9565b15612048576006546001600160a01b0316611fce838061593d565b6001611fda868061593d565b611fe59291506157b0565b818110611ff457611ff4615784565b90506020020160208101906120099190615343565b6001600160a01b0316146120485760405162461bcd60e51b81526004016103eb906020808252600490820152630e0c2e8d60e31b604082015260600190565b612050613a42565b61205a3383613ab4565b90506120666001600055565b919050565b6001546001600160a01b031633146120955760405162461bcd60e51b81526004016103eb906158d4565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190602001611479565b6002546001600160a01b0316331461210d5760405162461bcd60e51b81526004016103eb9061589d565b6012805460ff19168215159081179091556040519081527f4eb87a5935d402aa24c01b45bfb30adefcd2328b480f2d967864de4b64ea929f90602001611479565b6002546001600160a01b031633146121785760405162461bcd60e51b81526004016103eb9061589d565b60178190556040518181527f22bd2c9f980325d046be74aaef5fc76df4a2bc3fbc7c5a1200fcc79fe80dab6c90602001611479565b6000818152601a6020908152604080832081516101a08101835281546001600160a01b03168152600182018054845181870281018701909552808552606096959294858401939092919083018282801561223057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612212575b505050918352505060028201546001600160a01b03908116602080840191909152600384015460408401526004840154606084015260058401546080840152600684015460ff908116151560a0850152600785015460c0850152600885015460e0850152600985015461010080860191909152600a860154610120860152600b90950154908116151561014085015293909304166101609091015201519392505050565b3360009081526018602052604090205460ff166123035760405162461bcd60e51b81526004016103eb906159ab565b6015546013548082106123165750505050565b80841115612322578093505b8382101561247e5760006013838154811061233f5761233f615784565b6000918252602090912001546040516327b42c0f60e01b8152600481018290526001600160a01b038616602482015290915030906327b42c0f906044016020604051808303816000875af19250505080156123b7575060408051601f3d908101601f191682019092526123b4918101906159c8565b60015b61243f5760405163225fc9fd60e01b8152600481018290526001600160a01b0385166024820152309063225fc9fd906044016020604051808303816000875af1925050508015612424575060408051601f3d908101601f19168201909252612421918101906159c8565b60015b61242d5761244d565b8061243957505061247e565b5061244d565b8061244b57505061247e565b505b6013838154811061246057612460615784565b600091825260208220015582612475816159e5565b93505050612322565b506015555050565b6002546001600160a01b031633146124b05760405162461bcd60e51b81526004016103eb9061589d565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527f828abcccea18192c21d645e575652c49e20b986dab777906fc473d056b01b6a890602001611479565b6000612508612c93565b600d548360c00135101561252e5760405162461bcd60e51b81526004016103eb90615903565b8260c0013534146125515760405162461bcd60e51b81526004016103eb90615920565b61255b838061593d565b9050600114806125765750612570838061593d565b90506002145b6125925760405162461bcd60e51b81526004016103eb9061598e565b61259a613a42565b6125a78360e00135613ca6565b811561265b576005546001600160a01b0316631b8278786125c8858061593d565b60008181106125d9576125d9615784565b90506020020160208101906125ee9190615343565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015233602482015230604482015260648101859052608401600060405180830381600087803b15801561264257600080fd5b505af1158015612656573d6000803e3d6000fd5b505050505b6126683360008486613d13565b90506111136001600055565b6001546001600160a01b0316331461269e5760405162461bcd60e51b81526004016103eb906158d4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006126ca612c93565b600d548260c0013510156126f05760405162461bcd60e51b81526004016103eb90615903565b8160c001353410156127145760405162461bcd60e51b81526004016103eb90615920565b61271e828061593d565b9050600114806127395750612733828061593d565b90506002145b6127555760405162461bcd60e51b81526004016103eb9061598e565b6006546001600160a01b031661276b838061593d565b600081811061277c5761277c615784565b90506020020160208101906127919190615343565b6001600160a01b0316146127d05760405162461bcd60e51b81526004016103eb906020808252600490820152630e0c2e8d60e31b604082015260600190565b6127d8613a42565b6127e58260e00135613ca6565b60006127f53460c085013561338c565b90506128043360018386613d13565b9150506120666001600055565b6001546001600160a01b0316331461283b5760405162461bcd60e51b81526004016103eb906158d4565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af115801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae91906159c8565b50505050565b6002546001600160a01b031633146128de5760405162461bcd60e51b81526004016103eb9061589d565b60005b83518110156129955760008482815181106128fe576128fe615784565b6020026020010151905083828151811061291a5761291a615784565b6020026020010151600b6000836001600160a01b03166001600160a01b031681526020019081526020016000208190555082828151811061295d5761295d615784565b6020908102919091018101516001600160a01b039092166000908152600c90915260409020558061298d816159e5565b9150506128e1565b507fae32d569b058895b9620d6552b09aaffedc9a6f396be4d595a224ad09f8b21398383836040516119dc93929190615a30565b6002546001600160a01b031633146129f35760405162461bcd60e51b81526004016103eb9061589d565b6001600160a01b0382166000908152600a602052604090205480612a1657505050565b6001600160a01b0383166000818152600a6020526040812055612a3a9083836131f4565b604080516001600160a01b038086168252841660208201529081018290527f4f1b51dd7a2fcb861aa2670f668be66835c4ee12b4bbbf037e4d0018f39819e4906060016119dc565b3360009081526018602052604090205460ff16612ab15760405162461bcd60e51b81526004016103eb906159ab565b601654601454808210612ac45750505050565b80841115612ad0578093505b83821015612c2c57600060148381548110612aed57612aed615784565b600091825260209091200154604051630d4d003d60e01b8152600481018290526001600160a01b03861660248201529091503090630d4d003d906044016020604051808303816000875af1925050508015612b65575060408051601f3d908101601f19168201909252612b62918101906159c8565b60015b612bed57604051633051b17160e11b8152600481018290526001600160a01b038516602482015230906360a362e2906044016020604051808303816000875af1925050508015612bd2575060408051601f3d908101601f19168201909252612bcf918101906159c8565b60015b612bdb57612bfb565b80612be7575050612c2c565b50612bfb565b80612bf9575050612c2c565b505b60148381548110612c0e57612c0e615784565b600091825260208220015582612c23816159e5565b93505050612ad0565b506016555050565b6002546001600160a01b03163314612c5e5760405162461bcd60e51b81526004016103eb9061589d565b600d8190556040518181527f52a8358457e20bbb36e4086b83fb0749599f1893fe4c35a876c46dc4886d12db90602001611479565b60026000541415612ce65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103eb565b6002600055565b600042612d0560115485613ee590919063ffffffff16565b11612d3c5760405162461bcd60e51b8152602060048201526007602482015266195e1c1a5c995960ca1b60448201526064016103eb565b600033301480612d5b57503360009081526018602052604090205460ff165b60125490915060ff16158015612d6f575080155b15612d8c5760405162461bcd60e51b81526004016103eb906159ab565b8015612db25743612da8600f5487613ee590919063ffffffff16565b1115915050612e2c565b336001600160a01b03841614612dda5760405162461bcd60e51b81526004016103eb906159ab565b42612df060105486613ee590919063ffffffff16565b1115612e265760405162461bcd60e51b815260206004820152600560248201526464656c617960d81b60448201526064016103eb565b60019150505b9392505050565b6003546000906001600160a01b03168185612eb757604051637092736960e11b81526001600160a01b038a8116600483015283169063e124e6d290602401602060405180830381865afa158015612e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb29190615a69565b612f21565b6040516340d3096b60e11b81526001600160a01b038a811660048301528316906381a612d690602401602060405180830381865afa158015612efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f219190615a69565b90508515612f4e5783811015612f495760405162461bcd60e51b81526004016103eb90615a82565b612f6e565b83811115612f6e5760405162461bcd60e51b81526004016103eb90615ad2565b6000826001600160a01b03166312d43a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd29190615b23565b9050600460009054906101000a90046001600160a01b03166001600160a01b031663f3238cec8d8d8d8b8d8860006040518863ffffffff1660e01b81526004016130229796959493929190615b40565b600060405180830381600087803b15801561303c57600080fd5b505af1158015613050573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b03868116600483015284169250636d63c1d09150602401600060405180830381600087803b15801561309757600080fd5b505af11580156130ab573d6000803e3d6000fd5b505050506000600560009054906101000a90046001600160a01b03166001600160a01b0316632662166b8e8e8e8e8e8e8e6040518863ffffffff1660e01b815260040161313897969594939291906001600160a01b0397881681529587166020870152938616604086015260608501929092526080840152151560a083015290911660c082015260e00190565b6020604051808303816000875af1158015613157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317b9190615a69565b60405163d3c87bbb60e01b81526001600160a01b0386811660048301529192509083169063d3c87bbb90602401600060405180830381600087803b1580156131c257600080fd5b505af11580156131d6573d6000803e3d6000fd5b505050506131e48d8a613ef1565b9c9b505050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261324690849061405d565b505050565b600083516002141561329e576132978460008151811061326d5761326d615784565b60200260200101518560018151811061328857613288615784565b60200260200101518585614132565b9050612e2c565b60405162461bcd60e51b815260206004820152602960248201527f42617365506f736974696f6e4d616e616765723a20696e76616c6964205f70616044820152680e8d05cd8cadccee8d60bb1b60648201526084016103eb565b600654604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561333e57600080fd5b505af1158015613352573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f19350505050158015613246573d6000803e3d6000fd5b6000612e2c82846157b0565b6001600160a01b0384166133ab576128ae565b6001600160a01b0384163b6133bf576128ae565b601754806133cd57506128ae565b604051630c0e6b2960e31b815260048101859052831515602482015282151560448201526000906001600160a01b038716906360735948908490606401600060405180830381600088803b15801561342457600080fd5b5087f193505050508015613436575060015b61343f57613443565b5060015b604080516001600160a01b038816815282151560208201527f46ddbd62fc1a7626fe9c43026cb0694aec0b031fe81ac66fb4cfe9381dc6fe72910160405180910390a1505050505050565b60008033301480612d5b57503360009081526018602052604090205460ff1660125490915060ff16158015612d6f575080612d8c5760405162461bcd60e51b81526004016103eb906159ab565b8047101561352b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016103eb565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613578576040519150601f19603f3d011682016040523d82523d6000602084013e61357d565b606091505b50509050806132465760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016103eb565b600080613605888888888888614225565b905080156136d357600061363c61271061363661362f60075461271061338c90919063ffffffff16565b8a906143fb565b90614407565b9050600061364a888361338c565b905060008960018b5161365d91906157b0565b8151811061366d5761366d615784565b602002602001015190506136af82600a6000846001600160a01b03166001600160a01b0316815260200190815260200160002054613ee590919063ffffffff16565b6001600160a01b039091166000908152600a60205260409020555091506136d89050565b859150505b9695505050505050565b6003546001600160a01b0316600083613764576040516340d3096b60e11b81526001600160a01b0387811660048301528316906381a612d690602401602060405180830381865afa15801561373b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375f9190615a69565b6137ce565b604051637092736960e11b81526001600160a01b03878116600483015283169063e124e6d290602401602060405180830381865afa1580156137aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ce9190615a69565b905083156137fb57828111156137f65760405162461bcd60e51b81526004016103eb90615ad2565b61381b565b8281101561381b5760405162461bcd60e51b81526004016103eb90615a82565b613826868587614413565b6000826001600160a01b03166312d43a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015613866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388a9190615b23565b60048054604051633cc8e33b60e21b81529293506001600160a01b03169163f3238cec916138c7918d918d918d918c918e918b9160019101615b40565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b50506040516306d63c1d60e41b81526001600160a01b03868116600483015284169250636d63c1d09150602401600060405180830381600087803b15801561393c57600080fd5b505af1158015613950573d6000803e3d6000fd5b5050600554604051630f8ee8bb60e11b81526001600160a01b038d811660048301528c811660248301528b81166044830152606482018b905289151560848301529091169250631f1dd176915060a401600060405180830381600087803b1580156139ba57600080fd5b505af11580156139ce573d6000803e3d6000fd5b505060405163d3c87bbb60e01b81526001600160a01b0386811660048301528416925063d3c87bbb9150602401600060405180830381600087803b158015613a1557600080fd5b505af1158015613a29573d6000803e3d6000fd5b50505050613a3789876145ed565b505050505050505050565b3415613ab257600660009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a9857600080fd5b505af1158015613aac573d6000803e3d6000fd5b50505050505b565b604080516101c081019091526001600160a01b0383168152600090819060208101613adf858061593d565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250602090810190613b299060408701908701615343565b6001600160a01b031681526020018460400135815260200184606001358152602001846080016020810190613b5e91906154a9565b15158152602001613b7560c0860160a08701615343565b6001600160a01b0316815260c080860135602083015260e0860135604083015261010086013560608301524360808301524260a083015201613bbf610140860161012087016154a9565b15158152602001613bd861016086016101408701615343565b6001600160a01b031690529050600080613bf1836146eb565b9150915082600001516001600160a01b03167f74c882eb1761ed5a2624918dcea75b65a5ad594b17233ec9d95a676c538acdc184602001518560400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001518c6001601480549050613c6691906157b0565b604051613c7d9b9a999897969594939291906157c7565b60405180910390a2600e54613c9c9082906001600160a01b031661489a565b5095945050505050565b8015801590613cbf57506009546001600160a01b031615155b15613d10576009546040516356b4b2ad60e01b8152336004820152602481018390526001600160a01b03909116906356b4b2ad90604401600060405180830381600087803b158015613a9857600080fd5b50565b604080516101a081019091526001600160a01b0385168152600090819060208101613d3e858061593d565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250602090810190613d889060408701908701615343565b6001600160a01b031681526020018581526020018460400135815260200184606001358152602001846080016020810190613dc391906154a9565b151581526020018460a0013581526020018460c001358152602001438152602001428152602001861515815260200184610100016020810190613e069190615343565b6001600160a01b031690529050600080613e1f83614c0c565b90925090506001600160a01b0388167f7d69b6504d572bc324acb3b6c951b90a8952e5378539ae3225a7e1e401069e0e613e59878061593d565b613e6960408a0160208b01615343565b8a60408b013560608c0135613e8460a08e0160808f016154a9565b8d60a001358e60c001358c6001601380549050613ea191906157b0565b604051613eb89b9a99989796959493929190615b81565b60405180910390a2600e54613ed79082906001600160a01b0316614daf565b50925050505b949350505050565b6000612e2c8284615c24565b6009546001600160a01b031680613f0757505050565b60405163534ef88360e01b81526001600160a01b038481166004830152600091829184169063534ef883906024016040805180830381865afa158015613f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f759190615c3c565b909250905081613f86575050505050565b7f474c763ff84bf2c2039a6d9fea955ecd0f724030e3c365b91169c6a16fe751b78585600360009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140209190615a69565b604080516001600160a01b039485168152602081019390935282015260608101859052908316608082015260a00160405180910390a15050505050565b60006140b2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661512d9092919063ffffffff16565b90508051600014806140d35750808060200190518101906140d391906159c8565b6132465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103eb565b600354604051634998b10960e11b81526001600160a01b0386811660048301528581166024830152838116604483015260009283929116906393316212906064016020604051808303816000875af1158015614192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141b69190615a69565b90508381101561421c5760405162461bcd60e51b815260206004820152602b60248201527f42617365506f736974696f6e4d616e616765723a20696e73756666696369656e60448201526a1d08185b5bdd5b9d13dd5d60aa1b60648201526084016103eb565b95945050505050565b600082614234575060006136d8565b81614241575060016136d8565b6000866001885161425291906157b0565b8151811061426257614262615784565b6020908102919091010151600354604051634a3f088d60e01b81526001600160a01b038b8116600483015280841660248301528881166044830152871515606483015292935091169060009081908390634a3f088d9060840161010060405180830381865afa1580156142d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142fd9190615c61565b50505050505091509150816000141561431d5760009450505050506136d8565b60006143298388613ee5565b604051630a48d5a960e01b81526001600160a01b038781166004830152602482018d9052919250600091861690630a48d5a990604401602060405180830381865afa15801561437c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a09190615a69565b905060006143ae8483613ee5565b905060006143c285613636886127106143fb565b905060006143e4836136366008546127106143dd9190615c24565b88906143fb565b919091109f9e505050505050505050505050505050565b6000612e2c8284615ccb565b6000612e2c8284615cea565b8061441d57505050565b8115614529576001600160a01b0383166000908152600b602052604090205480158015906144c5575060035460405163783a2b6760e11b81526001600160a01b03868116600483015283926144c39286929091169063f07456ce906024015b602060405180830381865afa158015614499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144bd9190615a69565b90613ee5565b115b156128ae5760405162461bcd60e51b815260206004820152602e60248201527f42617365506f736974696f6e4d616e616765723a206d617820676c6f62616c2060448201526d1b1bdb99dcc8195e18d95959195960921b60648201526084016103eb565b6001600160a01b0383166000908152600c60205260409020548015801590614588575060035460405163114f1b5560e31b81526001600160a01b038681166004830152839261458692869290911690638a78daa89060240161447c565b115b156128ae5760405162461bcd60e51b815260206004820152602f60248201527f42617365506f736974696f6e4d616e616765723a206d617820676c6f62616c2060448201526e1cda1bdc9d1cc8195e18d959591959608a1b60648201526084016103eb565b6009546001600160a01b03168061460357505050565b60405163534ef88360e01b81526001600160a01b038481166004830152600091829184169063534ef883906024016040805180830381865afa15801561464d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146719190615c3c565b915091507fc2414023ce7002ee98557d1e7be21e5559073336f2217ee5f9b2e50fd85f71ee8585600360009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ffc573d6000803e3d6000fd5b80516001600160a01b0381166000908152601b6020526040812054909182918290614717906001613ee5565b6001600160a01b0383166000908152601b6020526040812082905590915061473f8383611e4c565b6000818152601c60209081526040909120885181546001600160a01b0319166001600160a01b039091161781558882015180519394508993919261478b9260018501929091019061526b565b5060408201516002820180546001600160a01b039283166001600160a01b0319909116179055606083015160038301556080830151600483015560a083015160058301805460c08601518416610100908102610100600160a81b031994151585166001600160a81b0319938416171790925560e0860151600686015581860151600786015561012086015160088601556101408601516009860155610160860151600a860155610180860151600b90950180546101a090970151909416909102931515909116931692909217179055601480546001810182556000919091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01819055909590945092505050565b6000828152601c6020908152604080832081516101c08101835281546001600160a01b0316815260018201805484518187028101870190955280855286959294858401939092919083018282801561491b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116148fd575b505050918352505060028201546001600160a01b0390811660208301526003830154604083015260048301546060830152600583015460ff8082161515608085015261010091829004831660a0850152600685015460c0850152600785015460e08501526008850154828501526009850154610120850152600a850154610140850152600b9094015493841615156101608401529092048216610180909101528151919250166149cf576001915050611113565b6000848152601c6020526040812080546001600160a01b0319168155906149f9600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820180546001600160a81b031990811690915560068301829055600783018290556008830182905560098301829055600a8301829055600b9092018054909216909155815160208301518051614aa59291908490614a7e57614a7e615784565b60200260200101518460400151856060015186608001518760a00151308960e00151612e33565b90508015614b395760018260200151511115614afb5760035460208301518051614ae4926001600160a01b0316918491600090610fb457610fb4615784565b614af882602001518361010001513061324b565b90505b81610180015115614b1957614b14818360c001516132f8565b614b39565b614b398260c00151828460200151600186602001515161102991906157b0565b614b48826101200151856132f8565b81600001516001600160a01b03167f21435c5b618d77ff3657140cd3318e2cffaebc5e0e1b7318f56a9ba4044c3ed283602001518460400151856060015186608001518760a001518860c001518960e001518a61010001518b6101200151614bbe8d61014001514361338c90919063ffffffff16565b6101608e0151614bcf90429061338c565b604051614be69b9a999897969594939291906157c7565b60405180910390a2614c01826101a001518660016000613398565b506001949350505050565b80516001600160a01b038116600090815260196020526040812054909182918290614c38906001613ee5565b6001600160a01b0383166000908152601960205260408120829055909150614c608383611e4c565b6000818152601a60209081526040909120885181546001600160a01b0319166001600160a01b0390911617815588820151805193945089939192614cac9260018501929091019061526b565b5060408201516002820180546001600160a01b0319166001600160a01b03928316179055606083015160038301556080830151600483015560a0830151600583015560c083015160068301805460ff191691151591909117905560e083015160078301556101008084015160088401556101208401516009840155610140840151600a840155610160840151600b9093018054610180909501516001600160a81b0319909516931515610100600160a81b031916939093179390911602919091179055601380546001810182556000919091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09001819055909590945092505050565b6000828152601a6020908152604080832081516101a08101835281546001600160a01b03168152600182018054845181870281018701909552808552869592948584019390929190830182828015614e3057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614e12575b505050918352505060028201546001600160a01b039081166020830152600383015460408301526004830154606083015260058301546080830152600683015460ff908116151560a0840152600784015460c0840152600884015460e0840152600984015461010080850191909152600a850154610120850152600b90940154908116151561014084015292909204821661016090910152815191925016614edc576001915050611113565b6000848152601a6020526040812080546001600160a01b031916815590614f06600183018261524d565b506002810180546001600160a01b0319169055600060038201819055600482018190556005820181905560068201805460ff19169055600782018190556008820181905560098201819055600a820155600b0180546001600160a81b031916905560608101511561501757606081015160208201515160011015614fc857600354606083015160208401518051614fb2936001600160a01b0316929190600090610fb457610fb4615784565b614fc5826020015183608001513061324b565b90505b6000614fe83384602001518486604001518760c001518860a001516135f4565b60035460208501518051929350615014926001600160a01b0390921691849190611029906001906157b0565b50505b805160208201518051615063929190615032906001906157b0565b8151811061504257615042615784565b602002602001015183604001518460a001518560c001518660e001516136e2565b615072816101000151846132f8565b80600001516001600160a01b03167f1be316b94d38c07bd41cdb4913772d0a0a82802786a2f8b657b6e85dbcdfc64182602001518360400151846060015185608001518660a001518760c001518860e001518961010001516150e28b61012001514361338c90919063ffffffff16565b6101408c01516150f390429061338c565b6040516151099a9998979695949392919061583a565b60405180910390a261512381610180015185600180613398565b5060019392505050565b6060613edd848460008585600080866001600160a01b031685876040516151549190615d38565b60006040518083038185875af1925050503d8060008114615191576040519150601f19603f3d011682016040523d82523d6000602084013e615196565b606091505b50915091506151a7878383876151b2565b979650505050505050565b6060831561521e578251615217576001600160a01b0385163b6152175760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103eb565b5081613edd565b613edd83838151156152335781518083602001fd5b8060405162461bcd60e51b81526004016103eb9190615d54565b5080546000825590600052602060002090810190613d1091906152d0565b8280548282559060005260206000209081019282156152c0579160200282015b828111156152c057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061528b565b506152cc9291506152d0565b5090565b5b808211156152cc57600081556001016152d1565b6000602082840312156152f757600080fd5b5035919050565b6001600160a01b0381168114613d1057600080fd5b6000806040838503121561532657600080fd5b823591506020830135615338816152fe565b809150509250929050565b60006020828403121561535557600080fd5b8135612e2c816152fe565b6000806040838503121561537357600080fd5b823561537e816152fe565b946020939093013593505050565b6000806040838503121561539f57600080fd5b50508035926020909101359150565b8015158114613d1057600080fd5b600080604083850312156153cf57600080fd5b82356153da816152fe565b91506020830135615338816153ae565b6000806000606084860312156153ff57600080fd5b505081359360208301359350604090920135919050565b600081518084526020808501945080840160005b8381101561544f5781516001600160a01b03168752958201959082019060010161542a565b509495945050505050565b602081526000612e2c6020830184615416565b60006020828403121561547f57600080fd5b813567ffffffffffffffff81111561549657600080fd5b82016101608185031215612e2c57600080fd5b6000602082840312156154bb57600080fd5b8135612e2c816153ae565b600061012082840312156154d957600080fd5b50919050565b600080604083850312156154f257600080fd5b823567ffffffffffffffff81111561550957600080fd5b615515858286016154c6565b95602094909401359450505050565b60006020828403121561553657600080fd5b813567ffffffffffffffff81111561554d57600080fd5b613edd848285016154c6565b60008060006060848603121561556e57600080fd5b8335615579816152fe565b92506020840135615589816152fe565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156155d9576155d961559a565b604052919050565b600067ffffffffffffffff8211156155fb576155fb61559a565b5060051b60200190565b600082601f83011261561657600080fd5b8135602061562b615626836155e1565b6155b0565b82815260059290921b8401810191818101908684111561564a57600080fd5b8286015b84811015615665578035835291830191830161564e565b509695505050505050565b60008060006060848603121561568557600080fd5b833567ffffffffffffffff8082111561569d57600080fd5b818601915086601f8301126156b157600080fd5b813560206156c1615626836155e1565b82815260059290921b8401810191818101908a8411156156e057600080fd5b948201945b838610156157075785356156f8816152fe565b825294820194908201906156e5565b9750508701359250508082111561571d57600080fd5b61572987838801615605565b9350604086013591508082111561573f57600080fd5b5061574c86828701615605565b9150509250925092565b6000806040838503121561576957600080fd5b8235615774816152fe565b91506020830135615338816152fe565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156157c2576157c261579a565b500390565b60006101608083526157db8184018f615416565b6001600160a01b039d8e166020850152604084019c909c525050606081019890985295151560808801529390971660a086015260c085019190915260e08401526101008301949094526101208201939093526101400191909152919050565b600061014080835261584e8184018e615416565b6001600160a01b039c909c166020840152505060408101989098526060880196909652608087019490945291151560a086015260c085015260e084015261010083015261012090910152919050565b6020808252601e908201527f42617365506f736974696f6e4d616e616765723a20666f7262696464656e0000604082015260600190565b60208082526015908201527423b7bb32b93730b136329d103337b93134b23232b760591b604082015260600190565b60208082526003908201526266656560e81b604082015260600190565b6020808252600390820152621d985b60ea1b604082015260600190565b6000808335601e1984360301811261595457600080fd5b83018035915067ffffffffffffffff82111561596f57600080fd5b6020019150600581901b360382131561598757600080fd5b9250929050565b6020808252600390820152623632b760e91b604082015260600190565b60208082526003908201526234303360e81b604082015260600190565b6000602082840312156159da57600080fd5b8151612e2c816153ae565b60006000198214156159f9576159f961579a565b5060010190565b600081518084526020808501945080840160005b8381101561544f57815187529582019590820190600101615a14565b606081526000615a436060830186615416565b8281036020840152615a558186615a00565b905082810360408401526136d88185615a00565b600060208284031215615a7b57600080fd5b5051919050565b60208082526030908201527f42617365506f736974696f6e4d616e616765723a206d61726b2070726963652060408201526f1b1bddd95c881d1a185b881b1a5b5a5d60821b606082015260800190565b60208082526031908201527f42617365506f736974696f6e4d616e616765723a206d61726b207072696365206040820152701a1a59da195c881d1a185b881b1a5b5a5d607a1b606082015260800190565b600060208284031215615b3557600080fd5b8151612e2c816152fe565b6001600160a01b03978816815295871660208701529390951660408501529015156060840152608083015260a082019290925290151560c082015260e00190565b61014080825281018b9052600061016082018d825b8e811015615bc7578135615ba9816152fe565b6001600160a01b031683526020928301929190910190600101615b96565b50506001600160a01b038c1660208401529050896040830152886060830152876080830152615bfa60a083018815159052565b8560c08301528460e083015283610100830152826101208301529c9b505050505050505050505050565b60008219821115615c3757615c3761579a565b500190565b60008060408385031215615c4f57600080fd5b825191506020830151615338816152fe565b600080600080600080600080610100898b031215615c7e57600080fd5b885197506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151615cb3816153ae565b8092505060e089015190509295985092959890939650565b6000816000190483118215151615615ce557615ce561579a565b500290565b600082615d0757634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015615d27578181015183820152602001615d0f565b838111156128ae5750506000910152565b60008251615d4a818460208701615d0c565b9190910192915050565b6020815260008251806020840152615d73816040850160208701615d0c565b601f01601f1916919091016040019291505056fea2646970667358221220fd89cf3c96962ff715d85552643ff3e64505e1cdb3654b746d97400f6772e54164736f6c634300080c0033000000000000000000000000eb0e5e1a8500317a1b8fdd195097d5509ef861de000000000000000000000000301018daa6788775b4a500ef3228db14e0d6a5a7000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000008881ebb9a995cffcd196efd55bbf0aa8c1c5e392000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000002f366f5d66260c5da4426b16c8032c9b0af27a1f