ETH Price: $1,973.03 (+0.22%)
 

Overview

ETH Balance

772 wei

Eth Value

Less Than $0.01 (@ $1,973.03/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Amount:Between 1-10k
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Amount:Between 1-10k
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MainToken

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-09-17
*/

pragma solidity ^0.5.11;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;}

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;}

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {return 0;}
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;}

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;}
}

contract Secondary {
    address private _primary;
    address private _primaryCandidate;

    constructor () internal {
        _primary = msg.sender;
        _primaryCandidate = address(0);
    }

    modifier onlyPrimary() {
        require(msg.sender == _primary, "Secondary: caller is not the primary account");
        _;
    }

    function primary() public view returns (address) {
        return _primary;
    }
    
    function acceptBeingPrimary() public {
        require(msg.sender == _primaryCandidate, "Secondary: caller is not the primary candidate account");
        require(msg.sender != address(0));
        
        _primary = _primaryCandidate;
        _primaryCandidate = address(0);
    }

    function setPrimaryCandidate(address recipient) public onlyPrimary {
        require(recipient != _primary);
        _primaryCandidate = recipient;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract assetContractable is Secondary{
    mapping(address=>bool) private _assetContracts;
    
    modifier onlyAssetContracts() {
        require(_assetContracts[msg.sender], "You cannot call this function!");
        _;
    }
    
    function assetContracts(address input) public view returns (bool) {
        return _assetContracts[input];
    }
 
    function addAssetContracts(address input) public onlyPrimary{
         require(input != address(this));
         require(input != msg.sender);
         require(input != address(0));
         require(!assetContracts(input));
         
        _assetContracts[input] = true;
    }
    
    function removeAssetContracts(address input) public onlyPrimary{
         require(assetContracts(input));
        _assetContracts[input] = false;
    }
    
}

interface EthPricer{
    function ethUpper() external view returns (uint256);
    function ethLower() external view returns (uint256);
}

contract EthPriceable is assetContractable{
    
    address private _ethPricerAddress;
    
    function ethUpper() internal view returns (uint256) {
        return EthPricer(_ethPricerAddress).ethUpper();
    }
    
    function ethLower() internal view returns (uint256) {
        return EthPricer(_ethPricerAddress).ethLower();
    }
    
    function setEthPricerAddress(address input) public onlyPrimary {
        require(input != address(this));
        require(!assetContracts(input));
        require(input != msg.sender);
        require(input != address(0));
    
        _ethPricerAddress = input;
    }
    
    function ethPricerAddress() public view onlyAssetContracts returns (address) {
        return _ethPricerAddress;
    }

}

interface Assetcontract{
    function assetPricerAddress() external view returns (address payable);
    function AssetMint(address sender, uint256 valuesent) external;
    function isShort() external view returns (bool);
}

interface AssetPricer{
    function updateAssetPrice() external payable returns (bytes32);
    function Fee() external returns (uint256);
    function assetUpper(bool isShort) external view returns (uint256);
    function assetLower(bool isShort) external view returns (uint256);
    function updateGasPrice() external;
}

contract AssetPriceGettable is assetContractable{
    
    using SafeMath for uint256;

    uint256 internal _multiplier = 0;
    
    function multiplier() public view onlyAssetContracts returns (uint256) {
        return _multiplier;
    }
    
    function setMultiplier(uint256 input) public onlyPrimary {
        require(input <= 9999999900);
        _multiplier = input;
    }
    
    function aPA(address assetContractAddress) private view returns (address){
        return Assetcontract(assetContractAddress).assetPricerAddress();
    }

    function Fee(address aCA) internal returns (uint256) {
        AssetPricer(aPA(aCA)).updateGasPrice();
        uint fee = AssetPricer(aPA(aCA)).Fee();
        return (fee.mul(_multiplier.add(100))).div(100);
    }
    
    function assetUpper(address aCA) internal view returns (uint256) {
        bool isShort = Assetcontract(aCA).isShort();
        return AssetPricer(aPA(aCA)).assetUpper(isShort);
    }
    
    function assetLower(address aCA) internal view returns (uint256) {
        bool isShort = Assetcontract(aCA).isShort();
        return AssetPricer(aPA(aCA)).assetLower(isShort);
    }

    function updateAssetPrice(address aCA) internal returns (bytes32) {
        address payable sendto = address(uint160(aPA(aCA)));
        AssetPricer(sendto).updateGasPrice();
        return AssetPricer(sendto).updateAssetPrice.value(AssetPricer(sendto).Fee())();
    }
    
    function isAssetPricerAddress(address aCA, address input) internal view returns (bool) {
        return aPA(aCA) == input;
    }

}

contract ERC20 is IERC20, EthPriceable, AssetPriceGettable{
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply;
    
    uint constant internal DECIMAL = 10**18;
    
    mapping(bytes32=>customer) internal Customers;
    mapping(uint=>uint) private withdrawPerBlock;
    
    enum IdType { gettingAsset, gettingUSD}
    
    struct customer { 
        address sender;
        uint256 valuesent;
        address Assetcontract;
        IdType mytype;
    }
    
    uint256 private withdrawThreshold = 1;
    
    function updateWithdrawThreshold(uint256 _withdrawThreshold) public onlyPrimary {
        withdrawThreshold = _withdrawThreshold;
    }
    
    //Max you can withdraw in USD per block
    function withdrawMAX() public view returns (uint256){
        
        uint usdMAX = (address(this).balance.mul(ethUpper())).div(withdrawThreshold.mul(DECIMAL));
      
        if(withdrawPerBlock[block.number] < usdMAX){
            return usdMAX.sub(withdrawPerBlock[block.number]);
        }else{
            return 0;
        }
    }

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        
        if(recipient == address(this)){
            require(amount <= withdrawMAX(), "Amount sent is too big");
            withdrawPerBlock[block.number] = withdrawPerBlock[block.number].add(amount);
            
            _burn(sender,amount);
            address payable sendto = address(uint160(sender));
            sendto.transfer(amount.mul(DECIMAL).div(ethUpper()));
            
        }else if(assetContracts(recipient)){

           uint USDFee = (Fee(recipient).mul(ethUpper())).div(DECIMAL);
           require(amount > USDFee, "Amount sent is too small");
           
           _burn(sender,amount);
           bytes32 CustomerId = updateAssetPrice(recipient);
           Customers[CustomerId] = customer(sender, amount.sub(USDFee), recipient, IdType.gettingAsset);
            
        }else{
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
        }
        
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount,address sender ) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(sender, account, amount);
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(value, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(value);
    }
    
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }
   
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

interface token {
    function balanceOf(address input) external returns (uint256);
    function transfer(address input, uint amount) external;
}

contract MainToken is ERC20, ERC20Detailed{

    constructor () public ERC20Detailed("Onyx USD", "OUSD", 18){
        _mint(primary(),10**18, address(this));
    }
    
    function () external payable {
        uint256 amount = (msg.value.mul(ethLower())).div(DECIMAL);
        _mint(msg.sender,amount,address(this));
    }
    
    function sendFunds() external payable {}
    
    function USDtrade(address sender, uint assetAmount) public onlyAssetContracts{
       bytes32 customerId = updateAssetPrice(msg.sender);
       Customers[customerId] = customer(sender, assetAmount, msg.sender,IdType.gettingUSD);
    }
    
    function assetPriceUpdated(bytes32 customerId, bool marketOpen) public {
       address sender    = Customers[customerId].sender;
       uint256 valuesent = Customers[customerId].valuesent;
       address AC        = Customers[customerId].Assetcontract;
       IdType mytype     = Customers[customerId].mytype;
       
       require(isAssetPricerAddress(AC, msg.sender));
       require(msg.sender != address(0));
       
       if(mytype == IdType.gettingUSD){

            if(marketOpen){
               uint amount = ((valuesent.mul(AssetPricer(msg.sender).assetLower(Assetcontract(AC).isShort())).mul(100)).sub(AssetPricer(msg.sender).Fee().mul(_multiplier+100).mul(ethUpper())))/(10**20);
               _mint(sender, amount, AC);
               
            }else{
               uint amount = valuesent.sub((AssetPricer(msg.sender).Fee().mul(_multiplier+100).mul(ethUpper())).div(AssetPricer(msg.sender).assetLower(Assetcontract(AC).isShort()).mul(100)));
               Assetcontract(AC).AssetMint(sender,amount); 
            }

        }else if(mytype == IdType.gettingAsset){

            if(marketOpen){
               uint amount = (valuesent.mul(DECIMAL)).div(assetUpper(AC));
               Assetcontract(AC).AssetMint(sender,amount);

            }else{
                _mint(sender, valuesent, AC);
            }
        }
    }
    
    function USDMint(address to, uint256 valuesent) public onlyPrimary{
        _mint(to,valuesent, address(this));
    }
 
    function USDBurn(address to, uint256 valuesent) public onlyPrimary {
        _burn(to,valuesent);
        emit Transfer(to, address(this), valuesent);
    }
    
    
    function getStuckTokens(address _tokenAddress) public {
        token(_tokenAddress).transfer(primary(), token(_tokenAddress).balanceOf(address(this)));
    }
   
    function withdrawEth(uint256 amount) public onlyPrimary{
        address payable sendto = address(uint160(primary()));
        sendto.transfer(amount);
    } 
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"ethPricerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"valuesent","type":"uint256"}],"name":"USDMint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"getStuckTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"valuesent","type":"uint256"}],"name":"USDBurn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"USDtrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"addAssetContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"customerId","type":"bytes32"},{"internalType":"bool","name":"marketOpen","type":"bool"}],"name":"assetPriceUpdated","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"setEthPricerAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"input","type":"uint256"}],"name":"setMultiplier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptBeingPrimary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_withdrawThreshold","type":"uint256"}],"name":"updateWithdrawThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"sendFunds","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"assetContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawMAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setPrimaryCandidate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"primary","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":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"input","type":"address"}],"name":"removeAssetContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405260006004556001600a553480156200001b57600080fd5b50604080518082018252600881527f4f6e79782055534400000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f4f5553440000000000000000000000000000000000000000000000000000000090840152600080546001600160a01b031990811633179091556001805490911690558151919291601291620000b891600b9190620002c2565b508151620000ce90600c906020850190620002c2565b50600d805460ff191660ff92909216919091179055506200010d9050620000f462000113565b670de0b6b3a7640000306001600160e01b036200012316565b62000364565b6000546001600160a01b03165b90565b6001600160a01b0383166200019957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620001b5826007546200024660201b620019ac1790919060201c565b6007556001600160a01b038316600090815260056020908152604090912054620001ea918490620019ac62000246821b17901c565b6001600160a01b0380851660008181526005602090815260409182902094909455805186815290519193928516927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082820183811015620002bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030557805160ff191683800117855562000335565b8280016001018555821562000335579182015b828111156200033557825182559160200191906001019062000318565b506200034392915062000347565b5090565b6200012091905b808211156200034357600081556001016200034e565b61260080620003746000396000f3fe6080604052600436106101cd5760003560e01c8063641579a6116100f7578063a457c2d711610095578063c311d04911610064578063c311d04914610718578063c6dbdf6114610742578063dd62ed3e14610757578063eea02c3c14610792576101cd565b8063a457c2d71461065e578063a9059cbb14610697578063b328e73c146106d0578063be423626146106e5576101cd565b80638608301d116100d15780638608301d146105e45780638d68cf591461060e57806395d89b41146106165780639feab3761461062b576101cd565b8063641579a61461057257806370a082311461059c5780637f29171c146105cf576101cd565b80631dfa4db01161016f5780632fb7b1561161013e5780632fb7b156146104a9578063313ce567146104db57806339509351146105065780634fde39781461053f576101cd565b80631dfa4db0146103c157806323b872dd146103fa57806327ed9d321461043d5780632985af3714610476576101cd565b80630e222f5e116101ab5780630e222f5e1461031757806318160ddd146103525780631b3ed722146103795780631dd60b181461038e576101cd565b80630108f7fc1461020f57806306fdde0314610240578063095ea7b3146102ca575b60006101ff670de0b6b3a76400006101f36101e66107c5565b349063ffffffff61083c16565b9063ffffffff61089e16565b905061020c3382306108e0565b50005b34801561021b57600080fd5b506102246109d6565b604080516001600160a01b039092168252519081900360200190f35b34801561024c57600080fd5b50610255610a4a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610ae0565b604080519115158252519081900360200190f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610af6565b005b34801561035e57600080fd5b50610367610b4e565b60408051918252519081900360200190f35b34801561038557600080fd5b50610367610b54565b34801561039a57600080fd5b50610350600480360360208110156103b157600080fd5b50356001600160a01b0316610bbf565b3480156103cd57600080fd5b50610350600480360360408110156103e457600080fd5b506001600160a01b038135169060200135610cb3565b34801561040657600080fd5b506103036004803603606081101561041d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d4a565b34801561044957600080fd5b506103506004803603604081101561046057600080fd5b506001600160a01b038135169060200135610db9565b34801561048257600080fd5b506103506004803603602081101561049957600080fd5b50356001600160a01b0316610ee8565b3480156104b557600080fd5b50610350600480360360408110156104cc57600080fd5b50803590602001351515610fa7565b3480156104e757600080fd5b506104f061138c565b6040805160ff9092168252519081900360200190f35b34801561051257600080fd5b506103036004803603604081101561052957600080fd5b506001600160a01b038135169060200135611395565b34801561054b57600080fd5b506103506004803603602081101561056257600080fd5b50356001600160a01b03166113d1565b34801561057e57600080fd5b506103506004803603602081101561059557600080fd5b503561148e565b3480156105a857600080fd5b50610367600480360360208110156105bf57600080fd5b50356001600160a01b03166114ee565b3480156105db57600080fd5b50610350611509565b3480156105f057600080fd5b506103506004803603602081101561060757600080fd5b5035611583565b6103506115d1565b34801561062257600080fd5b506102556115d3565b34801561063757600080fd5b506103036004803603602081101561064e57600080fd5b50356001600160a01b0316611634565b34801561066a57600080fd5b506103036004803603604081101561068157600080fd5b506001600160a01b038135169060200135611652565b3480156106a357600080fd5b50610303600480360360408110156106ba57600080fd5b506001600160a01b0381351690602001356116a7565b3480156106dc57600080fd5b506103676116b4565b3480156106f157600080fd5b506103506004803603602081101561070857600080fd5b50356001600160a01b031661173d565b34801561072457600080fd5b506103506004803603602081101561073b57600080fd5b50356117c3565b34801561074e57600080fd5b50610224611854565b34801561076357600080fd5b506103676004803603604081101561077a57600080fd5b506001600160a01b0381358116916020013516611863565b34801561079e57600080fd5b50610350600480360360208110156107b557600080fd5b50356001600160a01b031661188e565b60035460408051631632700360e21b815290516000926001600160a01b0316916358c9c00c916004808301926020929190829003018186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b505190505b90565b60008261084b57506000610898565b8282028284828161085857fe5b04146108955760405162461bcd60e51b81526004018080602001828103825260218152602001806124c86021913960400191505060405180910390fd5b90505b92915050565b600061089583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061190a565b6001600160a01b03831661093b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60075461094e908363ffffffff6119ac16565b6007556001600160a01b03831660009081526005602052604090205461097a908363ffffffff6119ac16565b6001600160a01b0380851660008181526005602090815260409182902094909455805186815290519193928516927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b3360009081526002602052604081205460ff16610a3a576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b506003546001600160a01b031690565b600b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b5050505050905090565b6000610aed338484611a06565b50600192915050565b6000546001600160a01b03163314610b3f5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b610b4a8282306108e0565b5050565b60075490565b3360009081526002602052604081205460ff16610bb8576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b5060045490565b806001600160a01b031663a9059cbb610bd6611854565b604080516370a0823160e01b815230600482015290516001600160a01b038616916370a082319160248083019260209291908290030181600087803b158015610c1e57600080fd5b505af1158015610c32573d6000803e3d6000fd5b505050506040513d6020811015610c4857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b610d068282611af2565b60408051828152905130916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610d57848484611bad565b610daf8433610daa856040518060600160405280602881526020016124e9602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919063ffffffff611f6716565b611a06565b5060019392505050565b3360009081526002602052604090205460ff16610e1d576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b6000610e2833611fc1565b90506040518060800160405280846001600160a01b03168152602001838152602001336001600160a01b03168152602001600180811115610e6557fe5b9052600082815260086020908152604091829020835181546001600160a01b03199081166001600160a01b0392831617835592850151600180840191909155938501516002830180549094169116178083556060850151919391929160ff60a01b1990911690600160a01b908490811115610edc57fe5b02179055505050505050565b6000546001600160a01b03163314610f315760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6001600160a01b038116301415610f4757600080fd5b6001600160a01b038116331415610f5d57600080fd5b6001600160a01b038116610f7057600080fd5b610f7981611634565b15610f8357600080fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000828152600860205260409020805460018201546002909201546001600160a01b039182169291811690600160a01b900460ff16610fe68233612103565b610fef57600080fd5b33610ff957600080fd5b600181600181111561100757fe5b14156113395784156111ce57600068056bc75e2d631000006111b36110b561102d612129565b6110a9600454606401336001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561107157600080fd5b505af1158015611085573d6000803e3d6000fd5b505050506040513d602081101561109b57600080fd5b50519063ffffffff61083c16565b9063ffffffff61083c16565b6111a760646110a9336001600160a01b031663cf307c058a6001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d602081101561112f57600080fd5b5051604080516001600160e01b031960e085901b1681529115156004830152516024808301926020929190829003018186803b15801561116e57600080fd5b505afa158015611182573d6000803e3d6000fd5b505050506040513d602081101561119857600080fd5b50518a9063ffffffff61083c16565b9063ffffffff61216e16565b816111ba57fe5b0490506111c88582856108e0565b50611334565b60006112b86112ab6112a06064336001600160a01b031663cf307c05886001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b15801561122357600080fd5b505afa158015611237573d6000803e3d6000fd5b505050506040513d602081101561124d57600080fd5b5051604080516001600160e01b031960e085901b1681529115156004830152516024808301926020929190829003018186803b15801561128c57600080fd5b505afa158015611085573d6000803e3d6000fd5b6101f361102d612129565b859063ffffffff61216e16565b9050826001600160a01b031663c2c6ba0986836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b50505050505b611384565b600081600181111561134757fe5b14156113845784156113795760006112b8611361846121b0565b6101f386670de0b6b3a764000063ffffffff61083c16565b6113848484846108e0565b505050505050565b600d5460ff1690565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610aed918590610daa908663ffffffff6119ac16565b6000546001600160a01b0316331461141a5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6001600160a01b03811630141561143057600080fd5b61143981611634565b1561144357600080fd5b6001600160a01b03811633141561145957600080fd5b6001600160a01b03811661146c57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114d75760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6402540be39c8111156114e957600080fd5b600455565b6001600160a01b031660009081526005602052604090205490565b6001546001600160a01b031633146115525760405162461bcd60e51b81526004018080602001828103825260368152602001806124286036913960400191505060405180910390fd5b3361155c57600080fd5b60018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146115cc5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b600a55565b565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ad65780601f10610aab57610100808354040283529160200191610ad6565b6001600160a01b031660009081526002602052604090205460ff1690565b6000610aed3384610daa856040518060600160405280602581526020016125a7602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919063ffffffff611f6716565b6000610aed338484611bad565b6000806116f06116d7670de0b6b3a7640000600a5461083c90919063ffffffff16565b6101f36116e2612129565b30319063ffffffff61083c16565b43600090815260096020526040902054909150811115611733574360009081526009602052604090205461172b90829063ffffffff61216e16565b915050610839565b6000915050610839565b6000546001600160a01b031633146117865760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6000546001600160a01b03828116911614156117a157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180c5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6000611816611854565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561184f573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6118e081611634565b6118e957600080fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b600081836119965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561195b578181015183820152602001611943565b50505050905090810190601f1680156119885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119a257fe5b0495945050505050565b600082820183811015610895576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038316611a4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806125836024913960400191505060405180910390fd5b6001600160a01b038216611a905760405162461bcd60e51b81526004018080602001828103825260228152602001806124806022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216611b375760405162461bcd60e51b81526004018080602001828103825260218152602001806125116021913960400191505060405180910390fd5b611b7a8160405180606001604052806022815260200161245e602291396001600160a01b038516600090815260056020526040902054919063ffffffff611f6716565b6001600160a01b038316600090815260056020526040902055600754611ba6908263ffffffff61216e16565b6007555050565b6001600160a01b038316611bf25760405162461bcd60e51b81526004018080602001828103825260258152602001806125326025913960400191505060405180910390fd5b6001600160a01b038216611c375760405162461bcd60e51b81526004018080602001828103825260238152602001806124056023913960400191505060405180910390fd5b6001600160a01b038216301415611d1f57611c506116b4565b811115611c9d576040805162461bcd60e51b8152602060048201526016602482015275416d6f756e742073656e7420697320746f6f2062696760501b604482015290519081900360640190fd5b43600090815260096020526040902054611cbd908263ffffffff6119ac16565b43600090815260096020526040902055611cd78382611af2565b826001600160a01b0381166108fc611cf0611361612129565b6040518115909202916000818181858888f19350505050158015611d18573d6000803e3d6000fd5b5050611f17565b611d2882611634565b15611e85576000611d4f670de0b6b3a76400006101f3611d46612129565b6110a987612294565b9050808211611da5576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e742073656e7420697320746f6f20736d616c6c0000000000000000604482015290519081900360640190fd5b611daf8483611af2565b6000611dba84611fc1565b90506040518060800160405280866001600160a01b03168152602001611de9848661216e90919063ffffffff16565b81526001600160a01b038616602082015260400160009052600082815260086020908152604091829020835181546001600160a01b03199081166001600160a01b0392831617835592850151600180840191909155938501516002830180549094169116178083556060850151919391929160ff60a01b1990911690600160a01b908490811115611e7657fe5b02179055509050505050611f17565b611ec8816040518060600160405280602681526020016124a2602691396001600160a01b038616600090815260056020526040902054919063ffffffff611f6716565b6001600160a01b038085166000908152600560205260408082209390935590841681522054611efd908263ffffffff6119ac16565b6001600160a01b0383166000908152600560205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008184841115611fb95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561195b578181015183820152602001611943565b505050900390565b600080611fcd83612397565b9050806001600160a01b031663b68bd45e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b50505050806001600160a01b03166353bfe633826001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561206c57600080fd5b505af1158015612080573d6000803e3d6000fd5b505050506040513d602081101561209657600080fd5b5051604080516001600160e01b031960e085901b1681529051600480830192602092919082900301818588803b1580156120cf57600080fd5b505af11580156120e3573d6000803e3d6000fd5b50505050506040513d60208110156120fa57600080fd5b50519392505050565b6000816001600160a01b031661211884612397565b6001600160a01b0316149392505050565b60035460408051635b8e266360e11b815290516000926001600160a01b03169163b71c4cc6916004808301926020929190829003018186803b15801561080a57600080fd5b600061089583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f67565b600080826001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ec57600080fd5b505afa158015612200573d6000803e3d6000fd5b505050506040513d602081101561221657600080fd5b5051905061222383612397565b6001600160a01b031663c7af3e84826040518263ffffffff1660e01b8152600401808215151515815260200191505060206040518083038186803b15801561226a57600080fd5b505afa15801561227e573d6000803e3d6000fd5b505050506040513d60208110156120fa57600080fd5b600061229f82612397565b6001600160a01b031663b68bd45e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b5050505060006122fc83612397565b6001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561233657600080fd5b505af115801561234a573d6000803e3d6000fd5b505050506040513d602081101561236057600080fd5b5051600454909150612390906064906101f390612383908363ffffffff6119ac16565b849063ffffffff61083c16565b9392505050565b6000816001600160a01b03166370df97f06040518163ffffffff1660e01b815260040160206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b50519291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d6172792063616e646964617465206163636f756e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e7445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158204aa60cf457e3809d25ed681d5c55b0c8d1158402839a26753da442bd629ad04b64736f6c634300050b0032

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c8063641579a6116100f7578063a457c2d711610095578063c311d04911610064578063c311d04914610718578063c6dbdf6114610742578063dd62ed3e14610757578063eea02c3c14610792576101cd565b8063a457c2d71461065e578063a9059cbb14610697578063b328e73c146106d0578063be423626146106e5576101cd565b80638608301d116100d15780638608301d146105e45780638d68cf591461060e57806395d89b41146106165780639feab3761461062b576101cd565b8063641579a61461057257806370a082311461059c5780637f29171c146105cf576101cd565b80631dfa4db01161016f5780632fb7b1561161013e5780632fb7b156146104a9578063313ce567146104db57806339509351146105065780634fde39781461053f576101cd565b80631dfa4db0146103c157806323b872dd146103fa57806327ed9d321461043d5780632985af3714610476576101cd565b80630e222f5e116101ab5780630e222f5e1461031757806318160ddd146103525780631b3ed722146103795780631dd60b181461038e576101cd565b80630108f7fc1461020f57806306fdde0314610240578063095ea7b3146102ca575b60006101ff670de0b6b3a76400006101f36101e66107c5565b349063ffffffff61083c16565b9063ffffffff61089e16565b905061020c3382306108e0565b50005b34801561021b57600080fd5b506102246109d6565b604080516001600160a01b039092168252519081900360200190f35b34801561024c57600080fd5b50610255610a4a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610ae0565b604080519115158252519081900360200190f35b34801561032357600080fd5b506103506004803603604081101561033a57600080fd5b506001600160a01b038135169060200135610af6565b005b34801561035e57600080fd5b50610367610b4e565b60408051918252519081900360200190f35b34801561038557600080fd5b50610367610b54565b34801561039a57600080fd5b50610350600480360360208110156103b157600080fd5b50356001600160a01b0316610bbf565b3480156103cd57600080fd5b50610350600480360360408110156103e457600080fd5b506001600160a01b038135169060200135610cb3565b34801561040657600080fd5b506103036004803603606081101561041d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d4a565b34801561044957600080fd5b506103506004803603604081101561046057600080fd5b506001600160a01b038135169060200135610db9565b34801561048257600080fd5b506103506004803603602081101561049957600080fd5b50356001600160a01b0316610ee8565b3480156104b557600080fd5b50610350600480360360408110156104cc57600080fd5b50803590602001351515610fa7565b3480156104e757600080fd5b506104f061138c565b6040805160ff9092168252519081900360200190f35b34801561051257600080fd5b506103036004803603604081101561052957600080fd5b506001600160a01b038135169060200135611395565b34801561054b57600080fd5b506103506004803603602081101561056257600080fd5b50356001600160a01b03166113d1565b34801561057e57600080fd5b506103506004803603602081101561059557600080fd5b503561148e565b3480156105a857600080fd5b50610367600480360360208110156105bf57600080fd5b50356001600160a01b03166114ee565b3480156105db57600080fd5b50610350611509565b3480156105f057600080fd5b506103506004803603602081101561060757600080fd5b5035611583565b6103506115d1565b34801561062257600080fd5b506102556115d3565b34801561063757600080fd5b506103036004803603602081101561064e57600080fd5b50356001600160a01b0316611634565b34801561066a57600080fd5b506103036004803603604081101561068157600080fd5b506001600160a01b038135169060200135611652565b3480156106a357600080fd5b50610303600480360360408110156106ba57600080fd5b506001600160a01b0381351690602001356116a7565b3480156106dc57600080fd5b506103676116b4565b3480156106f157600080fd5b506103506004803603602081101561070857600080fd5b50356001600160a01b031661173d565b34801561072457600080fd5b506103506004803603602081101561073b57600080fd5b50356117c3565b34801561074e57600080fd5b50610224611854565b34801561076357600080fd5b506103676004803603604081101561077a57600080fd5b506001600160a01b0381358116916020013516611863565b34801561079e57600080fd5b50610350600480360360208110156107b557600080fd5b50356001600160a01b031661188e565b60035460408051631632700360e21b815290516000926001600160a01b0316916358c9c00c916004808301926020929190829003018186803b15801561080a57600080fd5b505afa15801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b505190505b90565b60008261084b57506000610898565b8282028284828161085857fe5b04146108955760405162461bcd60e51b81526004018080602001828103825260218152602001806124c86021913960400191505060405180910390fd5b90505b92915050565b600061089583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061190a565b6001600160a01b03831661093b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60075461094e908363ffffffff6119ac16565b6007556001600160a01b03831660009081526005602052604090205461097a908363ffffffff6119ac16565b6001600160a01b0380851660008181526005602090815260409182902094909455805186815290519193928516927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b3360009081526002602052604081205460ff16610a3a576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b506003546001600160a01b031690565b600b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ad65780601f10610aab57610100808354040283529160200191610ad6565b820191906000526020600020905b815481529060010190602001808311610ab957829003601f168201915b5050505050905090565b6000610aed338484611a06565b50600192915050565b6000546001600160a01b03163314610b3f5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b610b4a8282306108e0565b5050565b60075490565b3360009081526002602052604081205460ff16610bb8576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b5060045490565b806001600160a01b031663a9059cbb610bd6611854565b604080516370a0823160e01b815230600482015290516001600160a01b038616916370a082319160248083019260209291908290030181600087803b158015610c1e57600080fd5b505af1158015610c32573d6000803e3d6000fd5b505050506040513d6020811015610c4857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610cfc5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b610d068282611af2565b60408051828152905130916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610d57848484611bad565b610daf8433610daa856040518060600160405280602881526020016124e9602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919063ffffffff611f6716565b611a06565b5060019392505050565b3360009081526002602052604090205460ff16610e1d576040805162461bcd60e51b815260206004820152601e60248201527f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e210000604482015290519081900360640190fd5b6000610e2833611fc1565b90506040518060800160405280846001600160a01b03168152602001838152602001336001600160a01b03168152602001600180811115610e6557fe5b9052600082815260086020908152604091829020835181546001600160a01b03199081166001600160a01b0392831617835592850151600180840191909155938501516002830180549094169116178083556060850151919391929160ff60a01b1990911690600160a01b908490811115610edc57fe5b02179055505050505050565b6000546001600160a01b03163314610f315760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6001600160a01b038116301415610f4757600080fd5b6001600160a01b038116331415610f5d57600080fd5b6001600160a01b038116610f7057600080fd5b610f7981611634565b15610f8357600080fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000828152600860205260409020805460018201546002909201546001600160a01b039182169291811690600160a01b900460ff16610fe68233612103565b610fef57600080fd5b33610ff957600080fd5b600181600181111561100757fe5b14156113395784156111ce57600068056bc75e2d631000006111b36110b561102d612129565b6110a9600454606401336001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561107157600080fd5b505af1158015611085573d6000803e3d6000fd5b505050506040513d602081101561109b57600080fd5b50519063ffffffff61083c16565b9063ffffffff61083c16565b6111a760646110a9336001600160a01b031663cf307c058a6001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d602081101561112f57600080fd5b5051604080516001600160e01b031960e085901b1681529115156004830152516024808301926020929190829003018186803b15801561116e57600080fd5b505afa158015611182573d6000803e3d6000fd5b505050506040513d602081101561119857600080fd5b50518a9063ffffffff61083c16565b9063ffffffff61216e16565b816111ba57fe5b0490506111c88582856108e0565b50611334565b60006112b86112ab6112a06064336001600160a01b031663cf307c05886001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b15801561122357600080fd5b505afa158015611237573d6000803e3d6000fd5b505050506040513d602081101561124d57600080fd5b5051604080516001600160e01b031960e085901b1681529115156004830152516024808301926020929190829003018186803b15801561128c57600080fd5b505afa158015611085573d6000803e3d6000fd5b6101f361102d612129565b859063ffffffff61216e16565b9050826001600160a01b031663c2c6ba0986836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131a57600080fd5b505af115801561132e573d6000803e3d6000fd5b50505050505b611384565b600081600181111561134757fe5b14156113845784156113795760006112b8611361846121b0565b6101f386670de0b6b3a764000063ffffffff61083c16565b6113848484846108e0565b505050505050565b600d5460ff1690565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610aed918590610daa908663ffffffff6119ac16565b6000546001600160a01b0316331461141a5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6001600160a01b03811630141561143057600080fd5b61143981611634565b1561144357600080fd5b6001600160a01b03811633141561145957600080fd5b6001600160a01b03811661146c57600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114d75760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6402540be39c8111156114e957600080fd5b600455565b6001600160a01b031660009081526005602052604090205490565b6001546001600160a01b031633146115525760405162461bcd60e51b81526004018080602001828103825260368152602001806124286036913960400191505060405180910390fd5b3361155c57600080fd5b60018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146115cc5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b600a55565b565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ad65780601f10610aab57610100808354040283529160200191610ad6565b6001600160a01b031660009081526002602052604090205460ff1690565b6000610aed3384610daa856040518060600160405280602581526020016125a7602591393360009081526006602090815260408083206001600160a01b038d168452909152902054919063ffffffff611f6716565b6000610aed338484611bad565b6000806116f06116d7670de0b6b3a7640000600a5461083c90919063ffffffff16565b6101f36116e2612129565b30319063ffffffff61083c16565b43600090815260096020526040902054909150811115611733574360009081526009602052604090205461172b90829063ffffffff61216e16565b915050610839565b6000915050610839565b6000546001600160a01b031633146117865760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6000546001600160a01b03828116911614156117a157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461180c5760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6000611816611854565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561184f573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6000546001600160a01b031633146118d75760405162461bcd60e51b815260040180806020018281038252602c815260200180612557602c913960400191505060405180910390fd5b6118e081611634565b6118e957600080fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b600081836119965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561195b578181015183820152602001611943565b50505050905090810190601f1680156119885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816119a257fe5b0495945050505050565b600082820183811015610895576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038316611a4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806125836024913960400191505060405180910390fd5b6001600160a01b038216611a905760405162461bcd60e51b81526004018080602001828103825260228152602001806124806022913960400191505060405180910390fd5b6001600160a01b03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038216611b375760405162461bcd60e51b81526004018080602001828103825260218152602001806125116021913960400191505060405180910390fd5b611b7a8160405180606001604052806022815260200161245e602291396001600160a01b038516600090815260056020526040902054919063ffffffff611f6716565b6001600160a01b038316600090815260056020526040902055600754611ba6908263ffffffff61216e16565b6007555050565b6001600160a01b038316611bf25760405162461bcd60e51b81526004018080602001828103825260258152602001806125326025913960400191505060405180910390fd5b6001600160a01b038216611c375760405162461bcd60e51b81526004018080602001828103825260238152602001806124056023913960400191505060405180910390fd5b6001600160a01b038216301415611d1f57611c506116b4565b811115611c9d576040805162461bcd60e51b8152602060048201526016602482015275416d6f756e742073656e7420697320746f6f2062696760501b604482015290519081900360640190fd5b43600090815260096020526040902054611cbd908263ffffffff6119ac16565b43600090815260096020526040902055611cd78382611af2565b826001600160a01b0381166108fc611cf0611361612129565b6040518115909202916000818181858888f19350505050158015611d18573d6000803e3d6000fd5b5050611f17565b611d2882611634565b15611e85576000611d4f670de0b6b3a76400006101f3611d46612129565b6110a987612294565b9050808211611da5576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e742073656e7420697320746f6f20736d616c6c0000000000000000604482015290519081900360640190fd5b611daf8483611af2565b6000611dba84611fc1565b90506040518060800160405280866001600160a01b03168152602001611de9848661216e90919063ffffffff16565b81526001600160a01b038616602082015260400160009052600082815260086020908152604091829020835181546001600160a01b03199081166001600160a01b0392831617835592850151600180840191909155938501516002830180549094169116178083556060850151919391929160ff60a01b1990911690600160a01b908490811115611e7657fe5b02179055509050505050611f17565b611ec8816040518060600160405280602681526020016124a2602691396001600160a01b038616600090815260056020526040902054919063ffffffff611f6716565b6001600160a01b038085166000908152600560205260408082209390935590841681522054611efd908263ffffffff6119ac16565b6001600160a01b0383166000908152600560205260409020555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008184841115611fb95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561195b578181015183820152602001611943565b505050900390565b600080611fcd83612397565b9050806001600160a01b031663b68bd45e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561200a57600080fd5b505af115801561201e573d6000803e3d6000fd5b50505050806001600160a01b03166353bfe633826001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561206c57600080fd5b505af1158015612080573d6000803e3d6000fd5b505050506040513d602081101561209657600080fd5b5051604080516001600160e01b031960e085901b1681529051600480830192602092919082900301818588803b1580156120cf57600080fd5b505af11580156120e3573d6000803e3d6000fd5b50505050506040513d60208110156120fa57600080fd5b50519392505050565b6000816001600160a01b031661211884612397565b6001600160a01b0316149392505050565b60035460408051635b8e266360e11b815290516000926001600160a01b03169163b71c4cc6916004808301926020929190829003018186803b15801561080a57600080fd5b600061089583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f67565b600080826001600160a01b031663ce83b6396040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ec57600080fd5b505afa158015612200573d6000803e3d6000fd5b505050506040513d602081101561221657600080fd5b5051905061222383612397565b6001600160a01b031663c7af3e84826040518263ffffffff1660e01b8152600401808215151515815260200191505060206040518083038186803b15801561226a57600080fd5b505afa15801561227e573d6000803e3d6000fd5b505050506040513d60208110156120fa57600080fd5b600061229f82612397565b6001600160a01b031663b68bd45e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b5050505060006122fc83612397565b6001600160a01b031663bef7a2f06040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561233657600080fd5b505af115801561234a573d6000803e3d6000fd5b505050506040513d602081101561236057600080fd5b5051600454909150612390906064906101f390612383908363ffffffff6119ac16565b849063ffffffff61083c16565b9392505050565b6000816001600160a01b03166370df97f06040518163ffffffff1660e01b815260040160206040518083038186803b1580156123d257600080fd5b505afa1580156123e6573d6000803e3d6000fd5b505050506040513d60208110156123fc57600080fd5b50519291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d6172792063616e646964617465206163636f756e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735365636f6e646172793a2063616c6c6572206973206e6f7420746865207072696d617279206163636f756e7445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158204aa60cf457e3809d25ed681d5c55b0c8d1158402839a26753da442bd629ad04b64736f6c634300050b0032

Deployed Bytecode Sourcemap

12371:2674:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12590:14;12607:40;6926:6;12608:25;12622:10;:8;:10::i;:::-;12608:9;;:25;:13;:25;:::i;:::-;12607:31;:40;:31;:40;:::i;:::-;12590:57;;12658:38;12664:10;12675:6;12690:4;12658:5;:38::i;:::-;12550:154;12371:2674;4321:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4321:120:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4321:120:0;;;;;;;;;;;;;;11943:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11943:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11943:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8372:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8372:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8372:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14405:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14405:119:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14405:119:0;;;;;;;;:::i;:::-;;7849:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7849:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;5152:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5152:108:0;;;:::i;14710:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14710:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14710:160:0;-1:-1:-1;;;;;14710:160:0;;:::i;14533:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14533:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14533:159:0;;;;;;;;:::i;8528:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8528:300:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8528:300:0;;;;;;;;;;;;;;;;;:::i;12768:237::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12768:237:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12768:237:0;;;;;;;;:::i;3068:285::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3068:285:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3068:285:0;-1:-1:-1;;;;;3068:285:0;;:::i;13017:1376::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13017:1376:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13017:1376:0;;;;;;;;;:::i;12129:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12129:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8836:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8836:206:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8836:206:0;;;;;;;;:::i;4034:275::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4034:275:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4034:275:0;-1:-1:-1;;;;;4034:275:0;;:::i;5272:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5272:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5272:134:0;;:::i;7948:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7948:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7948:110:0;-1:-1:-1;;;;;7948:110:0;;:::i;1561:288::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1561:288:0;;;:::i;7301:137::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7301:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7301:137:0;;:::i;12716:40::-;;;:::i;12034:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12034:87:0;;;:::i;2945:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2945:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2945:114:0;-1:-1:-1;;;;;2945:114:0;;:::i;9050:257::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9050:257:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9050:257:0;;;;;;;;:::i;8066:156::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8066:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8066:156:0;;;;;;;;:::i;7495:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7495:346:0;;;:::i;1857:156::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1857:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1857:156:0;-1:-1:-1;;;;;1857:156:0;;:::i;14881:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14881:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14881:160:0;;:::i;1466:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1466:83:0;;;:::i;8230:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8230:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8230:134:0;;;;;;;;;;:::i;3365:154::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3365:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3365:154:0;-1:-1:-1;;;;;3365:154:0;;:::i;3905:117::-;3985:17;;3975:39;;;-1:-1:-1;;;3975:39:0;;;;3948:7;;-1:-1:-1;;;;;3985:17:0;;3975:37;;:39;;;;;;;;;;;;;;3985:17;3975:39;;;5:2:-1;;;;30:1;27;20:12;5:2;3975:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3975:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3975:39:0;;-1:-1:-1;3905:117:0;;:::o;565:216::-;623:7;647:6;643:23;;-1:-1:-1;663:1:0;656:8;;643:23;688:5;;;692:1;688;:5;:1;712:5;;;;;:10;704:56;;;;-1:-1:-1;;;704:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:1;-1:-1:-1;565:216:0;;;;;:::o;789:126::-;847:7;874:39;878:1;881;874:39;;;;;;;;;;;;;;;;;:3;:39::i;10661:320::-;-1:-1:-1;;;;;10753:21:0;;10745:65;;;;;-1:-1:-1;;;10745:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10838:12;;:24;;10855:6;10838:24;:16;:24;:::i;:::-;10823:12;:39;-1:-1:-1;;;;;10894:18:0;;;;;;:9;:18;;;;;;:30;;10917:6;10894:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;10873:18:0;;;;;;;:9;:18;;;;;;;;;:51;;;;10940:33;;;;;;;10873:18;;10940:33;;;;;;;;;;;;;10661:320;;;:::o;4321:120::-;2867:10;4389:7;2851:27;;;:15;:27;;;;;;;;2843:70;;;;;-1:-1:-1;;;2843:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4416:17:0;;-1:-1:-1;;;;;4416:17:0;4321:120;:::o;11943:83::-;12013:5;12006:12;;;;;;;;-1:-1:-1;;12006:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11980:13;;12006:12;;12013:5;;12006:12;;12013:5;12006:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11943:83;:::o;8372:148::-;8437:4;8454:36;8463:10;8475:7;8484:5;8454:8;:36::i;:::-;-1:-1:-1;8508:4:0;8372:148;;;;:::o;14405:119::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14482:34;14488:2;14491:9;14510:4;14482:5;:34::i;:::-;14405:119;;:::o;7849:91::-;7920:12;;7849:91;:::o;5152:108::-;2867:10;5214:7;2851:27;;;:15;:27;;;;;;;;2843:70;;;;;-1:-1:-1;;;2843:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5241:11:0;;5152:108;:::o;14710:160::-;14781:13;-1:-1:-1;;;;;14775:29:0;;14805:9;:7;:9::i;:::-;14816:45;;;-1:-1:-1;;;14816:45:0;;14855:4;14816:45;;;;;;-1:-1:-1;;;;;14816:30:0;;;;;:45;;;;;;;;;;;;;;-1:-1:-1;14816:30:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;14816:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14816:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14816:45:0;14775:87;;;-1:-1:-1;;;;;;14775:87:0;;;;;;;-1:-1:-1;;;;;14775:87:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14775:87:0;;;;;;;-1:-1:-1;14775:87:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;14775:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14775:87:0;;;;14710:160;:::o;14533:159::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14611:19;14617:2;14620:9;14611:5;:19::i;:::-;14646:38;;;;;;;;14667:4;;-1:-1:-1;;;;;14646:38:0;;;;;;;;;;;;14533:159;;:::o;8528:300::-;8617:4;8634:36;8644:6;8652:9;8663:6;8634:9;:36::i;:::-;8681:117;8690:6;8698:10;8710:87;8746:6;8710:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8710:19:0;;;;;;:11;:19;;;;;;;;8730:10;8710:31;;;;;;;;;:87;;:35;:87;:::i;:::-;8681:8;:117::i;:::-;-1:-1:-1;8816:4:0;8528:300;;;;;:::o;12768:237::-;2867:10;2851:27;;;;:15;:27;;;;;;;;2843:70;;;;;-1:-1:-1;;;2843:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12855:18;12876:28;12893:10;12876:16;:28::i;:::-;12855:49;;12938:59;;;;;;;;12947:6;-1:-1:-1;;;;;12938:59:0;;;;;12955:11;12938:59;;;;12968:10;-1:-1:-1;;;;;12938:59:0;;;;;12979:17;12938:59;;;;;;;;;;12914:21;;;;:9;:21;;;;;;;;;:83;;;;-1:-1:-1;;;;;;12914:83:0;;;-1:-1:-1;;;;;12914:83:0;;;;;;;;;;-1:-1:-1;12914:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;:83;;;-1:-1:-1;;;;12914:83:0;;;;-1:-1:-1;;;12914:83:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;12768:237:0:o;3068:285::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3148:22:0;;3165:4;3148:22;;3140:31;;;;;;-1:-1:-1;;;;;3191:19:0;;3200:10;3191:19;;3183:28;;;;;;-1:-1:-1;;;;;3231:19:0;;3223:28;;;;;;3272:21;3287:5;3272:14;:21::i;:::-;3271:22;3263:31;;;;;;-1:-1:-1;;;;;3316:22:0;;;;;:15;:22;;;;;:29;;-1:-1:-1;;3316:29:0;3341:4;3316:29;;;3068:285::o;13017:1376::-;13098:14;13118:21;;;:9;:21;;;;;:28;;;13176:31;;;13237:35;;;;;-1:-1:-1;;;;;13118:28:0;;;;13176:31;13237:35;;;-1:-1:-1;;;13302:28:0;;;;13357:36;13237:35;13382:10;13357:20;:36::i;:::-;13349:45;;;;;;13412:10;13404:33;;;;;;13469:17;13459:6;:27;;;;;;;;;13456:930;;;13507:10;13504:568;;;13536:11;13715:6;13551:161;13645:66;13700:10;:8;:10::i;:::-;13645:50;13679:11;;13691:3;13679:15;13657:10;-1:-1:-1;;;;;13645:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13645:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13645:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13645:29:0;;:50;:33;:50;:::i;:::-;:54;:66;:54;:66;:::i;:::-;13552:87;13635:3;13552:78;13578:10;-1:-1:-1;;;;;13566:34:0;;13615:2;-1:-1:-1;;;;;13601:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13601:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13601:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13601:27:0;13566:63;;;-1:-1:-1;;;;;;13566:63:0;;;;;;;;;;;;;;;;;;;;13601:27;;13566:63;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;13566:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13566:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13566:63:0;13552:9;;:78;:13;:78;:::i;:87::-;13551:93;:161;:93;:161;:::i;:::-;13550:172;;;;;;13536:186;;13740:25;13746:6;13754;13762:2;13740:5;:25::i;:::-;13504:568;;;;13820:11;13834:161;13848:146;13921:72;13989:3;13933:10;-1:-1:-1;;;;;13921:34:0;;13970:2;-1:-1:-1;;;;;13956:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13956:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13956:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13956:27:0;13921:63;;;-1:-1:-1;;;;;;13921:63:0;;;;;;;;;;;;;;;;;;;;13956:27;;13921:63;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;13921:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13921:72:0;13849:66;13904:10;:8;:10::i;13848:146::-;13834:9;;:161;:13;:161;:::i;:::-;13820:175;;14027:2;-1:-1:-1;;;;;14013:27:0;;14041:6;14048;14013:42;;;;;;;;;;;;;-1:-1:-1;;;;;14013:42:0;-1:-1:-1;;;;;14013:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14013:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14013:42:0;;;;13504:568;;13456:930;;;14103:19;14093:6;:29;;;;;;;;;14090:296;;;14143:10;14140:235;;;14172:11;14186:44;14215:14;14226:2;14215:10;:14::i;:::-;14187:22;:9;6926:6;14187:22;:13;:22;:::i;14140:235::-;14331:28;14337:6;14345:9;14356:2;14331:5;:28::i;:::-;13017:1376;;;;;;:::o;12129:83::-;12195:9;;;;12129:83;:::o;8836:206::-;8942:10;8916:4;8963:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8963:32:0;;;;;;;;;;8916:4;;8933:79;;8954:7;;8963:48;;9000:10;8963:48;:36;:48;:::i;4034:275::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4116:22:0;;4133:4;4116:22;;4108:31;;;;;;4159:21;4174:5;4159:14;:21::i;:::-;4158:22;4150:31;;;;;;-1:-1:-1;;;;;4200:19:0;;4209:10;4200:19;;4192:28;;;;;;-1:-1:-1;;;;;4239:19:0;;4231:28;;;;;;4276:17;:25;;-1:-1:-1;;;;;;4276:25:0;-1:-1:-1;;;;;4276:25:0;;;;;;;;;;4034:275::o;5272:134::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5357:10;5348:5;:19;;5340:28;;;;;;5379:11;:19;5272:134::o;7948:110::-;-1:-1:-1;;;;;8032:18:0;8005:7;8032:18;;;:9;:18;;;;;;;7948:110::o;1561:288::-;1631:17;;-1:-1:-1;;;;;1631:17:0;1617:10;:31;1609:98;;;;-1:-1:-1;;;1609:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:10;1718:33;;;;;;1783:17;;;;1772:28;;-1:-1:-1;;;;;;1772:28:0;;;-1:-1:-1;;;;;1783:17:0;;1772:28;;;;1811:30;;;1561:288::o;7301:137::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7392:17;:38;7301:137::o;12716:40::-;:::o;12034:87::-;12106:7;12099:14;;;;;;;;-1:-1:-1;;12099:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12073:13;;12099:14;;12106:7;;12099:14;;12106:7;12099:14;;;;;;;;;;;;;;;;;;;;;;;;2945:114;-1:-1:-1;;;;;3029:22:0;3005:4;3029:22;;;:15;:22;;;;;;;;;2945:114::o;9050:257::-;9135:4;9152:125;9161:10;9173:7;9182:94;9219:15;9182:94;;;;;;;;;;;;;;;;;9194:10;9182:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9182:32:0;;;;;;;;;;;:94;;:36;:94;:::i;8066:156::-;8135:4;8152:40;8162:10;8174:9;8185:6;8152:9;:40::i;7495:346::-;7539:7;7568:11;7582:75;7626:30;6926:6;7626:17;;:21;;:30;;;;:::i;:::-;7583:37;7609:10;:8;:10::i;:::-;7591:4;7583:21;;:37;:25;:37;:::i;7582:75::-;7696:12;7679:30;;;;:16;:30;;;;;;7568:89;;-1:-1:-1;7679:39:0;-1:-1:-1;7676:158:0;;;7769:12;7752:30;;;;:16;:30;;;;;;7741:42;;:6;;:42;:10;:42;:::i;:::-;7734:49;;;;;7676:158;7821:1;7814:8;;;;;1857:156;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:8;;-1:-1:-1;;;;;1943:21:0;;;1956:8;;1943:21;;1935:30;;;;;;1976:17;:29;;-1:-1:-1;;;;;;1976:29:0;-1:-1:-1;;;;;1976:29:0;;;;;;;;;;1857:156::o;14881:160::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:22;14988:9;:7;:9::i;:::-;15010:23;;14947:52;;-1:-1:-1;;;;;;15010:15:0;;;:23;;;;;15026:6;;15010:23;;;;15026:6;15010:15;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15010:23:0;1449:1;14881:160;:::o;1466:83::-;1506:7;1533:8;-1:-1:-1;;;;;1533:8:0;1466:83;:::o;8230:134::-;-1:-1:-1;;;;;8329:18:0;;;8302:7;8329:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8230:134::o;3365:154::-;1381:8;;-1:-1:-1;;;;;1381:8:0;1367:10;:22;1359:79;;;;-1:-1:-1;;;1359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3448:21;3463:5;3448:14;:21::i;:::-;3440:30;;;;;;-1:-1:-1;;;;;3481:22:0;3506:5;3481:22;;;:15;:22;;;;;:30;;-1:-1:-1;;3481:30:0;;;3365:154::o;923:183::-;1009:7;1044:12;1037:5;1029:28;;;;-1:-1:-1;;;1029:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1029:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1068:9;1084:1;1080;:5;;;;;;;923:183;-1:-1:-1;;;;;923:183:0:o;54:173::-;112:7;144:5;;;168:6;;;;160:46;;;;;-1:-1:-1;;;160:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11293:335;-1:-1:-1;;;;;11386:19:0;;11378:68;;;;-1:-1:-1;;;11378:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11465:21:0;;11457:68;;;;-1:-1:-1;;;11457:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11538:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;11589:31;;;;;;;;;;;;;;;;;11293:335;;;:::o;10989:292::-;-1:-1:-1;;;;;11064:21:0;;11056:67;;;;-1:-1:-1;;;11056:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11157;11180:5;11157:67;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11157:18:0;;;;;;:9;:18;;;;;;;:67;;:22;:67;:::i;:::-;-1:-1:-1;;;;;11136:18:0;;;;;;:9;:18;;;;;:88;11250:12;;:23;;11267:5;11250:23;:16;:23;:::i;:::-;11235:12;:38;-1:-1:-1;;10989:292:0:o;9315:1338::-;-1:-1:-1;;;;;9413:20:0;;9405:70;;;;-1:-1:-1;;;9405:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9494:23:0;;9486:71;;;;-1:-1:-1;;;9486:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9581:26:0;;9602:4;9581:26;9578:1007;;;9641:13;:11;:13::i;:::-;9631:6;:23;;9623:58;;;;;-1:-1:-1;;;9623:58:0;;;;;;;;;;;;-1:-1:-1;;;9623:58:0;;;;;;;;;;;;;;;9746:12;9729:30;;;;:16;:30;;;;;;:42;;9764:6;9729:42;:34;:42;:::i;:::-;9713:12;9696:30;;;;:16;:30;;;;;:75;9800:20;9806:6;9813;9800:5;:20::i;:::-;9876:6;-1:-1:-1;;;;;9899:15:0;;:52;9915:35;9939:10;:8;:10::i;9915:35::-;9899:52;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9899:52:0;9578:1007;;;;9985:25;10000:9;9985:14;:25::i;:::-;9982:603;;;10027:11;10041:45;6926:6;10042:30;10061:10;:8;:10::i;:::-;10042:14;10046:9;10042:3;:14::i;10041:45::-;10027:59;;10117:6;10108;:15;10100:52;;;;;-1:-1:-1;;;10100:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10179:20;10185:6;10192;10179:5;:20::i;:::-;10213:18;10234:27;10251:9;10234:16;:27::i;:::-;10213:48;;10299:68;;;;;;;;10308:6;-1:-1:-1;;;;;10299:68:0;;;;;10316:18;10327:6;10316;:10;;:18;;;;:::i;:::-;10299:68;;-1:-1:-1;;;;;10299:68:0;;;;;;;;-1:-1:-1;10299:68:0;;10275:21;;;;:9;:21;;;;;;;;;:92;;;;-1:-1:-1;;;;;;10275:92:0;;;-1:-1:-1;;;;;10275:92:0;;;;;;;;;;-1:-1:-1;10275:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;:92;;;-1:-1:-1;;;;10275:92:0;;;;-1:-1:-1;;;10275:92:0;;;;;;;;;;;;;;;;;;9982:603;;;;;10432:71;10454:6;10432:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10432:17:0;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;10412:17:0;;;;;;;:9;:17;;;;;;:91;;;;10541:20;;;;;;;:32;;10566:6;10541:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;10518:20:0;;;;;;:9;:20;;;;;:55;9982:603;10627:9;-1:-1:-1;;;;;10610:35:0;10619:6;-1:-1:-1;;;;;10610:35:0;;10638:6;10610:35;;;;;;;;;;;;;;;;;;9315:1338;;;:::o;373:184::-;459:7;495:12;487:6;;;;479:29;;;;-1:-1:-1;;;479:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;479:29:0;-1:-1:-1;;;531:5:0;;;373:184::o;6202:272::-;6259:7;6279:22;6320:8;6324:3;6320;:8::i;:::-;6279:51;;6353:6;-1:-1:-1;;;;;6341:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6341:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6341:36:0;;;;6407:6;-1:-1:-1;;;;;6395:36:0;;6450:6;-1:-1:-1;;;;;6438:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6438:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6438:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6438:25:0;6395:71;;;-1:-1:-1;;;;;;6395:71:0;;;;;;;;;;;;;;6438:25;;6395:71;;;;;;;6438:25;6395:71;;;;5:2:-1;;;;30:1;27;20:12;5:2;6395:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6395:71:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6395:71:0;;6202:272;-1:-1:-1;;;6202:272:0:o;6486:130::-;6567:4;6603:5;-1:-1:-1;;;;;6591:17:0;:8;6595:3;6591;:8::i;:::-;-1:-1:-1;;;;;6591:17:0;;;6486:130;-1:-1:-1;;;6486:130:0:o;3776:117::-;3856:17;;3846:39;;;-1:-1:-1;;;3846:39:0;;;;3819:7;;-1:-1:-1;;;;;3856:17:0;;3846:37;;:39;;;;;;;;;;;;;;3856:17;3846:39;;;5:2:-1;;;;30:1;27;20:12;235:130:0;293:7;320:43;324:1;327;320:43;;;;;;;;;;;;;;;;;:3;:43::i;5810:186::-;5866:7;5886:12;5915:3;-1:-1:-1;;;;;5901:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5901:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5901:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5901:28:0;;-1:-1:-1;5959:8:0;5963:3;5959;:8::i;:::-;-1:-1:-1;;;;;5947:32:0;;5980:7;5947:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5947:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5947:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;5581:217:0;5625:7;5657:8;5661:3;5657;:8::i;:::-;-1:-1:-1;;;;;5645:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5645:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5645:38:0;;;;5694:8;5717;5721:3;5717;:8::i;:::-;-1:-1:-1;;;;;5705:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5705:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5705:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5705:27:0;5759:11;;5705:27;;-1:-1:-1;5750:40:0;;5786:3;;5751:29;;5759:20;;5786:3;5759:20;:15;:20;:::i;:::-;5751:3;;:29;:7;:29;:::i;5750:40::-;5743:47;5581:217;-1:-1:-1;;;5581:217:0:o;5418:155::-;5483:7;5523:20;-1:-1:-1;;;;;5509:54:0;;:56;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5509:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5509:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5509:56:0;;5418:155;-1:-1:-1;;5418:155:0:o

Swarm Source

bzzr://4aa60cf457e3809d25ed681d5c55b0c8d1158402839a26753da442bd629ad04b

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Onyx USD token contract has migrated to 0xd2d01dd6aa7a2f5228c7c17298905a7c7e1dfe81.

Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.