BNB Price: $644.14 (+4.00%)
 

Overview

Max Total Supply

310,000,000GET

Holders

11,942

Transfers

-
0

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
GETToken

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at BscScan.com on 2026-02-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract GETToken {
    // 代币基本信息
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    uint256 public totalSupply;
    
    // 余额和授权映射
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    
    // 黑洞地址
    address public constant BLACK_HOLE = address(0x000000000000000000000000000000000000dEaD);
    
    // 6个分配地址
    address public address1;
    address public address2;
    address public address3;
    address public address4;
    address public address5;
    address public address6;
    
    // 管理员地址及所有权转移时间锁
    address public owner;
    uint256 public ownershipTransferDelay = 1 days;
    uint256 public pendingOwnerTime;
    address public pendingOwner;
    
    // 交易对地址集合
    mapping(address => bool) public pairs;
    
    // ===================== 矿工体系 =====================
    enum MinerLevel {
        None,
        Bronze,    // 青铜
        Gold,      // 黄金
        King,      // 王者
        Diamond,   // 钻石
        God        // 大神
    }
    
    // 矿工等级系数
    uint256 public constant GOD_COEFFICIENT = 5;
    uint256 public constant DIAMOND_COEFFICIENT = 4;
    uint256 public constant KING_COEFFICIENT = 3;
    uint256 public constant GOLD_COEFFICIENT = 2;
    uint256 public constant BRONZE_COEFFICIENT = 1;
    
    struct Miner {
        MinerLevel level;
        uint256 shares;  // 待领取奖励份额
    }
    
    mapping(address => Miner) public miners;
    mapping(address => uint256) public minerTotalClaimed;
    
    address[] public bronzeMiners;
    address[] public goldMiners;
    address[] public kingMiners;
    address[] public diamondMiners;
    address[] public godMiners;
    mapping(address => uint256) public bronzeIndex;
    mapping(address => uint256) public goldIndex;
    mapping(address => uint256) public kingIndex;
    mapping(address => uint256) public diamondIndex;
    mapping(address => uint256) public godIndex;
    
    // ===================== 节点体系 =====================
    enum NodeLevel {
        None,
        Super,    // 超级节点
        Large,    // 大节点
        Medium,   // 中节点
        Small     // 小节点
    }
    
    // 节点等级系数
    uint256 public constant SUPER_NODE_COEFFICIENT = 4;
    uint256 public constant LARGE_NODE_COEFFICIENT = 3;
    uint256 public constant MEDIUM_NODE_COEFFICIENT = 2;
    uint256 public constant SMALL_NODE_COEFFICIENT = 1;
    
    struct Node {
        NodeLevel level;
        uint256 nodeShares;  // 待领取奖励份额
    }
    
    mapping(address => Node) public nodes;
    mapping(address => uint256) public nodeTotalClaimed;
    
    address[] public superNodes;
    address[] public largeNodes;
    address[] public mediumNodes;
    address[] public smallNodes;
    mapping(address => uint256) public superNodeIndex;
    mapping(address => uint256) public largeNodeIndex;
    mapping(address => uint256) public mediumNodeIndex;
    mapping(address => uint256) public smallNodeIndex;
    
    // 事件
    event Transfer(address indexed from, address indexed to, uint256 value);
    event MainTransfer(address indexed from, address indexed to, uint256 value, bool isTradingPair);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event PairAdded(address indexed pair);
    event PairRemoved(address indexed pair);
    event MinerAdded(address indexed miner, MinerLevel level);
    event MinerRemoved(address indexed miner, MinerLevel level);
    event NodeAdded(address indexed node, NodeLevel level);
    event NodeRemoved(address indexed node, NodeLevel level);
    event RewardsClaimed(address indexed claimant, uint256 totalAmount, uint256 minerAmount, uint256 nodeAmount);
    event TokensWithdrawn(address indexed token, address indexed to, uint256 amount);
    
    // 权限控制修饰符
    modifier onlyOwner() {
        require(msg.sender == owner, "O"); // 简化错误提示
        _;
    }
    
    // 构造函数
    constructor(
        address _address1,
        address _address2,
        address _address3,
        address _address4,
        address _address5,
        address _address6,
        uint256 initialSupply
    ) {
        require(_address1 != address(0) && _address2 != address(0) && _address3 != address(0) && 
                _address4 != address(0) && _address5 != address(0) && _address6 != address(0), "I");
        
        name = "GET Token";
        symbol = "GET";
        owner = msg.sender;
        
        address1 = _address1;
        address2 = _address2;
        address3 = _address3;
        address4 = _address4;
        address5 = _address5;
        address6 = _address6;
        
        totalSupply = initialSupply * 10 ** decimals;
        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
        emit MainTransfer(address(0), msg.sender, totalSupply, false);
    }
    
    // 转账函数
    function transfer(address recipient, uint256 amount) public returns (bool) {
        require(balanceOf[msg.sender] >= amount, "B");
        bool isTradingPair = pairs[msg.sender] || pairs[recipient];

        if (isTradingPair) {
            // 1. 仅扣减一次完整金额
            balanceOf[msg.sender] -= amount;
            
            // 2. 从扣减的金额中分配手续费
            _distributeFees(msg.sender, amount);
            
            // 3. 接收方获得剩余95%
            uint256 remaining = amount - (amount * 5) / 100;
            balanceOf[recipient] += remaining;
            emit Transfer(msg.sender, recipient, remaining);
            emit MainTransfer(msg.sender, recipient, remaining, true);
        } else {
            balanceOf[msg.sender] -= amount;
            balanceOf[recipient] += amount;
            emit Transfer(msg.sender, recipient, amount);
            emit MainTransfer(msg.sender, recipient, amount, false);
        }
        return true;
    }
    
    // 授权转账函数
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(allowance[sender][msg.sender] >= amount, "A");
        require(balanceOf[sender] >= amount, "B");
        bool isTradingPair = pairs[sender] || pairs[recipient];

        if (isTradingPair) {
            // 1. 仅扣减一次完整金额
            balanceOf[sender] -= amount;
            
            // 2. 从扣减的金额中分配手续费
            _distributeFees(sender, amount);
            
            // 3. 接收方获得剩余95%
            uint256 remaining = amount - (amount * 5) / 100;
            balanceOf[recipient] += remaining;
            emit Transfer(sender, recipient, remaining);
            emit MainTransfer(sender, recipient, remaining, true);
        } else {
            balanceOf[sender] -= amount;
            balanceOf[recipient] += amount;
            emit Transfer(sender, recipient, amount);
            emit MainTransfer(sender, recipient, amount, false);
        }
        
        // 最后扣减授权额度
        allowance[sender][msg.sender] -= amount;
        return true;
    }
    
    // 授权函数
    function approve(address spender, uint256 amount) public returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    
    // 增加授权额度
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        allowance[msg.sender][spender] += addedValue;
        emit Approval(msg.sender, spender, allowance[msg.sender][spender]);
        return true;
    }
    
    // 减少授权额度
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(allowance[msg.sender][spender] >= subtractedValue, "Allowance too low");
        allowance[msg.sender][spender] -= subtractedValue;
        emit Approval(msg.sender, spender, allowance[msg.sender][spender]);
        return true;
    }
    
    // 管理员添加/移除交易对
    function addPair(address pair) external onlyOwner {
        require(pair != address(0), "0");
        require(!pairs[pair], "E");
        pairs[pair] = true;
        emit PairAdded(pair);
    }
    function removePair(address pair) external onlyOwner {
        require(pairs[pair], "N");
        pairs[pair] = false;
        emit PairRemoved(pair);
    }
    
    // 管理员设置分配地址
    function setDistributionAddresses(
        address _address1, address _address2, address _address3,
        address _address4, address _address5, address _address6
    ) external onlyOwner {
        require(_address1 != address(0) && _address2 != address(0) && _address3 != address(0) && 
                _address4 != address(0) && _address5 != address(0) && _address6 != address(0), "I");
        address1 = _address1;
        address2 = _address2;
        address3 = _address3;
        address4 = _address4;
        address5 = _address5;
        address6 = _address6;
    }
    
    // 矿工列表移除工具函数
    function _removeFromList(address miner, MinerLevel level) internal {
        if (level == MinerLevel.Bronze) {
            uint256 index = bronzeIndex[miner];
            address lastMiner = bronzeMiners[bronzeMiners.length - 1];
            bronzeMiners[index] = lastMiner;
            bronzeIndex[lastMiner] = index;
            bronzeMiners.pop();
            delete bronzeIndex[miner];
        } else if (level == MinerLevel.Gold) {
            uint256 index = goldIndex[miner];
            address lastMiner = goldMiners[goldMiners.length - 1];
            goldMiners[index] = lastMiner;
            goldIndex[lastMiner] = index;
            goldMiners.pop();
            delete goldIndex[miner];
        } else if (level == MinerLevel.King) {
            uint256 index = kingIndex[miner];
            address lastMiner = kingMiners[kingMiners.length - 1];
            kingMiners[index] = lastMiner;
            kingIndex[lastMiner] = index;
            kingMiners.pop();
            delete kingIndex[miner];
        } else if (level == MinerLevel.Diamond) {
            uint256 index = diamondIndex[miner];
            address lastMiner = diamondMiners[diamondMiners.length - 1];
            diamondMiners[index] = lastMiner;
            diamondIndex[lastMiner] = index;
            diamondMiners.pop();
            delete diamondIndex[miner];
        } else if (level == MinerLevel.God) {
            uint256 index = godIndex[miner];
            address lastMiner = godMiners[godMiners.length - 1];
            godMiners[index] = lastMiner;
            godIndex[lastMiner] = index;
            godMiners.pop();
            delete godIndex[miner];
        }
    }
    
    // 管理员添加/更新矿工等级
    function setMinerLevel(address miner, MinerLevel level) external onlyOwner {
        require(miner != address(0), "0");
        require(level != MinerLevel.None, "N");
        
        Miner storage m = miners[miner];
        MinerLevel oldLevel = m.level;
        
        if (oldLevel != MinerLevel.None) {
            _removeFromList(miner, oldLevel);
            emit MinerRemoved(miner, oldLevel);
        }
        
        m.level = level;
        if (level == MinerLevel.Bronze) {
            bronzeIndex[miner] = bronzeMiners.length;
            bronzeMiners.push(miner);
        } else if (level == MinerLevel.Gold) {
            goldIndex[miner] = goldMiners.length;
            goldMiners.push(miner);
        } else if (level == MinerLevel.King) {
            kingIndex[miner] = kingMiners.length;
            kingMiners.push(miner);
        } else if (level == MinerLevel.Diamond) {
            diamondIndex[miner] = diamondMiners.length;
            diamondMiners.push(miner);
        } else if (level == MinerLevel.God) {
            godIndex[miner] = godMiners.length;
            godMiners.push(miner);
        }
        
        emit MinerAdded(miner, level);
    }
    
    // 管理员移除矿工
    function removeMiner(address miner) external onlyOwner {
        require(miner != address(0), "0");
        Miner storage m = miners[miner];
        MinerLevel level = m.level;
        require(level != MinerLevel.None, "M");
        
        _removeFromList(miner, level);
        m.level = MinerLevel.None;
        emit MinerRemoved(miner, level);
    }
    
    // 节点列表移除工具函数
    function _removeFromNodeList(address nodeAddr, NodeLevel level) internal {
        if (level == NodeLevel.Super) {
            uint256 index = superNodeIndex[nodeAddr];
            address lastNode = superNodes[superNodes.length - 1];
            superNodes[index] = lastNode;
            superNodeIndex[lastNode] = index;
            superNodes.pop();
            delete superNodeIndex[nodeAddr];
        } else if (level == NodeLevel.Large) {
            uint256 index = largeNodeIndex[nodeAddr];
            address lastNode = largeNodes[largeNodes.length - 1];
            largeNodes[index] = lastNode;
            largeNodeIndex[lastNode] = index;
            largeNodes.pop();
            delete largeNodeIndex[nodeAddr];
        } else if (level == NodeLevel.Medium) {
            uint256 index = mediumNodeIndex[nodeAddr];
            address lastNode = mediumNodes[mediumNodes.length - 1];
            mediumNodes[index] = lastNode;
            mediumNodeIndex[lastNode] = index;
            mediumNodes.pop();
            delete mediumNodeIndex[nodeAddr];
        } else if (level == NodeLevel.Small) {
            uint256 index = smallNodeIndex[nodeAddr];
            address lastNode = smallNodes[smallNodes.length - 1];
            smallNodes[index] = lastNode;
            smallNodeIndex[lastNode] = index;
            smallNodes.pop();
            delete smallNodeIndex[nodeAddr];
        }
    }
    
    // 管理员添加/更新节点等级
    function setNodeLevel(address nodeAddr, NodeLevel level) external onlyOwner {
        require(nodeAddr != address(0), "0");
        require(level != NodeLevel.None, "N");
        
        Node storage node = nodes[nodeAddr];
        NodeLevel oldLevel = node.level;
        
        if (oldLevel != NodeLevel.None) {
            _removeFromNodeList(nodeAddr, oldLevel);
            emit NodeRemoved(nodeAddr, oldLevel);
        }
        
        node.level = level;
        if (level == NodeLevel.Super) {
            superNodeIndex[nodeAddr] = superNodes.length;
            superNodes.push(nodeAddr);
        } else if (level == NodeLevel.Large) {
            largeNodeIndex[nodeAddr] = largeNodes.length;
            largeNodes.push(nodeAddr);
        } else if (level == NodeLevel.Medium) {
            mediumNodeIndex[nodeAddr] = mediumNodes.length;
            mediumNodes.push(nodeAddr);
        } else if (level == NodeLevel.Small) {
            smallNodeIndex[nodeAddr] = smallNodes.length;
            smallNodes.push(nodeAddr);
        }
        
        emit NodeAdded(nodeAddr, level);
    }
    
    // 管理员移除节点
    function removeNode(address nodeAddr) external onlyOwner {
        require(nodeAddr != address(0), "0");
        Node storage node = nodes[nodeAddr];
        NodeLevel level = node.level;
        require(level != NodeLevel.None, "N");
        
        _removeFromNodeList(nodeAddr, level);
        node.level = NodeLevel.None;
        emit NodeRemoved(nodeAddr, level);
    }
    
    // 手续费分配函数
    function _distributeFees(address sender, uint256 amount) internal {
        // 2% 到黑洞地址
        uint256 blackHoleFee = (amount * 2) / 100;
        balanceOf[BLACK_HOLE] += blackHoleFee;
        emit Transfer(sender, BLACK_HOLE, blackHoleFee);
        
        // 1.5% 到合约地址(奖励池)
        uint256 rewardPool = (amount * 15) / 1000;
        balanceOf[address(this)] += rewardPool;
        emit Transfer(sender, address(this), rewardPool);
        
        // 分配奖励
        _distributeRewards(rewardPool);
        
        // 1.5% 分配给6个地址(已按要求调整比例)
        uint256 distributionPool = (amount * 15) / 1000;
        
        // 第一个地址:21%
        uint256 addr1Share = (distributionPool * 21) / 100;
        balanceOf[address1] += addr1Share;
        emit Transfer(sender, address1, addr1Share);
        
        // 第2-5地址:每个16%
        uint256 addr2To5Share = (distributionPool * 16) / 100;
        balanceOf[address2] += addr2To5Share;
        emit Transfer(sender, address2, addr2To5Share);
        
        balanceOf[address3] += addr2To5Share;
        emit Transfer(sender, address3, addr2To5Share);
        
        balanceOf[address4] += addr2To5Share;
        emit Transfer(sender, address4, addr2To5Share);
        
        balanceOf[address5] += addr2To5Share;
        emit Transfer(sender, address5, addr2To5Share);
        
        // 第六个地址:15%
        uint256 addr6Share = (distributionPool * 15) / 100;
        balanceOf[address6] += addr6Share;
        emit Transfer(sender, address6, addr6Share);
    }
    
    // 奖励分配函数(保持原有计算逻辑,分别累计到矿工和节点份额)
    function _distributeRewards(uint256 rewardPool) internal {
        // 1. 拆分奖励池:0.5%给矿工,1%给节点
        uint256 minerSubPool = rewardPool / 3;
        uint256 nodeSubPool = rewardPool * 2 / 3;
        
        // 2. 矿工奖励分配
        if (minerSubPool > 0) {
            uint256 totalMinerCoefficient = 
                (godMiners.length * GOD_COEFFICIENT) +
                (diamondMiners.length * DIAMOND_COEFFICIENT) +
                (kingMiners.length * KING_COEFFICIENT) +
                (goldMiners.length * GOLD_COEFFICIENT) +
                (bronzeMiners.length * BRONZE_COEFFICIENT);
            
            if (totalMinerCoefficient > 0) {
                uint256 perCoefficientValue = minerSubPool / totalMinerCoefficient;
                uint256 remainder = minerSubPool % totalMinerCoefficient;
                
                if (godMiners.length > 0) {
                    uint256 godRewardPerMiner = perCoefficientValue * GOD_COEFFICIENT;
                    for (uint256 i = 0; i < godMiners.length; i++) {
                        miners[godMiners[i]].shares += godRewardPerMiner;
                    }
                }
                
                if (diamondMiners.length > 0) {
                    uint256 diamondRewardPerMiner = perCoefficientValue * DIAMOND_COEFFICIENT;
                    for (uint256 i = 0; i < diamondMiners.length; i++) {
                        miners[diamondMiners[i]].shares += diamondRewardPerMiner;
                    }
                }
                
                if (kingMiners.length > 0) {
                    uint256 kingRewardPerMiner = perCoefficientValue * KING_COEFFICIENT;
                    for (uint256 i = 0; i < kingMiners.length; i++) {
                        miners[kingMiners[i]].shares += kingRewardPerMiner;
                    }
                }
                
                if (goldMiners.length > 0) {
                    uint256 goldRewardPerMiner = perCoefficientValue * GOLD_COEFFICIENT;
                    for (uint256 i = 0; i < goldMiners.length; i++) {
                        miners[goldMiners[i]].shares += goldRewardPerMiner;
                    }
                }
                
                if (bronzeMiners.length > 0) {
                    uint256 bronzeRewardPerMiner = perCoefficientValue * BRONZE_COEFFICIENT;
                    if (remainder > 0) {
                        bronzeRewardPerMiner += remainder;
                        remainder = 0;
                    }
                    for (uint256 i = 0; i < bronzeMiners.length; i++) {
                        miners[bronzeMiners[i]].shares += bronzeRewardPerMiner;
                    }
                }
            }
        }
        
        // 3. 节点奖励分配
        if (nodeSubPool > 0) {
            uint256 totalNodeCoefficient = 
                (superNodes.length * SUPER_NODE_COEFFICIENT) +
                (largeNodes.length * LARGE_NODE_COEFFICIENT) +
                (mediumNodes.length * MEDIUM_NODE_COEFFICIENT) +
                (smallNodes.length * SMALL_NODE_COEFFICIENT);
            
            if (totalNodeCoefficient > 0) {
                uint256 perCoefficientValue = nodeSubPool / totalNodeCoefficient;
                uint256 remainder = nodeSubPool % totalNodeCoefficient;
                
                if (superNodes.length > 0) {
                    uint256 superRewardPerNode = perCoefficientValue * SUPER_NODE_COEFFICIENT;
                    for (uint256 i = 0; i < superNodes.length; i++) {
                        nodes[superNodes[i]].nodeShares += superRewardPerNode;
                    }
                }
                
                if (largeNodes.length > 0) {
                    uint256 largeRewardPerNode = perCoefficientValue * LARGE_NODE_COEFFICIENT;
                    for (uint256 i = 0; i < largeNodes.length; i++) {
                        nodes[largeNodes[i]].nodeShares += largeRewardPerNode;
                    }
                }
                
                if (mediumNodes.length > 0) {
                    uint256 mediumRewardPerNode = perCoefficientValue * MEDIUM_NODE_COEFFICIENT;
                    for (uint256 i = 0; i < mediumNodes.length; i++) {
                        nodes[mediumNodes[i]].nodeShares += mediumRewardPerNode;
                    }
                }
                
                if (smallNodes.length > 0) {
                    uint256 smallRewardPerNode = perCoefficientValue * SMALL_NODE_COEFFICIENT;
                    if (remainder > 0) {
                        smallRewardPerNode += remainder;
                        remainder = 0;
                    }
                    for (uint256 i = 0; i < smallNodes.length; i++) {
                        nodes[smallNodes[i]].nodeShares += smallRewardPerNode;
                    }
                }
            }
        }
    }
    
    // 合并领取所有奖励(核心修改:单一领取入口)
    function claimAllRewards() external {
        // 计算总待领取奖励
        uint256 minerRewards = miners[msg.sender].shares;
        uint256 nodeRewards = nodes[msg.sender].nodeShares;
        uint256 totalRewards = minerRewards + nodeRewards;
        
        require(totalRewards > 0, "No rewards to claim");
        require(balanceOf[address(this)] >= totalRewards, "Insufficient contract balance");
        
        // 清零待领取份额
        miners[msg.sender].shares = 0;
        nodes[msg.sender].nodeShares = 0;
        
        // 更新总领取记录
        minerTotalClaimed[msg.sender] += minerRewards;
        nodeTotalClaimed[msg.sender] += nodeRewards;
        
        // 转账到用户账户
        balanceOf[address(this)] -= totalRewards;
        balanceOf[msg.sender] += totalRewards;
        
        // 触发事件(包含详细构成)
        emit RewardsClaimed(msg.sender, totalRewards, minerRewards, nodeRewards);
        emit Transfer(address(this), msg.sender, totalRewards);
        emit MainTransfer(address(this), msg.sender, totalRewards, false);
    }
    
    // 查询函数(核心修改:显示总待领取份额)
    function getMyTotalRewards() external view returns (uint256) {
        // 合并矿工和节点的待领取份额
        return miners[msg.sender].shares + nodes[msg.sender].nodeShares;
    }
    
    // 其他查询函数
    function getMyTotalClaimedRewards() external view returns (uint256) {
        return minerTotalClaimed[msg.sender] + nodeTotalClaimed[msg.sender];
    }
    
    function getMinerTotalClaimedByAdmin(address miner) external view onlyOwner returns (uint256) {
        require(miner != address(0), "0");
        return minerTotalClaimed[miner];
    }
    
    function getNodeTotalClaimedByAdmin(address nodeAddr) external view onlyOwner returns (uint256) {
        require(nodeAddr != address(0), "0");
        return nodeTotalClaimed[nodeAddr];
    }
    
    function getMinerCount(MinerLevel level) external view returns (uint256) {
        if (level == MinerLevel.Bronze) return bronzeMiners.length;
        if (level == MinerLevel.Gold) return goldMiners.length;
        if (level == MinerLevel.King) return kingMiners.length;
        if (level == MinerLevel.Diamond) return diamondMiners.length;
        if (level == MinerLevel.God) return godMiners.length;
        return 0;
    }
    
    function getNodeCount(NodeLevel level) external view returns (uint256) {
        if (level == NodeLevel.Super) return superNodes.length;
        if (level == NodeLevel.Large) return largeNodes.length;
        if (level == NodeLevel.Medium) return mediumNodes.length;
        if (level == NodeLevel.Small) return smallNodes.length;
        return 0;
    }
    
    // 管理员提取代币
    function withdrawTokens(address to, uint256 amount) external onlyOwner {
        require(to != address(0), "0");
        require(amount > 0, "A");
        require(balanceOf[address(this)] >= amount, "Insufficient contract balance");
        
        balanceOf[address(this)] -= amount;
        balanceOf[to] += amount;
        emit Transfer(address(this), to, amount);
        emit MainTransfer(address(this), to, amount, false);
        emit TokensWithdrawn(address(this), to, amount);
    }
    
    // 所有权转移
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "0");
        pendingOwner = newOwner;
        pendingOwnerTime = block.timestamp + ownershipTransferDelay;
    }
    
    // 确认所有权转移
    function acceptOwnership() external {
        require(msg.sender == pendingOwner, "Not pending owner");
        require(block.timestamp >= pendingOwnerTime, "Delay not passed");
        owner = pendingOwner;
        pendingOwner = address(0);
        pendingOwnerTime = 0;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_address1","type":"address"},{"internalType":"address","name":"_address2","type":"address"},{"internalType":"address","name":"_address3","type":"address"},{"internalType":"address","name":"_address4","type":"address"},{"internalType":"address","name":"_address5","type":"address"},{"internalType":"address","name":"_address6","type":"address"},{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isTradingPair","type":"bool"}],"name":"MainTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"enum GETToken.MinerLevel","name":"level","type":"uint8"}],"name":"MinerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"miner","type":"address"},{"indexed":false,"internalType":"enum GETToken.MinerLevel","name":"level","type":"uint8"}],"name":"MinerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"},{"indexed":false,"internalType":"enum GETToken.NodeLevel","name":"level","type":"uint8"}],"name":"NodeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"node","type":"address"},{"indexed":false,"internalType":"enum GETToken.NodeLevel","name":"level","type":"uint8"}],"name":"NodeRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"}],"name":"PairAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"}],"name":"PairRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimant","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minerAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nodeAmount","type":"uint256"}],"name":"RewardsClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensWithdrawn","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"},{"inputs":[],"name":"BLACK_HOLE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRONZE_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DIAMOND_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOD_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOLD_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KING_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LARGE_NODE_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MEDIUM_NODE_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SMALL_NODE_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPER_NODE_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"address1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"address2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"address3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"address4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"address5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"address6","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","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":"address","name":"","type":"address"}],"name":"bronzeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bronzeMiners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"diamondIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"diamondMiners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum GETToken.MinerLevel","name":"level","type":"uint8"}],"name":"getMinerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"getMinerTotalClaimedByAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyTotalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMyTotalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum GETToken.NodeLevel","name":"level","type":"uint8"}],"name":"getNodeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nodeAddr","type":"address"}],"name":"getNodeTotalClaimedByAdmin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"godIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"godMiners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"goldIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"goldMiners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"kingIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"kingMiners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"largeNodeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"largeNodes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mediumNodeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mediumNodes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minerTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"miners","outputs":[{"internalType":"enum GETToken.MinerLevel","name":"level","type":"uint8"},{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nodeTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nodes","outputs":[{"internalType":"enum GETToken.NodeLevel","name":"level","type":"uint8"},{"internalType":"uint256","name":"nodeShares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipTransferDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwnerTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"}],"name":"removeMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nodeAddr","type":"address"}],"name":"removeNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address1","type":"address"},{"internalType":"address","name":"_address2","type":"address"},{"internalType":"address","name":"_address3","type":"address"},{"internalType":"address","name":"_address4","type":"address"},{"internalType":"address","name":"_address5","type":"address"},{"internalType":"address","name":"_address6","type":"address"}],"name":"setDistributionAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miner","type":"address"},{"internalType":"enum GETToken.MinerLevel","name":"level","type":"uint8"}],"name":"setMinerLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nodeAddr","type":"address"},{"internalType":"enum GETToken.NodeLevel","name":"level","type":"uint8"}],"name":"setNodeLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"smallNodeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"smallNodes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"superNodeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"superNodes","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526002805460ff1916601217905562015180600d5534801562000024575f80fd5b50604051620042523803806200425283398101604081905262000047916200028e565b6001600160a01b038716158015906200006857506001600160a01b03861615155b80156200007d57506001600160a01b03851615155b80156200009257506001600160a01b03841615155b8015620000a757506001600160a01b03831615155b8015620000bc57506001600160a01b03821615155b620000f15760405162461bcd60e51b81526020600482015260016024820152604960f81b604482015260640160405180910390fd5b60408051808201909152600981526823a2aa102a37b5b2b760b91b60208201525f906200011f9082620003b3565b5060408051808201909152600381526211d15560ea1b6020820152600190620001499082620003b3565b50600c8054336001600160a01b0319918216179091556006805482166001600160a01b038a811691909117909155600780548316898316179055600880548316888316179055600980548316878316179055600a80548316868316178155600b805490931691851691909117909155600254620001cc9160ff909116906200058e565b620001d89082620005a5565b6003819055335f81815260046020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600354604080519182525f60208301819052339290917f85c28c60b7b036ee38fab1931fd96e4c7e4f3ff4b7ca73949943c2de7289b881910160405180910390a350505050505050620005bf565b80516001600160a01b038116811462000289575f80fd5b919050565b5f805f805f805f60e0888a031215620002a5575f80fd5b620002b08862000272565b9650620002c06020890162000272565b9550620002d06040890162000272565b9450620002e06060890162000272565b9350620002f06080890162000272565b92506200030060a0890162000272565b915060c0880151905092959891949750929550565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200033e57607f821691505b6020821081036200035d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620003ae57805f5260205f20601f840160051c810160208510156200038a5750805b601f840160051c820191505b81811015620003ab575f815560010162000396565b50505b505050565b81516001600160401b03811115620003cf57620003cf62000315565b620003e781620003e0845462000329565b8462000363565b602080601f8311600181146200041d575f8415620004055750858301515b5f19600386901b1c1916600185901b17855562000477565b5f85815260208120601f198616915b828110156200044d578886015182559484019460019091019084016200042c565b50858210156200046b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004d357815f1904821115620004b757620004b76200047f565b80851615620004c557918102915b93841c939080029062000498565b509250929050565b5f82620004eb5750600162000588565b81620004f957505f62000588565b81600181146200051257600281146200051d576200053d565b600191505062000588565b60ff8411156200053157620005316200047f565b50506001821b62000588565b5060208310610133831016604e8410600b841016171562000562575081810a62000588565b6200056e838362000493565b805f19048211156200058457620005846200047f565b0290505b92915050565b5f6200059e60ff841683620004db565b9392505050565b80820281158282048414176200058857620005886200047f565b613c8580620005cd5f395ff3fe608060405234801561000f575f80fd5b506004361061040c575f3560e01c8063949addd211610221578063c4ca53ad1161012a578063e66a9f51116100b4578063f2fde38b11610084578063f2fde38b1461095f578063f32e578014610972578063f5a445fa14610985578063f8ef09891461098d578063fe33b302146109a0575f80fd5b8063e66a9f511461091a578063ee23b4fc1461092d578063f1c353ed14610614578063f2db17a514610940575f80fd5b8063d09da6df116100fa578063d09da6df14610898578063d6d7c308146108ab578063dd62ed3e146108be578063e30c3978146108e8578063e43cacec146108fb575f80fd5b8063c4ca53ad1461085d578063c4e43142146105ed578063cadeaecd14610866578063cfafee5814610885575f80fd5b8063a9059cbb116101ab578063b62ddbab1161017b578063b62ddbab14610808578063ba8fe9021461081b578063bea750171461083a578063bfc7dbc614610842578063c2b7bbb61461084a575f80fd5b8063a9059cbb146107cf578063af6c9c1d146107e2578063afd06d4714610410578063b2b99ec9146107f5575f80fd5b80639b2d38b4116101f15780639b2d38b4146107645780639eea4a3a14610777578063a174c19d1461078a578063a1c2f644146107a9578063a457c2d7146107bc575f80fd5b8063949addd21461071757806395d89b4114610736578063993ed2a51461073e5780639a0926f314610751575f80fd5b80633950935111610323578063634f531e116102ad5780637874c6021161027d5780637874c602146105e557806379ba5097146106d657806383a2bd17146106de5780638a351cd6146106f15780638da5cb5b14610704575f80fd5b8063634f531e14610657578063648ec7b91461066a57806370a08231146106a457806374156bb2146106c3575f80fd5b806345000267116102f357806345000267146105f557806346764968146106145780634f15935e1461061c5780634fbeb9dc1461062f57806355eda4e81461064e575f80fd5b806339509351146105bf5780633a36399e146105d25780633a66162d146105e55780633e74c0c4146105ed575f80fd5b806310242590116103a457806323b872dd1161037457806323b872dd1461055257806325c77fa3146105655780632c0fb38e146105845780632e3ec5b614610597578063313ce567146105a0575f80fd5b806310242590146104e957806318160ddd146104fc578063189a5a17146105055780631e38046c1461053f575f80fd5b80630b812bcf116103df5780630b812bcf146104785780630b83a727146104975780630bb643831461049f5780630e417055146104be575f80fd5b8063036acab21461041057806306b091f91461042b57806306fdde0314610440578063095ea7b314610455575b5f80fd5b610418600181565b6040519081526020015b60405180910390f35b61043e610439366004613833565b6109c2565b005b610448610b9e565b604051610422919061385b565b610468610463366004613833565b610c29565b6040519015158152602001610422565b6104186104863660046138a7565b60266020525f908152604090205481565b61043e610c95565b6104186104ad3660046138a7565b601e6020525f908152604090205481565b600a546104d1906001600160a01b031681565b6040516001600160a01b039091168152602001610422565b61043e6104f73660046138a7565b610ea5565b61041860035481565b6105316105133660046138a7565b601d6020525f90815260409020805460019091015460ff9091169082565b6040516104229291906138ef565b6008546104d1906001600160a01b031681565b61046861056036600461390a565b610fb3565b6104186105733660046138a7565b60236020525f908152604090205481565b6104d1610592366004613943565b6112a7565b610418600d5481565b6002546105ad9060ff1681565b60405160ff9091168152602001610422565b6104686105cd366004613833565b6112cf565b6006546104d1906001600160a01b031681565b610418600481565b610418600281565b6104186106033660046138a7565b60196020525f908152604090205481565b610418600381565b6104d161062a366004613943565b61135e565b61041861063d3660046138a7565b60126020525f908152604090205481565b6104d161dead81565b6104d1610665366004613943565b61136d565b6106966106783660046138a7565b60116020525f90815260409020805460019091015460ff9091169082565b60405161042292919061396a565b6104186106b23660046138a7565b60046020525f908152604090205481565b6104d16106d1366004613943565b61137c565b61043e61138b565b61043e6106ec366004613986565b611449565b600b546104d1906001600160a01b031681565b600c546104d1906001600160a01b031681565b6104186107253660046138a7565b601b6020525f908152604090205481565b610448611810565b61041861074c3660046139c5565b61181d565b6104d161075f366004613943565b6118a9565b6104186107723660046138a7565b6118b8565b6007546104d1906001600160a01b031681565b6104186107983660046138a7565b601a6020525f908152604090205481565b6009546104d1906001600160a01b031681565b6104686107ca366004613833565b611929565b6104686107dd366004613833565b6119c1565b61043e6107f03660046138a7565b611bdf565b61043e6108033660046138a7565b611c88565b6104d1610816366004613943565b611d75565b6104186108293660046138a7565b60246020525f908152604090205481565b610418611d84565b610418600581565b61043e6108583660046138a7565b611dad565b610418600e5481565b6104186108743660046138a7565b60256020525f908152604090205481565b6104d1610893366004613943565b611e94565b6104d16108a6366004613943565b611ea3565b6104186108b93660046139de565b611eb2565b6104186108cc3660046139f7565b600560209081525f928352604080842090915290825290205481565b600f546104d1906001600160a01b031681565b6104186109093660046138a7565b60186020525f908152604090205481565b61043e610928366004613a1f565b611f58565b6104d161093b366004613943565b612091565b61041861094e3660046138a7565b601c6020525f908152604090205481565b61043e61096d3660046138a7565b6120a0565b6104186109803660046138a7565b61211e565b61041861218b565b61043e61099b366004613a8f565b6121b6565b6104686109ae3660046138a7565b60106020525f908152604090205460ff1681565b600c546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90613ab7565b60405180910390fd5b6001600160a01b038216610a1b5760405162461bcd60e51b81526004016109ec90613ad2565b5f8111610a4e5760405162461bcd60e51b81526020600482015260016024820152604160f81b60448201526064016109ec565b305f90815260046020526040902054811115610aac5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109ec565b305f9081526004602052604081208054839290610aca908490613b01565b90915550506001600160a01b0382165f9081526004602052604081208054839290610af6908490613b14565b90915550506040518181526001600160a01b0383169030905f80516020613c308339815191529060200160405180910390a3604080518281525f60208201526001600160a01b0384169130915f80516020613c10833981519152910160405180910390a36040518181526001600160a01b0383169030907f6337ed398c0e8467698c581374fdce4db14922df487b5a39483079f5f59b60a49060200160405180910390a35050565b5f8054610baa90613b27565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd690613b27565b8015610c215780601f10610bf857610100808354040283529160200191610c21565b820191905f5260205f20905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b335f8181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c839086815260200190565b60405180910390a35060015b92915050565b335f908152601160209081526040808320600190810154601d90935290832001549091610cc28284613b14565b90505f8111610d095760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b60448201526064016109ec565b305f90815260046020526040902054811115610d675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109ec565b335f9081526011602090815260408083206001908101849055601d835281842001839055601290915281208054859290610da2908490613b14565b9091555050335f908152601e602052604081208054849290610dc5908490613b14565b9091555050305f9081526004602052604081208054839290610de8908490613b01565b9091555050335f9081526004602052604081208054839290610e0b908490613b14565b9091555050604080518281526020810185905290810183905233907f56253d287efacdb2c4cd76dd03624a4821c1ce721d1152e8f5f5718f6087c9bf9060600160405180910390a2604051818152339030905f80516020613c308339815191529060200160405180910390a3604080518281525f6020820152339130915f80516020613c10833981519152910160405180910390a3505050565b600c546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116610ef55760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f9081526011602052604081208054909160ff90911690816005811115610f2857610f286138c7565b03610f595760405162461bcd60e51b81526020600482015260016024820152604d60f81b60448201526064016109ec565b610f6383826124f5565b815460ff191682556040516001600160a01b038416907f01f3f3d52fa49d20fe980d761ef76daf9599b91e8376aaa70d690ab8d75f6ea190610fa6908490613b5f565b60405180910390a2505050565b6001600160a01b0383165f9081526005602090815260408083203384529091528120548211156110095760405162461bcd60e51b81526020600482015260016024820152604160f81b60448201526064016109ec565b6001600160a01b0384165f908152600460205260409020548211156110545760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016109ec565b6001600160a01b0384165f9081526010602052604081205460ff168061109157506001600160a01b0384165f9081526010602052604090205460ff165b9050801561119b576001600160a01b0385165f90815260046020526040812080548592906110c0908490613b01565b909155506110d090508584612a30565b5f60646110de856005613b6d565b6110e89190613b98565b6110f29085613b01565b6001600160a01b0386165f9081526004602052604081208054929350839290919061111e908490613b14565b92505081905550846001600160a01b0316866001600160a01b03165f80516020613c308339815191528360405161115791815260200190565b60405180910390a360408051828152600160208201526001600160a01b0380881692908916915f80516020613c10833981519152910160405180910390a350611265565b6001600160a01b0385165f90815260046020526040812080548592906111c2908490613b01565b90915550506001600160a01b0384165f90815260046020526040812080548592906111ee908490613b14565b92505081905550836001600160a01b0316856001600160a01b03165f80516020613c308339815191528560405161122791815260200190565b60405180910390a3604080518481525f60208201526001600160a01b0380871692908816915f80516020613c10833981519152910160405180910390a35b6001600160a01b0385165f90815260056020908152604080832033845290915281208054859290611297908490613b01565b9091555060019695505050505050565b601f81815481106112b6575f80fd5b5f918252602090912001546001600160a01b0316905081565b335f9081526005602090815260408083206001600160a01b0386168452909152812080548391908390611303908490613b14565b9091555050335f8181526005602090815260408083206001600160a01b038816808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c83565b602181815481106112b6575f80fd5b601381815481106112b6575f80fd5b602281815481106112b6575f80fd5b600f546001600160a01b031633146113d95760405162461bcd60e51b81526020600482015260116024820152702737ba103832b73234b7339037bbb732b960791b60448201526064016109ec565b600e5442101561141e5760405162461bcd60e51b815260206004820152601060248201526f11195b185e481b9bdd081c185cdcd95960821b60448201526064016109ec565b600f8054600c80546001600160a01b03199081166001600160a01b038416179091551690555f600e55565b600c546001600160a01b031633146114735760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166114995760405162461bcd60e51b81526004016109ec90613ad2565b5f8160058111156114ac576114ac6138c7565b036114c95760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0382165f9081526011602052604081208054909160ff909116908160058111156114fc576114fc6138c7565b1461154d5761150b84826124f5565b836001600160a01b03167f01f3f3d52fa49d20fe980d761ef76daf9599b91e8376aaa70d690ab8d75f6ea1826040516115449190613b5f565b60405180910390a25b81548390839060ff1916600183600581111561156b5761156b6138c7565b02179055506001836005811115611584576115846138c7565b036115e957601380546001600160a01b0386165f818152601860205260408120839055600183018455929092527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790556117c9565b60028360058111156115fd576115fd6138c7565b0361166257601480546001600160a01b0386165f818152601960205260408120839055600183018455929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690911790556117c9565b6003836005811115611676576116766138c7565b036116db57601580546001600160a01b0386165f818152601a60205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790556117c9565b60048360058111156116ef576116ef6138c7565b0361175457601680546001600160a01b0386165f818152601b60205260408120839055600183018455929092527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b03191690911790556117c9565b6005836005811115611768576117686138c7565b036117c957601780546001600160a01b0386165f818152601c60205260408120839055600183018455929092527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b03191690911790555b836001600160a01b03167f26c9e96e5f21bad26827b3ca83f41128d2194a34e6a8a3fabd233394af745092846040516118029190613b5f565b60405180910390a250505050565b60018054610baa90613b27565b5f6001826004811115611832576118326138c7565b0361183f575050601f5490565b6002826004811115611853576118536138c7565b0361186057505060205490565b6003826004811115611874576118746138c7565b0361188157505060215490565b6004826004811115611895576118956138c7565b036118a257505060225490565b505f919050565b601481815481106112b6575f80fd5b600c545f906001600160a01b031633146118e45760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b03821661190a5760405162461bcd60e51b81526004016109ec90613ad2565b506001600160a01b0381165f908152601260205260409020545b919050565b335f9081526005602090815260408083206001600160a01b038616845290915281205482111561198f5760405162461bcd60e51b8152602060048201526011602482015270416c6c6f77616e636520746f6f206c6f7760781b60448201526064016109ec565b335f9081526005602090815260408083206001600160a01b038716845290915281208054849290611303908490613b01565b335f90815260046020526040812054821115611a035760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016109ec565b335f9081526010602052604081205460ff1680611a3757506001600160a01b0384165f9081526010602052604090205460ff165b90508015611b2657335f9081526004602052604081208054859290611a5d908490613b01565b90915550611a6d90503384612a30565b5f6064611a7b856005613b6d565b611a859190613b98565b611a8f9085613b01565b6001600160a01b0386165f90815260046020526040812080549293508392909190611abb908490613b14565b90915550506040518181526001600160a01b0386169033905f80516020613c308339815191529060200160405180910390a360408051828152600160208201526001600160a01b0387169133915f80516020613c10833981519152910160405180910390a350611bd5565b335f9081526004602052604081208054859290611b44908490613b01565b90915550506001600160a01b0384165f9081526004602052604081208054859290611b70908490613b14565b90915550506040518381526001600160a01b0385169033905f80516020613c308339815191529060200160405180910390a3604080518481525f60208201526001600160a01b0386169133915f80516020613c10833981519152910160405180910390a35b5060019392505050565b600c546001600160a01b03163314611c095760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0381165f9081526010602052604090205460ff16611c405760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0381165f81815260106020526040808220805460ff19169055517f9493af33d363a70a1cd9cc0ceb347e3c0e16b5d9371695618e1ac5fb1c255b7c9190a250565b600c546001600160a01b03163314611cb25760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116611cd85760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f908152601d602052604081208054909160ff90911690816004811115611d0b57611d0b6138c7565b03611d285760405162461bcd60e51b81526004016109ec90613bab565b611d328382612df1565b815460ff191682556040516001600160a01b038416907ff73c6cd00317e7e0bf3facca9282656b29ef7b335f4f50f11779790d25388b1b90610fa6908490613bc6565b601681815481106112b6575f80fd5b335f908152601e60209081526040808320546012909252822054611da89190613b14565b905090565b600c546001600160a01b03163314611dd75760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116611dfd5760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f9081526010602052604090205460ff1615611e495760405162461bcd60e51b81526020600482015260016024820152604560f81b60448201526064016109ec565b6001600160a01b0381165f81815260106020526040808220805460ff19166001179055517f0d887d6750d996ace85ff35e7af4ff7f229bd111350121e552876ac01011ad099190a250565b601581815481106112b6575f80fd5b602081815481106112b6575f80fd5b5f6001826005811115611ec757611ec76138c7565b03611ed457505060135490565b6002826005811115611ee857611ee86138c7565b03611ef557505060145490565b6003826005811115611f0957611f096138c7565b03611f1657505060155490565b6004826005811115611f2a57611f2a6138c7565b03611f3757505060165490565b6005826005811115611f4b57611f4b6138c7565b036118a257505060175490565b600c546001600160a01b03163314611f825760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b03861615801590611fa257506001600160a01b03851615155b8015611fb657506001600160a01b03841615155b8015611fca57506001600160a01b03831615155b8015611fde57506001600160a01b03821615155b8015611ff257506001600160a01b03811615155b6120225760405162461bcd60e51b81526020600482015260016024820152604960f81b60448201526064016109ec565b600680546001600160a01b03199081166001600160a01b0398891617909155600780548216968816969096179095556008805486169487169490941790935560098054851692861692909217909155600a80548416918516919091179055600b80549092169216919091179055565b601781815481106112b6575f80fd5b600c546001600160a01b031633146120ca5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0381166120f05760405162461bcd60e51b81526004016109ec90613ad2565b600f80546001600160a01b0319166001600160a01b038316179055600d546121189042613b14565b600e5550565b600c545f906001600160a01b0316331461214a5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166121705760405162461bcd60e51b81526004016109ec90613ad2565b506001600160a01b03165f908152601e602052604090205490565b335f908152601d6020908152604080832060019081015460119093529083200154611da89190613b14565b600c546001600160a01b031633146121e05760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166122065760405162461bcd60e51b81526004016109ec90613ad2565b5f816004811115612219576122196138c7565b036122365760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0382165f908152601d602052604081208054909160ff90911690816004811115612269576122696138c7565b146122ba576122788482612df1565b836001600160a01b03167ff73c6cd00317e7e0bf3facca9282656b29ef7b335f4f50f11779790d25388b1b826040516122b19190613bc6565b60405180910390a25b81548390839060ff191660018360048111156122d8576122d86138c7565b021790555060018360048111156122f1576122f16138c7565b0361235657601f80546001600160a01b0386165f818152602360205260408120839055600183018455929092527fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180546001600160a01b03191690911790556124bc565b600283600481111561236a5761236a6138c7565b036123ce57602080546001600160a01b0386165f8181526024845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556124bc565b60038360048111156123e2576123e26138c7565b0361244757602180546001600160a01b0386165f818152602560205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b03191690911790556124bc565b600483600481111561245b5761245b6138c7565b036124bc57602280546001600160a01b0386165f818152602660205260408120839055600183018455929092527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5100180546001600160a01b03191690911790555b836001600160a01b03167f280b8616f84da9cd529f400cb2b31df2a158b6c5596ced8647364e65b17d2e6b846040516118029190613bc6565b6001816005811115612509576125096138c7565b03612601576001600160a01b0382165f908152601860205260408120546013805491929161253990600190613b01565b8154811061254957612549613bd4565b5f91825260209091200154601380546001600160a01b03909216925082918490811061257757612577613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260189091526040902082905560138054806125c0576125c0613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260189052604081205550612a2c9050565b6002816005811115612615576126156138c7565b0361270d576001600160a01b0382165f908152601960205260408120546014805491929161264590600190613b01565b8154811061265557612655613bd4565b5f91825260209091200154601480546001600160a01b03909216925082918490811061268357612683613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260199091526040902082905560148054806126cc576126cc613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260199052604081205550612a2c9050565b6003816005811115612721576127216138c7565b03612819576001600160a01b0382165f908152601a60205260408120546015805491929161275190600190613b01565b8154811061276157612761613bd4565b5f91825260209091200154601580546001600160a01b03909216925082918490811061278f5761278f613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601a9091526040902082905560158054806127d8576127d8613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601a9052604081205550612a2c9050565b600481600581111561282d5761282d6138c7565b03612925576001600160a01b0382165f908152601b60205260408120546016805491929161285d90600190613b01565b8154811061286d5761286d613bd4565b5f91825260209091200154601680546001600160a01b03909216925082918490811061289b5761289b613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601b9091526040902082905560168054806128e4576128e4613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601b9052604081205550612a2c9050565b6005816005811115612939576129396138c7565b03612a2c576001600160a01b0382165f908152601c60205260408120546017805491929161296990600190613b01565b8154811061297957612979613bd4565b5f91825260209091200154601780546001600160a01b0390921692508291849081106129a7576129a7613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601c9091526040902082905560178054806129f0576129f0613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601c9052604081205550505b5050565b5f6064612a3e836002613b6d565b612a489190613b98565b61dead5f90815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549293508392909190612a8a908490613b14565b909155505060405181815261dead906001600160a01b038516905f80516020613c308339815191529060200160405180910390a35f6103e8612acd84600f613b6d565b612ad79190613b98565b305f90815260046020526040812080549293508392909190612afa908490613b14565b909155505060405181815230906001600160a01b038616905f80516020613c308339815191529060200160405180910390a3612b3581613220565b5f6103e8612b4485600f613b6d565b612b4e9190613b98565b90505f6064612b5e836015613b6d565b612b689190613b98565b6006546001600160a01b03165f90815260046020526040812080549293508392909190612b96908490613b14565b90915550506006546040518281526001600160a01b03918216918816905f80516020613c308339815191529060200160405180910390a35f6064612bdb846010613b6d565b612be59190613b98565b6007546001600160a01b03165f90815260046020526040812080549293508392909190612c13908490613b14565b90915550506007546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a36008546001600160a01b03165f9081526004602052604081208054839290612c73908490613b14565b90915550506008546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a36009546001600160a01b03165f9081526004602052604081208054839290612cd3908490613b14565b90915550506009546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a3600a546001600160a01b03165f9081526004602052604081208054839290612d33908490613b14565b9091555050600a546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a35f6064612d7885600f613b6d565b612d829190613b98565b600b546001600160a01b03165f90815260046020526040812080549293508392909190612db0908490613b14565b9091555050600b546040518281526001600160a01b03918216918a16905f80516020613c308339815191529060200160405180910390a35050505050505050565b6001816004811115612e0557612e056138c7565b03612efd576001600160a01b0382165f90815260236020526040812054601f8054919291612e3590600190613b01565b81548110612e4557612e45613bd4565b5f91825260209091200154601f80546001600160a01b039092169250829184908110612e7357612e73613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602390915260409020829055601f805480612ebc57612ebc613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260239052604081205550612a2c9050565b6002816004811115612f1157612f116138c7565b0361300a576001600160a01b0382165f908152602460209081526040822054815490929190612f4290600190613b01565b81548110612f5257612f52613bd4565b905f5260205f20015f9054906101000a90046001600160a01b031690508060208381548110612f8357612f83613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526024825260409020839055805480612fc957612fc9613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260249052604081205550612a2c9050565b600381600481111561301e5761301e6138c7565b03613116576001600160a01b0382165f908152602560205260408120546021805491929161304e90600190613b01565b8154811061305e5761305e613bd4565b5f91825260209091200154602180546001600160a01b03909216925082918490811061308c5761308c613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260259091526040902082905560218054806130d5576130d5613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260259052604081205550612a2c9050565b600481600481111561312a5761312a6138c7565b03612a2c576001600160a01b0382165f908152602660205260408120546022805491929161315a90600190613b01565b8154811061316a5761316a613bd4565b5f91825260209091200154602280546001600160a01b03909216925082918490811061319857613198613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260269091526040902082905560228054806131e1576131e1613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260269052604081205550505050565b5f61322c600383613b98565b90505f600361323c846002613b6d565b6132469190613b98565b9050811561357c576013545f9061325f90600190613b6d565b60145461326e90600290613b6d565b60155461327d90600390613b6d565b60165461328c90600490613b6d565b60175461329b90600590613b6d565b6132a59190613b14565b6132af9190613b14565b6132b99190613b14565b6132c39190613b14565b9050801561357a575f6132d68285613b98565b90505f6132e38386613bfc565b60175490915015613365575f6132fa600584613b6d565b90505f5b601754811015613362578160115f6017848154811061331f5761331f613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613355908490613b14565b90915550506001016132fe565b50505b601654156133e4575f613379600484613b6d565b90505f5b6016548110156133e1578160115f6016848154811061339e5761339e613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906133d4908490613b14565b909155505060010161337d565b50505b60155415613463575f6133f8600384613b6d565b90505f5b601554811015613460578160115f6015848154811061341d5761341d613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613453908490613b14565b90915550506001016133fc565b50505b601454156134e2575f613477600284613b6d565b90505f5b6014548110156134df578160115f6014848154811061349c5761349c613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906134d2908490613b14565b909155505060010161347b565b50505b60135415613577575f6134f6600184613b6d565b9050811561350e576135088282613b14565b90505f91505b5f5b601354811015613574578160115f6013848154811061353157613531613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613567908490613b14565b9091555050600101613510565b50505b50505b505b8015613818576022545f9061359390600190613b6d565b6021546135a290600290613b6d565b6020546135b190600390613b6d565b601f546135c090600490613b6d565b6135ca9190613b14565b6135d49190613b14565b6135de9190613b14565b90508015613816575f6135f18284613b98565b90505f6135fe8385613bfc565b601f5490915015613680575f613615600484613b6d565b90505f5b601f5481101561367d5781601d5f601f848154811061363a5761363a613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613670908490613b14565b9091555050600101613619565b50505b602054156136ff575f613694600384613b6d565b90505f5b6020548110156136fc5781601d5f602084815481106136b9576136b9613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906136ef908490613b14565b9091555050600101613698565b50505b6021541561377e575f613713600284613b6d565b90505f5b60215481101561377b5781601d5f6021848154811061373857613738613bd4565b5f9182526020808320909101546001600160a01b031683528201929092526040018120600101805490919061376e908490613b14565b9091555050600101613717565b50505b60225415613813575f613792600184613b6d565b905081156137aa576137a48282613b14565b90505f91505b5f5b6022548110156138105781601d5f602284815481106137cd576137cd613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613803908490613b14565b90915550506001016137ac565b50505b50505b505b505050565b80356001600160a01b0381168114611924575f80fd5b5f8060408385031215613844575f80fd5b61384d8361381d565b946020939093013593505050565b5f602080835283518060208501525f5b818110156138875785810183015185820160400152820161386b565b505f604082860101526040601f19601f8301168501019250505092915050565b5f602082840312156138b7575f80fd5b6138c08261381d565b9392505050565b634e487b7160e01b5f52602160045260245ffd5b600581106138eb576138eb6138c7565b9052565b604081016138fd82856138db565b8260208301529392505050565b5f805f6060848603121561391c575f80fd5b6139258461381d565b92506139336020850161381d565b9150604084013590509250925092565b5f60208284031215613953575f80fd5b5035919050565b600681106138eb576138eb6138c7565b604081016138fd828561395a565b803560068110611924575f80fd5b5f8060408385031215613997575f80fd5b6139a08361381d565b91506139ae60208401613978565b90509250929050565b803560058110611924575f80fd5b5f602082840312156139d5575f80fd5b6138c0826139b7565b5f602082840312156139ee575f80fd5b6138c082613978565b5f8060408385031215613a08575f80fd5b613a118361381d565b91506139ae6020840161381d565b5f805f805f8060c08789031215613a34575f80fd5b613a3d8761381d565b9550613a4b6020880161381d565b9450613a596040880161381d565b9350613a676060880161381d565b9250613a756080880161381d565b9150613a8360a0880161381d565b90509295509295509295565b5f8060408385031215613aa0575f80fd5b613aa98361381d565b91506139ae602084016139b7565b6020808252600190820152604f60f81b604082015260600190565b6020808252600190820152600360fc1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c8f57610c8f613aed565b80820180821115610c8f57610c8f613aed565b600181811c90821680613b3b57607f821691505b602082108103613b5957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c8f828461395a565b8082028115828204841417610c8f57610c8f613aed565b634e487b7160e01b5f52601260045260245ffd5b5f82613ba657613ba6613b84565b500490565b6020808252600190820152602760f91b604082015260600190565b60208101610c8f82846138db565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f82613c0a57613c0a613b84565b50069056fe85c28c60b7b036ee38fab1931fd96e4c7e4f3ff4b7ca73949943c2de7289b881ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220886be46643869de2a8cfd894d917135c98f7103b8784c5943e413cc4ad2a8fb364736f6c63430008180033000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb00000000000000000000000000000000000000000000000000000000127a3980

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061040c575f3560e01c8063949addd211610221578063c4ca53ad1161012a578063e66a9f51116100b4578063f2fde38b11610084578063f2fde38b1461095f578063f32e578014610972578063f5a445fa14610985578063f8ef09891461098d578063fe33b302146109a0575f80fd5b8063e66a9f511461091a578063ee23b4fc1461092d578063f1c353ed14610614578063f2db17a514610940575f80fd5b8063d09da6df116100fa578063d09da6df14610898578063d6d7c308146108ab578063dd62ed3e146108be578063e30c3978146108e8578063e43cacec146108fb575f80fd5b8063c4ca53ad1461085d578063c4e43142146105ed578063cadeaecd14610866578063cfafee5814610885575f80fd5b8063a9059cbb116101ab578063b62ddbab1161017b578063b62ddbab14610808578063ba8fe9021461081b578063bea750171461083a578063bfc7dbc614610842578063c2b7bbb61461084a575f80fd5b8063a9059cbb146107cf578063af6c9c1d146107e2578063afd06d4714610410578063b2b99ec9146107f5575f80fd5b80639b2d38b4116101f15780639b2d38b4146107645780639eea4a3a14610777578063a174c19d1461078a578063a1c2f644146107a9578063a457c2d7146107bc575f80fd5b8063949addd21461071757806395d89b4114610736578063993ed2a51461073e5780639a0926f314610751575f80fd5b80633950935111610323578063634f531e116102ad5780637874c6021161027d5780637874c602146105e557806379ba5097146106d657806383a2bd17146106de5780638a351cd6146106f15780638da5cb5b14610704575f80fd5b8063634f531e14610657578063648ec7b91461066a57806370a08231146106a457806374156bb2146106c3575f80fd5b806345000267116102f357806345000267146105f557806346764968146106145780634f15935e1461061c5780634fbeb9dc1461062f57806355eda4e81461064e575f80fd5b806339509351146105bf5780633a36399e146105d25780633a66162d146105e55780633e74c0c4146105ed575f80fd5b806310242590116103a457806323b872dd1161037457806323b872dd1461055257806325c77fa3146105655780632c0fb38e146105845780632e3ec5b614610597578063313ce567146105a0575f80fd5b806310242590146104e957806318160ddd146104fc578063189a5a17146105055780631e38046c1461053f575f80fd5b80630b812bcf116103df5780630b812bcf146104785780630b83a727146104975780630bb643831461049f5780630e417055146104be575f80fd5b8063036acab21461041057806306b091f91461042b57806306fdde0314610440578063095ea7b314610455575b5f80fd5b610418600181565b6040519081526020015b60405180910390f35b61043e610439366004613833565b6109c2565b005b610448610b9e565b604051610422919061385b565b610468610463366004613833565b610c29565b6040519015158152602001610422565b6104186104863660046138a7565b60266020525f908152604090205481565b61043e610c95565b6104186104ad3660046138a7565b601e6020525f908152604090205481565b600a546104d1906001600160a01b031681565b6040516001600160a01b039091168152602001610422565b61043e6104f73660046138a7565b610ea5565b61041860035481565b6105316105133660046138a7565b601d6020525f90815260409020805460019091015460ff9091169082565b6040516104229291906138ef565b6008546104d1906001600160a01b031681565b61046861056036600461390a565b610fb3565b6104186105733660046138a7565b60236020525f908152604090205481565b6104d1610592366004613943565b6112a7565b610418600d5481565b6002546105ad9060ff1681565b60405160ff9091168152602001610422565b6104686105cd366004613833565b6112cf565b6006546104d1906001600160a01b031681565b610418600481565b610418600281565b6104186106033660046138a7565b60196020525f908152604090205481565b610418600381565b6104d161062a366004613943565b61135e565b61041861063d3660046138a7565b60126020525f908152604090205481565b6104d161dead81565b6104d1610665366004613943565b61136d565b6106966106783660046138a7565b60116020525f90815260409020805460019091015460ff9091169082565b60405161042292919061396a565b6104186106b23660046138a7565b60046020525f908152604090205481565b6104d16106d1366004613943565b61137c565b61043e61138b565b61043e6106ec366004613986565b611449565b600b546104d1906001600160a01b031681565b600c546104d1906001600160a01b031681565b6104186107253660046138a7565b601b6020525f908152604090205481565b610448611810565b61041861074c3660046139c5565b61181d565b6104d161075f366004613943565b6118a9565b6104186107723660046138a7565b6118b8565b6007546104d1906001600160a01b031681565b6104186107983660046138a7565b601a6020525f908152604090205481565b6009546104d1906001600160a01b031681565b6104686107ca366004613833565b611929565b6104686107dd366004613833565b6119c1565b61043e6107f03660046138a7565b611bdf565b61043e6108033660046138a7565b611c88565b6104d1610816366004613943565b611d75565b6104186108293660046138a7565b60246020525f908152604090205481565b610418611d84565b610418600581565b61043e6108583660046138a7565b611dad565b610418600e5481565b6104186108743660046138a7565b60256020525f908152604090205481565b6104d1610893366004613943565b611e94565b6104d16108a6366004613943565b611ea3565b6104186108b93660046139de565b611eb2565b6104186108cc3660046139f7565b600560209081525f928352604080842090915290825290205481565b600f546104d1906001600160a01b031681565b6104186109093660046138a7565b60186020525f908152604090205481565b61043e610928366004613a1f565b611f58565b6104d161093b366004613943565b612091565b61041861094e3660046138a7565b601c6020525f908152604090205481565b61043e61096d3660046138a7565b6120a0565b6104186109803660046138a7565b61211e565b61041861218b565b61043e61099b366004613a8f565b6121b6565b6104686109ae3660046138a7565b60106020525f908152604090205460ff1681565b600c546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90613ab7565b60405180910390fd5b6001600160a01b038216610a1b5760405162461bcd60e51b81526004016109ec90613ad2565b5f8111610a4e5760405162461bcd60e51b81526020600482015260016024820152604160f81b60448201526064016109ec565b305f90815260046020526040902054811115610aac5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109ec565b305f9081526004602052604081208054839290610aca908490613b01565b90915550506001600160a01b0382165f9081526004602052604081208054839290610af6908490613b14565b90915550506040518181526001600160a01b0383169030905f80516020613c308339815191529060200160405180910390a3604080518281525f60208201526001600160a01b0384169130915f80516020613c10833981519152910160405180910390a36040518181526001600160a01b0383169030907f6337ed398c0e8467698c581374fdce4db14922df487b5a39483079f5f59b60a49060200160405180910390a35050565b5f8054610baa90613b27565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd690613b27565b8015610c215780601f10610bf857610100808354040283529160200191610c21565b820191905f5260205f20905b815481529060010190602001808311610c0457829003601f168201915b505050505081565b335f8181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c839086815260200190565b60405180910390a35060015b92915050565b335f908152601160209081526040808320600190810154601d90935290832001549091610cc28284613b14565b90505f8111610d095760405162461bcd60e51b81526020600482015260136024820152724e6f207265776172647320746f20636c61696d60681b60448201526064016109ec565b305f90815260046020526040902054811115610d675760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016109ec565b335f9081526011602090815260408083206001908101849055601d835281842001839055601290915281208054859290610da2908490613b14565b9091555050335f908152601e602052604081208054849290610dc5908490613b14565b9091555050305f9081526004602052604081208054839290610de8908490613b01565b9091555050335f9081526004602052604081208054839290610e0b908490613b14565b9091555050604080518281526020810185905290810183905233907f56253d287efacdb2c4cd76dd03624a4821c1ce721d1152e8f5f5718f6087c9bf9060600160405180910390a2604051818152339030905f80516020613c308339815191529060200160405180910390a3604080518281525f6020820152339130915f80516020613c10833981519152910160405180910390a3505050565b600c546001600160a01b03163314610ecf5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116610ef55760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f9081526011602052604081208054909160ff90911690816005811115610f2857610f286138c7565b03610f595760405162461bcd60e51b81526020600482015260016024820152604d60f81b60448201526064016109ec565b610f6383826124f5565b815460ff191682556040516001600160a01b038416907f01f3f3d52fa49d20fe980d761ef76daf9599b91e8376aaa70d690ab8d75f6ea190610fa6908490613b5f565b60405180910390a2505050565b6001600160a01b0383165f9081526005602090815260408083203384529091528120548211156110095760405162461bcd60e51b81526020600482015260016024820152604160f81b60448201526064016109ec565b6001600160a01b0384165f908152600460205260409020548211156110545760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016109ec565b6001600160a01b0384165f9081526010602052604081205460ff168061109157506001600160a01b0384165f9081526010602052604090205460ff165b9050801561119b576001600160a01b0385165f90815260046020526040812080548592906110c0908490613b01565b909155506110d090508584612a30565b5f60646110de856005613b6d565b6110e89190613b98565b6110f29085613b01565b6001600160a01b0386165f9081526004602052604081208054929350839290919061111e908490613b14565b92505081905550846001600160a01b0316866001600160a01b03165f80516020613c308339815191528360405161115791815260200190565b60405180910390a360408051828152600160208201526001600160a01b0380881692908916915f80516020613c10833981519152910160405180910390a350611265565b6001600160a01b0385165f90815260046020526040812080548592906111c2908490613b01565b90915550506001600160a01b0384165f90815260046020526040812080548592906111ee908490613b14565b92505081905550836001600160a01b0316856001600160a01b03165f80516020613c308339815191528560405161122791815260200190565b60405180910390a3604080518481525f60208201526001600160a01b0380871692908816915f80516020613c10833981519152910160405180910390a35b6001600160a01b0385165f90815260056020908152604080832033845290915281208054859290611297908490613b01565b9091555060019695505050505050565b601f81815481106112b6575f80fd5b5f918252602090912001546001600160a01b0316905081565b335f9081526005602090815260408083206001600160a01b0386168452909152812080548391908390611303908490613b14565b9091555050335f8181526005602090815260408083206001600160a01b038816808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c83565b602181815481106112b6575f80fd5b601381815481106112b6575f80fd5b602281815481106112b6575f80fd5b600f546001600160a01b031633146113d95760405162461bcd60e51b81526020600482015260116024820152702737ba103832b73234b7339037bbb732b960791b60448201526064016109ec565b600e5442101561141e5760405162461bcd60e51b815260206004820152601060248201526f11195b185e481b9bdd081c185cdcd95960821b60448201526064016109ec565b600f8054600c80546001600160a01b03199081166001600160a01b038416179091551690555f600e55565b600c546001600160a01b031633146114735760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166114995760405162461bcd60e51b81526004016109ec90613ad2565b5f8160058111156114ac576114ac6138c7565b036114c95760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0382165f9081526011602052604081208054909160ff909116908160058111156114fc576114fc6138c7565b1461154d5761150b84826124f5565b836001600160a01b03167f01f3f3d52fa49d20fe980d761ef76daf9599b91e8376aaa70d690ab8d75f6ea1826040516115449190613b5f565b60405180910390a25b81548390839060ff1916600183600581111561156b5761156b6138c7565b02179055506001836005811115611584576115846138c7565b036115e957601380546001600160a01b0386165f818152601860205260408120839055600183018455929092527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b03191690911790556117c9565b60028360058111156115fd576115fd6138c7565b0361166257601480546001600160a01b0386165f818152601960205260408120839055600183018455929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b03191690911790556117c9565b6003836005811115611676576116766138c7565b036116db57601580546001600160a01b0386165f818152601a60205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790556117c9565b60048360058111156116ef576116ef6138c7565b0361175457601680546001600160a01b0386165f818152601b60205260408120839055600183018455929092527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b03191690911790556117c9565b6005836005811115611768576117686138c7565b036117c957601780546001600160a01b0386165f818152601c60205260408120839055600183018455929092527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b03191690911790555b836001600160a01b03167f26c9e96e5f21bad26827b3ca83f41128d2194a34e6a8a3fabd233394af745092846040516118029190613b5f565b60405180910390a250505050565b60018054610baa90613b27565b5f6001826004811115611832576118326138c7565b0361183f575050601f5490565b6002826004811115611853576118536138c7565b0361186057505060205490565b6003826004811115611874576118746138c7565b0361188157505060215490565b6004826004811115611895576118956138c7565b036118a257505060225490565b505f919050565b601481815481106112b6575f80fd5b600c545f906001600160a01b031633146118e45760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b03821661190a5760405162461bcd60e51b81526004016109ec90613ad2565b506001600160a01b0381165f908152601260205260409020545b919050565b335f9081526005602090815260408083206001600160a01b038616845290915281205482111561198f5760405162461bcd60e51b8152602060048201526011602482015270416c6c6f77616e636520746f6f206c6f7760781b60448201526064016109ec565b335f9081526005602090815260408083206001600160a01b038716845290915281208054849290611303908490613b01565b335f90815260046020526040812054821115611a035760405162461bcd60e51b81526020600482015260016024820152602160f91b60448201526064016109ec565b335f9081526010602052604081205460ff1680611a3757506001600160a01b0384165f9081526010602052604090205460ff165b90508015611b2657335f9081526004602052604081208054859290611a5d908490613b01565b90915550611a6d90503384612a30565b5f6064611a7b856005613b6d565b611a859190613b98565b611a8f9085613b01565b6001600160a01b0386165f90815260046020526040812080549293508392909190611abb908490613b14565b90915550506040518181526001600160a01b0386169033905f80516020613c308339815191529060200160405180910390a360408051828152600160208201526001600160a01b0387169133915f80516020613c10833981519152910160405180910390a350611bd5565b335f9081526004602052604081208054859290611b44908490613b01565b90915550506001600160a01b0384165f9081526004602052604081208054859290611b70908490613b14565b90915550506040518381526001600160a01b0385169033905f80516020613c308339815191529060200160405180910390a3604080518481525f60208201526001600160a01b0386169133915f80516020613c10833981519152910160405180910390a35b5060019392505050565b600c546001600160a01b03163314611c095760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0381165f9081526010602052604090205460ff16611c405760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0381165f81815260106020526040808220805460ff19169055517f9493af33d363a70a1cd9cc0ceb347e3c0e16b5d9371695618e1ac5fb1c255b7c9190a250565b600c546001600160a01b03163314611cb25760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116611cd85760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f908152601d602052604081208054909160ff90911690816004811115611d0b57611d0b6138c7565b03611d285760405162461bcd60e51b81526004016109ec90613bab565b611d328382612df1565b815460ff191682556040516001600160a01b038416907ff73c6cd00317e7e0bf3facca9282656b29ef7b335f4f50f11779790d25388b1b90610fa6908490613bc6565b601681815481106112b6575f80fd5b335f908152601e60209081526040808320546012909252822054611da89190613b14565b905090565b600c546001600160a01b03163314611dd75760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b038116611dfd5760405162461bcd60e51b81526004016109ec90613ad2565b6001600160a01b0381165f9081526010602052604090205460ff1615611e495760405162461bcd60e51b81526020600482015260016024820152604560f81b60448201526064016109ec565b6001600160a01b0381165f81815260106020526040808220805460ff19166001179055517f0d887d6750d996ace85ff35e7af4ff7f229bd111350121e552876ac01011ad099190a250565b601581815481106112b6575f80fd5b602081815481106112b6575f80fd5b5f6001826005811115611ec757611ec76138c7565b03611ed457505060135490565b6002826005811115611ee857611ee86138c7565b03611ef557505060145490565b6003826005811115611f0957611f096138c7565b03611f1657505060155490565b6004826005811115611f2a57611f2a6138c7565b03611f3757505060165490565b6005826005811115611f4b57611f4b6138c7565b036118a257505060175490565b600c546001600160a01b03163314611f825760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b03861615801590611fa257506001600160a01b03851615155b8015611fb657506001600160a01b03841615155b8015611fca57506001600160a01b03831615155b8015611fde57506001600160a01b03821615155b8015611ff257506001600160a01b03811615155b6120225760405162461bcd60e51b81526020600482015260016024820152604960f81b60448201526064016109ec565b600680546001600160a01b03199081166001600160a01b0398891617909155600780548216968816969096179095556008805486169487169490941790935560098054851692861692909217909155600a80548416918516919091179055600b80549092169216919091179055565b601781815481106112b6575f80fd5b600c546001600160a01b031633146120ca5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0381166120f05760405162461bcd60e51b81526004016109ec90613ad2565b600f80546001600160a01b0319166001600160a01b038316179055600d546121189042613b14565b600e5550565b600c545f906001600160a01b0316331461214a5760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166121705760405162461bcd60e51b81526004016109ec90613ad2565b506001600160a01b03165f908152601e602052604090205490565b335f908152601d6020908152604080832060019081015460119093529083200154611da89190613b14565b600c546001600160a01b031633146121e05760405162461bcd60e51b81526004016109ec90613ab7565b6001600160a01b0382166122065760405162461bcd60e51b81526004016109ec90613ad2565b5f816004811115612219576122196138c7565b036122365760405162461bcd60e51b81526004016109ec90613bab565b6001600160a01b0382165f908152601d602052604081208054909160ff90911690816004811115612269576122696138c7565b146122ba576122788482612df1565b836001600160a01b03167ff73c6cd00317e7e0bf3facca9282656b29ef7b335f4f50f11779790d25388b1b826040516122b19190613bc6565b60405180910390a25b81548390839060ff191660018360048111156122d8576122d86138c7565b021790555060018360048111156122f1576122f16138c7565b0361235657601f80546001600160a01b0386165f818152602360205260408120839055600183018455929092527fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180546001600160a01b03191690911790556124bc565b600283600481111561236a5761236a6138c7565b036123ce57602080546001600160a01b0386165f8181526024845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556124bc565b60038360048111156123e2576123e26138c7565b0361244757602180546001600160a01b0386165f818152602560205260408120839055600183018455929092527f3a6357012c1a3ae0a17d304c9920310382d968ebcc4b1771f41c6b304205b5700180546001600160a01b03191690911790556124bc565b600483600481111561245b5761245b6138c7565b036124bc57602280546001600160a01b0386165f818152602660205260408120839055600183018455929092527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5100180546001600160a01b03191690911790555b836001600160a01b03167f280b8616f84da9cd529f400cb2b31df2a158b6c5596ced8647364e65b17d2e6b846040516118029190613bc6565b6001816005811115612509576125096138c7565b03612601576001600160a01b0382165f908152601860205260408120546013805491929161253990600190613b01565b8154811061254957612549613bd4565b5f91825260209091200154601380546001600160a01b03909216925082918490811061257757612577613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260189091526040902082905560138054806125c0576125c0613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260189052604081205550612a2c9050565b6002816005811115612615576126156138c7565b0361270d576001600160a01b0382165f908152601960205260408120546014805491929161264590600190613b01565b8154811061265557612655613bd4565b5f91825260209091200154601480546001600160a01b03909216925082918490811061268357612683613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260199091526040902082905560148054806126cc576126cc613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260199052604081205550612a2c9050565b6003816005811115612721576127216138c7565b03612819576001600160a01b0382165f908152601a60205260408120546015805491929161275190600190613b01565b8154811061276157612761613bd4565b5f91825260209091200154601580546001600160a01b03909216925082918490811061278f5761278f613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601a9091526040902082905560158054806127d8576127d8613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601a9052604081205550612a2c9050565b600481600581111561282d5761282d6138c7565b03612925576001600160a01b0382165f908152601b60205260408120546016805491929161285d90600190613b01565b8154811061286d5761286d613bd4565b5f91825260209091200154601680546001600160a01b03909216925082918490811061289b5761289b613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601b9091526040902082905560168054806128e4576128e4613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601b9052604081205550612a2c9050565b6005816005811115612939576129396138c7565b03612a2c576001600160a01b0382165f908152601c60205260408120546017805491929161296990600190613b01565b8154811061297957612979613bd4565b5f91825260209091200154601780546001600160a01b0390921692508291849081106129a7576129a7613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152601c9091526040902082905560178054806129f0576129f0613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b0386168252601c9052604081205550505b5050565b5f6064612a3e836002613b6d565b612a489190613b98565b61dead5f90815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549293508392909190612a8a908490613b14565b909155505060405181815261dead906001600160a01b038516905f80516020613c308339815191529060200160405180910390a35f6103e8612acd84600f613b6d565b612ad79190613b98565b305f90815260046020526040812080549293508392909190612afa908490613b14565b909155505060405181815230906001600160a01b038616905f80516020613c308339815191529060200160405180910390a3612b3581613220565b5f6103e8612b4485600f613b6d565b612b4e9190613b98565b90505f6064612b5e836015613b6d565b612b689190613b98565b6006546001600160a01b03165f90815260046020526040812080549293508392909190612b96908490613b14565b90915550506006546040518281526001600160a01b03918216918816905f80516020613c308339815191529060200160405180910390a35f6064612bdb846010613b6d565b612be59190613b98565b6007546001600160a01b03165f90815260046020526040812080549293508392909190612c13908490613b14565b90915550506007546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a36008546001600160a01b03165f9081526004602052604081208054839290612c73908490613b14565b90915550506008546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a36009546001600160a01b03165f9081526004602052604081208054839290612cd3908490613b14565b90915550506009546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a3600a546001600160a01b03165f9081526004602052604081208054839290612d33908490613b14565b9091555050600a546040518281526001600160a01b03918216918916905f80516020613c308339815191529060200160405180910390a35f6064612d7885600f613b6d565b612d829190613b98565b600b546001600160a01b03165f90815260046020526040812080549293508392909190612db0908490613b14565b9091555050600b546040518281526001600160a01b03918216918a16905f80516020613c308339815191529060200160405180910390a35050505050505050565b6001816004811115612e0557612e056138c7565b03612efd576001600160a01b0382165f90815260236020526040812054601f8054919291612e3590600190613b01565b81548110612e4557612e45613bd4565b5f91825260209091200154601f80546001600160a01b039092169250829184908110612e7357612e73613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602390915260409020829055601f805480612ebc57612ebc613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260239052604081205550612a2c9050565b6002816004811115612f1157612f116138c7565b0361300a576001600160a01b0382165f908152602460209081526040822054815490929190612f4290600190613b01565b81548110612f5257612f52613bd4565b905f5260205f20015f9054906101000a90046001600160a01b031690508060208381548110612f8357612f83613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526024825260409020839055805480612fc957612fc9613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260249052604081205550612a2c9050565b600381600481111561301e5761301e6138c7565b03613116576001600160a01b0382165f908152602560205260408120546021805491929161304e90600190613b01565b8154811061305e5761305e613bd4565b5f91825260209091200154602180546001600160a01b03909216925082918490811061308c5761308c613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260259091526040902082905560218054806130d5576130d5613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260259052604081205550612a2c9050565b600481600481111561312a5761312a6138c7565b03612a2c576001600160a01b0382165f908152602660205260408120546022805491929161315a90600190613b01565b8154811061316a5761316a613bd4565b5f91825260209091200154602280546001600160a01b03909216925082918490811061319857613198613bd4565b5f91825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260269091526040902082905560228054806131e1576131e1613be8565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b038616825260269052604081205550505050565b5f61322c600383613b98565b90505f600361323c846002613b6d565b6132469190613b98565b9050811561357c576013545f9061325f90600190613b6d565b60145461326e90600290613b6d565b60155461327d90600390613b6d565b60165461328c90600490613b6d565b60175461329b90600590613b6d565b6132a59190613b14565b6132af9190613b14565b6132b99190613b14565b6132c39190613b14565b9050801561357a575f6132d68285613b98565b90505f6132e38386613bfc565b60175490915015613365575f6132fa600584613b6d565b90505f5b601754811015613362578160115f6017848154811061331f5761331f613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613355908490613b14565b90915550506001016132fe565b50505b601654156133e4575f613379600484613b6d565b90505f5b6016548110156133e1578160115f6016848154811061339e5761339e613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906133d4908490613b14565b909155505060010161337d565b50505b60155415613463575f6133f8600384613b6d565b90505f5b601554811015613460578160115f6015848154811061341d5761341d613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613453908490613b14565b90915550506001016133fc565b50505b601454156134e2575f613477600284613b6d565b90505f5b6014548110156134df578160115f6014848154811061349c5761349c613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906134d2908490613b14565b909155505060010161347b565b50505b60135415613577575f6134f6600184613b6d565b9050811561350e576135088282613b14565b90505f91505b5f5b601354811015613574578160115f6013848154811061353157613531613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613567908490613b14565b9091555050600101613510565b50505b50505b505b8015613818576022545f9061359390600190613b6d565b6021546135a290600290613b6d565b6020546135b190600390613b6d565b601f546135c090600490613b6d565b6135ca9190613b14565b6135d49190613b14565b6135de9190613b14565b90508015613816575f6135f18284613b98565b90505f6135fe8385613bfc565b601f5490915015613680575f613615600484613b6d565b90505f5b601f5481101561367d5781601d5f601f848154811061363a5761363a613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613670908490613b14565b9091555050600101613619565b50505b602054156136ff575f613694600384613b6d565b90505f5b6020548110156136fc5781601d5f602084815481106136b9576136b9613bd4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812060010180549091906136ef908490613b14565b9091555050600101613698565b50505b6021541561377e575f613713600284613b6d565b90505f5b60215481101561377b5781601d5f6021848154811061373857613738613bd4565b5f9182526020808320909101546001600160a01b031683528201929092526040018120600101805490919061376e908490613b14565b9091555050600101613717565b50505b60225415613813575f613792600184613b6d565b905081156137aa576137a48282613b14565b90505f91505b5f5b6022548110156138105781601d5f602284815481106137cd576137cd613bd4565b5f9182526020808320909101546001600160a01b0316835282019290925260400181206001018054909190613803908490613b14565b90915550506001016137ac565b50505b50505b505b505050565b80356001600160a01b0381168114611924575f80fd5b5f8060408385031215613844575f80fd5b61384d8361381d565b946020939093013593505050565b5f602080835283518060208501525f5b818110156138875785810183015185820160400152820161386b565b505f604082860101526040601f19601f8301168501019250505092915050565b5f602082840312156138b7575f80fd5b6138c08261381d565b9392505050565b634e487b7160e01b5f52602160045260245ffd5b600581106138eb576138eb6138c7565b9052565b604081016138fd82856138db565b8260208301529392505050565b5f805f6060848603121561391c575f80fd5b6139258461381d565b92506139336020850161381d565b9150604084013590509250925092565b5f60208284031215613953575f80fd5b5035919050565b600681106138eb576138eb6138c7565b604081016138fd828561395a565b803560068110611924575f80fd5b5f8060408385031215613997575f80fd5b6139a08361381d565b91506139ae60208401613978565b90509250929050565b803560058110611924575f80fd5b5f602082840312156139d5575f80fd5b6138c0826139b7565b5f602082840312156139ee575f80fd5b6138c082613978565b5f8060408385031215613a08575f80fd5b613a118361381d565b91506139ae6020840161381d565b5f805f805f8060c08789031215613a34575f80fd5b613a3d8761381d565b9550613a4b6020880161381d565b9450613a596040880161381d565b9350613a676060880161381d565b9250613a756080880161381d565b9150613a8360a0880161381d565b90509295509295509295565b5f8060408385031215613aa0575f80fd5b613aa98361381d565b91506139ae602084016139b7565b6020808252600190820152604f60f81b604082015260600190565b6020808252600190820152600360fc1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c8f57610c8f613aed565b80820180821115610c8f57610c8f613aed565b600181811c90821680613b3b57607f821691505b602082108103613b5957634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c8f828461395a565b8082028115828204841417610c8f57610c8f613aed565b634e487b7160e01b5f52601260045260245ffd5b5f82613ba657613ba6613b84565b500490565b6020808252600190820152602760f91b604082015260600190565b60208101610c8f82846138db565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f82613c0a57613c0a613b84565b50069056fe85c28c60b7b036ee38fab1931fd96e4c7e4f3ff4b7ca73949943c2de7289b881ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220886be46643869de2a8cfd894d917135c98f7103b8784c5943e413cc4ad2a8fb364736f6c63430008180033

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

000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb00000000000000000000000000000000000000000000000000000000127a3980

-----Decoded View---------------
Arg [0] : _address1 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [1] : _address2 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [2] : _address3 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [3] : _address4 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [4] : _address5 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [5] : _address6 (address): 0x623FEd44516B04d2e231aE8819113051Dec511Fb
Arg [6] : initialSupply (uint256): 310000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [1] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [2] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [3] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [4] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [5] : 000000000000000000000000623fed44516b04d2e231ae8819113051dec511fb
Arg [6] : 00000000000000000000000000000000000000000000000000000000127a3980


Deployed Bytecode Sourcemap

61:26845:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1516:46;;1561:1;1516:46;;;;;160:25:1;;;148:2;133:18;1516:46:0;;;;;;;;25816:502;;;;;;:::i;:::-;;:::i;:::-;;113:18;;;:::i;:::-;;;;;;;:::i;7597:205::-;;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;7597:205:0;1186:187:1;3271:49:0;;;;;;:::i;:::-;;;;;;;;;;;;;;22954:1130;;;:::i;2901:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;662:23;;;;;-1:-1:-1;;;;;662:23:0;;;;;;-1:-1:-1;;;;;1733:32:1;;;1715:51;;1703:2;1688:18;662:23:0;1569:203:1;12596:363:0;;;;;;:::i;:::-;;:::i;198:26::-;;;;;;2857:37;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;602:23::-;;;;;-1:-1:-1;;;;;602:23:0;;;6393:1171;;;;;;:::i;:::-;;:::i;3102:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;2965:27;;;;;;:::i;:::-;;:::i;806:46::-;;;;;;165:26;;;;;;;;;;;;3027:4:1;3015:17;;;2997:36;;2985:2;2970:18;165:26:0;2855:184:1;7841:248:0;;;;;;:::i;:::-;;:::i;542:23::-;;;;;-1:-1:-1;;;;;542:23:0;;;2509:50;;2558:1;2509:50;;1465:44;;1508:1;1465:44;;2024;;;;;;:::i;:::-;;;;;;;;;;;;;;2566:50;;2615:1;2566:50;;3033:28;;;;;;:::i;:::-;;:::i;1732:52::-;;;;;;:::i;:::-;;;;;;;;;;;;;;416:88;;461:42;416:88;;1797:29;;;;;;:::i;:::-;;:::i;1686:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;267:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;3068:27;;;;;;:::i;:::-;;:::i;26619:284::-;;;:::i;11339:1215::-;;;;;;:::i;:::-;;:::i;692:23::-;;;;;-1:-1:-1;;;;;692:23:0;;;779:20;;;;;-1:-1:-1;;;;;779:20:0;;;2126:47;;;;;;:::i;:::-;;;;;;;;;;;;;;138:20;;;:::i;25414:360::-;;;;;;:::i;:::-;;:::i;1833:27::-;;;;;;:::i;:::-;;:::i;24562:188::-;;;;;;:::i;:::-;;:::i;572:23::-;;;;;-1:-1:-1;;;;;572:23:0;;;2075:44;;;;;;:::i;:::-;;;;;;;;;;;;;;632:23;;;;;-1:-1:-1;;;;;632:23:0;;;8128:348;;;;;;:::i;:::-;;:::i;5328:1026::-;;;;;;:::i;:::-;;:::i;8732:160::-;;;;;;:::i;:::-;;:::i;15681:384::-;;;;;;:::i;:::-;;:::i;1901:30::-;;;;;;:::i;:::-;;:::i;3158:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;24396:154;;;:::i;1310:43::-;;1352:1;1310:43;;8528:198;;;;;;:::i;:::-;;:::i;859:31::-;;;;;;3214:50;;;;;;:::i;:::-;;;;;;;;;;;;;;1867:27;;;;;;:::i;:::-;;:::i;2999:::-;;;;;;:::i;:::-;;:::i;24969:433::-;;;;;;:::i;:::-;;:::i;318:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;897:27;;;;;-1:-1:-1;;;;;897:27:0;;;1971:46;;;;;;:::i;:::-;;;;;;;;;;;;;;8940:587;;;;;;:::i;:::-;;:::i;1938:26::-;;;;;;:::i;:::-;;:::i;2180:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;26354:223;;;;;;:::i;:::-;;:::i;24762:195::-;;;;;;:::i;:::-;;:::i;24162:::-;;;:::i;14506:1133::-;;;;;;:::i;:::-;;:::i;967:37::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;25816:502;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25906:16:0;::::1;25898:30;;;;-1:-1:-1::0;;;25898:30:0::1;;;;;;;:::i;:::-;25956:1;25947:6;:10;25939:24;;;::::0;-1:-1:-1;;;25939:24:0;;6468:2:1;25939:24:0::1;::::0;::::1;6450:21:1::0;6507:1;6487:18;;;6480:29;-1:-1:-1;;;6525:18:1;;;6518:31;6566:18;;25939:24:0::1;6266:324:1::0;25939:24:0::1;26000:4;25982:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;25982:34:0::1;25974:76;;;::::0;-1:-1:-1;;;25974:76:0;;6797:2:1;25974:76:0::1;::::0;::::1;6779:21:1::0;6836:2;6816:18;;;6809:30;6875:31;6855:18;;;6848:59;6924:18;;25974:76:0::1;6595:353:1::0;25974:76:0::1;26089:4;26071:24;::::0;;;:9:::1;:24;::::0;;;;:34;;26099:6;;26071:24;:34:::1;::::0;26099:6;;26071:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;26116:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;:23;;26133:6;;26116:13;:23:::1;::::0;26133:6;;26116:23:::1;:::i;:::-;::::0;;;-1:-1:-1;;26155:35:0::1;::::0;160:25:1;;;-1:-1:-1;;;;;26155:35:0;::::1;::::0;26172:4:::1;::::0;-1:-1:-1;;;;;;;;;;;26155:35:0;148:2:1;133:18;26155:35:0::1;;;;;;;26206:46;::::0;;7516:25:1;;;26246:5:0::1;7572:2:1::0;7557:18;;7550:50;-1:-1:-1;;;;;26206:46:0;::::1;::::0;26227:4:::1;::::0;-1:-1:-1;;;;;;;;;;;26206:46:0;7489:18:1;26206:46:0::1;;;;;;;26268:42;::::0;160:25:1;;;-1:-1:-1;;;;;26268:42:0;::::1;::::0;26292:4:::1;::::0;26268:42:::1;::::0;148:2:1;133:18;26268:42:0::1;;;;;;;25816:502:::0;;:::o;113:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7597:205::-;7690:10;7663:4;7680:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;7680:30:0;;;;;;;;;;:39;;;7735:37;7663:4;;7680:30;;7735:37;;;;7713:6;160:25:1;;148:2;133:18;;14:177;7735:37:0;;;;;;;;-1:-1:-1;7790:4:0;7597:205;;;;;:::o;22954:1130::-;23068:10;23038:20;23061:18;;;:6;:18;;;;;;;;:25;;;;;23119:5;:17;;;;;;:28;;23061:25;;23181:26;23119:28;23061:25;23181:26;:::i;:::-;23158:49;;23251:1;23236:12;:16;23228:48;;;;-1:-1:-1;;;23228:48:0;;8198:2:1;23228:48:0;;;8180:21:1;8237:2;8217:18;;;8210:30;-1:-1:-1;;;8256:18:1;;;8249:49;8315:18;;23228:48:0;7996:343:1;23228:48:0;23313:4;23295:24;;;;:9;:24;;;;;;:40;-1:-1:-1;23295:40:0;23287:82;;;;-1:-1:-1;;;23287:82:0;;6797:2:1;23287:82:0;;;6779:21:1;6836:2;6816:18;;;6809:30;6875:31;6855:18;;;6848:59;6924:18;;23287:82:0;6595:353:1;23287:82:0;23431:10;23452:1;23424:18;;;:6;:18;;;;;;;;:25;;;;:29;;;23464:5;:17;;;;;:28;:32;;;23551:17;:29;;;;;:45;;23584:12;;23452:1;23551:45;;23584:12;;23551:45;:::i;:::-;;;;-1:-1:-1;;23624:10:0;23607:28;;;;:16;:28;;;;;:43;;23639:11;;23607:28;:43;;23639:11;;23607:43;:::i;:::-;;;;-1:-1:-1;;23723:4:0;23705:24;;;;:9;:24;;;;;:40;;23733:12;;23705:24;:40;;23733:12;;23705:40;:::i;:::-;;;;-1:-1:-1;;23766:10:0;23756:21;;;;:9;:21;;;;;:37;;23781:12;;23756:21;:37;;23781:12;;23756:37;:::i;:::-;;;;-1:-1:-1;;23868:67:0;;;8546:25:1;;;8602:2;8587:18;;8580:34;;;8630:18;;;8623:34;;;23883:10:0;;23868:67;;8534:2:1;8519:18;23868:67:0;;;;;;;23951:49;;160:25:1;;;23975:10:0;;23968:4;;-1:-1:-1;;;;;;;;;;;23951:49:0;148:2:1;133:18;23951:49:0;;;;;;;24016:60;;;7516:25:1;;;24070:5:0;7572:2:1;7557:18;;7550:50;24044:10:0;;24037:4;;-1:-1:-1;;;;;;;;;;;24016:60:0;7489:18:1;24016:60:0;;;;;;;22990:1094;;;22954:1130::o;12596:363::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12670:19:0;::::1;12662:33;;;;-1:-1:-1::0;;;12662:33:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12724:13:0;::::1;12706:15;12724:13:::0;;;:6:::1;:13;::::0;;;;12767:7;;12724:13;;12767:7:::1;::::0;;::::1;::::0;12793:5:::1;:24;;;;;;;;:::i;:::-;::::0;12785:38:::1;;;::::0;-1:-1:-1;;;12785:38:0;;8870:2:1;12785:38:0::1;::::0;::::1;8852:21:1::0;8909:1;8889:18;;;8882:29;-1:-1:-1;;;8927:18:1;;;8920:31;8968:18;;12785:38:0::1;8668:324:1::0;12785:38:0::1;12844:29;12860:5;12867;12844:15;:29::i;:::-;12884:25:::0;;-1:-1:-1;;12884:25:0::1;::::0;;12925:26:::1;::::0;-1:-1:-1;;;;;12925:26:0;::::1;::::0;::::1;::::0;::::1;::::0;12945:5;;12925:26:::1;:::i;:::-;;;;;;;;12651:308;;12596:363:::0;:::o;6393:1171::-;-1:-1:-1;;;;;6507:17:0;;6482:4;6507:17;;;:9;:17;;;;;;;;6525:10;6507:29;;;;;;;;:39;-1:-1:-1;6507:39:0;6499:53;;;;-1:-1:-1;;;6499:53:0;;6468:2:1;6499:53:0;;;6450:21:1;6507:1;6487:18;;;6480:29;-1:-1:-1;;;6525:18:1;;;6518:31;6566:18;;6499:53:0;6266:324:1;6499:53:0;-1:-1:-1;;;;;6571:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;6571:27:0;6563:41;;;;-1:-1:-1;;;6563:41:0;;9412:2:1;6563:41:0;;;9394:21:1;9451:1;9431:18;;;9424:29;-1:-1:-1;;;9469:18:1;;;9462:31;9510:18;;6563:41:0;9210:324:1;6563:41:0;-1:-1:-1;;;;;6636:13:0;;6615:18;6636:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;6653:16:0;;;;;;:5;:16;;;;;;;;6636:33;6615:54;;6686:13;6682:756;;;-1:-1:-1;;;;;6763:17:0;;;;;;:9;:17;;;;;:27;;6784:6;;6763:17;:27;;6784:6;;6763:27;:::i;:::-;;;;-1:-1:-1;6875:31:0;;-1:-1:-1;6891:6:0;6899;6875:15;:31::i;:::-;6979:17;7023:3;7009:10;:6;7018:1;7009:10;:::i;:::-;7008:18;;;;:::i;:::-;6999:27;;:6;:27;:::i;:::-;-1:-1:-1;;;;;7041:20:0;;;;;;:9;:20;;;;;:33;;6979:47;;-1:-1:-1;6979:47:0;;7041:20;;;:33;;6979:47;;7041:33;:::i;:::-;;;;;;;;7111:9;-1:-1:-1;;;;;7094:38:0;7103:6;-1:-1:-1;;;;;7094:38:0;-1:-1:-1;;;;;;;;;;;7122:9:0;7094:38;;;;160:25:1;;148:2;133:18;;14:177;7094:38:0;;;;;;;;7152:48;;;7516:25:1;;;7195:4:0;7572:2:1;7557:18;;7550:50;-1:-1:-1;;;;;7152:48:0;;;;;;;;-1:-1:-1;;;;;;;;;;;7152:48:0;7489:18:1;7152:48:0;;;;;;;6701:511;6682:756;;;-1:-1:-1;;;;;7233:17:0;;;;;;:9;:17;;;;;:27;;7254:6;;7233:17;:27;;7254:6;;7233:27;:::i;:::-;;;;-1:-1:-1;;;;;;;7275:20:0;;;;;;:9;:20;;;;;:30;;7299:6;;7275:20;:30;;7299:6;;7275:30;:::i;:::-;;;;;;;;7342:9;-1:-1:-1;;;;;7325:35:0;7334:6;-1:-1:-1;;;;;7325:35:0;-1:-1:-1;;;;;;;;;;;7353:6:0;7325:35;;;;160:25:1;;148:2;133:18;;14:177;7325:35:0;;;;;;;;7380:46;;;7516:25:1;;;7420:5:0;7572:2:1;7557:18;;7550:50;-1:-1:-1;;;;;7380:46:0;;;;;;;;-1:-1:-1;;;;;;;;;;;7380:46:0;7489:18:1;7380:46:0;;;;;;;6682:756;-1:-1:-1;;;;;7495:17:0;;;;;;:9;:17;;;;;;;;7513:10;7495:29;;;;;;;:39;;7528:6;;7495:17;:39;;7528:6;;7495:39;:::i;:::-;;;;-1:-1:-1;7552:4:0;;6393:1171;-1:-1:-1;;;;;;6393:1171:0:o;2965:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2965:27:0;;-1:-1:-1;2965:27:0;:::o;7841:248::-;7948:10;7921:4;7938:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;7938:30:0;;;;;;;;;:44;;7972:10;;7938:30;7921:4;;7938:44;;7972:10;;7938:44;:::i;:::-;;;;-1:-1:-1;;8007:10:0;8028:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;7998:61:0;;8028:30;;;;;;;;;;;7998:61;;160:25:1;;;7998:61:0;;8007:10;7998:61;;133:18:1;7998:61:0;14:177:1;3033:28:0;;;;;;;;;;;;1797:29;;;;;;;;;;;;3068:27;;;;;;;;;;;;26619:284;26688:12;;-1:-1:-1;;;;;26688:12:0;26674:10;:26;26666:56;;;;-1:-1:-1;;;26666:56:0;;10171:2:1;26666:56:0;;;10153:21:1;10210:2;10190:18;;;10183:30;-1:-1:-1;;;10229:18:1;;;10222:47;10286:18;;26666:56:0;9969:341:1;26666:56:0;26760:16;;26741:15;:35;;26733:64;;;;-1:-1:-1;;;26733:64:0;;10517:2:1;26733:64:0;;;10499:21:1;10556:2;10536:18;;;10529:30;-1:-1:-1;;;10575:18:1;;;10568:46;10631:18;;26733:64:0;10315:340:1;26733:64:0;26816:12;;;26808:5;:20;;-1:-1:-1;;;;;;26808:20:0;;;-1:-1:-1;;;;;26816:12:0;;26808:20;;;;26839:25;;;26816:12;26875:16;:20;26619:284::o;11339:1215::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11433:19:0;::::1;11425:33;;;;-1:-1:-1::0;;;11425:33:0::1;;;;;;;:::i;:::-;11486:15;11477:5;:24;;;;;;;;:::i;:::-;::::0;11469:38:::1;;;;-1:-1:-1::0;;;11469:38:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11546:13:0;::::1;11528:15;11546:13:::0;;;:6:::1;:13;::::0;;;;11592:7;;11546:13;;11592:7:::1;::::0;;::::1;::::0;11624:8:::1;:27;;;;;;;;:::i;:::-;;11620:141;;11668:32;11684:5;11691:8;11668:15;:32::i;:::-;11733:5;-1:-1:-1::0;;;;;11720:29:0::1;;11740:8;11720:29;;;;;;:::i;:::-;;;;;;;;11620:141;11781:15:::0;;11791:5;;11781:1;;-1:-1:-1;;11781:15:0::1;::::0;11791:5;11781:15:::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;11820:17:0::1;11811:5;:26;;;;;;;;:::i;:::-;::::0;11807:690:::1;;11875:12;:19:::0;;-1:-1:-1;;;;;11854:18:0;::::1;;::::0;;;:11:::1;:18;::::0;;;;:40;;;11909:24:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;11909:24:0::1;::::0;;::::1;::::0;;11807:690:::1;;;11964:15;11955:5;:24;;;;;;;;:::i;:::-;::::0;11951:546:::1;;12015:10;:17:::0;;-1:-1:-1;;;;;11996:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;:36;;;12047:22:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12047:22:0::1;::::0;;::::1;::::0;;11951:546:::1;;;12100:15;12091:5;:24;;;;;;;;:::i;:::-;::::0;12087:410:::1;;12151:10;:17:::0;;-1:-1:-1;;;;;12132:16:0;::::1;;::::0;;;:9:::1;:16;::::0;;;;:36;;;12183:22:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12183:22:0::1;::::0;;::::1;::::0;;12087:410:::1;;;12236:18;12227:5;:27;;;;;;;;:::i;:::-;::::0;12223:274:::1;;12293:13;:20:::0;;-1:-1:-1;;;;;12271:19:0;::::1;;::::0;;;:12:::1;:19;::::0;;;;:42;;;12328:25:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12328:25:0::1;::::0;;::::1;::::0;;12223:274:::1;;;12384:14;12375:5;:23;;;;;;;;:::i;:::-;::::0;12371:126:::1;;12433:9;:16:::0;;-1:-1:-1;;;;;12415:15:0;::::1;;::::0;;;:8:::1;:15;::::0;;;;:34;;;12464:21:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;12464:21:0::1;::::0;;::::1;::::0;;12371:126:::1;12533:5;-1:-1:-1::0;;;;;12522:24:0::1;;12540:5;12522:24;;;;;;:::i;:::-;;;;;;;;11414:1140;;11339:1215:::0;;:::o;138:20::-;;;;;;;:::i;25414:360::-;25476:7;25509:15;25500:5;:24;;;;;;;;:::i;:::-;;25496:54;;-1:-1:-1;;25533:10:0;:17;;25414:360::o;25496:54::-;25574:15;25565:5;:24;;;;;;;;:::i;:::-;;25561:54;;-1:-1:-1;;25598:10:0;:17;;25414:360::o;25561:54::-;25639:16;25630:5;:25;;;;;;;;:::i;:::-;;25626:56;;-1:-1:-1;;25664:11:0;:18;;25414:360::o;25626:56::-;25706:15;25697:5;:24;;;;;;;;:::i;:::-;;25693:54;;-1:-1:-1;;25730:10:0;:17;;25414:360::o;25693:54::-;-1:-1:-1;25765:1:0;;25414:360;-1:-1:-1;25414:360:0:o;1833:27::-;;;;;;;;;;;;24562:188;4248:5;;24647:7;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24675:19:0;::::1;24667:33;;;;-1:-1:-1::0;;;24667:33:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;24718:24:0;::::1;;::::0;;;:17:::1;:24;::::0;;;;;4292:1:::1;24562:188:::0;;;:::o;8128:348::-;8248:10;8213:4;8238:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;8238:30:0;;;;;;;;;;:49;-1:-1:-1;8238:49:0;8230:79;;;;-1:-1:-1;;;8230:79:0;;11191:2:1;8230:79:0;;;11173:21:1;11230:2;11210:18;;;11203:30;-1:-1:-1;;;11249:18:1;;;11242:47;11306:18;;8230:79:0;10989:341:1;8230:79:0;8330:10;8320:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;8320:30:0;;;;;;;;;:49;;8354:15;;8320:21;:49;;8354:15;;8320:49;:::i;5328:1026::-;5432:10;5397:4;5422:21;;;:9;:21;;;;;;:31;-1:-1:-1;5422:31:0;5414:45;;;;-1:-1:-1;;;5414:45:0;;9412:2:1;5414:45:0;;;9394:21:1;9451:1;9431:18;;;9424:29;-1:-1:-1;;;9469:18:1;;;9462:31;9510:18;;5414:45:0;9210:324:1;5414:45:0;5497:10;5470:18;5491:17;;;:5;:17;;;;;;;;;:37;;-1:-1:-1;;;;;;5512:16:0;;;;;;:5;:16;;;;;;;;5491:37;5470:58;;5545:13;5541:784;;;5632:10;5622:21;;;;:9;:21;;;;;:31;;5647:6;;5622:21;:31;;5647:6;;5622:31;:::i;:::-;;;;-1:-1:-1;5738:35:0;;-1:-1:-1;5754:10:0;5766:6;5738:15;:35::i;:::-;5846:17;5890:3;5876:10;:6;5885:1;5876:10;:::i;:::-;5875:18;;;;:::i;:::-;5866:27;;:6;:27;:::i;:::-;-1:-1:-1;;;;;5908:20:0;;;;;;:9;:20;;;;;:33;;5846:47;;-1:-1:-1;5846:47:0;;5908:20;;;:33;;5846:47;;5908:33;:::i;:::-;;;;-1:-1:-1;;5961:42:0;;160:25:1;;;-1:-1:-1;;;;;5961:42:0;;;5970:10;;-1:-1:-1;;;;;;;;;;;5961:42:0;148:2:1;133:18;5961:42:0;;;;;;;6023:52;;;7516:25:1;;;6070:4:0;7572:2:1;7557:18;;7550:50;-1:-1:-1;;;;;6023:52:0;;;6036:10;;-1:-1:-1;;;;;;;;;;;6023:52:0;7489:18:1;6023:52:0;;;;;;;5560:527;5541:784;;;6118:10;6108:21;;;;:9;:21;;;;;:31;;6133:6;;6108:21;:31;;6133:6;;6108:31;:::i;:::-;;;;-1:-1:-1;;;;;;;6154:20:0;;;;;;:9;:20;;;;;:30;;6178:6;;6154:20;:30;;6178:6;;6154:30;:::i;:::-;;;;-1:-1:-1;;6204:39:0;;160:25:1;;;-1:-1:-1;;;;;6204:39:0;;;6213:10;;-1:-1:-1;;;;;;;;;;;6204:39:0;148:2:1;133:18;6204:39:0;;;;;;;6263:50;;;7516:25:1;;;6307:5:0;7572:2:1;7557:18;;7550:50;-1:-1:-1;;;;;6263:50:0;;;6276:10;;-1:-1:-1;;;;;;;;;;;6263:50:0;7489:18:1;6263:50:0;;;;;;;5541:784;-1:-1:-1;6342:4:0;;5328:1026;-1:-1:-1;;;5328:1026:0:o;8732:160::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8804:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;8796:25;;;;-1:-1:-1::0;;;8796:25:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8832:11:0;::::1;8846:5;8832:11:::0;;;:5:::1;:11;::::0;;;;;:19;;-1:-1:-1;;8832:19:0::1;::::0;;8867:17;::::1;::::0;8846:5;8867:17:::1;8732:160:::0;:::o;15681:384::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15757:22:0;::::1;15749:36;;;;-1:-1:-1::0;;;15749:36:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15816:15:0;::::1;15796:17;15816:15:::0;;;:5:::1;:15;::::0;;;;15860:10;;15816:15;;15860:10:::1;::::0;;::::1;::::0;15889:5:::1;:23;;;;;;;;:::i;:::-;::::0;15881:37:::1;;;;-1:-1:-1::0;;;15881:37:0::1;;;;;;;:::i;:::-;15939:36;15959:8;15969:5;15939:19;:36::i;:::-;15986:27:::0;;-1:-1:-1;;15986:27:0::1;::::0;;16029:28:::1;::::0;-1:-1:-1;;;;;16029:28:0;::::1;::::0;::::1;::::0;::::1;::::0;16051:5;;16029:28:::1;:::i;1901:30::-:0;;;;;;;;;;;;24396:154;24531:10;24455:7;24514:28;;;:16;:28;;;;;;;;;24482:17;:29;;;;;;:60;;24514:28;24482:60;:::i;:::-;24475:67;;24396:154;:::o;8528:198::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8597:18:0;::::1;8589:32;;;;-1:-1:-1::0;;;8589:32:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8641:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;::::1;;8640:12;8632:26;;;::::0;-1:-1:-1;;;8632:26:0;;11749:2:1;8632:26:0::1;::::0;::::1;11731:21:1::0;11788:1;11768:18;;;11761:29;-1:-1:-1;;;11806:18:1;;;11799:31;11847:18;;8632:26:0::1;11547:324:1::0;8632:26:0::1;-1:-1:-1::0;;;;;8669:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;:18;;-1:-1:-1;;8669:18:0::1;8683:4;8669:18;::::0;;8703:15;::::1;::::0;8669:11;8703:15:::1;8528:198:::0;:::o;1867:27::-;;;;;;;;;;;;2999;;;;;;;;;;;;24969:433;25033:7;25066:17;25057:5;:26;;;;;;;;:::i;:::-;;25053:58;;-1:-1:-1;;25092:12:0;:19;;24969:433::o;25053:58::-;25135:15;25126:5;:24;;;;;;;;:::i;:::-;;25122:54;;-1:-1:-1;;25159:10:0;:17;;24969:433::o;25122:54::-;25200:15;25191:5;:24;;;;;;;;:::i;:::-;;25187:54;;-1:-1:-1;;25224:10:0;:17;;24969:433::o;25187:54::-;25265:18;25256:5;:27;;;;;;;;:::i;:::-;;25252:60;;-1:-1:-1;;25292:13:0;:20;;24969:433::o;25252:60::-;25336:14;25327:5;:23;;;;;;;;:::i;:::-;;25323:52;;-1:-1:-1;;25359:9:0;:16;;24969:433::o;8940:587::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9151:23:0;::::1;::::0;;::::1;::::0;:50:::1;;-1:-1:-1::0;;;;;;9178:23:0;::::1;::::0;::::1;9151:50;:77;;;;-1:-1:-1::0;;;;;;9205:23:0;::::1;::::0;::::1;9151:77;:122;;;;-1:-1:-1::0;;;;;;9250:23:0;::::1;::::0;::::1;9151:122;:149;;;;-1:-1:-1::0;;;;;;9277:23:0;::::1;::::0;::::1;9151:149;:176;;;;-1:-1:-1::0;;;;;;9304:23:0;::::1;::::0;::::1;9151:176;9143:190;;;::::0;-1:-1:-1;;;9143:190:0;;12078:2:1;9143:190:0::1;::::0;::::1;12060:21:1::0;12117:1;12097:18;;;12090:29;-1:-1:-1;;;12135:18:1;;;12128:31;12176:18;;9143:190:0::1;11876:324:1::0;9143:190:0::1;9344:8;:20:::0;;-1:-1:-1;;;;;;9344:20:0;;::::1;-1:-1:-1::0;;;;;9344:20:0;;::::1;;::::0;;;9375:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;9406:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;9437:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;9468:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;9499:8:::1;:20:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;8940:587::o;1938:26::-;;;;;;;;;;;;26354:223;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26437:22:0;::::1;26429:36;;;;-1:-1:-1::0;;;26429:36:0::1;;;;;;;:::i;:::-;26476:12;:23:::0;;-1:-1:-1;;;;;;26476:23:0::1;-1:-1:-1::0;;;;;26476:23:0;::::1;;::::0;;26547:22:::1;::::0;26529:40:::1;::::0;:15:::1;:40;:::i;:::-;26510:16;:59:::0;-1:-1:-1;26354:223:0:o;24762:195::-;4248:5;;24849:7;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24877:22:0;::::1;24869:36;;;;-1:-1:-1::0;;;24869:36:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;24923:26:0::1;;::::0;;;:16:::1;:26;::::0;;;;;;24762:195::o;24162:::-;24327:10;24214:7;24321:17;;;:5;:17;;;;;;;;:28;;;;;24293:6;:18;;;;;;:25;;:56;;24321:28;24293:56;:::i;14506:1133::-;4248:5;;-1:-1:-1;;;;;4248:5:0;4234:10;:19;4226:33;;;;-1:-1:-1;;;4226:33:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14601:22:0;::::1;14593:36;;;;-1:-1:-1::0;;;14593:36:0::1;;;;;;;:::i;:::-;14657:14;14648:5;:23;;;;;;;;:::i;:::-;::::0;14640:37:::1;;;;-1:-1:-1::0;;;14640:37:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14718:15:0;::::1;14698:17;14718:15:::0;;;:5:::1;:15;::::0;;;;14765:10;;14718:15;;14765:10:::1;::::0;;::::1;::::0;14800:8:::1;:26;;;;;;;;:::i;:::-;;14796:149;;14843:39;14863:8;14873;14843:19;:39::i;:::-;14914:8;-1:-1:-1::0;;;;;14902:31:0::1;;14924:8;14902:31;;;;;;:::i;:::-;;;;;;;;14796:149;14965:18:::0;;14978:5;;14965:4;;-1:-1:-1;;14965:18:0::1;::::0;14978:5;14965:18:::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;15007:15:0::1;14998:5;:24;;;;;;;;:::i;:::-;::::0;14994:586:::1;;15066:10;:17:::0;;-1:-1:-1;;;;;15039:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:44;;;15098:25:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15098:25:0::1;::::0;;::::1;::::0;;14994:586:::1;;;15154:15;15145:5;:24;;;;;;;;:::i;:::-;::::0;15141:439:::1;;15213:10;:17:::0;;-1:-1:-1;;;;;15186:24:0;::::1;;::::0;;;:14:::1;:24:::0;;;;;:44;;;15245:25:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15245:25:0::1;::::0;;::::1;::::0;;15141:439:::1;;;15301:16;15292:5;:25;;;;;;;;:::i;:::-;::::0;15288:292:::1;;15362:11;:18:::0;;-1:-1:-1;;;;;15334:25:0;::::1;;::::0;;;:15:::1;:25;::::0;;;;:46;;;15395:26:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15395:26:0::1;::::0;;::::1;::::0;;15288:292:::1;;;15452:15;15443:5;:24;;;;;;;;:::i;:::-;::::0;15439:141:::1;;15511:10;:17:::0;;-1:-1:-1;;;;;15484:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;:44;;;15543:25:::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15543:25:0::1;::::0;;::::1;::::0;;15439:141:::1;15615:8;-1:-1:-1::0;;;;;15605:26:0::1;;15625:5;15605:26;;;;;;:::i;9578:1706::-:0;9669:17;9660:5;:26;;;;;;;;:::i;:::-;;9656:1621;;-1:-1:-1;;;;;9719:18:0;;9703:13;9719:18;;;:11;:18;;;;;;9772:12;9785:19;;9719:18;;9703:13;9785:23;;9807:1;;9785:23;:::i;:::-;9772:37;;;;;;;;:::i;:::-;;;;;;;;;;;9824:12;:19;;-1:-1:-1;;;;;9772:37:0;;;;-1:-1:-1;9772:37:0;;9837:5;;9824:19;;;;;;:::i;:::-;;;;;;;;;;;;;:31;;-1:-1:-1;;;;;;9824:31:0;-1:-1:-1;;;;;9824:31:0;;;;;;9870:22;;;;;:11;:22;;;;;;:30;;;9915:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;9915:18:0;;;;;-1:-1:-1;;;;;;9915:18:0;;;;;;;;;-1:-1:-1;;;;;9955:18:0;;;;:11;:18;;;;;9948:25;-1:-1:-1;9656:1621:0;;-1:-1:-1;9656:1621:0;;10004:15;9995:5;:24;;;;;;;;:::i;:::-;;9991:1286;;-1:-1:-1;;;;;10052:16:0;;10036:13;10052:16;;;:9;:16;;;;;;10103:10;10114:17;;10052:16;;10036:13;10114:21;;10134:1;;10114:21;:::i;:::-;10103:33;;;;;;;;:::i;:::-;;;;;;;;;;;10151:10;:17;;-1:-1:-1;;;;;10103:33:0;;;;-1:-1:-1;10103:33:0;;10162:5;;10151:17;;;;;;:::i;:::-;;;;;;;;;;;;;:29;;-1:-1:-1;;;;;;10151:29:0;-1:-1:-1;;;;;10151:29:0;;;;;;10195:20;;;;;:9;:20;;;;;;:28;;;10238:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;10238:16:0;;;;;-1:-1:-1;;;;;;10238:16:0;;;;;;;;;-1:-1:-1;;;;;10276:16:0;;;;:9;:16;;;;;10269:23;-1:-1:-1;9991:1286:0;;-1:-1:-1;9991:1286:0;;10323:15;10314:5;:24;;;;;;;;:::i;:::-;;10310:967;;-1:-1:-1;;;;;10371:16:0;;10355:13;10371:16;;;:9;:16;;;;;;10422:10;10433:17;;10371:16;;10355:13;10433:21;;10453:1;;10433:21;:::i;:::-;10422:33;;;;;;;;:::i;:::-;;;;;;;;;;;10470:10;:17;;-1:-1:-1;;;;;10422:33:0;;;;-1:-1:-1;10422:33:0;;10481:5;;10470:17;;;;;;:::i;:::-;;;;;;;;;;;;;:29;;-1:-1:-1;;;;;;10470:29:0;-1:-1:-1;;;;;10470:29:0;;;;;;10514:20;;;;;:9;:20;;;;;;:28;;;10557:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;10557:16:0;;;;;-1:-1:-1;;;;;;10557:16:0;;;;;;;;;-1:-1:-1;;;;;10595:16:0;;;;:9;:16;;;;;10588:23;-1:-1:-1;10310:967:0;;-1:-1:-1;10310:967:0;;10642:18;10633:5;:27;;;;;;;;:::i;:::-;;10629:648;;-1:-1:-1;;;;;10693:19:0;;10677:13;10693:19;;;:12;:19;;;;;;10747:13;10761:20;;10693:19;;10677:13;10761:24;;10784:1;;10761:24;:::i;:::-;10747:39;;;;;;;;:::i;:::-;;;;;;;;;;;10801:13;:20;;-1:-1:-1;;;;;10747:39:0;;;;-1:-1:-1;10747:39:0;;10815:5;;10801:20;;;;;;:::i;:::-;;;;;;;;;;;;;:32;;-1:-1:-1;;;;;;10801:32:0;-1:-1:-1;;;;;10801:32:0;;;;;;10848:23;;;;;:12;:23;;;;;;:31;;;10894:13;:19;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;10894:19:0;;;;;-1:-1:-1;;;;;;10894:19:0;;;;;;;;;-1:-1:-1;;;;;10935:19:0;;;;:12;:19;;;;;10928:26;-1:-1:-1;10629:648:0;;-1:-1:-1;10629:648:0;;10985:14;10976:5;:23;;;;;;;;:::i;:::-;;10972:305;;-1:-1:-1;;;;;11032:15:0;;11016:13;11032:15;;;:8;:15;;;;;;11082:9;11092:16;;11032:15;;11016:13;11092:20;;11111:1;;11092:20;:::i;:::-;11082:31;;;;;;;;:::i;:::-;;;;;;;;;;;11128:9;:16;;-1:-1:-1;;;;;11082:31:0;;;;-1:-1:-1;11082:31:0;;11138:5;;11128:16;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;11128:28:0;-1:-1:-1;;;;;11128:28:0;;;;;;11171:19;;;;;:8;:19;;;;;;:27;;;11213:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;11213:15:0;;;;;-1:-1:-1;;;;;;11213:15:0;;;;;;;;;-1:-1:-1;;;;;11250:15:0;;;;:8;:15;;;;;11243:22;-1:-1:-1;;10972:305:0;9578:1706;;:::o;16107:1655::-;16215:20;16253:3;16239:10;:6;16248:1;16239:10;:::i;:::-;16238:18;;;;:::i;:::-;461:42;16267:21;;;;:9;:21;;;:37;;16215:41;;-1:-1:-1;16215:41:0;;16267:21;;;:37;;16215:41;;16267:37;:::i;:::-;;;;-1:-1:-1;;16320:42:0;;160:25:1;;;461:42:0;;-1:-1:-1;;;;;16320:42:0;;;-1:-1:-1;;;;;;;;;;;16320:42:0;148:2:1;133:18;16320:42:0;;;;;;;16431:18;16468:4;16453:11;:6;16462:2;16453:11;:::i;:::-;16452:20;;;;:::i;:::-;16501:4;16483:24;;;;:9;:24;;;;;:38;;16431:41;;-1:-1:-1;16431:41:0;;16483:24;;;:38;;16431:41;;16483:38;:::i;:::-;;;;-1:-1:-1;;16537:43:0;;160:25:1;;;16562:4:0;;-1:-1:-1;;;;;16537:43:0;;;-1:-1:-1;;;;;;;;;;;16537:43:0;148:2:1;133:18;16537:43:0;;;;;;;16626:30;16645:10;16626:18;:30::i;:::-;16744:24;16787:4;16772:11;:6;16781:2;16772:11;:::i;:::-;16771:20;;;;:::i;:::-;16744:47;-1:-1:-1;16846:18:0;16893:3;16868:21;16744:47;16887:2;16868:21;:::i;:::-;16867:29;;;;:::i;:::-;16917:8;;-1:-1:-1;;;;;16917:8:0;16907:19;;;;:9;:19;;;;;:33;;16846:50;;-1:-1:-1;16846:50:0;;16907:19;;;:33;;16846:50;;16907:33;:::i;:::-;;;;-1:-1:-1;;16973:8:0;;16956:38;;160:25:1;;;-1:-1:-1;;;;;16973:8:0;;;;16956:38;;;-1:-1:-1;;;;;;;;;;;16956:38:0;148:2:1;133:18;16956:38:0;;;;;;;17052:21;17102:3;17077:21;:16;17096:2;17077:21;:::i;:::-;17076:29;;;;:::i;:::-;17126:8;;-1:-1:-1;;;;;17126:8:0;17116:19;;;;:9;:19;;;;;:36;;17052:53;;-1:-1:-1;17052:53:0;;17116:19;;;:36;;17052:53;;17116:36;:::i;:::-;;;;-1:-1:-1;;17185:8:0;;17168:41;;160:25:1;;;-1:-1:-1;;;;;17185:8:0;;;;17168:41;;;-1:-1:-1;;;;;;;;;;;17168:41:0;148:2:1;133:18;17168:41:0;;;;;;;17240:8;;-1:-1:-1;;;;;17240:8:0;17230:19;;;;:9;:19;;;;;:36;;17253:13;;17230:19;:36;;17253:13;;17230:36;:::i;:::-;;;;-1:-1:-1;;17299:8:0;;17282:41;;160:25:1;;;-1:-1:-1;;;;;17299:8:0;;;;17282:41;;;-1:-1:-1;;;;;;;;;;;17282:41:0;148:2:1;133:18;17282:41:0;;;;;;;17354:8;;-1:-1:-1;;;;;17354:8:0;17344:19;;;;:9;:19;;;;;:36;;17367:13;;17344:19;:36;;17367:13;;17344:36;:::i;:::-;;;;-1:-1:-1;;17413:8:0;;17396:41;;160:25:1;;;-1:-1:-1;;;;;17413:8:0;;;;17396:41;;;-1:-1:-1;;;;;;;;;;;17396:41:0;148:2:1;133:18;17396:41:0;;;;;;;17468:8;;-1:-1:-1;;;;;17468:8:0;17458:19;;;;:9;:19;;;;;:36;;17481:13;;17458:19;:36;;17481:13;;17458:36;:::i;:::-;;;;-1:-1:-1;;17527:8:0;;17510:41;;160:25:1;;;-1:-1:-1;;;;;17527:8:0;;;;17510:41;;;-1:-1:-1;;;;;;;;;;;17510:41:0;148:2:1;133:18;17510:41:0;;;;;;;17606:18;17653:3;17628:21;:16;17647:2;17628:21;:::i;:::-;17627:29;;;;:::i;:::-;17677:8;;-1:-1:-1;;;;;17677:8:0;17667:19;;;;:9;:19;;;;;:33;;17606:50;;-1:-1:-1;17606:50:0;;17667:19;;;:33;;17606:50;;17667:33;:::i;:::-;;;;-1:-1:-1;;17733:8:0;;17716:38;;160:25:1;;;-1:-1:-1;;;;;17733:8:0;;;;17716:38;;;-1:-1:-1;;;;;;;;;;;17716:38:0;148:2:1;133:18;17716:38:0;;;;;;;16173:1589;;;;;;16107:1655;;:::o;13010:1441::-;13107:15;13098:5;:24;;;;;;;;:::i;:::-;;13094:1350;;-1:-1:-1;;;;;13155:24:0;;13139:13;13155:24;;;:14;:24;;;;;;13213:10;13224:17;;13155:24;;13139:13;13224:21;;13244:1;;13224:21;:::i;:::-;13213:33;;;;;;;;:::i;:::-;;;;;;;;;;;13261:10;:17;;-1:-1:-1;;;;;13213:33:0;;;;-1:-1:-1;13213:33:0;;13272:5;;13261:17;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;13261:28:0;-1:-1:-1;;;;;13261:28:0;;;;;;13304:24;;;;;:14;:24;;;;;;:32;;;13351:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;13351:16:0;;;;;-1:-1:-1;;;;;;13351:16:0;;;;;;;;;-1:-1:-1;;;;;13389:24:0;;;;:14;:24;;;;;13382:31;-1:-1:-1;13094:1350:0;;-1:-1:-1;13094:1350:0;;13444:15;13435:5;:24;;;;;;;;:::i;:::-;;13431:1013;;-1:-1:-1;;;;;13492:24:0;;13476:13;13492:24;;;:14;:24;;;;;;;;13561:17;;13492:24;;13476:13;13492:24;13561:21;;13581:1;;13561:21;:::i;:::-;13550:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13550:33:0;13531:52;;13618:8;13598:10;13609:5;13598:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;13598:28:0;-1:-1:-1;;;;;13598:28:0;;;;;;13641:24;;;;;:14;:24;;;;;:32;;;13688:16;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;13688:16:0;;;;;-1:-1:-1;;;;;;13688:16:0;;;;;;;;;-1:-1:-1;;;;;13726:24:0;;;;:14;:24;;;;;13719:31;-1:-1:-1;13431:1013:0;;-1:-1:-1;13431:1013:0;;13781:16;13772:5;:25;;;;;;;;:::i;:::-;;13768:676;;-1:-1:-1;;;;;13830:25:0;;13814:13;13830:25;;;:15;:25;;;;;;13889:11;13901:18;;13830:25;;13814:13;13901:22;;13922:1;;13901:22;:::i;:::-;13889:35;;;;;;;;:::i;:::-;;;;;;;;;;;13939:11;:18;;-1:-1:-1;;;;;13889:35:0;;;;-1:-1:-1;13889:35:0;;13951:5;;13939:18;;;;;;:::i;:::-;;;;;;;;;;;;;:29;;-1:-1:-1;;;;;;13939:29:0;-1:-1:-1;;;;;13939:29:0;;;;;;13983:25;;;;;:15;:25;;;;;;:33;;;14031:11;:17;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;14031:17:0;;;;;-1:-1:-1;;;;;;14031:17:0;;;;;;;;;-1:-1:-1;;;;;14070:25:0;;;;:15;:25;;;;;14063:32;-1:-1:-1;13768:676:0;;-1:-1:-1;13768:676:0;;14126:15;14117:5;:24;;;;;;;;:::i;:::-;;14113:331;;-1:-1:-1;;;;;14174:24:0;;14158:13;14174:24;;;:14;:24;;;;;;14232:10;14243:17;;14174:24;;14158:13;14243:21;;14263:1;;14243:21;:::i;:::-;14232:33;;;;;;;;:::i;:::-;;;;;;;;;;;14280:10;:17;;-1:-1:-1;;;;;14232:33:0;;;;-1:-1:-1;14232:33:0;;14291:5;;14280:17;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;14280:28:0;-1:-1:-1;;;;;14280:28:0;;;;;;14323:24;;;;;:14;:24;;;;;;:32;;;14370:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;14370:16:0;;;;;-1:-1:-1;;;;;;14370:16:0;;;;;;;;;-1:-1:-1;;;;;14408:24:0;;;;:14;:24;;;;;14401:31;-1:-1:-1;;13010:1441:0;;:::o;17870:5000::-;17999:20;18022:14;18035:1;18022:10;:14;:::i;:::-;17999:37;-1:-1:-1;18047:19:0;18086:1;18069:14;:10;18082:1;18069:14;:::i;:::-;:18;;;;:::i;:::-;18047:40;-1:-1:-1;18146:16:0;;18142:2521;;18466:12;:19;18179:29;;18466:40;;1561:1;;18466:40;:::i;:::-;18408:10;:17;:36;;1508:1;;18408:36;:::i;:::-;18350:10;:17;:36;;1457:1;;18350:36;:::i;:::-;18286:13;:20;:42;;1406:1;;18286:42;:::i;:::-;18230:9;:16;:34;;1352:1;;18230:34;:::i;:::-;18229:100;;;;:::i;:::-;:158;;;;:::i;:::-;:216;;;;:::i;:::-;:278;;;;:::i;:::-;18179:328;-1:-1:-1;18540:25:0;;18536:2116;;18586:27;18616:36;18631:21;18616:12;:36;:::i;:::-;18586:66;-1:-1:-1;18671:17:0;18691:36;18706:21;18691:12;:36;:::i;:::-;18768:9;:16;18671:56;;-1:-1:-1;18768:20:0;18764:302;;18813:25;18841:37;1352:1;18841:19;:37;:::i;:::-;18813:65;;18906:9;18901:146;18925:9;:16;18921:20;;18901:146;;;19006:17;18975:6;:20;18982:9;18992:1;18982:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;18982:12:0;18975:20;;;;;;;;;;;;18982:12;18975:27;:48;;:27;;18982:12;18975:48;;;;;:::i;:::-;;;;-1:-1:-1;;18943:3:0;;18901:146;;;;18790:276;18764:302;19106:13;:20;:24;19102:326;;19155:29;19187:41;1406:1;19187:19;:41;:::i;:::-;19155:73;;19256:9;19251:158;19275:13;:20;19271:24;;19251:158;;;19364:21;19329:6;:24;19336:13;19350:1;19336:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19336:16:0;19329:24;;;;;;;;;;;;19336:16;19329:31;:56;;:31;;19336:16;19329:56;;;;;:::i;:::-;;;;-1:-1:-1;;19297:3:0;;19251:158;;;;19132:296;19102:326;19468:10;:17;:21;19464:308;;19514:26;19543:38;1457:1;19543:19;:38;:::i;:::-;19514:67;;19609:9;19604:149;19628:10;:17;19624:21;;19604:149;;;19711:18;19679:6;:21;19686:10;19697:1;19686:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19686:13:0;19679:21;;;;;;;;;;;;19686:13;19679:28;:50;;:28;;19686:13;19679:50;;;;;:::i;:::-;;;;-1:-1:-1;;19647:3:0;;19604:149;;;;19491:281;19464:308;19812:10;:17;:21;19808:308;;19858:26;19887:38;1508:1;19887:19;:38;:::i;:::-;19858:67;;19953:9;19948:149;19972:10;:17;19968:21;;19948:149;;;20055:18;20023:6;:21;20030:10;20041:1;20030:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20030:13:0;20023:21;;;;;;;;;;;;20030:13;20023:28;:50;;:28;;20030:13;20023:50;;;;;:::i;:::-;;;;-1:-1:-1;;19991:3:0;;19948:149;;;;19835:281;19808:308;20156:12;:19;:23;20152:485;;20204:28;20235:40;1561:1;20235:19;:40;:::i;:::-;20204:71;-1:-1:-1;20302:13:0;;20298:143;;20344:33;20368:9;20344:33;;:::i;:::-;;;20416:1;20404:13;;20298:143;20468:9;20463:155;20487:12;:19;20483:23;;20463:155;;;20574:20;20540:6;:23;20547:12;20560:1;20547:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20547:15:0;20540:23;;;;;;;;;;;;20547:15;20540:30;:54;;:30;;20547:15;20540:54;;;;;:::i;:::-;;;;-1:-1:-1;;20508:3:0;;20463:155;;;;20181:456;20152:485;18567:2085;;18536:2116;18164:2499;18142:2521;20721:15;;20717:2146;;20997:10;:17;20753:28;;20997:42;;2730:1;;20997:42;:::i;:::-;20931:11;:18;:44;;2673:1;;20931:44;:::i;:::-;20867:10;:17;:42;;2615:1;;20867:42;:::i;:::-;20803:10;:17;:42;;2558:1;;20803:42;:::i;:::-;20802:108;;;;:::i;:::-;:174;;;;:::i;:::-;:238;;;;:::i;:::-;20753:287;-1:-1:-1;21073:24:0;;21069:1783;;21118:27;21148:34;21162:20;21148:11;:34;:::i;:::-;21118:64;-1:-1:-1;21201:17:0;21221:34;21235:20;21221:11;:34;:::i;:::-;21296:10;:17;21201:54;;-1:-1:-1;21296:21:0;21292:317;;21342:26;21371:44;2558:1;21371:19;:44;:::i;:::-;21342:73;;21443:9;21438:152;21462:10;:17;21458:21;;21438:152;;;21548:18;21513:5;:20;21519:10;21530:1;21519:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21519:13:0;21513:20;;;;;;;;;;;;21519:13;21513:31;:53;;:31;;21519:13;21513:53;;;;;:::i;:::-;;;;-1:-1:-1;;21481:3:0;;21438:152;;;;21319:290;21292:317;21649:10;:17;:21;21645:317;;21695:26;21724:44;2615:1;21724:19;:44;:::i;:::-;21695:73;;21796:9;21791:152;21815:10;:17;21811:21;;21791:152;;;21901:18;21866:5;:20;21872:10;21883:1;21872:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21872:13:0;21866:20;;;;;;;;;;;;21872:13;21866:31;:53;;:31;;21872:13;21866:53;;;;;:::i;:::-;;;;-1:-1:-1;;21834:3:0;;21791:152;;;;21672:290;21645:317;22002:11;:18;:22;21998:323;;22049:27;22079:45;2673:1;22079:19;:45;:::i;:::-;22049:75;;22152:9;22147:155;22171:11;:18;22167:22;;22147:155;;;22259:19;22223:5;:21;22229:11;22241:1;22229:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22229:14:0;22223:21;;;;;;;;;;;;22229:14;22223:32;:55;;:32;;22229:14;22223:55;;;;;:::i;:::-;;;;-1:-1:-1;;22191:3:0;;22147:155;;;;22026:295;21998:323;22361:10;:17;:21;22357:480;;22407:26;22436:44;2730:1;22436:19;:44;:::i;:::-;22407:73;-1:-1:-1;22507:13:0;;22503:141;;22549:31;22571:9;22549:31;;:::i;:::-;;;22619:1;22607:13;;22503:141;22671:9;22666:152;22690:10;:17;22686:21;;22666:152;;;22776:18;22741:5;:20;22747:10;22758:1;22747:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22747:13:0;22741:20;;;;;;;;;;;;22747:13;22741:31;:53;;:31;;22747:13;22741:53;;;;;:::i;:::-;;;;-1:-1:-1;;22709:3:0;;22666:152;;;;22384:453;22357:480;21099:1753;;21069:1783;20738:2125;20717:2146;17927:4943;;17870:5000;:::o;196:173:1:-;264:20;;-1:-1:-1;;;;;313:31:1;;303:42;;293:70;;359:1;356;349:12;374:254;442:6;450;503:2;491:9;482:7;478:23;474:32;471:52;;;519:1;516;509:12;471:52;542:29;561:9;542:29;:::i;:::-;532:39;618:2;603:18;;;;590:32;;-1:-1:-1;;;374:254:1:o;633:548::-;745:4;774:2;803;792:9;785:21;835:6;829:13;878:6;873:2;862:9;858:18;851:34;903:1;913:140;927:6;924:1;921:13;913:140;;;1022:14;;;1018:23;;1012:30;988:17;;;1007:2;984:26;977:66;942:10;;913:140;;;917:3;1102:1;1097:2;1088:6;1077:9;1073:22;1069:31;1062:42;1172:2;1165;1161:7;1156:2;1148:6;1144:15;1140:29;1129:9;1125:45;1121:54;1113:62;;;;633:548;;;;:::o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;:::-;1519:39;1378:186;-1:-1:-1;;;1378:186:1:o;1777:127::-;1838:10;1833:3;1829:20;1826:1;1819:31;1869:4;1866:1;1859:15;1893:4;1890:1;1883:15;1909:140;1990:1;1983:5;1980:12;1970:46;;1996:18;;:::i;:::-;2025;;1909:140::o;2054:278::-;2227:2;2212:18;;2239:44;2216:9;2265:6;2239:44;:::i;:::-;2319:6;2314:2;2303:9;2299:18;2292:34;2054:278;;;;;:::o;2337:328::-;2414:6;2422;2430;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2522:29;2541:9;2522:29;:::i;:::-;2512:39;;2570:38;2604:2;2593:9;2589:18;2570:38;:::i;:::-;2560:48;;2655:2;2644:9;2640:18;2627:32;2617:42;;2337:328;;;;;:::o;2670:180::-;2729:6;2782:2;2770:9;2761:7;2757:23;2753:32;2750:52;;;2798:1;2795;2788:12;2750:52;-1:-1:-1;2821:23:1;;2670:180;-1:-1:-1;2670:180:1:o;3044:141::-;3126:1;3119:5;3116:12;3106:46;;3132:18;;:::i;3190:279::-;3363:2;3348:18;;3375:45;3352:9;3402:6;3375:45;:::i;3474:151::-;3550:20;;3599:1;3589:12;;3579:40;;3615:1;3612;3605:12;3630:281;3711:6;3719;3772:2;3760:9;3751:7;3747:23;3743:32;3740:52;;;3788:1;3785;3778:12;3740:52;3811:29;3830:9;3811:29;:::i;:::-;3801:39;;3859:46;3901:2;3890:9;3886:18;3859:46;:::i;:::-;3849:56;;3630:281;;;;;:::o;3916:150::-;3991:20;;4040:1;4030:12;;4020:40;;4056:1;4053;4046:12;4071:206;4143:6;4196:2;4184:9;4175:7;4171:23;4167:32;4164:52;;;4212:1;4209;4202:12;4164:52;4235:36;4261:9;4235:36;:::i;4282:207::-;4354:6;4407:2;4395:9;4386:7;4382:23;4378:32;4375:52;;;4423:1;4420;4413:12;4375:52;4446:37;4473:9;4446:37;:::i;4494:260::-;4562:6;4570;4623:2;4611:9;4602:7;4598:23;4594:32;4591:52;;;4639:1;4636;4629:12;4591:52;4662:29;4681:9;4662:29;:::i;:::-;4652:39;;4710:38;4744:2;4733:9;4729:18;4710:38;:::i;4759:559::-;4863:6;4871;4879;4887;4895;4903;4956:3;4944:9;4935:7;4931:23;4927:33;4924:53;;;4973:1;4970;4963:12;4924:53;4996:29;5015:9;4996:29;:::i;:::-;4986:39;;5044:38;5078:2;5067:9;5063:18;5044:38;:::i;:::-;5034:48;;5101:38;5135:2;5124:9;5120:18;5101:38;:::i;:::-;5091:48;;5158:38;5192:2;5181:9;5177:18;5158:38;:::i;:::-;5148:48;;5215:39;5249:3;5238:9;5234:19;5215:39;:::i;:::-;5205:49;;5273:39;5307:3;5296:9;5292:19;5273:39;:::i;:::-;5263:49;;4759:559;;;;;;;;:::o;5323:280::-;5404:6;5412;5465:2;5453:9;5444:7;5440:23;5436:32;5433:52;;;5481:1;5478;5471:12;5433:52;5504:29;5523:9;5504:29;:::i;:::-;5494:39;;5552:45;5593:2;5582:9;5578:18;5552:45;:::i;5608:324::-;5810:2;5792:21;;;5849:1;5829:18;;;5822:29;-1:-1:-1;;;5882:2:1;5867:18;;5860:31;5923:2;5908:18;;5608:324::o;5937:::-;6139:2;6121:21;;;6178:1;6158:18;;;6151:29;-1:-1:-1;;;6211:2:1;6196:18;;6189:31;6252:2;6237:18;;5937:324::o;6953:127::-;7014:10;7009:3;7005:20;7002:1;6995:31;7045:4;7042:1;7035:15;7069:4;7066:1;7059:15;7085:128;7152:9;;;7173:11;;;7170:37;;;7187:18;;:::i;7218:125::-;7283:9;;;7304:10;;;7301:36;;;7317:18;;:::i;7611:380::-;7690:1;7686:12;;;;7733;;;7754:61;;7808:4;7800:6;7796:17;7786:27;;7754:61;7861:2;7853:6;7850:14;7830:18;7827:38;7824:161;;7907:10;7902:3;7898:20;7895:1;7888:31;7942:4;7939:1;7932:15;7970:4;7967:1;7960:15;7824:161;;7611:380;;;:::o;8997:208::-;9142:2;9127:18;;9154:45;9131:9;9181:6;9154:45;:::i;9539:168::-;9612:9;;;9643;;9660:15;;;9654:22;;9640:37;9630:71;;9681:18;;:::i;9712:127::-;9773:10;9768:3;9764:20;9761:1;9754:31;9804:4;9801:1;9794:15;9828:4;9825:1;9818:15;9844:120;9884:1;9910;9900:35;;9915:18;;:::i;:::-;-1:-1:-1;9949:9:1;;9844:120::o;10660:324::-;10862:2;10844:21;;;10901:1;10881:18;;;10874:29;-1:-1:-1;;;10934:2:1;10919:18;;10912:31;10975:2;10960:18;;10660:324::o;11335:207::-;11480:2;11465:18;;11492:44;11469:9;11518:6;11492:44;:::i;12205:127::-;12266:10;12261:3;12257:20;12254:1;12247:31;12297:4;12294:1;12287:15;12321:4;12318:1;12311:15;12337:127;12398:10;12393:3;12389:20;12386:1;12379:31;12429:4;12426:1;12419:15;12453:4;12450:1;12443:15;12469:112;12501:1;12527;12517:35;;12532:18;;:::i;:::-;-1:-1:-1;12566:9:1;;12469:112::o

Swarm Source

ipfs://886be46643869de2a8cfd894d917135c98f7103b8784c5943e413cc4ad2a8fb3
Loading...
Loading
Loading...
Loading
[ 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.