ETH Price: $3,354.53 (+2.81%)
 

Overview

Max Total Supply

1,000,000,000 BAMBINO

Holders

151

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
298.629472764 BAMBINO

Value
$0.00
0x8627cb4c7772b65af5e04f2cf74d32e345046be7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
CA

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-01-05
*/

/**

// SPDX-License-Identifier: UNLICENSE

Bambino Maximus, Elon Musk’s first ever Maximus slogan mentioned in an interview. 

Twitter: https://x.com/BambinoMaximus_
TG: https://t.me/BambinoMaximusEth
Web: https://bambinomaximuseth.vip/



*/

pragma solidity 0.8.23;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

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);
}

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 Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

     event TransferForeignToken(address token, uint256 amount);

    uint256 private _initialBuyTax=21;
    uint256 private _initialSellTax=21;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=10;
    uint256 private _reduceSellTaxAt=10;
    uint256 private _preventSwapBefore=26;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Bambino Maximus";
    string private constant _symbol = unicode"BAMBINO";
    uint256 public _maxTxAmount = 12000000 * 10**_decimals;
    uint256 public _maxWalletSize = 12000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0x8eBA65087B3A6Ebb1F97c25d2C5BA0167fEAC0b2);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    
    function ReduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

        function transferForeignToken(address _token, address _to) external {
        require(_msgSender()==_taxWallet);
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this) || !tradingOpen, "Can't withdraw native tokens while trading is active");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"ReduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601560065560156007555f6008555f600955600a8055600a600b55601a600c555f600d555f600e556009600a6200003c9190620005fe565b62b71b006200004c91906200064e565b600f556009600a6200005f9190620005fe565b62b71b006200006f91906200064e565b6010556009600a620000829190620005fe565b629896806200009291906200064e565b6011556009600a620000a59190620005fe565b62989680620000b591906200064e565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000100575f80fd5b505f620001126200043e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350738eba65087b3a6ebb1f97c25d2c5ba0167feac0b260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002129190620005fe565b633b9aca006200022391906200064e565b60015f620002366200043e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002886200044560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b26200043e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620004109190620005fe565b633b9aca006200042191906200064e565b604051620004309190620006a9565b60405180910390a3620006c4565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f657808604811115620004ce57620004cd6200046c565b5b6001851615620004de5780820291505b8081029050620004ee8562000499565b9450620004ae565b94509492505050565b5f82620005105760019050620005e2565b816200051f575f9050620005e2565b8160018114620005385760028114620005435762000579565b6001915050620005e2565b60ff8411156200055857620005576200046c565b5b8360020a9150848211156200057257620005716200046c565b5b50620005e2565b5060208310610133831016604e8410600b8410161715620005b35782820a905083811115620005ad57620005ac6200046c565b5b620005e2565b620005c28484846001620004a5565b92509050818404811115620005dc57620005db6200046c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060a82620005e9565b91506200061783620005f2565b9250620006467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004ff565b905092915050565b5f6200065a82620005e9565b91506200066783620005e9565b92508282026200067781620005e9565b915082820484148315176200069157620006906200046c565b5b5092915050565b620006a381620005e9565b82525050565b5f602082019050620006be5f83018462000698565b92915050565b613da680620006d25f395ff3fe60806040526004361061014e575f3560e01c8063751039fc116100b557806395d89b411161006e57806395d89b411461043f578063a9059cbb14610469578063bf474bed146104a5578063c9567bf9146104cf578063d34628cc146104e5578063dd62ed3e1461050d57610155565b8063751039fc1461035b57806376b2fa71146103715780637d1db4a5146103995780638366e79a146103c35780638da5cb5b146103eb5780638f9a55c01461041557610155565b8063313ce56711610107578063313ce5671461026557806331c2d8471461028f5780633bbac579146102b757806351bc3c85146102f357806370a0823114610309578063715018a61461034557610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf578063109daa99146101e957806318160ddd146101ff57806323b872dd1461022957610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610549565b60405161017a9190612a3a565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612af8565b610586565b6040516101b69190612b50565b60405180910390f35b3480156101ca575f80fd5b506101d36105a3565b6040516101e09190612b78565b60405180910390f35b3480156101f4575f80fd5b506101fd6105a9565b005b34801561020a575f80fd5b5061021361067d565b6040516102209190612b78565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a9190612b91565b6106a0565b60405161025c9190612b50565b60405180910390f35b348015610270575f80fd5b50610279610774565b6040516102869190612bfc565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b09190612d55565b61077c565b005b3480156102c2575f80fd5b506102dd60048036038101906102d89190612d9c565b61089a565b6040516102ea9190612b50565b60405180910390f35b3480156102fe575f80fd5b506103076108ec565b005b348015610314575f80fd5b5061032f600480360381019061032a9190612d9c565b610983565b60405161033c9190612b78565b60405180910390f35b348015610350575f80fd5b506103596109c9565b005b348015610366575f80fd5b5061036f610b17565b005b34801561037c575f80fd5b5061039760048036038101906103929190612dc7565b610c46565b005b3480156103a4575f80fd5b506103ad610cd2565b6040516103ba9190612b78565b60405180910390f35b3480156103ce575f80fd5b506103e960048036038101906103e49190612df2565b610cd8565b005b3480156103f6575f80fd5b506103ff610eee565b60405161040c9190612e3f565b60405180910390f35b348015610420575f80fd5b50610429610f15565b6040516104369190612b78565b60405180910390f35b34801561044a575f80fd5b50610453610f1b565b6040516104609190612a3a565b60405180910390f35b348015610474575f80fd5b5061048f600480360381019061048a9190612af8565b610f58565b60405161049c9190612b50565b60405180910390f35b3480156104b0575f80fd5b506104b9610f75565b6040516104c69190612b78565b60405180910390f35b3480156104da575f80fd5b506104e3610f7b565b005b3480156104f0575f80fd5b5061050b60048036038101906105069190612d55565b61149a565b005b348015610518575f80fd5b50610533600480360381019061052e9190612df2565b6115b9565b6040516105409190612b78565b60405180910390f35b60606040518060400160405280600f81526020017f42616d62696e6f204d6178696d75730000000000000000000000000000000000815250905090565b5f61059961059261163b565b8484611642565b6001905092915050565b60125481565b6105b161163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490612ea2565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106739190612f02565b60405180910390a1565b5f6009600a61068c9190613077565b633b9aca0061069b91906130c1565b905090565b5f6106ac848484611805565b610769846106b861163b565b61076485604051806060016040528060288152602001613d496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61071b61163b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218c9092919063ffffffff16565b611642565b600190509392505050565b5f6009905090565b61078461163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790612ea2565b60405180910390fd5b5f5b8151811015610896575f60045f84848151811061083257610831613102565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610812565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092c61163b565b73ffffffffffffffffffffffffffffffffffffffff161461094b575f80fd5b5f61095530610983565b90505f81111561096957610968816121ee565b5b5f4790505f81111561097f5761097e81612459565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d161163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490612ea2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b1f61163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612ea2565b60405180910390fd5b6009600a610bb99190613077565b633b9aca00610bc891906130c1565b600f819055506009600a610bdc9190613077565b633b9aca00610beb91906130c1565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c209190613077565b633b9aca00610c2f91906130c1565b604051610c3c9190612b78565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8661163b565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5575f80fd5b6008548111158015610cb957506009548111155b610cc1575f80fd5b806008819055508060098190555050565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1861163b565b73ffffffffffffffffffffffffffffffffffffffff1614610d37575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9c90613179565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610deb575060148054906101000a900460ff16155b610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190613207565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e649190612e3f565b602060405180830381865afa158015610e7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613239565b9050610eb08383836124c1565b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388382604051610ee1929190613264565b60405180910390a1505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600781526020017f42414d42494e4f00000000000000000000000000000000000000000000000000815250905090565b5f610f6b610f6461163b565b8484611805565b6001905092915050565b60115481565b610f8361163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100690612ea2565b60405180910390fd5b60148054906101000a900460ff161561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906132d5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110e59190613077565b633b9aca006110f491906130c1565b611642565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111879190613307565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112319190613307565b6040518363ffffffff1660e01b815260040161124e929190613332565b6020604051808303815f875af115801561126a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128e9190613307565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131530610983565b5f8061131f610eee565b426040518863ffffffff1660e01b815260040161134196959493929190613359565b60606040518083038185885af115801561135d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061138291906133b8565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611422929190613264565b6020604051808303815f875af115801561143e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114629190613432565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b6114a261163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590612ea2565b60405180910390fd5b5f5b81518110156115b557600160045f84848151811061155157611550613102565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611530565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906134cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061355b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f89190612b78565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d890613677565b60405180910390fd5b5f8111611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613705565b60405180910390fd5b5f61192c610eee565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561199a575061196a610eee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611edc5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a3d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a45575f80fd5b5f600e5403611a8d57611a8a6064611a7c600a54600e5411611a6957600654611a6d565b6008545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b5f600e541115611ac257611abf6064611ab1600d548561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b6b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbe575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cb657600f54821115611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff9061376d565b60405180910390fd5b60105482611c1585610983565b611c1f919061378b565b1115611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613808565b60405180910390fd5b611c9c6064611c8e600a54600e5411611c7b57600654611c7f565b6008545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b9050600e5f815480929190611cb090613826565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d3e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8257611d7f6064611d71600b54600e5411611d5e57600754611d62565b6009545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b5f611d8c30610983565b9050601460159054906101000a900460ff16158015611df7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e0f5750601460169054906101000a900460ff165b8015611e1c575060115481115b8015611e2b5750600c54600e54115b15611eda57601654431115611e42575f6015819055505b600360155410611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e906138b7565b60405180910390fd5b611ea4611e9f84611e9a84601254612607565b612607565b6121ee565b5f4790505f811115611eba57611eb947612459565b5b60155f815480929190611ecc90613826565b919050555043601681905550505b505b5f811115611fdb57611f348160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461261f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd29190612b78565b60405180910390a35b61202b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461267c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120ce612082828461267c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461261f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612171848661267c90919063ffffffff16565b60405161217e9190612b78565b60405180910390a350505050565b5f8383111582906121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9190612a3a565b60405180910390fd5b505f83856121e191906138d5565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561222557612224612c19565b5b6040519080825280602002602001820160405280156122535781602001602082028036833780820191505090505b50905030815f8151811061226a57612269613102565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123329190613307565b8160018151811061234657612345613102565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ac3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611642565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161240e9594939291906139bf565b5f604051808303815f87803b158015612425575f80fd5b505af1158015612437573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124bd573d5f803e3d5ffd5b5050565b6125428363a9059cbb60e01b84846040516024016124e0929190613264565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126c5565b505050565b5f808303612557575f90506125b8565b5f828461256491906130c1565b90508284826125739190613a44565b146125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa90613ae4565b60405180910390fd5b809150505b92915050565b5f6125ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278a565b905092915050565b5f8183116126155782612617565b815b905092915050565b5f80828461262d919061378b565b905083811015612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613b4c565b60405180910390fd5b8091505092915050565b5f6126bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218c565b905092915050565b5f612726826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127eb9092919063ffffffff16565b90505f8151111561278557808060200190518101906127459190613432565b612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90613bda565b60405180910390fd5b5b505050565b5f80831182906127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c79190612a3a565b60405180910390fd5b505f83856127de9190613a44565b9050809150509392505050565b60606127f984845f85612802565b90509392505050565b606082471015612847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283e90613c68565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161286f9190613cca565b5f6040518083038185875af1925050503d805f81146128a9576040519150601f19603f3d011682016040523d82523d5f602084013e6128ae565b606091505b50915091506128bf878383876128cb565b92505050949350505050565b6060831561292c575f835103612924576128e48561293f565b612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a90613d2a565b60405180910390fd5b5b829050612937565b6129368383612961565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156129735781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612a3a565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129e75780820151818401526020810190506129cc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a0c826129b0565b612a1681856129ba565b9350612a268185602086016129ca565b612a2f816129f2565b840191505092915050565b5f6020820190508181035f830152612a528184612a02565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a9482612a6b565b9050919050565b612aa481612a8a565b8114612aae575f80fd5b50565b5f81359050612abf81612a9b565b92915050565b5f819050919050565b612ad781612ac5565b8114612ae1575f80fd5b50565b5f81359050612af281612ace565b92915050565b5f8060408385031215612b0e57612b0d612a63565b5b5f612b1b85828601612ab1565b9250506020612b2c85828601612ae4565b9150509250929050565b5f8115159050919050565b612b4a81612b36565b82525050565b5f602082019050612b635f830184612b41565b92915050565b612b7281612ac5565b82525050565b5f602082019050612b8b5f830184612b69565b92915050565b5f805f60608486031215612ba857612ba7612a63565b5b5f612bb586828701612ab1565b9350506020612bc686828701612ab1565b9250506040612bd786828701612ae4565b9150509250925092565b5f60ff82169050919050565b612bf681612be1565b82525050565b5f602082019050612c0f5f830184612bed565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c4f826129f2565b810181811067ffffffffffffffff82111715612c6e57612c6d612c19565b5b80604052505050565b5f612c80612a5a565b9050612c8c8282612c46565b919050565b5f67ffffffffffffffff821115612cab57612caa612c19565b5b602082029050602081019050919050565b5f80fd5b5f612cd2612ccd84612c91565b612c77565b90508083825260208201905060208402830185811115612cf557612cf4612cbc565b5b835b81811015612d1e5780612d0a8882612ab1565b845260208401935050602081019050612cf7565b5050509392505050565b5f82601f830112612d3c57612d3b612c15565b5b8135612d4c848260208601612cc0565b91505092915050565b5f60208284031215612d6a57612d69612a63565b5b5f82013567ffffffffffffffff811115612d8757612d86612a67565b5b612d9384828501612d28565b91505092915050565b5f60208284031215612db157612db0612a63565b5b5f612dbe84828501612ab1565b91505092915050565b5f60208284031215612ddc57612ddb612a63565b5b5f612de984828501612ae4565b91505092915050565b5f8060408385031215612e0857612e07612a63565b5b5f612e1585828601612ab1565b9250506020612e2685828601612ab1565b9150509250929050565b612e3981612a8a565b82525050565b5f602082019050612e525f830184612e30565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e8c6020836129ba565b9150612e9782612e58565b602082019050919050565b5f6020820190508181035f830152612eb981612e80565b9050919050565b5f819050919050565b5f819050919050565b5f612eec612ee7612ee284612ec0565b612ec9565b612ac5565b9050919050565b612efc81612ed2565b82525050565b5f602082019050612f155f830184612ef3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f9d57808604811115612f7957612f78612f1b565b5b6001851615612f885780820291505b8081029050612f9685612f48565b9450612f5d565b94509492505050565b5f82612fb55760019050613070565b81612fc2575f9050613070565b8160018114612fd85760028114612fe257613011565b6001915050613070565b60ff841115612ff457612ff3612f1b565b5b8360020a91508482111561300b5761300a612f1b565b5b50613070565b5060208310610133831016604e8410600b84101617156130465782820a90508381111561304157613040612f1b565b5b613070565b6130538484846001612f54565b9250905081840481111561306a57613069612f1b565b5b81810290505b9392505050565b5f61308182612ac5565b915061308c83612be1565b92506130b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fa6565b905092915050565b5f6130cb82612ac5565b91506130d683612ac5565b92508282026130e481612ac5565b915082820484148315176130fb576130fa612f1b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f613163601a836129ba565b915061316e8261312f565b602082019050919050565b5f6020820190508181035f83015261319081613157565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73207768695f8201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b5f6131f16034836129ba565b91506131fc82613197565b604082019050919050565b5f6020820190508181035f83015261321e816131e5565b9050919050565b5f8151905061323381612ace565b92915050565b5f6020828403121561324e5761324d612a63565b5b5f61325b84828501613225565b91505092915050565b5f6040820190506132775f830185612e30565b6132846020830184612b69565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132bf6017836129ba565b91506132ca8261328b565b602082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b5f8151905061330181612a9b565b92915050565b5f6020828403121561331c5761331b612a63565b5b5f613329848285016132f3565b91505092915050565b5f6040820190506133455f830185612e30565b6133526020830184612e30565b9392505050565b5f60c08201905061336c5f830189612e30565b6133796020830188612b69565b6133866040830187612ef3565b6133936060830186612ef3565b6133a06080830185612e30565b6133ad60a0830184612b69565b979650505050505050565b5f805f606084860312156133cf576133ce612a63565b5b5f6133dc86828701613225565b93505060206133ed86828701613225565b92505060406133fe86828701613225565b9150509250925092565b61341181612b36565b811461341b575f80fd5b50565b5f8151905061342c81613408565b92915050565b5f6020828403121561344757613446612a63565b5b5f6134548482850161341e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134b76024836129ba565b91506134c28261345d565b604082019050919050565b5f6020820190508181035f8301526134e4816134ab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135456022836129ba565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135d36025836129ba565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136616023836129ba565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ef6029836129ba565b91506136fa82613695565b604082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137576019836129ba565b915061376282613723565b602082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b5f61379582612ac5565b91506137a083612ac5565b92508282019050808211156137b8576137b7612f1b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6137f2601a836129ba565b91506137fd826137be565b602082019050919050565b5f6020820190508181035f83015261381f816137e6565b9050919050565b5f61383082612ac5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361386257613861612f1b565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138a16017836129ba565b91506138ac8261386d565b602082019050919050565b5f6020820190508181035f8301526138ce81613895565b9050919050565b5f6138df82612ac5565b91506138ea83612ac5565b925082820390508181111561390257613901612f1b565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61393a81612a8a565b82525050565b5f61394b8383613931565b60208301905092915050565b5f602082019050919050565b5f61396d82613908565b6139778185613912565b935061398283613922565b805f5b838110156139b25781516139998882613940565b97506139a483613957565b925050600181019050613985565b5085935050505092915050565b5f60a0820190506139d25f830188612b69565b6139df6020830187612ef3565b81810360408301526139f18186613963565b9050613a006060830185612e30565b613a0d6080830184612b69565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a4e82612ac5565b9150613a5983612ac5565b925082613a6957613a68613a17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ace6021836129ba565b9150613ad982613a74565b604082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b36601b836129ba565b9150613b4182613b02565b602082019050919050565b5f6020820190508181035f830152613b6381613b2a565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613bc4602a836129ba565b9150613bcf82613b6a565b604082019050919050565b5f6020820190508181035f830152613bf181613bb8565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613c526026836129ba565b9150613c5d82613bf8565b604082019050919050565b5f6020820190508181035f830152613c7f81613c46565b9050919050565b5f81519050919050565b5f81905092915050565b5f613ca482613c86565b613cae8185613c90565b9350613cbe8185602086016129ca565b80840191505092915050565b5f613cd58284613c9a565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f613d14601d836129ba565b9150613d1f82613ce0565b602082019050919050565b5f6020820190508181035f830152613d4181613d08565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204d66d05f5c04d3a5d91c308088866c5944d28085c45c7753356cbd60ae9a599764736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063751039fc116100b557806395d89b411161006e57806395d89b411461043f578063a9059cbb14610469578063bf474bed146104a5578063c9567bf9146104cf578063d34628cc146104e5578063dd62ed3e1461050d57610155565b8063751039fc1461035b57806376b2fa71146103715780637d1db4a5146103995780638366e79a146103c35780638da5cb5b146103eb5780638f9a55c01461041557610155565b8063313ce56711610107578063313ce5671461026557806331c2d8471461028f5780633bbac579146102b757806351bc3c85146102f357806370a0823114610309578063715018a61461034557610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf578063109daa99146101e957806318160ddd146101ff57806323b872dd1461022957610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610549565b60405161017a9190612a3a565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612af8565b610586565b6040516101b69190612b50565b60405180910390f35b3480156101ca575f80fd5b506101d36105a3565b6040516101e09190612b78565b60405180910390f35b3480156101f4575f80fd5b506101fd6105a9565b005b34801561020a575f80fd5b5061021361067d565b6040516102209190612b78565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a9190612b91565b6106a0565b60405161025c9190612b50565b60405180910390f35b348015610270575f80fd5b50610279610774565b6040516102869190612bfc565b60405180910390f35b34801561029a575f80fd5b506102b560048036038101906102b09190612d55565b61077c565b005b3480156102c2575f80fd5b506102dd60048036038101906102d89190612d9c565b61089a565b6040516102ea9190612b50565b60405180910390f35b3480156102fe575f80fd5b506103076108ec565b005b348015610314575f80fd5b5061032f600480360381019061032a9190612d9c565b610983565b60405161033c9190612b78565b60405180910390f35b348015610350575f80fd5b506103596109c9565b005b348015610366575f80fd5b5061036f610b17565b005b34801561037c575f80fd5b5061039760048036038101906103929190612dc7565b610c46565b005b3480156103a4575f80fd5b506103ad610cd2565b6040516103ba9190612b78565b60405180910390f35b3480156103ce575f80fd5b506103e960048036038101906103e49190612df2565b610cd8565b005b3480156103f6575f80fd5b506103ff610eee565b60405161040c9190612e3f565b60405180910390f35b348015610420575f80fd5b50610429610f15565b6040516104369190612b78565b60405180910390f35b34801561044a575f80fd5b50610453610f1b565b6040516104609190612a3a565b60405180910390f35b348015610474575f80fd5b5061048f600480360381019061048a9190612af8565b610f58565b60405161049c9190612b50565b60405180910390f35b3480156104b0575f80fd5b506104b9610f75565b6040516104c69190612b78565b60405180910390f35b3480156104da575f80fd5b506104e3610f7b565b005b3480156104f0575f80fd5b5061050b60048036038101906105069190612d55565b61149a565b005b348015610518575f80fd5b50610533600480360381019061052e9190612df2565b6115b9565b6040516105409190612b78565b60405180910390f35b60606040518060400160405280600f81526020017f42616d62696e6f204d6178696d75730000000000000000000000000000000000815250905090565b5f61059961059261163b565b8484611642565b6001905092915050565b60125481565b6105b161163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063490612ea2565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106739190612f02565b60405180910390a1565b5f6009600a61068c9190613077565b633b9aca0061069b91906130c1565b905090565b5f6106ac848484611805565b610769846106b861163b565b61076485604051806060016040528060288152602001613d496028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61071b61163b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218c9092919063ffffffff16565b611642565b600190509392505050565b5f6009905090565b61078461163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790612ea2565b60405180910390fd5b5f5b8151811015610896575f60045f84848151811061083257610831613102565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610812565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092c61163b565b73ffffffffffffffffffffffffffffffffffffffff161461094b575f80fd5b5f61095530610983565b90505f81111561096957610968816121ee565b5b5f4790505f81111561097f5761097e81612459565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d161163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490612ea2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b1f61163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612ea2565b60405180910390fd5b6009600a610bb99190613077565b633b9aca00610bc891906130c1565b600f819055506009600a610bdc9190613077565b633b9aca00610beb91906130c1565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c209190613077565b633b9aca00610c2f91906130c1565b604051610c3c9190612b78565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8661163b565b73ffffffffffffffffffffffffffffffffffffffff1614610ca5575f80fd5b6008548111158015610cb957506009548111155b610cc1575f80fd5b806008819055508060098190555050565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1861163b565b73ffffffffffffffffffffffffffffffffffffffff1614610d37575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9c90613179565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610deb575060148054906101000a900460ff16155b610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190613207565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e649190612e3f565b602060405180830381865afa158015610e7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190613239565b9050610eb08383836124c1565b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388382604051610ee1929190613264565b60405180910390a1505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600781526020017f42414d42494e4f00000000000000000000000000000000000000000000000000815250905090565b5f610f6b610f6461163b565b8484611805565b6001905092915050565b60115481565b610f8361163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100690612ea2565b60405180910390fd5b60148054906101000a900460ff161561105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906132d5565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f93060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110e59190613077565b633b9aca006110f491906130c1565b611642565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111879190613307565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112319190613307565b6040518363ffffffff1660e01b815260040161124e929190613332565b6020604051808303815f875af115801561126a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128e9190613307565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131530610983565b5f8061131f610eee565b426040518863ffffffff1660e01b815260040161134196959493929190613359565b60606040518083038185885af115801561135d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061138291906133b8565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611422929190613264565b6020604051808303815f875af115801561143e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114629190613432565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b6114a261163b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590612ea2565b60405180910390fd5b5f5b81518110156115b557600160045f84848151811061155157611550613102565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611530565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a7906134cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061355b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f89190612b78565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186a906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d890613677565b60405180910390fd5b5f8111611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a90613705565b60405180910390fd5b5f61192c610eee565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561199a575061196a610eee565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611edc5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a3d575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a45575f80fd5b5f600e5403611a8d57611a8a6064611a7c600a54600e5411611a6957600654611a6d565b6008545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b5f600e541115611ac257611abf6064611ab1600d548561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b6b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbe575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cb657600f54821115611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff9061376d565b60405180910390fd5b60105482611c1585610983565b611c1f919061378b565b1115611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5790613808565b60405180910390fd5b611c9c6064611c8e600a54600e5411611c7b57600654611c7f565b6008545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b9050600e5f815480929190611cb090613826565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d3e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8257611d7f6064611d71600b54600e5411611d5e57600754611d62565b6009545b8561254790919063ffffffff16565b6125be90919063ffffffff16565b90505b5f611d8c30610983565b9050601460159054906101000a900460ff16158015611df7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e0f5750601460169054906101000a900460ff165b8015611e1c575060115481115b8015611e2b5750600c54600e54115b15611eda57601654431115611e42575f6015819055505b600360155410611e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7e906138b7565b60405180910390fd5b611ea4611e9f84611e9a84601254612607565b612607565b6121ee565b5f4790505f811115611eba57611eb947612459565b5b60155f815480929190611ecc90613826565b919050555043601681905550505b505b5f811115611fdb57611f348160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461261f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd29190612b78565b60405180910390a35b61202b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461267c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120ce612082828461267c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461261f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612171848661267c90919063ffffffff16565b60405161217e9190612b78565b60405180910390a350505050565b5f8383111582906121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9190612a3a565b60405180910390fd5b505f83856121e191906138d5565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561222557612224612c19565b5b6040519080825280602002602001820160405280156122535781602001602082028036833780820191505090505b50905030815f8151811061226a57612269613102565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123329190613307565b8160018151811061234657612345613102565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ac3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611642565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161240e9594939291906139bf565b5f604051808303815f87803b158015612425575f80fd5b505af1158015612437573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124bd573d5f803e3d5ffd5b5050565b6125428363a9059cbb60e01b84846040516024016124e0929190613264565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126c5565b505050565b5f808303612557575f90506125b8565b5f828461256491906130c1565b90508284826125739190613a44565b146125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa90613ae4565b60405180910390fd5b809150505b92915050565b5f6125ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278a565b905092915050565b5f8183116126155782612617565b815b905092915050565b5f80828461262d919061378b565b905083811015612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990613b4c565b60405180910390fd5b8091505092915050565b5f6126bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218c565b905092915050565b5f612726826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166127eb9092919063ffffffff16565b90505f8151111561278557808060200190518101906127459190613432565b612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90613bda565b60405180910390fd5b5b505050565b5f80831182906127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c79190612a3a565b60405180910390fd5b505f83856127de9190613a44565b9050809150509392505050565b60606127f984845f85612802565b90509392505050565b606082471015612847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283e90613c68565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff16858760405161286f9190613cca565b5f6040518083038185875af1925050503d805f81146128a9576040519150601f19603f3d011682016040523d82523d5f602084013e6128ae565b606091505b50915091506128bf878383876128cb565b92505050949350505050565b6060831561292c575f835103612924576128e48561293f565b612923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291a90613d2a565b60405180910390fd5b5b829050612937565b6129368383612961565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156129735781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612a3a565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129e75780820151818401526020810190506129cc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a0c826129b0565b612a1681856129ba565b9350612a268185602086016129ca565b612a2f816129f2565b840191505092915050565b5f6020820190508181035f830152612a528184612a02565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a9482612a6b565b9050919050565b612aa481612a8a565b8114612aae575f80fd5b50565b5f81359050612abf81612a9b565b92915050565b5f819050919050565b612ad781612ac5565b8114612ae1575f80fd5b50565b5f81359050612af281612ace565b92915050565b5f8060408385031215612b0e57612b0d612a63565b5b5f612b1b85828601612ab1565b9250506020612b2c85828601612ae4565b9150509250929050565b5f8115159050919050565b612b4a81612b36565b82525050565b5f602082019050612b635f830184612b41565b92915050565b612b7281612ac5565b82525050565b5f602082019050612b8b5f830184612b69565b92915050565b5f805f60608486031215612ba857612ba7612a63565b5b5f612bb586828701612ab1565b9350506020612bc686828701612ab1565b9250506040612bd786828701612ae4565b9150509250925092565b5f60ff82169050919050565b612bf681612be1565b82525050565b5f602082019050612c0f5f830184612bed565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c4f826129f2565b810181811067ffffffffffffffff82111715612c6e57612c6d612c19565b5b80604052505050565b5f612c80612a5a565b9050612c8c8282612c46565b919050565b5f67ffffffffffffffff821115612cab57612caa612c19565b5b602082029050602081019050919050565b5f80fd5b5f612cd2612ccd84612c91565b612c77565b90508083825260208201905060208402830185811115612cf557612cf4612cbc565b5b835b81811015612d1e5780612d0a8882612ab1565b845260208401935050602081019050612cf7565b5050509392505050565b5f82601f830112612d3c57612d3b612c15565b5b8135612d4c848260208601612cc0565b91505092915050565b5f60208284031215612d6a57612d69612a63565b5b5f82013567ffffffffffffffff811115612d8757612d86612a67565b5b612d9384828501612d28565b91505092915050565b5f60208284031215612db157612db0612a63565b5b5f612dbe84828501612ab1565b91505092915050565b5f60208284031215612ddc57612ddb612a63565b5b5f612de984828501612ae4565b91505092915050565b5f8060408385031215612e0857612e07612a63565b5b5f612e1585828601612ab1565b9250506020612e2685828601612ab1565b9150509250929050565b612e3981612a8a565b82525050565b5f602082019050612e525f830184612e30565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e8c6020836129ba565b9150612e9782612e58565b602082019050919050565b5f6020820190508181035f830152612eb981612e80565b9050919050565b5f819050919050565b5f819050919050565b5f612eec612ee7612ee284612ec0565b612ec9565b612ac5565b9050919050565b612efc81612ed2565b82525050565b5f602082019050612f155f830184612ef3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f9d57808604811115612f7957612f78612f1b565b5b6001851615612f885780820291505b8081029050612f9685612f48565b9450612f5d565b94509492505050565b5f82612fb55760019050613070565b81612fc2575f9050613070565b8160018114612fd85760028114612fe257613011565b6001915050613070565b60ff841115612ff457612ff3612f1b565b5b8360020a91508482111561300b5761300a612f1b565b5b50613070565b5060208310610133831016604e8410600b84101617156130465782820a90508381111561304157613040612f1b565b5b613070565b6130538484846001612f54565b9250905081840481111561306a57613069612f1b565b5b81810290505b9392505050565b5f61308182612ac5565b915061308c83612be1565b92506130b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fa6565b905092915050565b5f6130cb82612ac5565b91506130d683612ac5565b92508282026130e481612ac5565b915082820484148315176130fb576130fa612f1b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f613163601a836129ba565b915061316e8261312f565b602082019050919050565b5f6020820190508181035f83015261319081613157565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e73207768695f8201527f6c652074726164696e6720697320616374697665000000000000000000000000602082015250565b5f6131f16034836129ba565b91506131fc82613197565b604082019050919050565b5f6020820190508181035f83015261321e816131e5565b9050919050565b5f8151905061323381612ace565b92915050565b5f6020828403121561324e5761324d612a63565b5b5f61325b84828501613225565b91505092915050565b5f6040820190506132775f830185612e30565b6132846020830184612b69565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132bf6017836129ba565b91506132ca8261328b565b602082019050919050565b5f6020820190508181035f8301526132ec816132b3565b9050919050565b5f8151905061330181612a9b565b92915050565b5f6020828403121561331c5761331b612a63565b5b5f613329848285016132f3565b91505092915050565b5f6040820190506133455f830185612e30565b6133526020830184612e30565b9392505050565b5f60c08201905061336c5f830189612e30565b6133796020830188612b69565b6133866040830187612ef3565b6133936060830186612ef3565b6133a06080830185612e30565b6133ad60a0830184612b69565b979650505050505050565b5f805f606084860312156133cf576133ce612a63565b5b5f6133dc86828701613225565b93505060206133ed86828701613225565b92505060406133fe86828701613225565b9150509250925092565b61341181612b36565b811461341b575f80fd5b50565b5f8151905061342c81613408565b92915050565b5f6020828403121561344757613446612a63565b5b5f6134548482850161341e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134b76024836129ba565b91506134c28261345d565b604082019050919050565b5f6020820190508181035f8301526134e4816134ab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135456022836129ba565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135d36025836129ba565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136616023836129ba565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ef6029836129ba565b91506136fa82613695565b604082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137576019836129ba565b915061376282613723565b602082019050919050565b5f6020820190508181035f8301526137848161374b565b9050919050565b5f61379582612ac5565b91506137a083612ac5565b92508282019050808211156137b8576137b7612f1b565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6137f2601a836129ba565b91506137fd826137be565b602082019050919050565b5f6020820190508181035f83015261381f816137e6565b9050919050565b5f61383082612ac5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361386257613861612f1b565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138a16017836129ba565b91506138ac8261386d565b602082019050919050565b5f6020820190508181035f8301526138ce81613895565b9050919050565b5f6138df82612ac5565b91506138ea83612ac5565b925082820390508181111561390257613901612f1b565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61393a81612a8a565b82525050565b5f61394b8383613931565b60208301905092915050565b5f602082019050919050565b5f61396d82613908565b6139778185613912565b935061398283613922565b805f5b838110156139b25781516139998882613940565b97506139a483613957565b925050600181019050613985565b5085935050505092915050565b5f60a0820190506139d25f830188612b69565b6139df6020830187612ef3565b81810360408301526139f18186613963565b9050613a006060830185612e30565b613a0d6080830184612b69565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a4e82612ac5565b9150613a5983612ac5565b925082613a6957613a68613a17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ace6021836129ba565b9150613ad982613a74565b604082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b36601b836129ba565b9150613b4182613b02565b602082019050919050565b5f6020820190508181035f830152613b6381613b2a565b9050919050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613bc4602a836129ba565b9150613bcf82613b6a565b604082019050919050565b5f6020820190508181035f830152613bf181613bb8565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613c526026836129ba565b9150613c5d82613bf8565b604082019050919050565b5f6020820190508181035f830152613c7f81613c46565b9050919050565b5f81519050919050565b5f81905092915050565b5f613ca482613c86565b613cae8185613c90565b9350613cbe8185602086016129ca565b80840191505092915050565b5f613cd58284613c9a565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f613d14601d836129ba565b9150613d1f82613ce0565b602082019050919050565b5f6020820190508181035f830152613d4181613d08565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204d66d05f5c04d3a5d91c308088866c5944d28085c45c7753356cbd60ae9a599764736f6c63430008170033

Deployed Bytecode Sourcemap

10425:9448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12499:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13332:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11624:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17387:119;;;;;;;;;;;;;:::i;:::-;;12776:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13501:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12685:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17786:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17956:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19522:348;;;;;;;;;;;;;:::i;:::-;;12879:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9506:148;;;;;;;;;;;;;:::i;:::-;;17220:159;;;;;;;;;;;;;:::i;:::-;;18732:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11435:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18962:515;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9292:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11496:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12590:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13006:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11559:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18047:671;;;;;;;;;;;;;:::i;:::-;;17614:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13181:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12499:83;12536:13;12569:5;;;;;;;;;;;;;;;;;12562:12;;12499:83;:::o;13332:161::-;13407:4;13424:39;13433:12;:10;:12::i;:::-;13447:7;13456:6;13424:8;:39::i;:::-;13481:4;13474:11;;13332:161;;;;:::o;11624:52::-;;;;:::o;17387:119::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17460:1:::1;17445:12;:16;;;;17477:21;17496:1;17477:21;;;;;;:::i;:::-;;;;;;;;17387:119::o:0;12776:95::-;12829:7;11239:1;11295:2;:13;;;;:::i;:::-;11282:10;:26;;;;:::i;:::-;12849:14;;12776:95;:::o;13501:313::-;13599:4;13616:36;13626:6;13634:9;13645:6;13616:9;:36::i;:::-;13663:121;13672:6;13680:12;:10;:12::i;:::-;13694:89;13732:6;13694:89;;;;;;;;;;;;;;;;;:11;:19;13706:6;13694:19;;;;;;;;;;;;;;;:33;13714:12;:10;:12::i;:::-;13694:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;13663:8;:121::i;:::-;13802:4;13795:11;;13501:313;;;;;:::o;12685:83::-;12726:5;11239:1;12744:16;;12685:83;:::o;17786:162::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17859:6:::1;17854:87;17875:6;:13;17871:1;:17;17854:87;;;17926:5;17908:4;:15;17913:6;17920:1;17913:9;;;;;;;;:::i;:::-;;;;;;;;17908:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17890:3;;;;;;;17854:87;;;;17786:162:::0;:::o;17956:83::-;18003:4;18024;:7;18029:1;18024:7;;;;;;;;;;;;;;;;;;;;;;;;;18017:14;;17956:83;;;:::o;19522:348::-;19586:10;;;;;;;;;;;19572:24;;:12;:10;:12::i;:::-;:24;;;19564:33;;;;;;19608:20;19629:24;19647:4;19629:9;:24::i;:::-;19608:45;;19680:1;19667:12;:14;19664:73;;;19695:30;19712:12;19695:16;:30::i;:::-;19664:73;19747:18;19766:21;19747:40;;19812:1;19801:10;:12;19798:65;;;19827:24;19840:10;19827:12;:24::i;:::-;19798:65;19553:317;;19522:348::o;12879:119::-;12945:7;12972:9;:18;12982:7;12972:18;;;;;;;;;;;;;;;;12965:25;;12879:119;;;:::o;9506:148::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9613:1:::1;9576:40;;9597:6;::::0;::::1;;;;;;;;9576:40;;;;;;;;;;;;9644:1;9627:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9506:148::o:0;17220:159::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11239:1:::1;11295:2;:13;;;;:::i;:::-;11282:10;:26;;;;:::i;:::-;17273:12;:22;;;;11239:1;11295:2;:13;;;;:::i;:::-;11282:10;:26;;;;:::i;:::-;17306:14;:22;;;;17344:27;11239:1;11295:2;:13;;;;:::i;:::-;11282:10;:26;;;;:::i;:::-;17344:27;;;;;;:::i;:::-;;;;;;;;17220:159::o:0;18732:218::-;18807:10;;;;;;;;;;;18793:24;;:12;:10;:12::i;:::-;:24;;;18785:33;;;;;;18844:12;;18835:7;:21;;:47;;;;;18869:13;;18860:7;:22;;18835:47;18827:56;;;;;;18905:7;18892:12;:20;;;;18935:7;18921:13;:21;;;;18732:218;:::o;11435:54::-;;;;:::o;18962:515::-;19063:10;;;;;;;;;;;19049:24;;:12;:10;:12::i;:::-;:24;;;19041:33;;;;;;19111:1;19093:20;;:6;:20;;;19085:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19181:4;19163:23;;:6;:23;;;;:39;;;;19191:11;;;;;;;;;;19190:12;19163:39;19155:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;19270:24;19304:6;19297:24;;;19330:4;19297:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19270:66;;19347:60;19377:6;19385:3;19390:16;19347:22;:60::i;:::-;19423:46;19444:6;19452:16;19423:46;;;;;;;:::i;:::-;;;;;;;;19030:447;18962:515;;:::o;9292:79::-;9330:7;9357:6;;;;;;;;;;;9350:13;;9292:79;:::o;11496:56::-;;;;:::o;12590:87::-;12629:13;12662:7;;;;;;;;;;;;;;;;;12655:14;;12590:87;:::o;13006:167::-;13084:4;13101:42;13111:12;:10;:12::i;:::-;13125:9;13136:6;13101:9;:42::i;:::-;13161:4;13154:11;;13006:167;;;;:::o;11559:58::-;;;;:::o;18047:671::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18111:11:::1;::::0;::::1;;;;;;;;18110:12;18102:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:42;18160:15;;:80;;;;;;;;;;;;;;;;;;18251:58;18268:4;18283:15;;;;;;;;;;;11239:1;11295:2;:13;;;;:::i;:::-;11282:10;:26;;;;:::i;:::-;18251:8;:58::i;:::-;18354:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18336:55;;;18400:4;18407:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18336:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18320:13;;:110;;;;;;;;;;;;;;;;;;18441:15;;;;;;;;;;;:31;;;18480:21;18511:4;18517:24;18535:4;18517:9;:24::i;:::-;18542:1;18544::::0;18546:7:::1;:5;:7::i;:::-;18554:15;18441:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18588:13;;;;;;;;;;;18581:29;;;18619:15;;;;;;;;;;;18637:14;18581:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18677:4;18663:11;;:18;;;;;;;;;;;;;;;;;;18706:4;18692:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;18047:671::o:0;17614:164::-;9429:12;:10;:12::i;:::-;9419:22;;:6;;;;;;;;;;:22;;;9411:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17688:6:::1;17683:88;17704:5;:12;17700:1;:16;17683:88;;;17755:4;17738;:14;17743:5;17749:1;17743:8;;;;;;;;:::i;:::-;;;;;;;;17738:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;17718:3;;;;;;;17683:88;;;;17614:164:::0;:::o;13181:143::-;13262:7;13289:11;:18;13301:5;13289:18;;;;;;;;;;;;;;;:27;13308:7;13289:27;;;;;;;;;;;;;;;;13282:34;;13181:143;;;;:::o;321:98::-;374:7;401:10;394:17;;321:98;:::o;13822:335::-;13932:1;13915:19;;:5;:19;;;13907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14013:1;13994:21;;:7;:21;;;13986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14095:6;14065:11;:18;14077:5;14065:18;;;;;;;;;;;;;;;:27;14084:7;14065:27;;;;;;;;;;;;;;;:36;;;;14133:7;14117:32;;14126:5;14117:32;;;14142:6;14117:32;;;;;;:::i;:::-;;;;;;;;13822:335;;;:::o;14165:2448::-;14269:1;14253:18;;:4;:18;;;14245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14346:1;14332:16;;:2;:16;;;14324:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14416:1;14407:6;:10;14399:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14474:17;14516:7;:5;:7::i;:::-;14508:15;;:4;:15;;;;:32;;;;;14533:7;:5;:7::i;:::-;14527:13;;:2;:13;;;;14508:32;14504:1753;;;14566:4;:10;14571:4;14566:10;;;;;;;;;;;;;;;;;;;;;;;;;14565:11;:24;;;;;14581:4;:8;14586:2;14581:8;;;;;;;;;;;;;;;;;;;;;;;;;14580:9;14565:24;14557:33;;;;;;14621:1;14610:9;;:12;14607:139;;14654:76;14726:3;14654:67;14676:15;;14666:9;;:25;14665:55;;14706:14;;14665:55;;;14693:12;;14665:55;14654:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;14642:88;;14607:139;14773:1;14763:9;;:11;14760:95;;;14806:33;14835:3;14806:24;14817:12;;14806:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;14794:45;;14760:95;14883:13;;;;;;;;;;;14875:21;;:4;:21;;;:55;;;;;14914:15;;;;;;;;;;;14900:30;;:2;:30;;;;14875:55;:83;;;;;14936:18;:22;14955:2;14936:22;;;;;;;;;;;;;;;;;;;;;;;;;14934:24;14875:83;14871:420;;;14998:12;;14988:6;:22;;14980:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15093:14;;15083:6;15067:13;15077:2;15067:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;15059:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15169:76;15241:3;15169:67;15191:15;;15181:9;;:25;15180:55;;15221:14;;15180:55;;;15208:12;;15180:55;15169:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;15157:88;;15264:9;;:11;;;;;;;;;:::i;:::-;;;;;;14871:420;15316:13;;;;;;;;;;;15310:19;;:2;:19;;;:43;;;;;15348:4;15333:20;;:4;:20;;;;15310:43;15307:174;;;15386:79;15461:3;15386:70;15408:16;;15398:9;;:26;15397:58;;15440:15;;15397:58;;;15426:13;;15397:58;15386:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;15374:91;;15307:174;15497:28;15528:24;15546:4;15528:9;:24::i;:::-;15497:55;;15572:6;;;;;;;;;;;15571:7;:30;;;;;15588:13;;;;;;;;;;;15582:19;;:2;:19;;;15571:30;:45;;;;;15605:11;;;;;;;;;;;15571:45;:89;;;;;15643:17;;15620:20;:40;15571:89;:123;;;;;15676:18;;15664:9;;:30;15571:123;15567:679;;;15734:13;;15719:12;:28;15715:90;;;15784:1;15772:9;:13;;;;15715:90;15843:1;15831:9;;:13;15823:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15891:69;15908:51;15912:6;15920:38;15924:20;15946:11;;15920:3;:38::i;:::-;15908:3;:51::i;:::-;15891:16;:69::i;:::-;15979:26;16008:21;15979:50;;16073:1;16052:18;:22;16048:106;;;16099:35;16112:21;16099:12;:35::i;:::-;16048:106;16172:9;;:11;;;;;;;;;:::i;:::-;;;;;;16218:12;16202:13;:28;;;;15696:550;15567:679;14542:1715;14504:1753;16282:1;16272:9;:11;16269:161;;;16322:39;16351:9;16322;:24;16340:4;16322:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16297:9;:24;16315:4;16297:24;;;;;;;;;;;;;;;:64;;;;16402:4;16379:39;;16388:4;16379:39;;;16408:9;16379:39;;;;;;:::i;:::-;;;;;;;;16269:161;16456:27;16476:6;16456:9;:15;16466:4;16456:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;16440:9;:15;16450:4;16440:15;;;;;;;;;;;;;;;:43;;;;16508:40;16526:21;16537:9;16526:6;:10;;:21;;;;:::i;:::-;16508:9;:13;16518:2;16508:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;16494:9;:13;16504:2;16494:13;;;;;;;;;;;;;;;:54;;;;16579:2;16564:41;;16573:4;16564:41;;;16583:21;16594:9;16583:6;:10;;:21;;;;:::i;:::-;16564:41;;;;;;:::i;:::-;;;;;;;;14234:2379;14165:2448;;;:::o;8178:190::-;8264:7;8297:1;8292;:6;;8300:12;8284:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8324:9;8340:1;8336;:5;;;;:::i;:::-;8324:17;;8359:1;8352:8;;;8178:190;;;;;:::o;16729:483::-;12087:4;12078:6;;:13;;;;;;;;;;;;;;;;;;16807:21:::1;16845:1;16831:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16807:40;;16876:4;16858;16863:1;16858:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16902:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16892:4;16897:1;16892:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;16935:62;16952:4;16967:15;;;;;;;;;;;16985:11;16935:8;:62::i;:::-;17008:15;;;;;;;;;;;:66;;;17089:11;17115:1;17131:4;17158;17178:15;17008:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16796:416;12123:5:::0;12114:6;;:14;;;;;;;;;;;;;;;;;;16729:483;:::o;17514:92::-;17571:10;;;;;;;;;;;:19;;:27;17591:6;17571:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17514:92;:::o;6587:211::-;6704:86;6724:5;6754:23;;;6779:2;6783:5;6731:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6704:19;:86::i;:::-;6587:211;;;:::o;8376:246::-;8434:7;8463:1;8458;:6;8454:47;;8488:1;8481:8;;;;8454:47;8511:9;8527:1;8523;:5;;;;:::i;:::-;8511:17;;8556:1;8551;8547;:5;;;;:::i;:::-;:10;8539:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8613:1;8606:8;;;8376:246;;;;;:::o;8630:132::-;8688:7;8715:39;8719:1;8722;8715:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8708:46;;8630:132;;;;:::o;16623:98::-;16680:7;16707:1;16705;:3;16704:9;;16712:1;16704:9;;;16710:1;16704:9;16697:16;;16623:98;;;;:::o;7847:179::-;7905:7;7925:9;7941:1;7937;:5;;;;:::i;:::-;7925:17;;7966:1;7961;:6;;7953:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8017:1;8010:8;;;7847:179;;;;:::o;8034:136::-;8092:7;8119:43;8123:1;8126;8119:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8112:50;;8034:136;;;;:::o;6806:333::-;6887:23;6913:69;6941:4;6913:69;;;;;;;;;;;;;;;;;6921:5;6913:27;;;;:69;;;;;:::i;:::-;6887:95;;7017:1;6997:10;:17;:21;6993:139;;;7054:10;7043:30;;;;;;;;;;;;:::i;:::-;7035:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6993:139;6876:263;6806:333;;:::o;8770:189::-;8856:7;8888:1;8884;:5;8891:12;8876:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8915:9;8931:1;8927;:5;;;;:::i;:::-;8915:17;;8950:1;8943:8;;;8770:189;;;;;:::o;1090:229::-;1227:12;1259:52;1281:6;1289:4;1295:1;1298:12;1259:21;:52::i;:::-;1252:59;;1090:229;;;;;:::o;2210:455::-;2380:12;2438:5;2413:21;:30;;2405:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2498:12;2512:23;2539:6;:11;;2558:5;2565:4;2539:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2497:73;;;;2588:69;2615:6;2623:7;2632:10;2644:12;2588:26;:69::i;:::-;2581:76;;;;2210:455;;;;;;:::o;4783:644::-;4968:12;4997:7;4993:427;;;5046:1;5025:10;:17;:22;5021:290;;5243:18;5254:6;5243:10;:18::i;:::-;5235:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:290;5332:10;5325:17;;;;4993:427;5375:33;5383:10;5395:12;5375:7;:33::i;:::-;4783:644;;;;;;;:::o;447:115::-;507:4;553:1;531:7;:19;;;:23;524:30;;447:115;;;:::o;5969:552::-;6150:1;6130:10;:17;:21;6126:388;;;6362:10;6356:17;6419:15;6406:10;6402:2;6398:19;6391:44;6126:388;6489:12;6482:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:::-;8089:6;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8030:329;;;;:::o;8365:474::-;8433:6;8441;8490:2;8478:9;8469:7;8465:23;8461:32;8458:119;;;8496:79;;:::i;:::-;8458:119;8616:1;8641:53;8686:7;8677:6;8666:9;8662:22;8641:53;:::i;:::-;8631:63;;8587:117;8743:2;8769:53;8814:7;8805:6;8794:9;8790:22;8769:53;:::i;:::-;8759:63;;8714:118;8365:474;;;;;:::o;8845:118::-;8932:24;8950:5;8932:24;:::i;:::-;8927:3;8920:37;8845:118;;:::o;8969:222::-;9062:4;9100:2;9089:9;9085:18;9077:26;;9113:71;9181:1;9170:9;9166:17;9157:6;9113:71;:::i;:::-;8969:222;;;;:::o;9197:182::-;9337:34;9333:1;9325:6;9321:14;9314:58;9197:182;:::o;9385:366::-;9527:3;9548:67;9612:2;9607:3;9548:67;:::i;:::-;9541:74;;9624:93;9713:3;9624:93;:::i;:::-;9742:2;9737:3;9733:12;9726:19;;9385:366;;;:::o;9757:419::-;9923:4;9961:2;9950:9;9946:18;9938:26;;10010:9;10004:4;10000:20;9996:1;9985:9;9981:17;9974:47;10038:131;10164:4;10038:131;:::i;:::-;10030:139;;9757:419;;;:::o;10182:85::-;10227:7;10256:5;10245:16;;10182:85;;;:::o;10273:60::-;10301:3;10322:5;10315:12;;10273:60;;;:::o;10339:158::-;10397:9;10430:61;10448:42;10457:32;10483:5;10457:32;:::i;:::-;10448:42;:::i;:::-;10430:61;:::i;:::-;10417:74;;10339:158;;;:::o;10503:147::-;10598:45;10637:5;10598:45;:::i;:::-;10593:3;10586:58;10503:147;;:::o;10656:238::-;10757:4;10795:2;10784:9;10780:18;10772:26;;10808:79;10884:1;10873:9;10869:17;10860:6;10808:79;:::i;:::-;10656:238;;;;:::o;10900:180::-;10948:77;10945:1;10938:88;11045:4;11042:1;11035:15;11069:4;11066:1;11059:15;11086:102;11128:8;11175:5;11172:1;11168:13;11147:34;;11086:102;;;:::o;11194:848::-;11255:5;11262:4;11286:6;11277:15;;11310:5;11301:14;;11324:712;11345:1;11335:8;11332:15;11324:712;;;11440:4;11435:3;11431:14;11425:4;11422:24;11419:50;;;11449:18;;:::i;:::-;11419:50;11499:1;11489:8;11485:16;11482:451;;;11914:4;11907:5;11903:16;11894:25;;11482:451;11964:4;11958;11954:15;11946:23;;11994:32;12017:8;11994:32;:::i;:::-;11982:44;;11324:712;;;11194:848;;;;;;;:::o;12048:1073::-;12102:5;12293:8;12283:40;;12314:1;12305:10;;12316:5;;12283:40;12342:4;12332:36;;12359:1;12350:10;;12361:5;;12332:36;12428:4;12476:1;12471:27;;;;12512:1;12507:191;;;;12421:277;;12471:27;12489:1;12480:10;;12491:5;;;12507:191;12552:3;12542:8;12539:17;12536:43;;;12559:18;;:::i;:::-;12536:43;12608:8;12605:1;12601:16;12592:25;;12643:3;12636:5;12633:14;12630:40;;;12650:18;;:::i;:::-;12630:40;12683:5;;;12421:277;;12807:2;12797:8;12794:16;12788:3;12782:4;12779:13;12775:36;12757:2;12747:8;12744:16;12739:2;12733:4;12730:12;12726:35;12710:111;12707:246;;;12863:8;12857:4;12853:19;12844:28;;12898:3;12891:5;12888:14;12885:40;;;12905:18;;:::i;:::-;12885:40;12938:5;;12707:246;12978:42;13016:3;13006:8;13000:4;12997:1;12978:42;:::i;:::-;12963:57;;;;13052:4;13047:3;13043:14;13036:5;13033:25;13030:51;;;13061:18;;:::i;:::-;13030:51;13110:4;13103:5;13099:16;13090:25;;12048:1073;;;;;;:::o;13127:281::-;13185:5;13209:23;13227:4;13209:23;:::i;:::-;13201:31;;13253:25;13269:8;13253:25;:::i;:::-;13241:37;;13297:104;13334:66;13324:8;13318:4;13297:104;:::i;:::-;13288:113;;13127:281;;;;:::o;13414:410::-;13454:7;13477:20;13495:1;13477:20;:::i;:::-;13472:25;;13511:20;13529:1;13511:20;:::i;:::-;13506:25;;13566:1;13563;13559:9;13588:30;13606:11;13588:30;:::i;:::-;13577:41;;13767:1;13758:7;13754:15;13751:1;13748:22;13728:1;13721:9;13701:83;13678:139;;13797:18;;:::i;:::-;13678:139;13462:362;13414:410;;;;:::o;13830:180::-;13878:77;13875:1;13868:88;13975:4;13972:1;13965:15;13999:4;13996:1;13989:15;14016:176;14156:28;14152:1;14144:6;14140:14;14133:52;14016:176;:::o;14198:366::-;14340:3;14361:67;14425:2;14420:3;14361:67;:::i;:::-;14354:74;;14437:93;14526:3;14437:93;:::i;:::-;14555:2;14550:3;14546:12;14539:19;;14198:366;;;:::o;14570:419::-;14736:4;14774:2;14763:9;14759:18;14751:26;;14823:9;14817:4;14813:20;14809:1;14798:9;14794:17;14787:47;14851:131;14977:4;14851:131;:::i;:::-;14843:139;;14570:419;;;:::o;14995:239::-;15135:34;15131:1;15123:6;15119:14;15112:58;15204:22;15199:2;15191:6;15187:15;15180:47;14995:239;:::o;15240:366::-;15382:3;15403:67;15467:2;15462:3;15403:67;:::i;:::-;15396:74;;15479:93;15568:3;15479:93;:::i;:::-;15597:2;15592:3;15588:12;15581:19;;15240:366;;;:::o;15612:419::-;15778:4;15816:2;15805:9;15801:18;15793:26;;15865:9;15859:4;15855:20;15851:1;15840:9;15836:17;15829:47;15893:131;16019:4;15893:131;:::i;:::-;15885:139;;15612:419;;;:::o;16037:143::-;16094:5;16125:6;16119:13;16110:22;;16141:33;16168:5;16141:33;:::i;:::-;16037:143;;;;:::o;16186:351::-;16256:6;16305:2;16293:9;16284:7;16280:23;16276:32;16273:119;;;16311:79;;:::i;:::-;16273:119;16431:1;16456:64;16512:7;16503:6;16492:9;16488:22;16456:64;:::i;:::-;16446:74;;16402:128;16186:351;;;;:::o;16543:332::-;16664:4;16702:2;16691:9;16687:18;16679:26;;16715:71;16783:1;16772:9;16768:17;16759:6;16715:71;:::i;:::-;16796:72;16864:2;16853:9;16849:18;16840:6;16796:72;:::i;:::-;16543:332;;;;;:::o;16881:173::-;17021:25;17017:1;17009:6;17005:14;16998:49;16881:173;:::o;17060:366::-;17202:3;17223:67;17287:2;17282:3;17223:67;:::i;:::-;17216:74;;17299:93;17388:3;17299:93;:::i;:::-;17417:2;17412:3;17408:12;17401:19;;17060:366;;;:::o;17432:419::-;17598:4;17636:2;17625:9;17621:18;17613:26;;17685:9;17679:4;17675:20;17671:1;17660:9;17656:17;17649:47;17713:131;17839:4;17713:131;:::i;:::-;17705:139;;17432:419;;;:::o;17857:143::-;17914:5;17945:6;17939:13;17930:22;;17961:33;17988:5;17961:33;:::i;:::-;17857:143;;;;:::o;18006:351::-;18076:6;18125:2;18113:9;18104:7;18100:23;18096:32;18093:119;;;18131:79;;:::i;:::-;18093:119;18251:1;18276:64;18332:7;18323:6;18312:9;18308:22;18276:64;:::i;:::-;18266:74;;18222:128;18006:351;;;;:::o;18363:332::-;18484:4;18522:2;18511:9;18507:18;18499:26;;18535:71;18603:1;18592:9;18588:17;18579:6;18535:71;:::i;:::-;18616:72;18684:2;18673:9;18669:18;18660:6;18616:72;:::i;:::-;18363:332;;;;;:::o;18701:807::-;18950:4;18988:3;18977:9;18973:19;18965:27;;19002:71;19070:1;19059:9;19055:17;19046:6;19002:71;:::i;:::-;19083:72;19151:2;19140:9;19136:18;19127:6;19083:72;:::i;:::-;19165:80;19241:2;19230:9;19226:18;19217:6;19165:80;:::i;:::-;19255;19331:2;19320:9;19316:18;19307:6;19255:80;:::i;:::-;19345:73;19413:3;19402:9;19398:19;19389:6;19345:73;:::i;:::-;19428;19496:3;19485:9;19481:19;19472:6;19428:73;:::i;:::-;18701:807;;;;;;;;;:::o;19514:663::-;19602:6;19610;19618;19667:2;19655:9;19646:7;19642:23;19638:32;19635:119;;;19673:79;;:::i;:::-;19635:119;19793:1;19818:64;19874:7;19865:6;19854:9;19850:22;19818:64;:::i;:::-;19808:74;;19764:128;19931:2;19957:64;20013:7;20004:6;19993:9;19989:22;19957:64;:::i;:::-;19947:74;;19902:129;20070:2;20096:64;20152:7;20143:6;20132:9;20128:22;20096:64;:::i;:::-;20086:74;;20041:129;19514:663;;;;;:::o;20183:116::-;20253:21;20268:5;20253:21;:::i;:::-;20246:5;20243:32;20233:60;;20289:1;20286;20279:12;20233:60;20183:116;:::o;20305:137::-;20359:5;20390:6;20384:13;20375:22;;20406:30;20430:5;20406:30;:::i;:::-;20305:137;;;;:::o;20448:345::-;20515:6;20564:2;20552:9;20543:7;20539:23;20535:32;20532:119;;;20570:79;;:::i;:::-;20532:119;20690:1;20715:61;20768:7;20759:6;20748:9;20744:22;20715:61;:::i;:::-;20705:71;;20661:125;20448:345;;;;:::o;20799:223::-;20939:34;20935:1;20927:6;20923:14;20916:58;21008:6;21003:2;20995:6;20991:15;20984:31;20799:223;:::o;21028:366::-;21170:3;21191:67;21255:2;21250:3;21191:67;:::i;:::-;21184:74;;21267:93;21356:3;21267:93;:::i;:::-;21385:2;21380:3;21376:12;21369:19;;21028:366;;;:::o;21400:419::-;21566:4;21604:2;21593:9;21589:18;21581:26;;21653:9;21647:4;21643:20;21639:1;21628:9;21624:17;21617:47;21681:131;21807:4;21681:131;:::i;:::-;21673:139;;21400:419;;;:::o;21825:221::-;21965:34;21961:1;21953:6;21949:14;21942:58;22034:4;22029:2;22021:6;22017:15;22010:29;21825:221;:::o;22052:366::-;22194:3;22215:67;22279:2;22274:3;22215:67;:::i;:::-;22208:74;;22291:93;22380:3;22291:93;:::i;:::-;22409:2;22404:3;22400:12;22393:19;;22052:366;;;:::o;22424:419::-;22590:4;22628:2;22617:9;22613:18;22605:26;;22677:9;22671:4;22667:20;22663:1;22652:9;22648:17;22641:47;22705:131;22831:4;22705:131;:::i;:::-;22697:139;;22424:419;;;:::o;22849:224::-;22989:34;22985:1;22977:6;22973:14;22966:58;23058:7;23053:2;23045:6;23041:15;23034:32;22849:224;:::o;23079:366::-;23221:3;23242:67;23306:2;23301:3;23242:67;:::i;:::-;23235:74;;23318:93;23407:3;23318:93;:::i;:::-;23436:2;23431:3;23427:12;23420:19;;23079:366;;;:::o;23451:419::-;23617:4;23655:2;23644:9;23640:18;23632:26;;23704:9;23698:4;23694:20;23690:1;23679:9;23675:17;23668:47;23732:131;23858:4;23732:131;:::i;:::-;23724:139;;23451:419;;;:::o;23876:222::-;24016:34;24012:1;24004:6;24000:14;23993:58;24085:5;24080:2;24072:6;24068:15;24061:30;23876:222;:::o;24104:366::-;24246:3;24267:67;24331:2;24326:3;24267:67;:::i;:::-;24260:74;;24343:93;24432:3;24343:93;:::i;:::-;24461:2;24456:3;24452:12;24445:19;;24104:366;;;:::o;24476:419::-;24642:4;24680:2;24669:9;24665:18;24657:26;;24729:9;24723:4;24719:20;24715:1;24704:9;24700:17;24693:47;24757:131;24883:4;24757:131;:::i;:::-;24749:139;;24476:419;;;:::o;24901:228::-;25041:34;25037:1;25029:6;25025:14;25018:58;25110:11;25105:2;25097:6;25093:15;25086:36;24901:228;:::o;25135:366::-;25277:3;25298:67;25362:2;25357:3;25298:67;:::i;:::-;25291:74;;25374:93;25463:3;25374:93;:::i;:::-;25492:2;25487:3;25483:12;25476:19;;25135:366;;;:::o;25507:419::-;25673:4;25711:2;25700:9;25696:18;25688:26;;25760:9;25754:4;25750:20;25746:1;25735:9;25731:17;25724:47;25788:131;25914:4;25788:131;:::i;:::-;25780:139;;25507:419;;;:::o;25932:175::-;26072:27;26068:1;26060:6;26056:14;26049:51;25932:175;:::o;26113:366::-;26255:3;26276:67;26340:2;26335:3;26276:67;:::i;:::-;26269:74;;26352:93;26441:3;26352:93;:::i;:::-;26470:2;26465:3;26461:12;26454:19;;26113:366;;;:::o;26485:419::-;26651:4;26689:2;26678:9;26674:18;26666:26;;26738:9;26732:4;26728:20;26724:1;26713:9;26709:17;26702:47;26766:131;26892:4;26766:131;:::i;:::-;26758:139;;26485:419;;;:::o;26910:191::-;26950:3;26969:20;26987:1;26969:20;:::i;:::-;26964:25;;27003:20;27021:1;27003:20;:::i;:::-;26998:25;;27046:1;27043;27039:9;27032:16;;27067:3;27064:1;27061:10;27058:36;;;27074:18;;:::i;:::-;27058:36;26910:191;;;;:::o;27107:176::-;27247:28;27243:1;27235:6;27231:14;27224:52;27107:176;:::o;27289:366::-;27431:3;27452:67;27516:2;27511:3;27452:67;:::i;:::-;27445:74;;27528:93;27617:3;27528:93;:::i;:::-;27646:2;27641:3;27637:12;27630:19;;27289:366;;;:::o;27661:419::-;27827:4;27865:2;27854:9;27850:18;27842:26;;27914:9;27908:4;27904:20;27900:1;27889:9;27885:17;27878:47;27942:131;28068:4;27942:131;:::i;:::-;27934:139;;27661:419;;;:::o;28086:233::-;28125:3;28148:24;28166:5;28148:24;:::i;:::-;28139:33;;28194:66;28187:5;28184:77;28181:103;;28264:18;;:::i;:::-;28181:103;28311:1;28304:5;28300:13;28293:20;;28086:233;;;:::o;28325:173::-;28465:25;28461:1;28453:6;28449:14;28442:49;28325:173;:::o;28504:366::-;28646:3;28667:67;28731:2;28726:3;28667:67;:::i;:::-;28660:74;;28743:93;28832:3;28743:93;:::i;:::-;28861:2;28856:3;28852:12;28845:19;;28504:366;;;:::o;28876:419::-;29042:4;29080:2;29069:9;29065:18;29057:26;;29129:9;29123:4;29119:20;29115:1;29104:9;29100:17;29093:47;29157:131;29283:4;29157:131;:::i;:::-;29149:139;;28876:419;;;:::o;29301:194::-;29341:4;29361:20;29379:1;29361:20;:::i;:::-;29356:25;;29395:20;29413:1;29395:20;:::i;:::-;29390:25;;29439:1;29436;29432:9;29424:17;;29463:1;29457:4;29454:11;29451:37;;;29468:18;;:::i;:::-;29451:37;29301:194;;;;:::o;29501:114::-;29568:6;29602:5;29596:12;29586:22;;29501:114;;;:::o;29621:184::-;29720:11;29754:6;29749:3;29742:19;29794:4;29789:3;29785:14;29770:29;;29621:184;;;;:::o;29811:132::-;29878:4;29901:3;29893:11;;29931:4;29926:3;29922:14;29914:22;;29811:132;;;:::o;29949:108::-;30026:24;30044:5;30026:24;:::i;:::-;30021:3;30014:37;29949:108;;:::o;30063:179::-;30132:10;30153:46;30195:3;30187:6;30153:46;:::i;:::-;30231:4;30226:3;30222:14;30208:28;;30063:179;;;;:::o;30248:113::-;30318:4;30350;30345:3;30341:14;30333:22;;30248:113;;;:::o;30397:732::-;30516:3;30545:54;30593:5;30545:54;:::i;:::-;30615:86;30694:6;30689:3;30615:86;:::i;:::-;30608:93;;30725:56;30775:5;30725:56;:::i;:::-;30804:7;30835:1;30820:284;30845:6;30842:1;30839:13;30820:284;;;30921:6;30915:13;30948:63;31007:3;30992:13;30948:63;:::i;:::-;30941:70;;31034:60;31087:6;31034:60;:::i;:::-;31024:70;;30880:224;30867:1;30864;30860:9;30855:14;;30820:284;;;30824:14;31120:3;31113:10;;30521:608;;;30397:732;;;;:::o;31135:831::-;31398:4;31436:3;31425:9;31421:19;31413:27;;31450:71;31518:1;31507:9;31503:17;31494:6;31450:71;:::i;:::-;31531:80;31607:2;31596:9;31592:18;31583:6;31531:80;:::i;:::-;31658:9;31652:4;31648:20;31643:2;31632:9;31628:18;31621:48;31686:108;31789:4;31780:6;31686:108;:::i;:::-;31678:116;;31804:72;31872:2;31861:9;31857:18;31848:6;31804:72;:::i;:::-;31886:73;31954:3;31943:9;31939:19;31930:6;31886:73;:::i;:::-;31135:831;;;;;;;;:::o;31972:180::-;32020:77;32017:1;32010:88;32117:4;32114:1;32107:15;32141:4;32138:1;32131:15;32158:185;32198:1;32215:20;32233:1;32215:20;:::i;:::-;32210:25;;32249:20;32267:1;32249:20;:::i;:::-;32244:25;;32288:1;32278:35;;32293:18;;:::i;:::-;32278:35;32335:1;32332;32328:9;32323:14;;32158:185;;;;:::o;32349:220::-;32489:34;32485:1;32477:6;32473:14;32466:58;32558:3;32553:2;32545:6;32541:15;32534:28;32349:220;:::o;32575:366::-;32717:3;32738:67;32802:2;32797:3;32738:67;:::i;:::-;32731:74;;32814:93;32903:3;32814:93;:::i;:::-;32932:2;32927:3;32923:12;32916:19;;32575:366;;;:::o;32947:419::-;33113:4;33151:2;33140:9;33136:18;33128:26;;33200:9;33194:4;33190:20;33186:1;33175:9;33171:17;33164:47;33228:131;33354:4;33228:131;:::i;:::-;33220:139;;32947:419;;;:::o;33372:177::-;33512:29;33508:1;33500:6;33496:14;33489:53;33372:177;:::o;33555:366::-;33697:3;33718:67;33782:2;33777:3;33718:67;:::i;:::-;33711:74;;33794:93;33883:3;33794:93;:::i;:::-;33912:2;33907:3;33903:12;33896:19;;33555:366;;;:::o;33927:419::-;34093:4;34131:2;34120:9;34116:18;34108:26;;34180:9;34174:4;34170:20;34166:1;34155:9;34151:17;34144:47;34208:131;34334:4;34208:131;:::i;:::-;34200:139;;33927:419;;;:::o;34352:229::-;34492:34;34488:1;34480:6;34476:14;34469:58;34561:12;34556:2;34548:6;34544:15;34537:37;34352:229;:::o;34587:366::-;34729:3;34750:67;34814:2;34809:3;34750:67;:::i;:::-;34743:74;;34826:93;34915:3;34826:93;:::i;:::-;34944:2;34939:3;34935:12;34928:19;;34587:366;;;:::o;34959:419::-;35125:4;35163:2;35152:9;35148:18;35140:26;;35212:9;35206:4;35202:20;35198:1;35187:9;35183:17;35176:47;35240:131;35366:4;35240:131;:::i;:::-;35232:139;;34959:419;;;:::o;35384:225::-;35524:34;35520:1;35512:6;35508:14;35501:58;35593:8;35588:2;35580:6;35576:15;35569:33;35384:225;:::o;35615:366::-;35757:3;35778:67;35842:2;35837:3;35778:67;:::i;:::-;35771:74;;35854:93;35943:3;35854:93;:::i;:::-;35972:2;35967:3;35963:12;35956:19;;35615:366;;;:::o;35987:419::-;36153:4;36191:2;36180:9;36176:18;36168:26;;36240:9;36234:4;36230:20;36226:1;36215:9;36211:17;36204:47;36268:131;36394:4;36268:131;:::i;:::-;36260:139;;35987:419;;;:::o;36412:98::-;36463:6;36497:5;36491:12;36481:22;;36412:98;;;:::o;36516:147::-;36617:11;36654:3;36639:18;;36516:147;;;;:::o;36669:386::-;36773:3;36801:38;36833:5;36801:38;:::i;:::-;36855:88;36936:6;36931:3;36855:88;:::i;:::-;36848:95;;36952:65;37010:6;37005:3;36998:4;36991:5;36987:16;36952:65;:::i;:::-;37042:6;37037:3;37033:16;37026:23;;36777:278;36669:386;;;;:::o;37061:271::-;37191:3;37213:93;37302:3;37293:6;37213:93;:::i;:::-;37206:100;;37323:3;37316:10;;37061:271;;;;:::o;37338:179::-;37478:31;37474:1;37466:6;37462:14;37455:55;37338:179;:::o;37523:366::-;37665:3;37686:67;37750:2;37745:3;37686:67;:::i;:::-;37679:74;;37762:93;37851:3;37762:93;:::i;:::-;37880:2;37875:3;37871:12;37864:19;;37523:366;;;:::o;37895:419::-;38061:4;38099:2;38088:9;38084:18;38076:26;;38148:9;38142:4;38138:20;38134:1;38123:9;38119:17;38112:47;38176:131;38302:4;38176:131;:::i;:::-;38168:139;;37895:419;;;:::o

Swarm Source

ipfs://4d66d05f5c04d3a5d91c308088866c5944d28085c45c7753356cbd60ae9a5997
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.