ETH Price: $3,686.66 (+2.65%)

Token

ERC-20: Bounty Hunter Token (BHT)
 

Overview

Max Total Supply

10,000 BHT

Holders

349

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.0017205 BHT

Value
$0.00
0xdea4b83a71bae99a4ddb4a42e2732c0be6d9fb48
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x8639979E...96d70444b
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
BHT

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-11-23
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;


// Math operations with safety checks that throw on error
library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
  
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }
    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b);
        return c;
    }
  
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }
    
}

// Abstract contract for the full ERC 20 Token standard
contract ERC20 {
    
    function balanceOf(address _address) public view returns (uint256 balance);
    
    function transfer(address _to, uint256 _value) public returns (bool success);
    
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    
    function approve(address _spender, uint256 _value) public returns (bool success);
    
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    
}

contract UniSwap {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

// Token contract
contract BHT is ERC20, UniSwap {
    
    string public name = "Bounty Hunter Token";
    string public symbol = "BHT";
    uint8 public decimals = 18;
    // 总发行量1万个
    uint256 public totalSupply = 10000 * 10**18;
    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowed;
    // 合约管理者
    address public owner;
    
    /*****************uniswapp配对合约地址************/
    // uniswapp配对合约地址
    address public pairAddress;
    
    /*********************投资这一块*******************/
    // BHC合约的地址
    address public BHCAddress;
    // BHC授权交易
    bytes4 private constant SELECTOR = bytes4(
        keccak256(bytes("transfer(address,uint256)"))
    );
    // 上次提币的时间
    uint256 public lastTime = 0;
    // 30天只能转出一次; 24个小时乘以30天;
    uint256 public monthTime;
    // 提取投资的时间; 24个小时乘以投资的类型的天数;
    uint256 public dayTime;
    // 用户每隔7天可以提现奖励一次;
    uint256 public wTime;
    // 一个只能转出的数量, 一千个
    uint256 tokenNumber = 1000 * 10**18;
    // 地址的投资信息
    struct invest {
        // 投资的类型 30,90,180,3600
        uint256 genre;
        // 开始的时间
        uint256 time;
        // 可提现的时间
        uint256 withdrawTime;
        // 投资的金额BHT
        uint256 money;
        // 赚取的BHC数量; (投资的加赚取的, 但是没有扣除书续费)
        uint256 earnBHC;
        // 可以提现的BHC数量; (扣除手续费之后的数量)
        uint256 withdrawBHC;
        // 是否已经提现
        bool withdraw;
    }
    // 用户的所有投资
    mapping(address => invest[]) public invests;
    // 用户的上级和推广收益, 以及下级数量
    struct inf {
        // 是否注册; ture已注册, false未注册
        bool register;
        // 上级, 也就是推荐人
        address super1;
        // 上上级
        address super2;
        // 下级数量
        uint256 juniors;
        // 推广的奖励; 也是BHC
        uint256 award;
        // 下级投资了多少钱
        uint256 group;
        // 下次可以提现奖励的时间; (每隔7天可以提现一次推荐奖励)
        uint256 time;
    }
    mapping(address => inf) public info;
    // 提现推广奖励的记录
    struct record {
        // 提现的时间
        uint256 time;
        // 提现的金额
        uint256 money;
    }
    mapping(address => record[]) public records;
    
    /*********************投资这一块*******************/
    
    // 构造函数;
    // 主网使用BHC地址, 时间是86400秒(也就是一天);
    // 测试网使用代币地址(0x...); 时间自定义(60) 
    constructor(address _BHCAddress, uint256 _day) public {
        balances[address(this)] = totalSupply;
        owner = msg.sender;
        // BHC代币合约地址
        BHCAddress = _BHCAddress;
        // 管理员一个月只能转出一次BHT;
        monthTime = _day * 30;
        // 提取投资的时间; 24个小时乘以投资的类型的天数;
        dayTime = _day;
        // 用户提现的间隔时间;
        wTime = _day * 7;
    }
    
    // 管理员修饰符
    modifier onlyOwner { 
        require(msg.sender == owner, "You are not owner");
        _;
    }
    
    function balanceOf(address _address) public view returns (uint256 balance) {
        return balances[_address];
    }
    
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(_to != address(0));
        require(balances[msg.sender] >= _value && _value > 0, "Insufficient balance or zero amount");
        balances[msg.sender] = SafeMath.sub(balances[msg.sender], _value);
        balances[_to] = SafeMath.add(balances[_to], _value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
    
    function approve(address _spender, uint256 _amount) public returns (bool success) {
        require(_spender != address(0));
        require((allowed[msg.sender][_spender] == 0) || (_amount == 0));
        allowed[msg.sender][_spender] = _amount;
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }
    
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_from != address(0) && _to != address(0));
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0, "Insufficient balance or zero amount");
        balances[_from] = SafeMath.sub(balances[_from], _value);
        balances[_to] = SafeMath.add(balances[_to], _value);
        allowed[_from][msg.sender] = SafeMath.sub(allowed[_from][msg.sender], _value);
        emit Transfer(_from, _to, _value);
        return true;
    }
    
    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    // 更换管理员
    function setOwner(address _owner) public onlyOwner returns (bool success) {
        require(_owner != address(0));
        owner= _owner;
        return true;
    }
    
    /************************************投资这一块***********************************/
    // 已注册修饰符
    modifier onlyRegistered {
        require(info[msg.sender].register, "You have not registered");
        _;
    }
    // 已投资的修饰符
    modifier onlyInvest {
        require(invests[msg.sender].length > 0, "You have not Invest");
        _;
    }
    
    // 注册事件
    event RegisterInvest(address indexed _super1, address indexed _address);
    // 锁仓投资事件
    event LockedInvest(address indexed _address, uint256 _value, uint256 _genre);
    // 提现锁仓投资事件
    event WithdrawInvest(address indexed _address, uint256 _value);
    // 提现推广奖励事件
    event WithdrawAward(address indexed _address, uint256 _value);
    
    
    // 管理员取出BHT; 每30天只能提币一次, 一次必须是1000个;
    function fetchBHT(address _address) public onlyOwner returns (bool success) {
        // 不能是0地址
        require(_address != address(0));
        require(balances[address(this)] >= tokenNumber, "Contract insufficient balance");
        if(lastTime == 0) {
            // 如果上次提币时间是0, 说明这是第一次提币;
            lastTime = block.timestamp;
        }else {
            // 如果不是0, 说明不是第一次提币; 需要判断时间有没有过30天;
            require(lastTime + monthTime < block.timestamp, "Time is not");
            lastTime += monthTime;
        }
        balances[_address] = SafeMath.add(balances[_address], tokenNumber);
        balances[address(this)] = SafeMath.sub(balances[address(this)], tokenNumber);
        emit Transfer(address(this), _address, tokenNumber);
        success = true;
    }
    
    // 管理员取出BHC
    function fetchBHC(address _to, uint256 _value) public onlyOwner returns (bool success2) {
        // 不能是0地址
        require(_to != address(0));
        (bool success, ) = BHCAddress.call(
            abi.encodeWithSelector(SELECTOR, _to, _value)
        );
        if(!success) {
            revert("transfer fail");
        }
        success2 = true;
    }
    
    // 管理员设置配对合约地址
    function setPairAddress(address _address) public onlyOwner returns (bool success) {
         // 不能是0地址
        require(_address != address(0));
        pairAddress = _address;
        success = true;
    }
    
    // 注册; 投资之前需要先进行一个注册操作, 梳理下上级身份;
    function registerInvest(address _super1) public returns (bool success) {
        // 注册人必须没有注册过;
        require(!(info[msg.sender].register), "You have been registered");
        // 如果推荐人是0地址; 就相当于是没有推荐人, 前端默认的0地址
        if(_super1 == address(0)) {
            // 已注册; 结束
            info[msg.sender].register = true;
            return true;
        }
        // 上级(也就是推荐人)必须是已经注册的地址;
        require(info[_super1].register, "The referee is not registered");
        // 修改注册人信息; 已注册, 赋值上级
        info[msg.sender].register = true;
        info[msg.sender].super1 = _super1;
        // 梳理上下级身份, 最多有二级;
        // 先处理上级; 下级数量加1;
        info[_super1].juniors += 1;
        // 判断有没有上上级;
        address super2 = info[_super1].super1;
        if(super2 != address(0)) {
            // 说明有上上级; 注册人添加上上级, 上上级的下级人数加1
            info[msg.sender].super2 = super2;
            info[super2].juniors += 1;
        }
        // 触发注册事件
        emit RegisterInvest(_super1, msg.sender);
        success = true;
    }
    
    // 锁仓投资;
    function lockedInvest(uint256 _value, uint256 _genre) public onlyRegistered returns (bool success) {
        // 锁仓类型只有四种; 30天平均月化8%, 90天平均月化9%, 180天平均月化10%, 360天平均月化12%;
        require(_genre == 30 || _genre == 90 || _genre == 180 || _genre == 360, "locked position type inexistence");
        // 判断BHT余额是否足够; 并且投资金额必须大于0;
        require(balances[msg.sender] >= _value && _value > 0, "Insufficient balance or zero amount");
        // 把用户投资的币放到合约里
        balances[msg.sender] = SafeMath.sub(balances[msg.sender], _value);
        balances[address(this)] = SafeMath.add(balances[address(this)], _value);
        emit Transfer(msg.sender, address(this), _value);
        
        // 计算投资的值对应的BHC数量;
        uint256 _value2 = getPro(_value);
        
        // 可提现时间
        uint256 wt = block.timestamp + dayTime * _genre;
        // 赚取金额BHC数量; (投资+收益, 但没有扣除手续费)
        uint256 eb;
        // 应该给到推广奖励的数量;
        uint256 award1;
        uint256 award2;
        if(_genre == 30) {
            // 计算投资赚取BHC的收益
            eb = _value2 + _value2 * 8/100;
            // 计算上级的推荐奖励
            award1 = _value2 * 8/100 * 20/100;
            award2 = _value2 * 8/100 * 10/100;
        }
        if(_genre == 90) {
            eb = _value2 + _value2 * 9/100 * 3;
            award1 = _value2 * 9/100 * 20/100 * 3;
            award2 = _value2 * 9/100 * 10/100 * 3;
        }
        if(_genre == 180) {
            eb = _value2 + _value2 * 10/100 * 6;
            award1 = _value2 * 10/100 * 20/100 * 6;
            award2 = _value2 * 10/100 * 10/100 * 6;
        }
        if(_genre == 360) {
            eb = _value2 + _value2 * 12/100 * 12;
            award1 = _value2 * 12/100 * 20/100 * 12;
            award2 = _value2 * 12/100 * 10/100 * 12;
        }
        // 可提现的金额BHC数量;
        uint256 wb = eb - (eb * 3/100);
        // 保存用户的投资信息; 类型,时间,可提现时间,投资金额BHT,赚取金额BHC,可以提现的金额BHC,未提现
        invest memory i = invest(_genre, block.timestamp, wt, _value, eb, wb, false);
        invests[msg.sender].push(i);
        
        // 给上级增加奖励;
        address super1 = info[msg.sender].super1;
        address super2 = info[msg.sender].super2;
        if(super1 != address(0)) {
           info[super1].award += award1;
           info[super1].group += _value;
        }
        if(super2 != address(0)) {
          info[super2].award += award2;
          info[super2].group += _value;
        }
        
        // 触发锁仓事件
        emit LockedInvest(msg.sender, _value, _genre);
        success = true;
    }
    
    // 提现锁仓投资; 通过索引进行提现, 提现的币是BHC, 收取的手续费也是BHC, 销毁的BHT
    function withdrawInvest(uint256 _index) public onlyInvest returns (bool success2) {
        // 索引必须小于投资数组的长度
        require(invests[msg.sender].length > _index, "invest is not");
        // 先获取索引对应的投资订单;
        invest memory i = invests[msg.sender][_index];
        // 提现时间, 是否提现, 销毁的BHT数量, 用户提现BHC的数量;
        uint256 wt = i.withdrawTime;
        bool w = i.withdraw;
        uint256 m = i.money;
        uint256 wb = i.withdrawBHC;
        // 判断这笔订单是否到达可提现时间
        require(block.timestamp > wt, "Time is not");
        // 判断这笔订单是否已经提现
        require(!w, "already withdraw");
        
        // 销毁投资的BHT;
        balances[address(this)] = SafeMath.sub(balances[address(this)], m);
        balances[address(0)] = SafeMath.add(balances[address(0)], m);
        emit Transfer(address(this), address(0), m);
        // 用户提现BHC
        (bool success, ) = BHCAddress.call(
            abi.encodeWithSelector(SELECTOR, msg.sender, wb)
        );
        if(!success) {
            revert("transfer fail");
        }
        
        // 修改状态; 已经提现
        invests[msg.sender][_index].withdraw = true;
        // 触发提现锁仓事件
        emit WithdrawInvest(msg.sender, wb);
        success2 = true;
         // 确认; 防止攻击者控制gas
        assert(invests[msg.sender][_index].withdraw);
    }
    
    // 提现推广奖励; 通过金额进行提取
    function withdrawAward(uint256 _money) public onlyInvest returns (bool success2) {
        // 可提现奖励的金额, 可提现的时间
        uint256 m = info[msg.sender].award;
        uint256 t = info[msg.sender].time;
        // 金额判断;
        require(m >= _money, "The amount is not enough");
        // 时间判断
        require(t < block.timestamp, "Time is not");
        
        // 实际转账的值; 扣除3%的手续费
        uint256 v = _money - (_money * 3/100);
        // 转账
       (bool success, ) = BHCAddress.call(
            abi.encodeWithSelector(SELECTOR, msg.sender, v)
        );
        if(!success) {
            revert("transfer fail");
        }
        // 修改数据
        info[msg.sender].award -= _money;
        // 触发提现推广奖励事件
        emit WithdrawAward(msg.sender, _money);
        // 重新修改可提现时间
        info[msg.sender].time = block.timestamp + wTime;
        // 保存提现记录
        record memory r = record(block.timestamp, _money);
        records[msg.sender].push(r);
        success2 = true;
    }
    
    // 查询用户所有的投资
    function getInvests(address _address) public view returns (invest[] memory r) {
        // 获取所有投资的数量
        uint256 l = invests[_address].length;
        // 创建定长数组对象
        r = new invest[](l);
        for(uint256 i = 0; i < l; i++) {
            r[i] = invests[_address][i];
        }
    }
    
    // 查询用户所有的提现记录
    function getRecords(address _address) public view returns (record[] memory r) {
        // 获取所有投资的数量
        uint256 l = records[_address].length;
        r = new record[](l);
        for(uint256 i = 0; i < l; i++) {
            r[i] = records[_address][i];
        }
    }
    
    // 查询用户的信息
    function getInfo(address _address) public view returns (inf memory r) {
        r = info[_address];
    }
    
    /* ----------------uniswap配对合约的交互----------------- */
    // 重写这个函数
    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        UniSwap uniswap = UniSwap(pairAddress);
        // 返回的值, 地址小的在前面, 大的在后面
        (_reserve0, _reserve1, _blockTimestampLast) = uniswap.getReserves();
    }
    
    // 根据当时的比例, 给出BHT计算出BHC;
    function getPro(uint256 _value) public view returns (uint256 v) {
        // 显示转换
        (uint256 _reserve0, uint256 _reserve1, ) = getReserves();
        require(address(this) != BHCAddress, "two address identical");
        if(address(this) < BHCAddress) {
            // 说明_reserve0对应的BHT, _reserve1对应BHC;
            v = _value * _reserve1 / _reserve0;
        }else {
            v = _value * _reserve0 / _reserve1;
        }
    }
    
  
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_BHCAddress","type":"address"},{"internalType":"uint256","name":"_day","type":"uint256"}],"payable":false,"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":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_genre","type":"uint256"}],"name":"LockedInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_super1","type":"address"},{"indexed":true,"internalType":"address","name":"_address","type":"address"}],"name":"RegisterInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"WithdrawAward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"WithdrawInvest","type":"event"},{"constant":true,"inputs":[],"name":"BHCAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dayTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"fetchBHC","outputs":[{"internalType":"bool","name":"success2","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"fetchBHT","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getInfo","outputs":[{"components":[{"internalType":"bool","name":"register","type":"bool"},{"internalType":"address","name":"super1","type":"address"},{"internalType":"address","name":"super2","type":"address"},{"internalType":"uint256","name":"juniors","type":"uint256"},{"internalType":"uint256","name":"award","type":"uint256"},{"internalType":"uint256","name":"group","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"internalType":"struct BHT.inf","name":"r","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getInvests","outputs":[{"components":[{"internalType":"uint256","name":"genre","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"},{"internalType":"uint256","name":"money","type":"uint256"},{"internalType":"uint256","name":"earnBHC","type":"uint256"},{"internalType":"uint256","name":"withdrawBHC","type":"uint256"},{"internalType":"bool","name":"withdraw","type":"bool"}],"internalType":"struct BHT.invest[]","name":"r","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"getPro","outputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRecords","outputs":[{"components":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"money","type":"uint256"}],"internalType":"struct BHT.record[]","name":"r","type":"tuple[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"info","outputs":[{"internalType":"bool","name":"register","type":"bool"},{"internalType":"address","name":"super1","type":"address"},{"internalType":"address","name":"super2","type":"address"},{"internalType":"uint256","name":"juniors","type":"uint256"},{"internalType":"uint256","name":"award","type":"uint256"},{"internalType":"uint256","name":"group","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"invests","outputs":[{"internalType":"uint256","name":"genre","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"},{"internalType":"uint256","name":"money","type":"uint256"},{"internalType":"uint256","name":"earnBHC","type":"uint256"},{"internalType":"uint256","name":"withdrawBHC","type":"uint256"},{"internalType":"bool","name":"withdraw","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_genre","type":"uint256"}],"name":"lockedInvest","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"monthTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"records","outputs":[{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"money","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_super1","type":"address"}],"name":"registerInvest","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setPairAddress","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_money","type":"uint256"}],"name":"withdrawAward","outputs":[{"internalType":"bool","name":"success2","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"withdrawInvest","outputs":[{"internalType":"bool","name":"success2","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526040518060400160405280601381526020017f426f756e74792048756e74657220546f6b656e000000000000000000000000008152506000908051906020019062000051929190620001fa565b506040518060400160405280600381526020017f4248540000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001fa565b506012600260006101000a81548160ff021916908360ff16021790555069021e19e0c9bab24000006003556000600955683635c9adc5dea00000600d55348015620000e957600080fd5b5060405162004e8f38038062004e8f83398181016040526200010f9190810190620002d7565b600354600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e8102600a8190555080600b8190555060078102600c8190555050506200038a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023d57805160ff19168380011785556200026e565b828001600101855582156200026e579182015b828111156200026d57825182559160200191906001019062000250565b5b5090506200027d919062000281565b5090565b620002a691905b80821115620002a257600081600090555060010162000288565b5090565b90565b600081519050620002ba8162000356565b92915050565b600081519050620002d18162000370565b92915050565b60008060408385031215620002eb57600080fd5b6000620002fb85828601620002a9565b92505060206200030e85828601620002c0565b9150509250929050565b600062000325826200032c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620003618162000318565b81146200036d57600080fd5b50565b6200037b816200034c565b81146200038757600080fd5b50565b614af5806200039a6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806380c0976e1161011a578063a8b08982116100ad578063d599cde31161007c578063d599cde3146106ac578063dd62ed3e146106dc578063e35ca1371461070c578063e4fd35f71461073c578063ffdd5cf11461077257610206565b8063a8b08982146105fe578063a9059cbb1461061c578063bde3a8ff1461064c578063bf11815d1461067c57610206565b806393e9a084116100e957806393e9a0841461056257806395d89b4114610580578063a0076e841461059e578063a22d4832146105ce57610206565b806380c0976e146104d757806382a6c0ac146104f5578063873ba152146105265780638da5cb5b1461054457610206565b806327e235e31161019d5780635d0e6b2a1161016c5780635d0e6b2a146103f9578063602146ad14610429578063699de59a1461044757806370a0823114610477578063806de144146104a757610206565b806327e235e31461035d578063313ce5671461038d578063393419d6146103ab5780635c658165146103c957610206565b806313af4035116101d957806313af4035146102af57806318160ddd146102df57806323b01a64146102fd57806323b872dd1461032d57610206565b806306fdde031461020b5780630902f1ac14610229578063095ea7b3146102495780630aae7a6b14610279575b600080fd5b6102136107a2565b60405161022091906145db565b60405180910390f35b610231610840565b604051610240939291906147d8565b60405180910390f35b610263600480360361025e9190810190613cbc565b6108fb565b6040516102709190614551565b60405180910390f35b610293600480360361028e9190810190613c08565b610aba565b6040516102a6979695949392919061456c565b60405180910390f35b6102c960048036036102c49190810190613c08565b610b49565b6040516102d69190614551565b60405180910390f35b6102e7610c5f565b6040516102f4919061480f565b60405180910390f35b61031760048036036103129190810190613c08565b610c65565b604051610324919061450d565b60405180910390f35b61034760048036036103429190810190613c6d565b610dde565b6040516103549190614551565b60405180910390f35b61037760048036036103729190810190613c08565b6111f6565b604051610384919061480f565b60405180910390f35b61039561120e565b6040516103a291906148c2565b60405180910390f35b6103b3611221565b6040516103c091906144a0565b60405180910390f35b6103e360048036036103de9190810190613c31565b611247565b6040516103f0919061480f565b60405180910390f35b610413600480360361040e9190810190613c08565b61126c565b6040516104209190614551565b60405180910390f35b610431611726565b60405161043e919061480f565b60405180910390f35b610461600480360361045c9190810190613d47565b61172c565b60405161046e9190614551565b60405180910390f35b610491600480360361048c9190810190613c08565b611bec565b60405161049e919061480f565b60405180910390f35b6104c160048036036104bc9190810190613cbc565b611c35565b6040516104ce9190614551565b60405180910390f35b6104df611e87565b6040516104ec919061480f565b60405180910390f35b61050f600480360361050a9190810190613cbc565b611e8d565b60405161051d92919061482a565b60405180910390f35b61052e611ecb565b60405161053b919061480f565b60405180910390f35b61054c611ed1565b60405161055991906144a0565b60405180910390f35b61056a611ef7565b604051610577919061480f565b60405180910390f35b610588611efd565b60405161059591906145db565b60405180910390f35b6105b860048036036105b39190810190613c08565b611f9b565b6040516105c5919061452f565b60405180910390f35b6105e860048036036105e39190810190613c08565b6120d1565b6040516105f59190614551565b60405180910390f35b6106066121e7565b60405161061391906144a0565b60405180910390f35b61063660048036036106319190810190613cbc565b61220d565b6040516106439190614551565b60405180910390f35b61066660048036036106619190810190613d70565b61245d565b6040516106739190614551565b60405180910390f35b61069660048036036106919190810190613d47565b612ce8565b6040516106a39190614551565b60405180910390f35b6106c660048036036106c19190810190613d47565b613396565b6040516106d3919061480f565b60405180910390f35b6106f660048036036106f19190810190613c31565b6134d8565b604051610703919061480f565b60405180910390f35b61072660048036036107219190810190613c08565b61355f565b6040516107339190614551565b60405180910390f35b61075660048036036107519190810190613cbc565b6138ad565b6040516107699796959493929190614853565b60405180910390f35b61078c60048036036107879190810190613c08565b613916565b60405161079991906147bd565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108385780601f1061080d57610100808354040283529160200191610838565b820191906000526020600020905b81548152906001019060200180831161081b57829003601f168201915b505050505081565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156108b157600080fd5b505afa1580156108c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108e99190810190613cf8565b80945081955082965050505050909192565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561093657600080fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806109c15750600082145b6109ca57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aa8919061480f565b60405180910390a36001905092915050565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154905087565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd29061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c1557600080fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60035481565b60606000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905080604051908082528060200260200182016040528015610ce857816020015b610cd5613a97565b815260200190600190039081610ccd5790505b50915060008090505b81811015610dd757600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610d4357fe5b90600052602060002090600702016040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050838281518110610dbf57fe5b60200260200101819052508080600101915050610cf1565b5050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610e495750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b610e5257600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610f1d575081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015610f295750600082115b610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f906145fd565b60405180910390fd5b610fb1600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611106600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e3919061480f565b60405180910390a3600190509392505050565b60046020528060005260406000206000915090505481565b600260009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f59061473d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611397576001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555060019050611721565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d9061461d565b60405180910390fd5b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146116c15780600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055505b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe4387edabc341f0b9d43a633c5f628898ad9b1c3ccfb5a3ccf77181389169bfd60405160405180910390a360019150505b919050565b600a5481565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a99061477d565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154905083821015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061469d565b60405180910390fd5b4281106118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061463d565b60405180910390fd5b6000606460038602816118d457fe5b04850390506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e7432353629000000000000008152508051906020012033846040516024016119649291906144bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516119ce9190614489565b6000604051808303816000865af19150503d8060008114611a0b576040519150601f19603f3d011682016040523d82523d6000602084013e611a10565b606091505b5050905080611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b9061475d565b60405180910390fd5b85600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f2357a297fd985aa0af40698b801a2408aab3a106491176bef5091be1beb7206b87604051611aea919061480f565b60405180910390a2600c544201600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550611b45613ad6565b6040518060400160405280428152602001888152509050601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050600195505050505050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d0157600080fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401611d8c9291906144e4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611df69190614489565b6000604051808303816000865af19150503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b5050905080611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061475d565b60405180910390fd5b600191505092915050565b600b5481565b60106020528160005260406000208181548110611ea657fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f935780601f10611f6857610100808354040283529160200191611f93565b820191906000526020600020905b815481529060010190602001808311611f7657829003601f168201915b505050505081565b60606000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090508060405190808252806020026020018201604052801561201e57816020015b61200b613af0565b8152602001906001900390816120035790505b50915060008090505b818110156120ca57601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061207957fe5b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508382815181106120b257fe5b60200260200101819052508080600101915050612027565b5050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a9061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219d57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156122975750600082115b6122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906145fd565b60405180910390fd5b61231f600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123ab600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161244b919061480f565b60405180910390a36001905092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906146fd565b60405180910390fd5b601e8214806124fd5750605a82145b80612508575060b482145b80612514575061016882145b612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a9061467d565b60405180910390fd5b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156125a25750600083115b6125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d8906145fd565b60405180910390fd5b61262a600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a5e565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b6600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a78565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612756919061480f565b60405180910390a3600061276984613396565b9050600083600b5402420190506000806000601e8714156127d1576064600886028161279157fe5b048501925060646014606460088802816127a757fe5b0402816127b057fe5b0491506064600a606460088802816127c457fe5b0402816127cd57fe5b0490505b605a871415612830576003606460098702816127e957fe5b0402850192506003606460146064600989028161280257fe5b04028161280b57fe5b0402915060036064600a6064600989028161282257fe5b04028161282b57fe5b040290505b60b487141561288f5760066064600a87028161284857fe5b0402850192506006606460146064600a89028161286157fe5b04028161286a57fe5b0402915060066064600a6064600a89028161288157fe5b04028161288a57fe5b040290505b6101688714156128ef57600c6064600c8702816128a857fe5b040285019250600c606460146064600c8902816128c157fe5b0402816128ca57fe5b04029150600c6064600a6064600c8902816128e157fe5b0402816128ea57fe5b040290505b6000606460038502816128fe57fe5b048403905061290b613b0a565b6040518060e001604052808a81526020014281526020018781526020018b8152602001868152602001838152602001600015158152509050600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055505050506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612bb05785600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055508b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612c855784600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055508b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055505b3373ffffffffffffffffffffffffffffffffffffffff167f75d272bf222da318651eb078751e4dcd0d0d78133bee4b1bcbbe297163bee3958d8d604051612ccd92919061482a565b60405180910390a26001995050505050505050505092915050565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d659061477d565b60405180910390fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de9906146dd565b60405180910390fd5b612dfa613b0a565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e4457fe5b90600052602060002090600702016040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050905060008160400151905060008260c00151905060008360600151905060008460a001519050834211612f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f139061463d565b60405180910390fd5b8215612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f549061465d565b60405180910390fd5b612fa6600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613032600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130d3919061480f565b60405180910390a36000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e7432353629000000000000008152508051906020012033846040516024016131669291906144bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516131d09190614489565b6000604051808303816000865af19150503d806000811461320d576040519150601f19603f3d011682016040523d82523d6000602084013e613212565b606091505b5050905080613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d9061475d565b60405180910390fd5b6001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089815481106132a257fe5b906000526020600020906007020160060160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167ff39ec6c12b05a6854eb3a8e81893f73e7ad92c22bf2c3bfad541eb5864d9047e83604051613310919061480f565b60405180910390a260019650600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061336657fe5b906000526020600020906007020160060160009054906101000a900460ff1661338b57fe5b505050505050919050565b60008060006133a3610840565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415613459576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134509061471d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610156134c25781818502816134ba57fe5b0492506134d1565b80828502816134cd57fe5b0492505b5050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e89061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561362b57600080fd5b600d54600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a6906146bd565b60405180910390fd5b600060095414156136c65742600981905550613721565b42600a54600954011061370e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137059061463d565b60405180910390fd5b600a546009600082825401925050819055505b61376c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613a78565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137fa600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613a5e565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405161389c919061480f565b60405180910390a360019050919050565b600e60205281600052604060002081815481106138c657fe5b9060005260206000209060070201600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b61391e613b49565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815250509050919050565b600082821115613a6d57600080fd5b818303905092915050565b600080828401905083811015613a8d57600080fd5b8091505092915050565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060e00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600081359050613bc381614a56565b92915050565b600081519050613bd881614a6d565b92915050565b600081359050613bed81614a84565b92915050565b600081519050613c0281614a9b565b92915050565b600060208284031215613c1a57600080fd5b6000613c2884828501613bb4565b91505092915050565b60008060408385031215613c4457600080fd5b6000613c5285828601613bb4565b9250506020613c6385828601613bb4565b9150509250929050565b600080600060608486031215613c8257600080fd5b6000613c9086828701613bb4565b9350506020613ca186828701613bb4565b9250506040613cb286828701613bde565b9150509250925092565b60008060408385031215613ccf57600080fd5b6000613cdd85828601613bb4565b9250506020613cee85828601613bde565b9150509250929050565b600080600060608486031215613d0d57600080fd5b6000613d1b86828701613bc9565b9350506020613d2c86828701613bc9565b9250506040613d3d86828701613bf3565b9150509250925092565b600060208284031215613d5957600080fd5b6000613d6784828501613bde565b91505092915050565b60008060408385031215613d8357600080fd5b6000613d9185828601613bde565b9250506020613da285828601613bde565b9150509250929050565b6000613db88383614381565b60e08301905092915050565b6000613dd0838361440f565b60408301905092915050565b613de581614993565b82525050565b613df481614981565b82525050565b613e0381614981565b82525050565b6000613e14826148fd565b613e1e8185614943565b9350613e29836148dd565b8060005b83811015613e5a578151613e418882613dac565b9750613e4c83614929565b925050600181019050613e2d565b5085935050505092915050565b6000613e7282614908565b613e7c8185614954565b9350613e87836148ed565b8060005b83811015613eb8578151613e9f8882613dc4565b9750613eaa83614936565b925050600181019050613e8b565b5085935050505092915050565b613ece816149a5565b82525050565b613edd816149a5565b82525050565b6000613eee82614913565b613ef88185614965565b9350613f08818560208601614a12565b80840191505092915050565b6000613f1f8261491e565b613f298185614970565b9350613f39818560208601614a12565b613f4281614a45565b840191505092915050565b6000613f5a602383614970565b91507f496e73756666696369656e742062616c616e6365206f72207a65726f20616d6f60008301527f756e7400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fc0601d83614970565b91507f5468652072656665726565206973206e6f7420726567697374657265640000006000830152602082019050919050565b6000614000600b83614970565b91507f54696d65206973206e6f740000000000000000000000000000000000000000006000830152602082019050919050565b6000614040601083614970565b91507f616c7265616479207769746864726177000000000000000000000000000000006000830152602082019050919050565b6000614080602083614970565b91507f6c6f636b656420706f736974696f6e207479706520696e6578697374656e63656000830152602082019050919050565b60006140c0601883614970565b91507f54686520616d6f756e74206973206e6f7420656e6f75676800000000000000006000830152602082019050919050565b6000614100601d83614970565b91507f436f6e747261637420696e73756666696369656e742062616c616e63650000006000830152602082019050919050565b6000614140600d83614970565b91507f696e76657374206973206e6f74000000000000000000000000000000000000006000830152602082019050919050565b6000614180601783614970565b91507f596f752068617665206e6f7420726567697374657265640000000000000000006000830152602082019050919050565b60006141c0601583614970565b91507f74776f2061646472657373206964656e746963616c00000000000000000000006000830152602082019050919050565b6000614200601883614970565b91507f596f752068617665206265656e207265676973746572656400000000000000006000830152602082019050919050565b6000614240600d83614970565b91507f7472616e73666572206661696c000000000000000000000000000000000000006000830152602082019050919050565b6000614280601383614970565b91507f596f752068617665206e6f7420496e76657374000000000000000000000000006000830152602082019050919050565b60006142c0601183614970565b91507f596f7520617265206e6f74206f776e65720000000000000000000000000000006000830152602082019050919050565b60e0820160008201516143096000850182613ec5565b50602082015161431c6020850182613deb565b50604082015161432f6040850182613deb565b506060820151614342606085018261444d565b506080820151614355608085018261444d565b5060a082015161436860a085018261444d565b5060c082015161437b60c085018261444d565b50505050565b60e082016000820151614397600085018261444d565b5060208201516143aa602085018261444d565b5060408201516143bd604085018261444d565b5060608201516143d0606085018261444d565b5060808201516143e3608085018261444d565b5060a08201516143f660a085018261444d565b5060c082015161440960c0850182613ec5565b50505050565b604082016000820151614425600085018261444d565b506020820151614438602085018261444d565b50505050565b614447816149b1565b82525050565b614456816149eb565b82525050565b614465816149eb565b82525050565b614474816149f5565b82525050565b61448381614a05565b82525050565b60006144958284613ee3565b915081905092915050565b60006020820190506144b56000830184613dfa565b92915050565b60006040820190506144d06000830185613ddc565b6144dd602083018461445c565b9392505050565b60006040820190506144f96000830185613dfa565b614506602083018461445c565b9392505050565b600060208201905081810360008301526145278184613e09565b905092915050565b600060208201905081810360008301526145498184613e67565b905092915050565b60006020820190506145666000830184613ed4565b92915050565b600060e082019050614581600083018a613ed4565b61458e6020830189613dfa565b61459b6040830188613dfa565b6145a8606083018761445c565b6145b5608083018661445c565b6145c260a083018561445c565b6145cf60c083018461445c565b98975050505050505050565b600060208201905081810360008301526145f58184613f14565b905092915050565b6000602082019050818103600083015261461681613f4d565b9050919050565b6000602082019050818103600083015261463681613fb3565b9050919050565b6000602082019050818103600083015261465681613ff3565b9050919050565b6000602082019050818103600083015261467681614033565b9050919050565b6000602082019050818103600083015261469681614073565b9050919050565b600060208201905081810360008301526146b6816140b3565b9050919050565b600060208201905081810360008301526146d6816140f3565b9050919050565b600060208201905081810360008301526146f681614133565b9050919050565b6000602082019050818103600083015261471681614173565b9050919050565b60006020820190508181036000830152614736816141b3565b9050919050565b60006020820190508181036000830152614756816141f3565b9050919050565b6000602082019050818103600083015261477681614233565b9050919050565b6000602082019050818103600083015261479681614273565b9050919050565b600060208201905081810360008301526147b6816142b3565b9050919050565b600060e0820190506147d260008301846142f3565b92915050565b60006060820190506147ed600083018661443e565b6147fa602083018561443e565b614807604083018461446b565b949350505050565b6000602082019050614824600083018461445c565b92915050565b600060408201905061483f600083018561445c565b61484c602083018461445c565b9392505050565b600060e082019050614868600083018a61445c565b614875602083018961445c565b614882604083018861445c565b61488f606083018761445c565b61489c608083018661445c565b6148a960a083018561445c565b6148b660c0830184613ed4565b98975050505050505050565b60006020820190506148d7600083018461447a565b92915050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061498c826149cb565b9050919050565b600061499e826149cb565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015614a30578082015181840152602081019050614a15565b83811115614a3f576000848401525b50505050565b6000601f19601f8301169050919050565b614a5f81614981565b8114614a6a57600080fd5b50565b614a76816149b1565b8114614a8157600080fd5b50565b614a8d816149eb565b8114614a9857600080fd5b50565b614aa4816149f5565b8114614aaf57600080fd5b5056fea365627a7a723158202b378c248610aa4b6c257364c9e4a4aa7f8ef0364e1f2708184a2b1fc3aeeffd6c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000af4bc7927721ec88ac507889309f5f62a0c8c5370000000000000000000000000000000000000000000000000000000000015180

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c806380c0976e1161011a578063a8b08982116100ad578063d599cde31161007c578063d599cde3146106ac578063dd62ed3e146106dc578063e35ca1371461070c578063e4fd35f71461073c578063ffdd5cf11461077257610206565b8063a8b08982146105fe578063a9059cbb1461061c578063bde3a8ff1461064c578063bf11815d1461067c57610206565b806393e9a084116100e957806393e9a0841461056257806395d89b4114610580578063a0076e841461059e578063a22d4832146105ce57610206565b806380c0976e146104d757806382a6c0ac146104f5578063873ba152146105265780638da5cb5b1461054457610206565b806327e235e31161019d5780635d0e6b2a1161016c5780635d0e6b2a146103f9578063602146ad14610429578063699de59a1461044757806370a0823114610477578063806de144146104a757610206565b806327e235e31461035d578063313ce5671461038d578063393419d6146103ab5780635c658165146103c957610206565b806313af4035116101d957806313af4035146102af57806318160ddd146102df57806323b01a64146102fd57806323b872dd1461032d57610206565b806306fdde031461020b5780630902f1ac14610229578063095ea7b3146102495780630aae7a6b14610279575b600080fd5b6102136107a2565b60405161022091906145db565b60405180910390f35b610231610840565b604051610240939291906147d8565b60405180910390f35b610263600480360361025e9190810190613cbc565b6108fb565b6040516102709190614551565b60405180910390f35b610293600480360361028e9190810190613c08565b610aba565b6040516102a6979695949392919061456c565b60405180910390f35b6102c960048036036102c49190810190613c08565b610b49565b6040516102d69190614551565b60405180910390f35b6102e7610c5f565b6040516102f4919061480f565b60405180910390f35b61031760048036036103129190810190613c08565b610c65565b604051610324919061450d565b60405180910390f35b61034760048036036103429190810190613c6d565b610dde565b6040516103549190614551565b60405180910390f35b61037760048036036103729190810190613c08565b6111f6565b604051610384919061480f565b60405180910390f35b61039561120e565b6040516103a291906148c2565b60405180910390f35b6103b3611221565b6040516103c091906144a0565b60405180910390f35b6103e360048036036103de9190810190613c31565b611247565b6040516103f0919061480f565b60405180910390f35b610413600480360361040e9190810190613c08565b61126c565b6040516104209190614551565b60405180910390f35b610431611726565b60405161043e919061480f565b60405180910390f35b610461600480360361045c9190810190613d47565b61172c565b60405161046e9190614551565b60405180910390f35b610491600480360361048c9190810190613c08565b611bec565b60405161049e919061480f565b60405180910390f35b6104c160048036036104bc9190810190613cbc565b611c35565b6040516104ce9190614551565b60405180910390f35b6104df611e87565b6040516104ec919061480f565b60405180910390f35b61050f600480360361050a9190810190613cbc565b611e8d565b60405161051d92919061482a565b60405180910390f35b61052e611ecb565b60405161053b919061480f565b60405180910390f35b61054c611ed1565b60405161055991906144a0565b60405180910390f35b61056a611ef7565b604051610577919061480f565b60405180910390f35b610588611efd565b60405161059591906145db565b60405180910390f35b6105b860048036036105b39190810190613c08565b611f9b565b6040516105c5919061452f565b60405180910390f35b6105e860048036036105e39190810190613c08565b6120d1565b6040516105f59190614551565b60405180910390f35b6106066121e7565b60405161061391906144a0565b60405180910390f35b61063660048036036106319190810190613cbc565b61220d565b6040516106439190614551565b60405180910390f35b61066660048036036106619190810190613d70565b61245d565b6040516106739190614551565b60405180910390f35b61069660048036036106919190810190613d47565b612ce8565b6040516106a39190614551565b60405180910390f35b6106c660048036036106c19190810190613d47565b613396565b6040516106d3919061480f565b60405180910390f35b6106f660048036036106f19190810190613c31565b6134d8565b604051610703919061480f565b60405180910390f35b61072660048036036107219190810190613c08565b61355f565b6040516107339190614551565b60405180910390f35b61075660048036036107519190810190613cbc565b6138ad565b6040516107699796959493929190614853565b60405180910390f35b61078c60048036036107879190810190613c08565b613916565b60405161079991906147bd565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108385780601f1061080d57610100808354040283529160200191610838565b820191906000526020600020905b81548152906001019060200180831161081b57829003601f168201915b505050505081565b600080600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156108b157600080fd5b505afa1580156108c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108e99190810190613cf8565b80945081955082965050505050909192565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561093657600080fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806109c15750600082145b6109ca57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aa8919061480f565b60405180910390a36001905092915050565b600f6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154905087565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd29061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c1557600080fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60035481565b60606000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905080604051908082528060200260200182016040528015610ce857816020015b610cd5613a97565b815260200190600190039081610ccd5790505b50915060008090505b81811015610dd757600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610d4357fe5b90600052602060002090600702016040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050838281518110610dbf57fe5b60200260200101819052508080600101915050610cf1565b5050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610e495750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b610e5257600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610f1d575081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015610f295750600082115b610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f906145fd565b60405180910390fd5b610fb1600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611106600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e3919061480f565b60405180910390a3600190509392505050565b60046020528060005260406000206000915090505481565b600260009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f59061473d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611397576001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555060019050611721565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d9061461d565b60405180910390fd5b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055506000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146116c15780600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825401925050819055505b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fe4387edabc341f0b9d43a633c5f628898ad9b1c3ccfb5a3ccf77181389169bfd60405160405180910390a360019150505b919050565b600a5481565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a99061477d565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154905083821015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061469d565b60405180910390fd5b4281106118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc9061463d565b60405180910390fd5b6000606460038602816118d457fe5b04850390506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e7432353629000000000000008152508051906020012033846040516024016119649291906144bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516119ce9190614489565b6000604051808303816000865af19150503d8060008114611a0b576040519150601f19603f3d011682016040523d82523d6000602084013e611a10565b606091505b5050905080611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b9061475d565b60405180910390fd5b85600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167f2357a297fd985aa0af40698b801a2408aab3a106491176bef5091be1beb7206b87604051611aea919061480f565b60405180910390a2600c544201600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550611b45613ad6565b6040518060400160405280428152602001888152509050601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060020201600090919290919091506000820151816000015560208201518160010155505050600195505050505050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d0157600080fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401611d8c9291906144e4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611df69190614489565b6000604051808303816000865af19150503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b5050905080611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061475d565b60405180910390fd5b600191505092915050565b600b5481565b60106020528160005260406000208181548110611ea657fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f935780601f10611f6857610100808354040283529160200191611f93565b820191906000526020600020905b815481529060010190602001808311611f7657829003601f168201915b505050505081565b60606000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090508060405190808252806020026020018201604052801561201e57816020015b61200b613af0565b8152602001906001900390816120035790505b50915060008090505b818110156120ca57601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811061207957fe5b9060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508382815181106120b257fe5b60200260200101819052508080600101915050612027565b5050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a9061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561219d57600080fd5b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224857600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156122975750600082115b6122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906145fd565b60405180910390fd5b61231f600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123ab600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161244b919061480f565b60405180910390a36001905092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906146fd565b60405180910390fd5b601e8214806124fd5750605a82145b80612508575060b482145b80612514575061016882145b612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a9061467d565b60405180910390fd5b82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156125a25750600083115b6125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d8906145fd565b60405180910390fd5b61262a600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a5e565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b6600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613a78565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612756919061480f565b60405180910390a3600061276984613396565b9050600083600b5402420190506000806000601e8714156127d1576064600886028161279157fe5b048501925060646014606460088802816127a757fe5b0402816127b057fe5b0491506064600a606460088802816127c457fe5b0402816127cd57fe5b0490505b605a871415612830576003606460098702816127e957fe5b0402850192506003606460146064600989028161280257fe5b04028161280b57fe5b0402915060036064600a6064600989028161282257fe5b04028161282b57fe5b040290505b60b487141561288f5760066064600a87028161284857fe5b0402850192506006606460146064600a89028161286157fe5b04028161286a57fe5b0402915060066064600a6064600a89028161288157fe5b04028161288a57fe5b040290505b6101688714156128ef57600c6064600c8702816128a857fe5b040285019250600c606460146064600c8902816128c157fe5b0402816128ca57fe5b04029150600c6064600a6064600c8902816128e157fe5b0402816128ea57fe5b040290505b6000606460038502816128fe57fe5b048403905061290b613b0a565b6040518060e001604052808a81526020014281526020018781526020018b8152602001868152602001838152602001600015158152509050600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150509060018203906000526020600020906007020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055505050506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612bb05785600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055508b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612c855784600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825401925050819055508b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401600082825401925050819055505b3373ffffffffffffffffffffffffffffffffffffffff167f75d272bf222da318651eb078751e4dcd0d0d78133bee4b1bcbbe297163bee3958d8d604051612ccd92919061482a565b60405180910390a26001995050505050505050505092915050565b600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d659061477d565b60405180910390fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de9906146dd565b60405180910390fd5b612dfa613b0a565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e4457fe5b90600052602060002090600702016040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff161515151581525050905060008160400151905060008260c00151905060008360600151905060008460a001519050834211612f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f139061463d565b60405180910390fd5b8215612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f549061465d565b60405180910390fd5b612fa6600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a5e565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613032600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613a78565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130d3919061480f565b60405180910390a36000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e7432353629000000000000008152508051906020012033846040516024016131669291906144bb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516131d09190614489565b6000604051808303816000865af19150503d806000811461320d576040519150601f19603f3d011682016040523d82523d6000602084013e613212565b606091505b5050905080613256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324d9061475d565b60405180910390fd5b6001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089815481106132a257fe5b906000526020600020906007020160060160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167ff39ec6c12b05a6854eb3a8e81893f73e7ad92c22bf2c3bfad541eb5864d9047e83604051613310919061480f565b60405180910390a260019650600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020888154811061336657fe5b906000526020600020906007020160060160009054906101000a900460ff1661338b57fe5b505050505050919050565b60008060006133a3610840565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415613459576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134509061471d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610156134c25781818502816134ba57fe5b0492506134d1565b80828502816134cd57fe5b0492505b5050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e89061479d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561362b57600080fd5b600d54600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156136af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a6906146bd565b60405180910390fd5b600060095414156136c65742600981905550613721565b42600a54600954011061370e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137059061463d565b60405180910390fd5b600a546009600082825401925050819055505b61376c600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613a78565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137fa600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600d54613a5e565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405161389c919061480f565b60405180910390a360019050919050565b600e60205281600052604060002081815481106138c657fe5b9060005260206000209060070201600091509150508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b61391e613b49565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e00160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815250509050919050565b600082821115613a6d57600080fd5b818303905092915050565b600080828401905083811015613a8d57600080fd5b8091505092915050565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060e00160405280600015158152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b600081359050613bc381614a56565b92915050565b600081519050613bd881614a6d565b92915050565b600081359050613bed81614a84565b92915050565b600081519050613c0281614a9b565b92915050565b600060208284031215613c1a57600080fd5b6000613c2884828501613bb4565b91505092915050565b60008060408385031215613c4457600080fd5b6000613c5285828601613bb4565b9250506020613c6385828601613bb4565b9150509250929050565b600080600060608486031215613c8257600080fd5b6000613c9086828701613bb4565b9350506020613ca186828701613bb4565b9250506040613cb286828701613bde565b9150509250925092565b60008060408385031215613ccf57600080fd5b6000613cdd85828601613bb4565b9250506020613cee85828601613bde565b9150509250929050565b600080600060608486031215613d0d57600080fd5b6000613d1b86828701613bc9565b9350506020613d2c86828701613bc9565b9250506040613d3d86828701613bf3565b9150509250925092565b600060208284031215613d5957600080fd5b6000613d6784828501613bde565b91505092915050565b60008060408385031215613d8357600080fd5b6000613d9185828601613bde565b9250506020613da285828601613bde565b9150509250929050565b6000613db88383614381565b60e08301905092915050565b6000613dd0838361440f565b60408301905092915050565b613de581614993565b82525050565b613df481614981565b82525050565b613e0381614981565b82525050565b6000613e14826148fd565b613e1e8185614943565b9350613e29836148dd565b8060005b83811015613e5a578151613e418882613dac565b9750613e4c83614929565b925050600181019050613e2d565b5085935050505092915050565b6000613e7282614908565b613e7c8185614954565b9350613e87836148ed565b8060005b83811015613eb8578151613e9f8882613dc4565b9750613eaa83614936565b925050600181019050613e8b565b5085935050505092915050565b613ece816149a5565b82525050565b613edd816149a5565b82525050565b6000613eee82614913565b613ef88185614965565b9350613f08818560208601614a12565b80840191505092915050565b6000613f1f8261491e565b613f298185614970565b9350613f39818560208601614a12565b613f4281614a45565b840191505092915050565b6000613f5a602383614970565b91507f496e73756666696369656e742062616c616e6365206f72207a65726f20616d6f60008301527f756e7400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613fc0601d83614970565b91507f5468652072656665726565206973206e6f7420726567697374657265640000006000830152602082019050919050565b6000614000600b83614970565b91507f54696d65206973206e6f740000000000000000000000000000000000000000006000830152602082019050919050565b6000614040601083614970565b91507f616c7265616479207769746864726177000000000000000000000000000000006000830152602082019050919050565b6000614080602083614970565b91507f6c6f636b656420706f736974696f6e207479706520696e6578697374656e63656000830152602082019050919050565b60006140c0601883614970565b91507f54686520616d6f756e74206973206e6f7420656e6f75676800000000000000006000830152602082019050919050565b6000614100601d83614970565b91507f436f6e747261637420696e73756666696369656e742062616c616e63650000006000830152602082019050919050565b6000614140600d83614970565b91507f696e76657374206973206e6f74000000000000000000000000000000000000006000830152602082019050919050565b6000614180601783614970565b91507f596f752068617665206e6f7420726567697374657265640000000000000000006000830152602082019050919050565b60006141c0601583614970565b91507f74776f2061646472657373206964656e746963616c00000000000000000000006000830152602082019050919050565b6000614200601883614970565b91507f596f752068617665206265656e207265676973746572656400000000000000006000830152602082019050919050565b6000614240600d83614970565b91507f7472616e73666572206661696c000000000000000000000000000000000000006000830152602082019050919050565b6000614280601383614970565b91507f596f752068617665206e6f7420496e76657374000000000000000000000000006000830152602082019050919050565b60006142c0601183614970565b91507f596f7520617265206e6f74206f776e65720000000000000000000000000000006000830152602082019050919050565b60e0820160008201516143096000850182613ec5565b50602082015161431c6020850182613deb565b50604082015161432f6040850182613deb565b506060820151614342606085018261444d565b506080820151614355608085018261444d565b5060a082015161436860a085018261444d565b5060c082015161437b60c085018261444d565b50505050565b60e082016000820151614397600085018261444d565b5060208201516143aa602085018261444d565b5060408201516143bd604085018261444d565b5060608201516143d0606085018261444d565b5060808201516143e3608085018261444d565b5060a08201516143f660a085018261444d565b5060c082015161440960c0850182613ec5565b50505050565b604082016000820151614425600085018261444d565b506020820151614438602085018261444d565b50505050565b614447816149b1565b82525050565b614456816149eb565b82525050565b614465816149eb565b82525050565b614474816149f5565b82525050565b61448381614a05565b82525050565b60006144958284613ee3565b915081905092915050565b60006020820190506144b56000830184613dfa565b92915050565b60006040820190506144d06000830185613ddc565b6144dd602083018461445c565b9392505050565b60006040820190506144f96000830185613dfa565b614506602083018461445c565b9392505050565b600060208201905081810360008301526145278184613e09565b905092915050565b600060208201905081810360008301526145498184613e67565b905092915050565b60006020820190506145666000830184613ed4565b92915050565b600060e082019050614581600083018a613ed4565b61458e6020830189613dfa565b61459b6040830188613dfa565b6145a8606083018761445c565b6145b5608083018661445c565b6145c260a083018561445c565b6145cf60c083018461445c565b98975050505050505050565b600060208201905081810360008301526145f58184613f14565b905092915050565b6000602082019050818103600083015261461681613f4d565b9050919050565b6000602082019050818103600083015261463681613fb3565b9050919050565b6000602082019050818103600083015261465681613ff3565b9050919050565b6000602082019050818103600083015261467681614033565b9050919050565b6000602082019050818103600083015261469681614073565b9050919050565b600060208201905081810360008301526146b6816140b3565b9050919050565b600060208201905081810360008301526146d6816140f3565b9050919050565b600060208201905081810360008301526146f681614133565b9050919050565b6000602082019050818103600083015261471681614173565b9050919050565b60006020820190508181036000830152614736816141b3565b9050919050565b60006020820190508181036000830152614756816141f3565b9050919050565b6000602082019050818103600083015261477681614233565b9050919050565b6000602082019050818103600083015261479681614273565b9050919050565b600060208201905081810360008301526147b6816142b3565b9050919050565b600060e0820190506147d260008301846142f3565b92915050565b60006060820190506147ed600083018661443e565b6147fa602083018561443e565b614807604083018461446b565b949350505050565b6000602082019050614824600083018461445c565b92915050565b600060408201905061483f600083018561445c565b61484c602083018461445c565b9392505050565b600060e082019050614868600083018a61445c565b614875602083018961445c565b614882604083018861445c565b61488f606083018761445c565b61489c608083018661445c565b6148a960a083018561445c565b6148b660c0830184613ed4565b98975050505050505050565b60006020820190506148d7600083018461447a565b92915050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061498c826149cb565b9050919050565b600061499e826149cb565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60005b83811015614a30578082015181840152602081019050614a15565b83811115614a3f576000848401525b50505050565b6000601f19601f8301169050919050565b614a5f81614981565b8114614a6a57600080fd5b50565b614a76816149b1565b8114614a8157600080fd5b50565b614a8d816149eb565b8114614a9857600080fd5b50565b614aa4816149f5565b8114614aaf57600080fd5b5056fea365627a7a723158202b378c248610aa4b6c257364c9e4a4aa7f8ef0364e1f2708184a2b1fc3aeeffd6c6578706572696d656e74616cf564736f6c63430005100040

Deployed Bytecode Sourcemap

1705:16941:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1705:16941:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1749:42;;;:::i;:::-;;;;;;;;;;;;;;;;17782:310;;;:::i;:::-;;;;;;;;;;;;;;;;;;5821:333;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4141:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6942:168;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1894:43;;;:::i;:::-;;;;;;;;;;;;;;;;16834:335;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6166:584;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1944:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1833:26;;;:::i;:::-;;;;;;;;;;;;;;;;2350:25;;;:::i;:::-;;;;;;;;;;;;;;;;1995:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9692:1293;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2638:24;;;:::i;:::-;;;;;;;;;;;;;;;;15654:1132;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5244:119;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8943:377;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2743:22;;;:::i;:::-;;;;;;;;;;;;;;;;4350:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2822:20;;;:::i;:::-;;;;;;;;;;;;;;;;2090;;;:::i;:::-;;;;;;;;;;;;;;;;2547:27;;;:::i;:::-;;;;;;;;;;;;;;;;1798:28;;;:::i;:::-;;;;;;;;;;;;;;;;17223:298;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9374:220;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2221:26;;;:::i;:::-;;;;;;;;;;;;;;;;5375:434;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11019:2920;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14067:1522;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18158:469;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6762:144;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8024:880;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3528:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;17563:107;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1749:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17782:310::-;17826:17;17845;17864:26;17903:15;17929:11;;;;;;;;;;;17903:38;;18063:7;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18063:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18063:21:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18063:21:0;;;;;;;;;18017:67;;;;;;;;;;;;17782:310;;;;:::o;5821:333::-;5889:12;5942:1;5922:22;;:8;:22;;;;5914:31;;;;;;5998:1;5965:7;:19;5973:10;5965:19;;;;;;;;;;;;;;;:29;5985:8;5965:29;;;;;;;;;;;;;;;;:34;5964:54;;;;6016:1;6005:7;:12;5964:54;5956:63;;;;;;6062:7;6030;:19;6038:10;6030:19;;;;;;;;;;;;;;;:29;6050:8;6030:29;;;;;;;;;;;;;;;:39;;;;6106:8;6085:39;;6094:10;6085:39;;;6116:7;6085:39;;;;;;;;;;;;;;;6142:4;6135:11;;5821:333;;;;:::o;4141:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6942:168::-;7002:12;5185:5;;;;;;;;;;;5171:19;;:10;:19;;;5163:49;;;;;;;;;;;;;;;;;;;;;;7053:1;7035:20;;:6;:20;;;;7027:29;;;;;;7074:6;7067:5;;:13;;;;;;;;;;;;;;;;;;7098:4;7091:11;;6942:168;;;:::o;1894:43::-;;;;:::o;16834:335::-;16893:17;16963:9;16975:7;:17;16983:8;16975:17;;;;;;;;;;;;;;;:24;;;;16963:36;;17064:1;17051:15;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17047:19;;17081:9;17093:1;17081:13;;17077:85;17100:1;17096;:5;17077:85;;;17130:7;:17;17138:8;17130:17;;;;;;;;;;;;;;;17148:1;17130:20;;;;;;;;;;;;;;;;;;17123:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:1;17125;17123:4;;;;;;;;;;;;;:27;;;;17103:3;;;;;;;17077:85;;;;16834:335;;;;:::o;6166:584::-;6248:12;6298:1;6281:19;;:5;:19;;;;:40;;;;;6319:1;6304:17;;:3;:17;;;;6281:40;6273:49;;;;;;6360:6;6341:8;:15;6350:5;6341:15;;;;;;;;;;;;;;;;:25;;:65;;;;;6400:6;6370:7;:14;6378:5;6370:14;;;;;;;;;;;;;;;:26;6385:10;6370:26;;;;;;;;;;;;;;;;:36;;6341:65;:79;;;;;6419:1;6410:6;:10;6341:79;6333:127;;;;;;;;;;;;;;;;;;;;;;6489:37;6502:8;:15;6511:5;6502:15;;;;;;;;;;;;;;;;6519:6;6489:12;:37::i;:::-;6471:8;:15;6480:5;6471:15;;;;;;;;;;;;;;;:55;;;;6553:35;6566:8;:13;6575:3;6566:13;;;;;;;;;;;;;;;;6581:6;6553:12;:35::i;:::-;6537:8;:13;6546:3;6537:13;;;;;;;;;;;;;;;:51;;;;6628:48;6641:7;:14;6649:5;6641:14;;;;;;;;;;;;;;;:26;6656:10;6641:26;;;;;;;;;;;;;;;;6669:6;6628:12;:48::i;:::-;6599:7;:14;6607:5;6599:14;;;;;;;;;;;;;;;:26;6614:10;6599:26;;;;;;;;;;;;;;;:77;;;;6708:3;6692:28;;6701:5;6692:28;;;6713:6;6692:28;;;;;;;;;;;;;;;6738:4;6731:11;;6166:584;;;;;:::o;1944:44::-;;;;;;;;;;;;;;;;;:::o;1833:26::-;;;;;;;;;;;;;:::o;2350:25::-;;;;;;;;;;;;;:::o;1995:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9692:1293::-;9749:12;9828:4;:16;9833:10;9828:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;9826:28;9818:65;;;;;;;;;;;;;;;;;;;;;;10010:1;9991:21;;:7;:21;;;9988:145;;;10091:4;10063;:16;10068:10;10063:16;;;;;;;;;;;;;;;:25;;;:32;;;;;;;;;;;;;;;;;;10117:4;10110:11;;;;9988:145;10221:4;:13;10226:7;10221:13;;;;;;;;;;;;;;;:22;;;;;;;;;;;;10213:64;;;;;;;;;;;;;;;;;;;;;;10375:4;10347;:16;10352:10;10347:16;;;;;;;;;;;;;;;:25;;;:32;;;;;;;;;;;;;;;;;;10416:7;10390:4;:16;10395:10;10390:16;;;;;;;;;;;;;;;:23;;;:33;;;;;;;;;;;;;;;;;;10558:1;10533:4;:13;10538:7;10533:13;;;;;;;;;;;;;;;:21;;;:26;;;;;;;;;;;10608:14;10625:4;:13;10630:7;10625:13;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10608:37;;10677:1;10659:20;;:6;:20;;;10656:215;;10813:6;10787:4;:16;10792:10;10787:16;;;;;;;;;;;;;;;:23;;;:32;;;;;;;;;;;;;;;;;;10858:1;10834:4;:12;10839:6;10834:12;;;;;;;;;;;;;;;:20;;;:25;;;;;;;;;;;10656:215;10941:10;10917:35;;10932:7;10917:35;;;;;;;;;;;;10973:4;10963:14;;9692:1293;;;;;:::o;2638:24::-;;;;:::o;15654:1132::-;15720:13;7463:1;7434:7;:19;7442:10;7434:19;;;;;;;;;;;;;;;:26;;;;:30;7426:62;;;;;;;;;;;;;;;;;;;;;;15803:9;15815:4;:16;15820:10;15815:16;;;;;;;;;;;;;;;:22;;;15803:34;;15848:9;15860:4;:16;15865:10;15860:16;;;;;;;;;;;;;;;:21;;;15848:33;;15931:6;15926:1;:11;;15918:48;;;;;;;;;;;;;;;;;;;;;;16014:15;16010:1;:19;16002:43;;;;;;;;;;;;;;;;;;;;;;16119:9;16152:3;16150:1;16141:6;:10;:14;;;;;;16131:6;:25;16119:37;;16186:12;16204:10;;;;;;;;;;;:15;;2468:34;;;;;;;;;;;;;;;;;2458:45;;;;;;16267:10;16279:1;16234:47;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16234:47:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;16234:47:0;16204:88;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16185:107:0;;;16307:7;16303:63;;16331:23;;;;;;;;;;;;;;;;;;;16303:63;16427:6;16401:4;:16;16406:10;16401:16;;;;;;;;;;;;;;;:22;;;:32;;;;;;;;;;;16506:10;16492:33;;;16518:6;16492:33;;;;;;;;;;;;;;;16618:5;;16600:15;:23;16576:4;:16;16581:10;16576:16;;;;;;;;;;;;;;;:21;;:47;;;;16665:15;;:::i;:::-;16683:31;;;;;;;;16690:15;16683:31;;;;16707:6;16683:31;;;16665:49;;16725:7;:19;16733:10;16725:19;;;;;;;;;;;;;;;16750:1;16725:27;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16725:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16774:4;16763:15;;7499:1;;;;;15654:1132;;;:::o;5244:119::-;5302:15;5337:8;:18;5346:8;5337:18;;;;;;;;;;;;;;;;5330:25;;5244:119;;;:::o;8943:377::-;9016:13;5185:5;;;;;;;;;;;5171:19;;:10;:19;;;5163:49;;;;;;;;;;;;;;;;;;;;;;9094:1;9079:17;;:3;:17;;;;9071:26;;;;;;9109:12;9127:10;;;;;;;;;;;:15;;2468:34;;;;;;;;;;;;;;;;;2458:45;;;;;;9190:3;9195:6;9157:45;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9157:45:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9157:45:0;9127:86;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;9108:105:0;;;9228:7;9224:63;;9252:23;;;;;;;;;;;;;;;;;;;9224:63;9308:4;9297:15;;5223:1;8943:377;;;;:::o;2743:22::-;;;;:::o;4350:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2822:20::-;;;;:::o;2090:::-;;;;;;;;;;;;;:::o;2547:27::-;;;;:::o;1798:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17223:298::-;17282:17;17352:9;17364:7;:17;17372:8;17364:17;;;;;;;;;;;;;;;:24;;;;17352:36;;17416:1;17403:15;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17399:19;;17433:9;17445:1;17433:13;;17429:85;17452:1;17448;:5;17429:85;;;17482:7;:17;17490:8;17482:17;;;;;;;;;;;;;;;17500:1;17482:20;;;;;;;;;;;;;;;;;;17475:27;;;;;;;;;;;;;;;;;;;;;;;;;:1;17477;17475:4;;;;;;;;;;;;;:27;;;;17455:3;;;;;;;17429:85;;;;17223:298;;;;:::o;9374:220::-;9442:12;5185:5;;;;;;;;;;;5171:19;;:10;:19;;;5163:49;;;;;;;;;;;;;;;;;;;;;;9525:1;9505:22;;:8;:22;;;;9497:31;;;;;;9553:8;9539:11;;:22;;;;;;;;;;;;;;;;;;9582:4;9572:14;;9374:220;;;:::o;2221:26::-;;;;;;;;;;;;;:::o;5375:434::-;5438:12;5486:1;5471:17;;:3;:17;;;;5463:26;;;;;;5532:6;5508:8;:20;5517:10;5508:20;;;;;;;;;;;;;;;;:30;;:44;;;;;5551:1;5542:6;:10;5508:44;5500:92;;;;;;;;;;;;;;;;;;;;;;5626:42;5639:8;:20;5648:10;5639:20;;;;;;;;;;;;;;;;5661:6;5626:12;:42::i;:::-;5603:8;:20;5612:10;5603:20;;;;;;;;;;;;;;;:65;;;;5695:35;5708:8;:13;5717:3;5708:13;;;;;;;;;;;;;;;;5723:6;5695:12;:35::i;:::-;5679:8;:13;5688:3;5679:13;;;;;;;;;;;;;;;:51;;;;5767:3;5746:33;;5755:10;5746:33;;;5772:6;5746:33;;;;;;;;;;;;;;;5797:4;5790:11;;5375:434;;;;:::o;11019:2920::-;11104:12;7286:4;:16;7291:10;7286:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;7278:61;;;;;;;;;;;;;;;;;;;;;;11273:2;11263:6;:12;:28;;;;11289:2;11279:6;:12;11263:28;:45;;;;11305:3;11295:6;:13;11263:45;:62;;;;11322:3;11312:6;:13;11263:62;11255:107;;;;;;;;;;;;;;;;;;;;;;11479:6;11455:8;:20;11464:10;11455:20;;;;;;;;;;;;;;;;:30;;:44;;;;;11498:1;11489:6;:10;11455:44;11447:92;;;;;;;;;;;;;;;;;;;;;;11622:42;11635:8;:20;11644:10;11635:20;;;;;;;;;;;;;;;;11657:6;11622:12;:42::i;:::-;11599:8;:20;11608:10;11599:20;;;;;;;;;;;;;;;:65;;;;11701:45;11714:8;:23;11731:4;11714:23;;;;;;;;;;;;;;;;11739:6;11701:12;:45::i;:::-;11675:8;:23;11692:4;11675:23;;;;;;;;;;;;;;;:71;;;;11791:4;11762:43;;11771:10;11762:43;;;11798:6;11762:43;;;;;;;;;;;;;;;11876:15;11894:14;11901:6;11894;:14::i;:::-;11876:32;;11957:10;11998:6;11988:7;;:16;11970:15;:34;11957:47;;12092:10;12160:14;12185;12223:2;12213:6;:12;12210:261;;;12316:3;12314:1;12304:7;:11;:15;;;;;;12294:7;:25;12289:30;;12408:3;12405:2;12399:3;12397:1;12387:7;:11;:15;;;;;;:20;:24;;;;;;12378:33;;12456:3;12453:2;12447:3;12445:1;12435:7;:11;:15;;;;;;:20;:24;;;;;;12426:33;;12210:261;12494:2;12484:6;:12;12481:182;;;12546:1;12540:3;12538:1;12528:7;:11;:15;;;;;;:19;12518:7;:29;12513:34;;12598:1;12592:3;12589:2;12583:3;12581:1;12571:7;:11;:15;;;;;;:20;:24;;;;;;:28;12562:37;;12650:1;12644:3;12641:2;12635:3;12633:1;12623:7;:11;:15;;;;;;:20;:24;;;;;;:28;12614:37;;12481:182;12686:3;12676:6;:13;12673:186;;;12740:1;12734:3;12731:2;12721:7;:12;:16;;;;;;:20;12711:7;:30;12706:35;;12793:1;12787:3;12784:2;12778:3;12775:2;12765:7;:12;:16;;;;;;:21;:25;;;;;;:29;12756:38;;12846:1;12840:3;12837:2;12831:3;12828:2;12818:7;:12;:16;;;;;;:21;:25;;;;;;:29;12809:38;;12673:186;12882:3;12872:6;:13;12869:189;;;12936:2;12930:3;12927:2;12917:7;:12;:16;;;;;;:21;12907:7;:31;12902:36;;12990:2;12984:3;12981:2;12975:3;12972:2;12962:7;:12;:16;;;;;;:21;:25;;;;;;:30;12953:39;;13044:2;13038:3;13035:2;13029:3;13026:2;13016:7;:12;:16;;;;;;:21;:25;;;;;;:30;13007:39;;12869:189;13109:10;13135:3;13133:1;13128:2;:6;:10;;;;;;13122:2;:17;13109:30;;13288:15;;:::i;:::-;13306:58;;;;;;;;13313:6;13306:58;;;;13321:15;13306:58;;;;13338:2;13306:58;;;;13342:6;13306:58;;;;13350:2;13306:58;;;;13354:2;13306:58;;;;13358:5;13306:58;;;;;13288:76;;13375:7;:19;13383:10;13375:19;;;;;;;;;;;;;;;13400:1;13375:27;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13375:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13458:14;13475:4;:16;13480:10;13475:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;13458:40;;13509:14;13526:4;:16;13531:10;13526:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;13509:40;;13581:1;13563:20;;:6;:20;;;13560:121;;13621:6;13599:4;:12;13604:6;13599:12;;;;;;;;;;;;;;;:18;;;:28;;;;;;;;;;;13663:6;13641:4;:12;13646:6;13641:12;;;;;;;;;;;;;;;:18;;;:28;;;;;;;;;;;13560:121;13712:1;13694:20;;:6;:20;;;13691:119;;13751:6;13729:4;:12;13734:6;13729:12;;;;;;;;;;;;;;;:18;;;:28;;;;;;;;;;;13792:6;13770:4;:12;13775:6;13770:12;;;;;;;;;;;;;;;:18;;;:28;;;;;;;;;;;13691:119;13879:10;13866:40;;;13891:6;13899;13866:40;;;;;;;;;;;;;;;;13927:4;13917:14;;7350:1;;;;;;;;;11019:2920;;;;:::o;14067:1522::-;14134:13;7463:1;7434:7;:19;7442:10;7434:19;;;;;;;;;;;;;;;:26;;;;:30;7426:62;;;;;;;;;;;;;;;;;;;;;;14249:6;14220:7;:19;14228:10;14220:19;;;;;;;;;;;;;;;:26;;;;:35;14212:61;;;;;;;;;;;;;;;;;;;;;;14334:15;;:::i;:::-;14352:7;:19;14360:10;14352:19;;;;;;;;;;;;;;;14372:6;14352:27;;;;;;;;;;;;;;;;;;14334:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14476:10;14489:1;:14;;;14476:27;;14514:6;14523:1;:10;;;14514:19;;14544:9;14556:1;:7;;;14544:19;;14574:10;14587:1;:13;;;14574:26;;14695:2;14677:15;:20;14669:44;;;;;;;;;;;;;;;;;;;;;;14782:1;14781:2;14773:31;;;;;;;;;;;;;;;;;;;;;;14883:40;14896:8;:23;14913:4;14896:23;;;;;;;;;;;;;;;;14921:1;14883:12;:40::i;:::-;14857:8;:23;14874:4;14857:23;;;;;;;;;;;;;;;:66;;;;14957:37;14970:8;:20;14987:1;14970:20;;;;;;;;;;;;;;;;14992:1;14957:12;:37::i;:::-;14934:8;:20;14951:1;14934:20;;;;;;;;;;;;;;;:60;;;;15042:1;15010:38;;15027:4;15010:38;;;15046:1;15010:38;;;;;;;;;;;;;;;15088:12;15106:10;;;;;;;;;;;:15;;2468:34;;;;;;;;;;;;;;;;;2458:45;;;;;;15169:10;15181:2;15136:48;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15136:48:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15136:48:0;15106:89;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15087:108:0;;;15210:7;15206:63;;15234:23;;;;;;;;;;;;;;;;;;;15206:63;15367:4;15328:7;:19;15336:10;15328:19;;;;;;;;;;;;;;;15348:6;15328:27;;;;;;;;;;;;;;;;;;:36;;;:43;;;;;;;;;;;;;;;;;;15439:10;15424:30;;;15451:2;15424:30;;;;;;;;;;;;;;;15476:4;15465:15;;15544:7;:19;15552:10;15544:19;;;;;;;;;;;;;;;15564:6;15544:27;;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;15537:44;;;;7499:1;;;;;;14067:1522;;;:::o;18158:469::-;18211:9;18259:17;18278;18301:13;:11;:13::i;:::-;18258:56;;;;;;;;;18350:10;;;;;;;;;;;18333:27;;18341:4;18333:27;;;;18325:61;;;;;;;;;;;;;;;;;;;;;;18416:10;;;;;;;;;;;18400:26;;18408:4;18400:26;;;18397:223;;;18533:9;18521;18512:6;:18;:30;;;;;;18508:34;;18397:223;;;18599:9;18587;18578:6;:18;:30;;;;;;18574:34;;18397:223;18158:469;;;;;:::o;6762:144::-;6836:17;6873:7;:15;6881:6;6873:15;;;;;;;;;;;;;;;:25;6889:8;6873:25;;;;;;;;;;;;;;;;6866:32;;6762:144;;;;:::o;8024:880::-;8086:12;5185:5;;;;;;;;;;;5171:19;;:10;:19;;;5163:49;;;;;;;;;;;;;;;;;;;;;;8168:1;8148:22;;:8;:22;;;;8140:31;;;;;;8217:11;;8190:8;:23;8207:4;8190:23;;;;;;;;;;;;;;;;:38;;8182:80;;;;;;;;;;;;;;;;;;;;;;8288:1;8276:8;;:13;8273:373;;;8392:15;8381:8;:26;;;;8273:373;;;8567:15;8555:9;;8544:8;;:20;:38;8536:62;;;;;;;;;;;;;;;;;;;;;;8625:9;;8613:8;;:21;;;;;;;;;;;8273:373;8677:45;8690:8;:18;8699:8;8690:18;;;;;;;;;;;;;;;;8710:11;;8677:12;:45::i;:::-;8656:8;:18;8665:8;8656:18;;;;;;;;;;;;;;;:66;;;;8759:50;8772:8;:23;8789:4;8772:23;;;;;;;;;;;;;;;;8797:11;;8759:12;:50::i;:::-;8733:8;:23;8750:4;8733:23;;;;;;;;;;;;;;;:76;;;;8849:8;8825:46;;8842:4;8825:46;;;8859:11;;8825:46;;;;;;;;;;;;;;;8892:4;8882:14;;8024:880;;;:::o;3528:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17563:107::-;17619:12;;:::i;:::-;17648:4;:14;17653:8;17648:14;;;;;;;;;;;;;;;17644:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17563:107;;;:::o;312:124::-;370:7;403:1;398;:6;;390:15;;;;;;427:1;423;:5;416:12;;312:124;;;;:::o;154:148::-;212:7;232:9;248:1;244;:5;232:17;;273:1;268;:6;;260:15;;;;;;293:1;286:8;;;154:148;;;;:::o;1705:16941::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:130;;363:6;350:20;341:29;;375:33;402:5;375:33;;;335:78;;;;;420:132;;503:6;497:13;488:22;;515:32;541:5;515:32;;;482:70;;;;;559:241;;663:2;651:9;642:7;638:23;634:32;631:2;;;679:1;676;669:12;631:2;714:1;731:53;776:7;767:6;756:9;752:22;731:53;;;721:63;;693:97;625:175;;;;;807:366;;;928:2;916:9;907:7;903:23;899:32;896:2;;;944:1;941;934:12;896:2;979:1;996:53;1041:7;1032:6;1021:9;1017:22;996:53;;;986:63;;958:97;1086:2;1104:53;1149:7;1140:6;1129:9;1125:22;1104:53;;;1094:63;;1065:98;890:283;;;;;;1180:491;;;;1318:2;1306:9;1297:7;1293:23;1289:32;1286:2;;;1334:1;1331;1324:12;1286:2;1369:1;1386:53;1431:7;1422:6;1411:9;1407:22;1386:53;;;1376:63;;1348:97;1476:2;1494:53;1539:7;1530:6;1519:9;1515:22;1494:53;;;1484:63;;1455:98;1584:2;1602:53;1647:7;1638:6;1627:9;1623:22;1602:53;;;1592:63;;1563:98;1280:391;;;;;;1678:366;;;1799:2;1787:9;1778:7;1774:23;1770:32;1767:2;;;1815:1;1812;1805:12;1767:2;1850:1;1867:53;1912:7;1903:6;1892:9;1888:22;1867:53;;;1857:63;;1829:97;1957:2;1975:53;2020:7;2011:6;2000:9;1996:22;1975:53;;;1965:63;;1936:98;1761:283;;;;;;2051:533;;;;2199:2;2187:9;2178:7;2174:23;2170:32;2167:2;;;2215:1;2212;2205:12;2167:2;2250:1;2267:64;2323:7;2314:6;2303:9;2299:22;2267:64;;;2257:74;;2229:108;2368:2;2386:64;2442:7;2433:6;2422:9;2418:22;2386:64;;;2376:74;;2347:109;2487:2;2505:63;2560:7;2551:6;2540:9;2536:22;2505:63;;;2495:73;;2466:108;2161:423;;;;;;2591:241;;2695:2;2683:9;2674:7;2670:23;2666:32;2663:2;;;2711:1;2708;2701:12;2663:2;2746:1;2763:53;2808:7;2799:6;2788:9;2784:22;2763:53;;;2753:63;;2725:97;2657:175;;;;;2839:366;;;2960:2;2948:9;2939:7;2935:23;2931:32;2928:2;;;2976:1;2973;2966:12;2928:2;3011:1;3028:53;3073:7;3064:6;3053:9;3049:22;3028:53;;;3018:63;;2990:97;3118:2;3136:53;3181:7;3172:6;3161:9;3157:22;3136:53;;;3126:63;;3097:98;2922:283;;;;;;3213:253;;3338:88;3422:3;3414:6;3338:88;;;3455:4;3450:3;3446:14;3432:28;;3331:135;;;;;3475:253;;3600:88;3684:3;3676:6;3600:88;;;3717:4;3712:3;3708:14;3694:28;;3593:135;;;;;3736:137;3835:32;3861:5;3835:32;;;3830:3;3823:45;3817:56;;;3880:103;3953:24;3971:5;3953:24;;;3948:3;3941:37;3935:48;;;3990:113;4073:24;4091:5;4073:24;;;4068:3;4061:37;4055:48;;;4161:842;;4344:73;4411:5;4344:73;;;4430:105;4528:6;4523:3;4430:105;;;4423:112;;4556:75;4625:5;4556:75;;;4651:7;4679:1;4664:317;4689:6;4686:1;4683:13;4664:317;;;4756:6;4750:13;4777:101;4874:3;4859:13;4777:101;;;4770:108;;4895:79;4967:6;4895:79;;;4885:89;;4721:260;4711:1;4708;4704:9;4699:14;;4664:317;;;4668:14;4994:3;4987:10;;4323:680;;;;;;;;5062:842;;5245:73;5312:5;5245:73;;;5331:105;5429:6;5424:3;5331:105;;;5324:112;;5457:75;5526:5;5457:75;;;5552:7;5580:1;5565:317;5590:6;5587:1;5584:13;5565:317;;;5657:6;5651:13;5678:101;5775:3;5760:13;5678:101;;;5671:108;;5796:79;5868:6;5796:79;;;5786:89;;5622:260;5612:1;5609;5605:9;5600:14;;5565:317;;;5569:14;5895:3;5888:10;;5224:680;;;;;;;;5912:94;5979:21;5994:5;5979:21;;;5974:3;5967:34;5961:45;;;6013:104;6090:21;6105:5;6090:21;;;6085:3;6078:34;6072:45;;;6124:356;;6252:38;6284:5;6252:38;;;6302:88;6383:6;6378:3;6302:88;;;6295:95;;6395:52;6440:6;6435:3;6428:4;6421:5;6417:16;6395:52;;;6468:6;6463:3;6459:16;6452:23;;6232:248;;;;;;6487:339;;6595:35;6624:5;6595:35;;;6642:71;6706:6;6701:3;6642:71;;;6635:78;;6718:52;6763:6;6758:3;6751:4;6744:5;6740:16;6718:52;;;6791:29;6813:6;6791:29;;;6786:3;6782:39;6775:46;;6575:251;;;;;;6834:372;;6994:67;7058:2;7053:3;6994:67;;;6987:74;;7094:34;7090:1;7085:3;7081:11;7074:55;7163:5;7158:2;7153:3;7149:12;7142:27;7197:2;7192:3;7188:12;7181:19;;6980:226;;;;7215:329;;7375:67;7439:2;7434:3;7375:67;;;7368:74;;7475:31;7471:1;7466:3;7462:11;7455:52;7535:2;7530:3;7526:12;7519:19;;7361:183;;;;7553:311;;7713:67;7777:2;7772:3;7713:67;;;7706:74;;7813:13;7809:1;7804:3;7800:11;7793:34;7855:2;7850:3;7846:12;7839:19;;7699:165;;;;7873:316;;8033:67;8097:2;8092:3;8033:67;;;8026:74;;8133:18;8129:1;8124:3;8120:11;8113:39;8180:2;8175:3;8171:12;8164:19;;8019:170;;;;8198:332;;8358:67;8422:2;8417:3;8358:67;;;8351:74;;8458:34;8454:1;8449:3;8445:11;8438:55;8521:2;8516:3;8512:12;8505:19;;8344:186;;;;8539:324;;8699:67;8763:2;8758:3;8699:67;;;8692:74;;8799:26;8795:1;8790:3;8786:11;8779:47;8854:2;8849:3;8845:12;8838:19;;8685:178;;;;8872:329;;9032:67;9096:2;9091:3;9032:67;;;9025:74;;9132:31;9128:1;9123:3;9119:11;9112:52;9192:2;9187:3;9183:12;9176:19;;9018:183;;;;9210:313;;9370:67;9434:2;9429:3;9370:67;;;9363:74;;9470:15;9466:1;9461:3;9457:11;9450:36;9514:2;9509:3;9505:12;9498:19;;9356:167;;;;9532:323;;9692:67;9756:2;9751:3;9692:67;;;9685:74;;9792:25;9788:1;9783:3;9779:11;9772:46;9846:2;9841:3;9837:12;9830:19;;9678:177;;;;9864:321;;10024:67;10088:2;10083:3;10024:67;;;10017:74;;10124:23;10120:1;10115:3;10111:11;10104:44;10176:2;10171:3;10167:12;10160:19;;10010:175;;;;10194:324;;10354:67;10418:2;10413:3;10354:67;;;10347:74;;10454:26;10450:1;10445:3;10441:11;10434:47;10509:2;10504:3;10500:12;10493:19;;10340:178;;;;10527:313;;10687:67;10751:2;10746:3;10687:67;;;10680:74;;10787:15;10783:1;10778:3;10774:11;10767:36;10831:2;10826:3;10822:12;10815:19;;10673:167;;;;10849:319;;11009:67;11073:2;11068:3;11009:67;;;11002:74;;11109:21;11105:1;11100:3;11096:11;11089:42;11159:2;11154:3;11150:12;11143:19;;10995:173;;;;11177:317;;11337:67;11401:2;11396:3;11337:67;;;11330:74;;11437:19;11433:1;11428:3;11424:11;11417:40;11485:2;11480:3;11476:12;11469:19;;11323:171;;;;11541:1243;11674:4;11669:3;11665:14;11761:4;11754:5;11750:16;11744:23;11773:57;11824:4;11819:3;11815:14;11801:12;11773:57;;;11694:142;11911:4;11904:5;11900:16;11894:23;11923:63;11980:4;11975:3;11971:14;11957:12;11923:63;;;11846:146;12067:4;12060:5;12056:16;12050:23;12079:63;12136:4;12131:3;12127:14;12113:12;12079:63;;;12002:146;12224:4;12217:5;12213:16;12207:23;12236:63;12293:4;12288:3;12284:14;12270:12;12236:63;;;12158:147;12379:4;12372:5;12368:16;12362:23;12391:63;12448:4;12443:3;12439:14;12425:12;12391:63;;;12315:145;12534:4;12527:5;12523:16;12517:23;12546:63;12603:4;12598:3;12594:14;12580:12;12546:63;;;12470:145;12688:4;12681:5;12677:16;12671:23;12700:63;12757:4;12752:3;12748:14;12734:12;12700:63;;;12625:144;11647:1137;;;;12836:1246;12961:4;12956:3;12952:14;13045:4;13038:5;13034:16;13028:23;13057:63;13114:4;13109:3;13105:14;13091:12;13057:63;;;12981:145;13199:4;13192:5;13188:16;13182:23;13211:63;13268:4;13263:3;13259:14;13245:12;13211:63;;;13136:144;13361:4;13354:5;13350:16;13344:23;13373:63;13430:4;13425:3;13421:14;13407:12;13373:63;;;13290:152;13516:4;13509:5;13505:16;13499:23;13528:63;13585:4;13580:3;13576:14;13562:12;13528:63;;;13452:145;13673:4;13666:5;13662:16;13656:23;13685:63;13742:4;13737:3;13733:14;13719:12;13685:63;;;13607:147;13834:4;13827:5;13823:16;13817:23;13846:63;13903:4;13898:3;13894:14;13880:12;13846:63;;;13764:151;13992:4;13985:5;13981:16;13975:23;14004:57;14055:4;14050:3;14046:14;14032:12;14004:57;;;13925:142;12934:1148;;;;14134:459;14259:4;14254:3;14250:14;14342:4;14335:5;14331:16;14325:23;14354:63;14411:4;14406:3;14402:14;14388:12;14354:63;;;14279:144;14497:4;14490:5;14486:16;14480:23;14509:63;14566:4;14561:3;14557:14;14543:12;14509:63;;;14433:145;14232:361;;;;14600:113;14683:24;14701:5;14683:24;;;14678:3;14671:37;14665:48;;;14720:103;14793:24;14811:5;14793:24;;;14788:3;14781:37;14775:48;;;14830:113;14913:24;14931:5;14913:24;;;14908:3;14901:37;14895:48;;;14950:110;15031:23;15048:5;15031:23;;;15026:3;15019:36;15013:47;;;15067:107;15146:22;15162:5;15146:22;;;15141:3;15134:35;15128:46;;;15181:262;;15325:93;15414:3;15405:6;15325:93;;;15318:100;;15435:3;15428:10;;15306:137;;;;;15450:213;;15568:2;15557:9;15553:18;15545:26;;15582:71;15650:1;15639:9;15635:17;15626:6;15582:71;;;15539:124;;;;;15670:356;;15832:2;15821:9;15817:18;15809:26;;15846:87;15930:1;15919:9;15915:17;15906:6;15846:87;;;15944:72;16012:2;16001:9;15997:18;15988:6;15944:72;;;15803:223;;;;;;16033:324;;16179:2;16168:9;16164:18;16156:26;;16193:71;16261:1;16250:9;16246:17;16237:6;16193:71;;;16275:72;16343:2;16332:9;16328:18;16319:6;16275:72;;;16150:207;;;;;;16364:437;;16570:2;16559:9;16555:18;16547:26;;16620:9;16614:4;16610:20;16606:1;16595:9;16591:17;16584:47;16645:146;16786:4;16777:6;16645:146;;;16637:154;;16541:260;;;;;16808:437;;17014:2;17003:9;16999:18;16991:26;;17064:9;17058:4;17054:20;17050:1;17039:9;17035:17;17028:47;17089:146;17230:4;17221:6;17089:146;;;17081:154;;16985:260;;;;;17252:201;;17364:2;17353:9;17349:18;17341:26;;17378:65;17440:1;17429:9;17425:17;17416:6;17378:65;;;17335:118;;;;;17460:871;;17740:3;17729:9;17725:19;17717:27;;17755:65;17817:1;17806:9;17802:17;17793:6;17755:65;;;17831:72;17899:2;17888:9;17884:18;17875:6;17831:72;;;17914;17982:2;17971:9;17967:18;17958:6;17914:72;;;17997;18065:2;18054:9;18050:18;18041:6;17997:72;;;18080:73;18148:3;18137:9;18133:19;18124:6;18080:73;;;18164;18232:3;18221:9;18217:19;18208:6;18164:73;;;18248;18316:3;18305:9;18301:19;18292:6;18248:73;;;17711:620;;;;;;;;;;;18338:293;;18472:2;18461:9;18457:18;18449:26;;18522:9;18516:4;18512:20;18508:1;18497:9;18493:17;18486:47;18547:74;18616:4;18607:6;18547:74;;;18539:82;;18443:188;;;;;18638:407;;18829:2;18818:9;18814:18;18806:26;;18879:9;18873:4;18869:20;18865:1;18854:9;18850:17;18843:47;18904:131;19030:4;18904:131;;;18896:139;;18800:245;;;;19052:407;;19243:2;19232:9;19228:18;19220:26;;19293:9;19287:4;19283:20;19279:1;19268:9;19264:17;19257:47;19318:131;19444:4;19318:131;;;19310:139;;19214:245;;;;19466:407;;19657:2;19646:9;19642:18;19634:26;;19707:9;19701:4;19697:20;19693:1;19682:9;19678:17;19671:47;19732:131;19858:4;19732:131;;;19724:139;;19628:245;;;;19880:407;;20071:2;20060:9;20056:18;20048:26;;20121:9;20115:4;20111:20;20107:1;20096:9;20092:17;20085:47;20146:131;20272:4;20146:131;;;20138:139;;20042:245;;;;20294:407;;20485:2;20474:9;20470:18;20462:26;;20535:9;20529:4;20525:20;20521:1;20510:9;20506:17;20499:47;20560:131;20686:4;20560:131;;;20552:139;;20456:245;;;;20708:407;;20899:2;20888:9;20884:18;20876:26;;20949:9;20943:4;20939:20;20935:1;20924:9;20920:17;20913:47;20974:131;21100:4;20974:131;;;20966:139;;20870:245;;;;21122:407;;21313:2;21302:9;21298:18;21290:26;;21363:9;21357:4;21353:20;21349:1;21338:9;21334:17;21327:47;21388:131;21514:4;21388:131;;;21380:139;;21284:245;;;;21536:407;;21727:2;21716:9;21712:18;21704:26;;21777:9;21771:4;21767:20;21763:1;21752:9;21748:17;21741:47;21802:131;21928:4;21802:131;;;21794:139;;21698:245;;;;21950:407;;22141:2;22130:9;22126:18;22118:26;;22191:9;22185:4;22181:20;22177:1;22166:9;22162:17;22155:47;22216:131;22342:4;22216:131;;;22208:139;;22112:245;;;;22364:407;;22555:2;22544:9;22540:18;22532:26;;22605:9;22599:4;22595:20;22591:1;22580:9;22576:17;22569:47;22630:131;22756:4;22630:131;;;22622:139;;22526:245;;;;22778:407;;22969:2;22958:9;22954:18;22946:26;;23019:9;23013:4;23009:20;23005:1;22994:9;22990:17;22983:47;23044:131;23170:4;23044:131;;;23036:139;;22940:245;;;;23192:407;;23383:2;23372:9;23368:18;23360:26;;23433:9;23427:4;23423:20;23419:1;23408:9;23404:17;23397:47;23458:131;23584:4;23458:131;;;23450:139;;23354:245;;;;23606:407;;23797:2;23786:9;23782:18;23774:26;;23847:9;23841:4;23837:20;23833:1;23822:9;23818:17;23811:47;23872:131;23998:4;23872:131;;;23864:139;;23768:245;;;;24020:407;;24211:2;24200:9;24196:18;24188:26;;24261:9;24255:4;24251:20;24247:1;24236:9;24232:17;24225:47;24286:131;24412:4;24286:131;;;24278:139;;24182:245;;;;24434:294;;24592:3;24581:9;24577:19;24569:27;;24607:111;24715:1;24704:9;24700:17;24691:6;24607:111;;;24563:165;;;;;24735:431;;24907:2;24896:9;24892:18;24884:26;;24921:71;24989:1;24978:9;24974:17;24965:6;24921:71;;;25003:72;25071:2;25060:9;25056:18;25047:6;25003:72;;;25086:70;25152:2;25141:9;25137:18;25128:6;25086:70;;;24878:288;;;;;;;25173:213;;25291:2;25280:9;25276:18;25268:26;;25305:71;25373:1;25362:9;25358:17;25349:6;25305:71;;;25262:124;;;;;25393:324;;25539:2;25528:9;25524:18;25516:26;;25553:71;25621:1;25610:9;25606:17;25597:6;25553:71;;;25635:72;25703:2;25692:9;25688:18;25679:6;25635:72;;;25510:207;;;;;;25724:871;;26004:3;25993:9;25989:19;25981:27;;26019:71;26087:1;26076:9;26072:17;26063:6;26019:71;;;26101:72;26169:2;26158:9;26154:18;26145:6;26101:72;;;26184;26252:2;26241:9;26237:18;26228:6;26184:72;;;26267;26335:2;26324:9;26320:18;26311:6;26267:72;;;26350:73;26418:3;26407:9;26403:19;26394:6;26350:73;;;26434;26502:3;26491:9;26487:19;26478:6;26434:73;;;26518:67;26580:3;26569:9;26565:19;26556:6;26518:67;;;25975:620;;;;;;;;;;;26602:205;;26716:2;26705:9;26701:18;26693:26;;26730:67;26794:1;26783:9;26779:17;26770:6;26730:67;;;26687:120;;;;;26814:170;;26919:3;26911:11;;26957:4;26952:3;26948:14;26940:22;;26905:79;;;;26991:170;;27096:3;27088:11;;27134:4;27129:3;27125:14;27117:22;;27082:79;;;;27168:156;;27296:5;27290:12;27280:22;;27261:63;;;;27331:156;;27459:5;27453:12;27443:22;;27424:63;;;;27494:121;;27587:5;27581:12;27571:22;;27552:63;;;;27622:118;;27712:5;27706:12;27696:22;;27677:63;;;;27747:127;;27864:4;27859:3;27855:14;27847:22;;27841:33;;;;27881:127;;27998:4;27993:3;27989:14;27981:22;;27975:33;;;;28016:197;;28165:6;28160:3;28153:19;28202:4;28197:3;28193:14;28178:29;;28146:67;;;;;28222:197;;28371:6;28366:3;28359:19;28408:4;28403:3;28399:14;28384:29;;28352:67;;;;;28428:144;;28563:3;28548:18;;28541:31;;;;;28581:163;;28696:6;28691:3;28684:19;28733:4;28728:3;28724:14;28709:29;;28677:67;;;;;28752:91;;28814:24;28832:5;28814:24;;;28803:35;;28797:46;;;;28850:99;;28920:24;28938:5;28920:24;;;28909:35;;28903:46;;;;28956:85;;29029:5;29022:13;29015:21;29004:32;;28998:43;;;;29048:109;;29121:30;29114:5;29110:42;29099:53;;29093:64;;;;29164:121;;29237:42;29230:5;29226:54;29215:65;;29209:76;;;;29292:72;;29354:5;29343:16;;29337:27;;;;29371:88;;29443:10;29436:5;29432:22;29421:33;;29415:44;;;;29466:81;;29537:4;29530:5;29526:16;29515:27;;29509:38;;;;29555:268;29620:1;29627:101;29641:6;29638:1;29635:13;29627:101;;;29717:1;29712:3;29708:11;29702:18;29698:1;29693:3;29689:11;29682:39;29663:2;29660:1;29656:10;29651:15;;29627:101;;;29743:6;29740:1;29737:13;29734:2;;;29808:1;29799:6;29794:3;29790:16;29783:27;29734:2;29604:219;;;;;29831:97;;29919:2;29915:7;29910:2;29903:5;29899:14;29895:28;29885:38;;29879:49;;;;29936:117;30005:24;30023:5;30005:24;;;29998:5;29995:35;29985:2;;30044:1;30041;30034:12;29985:2;29979:74;;30060:117;30129:24;30147:5;30129:24;;;30122:5;30119:35;30109:2;;30168:1;30165;30158:12;30109:2;30103:74;;30184:117;30253:24;30271:5;30253:24;;;30246:5;30243:35;30233:2;;30292:1;30289;30282:12;30233:2;30227:74;;30308:115;30376:23;30393:5;30376:23;;;30369:5;30366:34;30356:2;;30414:1;30411;30404:12;30356:2;30350:73;

Swarm Source

bzzr://2b378c248610aa4b6c257364c9e4a4aa7f8ef0364e1f2708184a2b1fc3aeeffd
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.