0 txs
2k calls
constructor
constructor()
functions
aggregatorRouter
viewfunction aggregatorRouter(bytes32) view returns (address)
BOTROLE
viewfunction BOTROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getActiveSchedules
viewfunction getActiveSchedules(bool _isOnchain) view returns (tuple[])
getAllActiveSchedules
viewfunction getAllActiveSchedules() view returns (tuple[])
getCompletedSchedules
viewfunction getCompletedSchedules() view returns (tuple[])
getInactiveSchedules
viewfunction getInactiveSchedules() view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSchedule
viewfunction getSchedule(uint256 _index) view returns (tuple)
getScheduleLength
viewfunction getScheduleLength() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MIN_INTERVAL
viewfunction MIN_INTERVAL() view returns (uint256)
odosRouter
viewfunction odosRouter() view returns (address)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
schedules
viewfunction schedules(uint256) view returns (uint256 scheduleId, uint256 totalFromTokenAmount, uint256 fromTokenUsed, uint256 buybackTimes, uint256 buybackInterval, uint256 lastExecuted, uint256 lastUpdated, uint256 executedCount, tuple data)
supportedAggregator
viewfunction supportedAggregator(bytes32) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
__BuyBackBurnProvider_init
nonpayablefunction __BuyBackBurnProvider_init(address _odosRouter, address _admin)
addSchedule
nonpayablefunction addSchedule(address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _buybackTimes, uint256 _buybackInterval, bool _isOnchain, bytes32 _aggregator)
executeBuyback
nonpayablefunction executeBuyback(bytes _transactionData, uint256 _scheduleIndex) returns (uint256)
executeBuybackOffChain
nonpayablefunction executeBuybackOffChain(uint256 _scheduleIndex, uint256 _swapAmount, uint256 _swappedAmount)
genericSwap
nonpayablefunction genericSwap(bytes _transactionData, address _tokenIn, uint256 _amountIn, address _tokenOut, address _receiver) returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setSchedule
nonpayablefunction setSchedule(uint256 _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _fromTokenUsed, uint256 _buybackTimes, uint256 _buybackInterval, uint256 _lastExecuted, uint256 _executedCount)
setSupportedAggregator
nonpayablefunction setSupportedAggregator(string _aggregator, address _router, bool _isSupport)
unpause
nonpayablefunction unpause()
updateScheduleStatus
nonpayablefunction updateScheduleStatus(uint256 _scheduleIndex, bool _isActive)
withdrawToken
nonpayablefunction withdrawToken(address _token, address _receiver, uint256 _amount)
events
AggregatorSet
event AggregatorSet(string indexed aggregator, address _router, bool status)
BuybackExecuted
event BuybackExecuted(uint256 indexed _scheduleIndex, uint256 _inAmount, uint256 _outAmount, bytes32 _aggregator)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
ScheduleAdded
event ScheduleAdded(uint256 indexed _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _buybackTimes, uint256 _buybackInterval, bytes32 _aggregator)
ScheduleStateChanged
event ScheduleStateChanged(uint256 indexed _scheduleIndex, bool _isActive)
ScheduleUpdated
event ScheduleUpdated(uint256 indexed _scheduleIndex, address _fromToken, address _toToken, address _receiver, uint256 _totalFromTokenAmount, uint256 _fromTokenUsed, uint256 _buybackTimes, uint256 _buybackInterval, uint256 _lastExecuted, uint256 _executedCount)
TokenWithdrawn
event TokenWithdrawn(address indexed _token, address _receiver, uint256 _amount)
Unpaused
event Unpaused(address account)
errors
InsufficientTokenInBalance
error InsufficientTokenInBalance()
InvalidAddress
error InvalidAddress()
InvalidAggregator
error InvalidAggregator()
InvalidAmount
error InvalidAmount()
InvalidParams
error InvalidParams()
InvalidReceiver
error InvalidReceiver()
InvalidToken
error InvalidToken()
OnlyActiveSchedule
error OnlyActiveSchedule()
OnlyAfterInterval
error OnlyAfterInterval()
OnlyOffchainSchedule
error OnlyOffchainSchedule()
OnlyOnchainSchedule
error OnlyOnchainSchedule()
ScheduleEnded
error ScheduleEnded()
SwapFailed
error SwapFailed()
TransactionDataLengthMismatch
error TransactionDataLengthMismatch()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000176565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e49190620001b6565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015e602783620000ef565b91506200016b8262000100565b604082019050919050565b6000602082019050818103600083015262000191816200014f565b9050919050565b600060ff82169050919050565b620001b08162000198565b82525050565b6000602082019050620001cd6000830184620001a5565b92915050565b615e9a80620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c80635c975abb1161010f578063a9a6e0e7116100a2578063c5ca93a711610071578063c5ca93a7146105ae578063cffa34af146105de578063d547741f146105fa578063f5b541a614610616576101ef565b8063a9a6e0e71461050c578063ae7f825a14610528578063bdc6d9ab14610558578063c036874014610590576101ef565b80638456cb59116100de5780638456cb59146104985780638ccd67ab146104a257806391d14854146104be578063a217fddf146104ee576101ef565b80635c975abb146104205780635f4fbcae1461043e57806370c3a4851461045c5780638321928d1461047a576101ef565b80632f2ff15d116101875780633f4ba83a116101565780633f4ba83a146103ac57806344cceba3146103b65780634e9daf59146103e65780635b7bace114610404576101ef565b80632f2ff15d1461031457806336568abe146103305780633a3c6aad1461034c5780633acf96091461037c576101ef565b80631c384d88116101c35780631c384d881461027a578063248a9ca31461029657806328d462c9146102c65780632e78e2e3146102f6576101ef565b80623a39af146101f457806301e336671461021057806301ffc9a71461022c5780631515f7401461025c575b600080fd5b61020e6004803603810190610209919061443c565b610634565b005b61022a600480360381019061022591906144da565b61074c565b005b61024660048036038101906102419190614585565b610964565b60405161025391906145c1565b60405180910390f35b6102646109de565b60405161027191906145eb565b60405180910390f35b610294600480360381019061028f9190614606565b6109eb565b005b6102b060048036038101906102ab919061471b565b610db8565b6040516102bd9190614757565b60405180910390f35b6102e060048036038101906102db91906147d7565b610dd8565b6040516102ed91906145eb565b60405180910390f35b6102fe610ea6565b60405161030b9190614ab6565b60405180910390f35b61032e60048036038101906103299190614ad8565b6111fd565b005b61034a60048036038101906103459190614ad8565b61121e565b005b6103666004803603810190610361919061471b565b6112a1565b6040516103739190614b27565b60405180910390f35b61039660048036038101906103919190614b42565b6112d4565b6040516103a39190614ab6565b60405180910390f35b6103b4611735565b005b6103d060048036038101906103cb9190614b6f565b61176a565b6040516103dd91906145eb565b60405180910390f35b6103ee611a7a565b6040516103fb9190614757565b60405180910390f35b61041e60048036038101906104199190614bcf565b611a9e565b005b610428611b6f565b60405161043591906145c1565b60405180910390f35b610446611b86565b6040516104539190614ab6565b60405180910390f35b610464611f5d565b6040516104719190614ab6565b60405180910390f35b610482612332565b60405161048f9190614b27565b60405180910390f35b6104a0612358565b005b6104bc60048036038101906104b79190614c78565b61238d565b005b6104d860048036038101906104d39190614ad8565b6124e3565b6040516104e591906145c1565b60405180910390f35b6104f661254e565b6040516105039190614757565b60405180910390f35b61052660048036038101906105219190614cec565b612555565b005b610542600480360381019061053d919061471b565b612a06565b60405161054f91906145c1565b60405180910390f35b610572600480360381019061056d9190614da2565b612a26565b60405161058799989796959493929190614e71565b60405180910390f35b610598612bf6565b6040516105a591906145eb565b60405180910390f35b6105c860048036038101906105c39190614da2565b612bfb565b6040516105d59190614fb5565b60405180910390f35b6105f860048036038101906105f39190614fd1565b612e04565b005b610614600480360381019061060f9190614ad8565b612fab565b005b61061e612fcc565b60405161062b9190614757565b60405180910390f35b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961065e81612ff0565b60fd8054905083106106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069c9061506e565b60405180910390fd5b8160fd84815481106106ba576106b961508e565b5b90600052602060002090600d020160080160040160146101000a81548160ff0219169083151502179055504260fd84815481106106fa576106f961508e565b5b90600052602060002090600d020160060181905550827fade02b1fb887e4d556d72bcbc8e3ad6a94ae0855975157ca1e72a15fd581c7158360405161073f91906145c1565b60405180910390a2505050565b6000801b61075981612ff0565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107bf576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610825576040517f1e4ec46b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806108ac57508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108689190614b27565b602060405180830381865afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a991906150d2565b82115b156108e3576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090e83838673ffffffffffffffffffffffffffffffffffffffff166130049092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e562084846040516109569291906150ff565b60405180910390a250505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109d757506109d68261308a565b5b9050919050565b600060fd80549050905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a1581612ff0565b60fd805490508b10610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061506e565b60405180910390fd5b60fd8b81548110610a7057610a6f61508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16610ac8576040517f91f1426900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161480610b2f5750600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16145b80610b665750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b15610b9d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000871480610bac5750600085145b80610bbd5750610bbb846130f4565b155b15610bf4576040517fa86b651200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060fd8c81548110610c0a57610c0961508e565b5b90600052602060002090600d020190508a8160080160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160080160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550888160080160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508781600101819055508681600201819055508581600301819055508481600401819055508381600501819055508281600701819055508060030154816007015410158160080160040160156101000a81548160ff021916908315150217905550600081600801600001819055504281600601819055508b7f039522796f4bb1d431ea67127dd20ae671644bbe4980e1fec6211a3e95141ec28c8c8c8c8c8c8c8c8c604051610da299989796959493929190615128565b60405180910390a2505050505050505050505050565b600060c96000838152602001908152602001600020600101549050919050565b6000610de2613102565b600260015403610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1e90615201565b60405180910390fd5b6002600181905550610e5c3330868873ffffffffffffffffffffffffffffffffffffffff1661314c909392919063ffffffff16565b6000610e8f88888888888860fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131d5565b905080915050600180819055509695505050505050565b60606000805b60fd80549050811015610f155760fd8181548110610ecd57610ecc61508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16610f02578180610efe90615250565b9250505b8080610f0d90615250565b915050610eac565b5060008167ffffffffffffffff811115610f3257610f31615298565b5b604051908082528060200260200182016040528015610f6b57816020015b610f586142e2565b815260200190600190039081610f505790505b5090506000805b60fd805490508110156111f35760fd8181548110610f9357610f9261508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff166111e05760fd8181548110610fcd57610fcc61508e565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050815250508383815181106111c6576111c561508e565b5b602002602001018190525081806111dc90615250565b9250505b80806111eb90615250565b915050610f72565b5081935050505090565b61120682610db8565b61120f81612ff0565b61121983836134b2565b505050565b611226613593565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a90615339565b60405180910390fd5b61129d828261359b565b5050565b60fe6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000805b60fd805490508110156113c75760fd81815481106112fb576112fa61508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff16801561135c575060fd81815481106113385761133761508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b80156113a0575083151560fd828154811061137a5761137961508e565b5b90600052602060002090600d020160080160040160169054906101000a900460ff161515145b156113b45781806113b090615250565b9250505b80806113bf90615250565b9150506112da565b5060008167ffffffffffffffff8111156113e4576113e3615298565b5b60405190808252806020026020018201604052801561141d57816020015b61140a6142e2565b8152602001906001900390816114025790505b5090506000805b60fd805490508110156117295760fd81815481106114455761144461508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff1680156114a6575060fd81815481106114825761148161508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b80156114ea575085151560fd82815481106114c4576114c361508e565b5b90600052602060002090600d020160080160040160169054906101000a900460ff161515145b156117165760fd81815481106115035761150261508e565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050815250508383815181106116fc576116fb61508e565b5b6020026020010181905250818061171290615250565b9250505b808061172190615250565b915050611424565b50819350505050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961175f81612ff0565b61176761367d565b50565b6000611774613102565b6002600154036117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090615201565b60405180910390fd5b60026001819055507fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a79323106117eb81612ff0565b6117f68360016136e0565b600060fd848154811061180c5761180b61508e565b5b90600052602060002090600d02019050600061182b82600401546130f4565b61184657610e1082600401546118419190615359565b61184c565b81600401545b905080826005015461185e919061539b565b421015611897576040517f55ff305b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826003015483600101546118ad91906153fe565b905060008360080160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119119190614b27565b602060405180830381865afa15801561192e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195291906150d2565b90508181101561198e576040517fe619fec000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a4e8a8a8760080160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16868960080160030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60080160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660fe60008d60080160010154815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166131d5565b9050611a63888483886008016001015461384e565b809650505050505050600180819055509392505050565b7fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a793231081565b611aa6613102565b600260015403611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290615201565b60405180910390fd5b60026001819055507fa99bdfbaea678b25eead4073b2feb27700cb6400fb2eca9270be7d33a7932310611b1d81612ff0565b611b288460006136e0565b600060fd8581548110611b3e57611b3d61508e565b5b90600052602060002090600d02019050611b61858585846008016001015461384e565b505060018081905550505050565b6000606560009054906101000a900460ff16905090565b60606000805b60fd80549050811015611c355760fd8181548110611bad57611bac61508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff168015611c0e575060fd8181548110611bea57611be961508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b15611c22578180611c1e90615250565b9250505b8080611c2d90615250565b915050611b8c565b5060008167ffffffffffffffff811115611c5257611c51615298565b5b604051908082528060200260200182016040528015611c8b57816020015b611c786142e2565b815260200190600190039081611c705790505b5090506000805b60fd80549050811015611f535760fd8181548110611cb357611cb261508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff168015611d14575060fd8181548110611cf057611cef61508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff16155b15611f405760fd8181548110611d2d57611d2c61508e565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff16151515158152505081525050838381518110611f2657611f2561508e565b5b60200260200101819052508180611f3c90615250565b9250505b8080611f4b90615250565b915050611c92565b5081935050505090565b60606000805b60fd8054905081101561200b5760fd8181548110611f8457611f8361508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff168015611fe4575060fd8181548110611fc157611fc061508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff165b15611ff8578180611ff490615250565b9250505b808061200390615250565b915050611f63565b5060008167ffffffffffffffff81111561202857612027615298565b5b60405190808252806020026020018201604052801561206157816020015b61204e6142e2565b8152602001906001900390816120465790505b5090506000805b60fd805490508110156123285760fd81815481106120895761208861508e565b5b90600052602060002090600d020160080160040160159054906101000a900460ff1680156120e9575060fd81815481106120c6576120c561508e565b5b90600052602060002090600d020160080160040160149054906101000a900460ff165b156123155760fd81815481106121025761210161508e565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050815250508383815181106122fb576122fa61508e565b5b6020026020010181905250818061231190615250565b9250505b808061232090615250565b915050612068565b5081935050505090565b60fb60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961238281612ff0565b61238a61393e565b50565b6000801b61239a81612ff0565b600085859050116123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d79061547b565b60405180910390fd5b600085856040516020016123f59291906154da565b6040516020818303038152906040528051906020012090508260fc600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508360fe600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550858560405161249a9291906154da565b60405180910390207f04f0474a3cc405c5cd9a4671d7c2af35988d2f14283f0bf0f908f4ff4e17572385856040516124d39291906154f3565b60405180910390a2505050505050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961257f81612ff0565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614806125e65750600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b8061261d5750600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15612654576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008614806126635750600085145b806126745750612672846130f4565b155b156126ab576040517fa86b651200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fc600083815260200190815260200160002060009054906101000a900460ff16612702576040517f29a68ed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604051806101000160405280600081526020018481526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff168152602001600115158152602001600015158152602001851515815250905060fd60405180610120016040528060fd8054905081526020018981526020016000815260200188815260200187815260200160008152602001428152602001600081526020018381525090806001815401808255809150506001900390600052602060002090600d0201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff02191690831515021790555060c08201518160040160156101000a81548160ff02191690831515021790555060e08201518160040160166101000a81548160ff02191690831515021790555050505050600160fd805490506129b7919061551c565b7fae230da4ea3244f87ee61d7edbd83bcdf37915a8a501cdc88143d717d290b1508b8b8b8b8b8b8a6040516129f29796959493929190615550565b60405180910390a250505050505050505050565b60fc6020528060005260406000206000915054906101000a900460ff1681565b60fd8181548110612a3657600080fd5b90600052602060002090600d0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050905089565b603c81565b612c036142e2565b60fd8281548110612c1757612c1661508e565b5b90600052602060002090600d0201604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882016040518061010001604052908160008201548152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016003820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff161515151581526020016004820160159054906101000a900460ff161515151581526020016004820160169054906101000a900460ff161515151581525050815250509050919050565b60008060019054906101000a900460ff16159050808015612e355750600160008054906101000a900460ff1660ff16105b80612e625750612e44306139a1565b158015612e615750600160008054906101000a900460ff1660ff16145b5b612ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9890615631565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015612ede576001600060016101000a81548160ff0219169083151502179055505b612ee7826139c4565b612eef613a2d565b612ef7613a86565b612eff613adf565b612f0c6000801b836134b2565b8260fb60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508015612fa65760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051612f9d91906156a3565b60405180910390a15b505050565b612fb482610db8565b612fbd81612ff0565b612fc7838361359b565b505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b61300181612ffc613593565b613b30565b50565b6130858363a9059cbb60e01b84846040516024016130239291906150ff565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613bcd565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000603c8210159050919050565b61310a611b6f565b1561314a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131419061570a565b60405180910390fd5b565b6131cf846323b872dd60e01b85858560405160240161316d9392919061572a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613bcd565b50505050565b600080883590506323b872dd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603613263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325a906157ad565b60405180910390fd5b61328e83878973ffffffffffffffffffffffffffffffffffffffff16613c949092919063ffffffff16565b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016132c99190614b27565b602060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a91906150d2565b905060008473ffffffffffffffffffffffffffffffffffffffff168b8b6040516133359291906157fd565b6000604051808303816000865af19150503d8060008114613372576040519150601f19603f3d011682016040523d82523d6000602084013e613377565b606091505b505090506133a78560008b73ffffffffffffffffffffffffffffffffffffffff16613c949092919063ffffffff16565b806133de576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016134199190614b27565b602060405180830381865afa158015613436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345a91906150d2565b9050828111613495576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82816134a1919061551c565b945050505050979650505050505050565b6134bc82826124e3565b61358f57600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613534613593565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6135a582826124e3565b1561367957600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061361e613593565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b613685613de3565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6136c9613593565b6040516136d69190614b27565b60405180910390a1565b600060fd83815481106136f6576136f561508e565b5b90600052602060002090600d0201905081801561372557508060080160040160169054906101000a900460ff16155b1561375c576040517f0f28e7f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115801561377b57508060080160040160169054906101000a900460ff165b156137b2576040517f6b01f20600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060080160040160149054906101000a900460ff166137fd576040517f91f1426900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060080160040160159054906101000a900460ff1615613849576040517f528f27bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600060fd85815481106138645761386361508e565b5b90600052602060002090600d0201905083816002016000828254613888919061539b565b9250508190555060018160070160008282546138a4919061539b565b9250508190555080600301548160070154148160080160040160156101000a81548160ff021916908315150217905550428160050181905550828160080160000160008282546138f4919061539b565b92505081905550847f9bb8d2b716029a6597eba8ab3c45a8d0dad4e44978c818d4efaafb64576187a685858560405161392f93929190615816565b60405180910390a25050505050565b613946613102565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861398a613593565b6040516139979190614b27565b60405180910390a1565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a2a576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060019054906101000a900460ff16613a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a73906158bf565b60405180910390fd5b613a84613e2c565b565b600060019054906101000a900460ff16613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc906158bf565b60405180910390fd5b613add613e84565b565b600060019054906101000a900460ff16613b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b25906158bf565b60405180910390fd5b565b613b3a82826124e3565b613bc957613b5f8173ffffffffffffffffffffffffffffffffffffffff166014613ef0565b613b6d8360001c6020613ef0565b604051602001613b7e9291906159dd565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc09190615a61565b60405180910390fd5b5050565b6000613c2f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661412c9092919063ffffffff16565b9050600081511115613c8f5780806020019051810190613c4f9190615a98565b613c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8590615b37565b60405180910390fd5b5b505050565b6000811480613d1e575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401613cdb929190615b57565b602060405180830381865afa158015613cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1c91906150d2565b145b613d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d5490615bf2565b60405180910390fd5b613dde8363095ea7b360e01b8484604051602401613d7c9291906150ff565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613bcd565b505050565b613deb611b6f565b613e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e2190615c5e565b60405180910390fd5b565b600060019054906101000a900460ff16613e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e72906158bf565b60405180910390fd5b60018081905550565b600060019054906101000a900460ff16613ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eca906158bf565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b606060006002836002613f039190615359565b613f0d919061539b565b67ffffffffffffffff811115613f2657613f25615298565b5b6040519080825280601f01601f191660200182016040528015613f585781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613f9057613f8f61508e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613ff457613ff361508e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026140349190615359565b61403e919061539b565b90505b60018111156140de577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106140805761407f61508e565b5b1a60f81b8282815181106140975761409661508e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806140d790615c7e565b9050614041565b5060008414614122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411990615cf3565b60405180910390fd5b8091505092915050565b606061413b8484600085614144565b90509392505050565b606082471015614189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161418090615d85565b60405180910390fd5b61419285614258565b6141d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c890615df1565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516141fa9190615e4d565b60006040518083038185875af1925050503d8060008114614237576040519150601f19603f3d011682016040523d82523d6000602084013e61423c565b606091505b509150915061424c82828661427b565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561428b578290506142db565b60008351111561429e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142d29190615a61565b60405180910390fd5b9392505050565b604051806101200160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200161432e614334565b81525090565b6040518061010001604052806000815260200160008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6143e1816143ce565b81146143ec57600080fd5b50565b6000813590506143fe816143d8565b92915050565b60008115159050919050565b61441981614404565b811461442457600080fd5b50565b60008135905061443681614410565b92915050565b60008060408385031215614453576144526143c4565b5b6000614461858286016143ef565b925050602061447285828601614427565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144a78261447c565b9050919050565b6144b78161449c565b81146144c257600080fd5b50565b6000813590506144d4816144ae565b92915050565b6000806000606084860312156144f3576144f26143c4565b5b6000614501868287016144c5565b9350506020614512868287016144c5565b9250506040614523868287016143ef565b9150509250925092565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6145628161452d565b811461456d57600080fd5b50565b60008135905061457f81614559565b92915050565b60006020828403121561459b5761459a6143c4565b5b60006145a984828501614570565b91505092915050565b6145bb81614404565b82525050565b60006020820190506145d660008301846145b2565b92915050565b6145e5816143ce565b82525050565b600060208201905061460060008301846145dc565b92915050565b6000806000806000806000806000806101408b8d03121561462a576146296143c4565b5b60006146388d828e016143ef565b9a505060206146498d828e016144c5565b995050604061465a8d828e016144c5565b985050606061466b8d828e016144c5565b975050608061467c8d828e016143ef565b96505060a061468d8d828e016143ef565b95505060c061469e8d828e016143ef565b94505060e06146af8d828e016143ef565b9350506101006146c18d828e016143ef565b9250506101206146d38d828e016143ef565b9150509295989b9194979a5092959850565b6000819050919050565b6146f8816146e5565b811461470357600080fd5b50565b600081359050614715816146ef565b92915050565b600060208284031215614731576147306143c4565b5b600061473f84828501614706565b91505092915050565b614751816146e5565b82525050565b600060208201905061476c6000830184614748565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261479757614796614772565b5b8235905067ffffffffffffffff8111156147b4576147b3614777565b5b6020830191508360018202830111156147d0576147cf61477c565b5b9250929050565b60008060008060008060a087890312156147f4576147f36143c4565b5b600087013567ffffffffffffffff811115614812576148116143c9565b5b61481e89828a01614781565b9650965050602061483189828a016144c5565b945050604061484289828a016143ef565b935050606061485389828a016144c5565b925050608061486489828a016144c5565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148a6816143ce565b82525050565b6148b5816146e5565b82525050565b6148c48161449c565b82525050565b6148d381614404565b82525050565b610100820160008201516148f0600085018261489d565b50602082015161490360208501826148ac565b50604082015161491660408501826148bb565b50606082015161492960608501826148bb565b50608082015161493c60808501826148bb565b5060a082015161494f60a08501826148ca565b5060c082015161496260c08501826148ca565b5060e082015161497560e08501826148ca565b50505050565b61020082016000820151614992600085018261489d565b5060208201516149a5602085018261489d565b5060408201516149b8604085018261489d565b5060608201516149cb606085018261489d565b5060808201516149de608085018261489d565b5060a08201516149f160a085018261489d565b5060c0820151614a0460c085018261489d565b5060e0820151614a1760e085018261489d565b50610100820151614a2c6101008501826148d9565b50505050565b6000614a3e838361497b565b6102008301905092915050565b6000602082019050919050565b6000614a6382614871565b614a6d818561487c565b9350614a788361488d565b8060005b83811015614aa9578151614a908882614a32565b9750614a9b83614a4b565b925050600181019050614a7c565b5085935050505092915050565b60006020820190508181036000830152614ad08184614a58565b905092915050565b60008060408385031215614aef57614aee6143c4565b5b6000614afd85828601614706565b9250506020614b0e858286016144c5565b9150509250929050565b614b218161449c565b82525050565b6000602082019050614b3c6000830184614b18565b92915050565b600060208284031215614b5857614b576143c4565b5b6000614b6684828501614427565b91505092915050565b600080600060408486031215614b8857614b876143c4565b5b600084013567ffffffffffffffff811115614ba657614ba56143c9565b5b614bb286828701614781565b93509350506020614bc5868287016143ef565b9150509250925092565b600080600060608486031215614be857614be76143c4565b5b6000614bf6868287016143ef565b9350506020614c07868287016143ef565b9250506040614c18868287016143ef565b9150509250925092565b60008083601f840112614c3857614c37614772565b5b8235905067ffffffffffffffff811115614c5557614c54614777565b5b602083019150836001820283011115614c7157614c7061477c565b5b9250929050565b60008060008060608587031215614c9257614c916143c4565b5b600085013567ffffffffffffffff811115614cb057614caf6143c9565b5b614cbc87828801614c22565b94509450506020614ccf878288016144c5565b9250506040614ce087828801614427565b91505092959194509250565b600080600080600080600080610100898b031215614d0d57614d0c6143c4565b5b6000614d1b8b828c016144c5565b9850506020614d2c8b828c016144c5565b9750506040614d3d8b828c016144c5565b9650506060614d4e8b828c016143ef565b9550506080614d5f8b828c016143ef565b94505060a0614d708b828c016143ef565b93505060c0614d818b828c01614427565b92505060e0614d928b828c01614706565b9150509295985092959890939650565b600060208284031215614db857614db76143c4565b5b6000614dc6848285016143ef565b91505092915050565b61010082016000820151614de6600085018261489d565b506020820151614df960208501826148ac565b506040820151614e0c60408501826148bb565b506060820151614e1f60608501826148bb565b506080820151614e3260808501826148bb565b5060a0820151614e4560a08501826148ca565b5060c0820151614e5860c08501826148ca565b5060e0820151614e6b60e08501826148ca565b50505050565b600061020082019050614e87600083018c6145dc565b614e94602083018b6145dc565b614ea1604083018a6145dc565b614eae60608301896145dc565b614ebb60808301886145dc565b614ec860a08301876145dc565b614ed560c08301866145dc565b614ee260e08301856145dc565b614ef0610100830184614dcf565b9a9950505050505050505050565b61020082016000820151614f15600085018261489d565b506020820151614f28602085018261489d565b506040820151614f3b604085018261489d565b506060820151614f4e606085018261489d565b506080820151614f61608085018261489d565b5060a0820151614f7460a085018261489d565b5060c0820151614f8760c085018261489d565b5060e0820151614f9a60e085018261489d565b50610100820151614faf6101008501826148d9565b50505050565b600061020082019050614fcb6000830184614efe565b92915050565b60008060408385031215614fe857614fe76143c4565b5b6000614ff6858286016144c5565b9250506020615007858286016144c5565b9150509250929050565b600082825260208201905092915050565b7f496e76616c696420696e64657800000000000000000000000000000000000000600082015250565b6000615058600d83615011565b915061506382615022565b602082019050919050565b600060208201905081810360008301526150878161504b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150cc816143d8565b92915050565b6000602082840312156150e8576150e76143c4565b5b60006150f6848285016150bd565b91505092915050565b60006040820190506151146000830185614b18565b61512160208301846145dc565b9392505050565b60006101208201905061513e600083018c614b18565b61514b602083018b614b18565b615158604083018a614b18565b61516560608301896145dc565b61517260808301886145dc565b61517f60a08301876145dc565b61518c60c08301866145dc565b61519960e08301856145dc565b6151a76101008301846145dc565b9a9950505050505050505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006151eb601f83615011565b91506151f6826151b5565b602082019050919050565b6000602082019050818103600083015261521a816151de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061525b826143ce565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361528d5761528c615221565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000615323602f83615011565b915061532e826152c7565b604082019050919050565b6000602082019050818103600083015261535281615316565b9050919050565b6000615364826143ce565b915061536f836143ce565b925082820261537d816143ce565b9150828204841483151761539457615393615221565b5b5092915050565b60006153a6826143ce565b91506153b1836143ce565b92508282019050808211156153c9576153c8615221565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615409826143ce565b9150615414836143ce565b925082615424576154236153cf565b5b828204905092915050565b7f456d7074792061676772656761746f72206e616d650000000000000000000000600082015250565b6000615465601583615011565b91506154708261542f565b602082019050919050565b6000602082019050818103600083015261549481615458565b9050919050565b600081905092915050565b82818337600083830152505050565b60006154c1838561549b565b93506154ce8385846154a6565b82840190509392505050565b60006154e78284866154b5565b91508190509392505050565b60006040820190506155086000830185614b18565b61551560208301846145b2565b9392505050565b6000615527826143ce565b9150615532836143ce565b925082820390508181111561554a57615549615221565b5b92915050565b600060e082019050615565600083018a614b18565b6155726020830189614b18565b61557f6040830188614b18565b61558c60608301876145dc565b61559960808301866145dc565b6155a660a08301856145dc565b6155b360c0830184614748565b98975050505050505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600061561b602e83615011565b9150615626826155bf565b604082019050919050565b6000602082019050818103600083015261564a8161560e565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600061568d61568861568384615651565b615668565b61565b565b9050919050565b61569d81615672565b82525050565b60006020820190506156b86000830184615694565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006156f4601083615011565b91506156ff826156be565b602082019050919050565b60006020820190508181036000830152615723816156e7565b9050919050565b600060608201905061573f6000830186614b18565b61574c6020830185614b18565b61575960408301846145dc565b949350505050565b7f496e76616c69642066756e6374696f6e2073656c6563746f7200000000000000600082015250565b6000615797601983615011565b91506157a282615761565b602082019050919050565b600060208201905081810360008301526157c68161578a565b9050919050565b600081905092915050565b60006157e483856157cd565b93506157f18385846154a6565b82840190509392505050565b600061580a8284866157d8565b91508190509392505050565b600060608201905061582b60008301866145dc565b61583860208301856145dc565b6158456040830184614748565b949350505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006158a9602b83615011565b91506158b48261584d565b604082019050919050565b600060208201905081810360008301526158d88161589c565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061591560178361549b565b9150615920826158df565b601782019050919050565b600081519050919050565b60005b83811015615954578082015181840152602081019050615939565b60008484015250505050565b600061596b8261592b565b615975818561549b565b9350615985818560208601615936565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006159c760118361549b565b91506159d282615991565b601182019050919050565b60006159e882615908565b91506159f48285615960565b91506159ff826159ba565b9150615a0b8284615960565b91508190509392505050565b6000601f19601f8301169050919050565b6000615a338261592b565b615a3d8185615011565b9350615a4d818560208601615936565b615a5681615a17565b840191505092915050565b60006020820190508181036000830152615a7b8184615a28565b905092915050565b600081519050615a9281614410565b92915050565b600060208284031215615aae57615aad6143c4565b5b6000615abc84828501615a83565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000615b21602a83615011565b9150615b2c82615ac5565b604082019050919050565b60006020820190508181036000830152615b5081615b14565b9050919050565b6000604082019050615b6c6000830185614b18565b615b796020830184614b18565b9392505050565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b6000615bdc603683615011565b9150615be782615b80565b604082019050919050565b60006020820190508181036000830152615c0b81615bcf565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615c48601483615011565b9150615c5382615c12565b602082019050919050565b60006020820190508181036000830152615c7781615c3b565b9050919050565b6000615c89826143ce565b915060008203615c9c57615c9b615221565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615cdd602083615011565b9150615ce882615ca7565b602082019050919050565b60006020820190508181036000830152615d0c81615cd0565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000615d6f602683615011565b9150615d7a82615d13565b604082019050919050565b60006020820190508181036000830152615d9e81615d62565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615ddb601d83615011565b9150615de682615da5565b602082019050919050565b60006020820190508181036000830152615e0a81615dce565b9050919050565b600081519050919050565b6000615e2782615e11565b615e3181856157cd565b9350615e41818560208601615936565b80840191505092915050565b6000615e598284615e1c565b91508190509291505056fea2646970667358221220492a40088d0fc23ba5b51c454aa6a982db1dae723d50406b73367fa8d3375eba64736f6c63430008130033