Amoy Testnet

Token

DWC (DWC)
ERC-20

Overview

Max Total Supply

32,500,000 DWC

Holders

19

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9.76798213387106125 DWC
0x8fb5b1bdc60c9055f5426bb71dd37f0d6f4e4ef4
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DWC

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at amoy.polygonscan.com on 2025-01-29
*/

// SPDX-License-Identifier: UNLISCENSED
pragma solidity ^0.6.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract DWC  {
    IERC20 public dai;
    string public name = "DWC";
    string public symbol = "DWC";
    uint256 public totalSupply =32500000*10**18; // 325 lakh tokens
    uint8 public decimals = 18;
    struct User {
        uint id;        
        address referrer;
        uint partnersCount;        
        uint256 teamCount;    
        address[] directIds;    
        uint256 totalDeposit;  
        uint256 lastDeposit;
        uint256 directBusiness; 
        uint256 reward;
        uint256 levelincome;
        uint256 roraltyincome;
        uint256 maturityincome;
        uint256 totalreward;
        uint256 totalwithdraw;     
        uint256 dayRewardPercents;
        
    }
    struct OrderInfo {
        uint256 amount; 
        uint256 holdingbonus;
        uint256 deposit_time;
        bool isactive;
        bool isdai;
    }
    struct Rank
    {
        uint id;
        uint activedirect;
        uint activeteam;
    }
    struct UserRank
    {
        uint rank;
    }
    struct UserCapping
    {
        uint256 totalCapping;
        uint256 useCapping;
        bool Iswithdraw;
    }
    mapping(address => User) public users;
    mapping(address => UserRank) public userranks;
    mapping(address => UserCapping) public userscapping;
    mapping(address => OrderInfo[]) public orderInfos;
    mapping(uint=>Rank) public map_ranks;
    uint256 private constant minDeposit = 50e18;
    uint256 private constant  maxDeposit=5000e18;
    uint256 public liquidityPool_tokenAmount;
    uint256 public liquidityPool_daiAmount;
    uint256 public _burnToken;
    address public id1=0x9Ed2CFa3ebdE315FdbfC60859f093E07a52d131f;
    address public communityHoldingFund=0x7e1dF73df40F15Ba5252327D5f618aC359f994eb;
    address public dwctokenPool=0x2Ea5819ed9AC1DB76EA7d8bB73DF1b2Ba1369904;    
    address public liquidityPool=0x2f1Fd2E230E0c91924ee4eE00D47f5a9992414D7;
    address public extraPool=0x55A75F66afd736DB915E84e209BA1C3C95e9d380;
    address public creator;
    address private owner;
    address[5] public feewallet=[0xEa33CB8211A73e1cbcDEaA0a613A070DF2ADb3B1,0xf00c7cbDea8d7f0Cc5FFA5e7c46D96188dc74732,0x0b7b31458fdF2F14c88B00602CC990C74ccE3b75,0x95ACf6b6e689293EB67a3D2396Cd03115DBC87D0,0x1E313b8B0fBc14cfa26dCdB8fe4eD4B73b4aE922];
    uint256[5] private feePercents = [300,50,50,50,50];
    address public withdrawfee=0x38d51F8F961e764A659BbC0c95fFc0156f45f754;
    address public priceimpactwallet=0x38d51F8F961e764A659BbC0c95fFc0156f45f754;
    uint public lastUserId = 2;
    uint256 private constant referDepth = 21;
    uint256 private constant interval=5*60;
    uint256 private constant timeStepdaily=interval;
    bool public Iswithdraw;
    uint256 public dayRewardPercents = 5;
    uint256[21] private levelPercents = [1000,200,100,50,25,25,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20];
    uint256[21] private levelwPercents = [1000,100,100,100,100,100,100,100,100,100,100,50,50,50,50,50,50,50,50,50,50];
    uint256[21] private levelRank = [0,1,1,2,2,3,3,3,4,4,5,5,5,5,5,6,6,6,6,6,6];
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner,address indexed _spender,uint256 _value);

    event Deposit(address indexed addr, uint256 amount, uint256 token);
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);   
    event Transaction(address indexed user,address indexed from,uint256 value, uint8 level,uint8 Type);
    event Withdraw(address indexed user,uint256 value);
    event Swap(address indexed user,uint256 token,uint256 value);
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;    
    modifier onlycontractCreater() {
        require(msg.sender == owner, "e");
        _;
    }
    modifier onlyimplementation() {
        require(msg.sender == creator, "e");
        _;
    }
    constructor(address _daiAddr) public {
        creator=msg.sender;
        owner=0x6137d3e622920543Cf36923496Cb9738E959D3dC;
        dai = IERC20(_daiAddr);   
        balanceOf[dwctokenPool] =50000*10**18;
        balanceOf[communityHoldingFund] =32340000*10**18;
        balanceOf[liquidityPool] =10000*10**18;
        balanceOf[extraPool] =100000*10**18;
        emit Transfer(address(0), dwctokenPool, 50000*10**18);
        emit Transfer(address(0), communityHoldingFund, 32340000*10**18);
        emit Transfer(address(0), liquidityPool, 10000*10**18);
        emit Transfer(address(0), extraPool, 100000*10**18);
        User memory user = User({
            id: 1,            
            referrer: address(0),
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:500e18,
            lastDeposit:500e18,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0,
            dayRewardPercents:dayRewardPercents
            
        }); 
        users[id1] = user;
        userranks[id1].rank = 6;
        userscapping[id1].totalCapping =500e18; 
        orderInfos[id1].push(OrderInfo(
            500e18, 
            0,
            block.timestamp,
            true,true
        ));
        map_ranks[1] = Rank({id:1,activedirect:5,activeteam:0}); 
        map_ranks[2] = Rank({id:2,activedirect:2,activeteam:35}); 
        map_ranks[3] = Rank({id:3,activedirect:4,activeteam:80}); 
        map_ranks[4] = Rank({id:4,activedirect:6,activeteam:350}); 
        map_ranks[5] = Rank({id:5,activedirect:8,activeteam:1000}); 
        map_ranks[6] = Rank({id:6,activedirect:10,activeteam:5000});
        liquidityPool_tokenAmount=10000e18;
        liquidityPool_daiAmount=10000e18;
        Iswithdraw=true;
    } 
    function register(address referrerAddress) external  {        
        registration(msg.sender, referrerAddress);
    }
    function registration(address userAddress, address referrerAddress) private {
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        User memory user = User({
            id: lastUserId,            
            referrer: referrerAddress,
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:0,
            lastDeposit:0,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0,
            dayRewardPercents:dayRewardPercents
        });        
        users[userAddress] = user;
        users[userAddress].referrer = referrerAddress;
        lastUserId++;        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    function deposit(uint256 _amount) external {
        dai.transferFrom(msg.sender,address(this),_amount);
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        _deposit(msg.sender,_amount);
    }
    function depositFor(address _userAddress,uint256 _amount) external {
        require(_amount >= users[_userAddress].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(_userAddress), "user is not exists. Register first.");
        _deposit(_userAddress,_amount);
    }
    function depositdwc(uint256 _amount) external {
        uint256 _token=_daiToTokens(_amount);
        _transfer(msg.sender,communityHoldingFund,_token);
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        _depositdwc(msg.sender,_amount);
    }
    
   
    function _deposit(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);            
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;
        uint256 _rate=coinRate();
        uint256 _token=_daiToTokens(_amount);
        liquidityPool_daiAmount+=_amount;
        if(balanceOf[dwctokenPool]>=_token) {
            liquidityPool_tokenAmount+=_token*90/100;        
            _transfer(dwctokenPool,communityHoldingFund, _token*10/100); 
            _transfer(dwctokenPool,liquidityPool, _token*90/100);
        }
        else {
            liquidityPool_tokenAmount-=_token;  
            _transfer(liquidityPool,communityHoldingFund, _token);
        }
        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp,
            true,
            true
        ));
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        }
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _depositdwc(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;  
        uint256 _rate=coinRate();        
        uint256 _token=_daiToTokens(_amount);

        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            true,
            false
        ));
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        } 
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _distributelevelreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].levelincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),2); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _distributeroyaltyreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        uint levelranks=0;
        uint isbreak=0;
        uint256 differentincome=0;
        uint256 secondlevelincome=0;
        for(uint8 i = 0; i < 50; i++){            
            if(upline != address(0)){
                if(userranks[upline].rank==5 || userranks[upline].rank==6) {
                    if(levelranks==0)
                    {
                        if(userranks[upline].rank==6) {                   
                            differentincome=2;
                            secondlevelincome=1;
                            levelranks=5;
                        }
                        else {
                            differentincome=1;
                            secondlevelincome=2;
                            levelranks=6;
                        }
                    }
                    else {
                        if(userranks[upline].rank==levelranks) {                   
                            differentincome=secondlevelincome;
                            isbreak=1;                        
                        }
                    }
                    if(differentincome>0){
                        uint256 reward=_amount*differentincome/100;  
                        differentincome=0;                      
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].roraltyincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),3); 
                        }
                        if(isbreak==1 || upline == id1) break;
                    }
                }
                upline = users[upline].referrer;    
                        
            }else{
                break;
            }
        }
    }
    function _distributelevelwithdraw(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelwPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].maturityincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),4); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _calLevelNow(address _user) private {        
        uint256 totaldirect  = users[_user].partnersCount;
        uint256 directBusiness  = users[_user].directBusiness;
        uint currentRank = userranks[_user].rank;
        if(currentRank>=1 && currentRank<6){            
            uint nextRank = currentRank+1;
            (, uint256 otherTeam) = getTeamCount(_user);
            uint activedirect=getActiveCount(_user,1);
            if(activedirect>=map_ranks[nextRank].activedirect && otherTeam>=map_ranks[nextRank].activeteam){
                userranks[_user].rank = nextRank;
            }
            
        }else if(totaldirect>=map_ranks[1].activedirect && directBusiness>=1000e18 && currentRank==0){
            userranks[_user].rank=1;
        }
    }
    function getTeamCount(address _user) public view returns(uint256, uint256){        
        uint256 maxTeam;
        uint256 otherTeam;
        uint256 totalTeam;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            uint256 userTotalTeam =users[users[_user].directIds[i]].teamCount+1;            
            totalTeam+=userTotalTeam;
            if(userTotalTeam > maxTeam){
                maxTeam = userTotalTeam;
            }
        }
        otherTeam = totalTeam-maxTeam;
        return(maxTeam, otherTeam);
    }
    function getActiveCount(address _user,uint _rank) public view returns(uint256){        
        uint256 activedirect=0;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            if(userranks[users[_user].directIds[i]].rank >= _rank){
                activedirect += 1;
            }
        }
        return activedirect;
    }
    function _updateTeamNum(address _user,uint isnew) private {
        address upline = users[_user].referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(isnew==1)
                    users[upline].teamCount = users[upline].teamCount+1;
                _calLevelNow(upline);
                if(upline == id1) break;
                upline = users[upline].referrer;
            }else{
                break;
            }
        }
    }
	
    function _daiToTokens(uint256 _daiamount) public view returns(uint256)
    {
        return _daiamount*1e18/coinRate();      
    }
    function _tokensTodai(uint _tokenAmount) public view returns(uint)
    {
        return _tokenAmount*coinRate()/1e18;
    }
    
    function coinRate() public view returns(uint)
    {
        return liquidityPool_daiAmount*1e18/liquidityPool_tokenAmount;
    }
    function maxPayoutOf(address _user) public view returns(uint256) {
        if(userranks[_user].rank<=5)
            return (userscapping[_user].totalCapping*4-userscapping[_user].useCapping);
        else 
            return (userscapping[_user].totalCapping*5-userscapping[_user].useCapping);
    }
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }    
    function getOrderLength(address _user) external view returns(uint256) {
        return orderInfos[_user].length;
    }  
    function dailyPayoutOf(address _user,uint rewardindex) public returns(uint256) {
        
		uint256 reward=0;
        OrderInfo storage order = orderInfos[_user][rewardindex];
        uint256 _remainingCapping = this.maxPayoutOf(_user);             
        if(_remainingCapping>0)
        {
            uint period=(block.timestamp-order.deposit_time) / timeStepdaily;
            uint256 dailypayout =((order.amount*users[_user].dayRewardPercents)*period / 1000)-order.holdingbonus; 
            if(_remainingCapping<dailypayout){
                dailypayout = _remainingCapping;                            
            }
            if(dailypayout>0)
            { 
                reward=dailypayout;
            }                    
        }
        else {
            order.isactive=true;
        }
		return (reward);
    }
    function rewardWithdraw(uint rewardindex) public
    {
        require(isUserExists(msg.sender), "user is not exists. Register first.");
		OrderInfo storage order = orderInfos[msg.sender][rewardindex];
        require(order.isactive, "order is not active.");
        (uint256 dailypayout)=dailyPayoutOf(msg.sender,rewardindex);
        dailypayout=uint(dailypayout/5e18)*5e18;
        require(dailypayout>0, "user is not exists. Register first.");
        uint256 _rate=coinRate();
		users[msg.sender].reward +=dailypayout;
		users[msg.sender].totalreward +=dailypayout;
        userscapping[msg.sender].useCapping +=dailypayout;
        emit Transaction(msg.sender,msg.sender,dailypayout,1,1);
        order.holdingbonus+=dailypayout;              
        users[msg.sender].totalwithdraw+=dailypayout;
        uint256 _payout=dailypayout*1e18/_rate;
        _transfer(communityHoldingFund,msg.sender,_payout);
        _transfer(communityHoldingFund,withdrawfee,_payout*3/100);
        _distributelevelwithdraw(msg.sender,dailypayout,_rate);
            
        emit Withdraw(msg.sender,dailypayout);
    }
    function tokenSwap(uint256 _tokenAmount) public
    {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        uint256 _dai;
		require(balanceOf[msg.sender]>=_tokenAmount, "Insufficient token balance!"); 
        uint256 deduction=_tokenAmount*2/100;
        if((_burnToken+deduction)>10000000e18){
            deduction=10000000e18-_burnToken;
        }
        if(deduction>0){      
            uint256 tokenAmount=_tokenAmount-deduction; 
            _dai=_tokensTodai(tokenAmount);
            liquidityPool_tokenAmount+=tokenAmount;
            liquidityPool_daiAmount-=_dai;
            uint256 _empactdai=_tokensTodai(tokenAmount);
            uint256 _empactdaidiff=_empactdai-_dai;
            _transfer(msg.sender,liquidityPool,tokenAmount);
            dai.transfer(msg.sender, _empactdai); 
            dai.transfer(priceimpactwallet, _empactdaidiff); 
            _burnToken+=deduction;
            _burn(msg.sender,deduction);
            emit Transfer(msg.sender,address(0), deduction);
        }
        else {
            _dai=_tokensTodai(_tokenAmount);
            liquidityPool_tokenAmount+=_tokenAmount;
            liquidityPool_daiAmount-=_dai;
            uint256 _empactdai=_tokensTodai(_tokenAmount);
            uint256 _empactdaidiff=_empactdai-_dai;
            _transfer(msg.sender,liquidityPool,_tokenAmount);
            dai.transfer(msg.sender, _dai);   
            dai.transfer(priceimpactwallet, _empactdaidiff);          
        }
        emit Swap(msg.sender,_tokenAmount,_dai);
    }
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        _transfer(msg.sender,_to,_value);
        return true;
    }
    function _transfer(address _from,address _to, uint256 _value) internal {
        require(balanceOf[_from] >= _value);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
    }
    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }    
    function transferFrom(address _from,address _to,uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);
        _transfer(msg.sender,_to,_value);
        allowance[_from][msg.sender] -= _value;
        return true;
    }
    
    function burn(uint256 amount,address account) public returns (bool) {
        if (msg.sender != dwctokenPool) {revert("Access Denied");}
        _burn(account, amount);
        return true;
    }
    function _burn(address account, uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = balanceOf[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        require(totalSupply>=amount, "Invalid amount of tokens!");
        balanceOf[account] = accountBalance - amount;        
        totalSupply -= amount;
    }
    function migrate(address userAddress,address referrerAddress) external onlyimplementation {   
        registration(userAddress, referrerAddress);
    }
    function _depositmigrate(address userAddress,uint256 _amount) external onlyimplementation { 
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);            
            _updateTeamNum(userAddress,1);
        }  
        else {
            _updateTeamNum(userAddress,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;
    
        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            true,
            true
        ));       
        emit Deposit(userAddress,_amount,_amount);
        
    }
    
    function update(address _creator) external onlycontractCreater {
        creator=_creator;
    }
    function updateUserROI(address _user,uint256 _dayRewardPercents) external onlycontractCreater {
        users[_user].dayRewardPercents=_dayRewardPercents;
    }
    function updateUserWithdrawal(address _user,bool _iswithdraw) external onlycontractCreater {
        userscapping[_user].Iswithdraw=_iswithdraw;
    }
    function updateContractROI(uint256 _dayRewardPercents) external onlycontractCreater {
        dayRewardPercents=_dayRewardPercents;
    }
    function updateContractWithdrawal(bool _iswithdraw) external onlycontractCreater {
        Iswithdraw=_iswithdraw;
    }
    function multiple5(uint256 dailypayout) public pure returns(uint256){
        dailypayout=uint(dailypayout/5e18)*5e18;
        return dailypayout;
    }
    function checkOrder(address _user,uint rewardindex) external view returns(uint,uint256) {
        OrderInfo storage order = orderInfos[_user][rewardindex];
        uint period=(block.timestamp-order.deposit_time) / timeStepdaily;
        uint256 dailypayout =((order.amount*users[_user].dayRewardPercents)*period / 1000); 
        return (period,dailypayout);
    } 
}

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_daiAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Type","type":"uint8"}],"name":"Transaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"Iswithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_daiamount","type":"uint256"}],"name":"_daiToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_depositmigrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"_tokensTodai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"checkOrder","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityHoldingFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"dailyPayoutOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dayRewardPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositdwc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dwctokenPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feewallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_rank","type":"uint256"}],"name":"getActiveCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getOrderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTeamCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_daiAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_ranks","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"activedirect","type":"uint256"},{"internalType":"uint256","name":"activeteam","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"maxPayoutOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dailypayout","type":"uint256"}],"name":"multiple5","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"holdingbonus","type":"uint256"},{"internalType":"uint256","name":"deposit_time","type":"uint256"},{"internalType":"bool","name":"isactive","type":"bool"},{"internalType":"bool","name":"isdai","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceimpactwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"rewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"tokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dayRewardPercents","type":"uint256"}],"name":"updateContractROI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_iswithdraw","type":"bool"}],"name":"updateContractWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_dayRewardPercents","type":"uint256"}],"name":"updateUserROI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_iswithdraw","type":"bool"}],"name":"updateUserWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userranks","outputs":[{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"},{"internalType":"uint256","name":"teamCount","type":"uint256"},{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"lastDeposit","type":"uint256"},{"internalType":"uint256","name":"directBusiness","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"levelincome","type":"uint256"},{"internalType":"uint256","name":"roraltyincome","type":"uint256"},{"internalType":"uint256","name":"maturityincome","type":"uint256"},{"internalType":"uint256","name":"totalreward","type":"uint256"},{"internalType":"uint256","name":"totalwithdraw","type":"uint256"},{"internalType":"uint256","name":"dayRewardPercents","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userscapping","outputs":[{"internalType":"uint256","name":"totalCapping","type":"uint256"},{"internalType":"uint256","name":"useCapping","type":"uint256"},{"internalType":"bool","name":"Iswithdraw","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawfee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c0604052600360808190526244574360e81b60a090815262000026916001919062000ba5565b506040805180820190915260038082526244574360e81b6020909201918252620000539160029162000ba5565b506a1ae22487c1042af08000006003556004805460ff19166012179055600d80546001600160a01b0319908116739ed2cfa3ebde315fdbfc60859f093e07a52d131f17909155600e80548216737e1df73df40f15ba5252327d5f618ac359f994eb179055600f80548216732ea5819ed9ac1db76ea7d8bb73df1b2ba1369904179055601080548216732f1fd2e230e0c91924ee4ee00d47f5a9992414d7179055601180549091167355a75f66afd736db915e84e209ba1c3c95e9d3801790556040805160a08101825273ea33cb8211a73e1cbcdeaa0a613a070df2adb3b1815273f00c7cbdea8d7f0cc5ffa5e7c46d96188dc747326020820152730b7b31458fdf2f14c88b00602cc990c74cce3b75918101919091527395acf6b6e689293eb67a3d2396cd03115dbc87d06060820152731e313b8b0fbc14cfa26dcdb8fe4ed4b73b4ae9226080820152620001ad90601490600562000c2a565b506040805160a08101825261012c8152603260208201819052918101829052606081018290526080810191909152620001eb90601990600562000c83565b50601e80547338d51f8f961e764a659bbc0c95ffc0156f45f7546001600160a01b03199182168117909255601f80549091169091179055600260209081556005602255604080516102a0810182526103e8815260c8928101929092526064908201526032606082015260196080820181905260a0820152601460c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152620002e890602390601562000cba565b50604080516102a0810182526103e88152606460208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526032610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152620003a490603890601562000cba565b50604080516102a08101825260008152600160208201819052918101919091526002606082018190526080820152600360a0820181905260c0820181905260e08201526004610100820181905261012082015260056101408201819052610160820181905261018082018190526101a082018190526101c082015260066101e0820181905261020082018190526102208201819052610240820181905261026082018190526102808201526200045f90604d90601562000cf0565b503480156200046d57600080fd5b506040516200443a3803806200443a833981810160405260208110156200049357600080fd5b5051601280546001600160a01b03199081163317909155601380548216736137d3e622920543cf36923496cb9738e959d3dc179055600080546001600160a01b0380851691909316178155600f805483168252606260209081526040808420690a968163f0a57b40000090819055600e54861685528185206a1ac042e9b4687fcc80000090556010548616855281852069021e19e0c9bab240000090556011548616855281852069152d02c7e14af680000090559254815193845290519416936000805160206200441a8339815191529281900390910190a3600e54604080516a1ac042e9b4687fcc800000815290516001600160a01b03909216916000916000805160206200441a833981519152919081900360200190a36010546040805169021e19e0c9bab2400000815290516001600160a01b03909216916000916000805160206200441a833981519152919081900360200190a36011546040805169152d02c7e14af6800000815290516001600160a01b03909216916000916000805160206200441a833981519152919081900360200190a36200063462000d26565b604051806101e001604052806001815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b03811180156200067d57600080fd5b50604051908082528060200260200182016040528015620006a8578160200160208202803683370190505b508152681b1ae4d6e2ef500000602080830182905260408084019290925260006060808501829052608080860183905260a0860183905260c0860183905260e086018390526101008601839052610120860183905260225461014090960195909552600d546001600160a01b039081168352600584529184902086518155868401516001820180546001600160a01b031916919094161790925592850151600282015591840151600383015591830151805193945084939192620007759260048501929091019062000da5565b5060a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01556101c082015181600e01559050506006806000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060000181905550681b1ae4d6e2ef50000060076000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000018190555060086000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206040518060a00160405280681b1ae4d6e2ef50000081526020016000815260200142815260200160011515815260200160011515815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555050506040518060600160405280600181526020016005815260200160008152506009600060018152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060028152602001600281526020016023815250600960006002815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060405180606001604052806003815260200160048152602001605081525060096000600381526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506040518060600160405280600481526020016006815260200161015e8152506009600060048152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060058152602001600881526020016103e88152506009600060058152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060068152602001600a8152602001611388815250600960006006815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505069021e19e0c9bab2400000600a8190555069021e19e0c9bab2400000600b819055506001602160006101000a81548160ff021916908315150217905550505062000e34565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000be857805160ff191683800117855562000c18565b8280016001018555821562000c18579182015b8281111562000c1857825182559160200191906001019062000bfb565b5062000c2692915062000dfc565b5090565b826005810192821562000c75579160200282015b8281111562000c7557825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c3e565b5062000c2692915062000e13565b826005810192821562000c18579160200282015b8281111562000c18578251829061ffff1690559160200191906001019062000c97565b826015810192821562000c18579160200282018281111562000c18578251829061ffff1690559160200191906001019062000c97565b826015810192821562000c18579160200282015b8281111562000c18578251829060ff1690559160200191906001019062000d04565b604051806101e001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821562000c75579160200282018281111562000c7557825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c3e565b5b8082111562000c26576000815560010162000dfd565b5b8082111562000c265780546001600160a01b031916815560010162000e14565b6135d68062000e446000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c806358cbcb7c116101d3578063aa3b2d7211610104578063dd62ed3e116100a2578063f4b9fa751161007c578063f4b9fa7514610a80578063f571545b14610a88578063fa96bd9c14610a90578063fcd3533c14610ad65761035d565b8063dd62ed3e14610a24578063de6b8a2e14610a52578063f31a97c714610a785761035d565b8063b6c5feb1116100de578063b6c5feb1146109ab578063b842f3b6146109d9578063b906bf7f146109f6578063d9f01b7d146109fe5761035d565b8063aa3b2d7214610969578063aa4022fc14610986578063b6b55f251461098e5761035d565b80638b49ca1c116101715780639d154deb1161014b5780639d154deb1461086d578063a8365d1614610899578063a87430ba146108a1578063a9059cbb1461093d5761035d565b80638b49ca1c146108555780639351a77a1461085d57806395d89b41146108655761035d565b8063665a11ca116101ad578063665a11ca146107d557806370a08231146107dd57806371c757ec146108035780637fe0c526146108295761035d565b806358cbcb7c146107315780635e23287b1461074e57806360a1cbd71461077a5761035d565b80632280b7a8116102ad5780634420e4861161024b5780634d79348a116102255780634d79348a146106dc5780634e790d7a146106e4578063509222cd14610703578063517999bc146107295761035d565b80634420e486146106885780634bdf3bf2146106ae5780634c0cc366146106d45761035d565b80632f057729116102875780632f057729146106195780632f4f21e214610636578063313ce56714610662578063348d4487146106805761035d565b80632280b7a81461059a578063228b7a2a146105b757806323b872dd146105e35761035d565b80630f3223731161031a57806310dba31c116102f457806310dba31c1461051f57806318160ddd146105645780631c1b87721461056c57806320bdc7c7146105925761035d565b80630f322373146104cc5780631068361f146104d457806310d93101146105025761035d565b806302d05d3f1461036257806302fd7a031461038657806306fdde03146103b5578063095ea7b31461043257806309be8468146104725780630eb7a3d1146104ad575b600080fd5b61036a610b02565b604080516001600160a01b039092168252519081900360200190f35b6103a36004803603602081101561039c57600080fd5b5035610b11565b60408051918252519081900360200190f35b6103bd610b36565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f75781810151838201526020016103df565b50505050905090810190601f1680156104245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61045e6004803603604081101561044857600080fd5b506001600160a01b038135169060200135610bc3565b604080519115158252519081900360200190f35b61048f6004803603602081101561048857600080fd5b5035610c29565b60408051938452602084019290925282820152519081900360600190f35b6104ca600480360360208110156104c357600080fd5b5035610c4a565b005b61036a610c92565b6104ca600480360360408110156104ea57600080fd5b506001600160a01b0381358116916020013516610ca1565b61036a6004803603602081101561051857600080fd5b5035610cf2565b61054b6004803603604081101561053557600080fd5b506001600160a01b038135169060200135610d0f565b6040805192835260208301919091528051918290030190f35b6103a3610d92565b6104ca6004803603602081101561058257600080fd5b50356001600160a01b0316610d98565b6103a3610dfd565b6104ca600480360360208110156105b057600080fd5b5035610e03565b6104ca600480360360408110156105cd57600080fd5b506001600160a01b038135169060200135611252565b61045e600480360360608110156105f957600080fd5b506001600160a01b038135811691602081013590911690604001356112b4565b6104ca6004803603602081101561062f57600080fd5b5035611323565b6104ca6004803603604081101561064c57600080fd5b506001600160a01b03813516906020013561142e565b61066a61151c565b6040805160ff9092168252519081900360200190f35b6103a3611525565b6104ca6004803603602081101561069e57600080fd5b50356001600160a01b031661152b565b6103a3600480360360208110156106c457600080fd5b50356001600160a01b0316611538565b6103a36115aa565b6103a36115b0565b6104ca600480360360208110156106fa57600080fd5b503515156115b6565b61045e6004803603602081101561071957600080fd5b50356001600160a01b031661160c565b61036a611629565b6103a36004803603602081101561074757600080fd5b5035611638565b6103a36004803603604081101561076457600080fd5b506001600160a01b038135169060200135611654565b6107a66004803603604081101561079057600080fd5b506001600160a01b03813516906020013561178f565b604080519586526020860194909452848401929092521515606084015215156080830152519081900360a00190f35b61036a6117de565b6103a3600480360360208110156107f357600080fd5b50356001600160a01b03166117ed565b61054b6004803603602081101561081957600080fd5b50356001600160a01b03166117ff565b6103a36004803603604081101561083f57600080fd5b506001600160a01b0381351690602001356118ae565b61036a611945565b61036a611954565b6103bd611963565b6104ca6004803603604081101561088357600080fd5b506001600160a01b0381351690602001356119bb565b61036a611ba6565b6108c7600480360360208110156108b757600080fd5b50356001600160a01b0316611bb5565b604080519e8f526001600160a01b03909d1660208f01528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b61045e6004803603604081101561095357600080fd5b506001600160a01b038135169060200135611c2c565b6103a36004803603602081101561097f57600080fd5b5035611cc1565b61045e611cd2565b6104ca600480360360208110156109a457600080fd5b5035611cdb565b6104ca600480360360408110156109c157600080fd5b506001600160a01b0381351690602001351515611e47565b6104ca600480360360208110156109ef57600080fd5b5035611eb8565b61036a612102565b6103a360048036036020811015610a1457600080fd5b50356001600160a01b0316612111565b6103a360048036036040811015610a3a57600080fd5b506001600160a01b0381358116916020013516612123565b6103a360048036036020811015610a6857600080fd5b50356001600160a01b0316612140565b6103a361215b565b61036a612161565b6103a3612170565b610ab660048036036020811015610aa657600080fd5b50356001600160a01b031661218f565b604080519384526020840192909252151582820152519081900360600190f35b61045e60048036036040811015610aec57600080fd5b50803590602001356001600160a01b03166121b3565b6012546001600160a01b031681565b6000610b1b612170565b82670de0b6b3a76400000281610b2d57fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b505050505081565b3360008181526063602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60096020526000908152604090208054600182015460029092015490919083565b6013546001600160a01b03163314610c8d576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b602255565b6011546001600160a01b031681565b6012546001600160a01b03163314610ce4576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b610cee828261220f565b5050565b60148160058110610cff57fe5b01546001600160a01b0316905081565b6001600160a01b038216600090815260086020526040812080548291829185908110610d3757fe5b90600052602060002090600402019050600061012c8260020154420381610d5a57fe5b6001600160a01b03979097166000908152600560205260409020600e015492549604966103e896909202870295909504945092505050565b60035481565b6013546001600160a01b03163314610ddb576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b600f546001600160a01b03163314801590610e295750600e546001600160a01b03163314155b8015610e4057506010546001600160a01b03163314155b610e81576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b33600090815260626020526040812054821115610ee5576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610f175750600c546a084595161401484a000000035b80156110c157808303610f2981611638565b600a805483019055600b8054829003905592506000610f4782611638565b60105490915084820390610f669033906001600160a01b0316856124e7565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050506040513d6020811015610fe557600080fd5b505060008054601f546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561104357600080fd5b505af1158015611057573d6000803e3d6000fd5b505050506040513d602081101561106d57600080fd5b5050600c8054850190556110813385612578565b60408051858152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050611213565b6110ca83611638565b600a805485019055600b80548290039055915060006110e884611638565b601054909150838203906111079033906001600160a01b0316876124e7565b600080546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b505060008054601f546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156111e457600080fd5b505af11580156111f8573d6000803e3d6000fd5b505050506040513d602081101561120e57600080fd5b505050505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6013546001600160a01b03163314611295576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b039091166000908152600560205260409020600e0155565b6001600160a01b03831660009081526063602090815260408083203384529091528120548211156112e457600080fd5b6112ef3384846124e7565b506001600160a01b038316600090815260636020908152604080832033845290915290208054829003905560019392505050565b600061132e82610b11565b600e549091506113499033906001600160a01b0316836124e7565b33600090815260056020526040902060060154821080159061137457506802b5e3af16b18800008210155b801561138957506802b5e3af16b18800008206155b801561139f575069010f0cf064dd592000008211155b6113e0576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6113e93361160c565b6114245760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b610cee3383612698565b6001600160a01b038216600090815260056020526040902060060154811080159061146257506802b5e3af16b18800008110155b801561147757506802b5e3af16b18800008106155b801561148d575069010f0cf064dd592000008111155b6114ce576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6114d78261160c565b6115125760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b610cee82826128ec565b60045460ff1681565b60205481565b611535338261220f565b50565b6001600160a01b03811660009081526006602052604081205460051061158157506001600160a01b03811660009081526007602052604090206001810154905460040203610b31565b506001600160a01b03811660009081526007602052604090206001810154905460050203610b31565b600b5481565b600a5481565b6013546001600160a01b031633146115f9576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6021805460ff1916911515919091179055565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a764000061164b612170565b830281610b2d57fe5b6001600160a01b03821660009081526008602052604081208054829182918590811061167c57fe5b906000526020600020906004020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116db57600080fd5b505afa1580156116ef573d6000803e3d6000fd5b505050506040513d602081101561170557600080fd5b50519050801561177557600061012c836002015442038161172257fe5b60018501546001600160a01b038a166000908152600560205260408120600e015487549490930494509290916103e89102840204039050808310156117645750815b801561176e578094505b5050611785565b60038201805460ff191660011790555b5090949350505050565b600860205281600052604060002081815481106117a857fe5b60009182526020909120600490910201805460018201546002830154600390930154919450925060ff8082169161010090041685565b6010546001600160a01b031681565b60626020526000908152604090205481565b600080808080805b6001600160a01b03871660009081526005602052604090206004015481101561189f576001600160a01b0387166000908152600560208190526040822060040180548391908590811061185657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611896578094505b50600101611807565b50919350508290039050915091565b600080805b6001600160a01b03851660009081526005602052604090206004015481101561193d576001600160a01b03851660009081526005602052604081206004018054869260069290918590811061190457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205410611935576001820191505b6001016118b3565b509392505050565b601f546001600160a01b031681565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b6012546001600160a01b031633146119fe576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154611aa1576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155611a9c908490612b5f565b611aac565b611aac836000612b5f565b6001600160a01b038316600081815260056020818152604080842092830180548801905560078252808420805488019055600690920186905560088152818320825160a081018452878152808301858152428286019081526001606084018181526080850182815286548084018855968a5298879020945160049096029094019485559151918401919091555160028301555160039091018054945115156101000261ff001992151560ff19909616959095179190911693909317909255805185815291820185905280517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159281900390910190a2505050565b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d8c0154600e909c01549a9c6001600160a01b03909a169b989a979896979596949593949293919290918e565b600f546000906001600160a01b03163314801590611c555750600e546001600160a01b03163314155b8015611c6c57506010546001600160a01b03163314155b611cad576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cb83384846124e7565b50600192915050565b674563918244f40000908190040290565b60215460ff1681565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611d3657600080fd5b505af1158015611d4a573d6000803e3d6000fd5b505050506040513d6020811015611d6057600080fd5b5050336000908152600560205260409020600601548110801590611d8d57506802b5e3af16b18800008110155b8015611da257506802b5e3af16b18800008106155b8015611db8575069010f0cf064dd592000008111155b611df9576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611e023361160c565b611e3d5760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b61153533826128ec565b6013546001600160a01b03163314611e8a576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020600201805460ff1916911515919091179055565b611ec13361160c565b611efc5760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b336000908152600860205260408120805483908110611f1757fe5b60009182526020909120600490910201600381015490915060ff16611f7a576040805162461bcd60e51b815260206004820152601460248201527337b93232b91034b9903737ba1030b1ba34bb329760611b604482015290519081900360640190fd5b6000611f863384611654565b674563918244f400009081900402905080611fd25760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b6000611fdc612170565b33600081815260056020908152604080832060088101805489019055600c0180548801905560078252918290206001908101805488019055825187815291820181905281830152905192935090918291600080516020613581833981519152919081900360600190a360018301805483019055336000908152600560205260408120600d0180548401905581670de0b6b3a764000084028161207a57fe5b600e549190049150612096906001600160a01b031633836124e7565b600e54601e546120ba916001600160a01b0390811691166064600385025b046124e7565b6120c5338484612c22565b60408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050505050565b601e546001600160a01b031681565b60066020526000908152604090205481565b606360209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b60225481565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a7640000028161218957fe5b04905090565b60076020526000908152604090208054600182015460029092015490919060ff1683565b600f546000906001600160a01b03163314612205576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cb88284612578565b6122188261160c565b15612258576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6122618161160c565b6122a8576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6122b0613417565b604051806101e001604052806020548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff811180156122f957600080fd5b50604051908082528060200260200182016040528015612323578160200160208202803683370190505b50815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160225481525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906123fd929190613496565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c090920151600e909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a16968717905586540186555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b03831660009081526062602052604090205481111561250c57600080fd5b6001600160a01b03808416600081815260626020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b0382166125bd5760405162461bcd60e51b815260040180806020018281038252602181526020018061353d6021913960400191505060405180910390fd5b6001600160a01b038216600090815260626020526040902054818110156126155760405162461bcd60e51b815260040180806020018281038252602281526020018061351b6022913960400191505060405180910390fd5b81600354101561266c576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526062602052604090209181900390915560038054919091039055565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461273b576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612736903390612b5f565b612746565b612746336000612b5f565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561277e612170565b9050600061278b84610b11565b6001600160a01b038616600090815260056020908152604080832060060188905560088252808320815160a0810183528981528084018581524293820193845260016060830181815260808401888152855480840187559589529688209351600490950290930193845590519083015591516002820155905160039091018054925115156101000261ff001992151560ff1990941693909317919091169190911790559091505b600581101561288957600e54612881906001600160a01b03166014836005811061285857fe5b01546001600160a01b03166127106019856005811061287357fe5b01548660020202816120b457fe5b600101612832565b50612895858584612e3f565b6128a085858461304b565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461298f576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b0319169286169290921790915561298a903390612b5f565b61299a565b61299a336000612b5f565b6001600160a01b03831660009081526005602081815260408084209092018054860190556007905281208054840190556129d2612170565b905060006129df84610b11565b600b805486019055600f546001600160a01b03166000908152606260205260409020549091508111612a6757600a80546064605a84028190049091018255600f54600e54612a40936001600160a01b039283169392909116919085026120b4565b600f54601054612a62916001600160a01b0390811691166064605a85026120b4565b612a8d565b600a80548290039055601054600e54612a8d916001600160a01b039081169116836124e7565b6001600160a01b038516600090815260056020908152604080832060060187905560088252808320815160a0810183528881528084018581524293820193845260016060830181815260808401828152855480840187559589529688209351600490950290930193845590519083015591516002820155905160039091018054925115156101000261ff001992151560ff1990941693909317919091169190911790555b600581101561288957600e54612b57906001600160a01b03166014836005811061285857fe5b600101612b31565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015612c1c576001600160a01b03821615612c0f578260011415612bc5576001600160a01b0382166000908152600560205260409020600301805460010190555b612bce826132e3565b600d546001600160a01b0383811691161415612be957612c1c565b6001600160a01b0391821660009081526005602052604090206001015490911690612c14565b612c1c565b600101612b81565b50505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612e38576001600160a01b03821615612e2b57604d8160ff1660158110612c6f57fe5b01546001600160a01b03831660009081526006602052604090205410612e05576001600160a01b0382166000908152600560208190526040909120015415612e0557600061271060388360ff1660158110612cc657fe5b0154860281612cd157fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612d2357600080fd5b505afa158015612d37573d6000803e3d6000fd5b505050506040513d6020811015612d4d57600080fd5b505190508015612e025781811015612d63578091505b6001600160a01b038085166000908152600560209081526040808320600b8101805488019055600c0180548701905560079091529020600101805484019055600e54612dbe91168587670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260048183015290516001600160a01b03808a1692908716916000805160206135818339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690612e30565b612e38565b600101612c44565b5050505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612e38576001600160a01b03821615612e2b57604d8160ff1660158110612e8c57fe5b01546001600160a01b03831660009081526006602052604090205410613022576001600160a01b038216600090815260056020819052604090912001541561302257600061271060238360ff1660158110612ee357fe5b0154860281612eee57fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612f4057600080fd5b505afa158015612f54573d6000803e3d6000fd5b505050506040513d6020811015612f6a57600080fd5b50519050801561301f5781811015612f80578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e54612fdb91168587670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716916000805160206135818339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690600101612e61565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff1610156132d8576001600160a01b038616156132cb576001600160a01b038616600090815260066020526040902054600514806130cc57506001600160a01b038616600090815260066020819052604090912054145b156132a5578461311b576001600160a01b038616600090815260066020819052604090912054141561310957600292506001915060059450613116565b6001925060029150600694505b613143565b6001600160a01b03861660009081526006602052604090205485141561314357819250600193505b82156132a557604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf2916024808301926020929190829003018186803b15801561319b57600080fd5b505afa1580156131af573d6000803e3d6000fd5b505050506040513d60208110156131c557600080fd5b50519050801561327a57818110156131db578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546132369116898b670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16916000805160206135818339815191529181900360600190a35b85600114806132965750600d546001600160a01b038981169116145b156132a25750506132d8565b50505b6001600160a01b03958616600090815260056020526040902060010154909516946132d0565b6132d8565b600101613071565b505050505050505050565b6001600160a01b038116600090815260056020908152604080832060028101546007909101546006909352922054600181108015906133225750600681105b156133a457600181016000613336866117ff565b91505060006133468760016118ae565b600084815260096020526040902060010154909150811080159061337b57506000838152600960205260409020600201548210155b1561339c576001600160a01b03871660009081526006602052604090208390555b505050612c1c565b600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a375483108015906133e85750683635c9adc5dea000008210155b80156133f2575080155b15612c1c575050506001600160a01b0316600090815260066020526040902060019055565b604051806101e001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156134eb579160200282015b828111156134eb57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906134b6565b506134f79291506134fb565b5090565b5b808211156134f75780546001600160a01b03191681556001016134fc56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ed37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712a2646970667358221220b1d7aba55863b8c44ef64c45840d8c0ac37ea0c4d679cb6e9de093a934f89dcc64736f6c634300060c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061035d5760003560e01c806358cbcb7c116101d3578063aa3b2d7211610104578063dd62ed3e116100a2578063f4b9fa751161007c578063f4b9fa7514610a80578063f571545b14610a88578063fa96bd9c14610a90578063fcd3533c14610ad65761035d565b8063dd62ed3e14610a24578063de6b8a2e14610a52578063f31a97c714610a785761035d565b8063b6c5feb1116100de578063b6c5feb1146109ab578063b842f3b6146109d9578063b906bf7f146109f6578063d9f01b7d146109fe5761035d565b8063aa3b2d7214610969578063aa4022fc14610986578063b6b55f251461098e5761035d565b80638b49ca1c116101715780639d154deb1161014b5780639d154deb1461086d578063a8365d1614610899578063a87430ba146108a1578063a9059cbb1461093d5761035d565b80638b49ca1c146108555780639351a77a1461085d57806395d89b41146108655761035d565b8063665a11ca116101ad578063665a11ca146107d557806370a08231146107dd57806371c757ec146108035780637fe0c526146108295761035d565b806358cbcb7c146107315780635e23287b1461074e57806360a1cbd71461077a5761035d565b80632280b7a8116102ad5780634420e4861161024b5780634d79348a116102255780634d79348a146106dc5780634e790d7a146106e4578063509222cd14610703578063517999bc146107295761035d565b80634420e486146106885780634bdf3bf2146106ae5780634c0cc366146106d45761035d565b80632f057729116102875780632f057729146106195780632f4f21e214610636578063313ce56714610662578063348d4487146106805761035d565b80632280b7a81461059a578063228b7a2a146105b757806323b872dd146105e35761035d565b80630f3223731161031a57806310dba31c116102f457806310dba31c1461051f57806318160ddd146105645780631c1b87721461056c57806320bdc7c7146105925761035d565b80630f322373146104cc5780631068361f146104d457806310d93101146105025761035d565b806302d05d3f1461036257806302fd7a031461038657806306fdde03146103b5578063095ea7b31461043257806309be8468146104725780630eb7a3d1146104ad575b600080fd5b61036a610b02565b604080516001600160a01b039092168252519081900360200190f35b6103a36004803603602081101561039c57600080fd5b5035610b11565b60408051918252519081900360200190f35b6103bd610b36565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f75781810151838201526020016103df565b50505050905090810190601f1680156104245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61045e6004803603604081101561044857600080fd5b506001600160a01b038135169060200135610bc3565b604080519115158252519081900360200190f35b61048f6004803603602081101561048857600080fd5b5035610c29565b60408051938452602084019290925282820152519081900360600190f35b6104ca600480360360208110156104c357600080fd5b5035610c4a565b005b61036a610c92565b6104ca600480360360408110156104ea57600080fd5b506001600160a01b0381358116916020013516610ca1565b61036a6004803603602081101561051857600080fd5b5035610cf2565b61054b6004803603604081101561053557600080fd5b506001600160a01b038135169060200135610d0f565b6040805192835260208301919091528051918290030190f35b6103a3610d92565b6104ca6004803603602081101561058257600080fd5b50356001600160a01b0316610d98565b6103a3610dfd565b6104ca600480360360208110156105b057600080fd5b5035610e03565b6104ca600480360360408110156105cd57600080fd5b506001600160a01b038135169060200135611252565b61045e600480360360608110156105f957600080fd5b506001600160a01b038135811691602081013590911690604001356112b4565b6104ca6004803603602081101561062f57600080fd5b5035611323565b6104ca6004803603604081101561064c57600080fd5b506001600160a01b03813516906020013561142e565b61066a61151c565b6040805160ff9092168252519081900360200190f35b6103a3611525565b6104ca6004803603602081101561069e57600080fd5b50356001600160a01b031661152b565b6103a3600480360360208110156106c457600080fd5b50356001600160a01b0316611538565b6103a36115aa565b6103a36115b0565b6104ca600480360360208110156106fa57600080fd5b503515156115b6565b61045e6004803603602081101561071957600080fd5b50356001600160a01b031661160c565b61036a611629565b6103a36004803603602081101561074757600080fd5b5035611638565b6103a36004803603604081101561076457600080fd5b506001600160a01b038135169060200135611654565b6107a66004803603604081101561079057600080fd5b506001600160a01b03813516906020013561178f565b604080519586526020860194909452848401929092521515606084015215156080830152519081900360a00190f35b61036a6117de565b6103a3600480360360208110156107f357600080fd5b50356001600160a01b03166117ed565b61054b6004803603602081101561081957600080fd5b50356001600160a01b03166117ff565b6103a36004803603604081101561083f57600080fd5b506001600160a01b0381351690602001356118ae565b61036a611945565b61036a611954565b6103bd611963565b6104ca6004803603604081101561088357600080fd5b506001600160a01b0381351690602001356119bb565b61036a611ba6565b6108c7600480360360208110156108b757600080fd5b50356001600160a01b0316611bb5565b604080519e8f526001600160a01b03909d1660208f01528d8d019b909b5260608d019990995260808c019790975260a08b019590955260c08a019390935260e08901919091526101008801526101208701526101408601526101608501526101808401526101a083015251908190036101c00190f35b61045e6004803603604081101561095357600080fd5b506001600160a01b038135169060200135611c2c565b6103a36004803603602081101561097f57600080fd5b5035611cc1565b61045e611cd2565b6104ca600480360360208110156109a457600080fd5b5035611cdb565b6104ca600480360360408110156109c157600080fd5b506001600160a01b0381351690602001351515611e47565b6104ca600480360360208110156109ef57600080fd5b5035611eb8565b61036a612102565b6103a360048036036020811015610a1457600080fd5b50356001600160a01b0316612111565b6103a360048036036040811015610a3a57600080fd5b506001600160a01b0381358116916020013516612123565b6103a360048036036020811015610a6857600080fd5b50356001600160a01b0316612140565b6103a361215b565b61036a612161565b6103a3612170565b610ab660048036036020811015610aa657600080fd5b50356001600160a01b031661218f565b604080519384526020840192909252151582820152519081900360600190f35b61045e60048036036040811015610aec57600080fd5b50803590602001356001600160a01b03166121b3565b6012546001600160a01b031681565b6000610b1b612170565b82670de0b6b3a76400000281610b2d57fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b505050505081565b3360008181526063602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60096020526000908152604090208054600182015460029092015490919083565b6013546001600160a01b03163314610c8d576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b602255565b6011546001600160a01b031681565b6012546001600160a01b03163314610ce4576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b610cee828261220f565b5050565b60148160058110610cff57fe5b01546001600160a01b0316905081565b6001600160a01b038216600090815260086020526040812080548291829185908110610d3757fe5b90600052602060002090600402019050600061012c8260020154420381610d5a57fe5b6001600160a01b03979097166000908152600560205260409020600e015492549604966103e896909202870295909504945092505050565b60035481565b6013546001600160a01b03163314610ddb576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600c5481565b600f546001600160a01b03163314801590610e295750600e546001600160a01b03163314155b8015610e4057506010546001600160a01b03163314155b610e81576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b33600090815260626020526040812054821115610ee5576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610f175750600c546a084595161401484a000000035b80156110c157808303610f2981611638565b600a805483019055600b8054829003905592506000610f4782611638565b60105490915084820390610f669033906001600160a01b0316856124e7565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610fbb57600080fd5b505af1158015610fcf573d6000803e3d6000fd5b505050506040513d6020811015610fe557600080fd5b505060008054601f546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561104357600080fd5b505af1158015611057573d6000803e3d6000fd5b505050506040513d602081101561106d57600080fd5b5050600c8054850190556110813385612578565b60408051858152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050611213565b6110ca83611638565b600a805485019055600b80548290039055915060006110e884611638565b601054909150838203906111079033906001600160a01b0316876124e7565b600080546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b505060008054601f546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b1580156111e457600080fd5b505af11580156111f8573d6000803e3d6000fd5b505050506040513d602081101561120e57600080fd5b505050505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6013546001600160a01b03163314611295576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b039091166000908152600560205260409020600e0155565b6001600160a01b03831660009081526063602090815260408083203384529091528120548211156112e457600080fd5b6112ef3384846124e7565b506001600160a01b038316600090815260636020908152604080832033845290915290208054829003905560019392505050565b600061132e82610b11565b600e549091506113499033906001600160a01b0316836124e7565b33600090815260056020526040902060060154821080159061137457506802b5e3af16b18800008210155b801561138957506802b5e3af16b18800008206155b801561139f575069010f0cf064dd592000008211155b6113e0576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6113e93361160c565b6114245760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b610cee3383612698565b6001600160a01b038216600090815260056020526040902060060154811080159061146257506802b5e3af16b18800008110155b801561147757506802b5e3af16b18800008106155b801561148d575069010f0cf064dd592000008111155b6114ce576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6114d78261160c565b6115125760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b610cee82826128ec565b60045460ff1681565b60205481565b611535338261220f565b50565b6001600160a01b03811660009081526006602052604081205460051061158157506001600160a01b03811660009081526007602052604090206001810154905460040203610b31565b506001600160a01b03811660009081526007602052604090206001810154905460050203610b31565b600b5481565b600a5481565b6013546001600160a01b031633146115f9576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6021805460ff1916911515919091179055565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a764000061164b612170565b830281610b2d57fe5b6001600160a01b03821660009081526008602052604081208054829182918590811061167c57fe5b906000526020600020906004020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116db57600080fd5b505afa1580156116ef573d6000803e3d6000fd5b505050506040513d602081101561170557600080fd5b50519050801561177557600061012c836002015442038161172257fe5b60018501546001600160a01b038a166000908152600560205260408120600e015487549490930494509290916103e89102840204039050808310156117645750815b801561176e578094505b5050611785565b60038201805460ff191660011790555b5090949350505050565b600860205281600052604060002081815481106117a857fe5b60009182526020909120600490910201805460018201546002830154600390930154919450925060ff8082169161010090041685565b6010546001600160a01b031681565b60626020526000908152604090205481565b600080808080805b6001600160a01b03871660009081526005602052604090206004015481101561189f576001600160a01b0387166000908152600560208190526040822060040180548391908590811061185657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611896578094505b50600101611807565b50919350508290039050915091565b600080805b6001600160a01b03851660009081526005602052604090206004015481101561193d576001600160a01b03851660009081526005602052604081206004018054869260069290918590811061190457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205410611935576001820191505b6001016118b3565b509392505050565b601f546001600160a01b031681565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b6012546001600160a01b031633146119fe576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154611aa1576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155611a9c908490612b5f565b611aac565b611aac836000612b5f565b6001600160a01b038316600081815260056020818152604080842092830180548801905560078252808420805488019055600690920186905560088152818320825160a081018452878152808301858152428286019081526001606084018181526080850182815286548084018855968a5298879020945160049096029094019485559151918401919091555160028301555160039091018054945115156101000261ff001992151560ff19909616959095179190911693909317909255805185815291820185905280517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159281900390910190a2505050565b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d8c0154600e909c01549a9c6001600160a01b03909a169b989a979896979596949593949293919290918e565b600f546000906001600160a01b03163314801590611c555750600e546001600160a01b03163314155b8015611c6c57506010546001600160a01b03163314155b611cad576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cb83384846124e7565b50600192915050565b674563918244f40000908190040290565b60215460ff1681565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611d3657600080fd5b505af1158015611d4a573d6000803e3d6000fd5b505050506040513d6020811015611d6057600080fd5b5050336000908152600560205260409020600601548110801590611d8d57506802b5e3af16b18800008110155b8015611da257506802b5e3af16b18800008106155b8015611db8575069010f0cf064dd592000008111155b611df9576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611e023361160c565b611e3d5760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b61153533826128ec565b6013546001600160a01b03163314611e8a576040805162461bcd60e51b81526020600482015260016024820152606560f81b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020600201805460ff1916911515919091179055565b611ec13361160c565b611efc5760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b336000908152600860205260408120805483908110611f1757fe5b60009182526020909120600490910201600381015490915060ff16611f7a576040805162461bcd60e51b815260206004820152601460248201527337b93232b91034b9903737ba1030b1ba34bb329760611b604482015290519081900360640190fd5b6000611f863384611654565b674563918244f400009081900402905080611fd25760405162461bcd60e51b815260040180806020018281038252602381526020018061355e6023913960400191505060405180910390fd5b6000611fdc612170565b33600081815260056020908152604080832060088101805489019055600c0180548801905560078252918290206001908101805488019055825187815291820181905281830152905192935090918291600080516020613581833981519152919081900360600190a360018301805483019055336000908152600560205260408120600d0180548401905581670de0b6b3a764000084028161207a57fe5b600e549190049150612096906001600160a01b031633836124e7565b600e54601e546120ba916001600160a01b0390811691166064600385025b046124e7565b6120c5338484612c22565b60408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25050505050565b601e546001600160a01b031681565b60066020526000908152604090205481565b606360209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b60225481565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a7640000028161218957fe5b04905090565b60076020526000908152604090208054600182015460029092015490919060ff1683565b600f546000906001600160a01b03163314612205576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611cb88284612578565b6122188261160c565b15612258576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6122618161160c565b6122a8576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6122b0613417565b604051806101e001604052806020548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff811180156122f957600080fd5b50604051908082528060200260200182016040528015612323578160200160208202803683370190505b50815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160225481525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906123fd929190613496565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c090920151600e909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a16968717905586540186555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b03831660009081526062602052604090205481111561250c57600080fd5b6001600160a01b03808416600081815260626020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b0382166125bd5760405162461bcd60e51b815260040180806020018281038252602181526020018061353d6021913960400191505060405180910390fd5b6001600160a01b038216600090815260626020526040902054818110156126155760405162461bcd60e51b815260040180806020018281038252602281526020018061351b6022913960400191505060405180910390fd5b81600354101561266c576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b0390921660009081526062602052604090209181900390915560038054919091039055565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461273b576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612736903390612b5f565b612746565b612746336000612b5f565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561277e612170565b9050600061278b84610b11565b6001600160a01b038616600090815260056020908152604080832060060188905560088252808320815160a0810183528981528084018581524293820193845260016060830181815260808401888152855480840187559589529688209351600490950290930193845590519083015591516002820155905160039091018054925115156101000261ff001992151560ff1990941693909317919091169190911790559091505b600581101561288957600e54612881906001600160a01b03166014836005811061285857fe5b01546001600160a01b03166127106019856005811061287357fe5b01548660020202816120b457fe5b600101612832565b50612895858584612e3f565b6128a085858461304b565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461298f576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b0319169286169290921790915561298a903390612b5f565b61299a565b61299a336000612b5f565b6001600160a01b03831660009081526005602081815260408084209092018054860190556007905281208054840190556129d2612170565b905060006129df84610b11565b600b805486019055600f546001600160a01b03166000908152606260205260409020549091508111612a6757600a80546064605a84028190049091018255600f54600e54612a40936001600160a01b039283169392909116919085026120b4565b600f54601054612a62916001600160a01b0390811691166064605a85026120b4565b612a8d565b600a80548290039055601054600e54612a8d916001600160a01b039081169116836124e7565b6001600160a01b038516600090815260056020908152604080832060060187905560088252808320815160a0810183528881528084018581524293820193845260016060830181815260808401828152855480840187559589529688209351600490950290930193845590519083015591516002820155905160039091018054925115156101000261ff001992151560ff1990941693909317919091169190911790555b600581101561288957600e54612b57906001600160a01b03166014836005811061285857fe5b600101612b31565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015612c1c576001600160a01b03821615612c0f578260011415612bc5576001600160a01b0382166000908152600560205260409020600301805460010190555b612bce826132e3565b600d546001600160a01b0383811691161415612be957612c1c565b6001600160a01b0391821660009081526005602052604090206001015490911690612c14565b612c1c565b600101612b81565b50505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612e38576001600160a01b03821615612e2b57604d8160ff1660158110612c6f57fe5b01546001600160a01b03831660009081526006602052604090205410612e05576001600160a01b0382166000908152600560208190526040909120015415612e0557600061271060388360ff1660158110612cc657fe5b0154860281612cd157fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612d2357600080fd5b505afa158015612d37573d6000803e3d6000fd5b505050506040513d6020811015612d4d57600080fd5b505190508015612e025781811015612d63578091505b6001600160a01b038085166000908152600560209081526040808320600b8101805488019055600c0180548701905560079091529020600101805484019055600e54612dbe91168587670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260048183015290516001600160a01b03808a1692908716916000805160206135818339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690612e30565b612e38565b600101612c44565b5050505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612e38576001600160a01b03821615612e2b57604d8160ff1660158110612e8c57fe5b01546001600160a01b03831660009081526006602052604090205410613022576001600160a01b038216600090815260056020819052604090912001541561302257600061271060238360ff1660158110612ee357fe5b0154860281612eee57fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612f4057600080fd5b505afa158015612f54573d6000803e3d6000fd5b505050506040513d6020811015612f6a57600080fd5b50519050801561301f5781811015612f80578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e54612fdb91168587670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716916000805160206135818339815191529181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690600101612e61565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff1610156132d8576001600160a01b038616156132cb576001600160a01b038616600090815260066020526040902054600514806130cc57506001600160a01b038616600090815260066020819052604090912054145b156132a5578461311b576001600160a01b038616600090815260066020819052604090912054141561310957600292506001915060059450613116565b6001925060029150600694505b613143565b6001600160a01b03861660009081526006602052604090205485141561314357819250600193505b82156132a557604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf2916024808301926020929190829003018186803b15801561319b57600080fd5b505afa1580156131af573d6000803e3d6000fd5b505050506040513d60208110156131c557600080fd5b50519050801561327a57818110156131db578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546132369116898b670de0b6b3a76400008602816120b457fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16916000805160206135818339815191529181900360600190a35b85600114806132965750600d546001600160a01b038981169116145b156132a25750506132d8565b50505b6001600160a01b03958616600090815260056020526040902060010154909516946132d0565b6132d8565b600101613071565b505050505050505050565b6001600160a01b038116600090815260056020908152604080832060028101546007909101546006909352922054600181108015906133225750600681105b156133a457600181016000613336866117ff565b91505060006133468760016118ae565b600084815260096020526040902060010154909150811080159061337b57506000838152600960205260409020600201548210155b1561339c576001600160a01b03871660009081526006602052604090208390555b505050612c1c565b600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a375483108015906133e85750683635c9adc5dea000008210155b80156133f2575080155b15612c1c575050506001600160a01b0316600090815260066020526040902060019055565b604051806101e001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156134eb579160200282015b828111156134eb57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906134b6565b506134f79291506134fb565b5090565b5b808211156134f75780546001600160a01b03191681556001016134fc56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ed37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712a2646970667358221220b1d7aba55863b8c44ef64c45840d8c0ac37ea0c4d679cb6e9de093a934f89dcc64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

-----Decoded View---------------
Arg [0] : _daiAddr (address): 0x567C50F9571EC31eFC9C02d3B9a7510195A9976F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f


Deployed Bytecode Sourcemap

743:27613:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2780:22;;;:::i;:::-;;;;-1:-1:-1;;;;;2780:22:0;;;;;;;;;;;;;;19679:134;;;;;;;;;;;;;;;;-1:-1:-1;19679:134:0;;:::i;:::-;;;;;;;;;;;;;;;;788:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24824:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24824:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2126:36;;;;;;;;;;;;;;;;-1:-1:-1;2126:36:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;27548:139;;;;;;;;;;;;;;;;-1:-1:-1;27548:139:0;;:::i;:::-;;2706:67;;;:::i;26003:154::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26003:154:0;;;;;;;;;;:::i;2837:244::-;;;;;;;;;;;;;;;;-1:-1:-1;2837:244:0;;:::i;27982:370::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27982:370:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;856:43;;;:::i;27118:98::-;;;;;;;;;;;;;;;;-1:-1:-1;27118:98:0;-1:-1:-1;;;;;27118:98:0;;:::i;2362:25::-;;;:::i;22645:1639::-;;;;;;;;;;;;;;;;-1:-1:-1;22645:1639:0;;:::i;27222:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27222:162:0;;;;;;;;:::i;25050:274::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25050:274:0;;;;;;;;;;;;;;;;;:::i;8634:440::-;;;;;;;;;;;;;;;;-1:-1:-1;8634:440:0;;:::i;8271:357::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8271:357:0;;;;;;;;:::i;925:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3303;;;:::i;6753:121::-;;;;;;;;;;;;;;;;-1:-1:-1;6753:121:0;-1:-1:-1;;;;;6753:121:0;;:::i;20094:304::-;;;;;;;;;;;;;;;;-1:-1:-1;20094:304:0;-1:-1:-1;;;;;20094:304:0;;:::i;2317:38::-;;;:::i;2270:40::-;;;:::i;27693:122::-;;;;;;;;;;;;;;;;-1:-1:-1;27693:122:0;;;;:::i;20404:110::-;;;;;;;;;;;;;;;;-1:-1:-1;20404:110:0;-1:-1:-1;;;;;20404:110:0;;:::i;2394:61::-;;;:::i;19819:126::-;;;;;;;;;;;;;;;;-1:-1:-1;19819:126:0;;:::i;20652:852::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20652:852:0;;;;;;;;:::i;2070:49::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2070:49:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2628:71;;;:::i;4451:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4451:44:0;-1:-1:-1;;;;;4451:44:0;;:::i;18231:561::-;;;;;;;;;;;;;;;;-1:-1:-1;18231:561:0;-1:-1:-1;;;;;18231:561:0;;:::i;18798:357::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18798:357:0;;;;;;;;:::i;3221:75::-;;;:::i;2547:70::-;;;:::i;821:28::-;;;:::i;26163:943::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26163:943:0;;;;;;;;:::i;2462:78::-;;;:::i;1916:37::-;;;;;;;;;;;;;;;;-1:-1:-1;1916:37:0;-1:-1:-1;;;;;1916:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1916:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24290:281;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24290:281:0;;;;;;;;:::i;27821:155::-;;;;;;;;;;;;;;;;-1:-1:-1;27821:155:0;;:::i;3482:22::-;;;:::i;7877:388::-;;;;;;;;;;;;;;;;-1:-1:-1;7877:388:0;;:::i;27390:152::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27390:152:0;;;;;;;;;;:::i;21510:1129::-;;;;;;;;;;;;;;;;-1:-1:-1;21510:1129:0;;:::i;3145:69::-;;;:::i;1960:45::-;;;;;;;;;;;;;;;;-1:-1:-1;1960:45:0;-1:-1:-1;;;;;1960:45:0;;:::i;4502:64::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4502:64:0;;;;;;;;;;:::i;20524:120::-;;;;;;;;;;;;;;;;-1:-1:-1;20524:120:0;-1:-1:-1;;;;;20524:120:0;;:::i;3511:36::-;;;:::i;764:17::-;;;:::i;19957:131::-;;;:::i;2012:51::-;;;;;;;;;;;;;;;;-1:-1:-1;2012:51:0;-1:-1:-1;;;;;2012:51:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25336:199;;;;;;;;;;;;;;;;-1:-1:-1;25336:199:0;;;;;;-1:-1:-1;;;;;25336:199:0;;:::i;2780:22::-;;;-1:-1:-1;;;;;2780:22:0;;:::o;19679:134::-;19741:7;19789:10;:8;:10::i;:::-;19773;19784:4;19773:15;:26;;;;;;19766:33;;19679:134;;;;:::o;788:26::-;;;;;;;;;;;;;;;-1:-1:-1;;788:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24824:216::-;24926:10;24891:12;24916:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;24916:31:0;;;;;;;;;;;:40;;;24972:38;;;;;;;24891:12;;24916:31;;24926:10;;24972:38;;;;;;;;-1:-1:-1;25028:4:0;24824:216;;;;:::o;2126:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27548:139::-;4641:5;;-1:-1:-1;;;;;4641:5:0;4627:10;:19;4619:33;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;;;;27643:17:::1;:36:::0;27548:139::o;2706:67::-;;;-1:-1:-1;;;;;2706:67:0;;:::o;26003:154::-;4741:7;;-1:-1:-1;;;;;4741:7:0;4727:10;:21;4719:35;;;;;-1:-1:-1;;;4719:35:0;;;;;;;;;;;;-1:-1:-1;;;4719:35:0;;;;;;;;;;;;;;;26107:42:::1;26120:11;26133:15;26107:12;:42::i;:::-;26003:154:::0;;:::o;2837:244::-;;;;;;;;;;;;-1:-1:-1;;;;;2837:244:0;;-1:-1:-1;2837:244:0;:::o;27982:370::-;-1:-1:-1;;;;;28107:17:0;;28056:4;28107:17;;;:10;:17;;;;;:30;;28056:4;;;;28125:11;;28107:30;;;;;;;;;;;;;;;;28081:56;;28148:11;3417:4;28177:5;:18;;;28161:15;:34;28160:52;;;;;-1:-1:-1;;;;;28259:12:0;;;;28223:19;28259:12;;;:5;:12;;;;;:30;;;28246:12;;28160:52;;;28300:4;28246:43;;;;28245:52;;:59;;;;;-1:-1:-1;28325:6:0;-1:-1:-1;;;27982:370:0:o;856:43::-;;;;:::o;27118:98::-;4641:5;;-1:-1:-1;;;;;4641:5:0;4627:10;:19;4619:33;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;;;;27192:7:::1;:16:::0;;-1:-1:-1;;;;;;27192:16:0::1;-1:-1:-1::0;;;;;27192:16:0;;;::::1;::::0;;;::::1;::::0;;27118:98::o;2362:25::-;;;;:::o;22645:1639::-;22731:12;;-1:-1:-1;;;;;22731:12:0;22717:10;:26;;;;:64;;-1:-1:-1;22761:20:0;;-1:-1:-1;;;;;22761:20:0;22747:10;:34;;22717:64;:95;;;;-1:-1:-1;22799:13:0;;-1:-1:-1;;;;;22799:13:0;22785:10;:27;;22717:95;22709:120;;;;;-1:-1:-1;;;22709:120:0;;;;;;;;;;;;-1:-1:-1;;;22709:120:0;;;;;;;;;;;;;;;22875:10;22840:12;22865:21;;;:9;:21;;;;;;:35;-1:-1:-1;22865:35:0;22857:75;;;;;-1:-1:-1;;;22857:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22995:10;;22977:3;22975:1;22962:14;;:18;;23017:11;22995:20;;;22994:34;22991:97;;;-1:-1:-1;23066:10:0;;23054:11;:22;22991:97;23101:11;;23098:1129;;23154:22;;;23197:25;23154:22;23197:12;:25::i;:::-;23237;:38;;;;;;23290:23;:29;;;;;;;23192:30;-1:-1:-1;23237:25:0;23353;23264:11;23353:12;:25::i;:::-;23467:13;;23334:44;;-1:-1:-1;23416:15:0;;;;23446:47;;23456:10;;-1:-1:-1;;;;;23467:13:0;23481:11;23446:9;:47::i;:::-;23508:3;;;:36;;;-1:-1:-1;;;23508:36:0;;23521:10;23508:36;;;;;;;;;;;;-1:-1:-1;;;;;23508:3:0;;;;:12;;:36;;;;;;;;;;;;;;;;;:3;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23560:3:0;;;23573:17;;23560:47;;;-1:-1:-1;;;23560:47:0;;-1:-1:-1;;;;;23573:17:0;;;23560:47;;;;;;;;;;;;:3;;;;;:12;;:47;;;;;23508:36;;23560:47;;;;;;;;;;;:3;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23623:10:0;:21;;;;;;23659:27;23665:10;23635:9;23659:5;:27::i;:::-;23706:42;;;;;;;;23734:1;;23715:10;;23706:42;;;;;;;;;23098:1129;;;;;;23795:26;23808:12;23795;:26::i;:::-;23836:25;:39;;;;;;23890:23;:29;;;;;;;23790:31;-1:-1:-1;23836:25:0;23953:26;23863:12;23953;:26::i;:::-;24068:13;;23934:45;;-1:-1:-1;24017:15:0;;;;24047:48;;24057:10;;-1:-1:-1;;;;;24068:13:0;24082:12;24047:9;:48::i;:::-;24110:3;;;:30;;;-1:-1:-1;;;24110:30:0;;24123:10;24110:30;;;;;;;;;;;;-1:-1:-1;;;;;24110:3:0;;;;:12;;:30;;;;;;;;;;;;;;;;;:3;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24158:3:0;;;24171:17;;24158:47;;;-1:-1:-1;;;24158:47:0;;-1:-1:-1;;;;;24171:17:0;;;24158:47;;;;;;;;;;;;:3;;;;;:12;;:47;;;;;24110:30;;24158:47;;;;;;;;;;;:3;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;23098:1129:0;24242:34;;;;;;;;;;;;;;24247:10;;24242:34;;;;;;;;22645:1639;;;:::o;27222:162::-;4641:5;;-1:-1:-1;;;;;4641:5:0;4627:10;:19;4619:33;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27327:12:0;;::::1;;::::0;;;:5:::1;:12;::::0;;;;:30:::1;;:49:::0;27222:162::o;25050:274::-;-1:-1:-1;;;;;25173:16:0;;25130:12;25173:16;;;:9;:16;;;;;;;;25190:10;25173:28;;;;;;;;25163:38;;;25155:47;;;;;;25213:32;25223:10;25234:3;25238:6;25213:9;:32::i;:::-;-1:-1:-1;;;;;;25256:16:0;;;;;;:9;:16;;;;;;;;25273:10;25256:28;;;;;;;:38;;;;;;;-1:-1:-1;25050:274:0;;;;;:::o;8634:440::-;8691:14;8706:21;8719:7;8706:12;:21::i;:::-;8759:20;;8691:36;;-1:-1:-1;8738:49:0;;8748:10;;-1:-1:-1;;;;;8759:20:0;8691:36;8738:9;:49::i;:::-;8823:10;8817:17;;;;:5;:17;;;;;:29;;;8806:40;;;;;:65;;;2207:5;8850:7;:21;;8806:65;:92;;;;-1:-1:-1;2207:5:0;8875:7;:18;:23;8806:92;:117;;;;;2256:7;8902;:21;;8806:117;8798:143;;;;;-1:-1:-1;;;8798:143:0;;;;;;;;;;;;-1:-1:-1;;;8798:143:0;;;;;;;;;;;;;;;8960:24;8973:10;8960:12;:24::i;:::-;8952:72;;;;-1:-1:-1;;;8952:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9035:31;9047:10;9058:7;9035:11;:31::i;8271:357::-;-1:-1:-1;;;;;8368:19:0;;;;;;:5;:19;;;;;:31;;;8357:42;;;;;:67;;;2207:5;8403:7;:21;;8357:67;:94;;;;-1:-1:-1;2207:5:0;8428:7;:18;:23;8357:94;:119;;;;;2256:7;8455;:21;;8357:119;8349:145;;;;;-1:-1:-1;;;8349:145:0;;;;;;;;;;;;-1:-1:-1;;;8349:145:0;;;;;;;;;;;;;;;8513:26;8526:12;8513;:26::i;:::-;8505:74;;;;-1:-1:-1;;;8505:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8590:30;8599:12;8612:7;8590:8;:30::i;925:26::-;;;;;;:::o;3303:::-;;;;:::o;6753:121::-;6825:41;6838:10;6850:15;6825:12;:41::i;:::-;6753:121;:::o;20094:304::-;-1:-1:-1;;;;;20173:16:0;;20150:7;20173:16;;;:9;:16;;;;;:21;20196:1;-1:-1:-1;20170:220:0;;-1:-1:-1;;;;;;20255:19:0;;;;;;:12;:19;;;;;:30;;;;20220:32;;20253:1;20220:34;:65;20212:74;;20170:220;-1:-1:-1;;;;;;20359:19:0;;;;;;:12;:19;;;;;:30;;;;20324:32;;20357:1;20324:34;:65;20316:74;;2317:38;;;;:::o;2270:40::-;;;;:::o;27693:122::-;4641:5;;-1:-1:-1;;;;;4641:5:0;4627:10;:19;4619:33;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;;;;27785:10:::1;:22:::0;;-1:-1:-1;;27785:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27693:122::o;20404:110::-;-1:-1:-1;;;;;20486:11:0;20461:4;20486:11;;;:5;:11;;;;;:14;:19;;;20404:110::o;2394:61::-;;;-1:-1:-1;;;;;2394:61:0;;:::o;19819:126::-;19880:4;19933;19922:10;:8;:10::i;:::-;19909:12;:23;:28;;;;20652:852;-1:-1:-1;;;;;20799:17:0;;20722:7;20799:17;;;:10;:17;;;;;:30;;20722:7;;;;20817:11;;20799:30;;;;;;;;;;;;;;;;20773:56;;20840:25;20868:4;-1:-1:-1;;;;;20868:16:0;;20885:5;20868:23;;;;;;;;;;;;;-1:-1:-1;;;;;20868:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20868:23:0;;-1:-1:-1;20918:19:0;;20915:562;;20963:11;3417:4;20992:5;:18;;;20976:15;:34;20975:52;;;;;21125:18;;;;-1:-1:-1;;;;;21078:12:0;;21042:19;21078:12;;;:5;:12;;;;;:30;;;21065:12;;20975:52;;;;;-1:-1:-1;21042:19:0;21125:18;;21119:4;;21065:43;21064:52;;:59;21063:80;21042:101;;21180:11;21162:17;:29;21159:127;;;-1:-1:-1;21225:17:0;21159:127;21303:13;;21300:85;;21358:11;21351:18;;21300:85;20915:562;;;;;21446:14;;;:19;;-1:-1:-1;;21446:19:0;21461:4;21446:19;;;20915:562;-1:-1:-1;21489:6:0;;20652:852;-1:-1:-1;;;;20652:852:0:o;2070:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2070:49:0;-1:-1:-1;2070:49:0;;;;;;;;;;:::o;2628:71::-;;;-1:-1:-1;;;;;2628:71:0;;:::o;4451:44::-;;;;;;;;;;;;;:::o;18231:561::-;18288:7;;;;;;18406:302;-1:-1:-1;;;;;18429:12:0;;;;;;:5;:12;;;;;:22;;:29;18425:33;;18406:302;;;-1:-1:-1;;;;;18508:12:0;;18479:21;18508:12;;;18502:5;18508:12;;;;;;;:22;;:25;;18479:21;;18508:22;18531:1;;18508:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18508:25:0;18502:32;;;;;;;;;;;;:42;;;18573:24;;;18508:25;18573:24;;;;18502:44;;-1:-1:-1;18615:23:0;;;18612:85;;;18668:13;18658:23;;18612:85;-1:-1:-1;18460:3:0;;18406:302;;;-1:-1:-1;18740:7:0;;-1:-1:-1;;18730:17:0;;;;-1:-1:-1;18231:561:0;;;:::o;18798:357::-;18868:7;;;18928:190;-1:-1:-1;;;;;18951:12:0;;;;;;:5;:12;;;;;:22;;:29;18947:33;;18928:190;;;-1:-1:-1;;;;;19014:12:0;;19004:36;19014:12;;;:5;:12;;;;;:22;;:25;;19049:5;;19004:9;;:36;;19037:1;;19014:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19014:25:0;19004:36;;;;;;;;;;;;:41;:50;19001:106;;19090:1;19074:17;;;;19001:106;18982:3;;18928:190;;;-1:-1:-1;19135:12:0;18798:357;-1:-1:-1;;;18798:357:0:o;3221:75::-;;;-1:-1:-1;;;;;3221:75:0;;:::o;2547:70::-;;;-1:-1:-1;;;;;2547:70:0;;:::o;821:28::-;;;;;;;;;;;;;;-1:-1:-1;;821:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26163:943;4741:7;;-1:-1:-1;;;;;4741:7:0;4727:10;:21;4719:35;;;;;-1:-1:-1;;;4719:35:0;;;;;;;;;;;;-1:-1:-1;;;4719:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26290:18:0;;::::1;26265:23;26290:18:::0;;;:5:::1;:18;::::0;;;;;;;:27:::1;::::0;::::1;::::0;;;::::1;26328:22:::0;;;;;;:37:::1;;:46:::0;;;::::1;::::0;;26396:18;;;;:31;;;::::1;::::0;26393:315:::1;;-1:-1:-1::0;;;;;26464:22:0;;::::1;;::::0;;;:5:::1;:22;::::0;;;;;;:36:::1;::::0;::::1;:38:::0;;::::1;::::0;;::::1;::::0;;;26517:32:::1;::::0;;::::1;:50:::0;;;;::::1;::::0;;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;26517:50:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;26594:29:::1;::::0;26517:50;;26594:14:::1;:29::i;:::-;26393:315;;;26667:29;26682:11;26694:1;26667:14;:29::i;:::-;-1:-1:-1::0;;;;;26718:18:0;::::1;;::::0;;;:5:::1;:18;::::0;;;;;;;:31;;::::1;:41:::0;;;::::1;::::0;;26771:12:::1;:25:::0;;;;;:48;;;::::1;::::0;;26836:30:::1;::::0;;::::1;:38:::0;;;26885:10:::1;:23:::0;;;;;26914:114;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;26963:15:::1;26914:114:::0;;;;;;-1:-1:-1;26914:114:0;;;;;;;;;;;;26885:144;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;26885:144:0;::::1;;-1:-1:-1::0;;26885:144:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;27052:36;;;;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;4765:1;26163:943:::0;;:::o;2462:78::-;;;-1:-1:-1;;;;;2462:78:0;;:::o;1916:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1916:37:0;;;;;;;;;;;;;;;;;;;;;;;:::o;24290:281::-;24400:12;;24353;;-1:-1:-1;;;;;24400:12:0;24386:10;:26;;;;:64;;-1:-1:-1;24430:20:0;;-1:-1:-1;;;;;24430:20:0;24416:10;:34;;24386:64;:95;;;;-1:-1:-1;24468:13:0;;-1:-1:-1;;;;;24468:13:0;24454:10;:27;;24386:95;24378:120;;;;;-1:-1:-1;;;24378:120:0;;;;;;;;;;;;-1:-1:-1;;;24378:120:0;;;;;;;;;;;;;;;24509:32;24519:10;24530:3;24534:6;24509:9;:32::i;:::-;-1:-1:-1;24559:4:0;24290:281;;;;:::o;27821:155::-;27929:4;27917:16;;;;27912:27;;27821:155::o;3482:22::-;;;;;;:::o;7877:388::-;7931:3;;;:50;;;-1:-1:-1;;;7931:50:0;;7948:10;7931:50;;;;7967:4;7931:50;;;;;;;;;;;;-1:-1:-1;;;;;7931:3:0;;;;:16;;:50;;;;;;;;;;;;;;;;;:3;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8017:10:0;8011:17;;;;:5;7931:50;8011:17;;;;:29;;;8000:40;;;;;:65;;;2207:5;8044:7;:21;;8000:65;:92;;;;-1:-1:-1;2207:5:0;8069:7;:18;:23;8000:92;:117;;;;;2256:7;8096;:21;;8000:117;7992:143;;;;;-1:-1:-1;;;7992:143:0;;;;;;;;;;;;-1:-1:-1;;;7992:143:0;;;;;;;;;;;;;;;8154:24;8167:10;8154:12;:24::i;:::-;8146:72;;;;-1:-1:-1;;;8146:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8229:28;8238:10;8249:7;8229:8;:28::i;27390:152::-;4641:5;;-1:-1:-1;;;;;4641:5:0;4627:10;:19;4619:33;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;-1:-1:-1;;;4619:33:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27492:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:30:::1;;:42:::0;;-1:-1:-1;;27492:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27390:152::o;21510:1129::-;21583:24;21596:10;21583:12;:24::i;:::-;21575:72;;;;-1:-1:-1;;;21575:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21689:10;21652:23;21678:22;;;:10;:22;;;;;:35;;21701:11;;21678:35;;;;;;;;;;;;;;;;;;;21732:14;;;;21678:35;;-1:-1:-1;21732:14:0;;21724:47;;;;;-1:-1:-1;;;21724:47:0;;;;;;;;;;;;-1:-1:-1;;;21724:47:0;;;;;;;;;;;;;;;21783:19;21804:37;21818:10;21829:11;21804:13;:37::i;:::-;21881:4;21869:16;;;;21864:27;;-1:-1:-1;21910:13:0;21902:61;;;;-1:-1:-1;;;21902:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21974:13;21988:10;:8;:10::i;:::-;22009;22003:17;;;;:5;:17;;;;;;;;:24;;;:38;;;;;;22046:29;;:43;;;;;;22100:12;:24;;;;;;-1:-1:-1;22100:35:0;;;:49;;;;;;22165:50;;;;;;;;;;;;;;;;;21974:24;;-1:-1:-1;22009:10:0;;;;-1:-1:-1;;;;;;;;;;;22165:50:0;;;;;;;;;22226:18;;;:31;;;;;;22288:10;22226:18;22282:17;;;:5;:17;;;;;:31;;:44;;;;;;22370:5;22365:4;22353:16;;22370:5;22353:22;;;;22396:20;;22353:22;;;;-1:-1:-1;22386:50:0;;-1:-1:-1;;;;;22396:20:0;22417:10;22353:22;22386:9;:50::i;:::-;22457:20;;22478:11;;22447:57;;-1:-1:-1;;;;;22457:20:0;;;;22478:11;22500:3;22498:1;22490:9;;:13;;22447:9;:57::i;:::-;22515:54;22540:10;22551:11;22563:5;22515:24;:54::i;:::-;22599:32;;;;;;;;22608:10;;22599:32;;;;;;;;;;21510:1129;;;;;:::o;3145:69::-;;;-1:-1:-1;;;;;3145:69:0;;:::o;1960:45::-;;;;;;;;;;;;;:::o;4502:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20524:120::-;-1:-1:-1;;;;;20612:17:0;20585:7;20612:17;;;:10;:17;;;;;:24;;20524:120::o;3511:36::-;;;;:::o;764:17::-;;;-1:-1:-1;;;;;764:17:0;;:::o;19957:131::-;19997:4;20055:25;;20026:23;;20050:4;20026:28;:54;;;;;;20019:61;;19957:131;:::o;2012:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25336:199::-;25433:12;;25398:4;;-1:-1:-1;;;;;25433:12:0;25419:10;:26;25415:58;;25448:23;;;-1:-1:-1;;;25448:23:0;;;;;;;;;;;;-1:-1:-1;;;25448:23:0;;;;;;;;;;;;;;25415:58;25483:22;25489:7;25498:6;25483:5;:22::i;6880:991::-;6976:25;6989:11;6976:12;:25::i;:::-;6975:26;6967:50;;;;;-1:-1:-1;;;6967:50:0;;;;;;;;;;;;-1:-1:-1;;;6967:50:0;;;;;;;;;;;;;;;7036:29;7049:15;7036:12;:29::i;:::-;7028:61;;;;;-1:-1:-1;;;7028:61:0;;;;;;;;;;;;-1:-1:-1;;;7028:61:0;;;;;;;;;;;;;;;7100:16;;:::i;:::-;7119:505;;;;;;;;7143:10;;7119:505;;;;7190:15;-1:-1:-1;;;;;7119:505:0;;;;;7235:1;7119:505;;;;7262:1;7119:505;;;;7302:1;7288:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7288:16:0;;7119:505;;;;7363:1;7119:505;;;;7391:1;7119:505;;;;7334:1;7119:505;;;;7414:1;7119:505;;;;7442:1;7119:505;;;;7472:1;7119:505;;;;7503:1;7119:505;;;;7531:1;7119:505;;;;7561:1;7119:505;;;;7595:17;;7119:505;;;7100:524;;7664:4;7643:5;:18;7649:11;-1:-1:-1;;;;;7643:18:0;-1:-1:-1;;;;;7643:18:0;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7643:25:0;;;;;-1:-1:-1;;;;;7643:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7643:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7679:18:0;;;-1:-1:-1;7679:18:0;;;;;;;;;;;:27;;;;:45;;-1:-1:-1;;;;;;7679:45:0;;;;;;;;;7735:12;;;;;7814:21;7837:22;;;;;;;:25;7771:92;;;;;;;7814:21;;7771:92;;;;;;;;;6880:991;;;:::o;24577:241::-;-1:-1:-1;;;;;24667:16:0;;;;;;:9;:16;;;;;;:26;-1:-1:-1;24667:26:0;24659:35;;;;;;-1:-1:-1;;;;;24705:16:0;;;;;;;:9;:16;;;;;;;;:26;;;;;;;24742:14;;;;;;;;;;:24;;;;;;24782:28;;;;;;;24742:14;;24782:28;;;;;;;;;;;24577:241;;;:::o;25541:456::-;-1:-1:-1;;;;;25631:21:0;;25623:67;;;;-1:-1:-1;;;25623:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25726:18:0;;25701:22;25726:18;;;:9;:18;;;;;;25763:24;;;;25755:71;;;;-1:-1:-1;;;25755:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25858:6;25845:11;;:19;;25837:57;;;;;-1:-1:-1;;;25837:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25905:18:0;;;;;;;:9;:18;;;;;25926:23;;;;25905:44;;;25968:11;:21;;;;;;;;25541:456::o;10823:1281::-;-1:-1:-1;;;;;10943:18:0;;;10918:23;10943:18;;;:5;:18;;;;;;;;:27;;;;;;;10981:22;;;;;;:37;;:46;;;;;;11049:18;;;;:31;;;;;11046:301;;-1:-1:-1;;;;;11117:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;11170:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11170:50:0;;;;;;;;;;;11235:28;;11250:10;;11235:14;:28::i;:::-;11046:301;;;11307:28;11322:10;11333:1;11307:14;:28::i;:::-;-1:-1:-1;;;;;11357:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;11410:12;:25;;;;:48;;;;;;11485:10;:8;:10::i;:::-;11471:24;;11514:14;11529:21;11542:7;11529:12;:21::i;:::-;-1:-1:-1;;;;;11563:18:0;;;;;;:5;:18;;;;;;;;:30;;:38;;;11612:10;:23;;;;;11641:115;;;;;;;;;;;;;;;;11690:15;11641:115;;;;;;11721:4;11641:115;;;;;;;;;;;;11612:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11612:145:0;;;-1:-1:-1;;11612:145:0;;;;;;;;;;;;;;;;;11514:36;;-1:-1:-1;11768:134:0;11783:1;11781;:3;11768:134;;;11824:20;;11814:75;;-1:-1:-1;;;;;11824:20:0;11845:9;11855:1;11845:12;;;;;;;;;-1:-1:-1;;;;;11845:12:0;11883:5;11868:11;11880:1;11868:14;;;;;;;;;11859:6;11866:1;11859:8;:23;:29;;;;11814:75;11785:3;;11768:134;;;;11913:49;11936:11;11948:7;11956:5;11913:22;:49::i;:::-;11974:51;11999:11;12011:7;12019:5;11974:24;:51::i;:::-;12049:37;;;;;;12084:1;12077:8;;12049:37;;;;;;-1:-1:-1;;;;;12049:37:0;;;;;;;;;;;10823:1281;;;;;:::o;9091:1726::-;-1:-1:-1;;;;;9208:18:0;;;9183:23;9208:18;;;:5;:18;;;;;;;;:27;;;;;;;9246:22;;;;;;:37;;:46;;;;;;9314:18;;;;:31;;;;;9311:313;;-1:-1:-1;;;;;9382:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;9435:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9435:50:0;;;;;;;;;;;9512:28;;9527:10;;9512:14;:28::i;:::-;9311:313;;;9584:28;9599:10;9610:1;9584:14;:28::i;:::-;-1:-1:-1;;;;;9634:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;9687:12;:25;;;;:48;;;;;;9760:10;:8;:10::i;:::-;9746:24;;9781:14;9796:21;9809:7;9796:12;:21::i;:::-;9828:23;:32;;;;;;9884:12;;-1:-1:-1;;;;;9884:12:0;9828:23;9874;;;:9;:23;;;;;;9781:36;;-1:-1:-1;9874:31:0;-1:-1:-1;9871:398:0;;9922:25;:40;;9959:3;9956:2;9949:9;;:13;;;9922:40;;;;;9995:12;;10008:20;;9985:59;;-1:-1:-1;;;;;9995:12:0;;;;10008:20;;;;;9959:3;10030:9;;:13;;9985:59;10070:12;;10083:13;;10060:52;;-1:-1:-1;;;;;10070:12:0;;;;10083:13;10108:3;10105:2;10098:9;;:13;;10060:52;9871:398;;;10154:25;:33;;;;;;;10214:13;;10228:20;;10204:53;;-1:-1:-1;;;;;10214:13:0;;;;10228:20;10181:6;10204:9;:53::i;:::-;-1:-1:-1;;;;;10279:18:0;;;;;;:5;:18;;;;;;;;:30;;:38;;;10328:10;:23;;;;;10357:113;;;;;;;;;;;;;;;;10406:15;10357:113;;;;;;10436:4;10357:113;;;;;;;;;;;;10328:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10328:143:0;;;-1:-1:-1;;10328:143:0;;;;;;;;;;;;;;;;;10482:134;10497:1;10495;:3;10482:134;;;10538:20;;10528:75;;-1:-1:-1;;;;;10538:20:0;10559:9;10569:1;10559:12;;;;;;10528:75;10499:3;;10482:134;;19161:509;-1:-1:-1;;;;;19247:12:0;;;19230:14;19247:12;;;:5;:12;;;;;:21;;;;;;;19279:384;3374:2;19298:1;:14;19279:384;;;-1:-1:-1;;;;;19336:20:0;;;19333:319;;19379:5;19386:1;19379:8;19376:85;;;-1:-1:-1;;;;;19436:13:0;;;;;;:5;:13;;;;;:23;;;;19460:1;19436:25;19410:51;;19376:85;19480:20;19493:6;19480:12;:20::i;:::-;19532:3;;-1:-1:-1;;;;;19522:13:0;;;19532:3;;19522:13;19519:23;;;19537:5;;19519:23;-1:-1:-1;;;;;19570:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;19333:319;;;19631:5;;19333:319;19314:3;;19279:384;;;;19161:509;;;:::o;15992:1432::-;-1:-1:-1;;;;;16108:12:0;;;16091:14;16108:12;;;:5;:12;;;;;:21;;;;;;;16140:1277;3374:2;16157:1;:14;;;16140:1277;;;-1:-1:-1;;;;;16195:20:0;;;16192:1214;;16262:9;16272:1;16262:12;;;;;;;;;;;-1:-1:-1;;;;;16238:17:0;;;;;;:9;:17;;;;;:22;:36;16235:1046;;-1:-1:-1;;;;;16319:13:0;;16346:1;16319:13;;;:5;:13;;;;;;;;:26;;:28;16316:946;;16421:14;16462:5;16444:14;16459:1;16444:17;;;;;;;;;;;16436:7;:25;:31;;;;;;16421:46;;16518:25;16544:4;-1:-1:-1;;;;;16544:16:0;;16561:6;16544:24;;;;;;;;;;;;;-1:-1:-1;;;;;16544:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16544:24:0;;-1:-1:-1;16600:19:0;;16597:642;;16698:6;16680:17;:24;16677:143;;;16747:17;16740:24;;16677:143;-1:-1:-1;;;;;16850:13:0;;;;;;;:5;:13;;;;;;;;:28;;;:37;;;;;;16941:25;;:34;;;;;;17007:12;:20;;;;;-1:-1:-1;17007:31:0;:40;;;;;;17088:20;;17078:56;;17088:20;16856:6;17128:5;17123:4;17116:11;;17128:5;17116:17;;;17078:56;17170:40;;;;;;;17205:1;17203:3;;17170:40;;;;;17208:1;17170:40;;;;;;-1:-1:-1;;;;;17170:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;17170:40:0;;;;;;;;16597:642;16316:946;;;-1:-1:-1;;;;;17308:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;16192:1214;;;17385:5;;16192:1214;16173:3;;16140:1277;;;;15992:1432;;;;:::o;12110:1426::-;-1:-1:-1;;;;;12224:12:0;;;12207:14;12224:12;;;:5;:12;;;;;:21;;;;;;;12256:1273;3374:2;12273:1;:14;;;12256:1273;;;-1:-1:-1;;;;;12311:20:0;;;12308:1210;;12378:9;12388:1;12378:12;;;;;;;;;;;-1:-1:-1;;;;;12354:17:0;;;;;;:9;:17;;;;;:22;:36;12351:1042;;-1:-1:-1;;;;;12435:13:0;;12462:1;12435:13;;;:5;:13;;;;;;;;:26;;:28;12432:942;;12537:14;12577:5;12560:13;12574:1;12560:16;;;;;;;;;;;12552:7;:24;:30;;;;;;12537:45;;12633:25;12659:4;-1:-1:-1;;;;;12659:16:0;;12676:6;12659:24;;;;;;;;;;;;;-1:-1:-1;;;;;12659:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12659:24:0;;-1:-1:-1;12715:19:0;;12712:639;;12813:6;12795:17;:24;12792:143;;;12862:17;12855:24;;12792:143;-1:-1:-1;;;;;12965:13:0;;;;;;;:5;:13;;;;;;;;:25;;;:34;;;;;;13053:25;;:34;;;;;;13119:12;:20;;;;;-1:-1:-1;13119:31:0;:40;;;;;;13200:20;;13190:56;;13200:20;12971:6;13240:5;13235:4;13228:11;;13240:5;13228:17;;;13190:56;13282:40;;;;;;;13317:1;13315:3;;13282:40;;;;;13320:1;13282:40;;;;;;-1:-1:-1;;;;;13282:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;13282:40:0;;;;;;;;12712:639;12432:942;;;-1:-1:-1;;;;;13420:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;12289:3;;12256:1273;;13542:2444;-1:-1:-1;;;;;13658:12:0;;;13641:14;13658:12;;;:5;:12;;;;;:21;;;;;;;13641:14;;;;13817:2162;13838:2;13834:1;:6;;;13817:2162;;;-1:-1:-1;;;;;13876:20:0;;;13873:2095;;-1:-1:-1;;;;;13919:17:0;;;;;;:9;:17;;;;;:22;13943:1;13919:25;;:54;;-1:-1:-1;;;;;;13948:17:0;;;;;;:9;:17;;;;;;;;:22;:25;13919:54;13916:1913;;;14001:13;13998:798;;-1:-1:-1;;;;;14067:17:0;;;;;;:9;:17;;;;;;;;:22;:25;14064:418;;;14160:1;14144:17;;14210:1;14192:19;;14253:1;14242:12;;14064:418;;;14360:1;14344:17;;14410:1;14392:19;;14453:1;14442:12;;14064:418;13998:798;;;-1:-1:-1;;;;;14562:17:0;;;;;;:9;:17;;;;;:22;:34;;14559:214;;;14664:17;14648:33;;14720:1;14712:9;;14559:214;14821:17;;14818:992;;15029:24;;;-1:-1:-1;;;15029:24:0;;-1:-1:-1;;;;;15029:24:0;;;;;;;;14866:14;;14905:3;14881:23;;;:27;;14866:14;;15029:4;;:16;;:24;;;;;;;;;;;;;;:4;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15029:24:0;;-1:-1:-1;15085:19:0;;15082:641;;15183:6;15165:17;:24;15162:143;;;15232:17;15225:24;;15162:143;-1:-1:-1;;;;;15335:13:0;;;;;;;:5;:13;;;;;;;;:27;;;:36;;;;;;15425:25;;:34;;;;;;15491:12;:20;;;;;-1:-1:-1;15491:31:0;:40;;;;;;15572:20;;15562:56;;15572:20;15341:6;15612:5;15607:4;15600:11;;15612:5;15600:17;;;15562:56;15654:40;;;;;;;15689:1;15687:3;;15654:40;;;;;15692:1;15654:40;;;;;;-1:-1:-1;;;;;15654:40:0;;;;;;;;-1:-1:-1;;;;;;;;;;;15654:40:0;;;;;;;;15082:641;15752:7;15761:1;15752:10;:27;;;-1:-1:-1;15776:3:0;;-1:-1:-1;;;;;15766:13:0;;;15776:3;;15766:13;15752:27;15749:37;;;15781:5;;;;15749:37;14818:992;;;-1:-1:-1;;;;;15856:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;13873:2095;;;15947:5;;13873:2095;13842:3;;13817:2162;;;;13542:2444;;;;;;;;:::o;17430:795::-;-1:-1:-1;;;;;17517:12:0;;17494:19;17517:12;;;:5;:12;;;;;;;;:26;;;;17580:27;;;;;17637:9;:16;;;;;:21;17685:1;17672:14;;;;;:31;;;17702:1;17690:11;:13;17672:31;17669:549;;;17759:1;17747:13;;17731;17799:19;17812:5;17799:12;:19::i;:::-;17775:43;;;17833:17;17851:23;17866:5;17872:1;17851:14;:23::i;:::-;17906:19;;;;:9;:19;;;;;:32;;;17833:41;;-1:-1:-1;17892:46:0;;;;;:91;;-1:-1:-1;17953:19:0;;;;:9;:19;;;;;:30;;;17942:41;;;17892:91;17889:162;;;-1:-1:-1;;;;;18003:16:0;;;;;;:9;:16;;;;;:32;;;17889:162;17669:549;;;;;;18107:1;18097:12;;:9;:12;;:25;;18084:38;;;;;:65;;;18142:7;18126:14;:23;;18084:65;:83;;;;-1:-1:-1;18153:14:0;;18084:83;18081:137;;;-1:-1:-1;;;;;;;;18183:16:0;;;;;:9;:16;;;;;18205:1;18183:23;;17430:795::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://b1d7aba55863b8c44ef64c45840d8c0ac37ea0c4d679cb6e9de093a934f89dcc
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.