70 txs
119.3k calls
constructor
constructor(address initialOwner, uint64 launchTime, uint64 electionPeriod, uint64 candTime, uint64 candVotingTime, uint64 proposalVotingTime, address tokenAddress, address nftAddress, address stakeAddress)
functions
candidateCounter
viewfunction candidateCounter(uint64) view returns (uint16)
counterBlackListAddress
viewfunction counterBlackListAddress() view returns (uint256)
counterBlackListNFT
viewfunction counterBlackListNFT() view returns (uint256)
fundId
viewfunction fundId() view returns (uint256)
getAllCandidates
viewfunction getAllCandidates(uint64 period) view returns (tuple[])
getAllCategoryInfo
viewfunction getAllCategoryInfo() view returns (tuple[])
getAllDelegates
viewfunction getAllDelegates(uint64 period) view returns (address[])
getBlackListAddressId
viewfunction getBlackListAddressId(uint256 id) view returns (tuple)
getBlackListAddressInRange
viewfunction getBlackListAddressInRange(uint256 startId, uint256 endId) view returns (tuple[])
getBlackListNFTId
viewfunction getBlackListNFTId(uint256 id) view returns (tuple)
getBlackListNftInRange
viewfunction getBlackListNftInRange(uint256 startId, uint256 endId) view returns (tuple[])
getCategoryIdInfo
viewfunction getCategoryIdInfo(uint8 categoryId) view returns (tuple)
getCategoryUnlockAmount
viewfunction getCategoryUnlockAmount(uint8 categoryId) view returns (uint256)
getCurrentPeriod
viewfunction getCurrentPeriod() view returns (uint64)
getFundTransferId
viewfunction getFundTransferId(uint256 id) view returns (tuple)
getFundTransferInRange
viewfunction getFundTransferInRange(uint256 startId, uint256 endId) view returns (tuple[])
getProposalInRange
viewfunction getProposalInRange(uint256 startVipId, uint256 endVipId) view returns (tuple[])
getProposalVipId
viewfunction getProposalVipId(uint256 viplId) view returns (tuple)
infoDao
viewfunction infoDao() view returns (uint64 launchTime, uint64 managementPeriod, uint64 candidateApplyTime, uint64 candVotingTime, uint64 proposalVotingTime, uint64 electionStartTime)
isBlackListAddress
viewfunction isBlackListAddress(address account) view returns (bool)
isBlackListNFT
viewfunction isBlackListNFT(uint256 nftId) view returns (bool)
isCandidate
viewfunction isCandidate(uint64 period, address account) view returns (bool, uint16)
isDelegate
viewfunction isDelegate(address account) view returns (bool)
isElectionPeriod
viewfunction isElectionPeriod() view returns (bool)
isVotedAddress
viewfunction isVotedAddress(uint64, address) view returns (bool)
isVotedNFT
viewfunction isVotedNFT(uint64, uint256) view returns (bool)
lastVipId
viewfunction lastVipId() view returns (uint256)
nft
viewfunction nft() view returns (address)
owner
viewfunction owner() view returns (address)
stake
viewfunction stake() view returns (address)
token
viewfunction token() view returns (address)
usedVotingPower
viewfunction usedVotingPower(uint64, address) view returns (uint256)
votingPower
viewfunction votingPower(address account) view returns (uint256)
candidateApply
nonpayablefunction candidateApply()
candidateApplyPermit
nonpayablefunction candidateApplyPermit(address account, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
createCategory
nonpayablefunction createCategory(string name, uint256 amount, uint16 tge, uint64 cliffTime, uint16 cliffRate, uint64 periodTime, uint16 periodRate)
createFundTransfer
nonpayablefunction createFundTransfer(uint256 vipId, uint8 categoryId, address account, uint256 amount)
endElection
nonpayablefunction endElection()
renounceOwnership
nonpayablefunction renounceOwnership()
setFirstDelegates
nonpayablefunction setFirstDelegates(address[] firstDelegates)
setProposalResults
nonpayablefunction setProposalResults(uint256 vipId, uint256 yesVotingPower, uint256 noVotingPower, uint256 abstainVotingPower, bool isFund)
switchBlackListAddress
nonpayablefunction switchBlackListAddress(address account, uint8 catId, bool listed)
switchBlackListNFT
nonpayablefunction switchBlackListNFT(uint256 nftId, uint8 catId, bool listed)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
voteFundTransfer
nonpayablefunction voteFundTransfer(uint256 id)
voteProposalResults
nonpayablefunction voteProposalResults(uint256 vipId)
voteSwitchBlackListAddress
nonpayablefunction voteSwitchBlackListAddress(uint256 id)
voteSwitchBlackListNFT
nonpayablefunction voteSwitchBlackListNFT(uint256 id)
voteToCandidate
nonpayablefunction voteToCandidate(address candidateAccount)
events
AddSwitchBlackListAddress
event AddSwitchBlackListAddress(address delegate, address account, bool listed)
AddSwitchBlackListNFT
event AddSwitchBlackListNFT(address delegate, uint256 nftId, bool listed)
BlacklistedNFT
event BlacklistedNFT(address indexed account, uint256 tokenId)
CandidateApply
event CandidateApply(address account)
CreateCategory
event CreateCategory(address owner, string name, uint256 amount)
CreateFund
event CreateFund(uint256 vipId, uint8 categoryId, address to, uint256 amount)
ElectionEnded
event ElectionEnded()
FundSucces
event FundSucces(uint256 vipId, uint8 categoryId, address to, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetAddresses
event SetAddresses(address token, address nft, address stake)
SetProposalResult
event SetProposalResult(uint256 vipId, bool isFund)
StatusBlackListAddress
event StatusBlackListAddress(address account, bool status)
StatusBlackListNFT
event StatusBlackListNFT(uint256 nftId, bool status)
VoteCandidate
event VoteCandidate(address account, address delegate, uint256 wotingPower)
VoteProposalResult
event VoteProposalResult(uint256 vipId, bool isCompleted)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x610140604052600761012052348015620000655760405162461bcd60e51b815260206004820152602260248201527f45746865722073656e7420746f206e6f6e2d70617961626c652066756e637469604482019081526137b760f11b6064830152608482fd5b506040516200648538038062006485833981016040819052620000889162000304565b888888888888888888886001600160a01b038116620000c257604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000cd816200027f565b50600180556001600160401b0342811690891611620001555760405162461bcd60e51b815260206004820152603860248201527f44414f3a5374616b696e672073746172742074696d65206d757374206265206760448201527f726561746572207468616e2070726573656e742074696d6500000000000000006064820152608401620000b9565b6001600160a01b038316158015906200017657506001600160a01b03821615155b80156200018b57506001600160a01b03811615155b620001d95760405162461bcd60e51b815260206004820152601c60248201527f44414f3a416464726573732063616e206e6f74206265207a65726f2e000000006044820152606401620000b9565b6001600160401b038816608052620001f287896200040a565b600480546001600160401b03998a1660a05297891660c05295881660e05293871661010052600280546001600160a01b03199081166001600160a01b0395861617909155600380548216938516939093179092556001600160e01b0319909516600160a01b9390961692909202909116939093179190921617905550620004409950505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620002e757600080fd5b919050565b80516001600160401b0381168114620002e757600080fd5b60008060008060008060008060006101208a8c0312156200036f5760405162461bcd60e51b815260206004820152602260248201527f414249206465636f64696e673a207475706c65206461746120746f6f2073686f6044820152611c9d60f21b6064820152608481fd5b6200037a8a620002cf565b98506200038a60208b01620002ec565b97506200039a60408b01620002ec565b9650620003aa60608b01620002ec565b9550620003ba60808b01620002ec565b9450620003ca60a08b01620002ec565b9350620003da60c08b01620002cf565b9250620003ea60e08b01620002cf565b9150620003fb6101008b01620002cf565b90509295985092959850929598565b6001600160401b038181168382160190808211156200043957634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a05160c05160e0516101005161012051615f4d6200053860003960008181610ddc01528181610e470152818161112201528181611a4e01528181611b5701528181611cbe01526143110152600081816104a50152818161125c015281816114c101528181612805015261321901526000818161047d015261498a01526000818161045301526149c401526000818161042b015281816109e201528181611adf01528181611e1601526149f7015260008181610406015281816109b001528181610a0c01528181611b0001528181612b6c01528181612bcb01528181612c3d01528181612c920152614a210152615f4d6000f3fe608060405234801561005d5760405162461bcd60e51b815260206004820152602260248201527f45746865722073656e7420746f206e6f6e2d70617961626c652066756e637469604482019081526137b760f11b6064830152608482fd5b50600436106103085760003560e01c80638d4458be116101cf578063b7000d7111610136578063e794d3d2116100ef578063f2fde38b116100c9578063f2fde38b14610896578063f89faf33146108a9578063fc0c546a146108c9578063ff3b66fe146108dc57610308565b8063e794d3d214610864578063ef14a2fe1461086d578063ef45c25a1461088d57610308565b8063b7000d71146107e1578063be002e41146107f6578063c07473f614610816578063ce8f865c14610829578063cf62da7914610831578063d9e92e1e1461084457610308565b80639b01a54a116101885780639b01a54a1461072b578063a2a31c3014610759578063abf2e01c14610779578063ac18006a14610781578063af1bd6f9146107a1578063b26a545b146107b457610308565b80638d4458be146106845780638da5cb5b146106a75780638f298952146106b8578063906554e8146106cb57806392e19843146106eb57806394e841b01461072257610308565b80634e64ec1e1161027357806365b48db91161022c57806365b48db91461061a57806367d8c53e1461063a5780636afca3ca1461064d57806370656ada14610660578063715018a6146106735780638604d15b1461067b57610308565b80634e64ec1e1461058d578063505360f0146105a0578063535133a2146105b357806359f78468146105c65780635e6f64a2146105ce5780635f52deb61461060757610308565b806313c9f797116102c557806313c9f797146105015780633a4b66f1146105165780634131ac6d146105415780634186ec601461055457806347ccca02146105675780634abce05b1461057a57610308565b8063077796271461036d578063086146d21461039557806308e8eca9146103b557806309d00a13146103d5578063116662ec146103f557806312e2478c146104e1575b60405162461bcd60e51b815260206004820152603560248201527f436f6e747261637420646f6573206e6f7420686176652066616c6c6261636b2060448201908152746e6f7220726563656976652066756e6374696f6e7360581b6064830152608482fd5b61038061037b366004614ec6565b61090a565b60405190151581526020015b60405180910390f35b61039d6109a0565b6040516001600160401b03909116815260200161038c565b6103c86103c3366004614ee4565b610a4a565b60405161038c9190614fc2565b6103e86103e3366004615024565b610c4d565b60405161038c91906150bc565b600454604080516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116928201929092527f0000000000000000000000000000000000000000000000000000000000000000821660608201527f000000000000000000000000000000000000000000000000000000000000000082166080820152600160a01b9092041660a082015260c00161038c565b6104f46104ef3660046150e6565b610d68565b60405161038c9190615104565b61051461050f366004615202565b610efd565b005b600454610529906001600160a01b031681565b6040516001600160a01b03909116815260200161038c565b61051461054f3660046153c8565b6110a0565b610514610562366004615024565b6111b4565b600354610529906001600160a01b031681565b610514610588366004615024565b61144e565b61051461059b36600461548f565b6116ad565b6105146105ae3660046154d9565b611856565b6103806105c1366004614ec6565b6119b5565b6105146119d3565b6105f96105dc366004615534565b601260209081526000928352604080842090915290825290205481565b60405190815260200161038c565b61051461061536600461556a565b611eab565b61062d610628366004615024565b612006565b60405161038c919061564f565b610514610648366004615662565b6120f4565b61051461065b366004614ec6565b6122d9565b61051461066e366004615024565b612792565b610514612a16565b6105f960145481565b610380610692366004615024565b60009081526006602052604090205460ff1690565b6000546001600160a01b0316610529565b6105f96106c636600461568a565b612a28565b6106de6106d936600461568a565b612d38565b60405161038c91906157ac565b61070f6106f93660046150e6565b600f6020526000908152604090205461ffff1681565b60405161ffff909116815260200161038c565b6105f960135481565b610380610739366004615534565b601160209081526000928352604080842090915290825290205460ff1681565b61076c6107673660046150e6565b612e74565b60405161038c91906157bf565b610380612f81565b61079461078f366004614ee4565b612fda565b60405161038c9190615817565b6105146107af366004615024565b6131d0565b6107c76107c2366004615534565b6134e2565b60408051921515835261ffff90911660208301520161038c565b6107e9613577565b60405161038c919061586c565b610809610804366004615024565b613767565b60405161038c919061590a565b6105f9610824366004614ec6565b61386f565b6105146139b2565b61051461083f36600461591d565b6139cc565b610857610852366004614ee4565b613dd7565b60405161038c9190615964565b6105f9600c5481565b61088061087b366004615024565b613fba565b60405161038c91906159b9565b6105f9600d5481565b6105146108a4366004614ec6565b6140cd565b6108bc6108b7366004614ee4565b614108565b60405161038c91906159cc565b600254610529906001600160a01b031681565b6103806108ea366004615a21565b601060209081526000928352604080842090915290825290205460ff1681565b6000806109156109a0565b6001600160401b03811660009081526005602052604081209192505b815461ffff8216101561099557846001600160a01b0316828261ffff168154811061095e5761095e615a4e565b6000918252602090912001546001600160a01b03160361098357506001949350505050565b8061098d81615a7a565b915050610931565b506000949350505050565b6000426001600160401b038082167f000000000000000000000000000000000000000000000000000000000000000090911611156109e057600091505090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03167f000000000000000000000000000000000000000000000000000000000000000082036001600160401b031681610a4357610a43615a9b565b0491505090565b6060828211610a745760405162461bcd60e51b8152600401610a6b90615ab1565b60405180910390fd5b600c54821115610a8457600c5491505b600c54831115610a9457600c5492505b6000610aa08484615adc565b6001600160401b03811115610ab757610ab76151aa565b604051908082528060200260200182016040528015610b1d57816020015b6040805160e081018252600080825260208083018290529282018190526060808301829052608083015260a0820181905260c08201528252600019909201910181610ad55790505b5090506000845b84811015610c41576000818152600a6020908152604091829020825160e08101845281548152600182015460ff81168285015261010081046001600160401b031682860152600160481b90046001600160a01b031660608201526002820180548551818602810186019096528086529194929360808601939290830182828015610bd757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bb9575b50505091835250506003919091015460ff808216151560208401526101009091041615156040909101528351849084908110610c1557610c15615a4e565b60200260200101819052508180610c2b90615aef565b9250508080610c3990615aef565b915050610b24565b50909150505b92915050565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082015260e08101919091526000828152601660209081526040918290208251610100808201855282548252600183015482850152600283015460ff811683870152046001600160a01b031660608201526003820154608082015260048201546001600160401b031660a08201526005820180548551818602810186019096528086529194929360c08601939290830182828015610d4857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d2a575b50505091835250506006919091015460ff16151560209091015292915050565b60606000610d746109a0565b9050806001600160401b0316836001600160401b03161115610dd85760405162461bcd60e51b815260206004820152601d60248201527f44414f3a444c473a57726f6e6720706572696f6420656e7465726564210000006044820152606401610a6b565b60007f000000000000000000000000000000000000000000000000000000000000000061ffff166001600160401b03811115610e1657610e166151aa565b604051908082528060200260200182016040528015610e3f578160200160208202803683370190505b50905060005b7f000000000000000000000000000000000000000000000000000000000000000061ffff16811015610ef5576001600160401b0385166000908152600560205260409020805482908110610e9b57610e9b615a4e565b9060005260206000200160009054906101000a90046001600160a01b0316828281518110610ecb57610ecb615a4e565b6001600160a01b039092166020928302919091019091015280610eed81615aef565b915050610e45565b509392505050565b610f056142df565b6000826001600160401b031611610f755760405162461bcd60e51b815260206004820152602e60248201527f44414f3a4341543a506572696f642074696d65206d757374206265206772656160448201526d3a32b9103a3430b7103d32b9379760911b6064820152608401610a6b565b60095460ff166000818152600860205260409020805460ff1916909117815560018101610fa28982615b82565b506002810187905560058101805461ffff848116600160a01b0261ffff60a01b196001600160401b03888116600160601b0267ffffffffffffffff60601b198b8616600160501b021669ffffffffffffffffffff60501b19928d16620100000269ffffffffffffffffffff19909716958e169590951795909517169290921792909217161790556009805460ff1690600061103c83615c41565b91906101000a81548160ff021916908360ff160217905550507f5e69c796e784065daeccbf3c3771ab304f86c5b212d7b468eeefa0a4dbdb35c261107d3390565b898960405161108e93929190615c60565b60405180910390a15050505050505050565b6110a86142df565b6000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc54156111205760405162461bcd60e51b815260206004820181905260248201527f44414f3a444c473a44656c65676174657320616c72656164792061646465642e6044820152606401610a6b565b7f000000000000000000000000000000000000000000000000000000000000000061ffff168151146111a65760405162461bcd60e51b815260206004820152602960248201527f44414f3a444c473a4d75737420696e697469616c697a6520776974682037206460448201526832b632b3b0ba32b99760b91b6064820152608401610a6b565b6111b181600061430c565b50565b6111bd3361090a565b6111d95760405162461bcd60e51b8152600401610a6b90615c94565b6111e16143b9565b6000818152601560205260409020600681015442919060ff16156112515760405162461bcd60e51b815260206004820152602160248201527f44414f3a564f54453a5468697320766970496420697320636f6d706c657465646044820152602160f81b6064820152608401610a6b565b600181015461128a907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316615cc0565b6001600160401b0316826001600160401b031611156112eb5760405162461bcd60e51b815260206004820181905260248201527f44414f3a564f54453a46756e642073656c656374696f6e20657870697265642e6044820152606401610a6b565b6000838152601560209081526040918290206005018054835181840281018401909452808452339361135f939092919083018282801561135457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611336575b5050505050826143e3565b156113ac5760405162461bcd60e51b815260206004820152601760248201527f44414f3a564f54453a416c726561647920766f7465642e0000000000000000006044820152606401610a6b565b600582810180546001810182556000918252602080832090910180546001600160a01b0319166001600160a01b03861617905586825260159052604090200154600319016114425760068201805460ff191660019081179091556040805186815260208101929092527feaf21dfb05848d23f6360ff65a2e6334ebad40d782bc58808b1d80d27f31b47991015b60405180910390a15b5050506111b160018055565b6114573361090a565b6114735760405162461bcd60e51b8152600401610a6b90615c94565b61147b6143b9565b6000818152600b602052604090206004810154429190610100900460ff16156114b65760405162461bcd60e51b8152600401610a6b90615ce7565b60018101546114f4907f00000000000000000000000000000000000000000000000000000000000000009061010090046001600160401b0316615cc0565b6001600160401b0316826001600160401b031611156115555760405162461bcd60e51b815260206004820152601860248201527f44414f3a424c3a53656c656374696f6e206578706972656400000000000000006044820152606401610a6b565b60003390506115be82600301805480602002602001604051908101604052809291908181526020018280548015611354576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611336575050505050826143e3565b156116025760405162461bcd60e51b8152602060048201526014602482015273111053ce90930e905b1c9958591e481d9bdd195960621b6044820152606401610a6b565b6003820180546001810182556000828152602090200180546001600160a01b0319166001600160a01b038416179055546004116114425760048201805461010061ff00198216178255600284018054600090815260066020908152604091829020805460ff191660ff95861615151790559154935481519485529092161515908301527f90f3b8f572b790efdce1482f307b5a886d9cff4df578b48af75f6d02b097adbe9101611439565b6116b63361090a565b6116d25760405162461bcd60e51b8152600401610a6b90615c94565b6116da6143b9565b6001600160a01b03831660009081526007602052604090205481151560ff9091161515036117435760405162461bcd60e51b815260206004820152601660248201527544414f3a424c3a416c7265616479206c69737465642160501b6044820152606401610a6b565b600c546000818152600a6020526040902090815560018101805460ff85166001600160e81b0319909116600160481b6001600160a01b0388160268ffffffffffffffffff19161717610100426001600160401b03160217905560038101805460ff1916831515179055600281013381546001810183556000928352602083200180546001600160a01b0319166001600160a01b0392909216919091179055600c8054916117ef83615aef565b91905055507f24273a505120ab601efe211c9b22e16cf35206f4e82067f6fe6286c998d42f3361181c3390565b604080516001600160a01b03928316815291871660208301528415159082015260600160405180910390a15061185160018055565b505050565b61185e6143b9565b69021e19e0c9bab240000085146118d35760405162461bcd60e51b815260206004820152603360248201527f44414f3a444c473a4f6e6c792031302c30303020746f6b656e732063616e2062604482015272329039b2b73a103337b910313ab93734b7339760691b6064820152608401610a6b565b60025460405163d505accf60e01b81526001600160a01b038881166004830152306024830152604482018890526064820187905260ff8616608483015260a4820185905260c482018490529091169063d505accf9060e401600060405180830381600087803b1580156119835760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505af1158015611997573d6000803e3d6000fd5b505050506119a486614448565b6119ad60018055565b505050505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6119db6143b9565b60006119e56109a0565b6001600160401b0381166000908152600f6020526040902054909150429061ffff16611a0f614986565b6001600160401b0316826001600160401b03161180611a795750611a316149c0565b6001600160401b0316826001600160401b0316118015611a7957507f000000000000000000000000000000000000000000000000000000000000000061ffff168161ffff1611155b611ad95760405162461bcd60e51b815260206004820152602b60248201527f44414f3a444c473a456c656374696f6e2070726f63657373206973207374696c60448201526a361031b7b73a34b73ab29760a91b6064820152608401610a6b565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600460149054906101000a90046001600160401b0316611b3f9190615d28565b611b499190615d48565b611b539190615d28565b90507f000000000000000000000000000000000000000000000000000000000000000061ffff168261ffff1610611d615760005b8261ffff168161ffff161015611ca857806000611ba5826001615d6e565b90505b8461ffff168161ffff161015611c0d576001600160401b0387166000908152600e6020908152604080832061ffff8681168552925280832060019081015492851684529220909101541115611bfb578091505b80611c0581615a7a565b915050611ba8565b506001600160401b0386166000908152600e6020908152604080832061ffff86811685528184528285208351808501855281546001600160a01b03808216835260018085018054858b019081529b9096168a529590975294909620805486166001600160a01b031995861617909155918201805490915593518154909216919092161790559051905580611ca081615a7a565b915050611b87565b5060005b8261ffff168161ffff161015611d5b577f000000000000000000000000000000000000000000000000000000000000000061ffff168161ffff161015611d49576001600160401b0385166000818152600e6020908152604080832061ffff86168452825280832054938352600582528220805460018101825590835291200180546001600160a01b0319166001600160a01b039092169190911790555b80611d5381615a7a565b915050611cac565b50611e14565b6000611d6e826001615cc0565b90505b846001600160401b0316816001600160401b031611611e12576001600160401b0382166000908152600560209081526040918290208054835181840281018401909452808452611e009392830182828015611df557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dd7575b50505050508261430c565b80611e0a81615d89565b915050611d71565b505b7f0000000000000000000000000000000000000000000000000000000000000000611e3d6149e7565b611e479190615cc0565b600480546001600160401b0392909216600160a01b0267ffffffffffffffff60a01b199092169190911790556040517f66ec723071e4bb646f7b35d31bc2dee8510979bd8c180edd0690d4f5e802f1e490600090a150505050611ea960018055565b565b611eb43361090a565b611ed05760405162461bcd60e51b8152600401610a6b90615c94565b611ed86143b9565b6000858152601560205260409020600581015415611f385760405162461bcd60e51b815260206004820152601c60248201527f44414f3a564f54453a766970496420616c7265616479207573656421000000006044820152606401610a6b565b8581556001808201805467ffffffffffffffff1916426001600160401b03161790556002820186905560038201859055600482018490556005820180549182018155600090815260209020018054336001600160a01b031990911617905560068101805461ff00191661010084151502179055601354861115611fbb5760138690555b6040805187815283151560208201527fafc50865a0088d57bced52a10b199dcc64879943b5e216eb1e61e5cabe7c8730910160405180910390a150611fff60018055565b5050505050565b61200e614d5a565b6000828152601560209081526040918290208251610120810184528154815260018201546001600160401b03168184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a086019392908301828280156120b557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612097575b50505091835250506006919091015460ff8082161515602084015261010082048116151560408401526201000090910416151560609091015292915050565b6120fd3361090a565b6121195760405162461bcd60e51b8152600401610a6b90615c94565b6103e8831015801561212d57506104e28311155b8061214757506107d0831015801561214757506108ca8311155b6121935760405162461bcd60e51b815260206004820152601760248201527f44414f3a424c3a556e646566696e6564204e46542069640000000000000000006044820152606401610a6b565b60008381526006602052604090205481151560ff9091161515036121f25760405162461bcd60e51b815260206004820152601660248201527544414f3a424c3a416c7265616479206c69737465642160501b6044820152606401610a6b565b600d80546000818152600b60209081526040822092835560028301879055600180840180546001600160401b0342166101000268ffffffffffffffffff1990911660ff8a161717905560048401805487151560ff19909116179055600384018054918201815583529082200180546001600160a01b03191633179055825491929061227c83615aef565b91905055507f51aa30cd11e4ba7a29d7b6de40990fe39bce13d9c1843ae3c40683c2bd3428516122a93390565b604080516001600160a01b039092168252602082018790528415159082015260600160405180910390a150505050565b6122e16143b9565b336122eb816119b5565b1561234a5760405162461bcd60e51b815260206004820152602960248201527f44414f3a444c473a4164647265737320696e20626c61636b6c6973742063616e6044820152683737ba103b37ba329760b91b6064820152608401610a6b565b426123536149c0565b6001600160401b0316816001600160401b031611801561238b5750612376614986565b6001600160401b0316816001600160401b0316105b6123d15760405162461bcd60e51b815260206004820152601760248201527644414f3a444c473a496e76616c696420706572696f642160481b6044820152606401610a6b565b60006123db6109a0565b90506000806123ea83876134e2565b915091508161244b5760405162461bcd60e51b815260206004820152602760248201527f44414f3a444c473a546869732077616c6c6574206973206e6f7420612063616e6044820152663234b230ba329760c91b6064820152608401610a6b565b60035460405163758e137360e01b81526001600160a01b038781166004830152600092169063758e13739060240160006040518083038186803b1580156124cf5760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505afa1580156124e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261250b9190810190615da5565b90506000805b82518110156125be57600083828151811061252e5761252e615a4e565b6020908102919091018101516001600160401b0389166000908152601083526040808220838352909352919091205490915060ff166125ab5761257081614a45565b61257a9084615e36565b6001600160401b03881660009081526010602090815260408083208584529091529020805460ff1916600117905592505b50806125b681615aef565b915050612511565b5060006125ca88614a8d565b905060008111801561260957506001600160401b03861660009081526011602090815260408083206001600160a01b038c16845290915290205460ff16155b15612652576001600160401b03861660009081526011602090815260408083206001600160a01b038c1684529091529020805460ff1916600117905561264f8183615e36565b91505b600082116126b65760405162461bcd60e51b815260206004820152602b60248201527f44414f3a444c473a5468657265206973206e6f20617661696c61626c6520766f60448201526a3a34b733903837bbb2b91760a91b6064820152608401610a6b565b6001600160401b03861660009081526012602090815260408083206001600160a01b038c168452909152812080548492906126f2908490615e36565b90915550506001600160401b0386166000908152600e6020908152604080832061ffff8816845290915281206001018054849290612731908490615e36565b9091555050604080516001600160a01b03808b1682528b1660208201529081018390527f3b3a13d341f1dcc09bb25c69c29d4687b50827aed5e9d7b676c5f5cb51569e379060600160405180910390a150505050505050506111b160018055565b61279b3361090a565b6127b75760405162461bcd60e51b8152600401610a6b90615c94565b6127bf6143b9565b6000818152600a602052604090206003810154429190610100900460ff16156127fa5760405162461bcd60e51b8152600401610a6b90615ce7565b6001810154612838907f00000000000000000000000000000000000000000000000000000000000000009061010090046001600160401b0316615cc0565b6001600160401b0316826001600160401b031611156128a35760405162461bcd60e51b815260206004820152602160248201527f44414f3a424c3a536166656c6973742073656c656374696f6e206578706972656044820152601960fa1b6064820152608401610a6b565b600033905061290c82600201805480602002602001604051908101604052809291908181526020018280548015611354576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611336575050505050826143e3565b156129505760405162461bcd60e51b8152602060048201526014602482015273111053ce90930e905b1c9958591e481d9bdd195960621b6044820152606401610a6b565b6002820180546001810182556000828152602090200180546001600160a01b0319166001600160a01b038416179055546004116114425760038201805461010061ff00198216178255600184018054600160481b908190046001600160a01b03908116600090815260076020908152604091829020805460ff191660ff9788161515179055935495548151939096049091168252939092161515908201527f014b0a9c6ca1be26106d0d4db9e8a04d520c04125843165919f73b39ee7caf359101611439565b612a1e6142df565b611ea96000614b4e565b60ff8082166000908152600860209081526040808320815161014081019092528054909416815260018401805493948594429486949390840191612a6b90615b08565b80601f0160208091040260200160405190810160405280929190818152602001828054612a9790615b08565b8015612ae45780601f10612ab957610100808354040283529160200191612ae4565b820191906000526020600020905b815481529060010190602001808311612ac757829003601f168201915b50505091835250506002820154602082015260038201546040808301919091526004830154606083015260059092015461ffff80821660808401526001600160401b03620100008304811660a0850152600160501b8304821660c0850152600160601b8304811660e0850152600160a01b9092041661010090920191909152908201519192507f0000000000000000000000000000000000000000000000000000000000000000168310612bc0576103e88260a0015161ffff1682612ba99190615e49565b612bb39190615e60565b612bbd9085615e36565b93505b60c0820151612bef907f0000000000000000000000000000000000000000000000000000000000000000615cc0565b6001600160401b03168310612c2c576103e88260e0015161ffff1682612c159190615e49565b612c1f9190615e60565b612c299085615e36565b93505b61010082015160c0830151612c61907f0000000000000000000000000000000000000000000000000000000000000000615cc0565b612c6b9190615cc0565b6001600160401b03168310612d155760008261010001516001600160401b03168360c001517f0000000000000000000000000000000000000000000000000000000000000000612cbb9190615cc0565b612cce906001600160401b031686615adc565b612cd89190615e60565b90506103e88184610120015161ffff1684612cf39190615e49565b612cfd9190615e49565b612d079190615e60565b612d119086615e36565b9450505b8160800151612d248583614b9e565b612d2e9190615adc565b9695505050505050565b612d40614db5565b60ff808316600090815260086020908152604091829020825161014081019093528054909316825260018301805492939291840191612d7e90615b08565b80601f0160208091040260200160405190810160405280929190818152602001828054612daa90615b08565b8015612df75780601f10612dcc57610100808354040283529160200191612df7565b820191906000526020600020905b815481529060010190602001808311612dda57829003601f168201915b505050918352505060028201546020820152600382015460408201526004820154606082015260059091015461ffff80821660808401526001600160401b03620100008304811660a0850152600160501b8304821660c0850152600160601b83041660e0840152600160a01b909104166101009091015292915050565b6001600160401b038082166000908152600f602052604081205460609261ffff90911691908290811115612eaa57612eaa6151aa565b604051908082528060200260200182016040528015612eef57816020015b6040805180820190915260008082526020820152815260200190600190039081612ec85790505b50905060005b8261ffff168161ffff161015610ef5576001600160401b0385166000908152600e6020908152604080832061ffff851680855290835292819020815180830190925280546001600160a01b0316825260010154918101919091528351909184918110612f6357612f63615a4e565b60200260200101819052508080612f7990615a7a565b915050612ef5565b600042612f8c6149e7565b6001600160401b0316816001600160401b031610158015612fc65750612fb0614986565b6001600160401b0316816001600160401b031611155b612fd1576000612fd4565b60015b91505090565b6060828211612ffb5760405162461bcd60e51b8152600401610a6b90615ab1565b60145483111561300b5760145492505b60145482111561301b5760145491505b60006130278484615adc565b6001600160401b0381111561303e5761303e6151aa565b6040519080825280602002602001820160405280156130ac57816020015b60408051610100810182526000808252602080830182905292820181905260608083018290526080830182905260a0830182905260c083015260e0820152825260001990920191018161305c5790505b5090506000845b84811015610c41576000818152601660209081526040918290208251610100808201855282548252600183015482850152600283015460ff811683870152046001600160a01b031660608201526003820154608082015260048201546001600160401b031660a08201526005820180548551818602810186019096528086529194929360c0860193929083018282801561317657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613158575b50505091835250506006919091015460ff16151560209091015283518490849081106131a4576131a4615a4e565b602002602001018190525081806131ba90615aef565b92505080806131c890615aef565b9150506130b3565b6131d93361090a565b6131f55760405162461bcd60e51b8152600401610a6b90615c94565b6131fd6143b9565b60008181526016602052604090206004810154429190613247907f0000000000000000000000000000000000000000000000000000000000000000906001600160401b0316615cc0565b6001600160401b0316826001600160401b031611156132a85760405162461bcd60e51b815260206004820152601e60248201527f44414f3a5052503a46756e642073656c656374696f6e206578706972656400006044820152606401610a6b565b600681015460ff16156133085760405162461bcd60e51b815260206004820152602260248201527f44414f3a5052503a546869732070726f706f73616c20697320636f6d706c6574604482015261195960f21b6064820152608401610a6b565b600033905061337182600501805480602002602001604051908101604052809291908181526020018280548015611354576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611336575050505050826143e3565b156133b65760405162461bcd60e51b8152602060048201526015602482015274111053ce9414940e905b1c9958591e481d9bdd1959605a1b6044820152606401610a6b565b6005820180546001810182556000828152602090200180546001600160a01b0319166001600160a01b03841617905554600411611442576006808301805460ff191660019081179091558301546000908152601560209081526040808320909301805462ff00001916620100001790556003850154600286015460ff16835260089091529181206004018054909190613450908490615e36565b90915550506002805490830154600384015461347e926001600160a01b039081169261010090041690614bb6565b6001820154600283015460038401546040805193845260ff831660208501526101009092046001600160a01b03169183019190915260608201527f9735890cbfd2c5baedbde2360e22980806514e0454121cbc0e3216f762bb907290608001611439565b60008060005b6001600160401b0385166000908152600f602052604090205461ffff9081169082161015613567576001600160401b0385166000908152600e6020908152604080832061ffff851684529091529020546001600160a01b0380861691160361355557600192509050613570565b8061355f81615a7a565b9150506134e8565b50600080915091505b9250929050565b60095460609060009060ff166001600160401b0381111561359a5761359a6151aa565b6040519080825280602002602001820160405280156135d357816020015b6135c0614db5565b8152602001906001900390816135b85790505b50905060005b60095460ff90811690821610156137615760ff8082166000908152600860209081526040808320815161014081019092528054909416815260018401805493949193919284019161362990615b08565b80601f016020809104026020016040519081016040528092919081815260200182805461365590615b08565b80156136a25780601f10613677576101008083540402835291602001916136a2565b820191906000526020600020905b81548152906001019060200180831161368557829003601f168201915b505050918352505060028201546020820152600382015460408201526004820154606082015260059091015461ffff80821660808401526001600160401b03620100008304811660a0850152600160501b8304821660c0850152600160601b83041660e0840152600160a01b9091041661010090910152905061372482612a28565b606082015282518190849060ff851690811061374257613742615a4e565b602002602001018190525050808061375990615c41565b9150506135d9565b50919050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c08101919091526000828152600b6020908152604091829020825160e08101845281548152600182015460ff81168285015261010090046001600160401b03168185015260028201546060820152600382018054855181860281018601909652808652919492936080860193929083018282801561383f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613821575b50505091835250506004919091015460ff8082161515602084015261010090910416151560409091015292915050565b600061387a826119b5565b1561388757506000919050565b60035460405163758e137360e01b81526001600160a01b038481166004830152600092169063758e13739060240160006040518083038186803b15801561390b5760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505afa15801561391f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139479190810190615da5565b90506000805b82518110156139965761397883828151811061396b5761396b615a4e565b6020026020010151614a45565b6139829083615e36565b91508061398e81615aef565b91505061394d565b506139a084614a8d565b6139aa9082615e36565b949350505050565b6139ba6143b9565b6139c333614448565b611ea960018055565b6139d53361090a565b6139f15760405162461bcd60e51b8152600401610a6b90615c94565b6139f96143b9565b6001600160a01b038216613a5b5760405162461bcd60e51b8152602060048201526024808201527f44414f3a4163636f756e7420616464726573732063616e206e6f74206265207a60448201526332b9379760e11b6064820152608401610a6b565b60008481526015602090815260408083208151610120810183528154815260018201546001600160401b03168185015260028201548184015260038201546060820152600482015460808201526005820180548451818702810187019095528085529194929360a0860193909290830182828015613b0257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613ae4575b50505091835250506006919091015460ff8082161515602084015261010082048116151560408401526201000090910416151560609091015260e08101519091508015613b525750806101000151155b613b955760405162461bcd60e51b8152602060048201526014602482015273111053ce9414940e9d9a5c12590818db1bdcd95960621b6044820152606401610a6b565b8060c001518015613bad575080606001518160400151115b8015613bc0575080608001518160400151115b613c0c5760405162461bcd60e51b815260206004820152601e60248201527f44414f3a5052503a766970496420726573756c7420274e4f54205945532700006044820152606401610a6b565b613c15836119b5565b15613c625760405162461bcd60e51b815260206004820152601f60248201527f44414f3a5052503a4163636f756e7420697320626c61636b6c69737465642e006044820152606401610a6b565b6000613c6d85612a28565b905082811015613cd25760405162461bcd60e51b815260206004820152602a60248201527f44414f3a5052503a546865726520617265206e6f7420656e6f75676820756e6c6044820152696f636b20746f6b656e7360b01b6064820152608401610a6b565b601480546000818152601660209081526040822092835560018084018b90556002840180546001600160a01b038b16610100026001600160a81b031990911660ff8d1617179055600384018890556004840180546001600160401b03421667ffffffffffffffff19909116179055600584018054918201815583529082200180546001600160a01b031916331790558254919290613d6f83615aef565b90915550506040805188815260ff881660208201526001600160a01b038716818301526060810186905290517fa6881a4eefbf69457c1b6a253317a0ee9c3c21957392be3a28363d87959762c39181900360800190a1505050613dd160018055565b50505050565b6060828211613df85760405162461bcd60e51b8152600401610a6b90615ab1565b600d54821115613e0857600d5491505b600d54831115613e1857600d5492505b6000613e248484615adc565b6001600160401b03811115613e3b57613e3b6151aa565b604051908082528060200260200182016040528015613ea157816020015b6040805160e081018252600080825260208083018290529282018190526060808301829052608083015260a0820181905260c08201528252600019909201910181613e595790505b5090506000845b84811015610c41576000818152600b6020908152604091829020825160e08101845281548152600182015460ff81168285015261010090046001600160401b031681850152600282015460608201526003820180548551818602810186019096528086529194929360808601939290830182828015613f5057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613f32575b50505091835250506004919091015460ff808216151560208401526101009091041615156040909101528351849084908110613f8e57613f8e615a4e565b60200260200101819052508180613fa490615aef565b9250508080613fb290615aef565b915050613ea8565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082015260a0810182905260c08101919091526000828152600a6020908152604091829020825160e08101845281548152600182015460ff81168285015261010081046001600160401b031682860152600160481b90046001600160a01b03166060820152600282018054855181860281018601909652808652919492936080860193929083018282801561409d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161407f575b50505091835250506003919091015460ff8082161515602084015261010090910416151560409091015292915050565b6140d56142df565b6001600160a01b0381166140ff57604051631e4fbdf760e01b815260006004820152602401610a6b565b6111b181614b4e565b60608282116141295760405162461bcd60e51b8152600401610a6b90615ab1565b6013548311156141395760135492505b60135482111561415457601354614151906001615e36565b91505b60006141608484615adc565b6001600160401b03811115614177576141776151aa565b6040519080825280602002602001820160405280156141b057816020015b61419d614d5a565b8152602001906001900390816141955790505b5090506000845b84811015610c41576000818152601560209081526040918290208251610120810184528154815260018201546001600160401b03168184015260028201548185015260038201546060820152600482015460808201526005820180548551818602810186019096528086529194929360a0860193929083018282801561426657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614248575b50505091835250506006919091015460ff8082161515602084015261010082048116151560408401526201000090910416151560609091015283518490849081106142b3576142b3615a4e565b602002602001018190525081806142c990615aef565b92505080806142d790615aef565b9150506141b7565b6000546001600160a01b03163314611ea95760405163118cdaa760e01b8152336004820152602401610a6b565b60005b7f000000000000000000000000000000000000000000000000000000000000000061ffff168160ff161015611851576000838260ff168151811061435557614355615a4e565b6020908102919091018101516001600160401b03851660009081526005835260408120805460018101825590825292902090910180546001600160a01b0319166001600160a01b0390921691909117905550806143b181615c41565b91505061430f565b6002600154036143dc57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6000805b835181101561443e57826001600160a01b031684828151811061440c5761440c615a4e565b60200260200101516001600160a01b03160361442c576001915050610c47565b8061443681615aef565b9150506143e7565b5060009392505050565b80614452816119b5565b1561449f5760405162461bcd60e51b815260206004820152601e60248201527f44414f3a546869732077616c6c657420697320626c61636b6c697374656400006044820152606401610a6b565b60035460405163758e137360e01b81526001600160a01b038085166004830152849260009291169063758e13739060240160006040518083038186803b1580156145265760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505afa15801561453a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526145629190810190615da5565b905060008151116145a95760405162461bcd60e51b8152602060048201526011602482015270111053ce939195081b9bdd08199bdd5b99607a1b6044820152606401610a6b565b60005b81518110156146a2576145e78282815181106145ca576145ca615a4e565b602002602001015160009081526006602052604090205460ff1690565b1561469057826001600160a01b03167f2afaa2e29ee00c8d20999401e9a62edf48c2ceb5764609240f0fb05a71841ce983838151811061462957614629615a4e565b602002602001015160405161464091815260200190565b60405180910390a260405162461bcd60e51b815260206004820181905260248201527f44414f3a54686973204e4654206973206f6e2074686520426c61636b6c6973746044820152606401610a6b565b8061469a81615aef565b9150506145ac565b5060045442906001600160401b03600160a01b90910481169082161180156146e257506146cd6149c0565b6001600160401b0316816001600160401b0316105b6147285760405162461bcd60e51b815260206004820152601760248201527644414f3a444c473a496e76616c696420706572696f642160481b6044820152606401610a6b565b60006147326109a0565b6001600160401b0381166000908152600f602052604081205491925061ffff909116905b6001600160401b0383166000908152600f602052604090205461ffff9081169082161015614812576001600160401b0383166000908152600e6020908152604080832061ffff851684529091529020546001600160a01b03808a169116036148005760405162461bcd60e51b815260206004820152601860248201527f44414f3a444c473a416c7265616479206170706c6965642100000000000000006044820152606401610a6b565b8061480a81615a7a565b915050614756565b5060025460405163079cc67960e41b81526001600160a01b03898116600483015269021e19e0c9bab24000006024830152909116906379cc679090604401600060405180830381600087803b1580156148a85760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505af11580156148bc573d6000803e3d6000fd5b505050506001600160401b0382166000818152600e6020908152604080832061ffff868116855290835281842080546001600160a01b0319166001600160a01b038e16179055938352600f90915281208054909216919061491c83615a7a565b91906101000a81548161ffff021916908361ffff160217905550507fdf1eddb30bd5244a5b06c0fc85727affb27b2b2ab12fbc2c0ef95f481d4305958760405161497591906001600160a01b0391909116815260200190565b60405180910390a150505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006149b16149c0565b6149bb9190615cc0565b905090565b60007f00000000000000000000000000000000000000000000000000000000000000006149b15b60006149f16109a0565b614a1b907f0000000000000000000000000000000000000000000000000000000000000000615e74565b6149bb907f0000000000000000000000000000000000000000000000000000000000000000615cc0565b60008181526006602052604081205460ff1615614a6457506000919050565b816103e81480614a755750816107d0145b15614a845750620186a0919050565b50610258919050565b6004805460405163603a39fb60e11b81526001600160a01b03848116938201939093526000929091169063c07473f69060240160206040518083038186803b158015614b165760405162461bcd60e51b81526020600482015260256024820152600080516020615ef8833981519152604482019081526420636f646560d81b6064830152608482fd5b505afa158015614b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c479190615e9f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818310614bad5781614baf565b825b9392505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180516001600160e01b031663a9059cbb60e01b17905261185191859190600090614c1490841683614c62565b90508051600014158015614c39575080806020019051810190614c379190615ebb565b155b1561185157604051635274afe760e01b81526001600160a01b0384166004820152602401610a6b565b6060614baf8383600084600080856001600160a01b03168486604051614c889190615edb565b60006040518083038185875af1925050503d8060008114614cc5576040519150601f19603f3d011682016040523d82523d6000602084013e614cca565b606091505b5091509150612d2e868383606082614cea57614ce582614d31565b614baf565b8151158015614d0157506001600160a01b0384163b155b15614d2a57604051639996b31560e01b81526001600160a01b0385166004820152602401610a6b565b5080614baf565b805115614d415780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518061012001604052806000815260200160006001600160401b03168152602001600081526020016000815260200160008152602001606081526020016000151581526020016000151581526020016000151581525090565b604080516101408101825260008082526060602083018190529282018190529181018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915290565b60405162461bcd60e51b815260206004820152602260248201527f414249206465636f64696e673a207475706c65206461746120746f6f2073686f6044820152611c9d60f21b6064820152608481fd5b60405162461bcd60e51b815260206004820152602260248201527f414249206465636f64696e673a20696e76616c6964207475706c65206f666673604482015261195d60f21b6064820152608481fd5b80356001600160a01b0381168114614ec157600080fd5b919050565b600060208284031215614edb57614edb614e0a565b614baf82614eaa565b60008060408385031215614efa57614efa614e0a565b50508035926020909101359150565b600081518084526020808501945080840160005b83811015614f425781516001600160a01b031687529582019590820190600101614f1d565b509495945050505050565b8051825260ff60208201511660208301526001600160401b03604082015116604083015260018060a01b0360608201511660608301526000608082015160e06080850152614f9e60e0850182614f09565b905060a0830151151560a085015260c0830151151560c08501528091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561501757603f19888603018452615005858351614f4d565b94509285019290850190600101614fe9565b5092979650505050505050565b60006020828403121561503957615039614e0a565b5035919050565b6000610100825184526020830151602085015260ff604084015116604085015260018060a01b036060840151166060850152608083015160808501526001600160401b0360a08401511660a085015260c08301518160c08601526150a682860182614f09565b91505060e0830151610ef560e086018215159052565b602081526000614baf6020830184615040565b80356001600160401b0381168114614ec157600080fd5b6000602082840312156150fb576150fb614e0a565b614baf826150cf565b6020808252825182820181905260009190848201906040850190845b818110156151455783516001600160a01b031683529284019291840191600101615120565b50909695505050505050565b60405162461bcd60e51b815260206004820152602b60248201527f414249206465636f64696e673a20696e76616c69642063616c6c64617461206160448201526a1c9c985e481bd9999cd95d60aa1b6064820152608481fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156151e8576151e86151aa565b604052919050565b803561ffff81168114614ec157600080fd5b600080600080600080600060e0888a03121561522057615220614e0a565b87356001600160401b038082111561523a5761523a614e5a565b818a0191508a601f83011261525157615251615151565b8135602082821115615265576152656151aa565b615277601f8301601f191682016151c0565b92508183528c818386010111156152dd5760405162461bcd60e51b815260048101829052602760248201527f414249206465636f64696e673a20696e76616c69642062797465206172726179604482015266040d8cadccee8d60cb1b6064820152608481fd5b81818501828501376000818385010152829a50808c0135995050505050615306604089016151f0565b9450615314606089016150cf565b9350615322608089016151f0565b925061533060a089016150cf565b915061533e60c089016151f0565b905092959891949750929550565b60006001600160401b03821115615365576153656151aa565b5060051b60200190565b60405162461bcd60e51b815260206004820152602b60248201527f414249206465636f64696e673a20696e76616c69642063616c6c64617461206160448201526a727261792073747269646560a81b6064820152608481fd5b600060208083850312156153de576153de614e0a565b82356001600160401b038111156153f7576153f7614e5a565b8301601f8101851361540b5761540b615151565b803561541e6154198261534c565b6151c0565b81815260059190911b820183019083810190878311156154405761544061536f565b928401925b828410156154655761545684614eaa565b82529284019290840190615445565b979650505050505050565b803560ff81168114614ec157600080fd5b80151581146111b157600080fd5b6000806000606084860312156154a7576154a7614e0a565b6154b084614eaa565b92506154be60208501615470565b915060408401356154ce81615481565b809150509250925092565b60008060008060008060c087890312156154f5576154f5614e0a565b6154fe87614eaa565b9550602087013594506040870135935061551a60608801615470565b92506080870135915060a087013590509295509295509295565b6000806040838503121561554a5761554a614e0a565b615553836150cf565b915061556160208401614eaa565b90509250929050565b600080600080600060a0868803121561558557615585614e0a565b8535945060208601359350604086013592506060860135915060808601356155ac81615481565b809150509295509295909350565b6000610120825184526001600160401b03602084015116602085015260408301516040850152606083015160608501526080830151608085015260a08301518160a086015261560b82860182614f09565b91505060c083015161562160c086018215159052565b5060e083015161563560e086018215159052565b5061010083810151801515868301525b5090949350505050565b602081526000614baf60208301846155ba565b60008060006060848603121561567a5761567a614e0a565b833592506154be60208501615470565b60006020828403121561569f5761569f614e0a565b614baf82615470565b60005b838110156156c35781810151838201526020016156ab565b50506000910152565b600081518084526156e48160208601602086016156a8565b601f01601f19169290920160200192915050565b805160ff1682526000610140602083015181602086015261571b828601826156cc565b91505060408301516040850152606083015160608501526080830151608085015260a083015161575160a086018261ffff169052565b5060c083015161576c60c08601826001600160401b03169052565b5060e083015161578260e086018261ffff169052565b50610100838101516001600160401b0316908501526101208084015161ffff811682870152615645565b602081526000614baf60208301846156f8565b602080825282518282018190526000919060409081850190868401855b8281101561580a57815180516001600160a01b031685528601518685015292840192908501906001016157dc565b5091979650505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561501757603f1988860301845261585a858351615040565b9450928501929085019060010161583e565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561501757603f198886030184526158af8583516156f8565b94509285019290850190600101615893565b8051825260ff60208201511660208301526001600160401b036040820151166040830152606081015160608301526000608082015160e06080850152614f9e60e0850182614f09565b602081526000614baf60208301846158c1565b6000806000806080858703121561593657615936614e0a565b8435935061594660208601615470565b925061595460408601614eaa565b9396929550929360600135925050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561501757603f198886030184526159a78583516158c1565b9450928501929085019060010161598b565b602081526000614baf6020830184614f4d565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561501757603f19888603018452615a0f8583516155ba565b945092850192908501906001016159f3565b60008060408385031215615a3757615a37614e0a565b615a40836150cf565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818103615a9157615a91615a64565b6001019392505050565b634e487b7160e01b600052601260045260246000fd5b60208082526011908201527044414f3a496e76616c69642072616e676560781b604082015260600190565b81810381811115610c4757610c47615a64565b600060018201615b0157615b01615a64565b5060010190565b600181811c90821680615b1c57607f821691505b60208210810361376157634e487b7160e01b600052602260045260246000fd5b601f82111561185157600081815260208120601f850160051c81016020861015615b635750805b601f850160051c820191505b818110156119ad57828155600101615b6f565b81516001600160401b03811115615b9b57615b9b6151aa565b615baf81615ba98454615b08565b84615b3c565b602080601f831160018114615be45760008415615bcc5750858301515b600019600386901b1c1916600185901b1785556119ad565b600085815260208120601f198616915b82811015615c1357888601518255948401946001909101908401615bf4565b5085821015615c315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060ff821660ff8103615c5757615c57615a64565b60010192915050565b6001600160a01b0384168152606060208201819052600090615c84908301856156cc565b9050826040830152949350505050565b60208082526012908201527144414f3a4f6e6c792064656c65676174657360701b604082015260600190565b6001600160401b03818116838216019080821115615ce057615ce0615a64565b5092915050565b60208082526021908201527f44414f3a424c3a50726f706f73616c20616c726561647920636f6d706c6574656040820152601960fa1b606082015260800190565b6001600160401b03828116828216039080821115615ce057615ce0615a64565b60006001600160401b0380841680615d6257615d62615a9b565b92169190910492915050565b61ffff818116838216019080821115615ce057615ce0615a64565b60006001600160401b03808316818103615a9157615a91615a64565b60006020808385031215615dbb57615dbb614e0a565b82516001600160401b03811115615dd457615dd4614e5a565b8301601f81018513615de857615de8615151565b8051615df66154198261534c565b81815260059190911b82018301908381019087831115615e1857615e1861536f565b928401925b8284101561546557835182529284019290840190615e1d565b80820180821115610c4757610c47615a64565b8082028115828204841417610c4757610c47615a64565b600082615e6f57615e6f615a9b565b500490565b6001600160401b03818116838216028082169190828114615e9757615e97615a64565b505092915050565b600060208284031215615eb457615eb4614e0a565b5051919050565b600060208284031215615ed057615ed0614e0a565b8151614baf81615481565b60008251615eed8184602087016156a8565b919091019291505056fe54617267657420636f6e747261637420646f6573206e6f7420636f6e7461696ea2646970667358221220e3f4157d1fb01c9e7e542d9f61f6f115e2a9903f8e6e3b8fe2d36be82dd110ef64736f6c6343000814003300000000000000000000000073395dd2954333fe546414679b931fb08c84ae81000000000000000000000000000000000000000000000000000000006724d0d00000000000000000000000000000000000000000000000000000000005a39a8000000000000000000000000000000000000000000000000000000000000d2f0000000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000003f48000000000000000000000000092d5942f468447f1f21c2092580f15544923b43400000000000000000000000089a521ffc029c62ba747b7b5c4ec05397b658b5b000000000000000000000000ad37f4b08e90067e5bb90d6d022cf5aaf7b1d718