ETH Price: $2,287.66 (-3.35%)

Contract

0xAc0971ef9e89E36382293de3B90870c7E53Fe496
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve167020092023-02-25 1:22:47560 days ago1677288167IN
0xAc0971ef...7E53Fe496
0 ETH0.0005591422.3917629
Approve163196682023-01-02 14:24:47613 days ago1672669487IN
0xAc0971ef...7E53Fe496
0 ETH0.0004149616.61797782
Approve160080122022-11-20 1:41:59657 days ago1668908519IN
0xAc0971ef...7E53Fe496
0 ETH0.0005204611.01390817
Approve159592502022-11-13 6:16:11664 days ago1668320171IN
0xAc0971ef...7E53Fe496
0 ETH0.0003015912.07762659
Approve159366102022-11-10 2:22:47667 days ago1668046967IN
0xAc0971ef...7E53Fe496
0 ETH0.0010070321.31069967
Approve158351942022-10-26 22:20:23681 days ago1666822823IN
0xAc0971ef...7E53Fe496
0 ETH0.0006940114.686628
Approve158270252022-10-25 18:57:35682 days ago1666724255IN
0xAc0971ef...7E53Fe496
0 ETH0.0015492432.78482159
Approve158267012022-10-25 17:51:47682 days ago1666720307IN
0xAc0971ef...7E53Fe496
0 ETH0.0013920129.45759509
Approve158249472022-10-25 11:57:35682 days ago1666699055IN
0xAc0971ef...7E53Fe496
0 ETH0.0004751610.05536486
Approve158184812022-10-24 14:12:59683 days ago1666620779IN
0xAc0971ef...7E53Fe496
0 ETH0.0018278638.68095209
Approve158175262022-10-24 10:59:59683 days ago1666609199IN
0xAc0971ef...7E53Fe496
0 ETH0.0006250313.22679602
Approve158139142022-10-23 22:52:47684 days ago1666565567IN
0xAc0971ef...7E53Fe496
0 ETH0.0005892212.46904026
Approve158137482022-10-23 22:18:59684 days ago1666563539IN
0xAc0971ef...7E53Fe496
0 ETH0.0005750912.17005713
Approve158136342022-10-23 21:55:47684 days ago1666562147IN
0xAc0971ef...7E53Fe496
0 ETH0.00045569.64140331
Approve158104112022-10-23 11:07:35684 days ago1666523255IN
0xAc0971ef...7E53Fe496
0 ETH0.0005686512.03365824
Transfer158103662022-10-23 10:58:35684 days ago1666522715IN
0xAc0971ef...7E53Fe496
0 ETH0.0026674911.80380569
Approve158072912022-10-23 0:41:35685 days ago1666485695IN
0xAc0971ef...7E53Fe496
0 ETH0.0007368215.59257713
Approve158063552022-10-22 21:33:11685 days ago1666474391IN
0xAc0971ef...7E53Fe496
0 ETH0.0007422415.70717443
Approve158063402022-10-22 21:29:59685 days ago1666474199IN
0xAc0971ef...7E53Fe496
0 ETH0.0007624416.13472858
Approve158063132022-10-22 21:24:35685 days ago1666473875IN
0xAc0971ef...7E53Fe496
0 ETH0.0008019916.9715454
Transfer158060412022-10-22 20:29:23685 days ago1666470563IN
0xAc0971ef...7E53Fe496
0 ETH0.0045895420.3079139
Approve158060142022-10-22 20:23:59685 days ago1666470239IN
0xAc0971ef...7E53Fe496
0 ETH0.0008684618.37829628
Approve158060002022-10-22 20:21:11685 days ago1666470071IN
0xAc0971ef...7E53Fe496
0 ETH0.0008890318.81353049
Approve158059142022-10-22 20:03:59685 days ago1666469039IN
0xAc0971ef...7E53Fe496
0 ETH0.0011421124.16911719
Approve158058872022-10-22 19:58:35685 days ago1666468715IN
0xAc0971ef...7E53Fe496
0 ETH0.0008278817.51955685
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
supplyshockf

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

/*
       
https://t.me/SupplyShock

*/

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IBEP20 {
    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);
}

interface IBEP20Metadata is IBEP20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract BEP20 is Context, IBEP20, IBEP20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 internal _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

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

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount,"BEP20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint256);

    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r,
                    bytes32 s) external;

    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out,
               uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1,
                                                  uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);

    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;

    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired,
                          uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline)
                          external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin,
                             uint256 amountETHMin, address to, uint256 deadline)
                             external payable returns (uint256 amountToken, uint256 amountETH,
                             uint256 liquidity);

    function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin,
                             uint256 amountBMin, address to, uint256 deadline) 
                             external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin,
                                uint256 amountETHMin, address to, uint256 deadline) 
                                external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity,
                                       uint256 amountAMin, uint256 amountBMin, address to,
                                       uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) 
                                       external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin,
                                          uint256 amountETHMin, address to, uint256 deadline,
                                          bool approveMax, uint8 v, bytes32 r, bytes32 s) 
                                          external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path,
                                      address to, uint256 deadline) 
                                      external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path,
                                      address to, uint256 deadline) 
                                      external returns (uint256[] memory amounts);

    function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to,
                                   uint256 deadline) 
                                   external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path,
                                   address to, uint256 deadline) 
                                   external returns (uint256[] memory amounts);

    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path,
                                   address to, uint256 deadline) 
                                   external returns (uint256[] memory amounts);

    function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to,
                                   uint256 deadline) 
                                   external payable returns (uint256[] memory amounts);

    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) 
                   external pure returns (uint256 amountB);

    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) 
                          external pure returns (uint256 amountOut);

    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) 
                         external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
                           external view returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
                          external view returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity,
        uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) 
        external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity,
        uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax,
        uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin,
        address[] calldata path, address to, uint256 deadline) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin,
        address[] calldata path, address to, uint256 deadline) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin,
        address[] calldata path, address to, uint256 deadline) external;
}

contract supplyshockf is BEP20, Ownable { //
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public USD = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; //
    bool public tradingEnabled = false;

    //uint256 internal sellAmount = 0;
    //uint256 internal buyAmount = 0;

    uint256 private totalSellFees;
    uint256 private totalBuyFees;

    address payable public marketingWallet; //
    address payable public devWallet; //

    uint256 public maxWallet;
    bool public maxWalletEnabled = true;
    uint256 public swapTokensAtAmount;
    uint256 public sellMarketingFees;
    uint256 public sellBurnFee;
    uint256 public buyMarketingFees;
    uint256 public buyBurnFee;
    uint256 public buyDevFee;
    uint256 public sellDevFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isBot;
    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) private canTransferBeforeTradingIsEnabled;

    bool public limitsInEffect = false; 
    uint256 private gasPriceLimit = 50 * 1 gwei; // MAX GWEI
    mapping(address => uint256) private _holderLastTransferBlock; // FOR 1TX PER BLOCK
    mapping(address => uint256) private _holderLastTransferTimestamp; // FOR COOLDOWN
    uint256 public launchblock; // FOR DEADBLOCKS
    uint256 public launchtimestamp; // FOR LAUNCH TIMESTAMP 
    uint256 public cooldowntimer = 0; // DEFAULT COOLDOWN TIMER

    event SetPreSaleWallet(address wallet);
    event updateMarketingWallet(address wallet);
    event updateDevWallet(address wallet);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event TradingEnabled();

    event UpdateFees(uint256 sellMarketingFees, uint256 sellBurnFee, uint256 buyMarketingFees,
                     uint256 buyBurnFee, uint256 buyDevFee, uint256 sellDevFee);

    event Airdrop(address holder, uint256 amount);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event blackList(address);
    event unblackList(address);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SendDividends(uint256 opAmount, bool success);
    event transferUSD(uint256 amountUSD);

    constructor() BEP20("SupplyShock", "Shock") { // 
        marketingWallet = payable(0x3F936c474B4508d44e35A3fe892B413EDeC9A71b); // 
        devWallet = payable(0x3F936c474B4508d44e35A3fe892B413EDeC9A71b); // 
        address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; /// 

        //INITIAL FEE VALUES HERE
        buyMarketingFees = 3;
        sellMarketingFees = 3;
        buyBurnFee = 1;
        sellBurnFee = 1;
        buyDevFee = 0;
        sellDevFee = 0;

        // TOTAL BUY AND TOTAL SELL FEE CALCS
        totalBuyFees = buyMarketingFees.add(buyDevFee);
        totalSellFees = sellMarketingFees.add(sellDevFee);

        uniswapV2Router = IUniswapV2Router02(router);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this), USD);

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);

        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[marketingWallet] = true;

        uint256 totalSupply = (5_000) * (10**18); // 
        _mint(owner(), totalSupply); // 
        maxWallet = _totalSupply / 50; // 
        swapTokensAtAmount = _totalSupply / 2000; // ;
        canTransferBeforeTradingIsEnabled[owner()] = true;
        canTransferBeforeTradingIsEnabled[address(this)] = true;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingEnabled);
        tradingEnabled = true;
        launchblock = block.number;
        launchtimestamp = block.timestamp;
        emit TradingEnabled();
    }
    
    function setMarketingWallet(address wallet) external onlyOwner {
        _isExcludedFromFees[wallet] = true;
        marketingWallet = payable(wallet);
        emit updateMarketingWallet(wallet);
    }

    function setDevWallet(address wallet) external onlyOwner {
        _isExcludedFromFees[wallet] = true;
        devWallet = payable(wallet);
        emit updateDevWallet(wallet);
    }
    
    function setExcludeFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function addBot(address account) public onlyOwner {
        _isBot[account] = true;
        emit blackList(account);
    }

    function removeBot(address account) public onlyOwner {
        _isBot[account] = false;
        emit unblackList(account);
    }

    function setCanTransferBefore(address wallet, bool enable) external onlyOwner {
        canTransferBeforeTradingIsEnabled[wallet] = enable;
    }

    function setLimitsInEffect(bool value) external onlyOwner {
        limitsInEffect = value;
    }

    function setMaxWalletEnabled(bool value) external onlyOwner {
        maxWalletEnabled = value;
    }

    function setcooldowntimer(uint256 value) external onlyOwner {
        require(value <= 300, "cooldown timer cannot exceed 5 minutes");
        cooldowntimer = value;
    }
    
    function setmaxWallet(uint256 value) external onlyOwner {
        value = value * (10**18);
        require(value >= _totalSupply / 100, "max wallet cannot be set to less than 1%");
        maxWallet = value;
    }

    // 
    function Sweep() external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer(amountBNB);
    }

    function SendUSD() external onlyOwner {
        uint256 amountUSD = IBEP20(USD).balanceOf(address(this));
        IBEP20(USD).approve(address(this), amountUSD.mul(10));
        IBEP20(USD).transferFrom(address(this),msg.sender,amountUSD);
        emit transferUSD(amountUSD);
    }

    function setSwapTriggerAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount * (10**18);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    // 
    function transferAdmin(address newOwner) public onlyOwner {
        _isExcludedFromFees[newOwner] = true;
        canTransferBeforeTradingIsEnabled[newOwner] = true;
        transferOwnership(newOwner);
    }

    function updateFees(uint256 marketingBuy, uint256 marketingSell, uint256 burnBuy,
                        uint256 burnSell, uint256 devBuy, uint256 devSell) public onlyOwner {

        buyMarketingFees = marketingBuy;
        buyBurnFee = burnBuy;
        sellMarketingFees = marketingSell;
        sellBurnFee = burnSell;
        buyDevFee = devBuy;
        sellDevFee = devSell;

        totalSellFees = sellMarketingFees.add(sellDevFee);
        totalBuyFees = buyMarketingFees.add(buyDevFee);

        // 
        require(totalSellFees <= 99 && totalBuyFees <= 99, "%");

        emit UpdateFees(sellMarketingFees, sellBurnFee, sellDevFee, buyMarketingFees,
                        buyBurnFee, buyDevFee);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function isBot(address account) public view returns (bool) {
        return _isBot[account];
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "IBEP20: transfer from the zero address");
        require(to != address(0), "IBEP20: transfer to the zero address");
        require(!_isBot[from] && !_isBot[to]);

        uint256 marketingFees;
        uint256 burnFee;
        uint256 devFee;

        if (!canTransferBeforeTradingIsEnabled[from]) {
            require(tradingEnabled, "Trading has not yet been enabled");          
        }

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        } 
        
        else if (
            !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
        ) {
            bool isSelling = automatedMarketMakerPairs[to];
            if (isSelling) {
                marketingFees = sellMarketingFees;
                burnFee = sellBurnFee;
                devFee = sellDevFee;

                if (limitsInEffect) {
                require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer,
                        "cooldown period active");
                _holderLastTransferTimestamp[tx.origin] = block.timestamp;
                }
            } 
            
            else {
                marketingFees = buyMarketingFees;
                burnFee = buyBurnFee;
                devFee = buyDevFee;

                if (limitsInEffect) {
                require(block.number > launchblock + 2,"you shall not pass");
                require(tx.gasprice <= gasPriceLimit,"Gas price exceeds limit.");
                require(_holderLastTransferBlock[tx.origin] != block.number,"Too many TX in block");
                require(block.timestamp >= _holderLastTransferTimestamp[tx.origin] + cooldowntimer,
                        "cooldown period active");
                _holderLastTransferBlock[tx.origin] = block.number;
                _holderLastTransferTimestamp[tx.origin] = block.timestamp;
            }

            if (maxWalletEnabled) {
            uint256 contractBalanceRecipient = balanceOf(to);
            require(contractBalanceRecipient + amount <= maxWallet,
                    "Exceeds maximum wallet token amount." );
            }
            }

            uint256 totalFees = marketingFees.add(devFee);

            uint256 contractTokenBalance = balanceOf(address(this));

            bool canSwap = contractTokenBalance >= swapTokensAtAmount;

            if (canSwap && !automatedMarketMakerPairs[from]) {
                uint256 tokensFromFees=contractTokenBalance;
                uint256 totalMarketingFees = sellMarketingFees+buyMarketingFees;
                uint256 totalDevFees = sellDevFee + buyDevFee;
                uint256 totalFee = totalMarketingFees+totalDevFees;
                uint256 partMarketing = (totalMarketingFees*100).div(totalFee); //*100 because uint256
                uint256 partDev = (totalDevFees*100).div(totalFee); //*100 because uint256

                uint256 marketingPayout = (tokensFromFees * partMarketing).div(100);
                uint256 devPayout = (tokensFromFees * partDev).div(100);

                if (marketingPayout > 0) {
                    swapTokensForUSD(marketingPayout, marketingWallet);
                }
                
                if (devPayout > 0) {
                    swapTokensForUSD(devPayout, devWallet);

                }
             
            }

            uint256 fees = amount.mul(totalFees).div(100);
            uint256 burntokens = amount.mul(burnFee).div(100);

            amount = amount.sub(fees + burntokens);

            super._transfer(from, address(this), fees);

            if (burntokens > 0) {
                super._transfer(from, DEAD, burntokens);
                _totalSupply = _totalSupply.sub(burntokens);
            }
           
        }
        super._transfer(from, to, amount); 
    }


    function swapTokensForUSD(uint256 tokenAmount, address destAddr) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = USD;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForTokens(
            tokenAmount,
            0, // accept any amount of USD
            path,
            destAddr,
            block.timestamp
        );
    }

    function forceSwapAndSendDividends(uint256 tokens) public onlyOwner {
        payWallets(tokens);
    }

    // in this function, the contract sells his tokens and send USD to marketing and dev wallets
    function payWallets(uint256 tokensFromFees) private {

        uint256 totalMarketingFees = sellMarketingFees+buyMarketingFees;
        uint256 totalDevFees = sellDevFee + buyDevFee;
        uint256 totalFees = totalMarketingFees+totalDevFees;
        uint256 partMarketing = (totalMarketingFees*100).div(totalFees); //*100 because uint256
        uint256 partDev = (totalDevFees*100).div(totalFees); //*100 because uint256

        uint256 marketingPayout = (tokensFromFees * partMarketing).div(100);
        uint256 devPayout = (tokensFromFees * partDev).div(100);

        if (marketingPayout > 0) {
            swapTokensForUSD(marketingPayout, marketingWallet);
        }
        
        if (devPayout > 0) {
            swapTokensForUSD(devPayout, devWallet);
        }

    }

    function airdropToWallets(
        address[] memory airdropWallets,
        uint256[] memory amount
    ) external onlyOwner {
        require(airdropWallets.length == amount.length, "Arrays must be the same length");
        require(airdropWallets.length <= 200, "Wallets list length must be <= 200");
        for (uint256 i = 0; i < airdropWallets.length; i++) {
            address wallet = airdropWallets[i];
            uint256 airdropAmount = amount[i] * (10**18);
            super._transfer(msg.sender, wallet, airdropAmount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Airdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"opAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"SetPreSaleWallet","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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":"uint256","name":"sellMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyMarketingFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"blackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountUSD","type":"uint256"}],"name":"transferUSD","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"unblackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SendUSD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"USD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"airdropToWallets","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldowntimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"forceSwapAndSendDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setCanTransferBefore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setLimitsInEffect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTriggerAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setcooldowntimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setmaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferAdmin","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"burnBuy","type":"uint256"},{"internalType":"uint256","name":"burnSell","type":"uint256"},{"internalType":"uint256","name":"devBuy","type":"uint256"},{"internalType":"uint256","name":"devSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960146101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055506000601b60006101000a81548160ff021916908315150217905550640ba43b7400601c5560006021553480156200010857600080fd5b506040518060400160405280600b81526020017f537570706c7953686f636b0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f53686f636b00000000000000000000000000000000000000000000000000000081525081600390805190602001906200018d92919062000abc565b508060049080519060200190620001a692919062000abc565b5050506000620001bb620007d360201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350733f936c474b4508d44e35a3fe892b413edec9a71b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733f936c474b4508d44e35a3fe892b413edec9a71b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506003601381905550600360118190555060016014819055506001601281905550600060158190555060006016819055506200036b601554601354620007db60201b62002d2d1790919060201c565b600b819055506200038f601654601154620007db60201b62002d2d1790919060201c565b600a8190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046a919062000bd6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620004c892919062000c19565b6020604051808303816000875af1158015620004e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050e919062000bd6565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000583600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200083e60201b60201c565b6001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600069010f0cf064dd592000009050620006dd620006d0620008df60201b60201c565b826200090960201b60201c565b6032600254620006ee919062000cae565b600e819055506107d060025462000706919062000cae565b6010819055506001601a600062000722620008df60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000eca565b600033905090565b6000808284620007ec919062000ce6565b90508381101562000834576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082b9062000da4565b60405180910390fd5b8091505092915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200097b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009729062000e16565b60405180910390fd5b6200098f6000838362000ab760201b60201c565b620009ab81600254620007db60201b62002d2d1790919060201c565b60028190555062000a09816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620007db60201b62002d2d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aab919062000e49565b60405180910390a35050565b505050565b82805462000aca9062000e95565b90600052602060002090601f01602090048101928262000aee576000855562000b3a565b82601f1062000b0957805160ff191683800117855562000b3a565b8280016001018555821562000b3a579182015b8281111562000b3957825182559160200191906001019062000b1c565b5b50905062000b49919062000b4d565b5090565b5b8082111562000b6857600081600090555060010162000b4e565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b9e8262000b71565b9050919050565b62000bb08162000b91565b811462000bbc57600080fd5b50565b60008151905062000bd08162000ba5565b92915050565b60006020828403121562000bef5762000bee62000b6c565b5b600062000bff8482850162000bbf565b91505092915050565b62000c138162000b91565b82525050565b600060408201905062000c30600083018562000c08565b62000c3f602083018462000c08565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cbb8262000c46565b915062000cc88362000c46565b92508262000cdb5762000cda62000c50565b5b828204905092915050565b600062000cf38262000c46565b915062000d008362000c46565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d385762000d3762000c7f565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000d8c601b8362000d43565b915062000d998262000d54565b602082019050919050565b6000602082019050818103600083015262000dbf8162000d7d565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dfe601f8362000d43565b915062000e0b8262000dc6565b602082019050919050565b6000602082019050818103600083015262000e318162000def565b9050919050565b62000e438162000c46565b82525050565b600060208201905062000e60600083018462000e38565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000eae57607f821691505b60208210810362000ec45762000ec362000e66565b5b50919050565b615a158062000eda6000396000f3fe60806040526004361061036f5760003560e01c806375f0a874116101c6578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c7f578063f8b45b0514610ca8578063fc6b151c14610cd3578063ffecf51614610cfc57610376565b8063dd62ed3e14610bec578063e2f4560514610c29578063e71dc3f514610c5457610376565b8063b4942988116100d1578063b494298814610b30578063b62496f514610b5b578063b74e3b1114610b98578063d045a32914610bc157610376565b8063a614ff7514610a9f578063a9059cbb14610ac8578063adb873bd14610b0557610376565b806395d89b41116101645780639a7a23d61161013e5780639a7a23d6146109e35780639c3b4fdc14610a0c578063a0d82dc514610a37578063a457c2d714610a6257610376565b806395d89b4114610978578063964365f1146109a3578063992c58e4146109ba57610376565b80638c3c82b2116101a05780638c3c82b2146108cc5780638da5cb5b146108f75780638ea5220f1461092257806395451c291461094d57610376565b806375f0a874146108615780637fdde05c1461088c5780638a8c523c146108b557610376565b80633bbac579116102a05780635eee4bae1161023e5780637088fb7f116102185780637088fb7f146107cd57806370a08231146107e4578063715018a61461082157806375829def1461083857610376565b80635eee4bae146107525780635fecd9261461077b578063679ca6e9146107a457610376565b80634ada218b1161027a5780634ada218b146106965780634fbee193146106c15780635124f874146106fe5780635d098b381461072957610376565b80633bbac5791461060357806349bd5a5e146106405780634a62bb651461066b57610376565b80631bf6c21b1161030d5780632307b441116102e75780632307b4411461053557806323b872dd1461055e578063313ce5671461059b57806339509351146105c657610376565b80631bf6c21b146104b65780631d7b1fb4146104e15780631f53ac021461050c57610376565b806308dfe8a51161034957806308dfe8a5146103fa578063095ea7b3146104235780631694505e1461046057806318160ddd1461048b57610376565b806303fd2a451461037b57806305ca5f08146103a657806306fdde03146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d25565b60405161039d9190614197565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141fc565b610d4b565b005b3480156103db57600080fd5b506103e4610dee565b6040516103f191906142c2565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190614348565b610e80565b005b34801561042f57600080fd5b5061044a60048036038101906104459190614388565b610fc0565b60405161045791906143d7565b60405180910390f35b34801561046c57600080fd5b50610475610fde565b6040516104829190614451565b60405180910390f35b34801561049757600080fd5b506104a0611004565b6040516104ad919061447b565b60405180910390f35b3480156104c257600080fd5b506104cb61100e565b6040516104d89190614197565b60405180910390f35b3480156104ed57600080fd5b506104f6611034565b604051610503919061447b565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190614496565b61103a565b005b34801561054157600080fd5b5061055c600480360381019061055791906146ce565b6111a4565b005b34801561056a57600080fd5b5061058560048036038101906105809190614746565b611346565b60405161059291906143d7565b60405180910390f35b3480156105a757600080fd5b506105b061141f565b6040516105bd91906147b5565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614388565b611428565b6040516105fa91906143d7565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614496565b6114db565b60405161063791906143d7565b60405180910390f35b34801561064c57600080fd5b50610655611531565b6040516106629190614197565b60405180910390f35b34801561067757600080fd5b50610680611557565b60405161068d91906143d7565b60405180910390f35b3480156106a257600080fd5b506106ab61156a565b6040516106b891906143d7565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190614496565b61157d565b6040516106f591906143d7565b60405180910390f35b34801561070a57600080fd5b506107136115d3565b604051610720919061447b565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190614496565b6115d9565b005b34801561075e57600080fd5b50610779600480360381019061077491906141fc565b611743565b005b34801561078757600080fd5b506107a2600480360381019061079d9190614496565b6117f7565b005b3480156107b057600080fd5b506107cb60048036038101906107c691906147d0565b611920565b005b3480156107d957600080fd5b506107e26119d4565b005b3480156107f057600080fd5b5061080b60048036038101906108069190614496565b611aba565b604051610818919061447b565b60405180910390f35b34801561082d57600080fd5b50610836611b02565b005b34801561084457600080fd5b5061085f600480360381019061085a9190614496565b611c5a565b005b34801561086d57600080fd5b50610876611dad565b604051610883919061481e565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae9190614348565b611dd3565b005b3480156108c157600080fd5b506108ca611ec5565b005b3480156108d857600080fd5b506108e1611fcd565b6040516108ee919061447b565b60405180910390f35b34801561090357600080fd5b5061090c611fd3565b6040516109199190614197565b60405180910390f35b34801561092e57600080fd5b50610937611ffd565b604051610944919061481e565b60405180910390f35b34801561095957600080fd5b50610962612023565b60405161096f919061447b565b60405180910390f35b34801561098457600080fd5b5061098d612029565b60405161099a91906142c2565b60405180910390f35b3480156109af57600080fd5b506109b86120bb565b005b3480156109c657600080fd5b506109e160048036038101906109dc9190614839565b612383565b005b3480156109ef57600080fd5b50610a0a6004803603810190610a059190614348565b612528565b005b348015610a1857600080fd5b50610a216125cd565b604051610a2e919061447b565b60405180910390f35b348015610a4357600080fd5b50610a4c6125d3565b604051610a59919061447b565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190614388565b6125d9565b604051610a9691906143d7565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac191906147d0565b6126a6565b005b348015610ad457600080fd5b50610aef6004803603810190610aea9190614388565b61275a565b604051610afc91906143d7565b60405180910390f35b348015610b1157600080fd5b50610b1a612778565b604051610b27919061447b565b60405180910390f35b348015610b3c57600080fd5b50610b4561277e565b604051610b52919061447b565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190614496565b612784565b604051610b8f91906143d7565b60405180910390f35b348015610ba457600080fd5b50610bbf6004803603810190610bba91906141fc565b6127a4565b005b348015610bcd57600080fd5b50610bd661288a565b604051610be391906143d7565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e91906148c6565b61289d565b604051610c20919061447b565b60405180910390f35b348015610c3557600080fd5b50610c3e612924565b604051610c4b919061447b565b60405180910390f35b348015610c6057600080fd5b50610c6961292a565b604051610c76919061447b565b60405180910390f35b348015610c8b57600080fd5b50610ca66004803603810190610ca19190614496565b612930565b005b348015610cb457600080fd5b50610cbd612af6565b604051610cca919061447b565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf591906141fc565b612afc565b005b348015610d0857600080fd5b50610d236004803603810190610d1e9190614496565b612c04565b005b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d53612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614952565b60405180910390fd5b610deb81612d93565b50565b606060038054610dfd906149a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e29906149a1565b8015610e765780601f10610e4b57610100808354040283529160200191610e76565b820191906000526020600020905b815481529060010190602001808311610e5957829003601f168201915b5050505050905090565b610e88612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90614952565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fb491906143d7565b60405180910390a25050565b6000610fd4610fcd612d8b565b8484612ecd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b611042612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa816040516111999190614197565b60405180910390a150565b6111ac612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290614952565b60405180910390fd5b805182511461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690614a1e565b60405180910390fd5b60c8825111156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb90614ab0565b60405180910390fd5b60005b82518110156113415760008382815181106112e5576112e4614ad0565b5b602002602001015190506000670de0b6b3a764000084848151811061130d5761130c614ad0565b5b602002602001015161131f9190614b2e565b905061132c338383613096565b5050808061133990614b88565b9150506112c7565b505050565b6000611353848484613329565b6114148461135f612d8b565b61140f8560405180606001604052806028815260200161596d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113c5612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b612ecd565b600190509392505050565b60006012905090565b60006114d1611435612d8b565b846114cc8560016000611446612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d90919063ffffffff16565b612ecd565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b600960149054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6115e1612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516117389190614197565b60405180910390a150565b61174b612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190614952565b60405180910390fd5b670de0b6b3a7640000816117ee9190614b2e565b60108190555050565b6117ff612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614952565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2bfbf4d4860dc855748bb2cddfed0644fc3dcd75aad3625ff609ea9effa5ac89816040516119159190614197565b60405180910390a150565b611928612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90614952565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b6119dc612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6290614952565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ab6573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b0a612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614952565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611c62612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611daa81612930565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ddb612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614952565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ecd612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5390614952565b60405180910390fd5b600960149054906101000a900460ff1615611f7657600080fd5b6001600960146101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054612038906149a1565b80601f0160208091040260200160405190810160405280929190818152602001828054612064906149a1565b80156120b15780601f10612086576101008083540402835291602001916120b1565b820191906000526020600020905b81548152906001019060200180831161209457829003601f168201915b5050505050905090565b6120c3612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614952565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121af9190614197565b602060405180830381865afa1580156121cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f09190614be5565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330612245600a85613d5290919063ffffffff16565b6040518363ffffffff1660e01b8152600401612262929190614c12565b6020604051808303816000875af1158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614c50565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161230593929190614c7d565b6020604051808303816000875af1158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190614c50565b507fc74e7a098395443390fac907684a14a51fd706a5c157ef4fbd6a08e2748e166681604051612378919061447b565b60405180910390a150565b61238b612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241190614952565b60405180910390fd5b85601381905550836014819055508460118190555082601281905550816015819055508060168190555061245b601654601154612d2d90919063ffffffff16565b600a81905550612478601554601354612d2d90919063ffffffff16565b600b819055506063600a541115801561249457506063600b5411155b6124d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ca90614d00565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161251896959493929190614d20565b60405180910390a1505050505050565b612530612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b690614952565b60405180910390fd5b6125c98282613dcc565b5050565b60155481565b60165481565b600061269c6125e6612d8b565b84612697856040518060600160405280602581526020016159bb6025913960016000612610612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b612ecd565b6001905092915050565b6126ae612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490614952565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061276e612767612d8b565b8484613329565b6001905092915050565b60125481565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b6127ac612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614952565b60405180910390fd5b61012c811115612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790614df3565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612938612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614952565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2d90614e85565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b612b04612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614952565b60405180910390fd5b670de0b6b3a764000081612ba79190614b2e565b90506064600254612bb89190614ed4565b811015612bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf190614f77565b60405180910390fd5b80600e8190555050565b612c0c612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614952565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4838d165dc25d6634e3e7c65e13a5db7fa3b845af65cb4816abcb94ce9d569e381604051612d229190614197565b60405180910390a150565b6000808284612d3c9190614f97565b905083811015612d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7890615039565b60405180910390fd5b8091505092915050565b600033905090565b6000601354601154612da59190614f97565b90506000601554601654612db99190614f97565b905060008183612dc99190614f97565b90506000612dec82606486612dde9190614b2e565b613e6d90919063ffffffff16565b90506000612e0f83606486612e019190614b2e565b613e6d90919063ffffffff16565b90506000612e3260648489612e249190614b2e565b613e6d90919063ffffffff16565b90506000612e556064848a612e479190614b2e565b613e6d90919063ffffffff16565b90506000821115612e8d57612e8c82600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b6000811115612ec357612ec281600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f33906150cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa29061515d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613089919061447b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fc906151ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b90615281565b60405180910390fd5b61317f8383836140a4565b6131ea81604051806060016040528060268152602001615995602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161331c919061447b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338f90615313565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fe906153a5565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134ab5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134b457600080fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661355a57600960149054906101000a900460ff16613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090615411565b60405180910390fd5b5b600084036135765761356e86866000613096565b505050613ce9565b601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561361a5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cda576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050801561377357601154935060125492506016549150601b60009054906101000a900460ff161561376e57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136e79190614f97565b421015613729576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137209061547d565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613a3a565b601354935060145492506015549150601b60009054906101000a900460ff16156139c5576002601f546137a69190614f97565b43116137e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137de906154e9565b60405180910390fd5b601c543a111561382c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382390615555565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036138ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138a4906155c1565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fa9190614f97565b42101561393c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139339061547d565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff1615613a395760006139e587611aba565b9050600e5486826139f69190614f97565b1115613a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2e90615653565b60405180910390fd5b505b5b6000613a4f8386612d2d90919063ffffffff16565b90506000613a5c30611aba565b905060006010548210159050808015613abf5750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c025760008290506000601354601154613adb9190614f97565b90506000601554601654613aef9190614f97565b905060008183613aff9190614f97565b90506000613b2282606486613b149190614b2e565b613e6d90919063ffffffff16565b90506000613b4583606486613b379190614b2e565b613e6d90919063ffffffff16565b90506000613b6860648489613b5a9190614b2e565b613e6d90919063ffffffff16565b90506000613b8b6064848a613b7d9190614b2e565b613e6d90919063ffffffff16565b90506000821115613bc357613bc282600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b6000811115613bf957613bf881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b50505050505050505b6000613c2a6064613c1c868c613d5290919063ffffffff16565b613e6d90919063ffffffff16565b90506000613c546064613c468a8d613d5290919063ffffffff16565b613e6d90919063ffffffff16565b9050613c748183613c659190614f97565b8b6140a990919063ffffffff16565b9950613c818c3084613096565b6000811115613cd357613cb78c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613096565b613ccc816002546140a990919063ffffffff16565b6002819055505b5050505050505b613ce5868686613096565b5050505b505050565b6000838311158290613d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d2d91906142c2565b60405180910390fd5b5060008385613d459190615673565b9050809150509392505050565b6000808303613d645760009050613dc6565b60008284613d729190614b2e565b9050828482613d819190614ed4565b14613dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613db890615719565b60405180910390fd5b809150505b92915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613eaf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140f3565b905092915050565b6000600267ffffffffffffffff811115613ed457613ed36144c8565b5b604051908082528060200260200182016040528015613f025781602001602082028036833780820191505090505b5090503081600081518110613f1a57613f19614ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613f8b57613f8a614ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ff230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685612ecd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed17398460008486426040518663ffffffff1660e01b8152600401614056959493929190615832565b6000604051808303816000875af1158015614075573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061409e9190615923565b50505050565b505050565b60006140eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cee565b905092915050565b6000808311829061413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413191906142c2565b60405180910390fd5b50600083856141499190614ed4565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061418182614156565b9050919050565b61419181614176565b82525050565b60006020820190506141ac6000830184614188565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6141d9816141c6565b81146141e457600080fd5b50565b6000813590506141f6816141d0565b92915050565b600060208284031215614212576142116141bc565b5b6000614220848285016141e7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614263578082015181840152602081019050614248565b83811115614272576000848401525b50505050565b6000601f19601f8301169050919050565b600061429482614229565b61429e8185614234565b93506142ae818560208601614245565b6142b781614278565b840191505092915050565b600060208201905081810360008301526142dc8184614289565b905092915050565b6142ed81614176565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b60008115159050919050565b61432581614310565b811461433057600080fd5b50565b6000813590506143428161431c565b92915050565b6000806040838503121561435f5761435e6141bc565b5b600061436d858286016142fb565b925050602061437e85828601614333565b9150509250929050565b6000806040838503121561439f5761439e6141bc565b5b60006143ad858286016142fb565b92505060206143be858286016141e7565b9150509250929050565b6143d181614310565b82525050565b60006020820190506143ec60008301846143c8565b92915050565b6000819050919050565b600061441761441261440d84614156565b6143f2565b614156565b9050919050565b6000614429826143fc565b9050919050565b600061443b8261441e565b9050919050565b61444b81614430565b82525050565b60006020820190506144666000830184614442565b92915050565b614475816141c6565b82525050565b6000602082019050614490600083018461446c565b92915050565b6000602082840312156144ac576144ab6141bc565b5b60006144ba848285016142fb565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61450082614278565b810181811067ffffffffffffffff8211171561451f5761451e6144c8565b5b80604052505050565b60006145326141b2565b905061453e82826144f7565b919050565b600067ffffffffffffffff82111561455e5761455d6144c8565b5b602082029050602081019050919050565b600080fd5b600061458761458284614543565b614528565b905080838252602082019050602084028301858111156145aa576145a961456f565b5b835b818110156145d357806145bf88826142fb565b8452602084019350506020810190506145ac565b5050509392505050565b600082601f8301126145f2576145f16144c3565b5b8135614602848260208601614574565b91505092915050565b600067ffffffffffffffff821115614626576146256144c8565b5b602082029050602081019050919050565b600061464a6146458461460b565b614528565b9050808382526020820190506020840283018581111561466d5761466c61456f565b5b835b81811015614696578061468288826141e7565b84526020840193505060208101905061466f565b5050509392505050565b600082601f8301126146b5576146b46144c3565b5b81356146c5848260208601614637565b91505092915050565b600080604083850312156146e5576146e46141bc565b5b600083013567ffffffffffffffff811115614703576147026141c1565b5b61470f858286016145dd565b925050602083013567ffffffffffffffff8111156147305761472f6141c1565b5b61473c858286016146a0565b9150509250929050565b60008060006060848603121561475f5761475e6141bc565b5b600061476d868287016142fb565b935050602061477e868287016142fb565b925050604061478f868287016141e7565b9150509250925092565b600060ff82169050919050565b6147af81614799565b82525050565b60006020820190506147ca60008301846147a6565b92915050565b6000602082840312156147e6576147e56141bc565b5b60006147f484828501614333565b91505092915050565b600061480882614156565b9050919050565b614818816147fd565b82525050565b6000602082019050614833600083018461480f565b92915050565b60008060008060008060c08789031215614856576148556141bc565b5b600061486489828a016141e7565b965050602061487589828a016141e7565b955050604061488689828a016141e7565b945050606061489789828a016141e7565b93505060806148a889828a016141e7565b92505060a06148b989828a016141e7565b9150509295509295509295565b600080604083850312156148dd576148dc6141bc565b5b60006148eb858286016142fb565b92505060206148fc858286016142fb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061493c602083614234565b915061494782614906565b602082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149b957607f821691505b6020821081036149cc576149cb614972565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614a08601e83614234565b9150614a13826149d2565b602082019050919050565b60006020820190508181036000830152614a37816149fb565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602283614234565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b39826141c6565b9150614b44836141c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b7d57614b7c614aff565b5b828202905092915050565b6000614b93826141c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bc557614bc4614aff565b5b600182019050919050565b600081519050614bdf816141d0565b92915050565b600060208284031215614bfb57614bfa6141bc565b5b6000614c0984828501614bd0565b91505092915050565b6000604082019050614c276000830185614188565b614c34602083018461446c565b9392505050565b600081519050614c4a8161431c565b92915050565b600060208284031215614c6657614c656141bc565b5b6000614c7484828501614c3b565b91505092915050565b6000606082019050614c926000830186614188565b614c9f6020830185614188565b614cac604083018461446c565b949350505050565b7f2500000000000000000000000000000000000000000000000000000000000000600082015250565b6000614cea600183614234565b9150614cf582614cb4565b602082019050919050565b60006020820190508181036000830152614d1981614cdd565b9050919050565b600060c082019050614d35600083018961446c565b614d42602083018861446c565b614d4f604083018761446c565b614d5c606083018661446c565b614d69608083018561446c565b614d7660a083018461446c565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ddd602683614234565b9150614de882614d81565b604082019050919050565b60006020820190508181036000830152614e0c81614dd0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e6f602683614234565b9150614e7a82614e13565b604082019050919050565b60006020820190508181036000830152614e9e81614e62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614edf826141c6565b9150614eea836141c6565b925082614efa57614ef9614ea5565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614f61602883614234565b9150614f6c82614f05565b604082019050919050565b60006020820190508181036000830152614f9081614f54565b9050919050565b6000614fa2826141c6565b9150614fad836141c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614fe257614fe1614aff565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615023601b83614234565b915061502e82614fed565b602082019050919050565b6000602082019050818103600083015261505281615016565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150b5602483614234565b91506150c082615059565b604082019050919050565b600060208201905081810360008301526150e4816150a8565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615147602283614234565b9150615152826150eb565b604082019050919050565b600060208201905081810360008301526151768161513a565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151d9602583614234565b91506151e48261517d565b604082019050919050565b60006020820190508181036000830152615208816151cc565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061526b602383614234565b91506152768261520f565b604082019050919050565b6000602082019050818103600083015261529a8161525e565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006152fd602683614234565b9150615308826152a1565b604082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061538f602483614234565b915061539a82615333565b604082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b60006153fb602083614234565b9150615406826153c5565b602082019050919050565b6000602082019050818103600083015261542a816153ee565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b6000615467601683614234565b915061547282615431565b602082019050919050565b600060208201905081810360008301526154968161545a565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006154d3601283614234565b91506154de8261549d565b602082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b600061553f601883614234565b915061554a82615509565b602082019050919050565b6000602082019050818103600083015261556e81615532565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b60006155ab601483614234565b91506155b682615575565b602082019050919050565b600060208201905081810360008301526155da8161559e565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b600061563d602483614234565b9150615648826155e1565b604082019050919050565b6000602082019050818103600083015261566c81615630565b9050919050565b600061567e826141c6565b9150615689836141c6565b92508282101561569c5761569b614aff565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615703602183614234565b915061570e826156a7565b604082019050919050565b60006020820190508181036000830152615732816156f6565b9050919050565b6000819050919050565b600061575e61575961575484615739565b6143f2565b6141c6565b9050919050565b61576e81615743565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a981614176565b82525050565b60006157bb83836157a0565b60208301905092915050565b6000602082019050919050565b60006157df82615774565b6157e9818561577f565b93506157f483615790565b8060005b8381101561582557815161580c88826157af565b9750615817836157c7565b9250506001810190506157f8565b5085935050505092915050565b600060a082019050615847600083018861446c565b6158546020830187615765565b818103604083015261586681866157d4565b90506158756060830185614188565b615882608083018461446c565b9695505050505050565b600061589f61589a8461460b565b614528565b905080838252602082019050602084028301858111156158c2576158c161456f565b5b835b818110156158eb57806158d78882614bd0565b8452602084019350506020810190506158c4565b5050509392505050565b600082601f83011261590a576159096144c3565b5b815161591a84826020860161588c565b91505092915050565b600060208284031215615939576159386141bc565b5b600082015167ffffffffffffffff811115615957576159566141c1565b5b615963848285016158f5565b9150509291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205b87218f65eb9b5a7cbbd9df0d2d9f1bf7e21d94ee02b607d6ed125c12693a2864736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806375f0a874116101c6578063a614ff75116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610c7f578063f8b45b0514610ca8578063fc6b151c14610cd3578063ffecf51614610cfc57610376565b8063dd62ed3e14610bec578063e2f4560514610c29578063e71dc3f514610c5457610376565b8063b4942988116100d1578063b494298814610b30578063b62496f514610b5b578063b74e3b1114610b98578063d045a32914610bc157610376565b8063a614ff7514610a9f578063a9059cbb14610ac8578063adb873bd14610b0557610376565b806395d89b41116101645780639a7a23d61161013e5780639a7a23d6146109e35780639c3b4fdc14610a0c578063a0d82dc514610a37578063a457c2d714610a6257610376565b806395d89b4114610978578063964365f1146109a3578063992c58e4146109ba57610376565b80638c3c82b2116101a05780638c3c82b2146108cc5780638da5cb5b146108f75780638ea5220f1461092257806395451c291461094d57610376565b806375f0a874146108615780637fdde05c1461088c5780638a8c523c146108b557610376565b80633bbac579116102a05780635eee4bae1161023e5780637088fb7f116102185780637088fb7f146107cd57806370a08231146107e4578063715018a61461082157806375829def1461083857610376565b80635eee4bae146107525780635fecd9261461077b578063679ca6e9146107a457610376565b80634ada218b1161027a5780634ada218b146106965780634fbee193146106c15780635124f874146106fe5780635d098b381461072957610376565b80633bbac5791461060357806349bd5a5e146106405780634a62bb651461066b57610376565b80631bf6c21b1161030d5780632307b441116102e75780632307b4411461053557806323b872dd1461055e578063313ce5671461059b57806339509351146105c657610376565b80631bf6c21b146104b65780631d7b1fb4146104e15780631f53ac021461050c57610376565b806308dfe8a51161034957806308dfe8a5146103fa578063095ea7b3146104235780631694505e1461046057806318160ddd1461048b57610376565b806303fd2a451461037b57806305ca5f08146103a657806306fdde03146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d25565b60405161039d9190614197565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906141fc565b610d4b565b005b3480156103db57600080fd5b506103e4610dee565b6040516103f191906142c2565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190614348565b610e80565b005b34801561042f57600080fd5b5061044a60048036038101906104459190614388565b610fc0565b60405161045791906143d7565b60405180910390f35b34801561046c57600080fd5b50610475610fde565b6040516104829190614451565b60405180910390f35b34801561049757600080fd5b506104a0611004565b6040516104ad919061447b565b60405180910390f35b3480156104c257600080fd5b506104cb61100e565b6040516104d89190614197565b60405180910390f35b3480156104ed57600080fd5b506104f6611034565b604051610503919061447b565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190614496565b61103a565b005b34801561054157600080fd5b5061055c600480360381019061055791906146ce565b6111a4565b005b34801561056a57600080fd5b5061058560048036038101906105809190614746565b611346565b60405161059291906143d7565b60405180910390f35b3480156105a757600080fd5b506105b061141f565b6040516105bd91906147b5565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614388565b611428565b6040516105fa91906143d7565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614496565b6114db565b60405161063791906143d7565b60405180910390f35b34801561064c57600080fd5b50610655611531565b6040516106629190614197565b60405180910390f35b34801561067757600080fd5b50610680611557565b60405161068d91906143d7565b60405180910390f35b3480156106a257600080fd5b506106ab61156a565b6040516106b891906143d7565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e39190614496565b61157d565b6040516106f591906143d7565b60405180910390f35b34801561070a57600080fd5b506107136115d3565b604051610720919061447b565b60405180910390f35b34801561073557600080fd5b50610750600480360381019061074b9190614496565b6115d9565b005b34801561075e57600080fd5b50610779600480360381019061077491906141fc565b611743565b005b34801561078757600080fd5b506107a2600480360381019061079d9190614496565b6117f7565b005b3480156107b057600080fd5b506107cb60048036038101906107c691906147d0565b611920565b005b3480156107d957600080fd5b506107e26119d4565b005b3480156107f057600080fd5b5061080b60048036038101906108069190614496565b611aba565b604051610818919061447b565b60405180910390f35b34801561082d57600080fd5b50610836611b02565b005b34801561084457600080fd5b5061085f600480360381019061085a9190614496565b611c5a565b005b34801561086d57600080fd5b50610876611dad565b604051610883919061481e565b60405180910390f35b34801561089857600080fd5b506108b360048036038101906108ae9190614348565b611dd3565b005b3480156108c157600080fd5b506108ca611ec5565b005b3480156108d857600080fd5b506108e1611fcd565b6040516108ee919061447b565b60405180910390f35b34801561090357600080fd5b5061090c611fd3565b6040516109199190614197565b60405180910390f35b34801561092e57600080fd5b50610937611ffd565b604051610944919061481e565b60405180910390f35b34801561095957600080fd5b50610962612023565b60405161096f919061447b565b60405180910390f35b34801561098457600080fd5b5061098d612029565b60405161099a91906142c2565b60405180910390f35b3480156109af57600080fd5b506109b86120bb565b005b3480156109c657600080fd5b506109e160048036038101906109dc9190614839565b612383565b005b3480156109ef57600080fd5b50610a0a6004803603810190610a059190614348565b612528565b005b348015610a1857600080fd5b50610a216125cd565b604051610a2e919061447b565b60405180910390f35b348015610a4357600080fd5b50610a4c6125d3565b604051610a59919061447b565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190614388565b6125d9565b604051610a9691906143d7565b60405180910390f35b348015610aab57600080fd5b50610ac66004803603810190610ac191906147d0565b6126a6565b005b348015610ad457600080fd5b50610aef6004803603810190610aea9190614388565b61275a565b604051610afc91906143d7565b60405180910390f35b348015610b1157600080fd5b50610b1a612778565b604051610b27919061447b565b60405180910390f35b348015610b3c57600080fd5b50610b4561277e565b604051610b52919061447b565b60405180910390f35b348015610b6757600080fd5b50610b826004803603810190610b7d9190614496565b612784565b604051610b8f91906143d7565b60405180910390f35b348015610ba457600080fd5b50610bbf6004803603810190610bba91906141fc565b6127a4565b005b348015610bcd57600080fd5b50610bd661288a565b604051610be391906143d7565b60405180910390f35b348015610bf857600080fd5b50610c136004803603810190610c0e91906148c6565b61289d565b604051610c20919061447b565b60405180910390f35b348015610c3557600080fd5b50610c3e612924565b604051610c4b919061447b565b60405180910390f35b348015610c6057600080fd5b50610c6961292a565b604051610c76919061447b565b60405180910390f35b348015610c8b57600080fd5b50610ca66004803603810190610ca19190614496565b612930565b005b348015610cb457600080fd5b50610cbd612af6565b604051610cca919061447b565b60405180910390f35b348015610cdf57600080fd5b50610cfa6004803603810190610cf591906141fc565b612afc565b005b348015610d0857600080fd5b50610d236004803603810190610d1e9190614496565b612c04565b005b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d53612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990614952565b60405180910390fd5b610deb81612d93565b50565b606060038054610dfd906149a1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e29906149a1565b8015610e765780601f10610e4b57610100808354040283529160200191610e76565b820191906000526020600020905b815481529060010190602001808311610e5957829003601f168201915b5050505050905090565b610e88612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90614952565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fb491906143d7565b60405180910390a25050565b6000610fd4610fcd612d8b565b8484612ecd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b611042612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c890614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1816467f4e41d8dd27500ca11dc471852ca93f9b624c4d8d4430b8c4fa6424fa816040516111999190614197565b60405180910390a150565b6111ac612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290614952565b60405180910390fd5b805182511461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690614a1e565b60405180910390fd5b60c8825111156112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb90614ab0565b60405180910390fd5b60005b82518110156113415760008382815181106112e5576112e4614ad0565b5b602002602001015190506000670de0b6b3a764000084848151811061130d5761130c614ad0565b5b602002602001015161131f9190614b2e565b905061132c338383613096565b5050808061133990614b88565b9150506112c7565b505050565b6000611353848484613329565b6114148461135f612d8b565b61140f8560405180606001604052806028815260200161596d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113c5612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b612ecd565b600190509392505050565b60006012905090565b60006114d1611435612d8b565b846114cc8560016000611446612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d90919063ffffffff16565b612ecd565b6001905092915050565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900460ff1681565b600960149054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6115e1612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faacebbe32c0dbd14817cfb53e3cc8be68c7e133928317145be50a0d86c224433816040516117389190614197565b60405180910390a150565b61174b612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190614952565b60405180910390fd5b670de0b6b3a7640000816117ee9190614b2e565b60108190555050565b6117ff612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614952565b60405180910390fd5b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2bfbf4d4860dc855748bb2cddfed0644fc3dcd75aad3625ff609ea9effa5ac89816040516119159190614197565b60405180910390a150565b611928612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae90614952565b60405180910390fd5b80601b60006101000a81548160ff02191690831515021790555050565b6119dc612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6290614952565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ab6573d6000803e3d6000fd5b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b0a612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614952565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611c62612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890614952565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611daa81612930565b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ddb612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190614952565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ecd612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5390614952565b60405180910390fd5b600960149054906101000a900460ff1615611f7657600080fd5b6001600960146101000a81548160ff02191690831515021790555043601f81905550426020819055507f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c760405160405180910390a1565b60205481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b606060048054612038906149a1565b80601f0160208091040260200160405190810160405280929190818152602001828054612064906149a1565b80156120b15780601f10612086576101008083540402835291602001916120b1565b820191906000526020600020905b81548152906001019060200180831161209457829003601f168201915b5050505050905090565b6120c3612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214990614952565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121af9190614197565b602060405180830381865afa1580156121cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f09190614be5565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330612245600a85613d5290919063ffffffff16565b6040518363ffffffff1660e01b8152600401612262929190614c12565b6020604051808303816000875af1158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614c50565b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161230593929190614c7d565b6020604051808303816000875af1158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190614c50565b507fc74e7a098395443390fac907684a14a51fd706a5c157ef4fbd6a08e2748e166681604051612378919061447b565b60405180910390a150565b61238b612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241190614952565b60405180910390fd5b85601381905550836014819055508460118190555082601281905550816015819055508060168190555061245b601654601154612d2d90919063ffffffff16565b600a81905550612478601554601354612d2d90919063ffffffff16565b600b819055506063600a541115801561249457506063600b5411155b6124d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ca90614d00565b60405180910390fd5b7ffb0d6f48717e74b9ad8ae84d152197402ac50bd6431ea28437926861021948ff60115460125460165460135460145460155460405161251896959493929190614d20565b60405180910390a1505050505050565b612530612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b690614952565b60405180910390fd5b6125c98282613dcc565b5050565b60155481565b60165481565b600061269c6125e6612d8b565b84612697856040518060600160405280602581526020016159bb6025913960016000612610612d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b612ecd565b6001905092915050565b6126ae612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461273d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273490614952565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600061276e612767612d8b565b8484613329565b6001905092915050565b60125481565b601f5481565b60196020528060005260406000206000915054906101000a900460ff1681565b6127ac612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461283b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283290614952565b60405180910390fd5b61012c811115612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287790614df3565b60405180910390fd5b8060218190555050565b600f60009054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b60145481565b612938612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129be90614952565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2d90614e85565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b612b04612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614952565b60405180910390fd5b670de0b6b3a764000081612ba79190614b2e565b90506064600254612bb89190614ed4565b811015612bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf190614f77565b60405180910390fd5b80600e8190555050565b612c0c612d8b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290614952565b60405180910390fd5b6001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4838d165dc25d6634e3e7c65e13a5db7fa3b845af65cb4816abcb94ce9d569e381604051612d229190614197565b60405180910390a150565b6000808284612d3c9190614f97565b905083811015612d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7890615039565b60405180910390fd5b8091505092915050565b600033905090565b6000601354601154612da59190614f97565b90506000601554601654612db99190614f97565b905060008183612dc99190614f97565b90506000612dec82606486612dde9190614b2e565b613e6d90919063ffffffff16565b90506000612e0f83606486612e019190614b2e565b613e6d90919063ffffffff16565b90506000612e3260648489612e249190614b2e565b613e6d90919063ffffffff16565b90506000612e556064848a612e479190614b2e565b613e6d90919063ffffffff16565b90506000821115612e8d57612e8c82600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b6000811115612ec357612ec281600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f33906150cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa29061515d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613089919061447b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fc906151ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316b90615281565b60405180910390fd5b61317f8383836140a4565b6131ea81604051806060016040528060268152602001615995602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613cee9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161331c919061447b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338f90615313565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fe906153a5565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134ab5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6134b457600080fd5b6000806000601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661355a57600960149054906101000a900460ff16613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090615411565b60405180910390fd5b5b600084036135765761356e86866000613096565b505050613ce9565b601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561361a5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613cda576000601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050801561377357601154935060125492506016549150601b60009054906101000a900460ff161561376e57602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136e79190614f97565b421015613729576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137209061547d565b60405180910390fd5b42601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613a3a565b601354935060145492506015549150601b60009054906101000a900460ff16156139c5576002601f546137a69190614f97565b43116137e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137de906154e9565b60405180910390fd5b601c543a111561382c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382390615555565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036138ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138a4906155c1565b60405180910390fd5b602154601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138fa9190614f97565b42101561393c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139339061547d565b60405180910390fd5b43601d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600f60009054906101000a900460ff1615613a395760006139e587611aba565b9050600e5486826139f69190614f97565b1115613a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2e90615653565b60405180910390fd5b505b5b6000613a4f8386612d2d90919063ffffffff16565b90506000613a5c30611aba565b905060006010548210159050808015613abf5750601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613c025760008290506000601354601154613adb9190614f97565b90506000601554601654613aef9190614f97565b905060008183613aff9190614f97565b90506000613b2282606486613b149190614b2e565b613e6d90919063ffffffff16565b90506000613b4583606486613b379190614b2e565b613e6d90919063ffffffff16565b90506000613b6860648489613b5a9190614b2e565b613e6d90919063ffffffff16565b90506000613b8b6064848a613b7d9190614b2e565b613e6d90919063ffffffff16565b90506000821115613bc357613bc282600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b6000811115613bf957613bf881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613eb7565b5b50505050505050505b6000613c2a6064613c1c868c613d5290919063ffffffff16565b613e6d90919063ffffffff16565b90506000613c546064613c468a8d613d5290919063ffffffff16565b613e6d90919063ffffffff16565b9050613c748183613c659190614f97565b8b6140a990919063ffffffff16565b9950613c818c3084613096565b6000811115613cd357613cb78c600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613096565b613ccc816002546140a990919063ffffffff16565b6002819055505b5050505050505b613ce5868686613096565b5050505b505050565b6000838311158290613d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d2d91906142c2565b60405180910390fd5b5060008385613d459190615673565b9050809150509392505050565b6000808303613d645760009050613dc6565b60008284613d729190614b2e565b9050828482613d819190614ed4565b14613dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613db890615719565b60405180910390fd5b809150505b92915050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613eaf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506140f3565b905092915050565b6000600267ffffffffffffffff811115613ed457613ed36144c8565b5b604051908082528060200260200182016040528015613f025781602001602082028036833780820191505090505b5090503081600081518110613f1a57613f19614ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613f8b57613f8a614ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ff230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685612ecd565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed17398460008486426040518663ffffffff1660e01b8152600401614056959493929190615832565b6000604051808303816000875af1158015614075573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061409e9190615923565b50505050565b505050565b60006140eb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613cee565b905092915050565b6000808311829061413a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161413191906142c2565b60405180910390fd5b50600083856141499190614ed4565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061418182614156565b9050919050565b61419181614176565b82525050565b60006020820190506141ac6000830184614188565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6141d9816141c6565b81146141e457600080fd5b50565b6000813590506141f6816141d0565b92915050565b600060208284031215614212576142116141bc565b5b6000614220848285016141e7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614263578082015181840152602081019050614248565b83811115614272576000848401525b50505050565b6000601f19601f8301169050919050565b600061429482614229565b61429e8185614234565b93506142ae818560208601614245565b6142b781614278565b840191505092915050565b600060208201905081810360008301526142dc8184614289565b905092915050565b6142ed81614176565b81146142f857600080fd5b50565b60008135905061430a816142e4565b92915050565b60008115159050919050565b61432581614310565b811461433057600080fd5b50565b6000813590506143428161431c565b92915050565b6000806040838503121561435f5761435e6141bc565b5b600061436d858286016142fb565b925050602061437e85828601614333565b9150509250929050565b6000806040838503121561439f5761439e6141bc565b5b60006143ad858286016142fb565b92505060206143be858286016141e7565b9150509250929050565b6143d181614310565b82525050565b60006020820190506143ec60008301846143c8565b92915050565b6000819050919050565b600061441761441261440d84614156565b6143f2565b614156565b9050919050565b6000614429826143fc565b9050919050565b600061443b8261441e565b9050919050565b61444b81614430565b82525050565b60006020820190506144666000830184614442565b92915050565b614475816141c6565b82525050565b6000602082019050614490600083018461446c565b92915050565b6000602082840312156144ac576144ab6141bc565b5b60006144ba848285016142fb565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61450082614278565b810181811067ffffffffffffffff8211171561451f5761451e6144c8565b5b80604052505050565b60006145326141b2565b905061453e82826144f7565b919050565b600067ffffffffffffffff82111561455e5761455d6144c8565b5b602082029050602081019050919050565b600080fd5b600061458761458284614543565b614528565b905080838252602082019050602084028301858111156145aa576145a961456f565b5b835b818110156145d357806145bf88826142fb565b8452602084019350506020810190506145ac565b5050509392505050565b600082601f8301126145f2576145f16144c3565b5b8135614602848260208601614574565b91505092915050565b600067ffffffffffffffff821115614626576146256144c8565b5b602082029050602081019050919050565b600061464a6146458461460b565b614528565b9050808382526020820190506020840283018581111561466d5761466c61456f565b5b835b81811015614696578061468288826141e7565b84526020840193505060208101905061466f565b5050509392505050565b600082601f8301126146b5576146b46144c3565b5b81356146c5848260208601614637565b91505092915050565b600080604083850312156146e5576146e46141bc565b5b600083013567ffffffffffffffff811115614703576147026141c1565b5b61470f858286016145dd565b925050602083013567ffffffffffffffff8111156147305761472f6141c1565b5b61473c858286016146a0565b9150509250929050565b60008060006060848603121561475f5761475e6141bc565b5b600061476d868287016142fb565b935050602061477e868287016142fb565b925050604061478f868287016141e7565b9150509250925092565b600060ff82169050919050565b6147af81614799565b82525050565b60006020820190506147ca60008301846147a6565b92915050565b6000602082840312156147e6576147e56141bc565b5b60006147f484828501614333565b91505092915050565b600061480882614156565b9050919050565b614818816147fd565b82525050565b6000602082019050614833600083018461480f565b92915050565b60008060008060008060c08789031215614856576148556141bc565b5b600061486489828a016141e7565b965050602061487589828a016141e7565b955050604061488689828a016141e7565b945050606061489789828a016141e7565b93505060806148a889828a016141e7565b92505060a06148b989828a016141e7565b9150509295509295509295565b600080604083850312156148dd576148dc6141bc565b5b60006148eb858286016142fb565b92505060206148fc858286016142fb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061493c602083614234565b915061494782614906565b602082019050919050565b6000602082019050818103600083015261496b8161492f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149b957607f821691505b6020821081036149cc576149cb614972565b5b50919050565b7f417272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614a08601e83614234565b9150614a13826149d2565b602082019050919050565b60006020820190508181036000830152614a37816149fb565b9050919050565b7f57616c6c657473206c697374206c656e677468206d757374206265203c3d203260008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602283614234565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b39826141c6565b9150614b44836141c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b7d57614b7c614aff565b5b828202905092915050565b6000614b93826141c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bc557614bc4614aff565b5b600182019050919050565b600081519050614bdf816141d0565b92915050565b600060208284031215614bfb57614bfa6141bc565b5b6000614c0984828501614bd0565b91505092915050565b6000604082019050614c276000830185614188565b614c34602083018461446c565b9392505050565b600081519050614c4a8161431c565b92915050565b600060208284031215614c6657614c656141bc565b5b6000614c7484828501614c3b565b91505092915050565b6000606082019050614c926000830186614188565b614c9f6020830185614188565b614cac604083018461446c565b949350505050565b7f2500000000000000000000000000000000000000000000000000000000000000600082015250565b6000614cea600183614234565b9150614cf582614cb4565b602082019050919050565b60006020820190508181036000830152614d1981614cdd565b9050919050565b600060c082019050614d35600083018961446c565b614d42602083018861446c565b614d4f604083018761446c565b614d5c606083018661446c565b614d69608083018561446c565b614d7660a083018461446c565b979650505050505050565b7f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d60008201527f696e757465730000000000000000000000000000000000000000000000000000602082015250565b6000614ddd602683614234565b9150614de882614d81565b604082019050919050565b60006020820190508181036000830152614e0c81614dd0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e6f602683614234565b9150614e7a82614e13565b604082019050919050565b60006020820190508181036000830152614e9e81614e62565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614edf826141c6565b9150614eea836141c6565b925082614efa57614ef9614ea5565b5b828204905092915050565b7f6d61782077616c6c65742063616e6e6f742062652073657420746f206c65737360008201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b6000614f61602883614234565b9150614f6c82614f05565b604082019050919050565b60006020820190508181036000830152614f9081614f54565b9050919050565b6000614fa2826141c6565b9150614fad836141c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614fe257614fe1614aff565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615023601b83614234565b915061502e82614fed565b602082019050919050565b6000602082019050818103600083015261505281615016565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150b5602483614234565b91506150c082615059565b604082019050919050565b600060208201905081810360008301526150e4816150a8565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615147602283614234565b9150615152826150eb565b604082019050919050565b600060208201905081810360008301526151768161513a565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151d9602583614234565b91506151e48261517d565b604082019050919050565b60006020820190508181036000830152615208816151cc565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061526b602383614234565b91506152768261520f565b604082019050919050565b6000602082019050818103600083015261529a8161525e565b9050919050565b7f4942455032303a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006152fd602683614234565b9150615308826152a1565b604082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b7f4942455032303a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061538f602483614234565b915061539a82615333565b604082019050919050565b600060208201905081810360008301526153be81615382565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e20656e61626c6564600082015250565b60006153fb602083614234565b9150615406826153c5565b602082019050919050565b6000602082019050818103600083015261542a816153ee565b9050919050565b7f636f6f6c646f776e20706572696f642061637469766500000000000000000000600082015250565b6000615467601683614234565b915061547282615431565b602082019050919050565b600060208201905081810360008301526154968161545a565b9050919050565b7f796f75207368616c6c206e6f7420706173730000000000000000000000000000600082015250565b60006154d3601283614234565b91506154de8261549d565b602082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f4761732070726963652065786365656473206c696d69742e0000000000000000600082015250565b600061553f601883614234565b915061554a82615509565b602082019050919050565b6000602082019050818103600083015261556e81615532565b9050919050565b7f546f6f206d616e7920545820696e20626c6f636b000000000000000000000000600082015250565b60006155ab601483614234565b91506155b682615575565b602082019050919050565b600060208201905081810360008301526155da8161559e565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b600061563d602483614234565b9150615648826155e1565b604082019050919050565b6000602082019050818103600083015261566c81615630565b9050919050565b600061567e826141c6565b9150615689836141c6565b92508282101561569c5761569b614aff565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615703602183614234565b915061570e826156a7565b604082019050919050565b60006020820190508181036000830152615732816156f6565b9050919050565b6000819050919050565b600061575e61575961575484615739565b6143f2565b6141c6565b9050919050565b61576e81615743565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6157a981614176565b82525050565b60006157bb83836157a0565b60208301905092915050565b6000602082019050919050565b60006157df82615774565b6157e9818561577f565b93506157f483615790565b8060005b8381101561582557815161580c88826157af565b9750615817836157c7565b9250506001810190506157f8565b5085935050505092915050565b600060a082019050615847600083018861446c565b6158546020830187615765565b818103604083015261586681866157d4565b90506158756060830185614188565b615882608083018461446c565b9695505050505050565b600061589f61589a8461460b565b614528565b905080838252602082019050602084028301858111156158c2576158c161456f565b5b835b818110156158eb57806158d78882614bd0565b8452602084019350506020810190506158c4565b5050509392505050565b600082601f83011261590a576159096144c3565b5b815161591a84826020860161588c565b91505092915050565b600060208284031215615939576159386141bc565b5b600082015167ffffffffffffffff811115615957576159566141c1565b5b615963848285016158f5565b9150509291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205b87218f65eb9b5a7cbbd9df0d2d9f1bf7e21d94ee02b607d6ed125c12693a2864736f6c634300080d0033

Deployed Bytecode Sourcemap

15400:14089:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15570:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27904:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3283:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20019:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4197:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15485:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3604:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15641:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16959:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19820:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28925:561;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4374:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19225:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4727:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23298:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15535:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16567:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15714;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23164:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16188:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19607:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21722:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20341:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20635:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21274:146;;;;;;;;;;;;;:::i;:::-;;3720:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7175:148;;;;;;;;;;;;;:::i;:::-;;22203:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15911:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20480:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19363:232;;;;;;;;;;;;;:::i;:::-;;16897:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6961:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15959:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3391:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21428:286;;;;;;;;;;;;;:::i;:::-;;22423:733;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21850:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16258:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16289:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4953:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20742:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3855:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16155:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16846;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16428:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20853:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16034:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4038:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16076:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16226:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7331:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16003:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21039:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20208:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15570:64;;;;;;;;;;;;;:::o;27904:105::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27983:18:::1;27994:6;27983:10;:18::i;:::-;27904:105:::0;:::o;3283:100::-;3337:13;3370:5;3363:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:100;:::o;20019:181::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20134:8:::1;20103:19;:28;20123:7;20103:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20174:7;20158:34;;;20183:8;20158:34;;;;;;:::i;:::-;;;;;;;;20019:181:::0;;:::o;4197:169::-;4280:4;4297:39;4306:12;:10;:12::i;:::-;4320:7;4329:6;4297:8;:39::i;:::-;4354:4;4347:11;;4197:169;;;;:::o;15485:41::-;;;;;;;;;;;;;:::o;3604:108::-;3665:7;3692:12;;3685:19;;3604:108;:::o;15641:63::-;;;;;;;;;;;;;:::o;16959:32::-;;;;:::o;19820:187::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19918:4:::1;19888:19;:27;19908:6;19888:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19953:6;19933:9;;:27;;;;;;;;;;;;;;;;;;19976:23;19992:6;19976:23;;;;;;:::i;:::-;;;;;;;;19820:187:::0;:::o;28925:561::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29097:6:::1;:13;29072:14;:21;:38;29064:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29189:3;29164:14;:21;:28;;29156:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;29247:9;29242:237;29266:14;:21;29262:1;:25;29242:237;;;29309:14;29326;29341:1;29326:17;;;;;;;;:::i;:::-;;;;;;;;29309:34;;29358:21;29395:6;29382;29389:1;29382:9;;;;;;;;:::i;:::-;;;;;;;;:20;;;;:::i;:::-;29358:44;;29417:50;29433:10;29445:6;29453:13;29417:15;:50::i;:::-;29294:185;;29289:3;;;;;:::i;:::-;;;;29242:237;;;;28925:561:::0;;:::o;4374:345::-;4487:4;4504:36;4514:6;4522:9;4533:6;4504:9;:36::i;:::-;4551:138;4560:6;4568:12;:10;:12::i;:::-;4582:106;4620:6;4582:106;;;;;;;;;;;;;;;;;:11;:19;4594:6;4582:19;;;;;;;;;;;;;;;:33;4602:12;:10;:12::i;:::-;4582:33;;;;;;;;;;;;;;;;:37;;:106;;;;;:::i;:::-;4551:8;:138::i;:::-;4707:4;4700:11;;4374:345;;;;;:::o;19225:93::-;19283:5;19308:2;19301:9;;19225:93;:::o;4727:218::-;4815:4;4832:83;4841:12;:10;:12::i;:::-;4855:7;4864:50;4903:10;4864:11;:25;4876:12;:10;:12::i;:::-;4864:25;;;;;;;;;;;;;;;:34;4890:7;4864:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4832:8;:83::i;:::-;4933:4;4926:11;;4727:218;;;;:::o;23298:100::-;23351:4;23375:6;:15;23382:7;23375:15;;;;;;;;;;;;;;;;;;;;;;;;;23368:22;;23298:100;;;:::o;15535:28::-;;;;;;;;;;;;;:::o;16567:34::-;;;;;;;;;;;;;:::o;15714:::-;;;;;;;;;;;;;:::o;23164:126::-;23230:4;23254:19;:28;23274:7;23254:28;;;;;;;;;;;;;;;;;;;;;;;;;23247:35;;23164:126;;;:::o;16188:31::-;;;;:::o;19607:205::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19711:4:::1;19681:19;:27;19701:6;19681:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19752:6;19726:15;;:33;;;;;;;;;;;;;;;;;;19775:29;19797:6;19775:29;;;;;;:::i;:::-;;;;;;;;19607:205:::0;:::o;21722:120::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21827:6:::1;21817;:17;;;;:::i;:::-;21796:18;:38;;;;21722:120:::0;:::o;20341:131::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20423:5:::1;20405:6;:15;20412:7;20405:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;20444:20;20456:7;20444:20;;;;;;:::i;:::-;;;;;;;;20341:131:::0;:::o;20635:99::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20721:5:::1;20704:14;;:22;;;;;;;;;;;;;;;;;;20635:99:::0;:::o;21274:146::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21321:17:::1;21341:21;21321:41;;21381:10;21373:28;;:39;21402:9;21373:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21310:110;21274:146::o:0;3720:127::-;3794:7;3821:9;:18;3831:7;3821:18;;;;;;;;;;;;;;;;3814:25;;3720:127;;;:::o;7175:148::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7282:1:::1;7245:40;;7266:6;;;;;;;;;;;7245:40;;;;;;;;;;;;7313:1;7296:6;;:19;;;;;;;;;;;;;;;;;;7175:148::o:0;22203:212::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22304:4:::1;22272:19;:29;22292:8;22272:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22365:4;22319:33;:43;22353:8;22319:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;22380:27;22398:8;22380:17;:27::i;:::-;22203:212:::0;:::o;15911:38::-;;;;;;;;;;;;;:::o;20480:147::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20613:6:::1;20569:33;:41;20603:6;20569:41;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;20480:147:::0;;:::o;19363:232::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19427:14:::1;;;;;;;;;;;19426:15;19418:24;;;::::0;::::1;;19470:4;19453:14;;:21;;;;;;;;;;;;;;;;;;19499:12;19485:11;:26;;;;19540:15;19522;:33;;;;19571:16;;;;;;;;;;19363:232::o:0;16897:30::-;;;;:::o;6961:79::-;6999:7;7026:6;;;;;;;;;;;7019:13;;6961:79;:::o;15959:32::-;;;;;;;;;;;;;:::o;16116:::-;;;;:::o;3391:104::-;3447:13;3480:7;3473:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3391:104;:::o;21428:286::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21477:17:::1;21504:3;;;;;;;;;;;21497:21;;;21527:4;21497:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21477:56;;21551:3;;;;;;;;;;;21544:19;;;21572:4;21579:17;21593:2;21579:9;:13;;:17;;;;:::i;:::-;21544:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21615:3;;;;;;;;;;;21608:24;;;21641:4;21647:10;21658:9;21608:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21684:22;21696:9;21684:22;;;;;;:::i;:::-;;;;;;;;21466:248;21428:286::o:0;22423:733::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22630:12:::1;22611:16;:31;;;;22666:7;22653:10;:20;;;;22704:13;22684:17;:33;;;;22742:8;22728:11;:22;;;;22773:6;22761:9;:18;;;;22803:7;22790:10;:20;;;;22839:33;22861:10;;22839:17;;:21;;:33;;;;:::i;:::-;22823:13;:49;;;;22898:31;22919:9;;22898:16;;:20;;:31;;;;:::i;:::-;22883:12;:46;;;;22980:2;22963:13;;:19;;:41;;;;;23002:2;22986:12;;:18;;22963:41;22955:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;23028:120;23039:17;;23058:11;;23071:10;;23083:16;;23126:10;;23138:9;;23028:120;;;;;;;;;;;:::i;:::-;;;;;;;;22423:733:::0;;;;;;:::o;21850:140::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21941:41:::1;21970:4;21976:5;21941:28;:41::i;:::-;21850:140:::0;;:::o;16258:24::-;;;;:::o;16289:25::-;;;;:::o;4953:286::-;5046:4;5063:146;5072:12;:10;:12::i;:::-;5086:7;5095:113;5134:15;5095:113;;;;;;;;;;;;;;;;;:11;:25;5107:12;:10;:12::i;:::-;5095:25;;;;;;;;;;;;;;;:34;5121:7;5095:34;;;;;;;;;;;;;;;;:38;;:113;;;;;:::i;:::-;5063:8;:146::i;:::-;5227:4;5220:11;;4953:286;;;;:::o;20742:103::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20832:5:::1;20813:16;;:24;;;;;;;;;;;;;;;;;;20742:103:::0;:::o;3855:175::-;3941:4;3958:42;3968:12;:10;:12::i;:::-;3982:9;3993:6;3958:9;:42::i;:::-;4018:4;4011:11;;3855:175;;;;:::o;16155:26::-;;;;:::o;16846:::-;;;;:::o;16428:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;20853:174::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20941:3:::1;20932:5;:12;;20924:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;21014:5;20998:13;:21;;;;20853:174:::0;:::o;16034:35::-;;;;;;;;;;;;;:::o;4038:151::-;4127:7;4154:11;:18;4166:5;4154:18;;;;;;;;;;;;;;;:27;4173:7;4154:27;;;;;;;;;;;;;;;;4147:34;;4038:151;;;;:::o;16076:33::-;;;;:::o;16226:25::-;;;;:::o;7331:244::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7440:1:::1;7420:22;;:8;:22;;::::0;7412:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7530:8;7501:38;;7522:6;;;;;;;;;;;7501:38;;;;;;;;;;;;7559:8;7550:6;;:17;;;;;;;;;;;;;;;;;;7331:244:::0;:::o;16003:24::-;;;;:::o;21039:218::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21123:6:::1;21114:5;:16;;;;:::i;:::-;21106:24;;21173:3;21158:12;;:18;;;;:::i;:::-;21149:5;:27;;21141:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21244:5;21232:9;:17;;;;21039:218:::0;:::o;20208:125::-;7098:12;:10;:12::i;:::-;7088:22;;:6;;;;;;;;;;;:22;;;7080:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20287:4:::1;20269:6;:15;20276:7;20269:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20307:18;20317:7;20307:18;;;;;;:::i;:::-;;;;;;;;20208:125:::0;:::o;517:179::-;575:7;595:9;611:1;607;:5;;;;:::i;:::-;595:17;;636:1;631;:6;;623:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;687:1;680:8;;;517:179;;;;:::o;141:98::-;194:7;221:10;214:17;;141:98;:::o;28115:802::-;28180:26;28227:16;;28209:17;;:34;;;;:::i;:::-;28180:63;;28254:20;28290:9;;28277:10;;:22;;;;:::i;:::-;28254:45;;28310:17;28349:12;28330:18;:31;;;;:::i;:::-;28310:51;;28372:21;28396:39;28425:9;28416:3;28397:18;:22;;;;:::i;:::-;28396:28;;:39;;;;:::i;:::-;28372:63;;28469:15;28487:33;28510:9;28501:3;28488:12;:16;;;;:::i;:::-;28487:22;;:33;;;;:::i;:::-;28469:51;;28556:23;28582:41;28619:3;28600:13;28583:14;:30;;;;:::i;:::-;28582:36;;:41;;;;:::i;:::-;28556:67;;28634:17;28654:35;28685:3;28672:7;28655:14;:24;;;;:::i;:::-;28654:30;;:35;;;;:::i;:::-;28634:55;;28724:1;28706:15;:19;28702:102;;;28742:50;28759:15;28776;;;;;;;;;;;28742:16;:50::i;:::-;28702:102;28840:1;28828:9;:13;28824:84;;;28858:38;28875:9;28886;;;;;;;;;;;28858:16;:38::i;:::-;28824:84;28167:750;;;;;;;28115:802;:::o;6179:346::-;6298:1;6281:19;;:5;:19;;;6273:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6379:1;6360:21;;:7;:21;;;6352:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6463:6;6433:11;:18;6445:5;6433:18;;;;;;;;;;;;;;;:27;6452:7;6433:27;;;;;;;;;;;;;;;:36;;;;6501:7;6485:32;;6494:5;6485:32;;;6510:6;6485:32;;;;;;:::i;:::-;;;;;;;;6179:346;;;:::o;5247:538::-;5371:1;5353:20;;:6;:20;;;5345:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5455:1;5434:23;;:9;:23;;;5426:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5510:47;5531:6;5539:9;5550:6;5510:20;:47::i;:::-;5590:70;5612:6;5590:70;;;;;;;;;;;;;;;;;:9;:17;5600:6;5590:17;;;;;;;;;;;;;;;;:21;;:70;;;;;:::i;:::-;5570:9;:17;5580:6;5570:17;;;;;;;;;;;;;;;:90;;;;5694:32;5719:6;5694:9;:20;5704:9;5694:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5671:9;:20;5681:9;5671:20;;;;;;;;;;;;;;;:55;;;;5759:9;5742:35;;5751:6;5742:35;;;5770:6;5742:35;;;;;;:::i;:::-;;;;;;;;5247:538;;;:::o;23406:4013::-;23522:1;23506:18;;:4;:18;;;23498:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;23600:1;23586:16;;:2;:16;;;23578:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23663:6;:12;23670:4;23663:12;;;;;;;;;;;;;;;;;;;;;;;;;23662:13;:28;;;;;23680:6;:10;23687:2;23680:10;;;;;;;;;;;;;;;;;;;;;;;;;23679:11;23662:28;23654:37;;;;;;23704:21;23736:15;23762:14;23794:33;:39;23828:4;23794:39;;;;;;;;;;;;;;;;;;;;;;;;;23789:142;;23858:14;;;;;;;;;;;23850:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23789:142;23957:1;23947:6;:11;23943:3424;;23975:28;23991:4;23997:2;24001:1;23975:15;:28::i;:::-;24018:7;;;;;23943:3424;24081:19;:25;24101:4;24081:25;;;;;;;;;;;;;;;;;;;;;;;;;24080:26;:54;;;;;24111:19;:23;24131:2;24111:23;;;;;;;;;;;;;;;;;;;;;;;;;24110:24;24080:54;24062:3305;;;24161:14;24178:25;:29;24204:2;24178:29;;;;;;;;;;;;;;;;;;;;;;;;;24161:46;;24226:9;24222:1494;;;24272:17;;24256:33;;24318:11;;24308:21;;24357:10;;24348:19;;24392:14;;;;;;;;;;;24388:269;;;24496:13;;24454:28;:39;24483:9;24454:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;24435:15;:74;;24427:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;24622:15;24580:28;:39;24609:9;24580:39;;;;;;;;;;;;;;;:57;;;;24388:269;24222:1494;;;24741:16;;24725:32;;24786:10;;24776:20;;24824:9;;24815:18;;24858:14;;;;;;;;;;;24854:598;;;24930:1;24916:11;;:15;;;;:::i;:::-;24901:12;:30;24893:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24995:13;;24980:11;:28;;24972:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25102:12;25063:24;:35;25088:9;25063:35;;;;;;;;;;;;;;;;:51;25055:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25226:13;;25184:28;:39;25213:9;25184:39;;;;;;;;;;;;;;;;:55;;;;:::i;:::-;25165:15;:74;;25157:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;25348:12;25310:24;:35;25335:9;25310:35;;;;;;;;;;;;;;;:50;;;;25421:15;25379:28;:39;25408:9;25379:39;;;;;;;;;;;;;;;:57;;;;24854:598;25472:16;;;;;;;;;;;25468:233;;;25505:32;25540:13;25550:2;25540:9;:13::i;:::-;25505:48;;25613:9;;25603:6;25576:24;:33;;;;:::i;:::-;:46;;25568:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25490:211;25468:233;24222:1494;25732:17;25752:25;25770:6;25752:13;:17;;:25;;;;:::i;:::-;25732:45;;25794:28;25825:24;25843:4;25825:9;:24::i;:::-;25794:55;;25866:12;25905:18;;25881:20;:42;;25866:57;;25944:7;:43;;;;;25956:25;:31;25982:4;25956:31;;;;;;;;;;;;;;;;;;;;;;;;;25955:32;25944:43;25940:991;;;26008:22;26031:20;26008:43;;26070:26;26117:16;;26099:17;;:34;;;;:::i;:::-;26070:63;;26152:20;26188:9;;26175:10;;:22;;;;:::i;:::-;26152:45;;26216:16;26254:12;26235:18;:31;;;;:::i;:::-;26216:50;;26285:21;26309:38;26338:8;26329:3;26310:18;:22;;;;:::i;:::-;26309:28;;:38;;;;:::i;:::-;26285:62;;26389:15;26407:32;26430:8;26421:3;26408:12;:16;;;;:::i;:::-;26407:22;;:32;;;;:::i;:::-;26389:50;;26483:23;26509:41;26546:3;26527:13;26510:14;:30;;;;:::i;:::-;26509:36;;:41;;;;:::i;:::-;26483:67;;26569:17;26589:35;26620:3;26607:7;26590:14;:24;;;;:::i;:::-;26589:30;;:35;;;;:::i;:::-;26569:55;;26667:1;26649:15;:19;26645:118;;;26693:50;26710:15;26727;;;;;;;;;;;26693:16;:50::i;:::-;26645:118;26815:1;26803:9;:13;26799:102;;;26841:38;26858:9;26869;;;;;;;;;;;26841:16;:38::i;:::-;26799:102;25989:942;;;;;;;;25940:991;26947:12;26962:30;26988:3;26962:21;26973:9;26962:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;26947:45;;27007:18;27028:28;27052:3;27028:19;27039:7;27028:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;27007:49;;27082:29;27100:10;27093:4;:17;;;;:::i;:::-;27082:6;:10;;:29;;;;:::i;:::-;27073:38;;27128:42;27144:4;27158;27165;27128:15;:42::i;:::-;27204:1;27191:10;:14;27187:156;;;27226:39;27242:4;27248;;;;;;;;;;;27254:10;27226:15;:39::i;:::-;27299:28;27316:10;27299:12;;:16;;:28;;;;:::i;:::-;27284:12;:43;;;;27187:156;24146:3221;;;;;;24062:3305;27377:33;27393:4;27399:2;27403:6;27377:15;:33::i;:::-;23485:3934;;;23406:4013;;;;:::o;848:190::-;934:7;967:1;962;:6;;970:12;954:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;994:9;1010:1;1006;:5;;;;:::i;:::-;994:17;;1029:1;1022:8;;;848:190;;;;;:::o;1046:248::-;1104:7;1133:1;1128;:6;1124:47;;1158:1;1151:8;;;;1124:47;1183:9;1199:1;1195;:5;;;;:::i;:::-;1183:17;;1228:1;1223;1219;:5;;;;:::i;:::-;:10;1211:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1285:1;1278:8;;;1046:248;;;;;:::o;21998:188::-;22115:5;22081:25;:31;22107:4;22081:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22172:5;22138:40;;22166:4;22138:40;;;;;;;;;;;;21998:188;;:::o;1302:132::-;1360:7;1387:39;1391:1;1394;1387:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1380:46;;1302:132;;;;:::o;27429:467::-;27513:21;27551:1;27537:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27513:40;;27582:4;27564;27569:1;27564:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27608:3;;;;;;;;;;;27598:4;27603:1;27598:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;;;27622:62;27639:4;27654:15;;;;;;;;;;;27672:11;27622:8;:62::i;:::-;27695:15;;;;;;;;;;;:40;;;27750:11;27776:1;27820:4;27839:8;27862:15;27695:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27502:394;27429:467;;:::o;6533:91::-;;;;:::o;704:136::-;762:7;789:43;793:1;796;789:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;782:50;;704:136;;;;:::o;1442:189::-;1528:7;1560:1;1556;:5;1563:12;1548:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1587:9;1603:1;1599;:5;;;;:::i;:::-;1587:17;;1622:1;1615:8;;;1442:189;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:75::-;626:6;659:2;653:9;643:19;;593:75;:::o;674:117::-;783:1;780;773:12;797:117;906:1;903;896:12;920:77;957:7;986:5;975:16;;920:77;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:99::-;1663:6;1697:5;1691:12;1681:22;;1611:99;;;:::o;1716:169::-;1800:11;1834:6;1829:3;1822:19;1874:4;1869:3;1865:14;1850:29;;1716:169;;;;:::o;1891:307::-;1959:1;1969:113;1983:6;1980:1;1977:13;1969:113;;;2068:1;2063:3;2059:11;2053:18;2049:1;2044:3;2040:11;2033:39;2005:2;2002:1;1998:10;1993:15;;1969:113;;;2100:6;2097:1;2094:13;2091:101;;;2180:1;2171:6;2166:3;2162:16;2155:27;2091:101;1940:258;1891:307;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:364::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:52;2608:6;2603:3;2596:4;2589:5;2585:16;2563:52;:::i;:::-;2640:29;2662:6;2640:29;:::i;:::-;2635:3;2631:39;2624:46;;2404:272;2312:364;;;;:::o;2682:313::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2882:9;2876:4;2872:20;2868:1;2857:9;2853:17;2846:47;2910:78;2983:4;2974:6;2910:78;:::i;:::-;2902:86;;2682:313;;;;:::o;3001:122::-;3074:24;3092:5;3074:24;:::i;:::-;3067:5;3064:35;3054:63;;3113:1;3110;3103:12;3054:63;3001:122;:::o;3129:139::-;3175:5;3213:6;3200:20;3191:29;;3229:33;3256:5;3229:33;:::i;:::-;3129:139;;;;:::o;3274:90::-;3308:7;3351:5;3344:13;3337:21;3326:32;;3274:90;;;:::o;3370:116::-;3440:21;3455:5;3440:21;:::i;:::-;3433:5;3430:32;3420:60;;3476:1;3473;3466:12;3420:60;3370:116;:::o;3492:133::-;3535:5;3573:6;3560:20;3551:29;;3589:30;3613:5;3589:30;:::i;:::-;3492:133;;;;:::o;3631:468::-;3696:6;3704;3753:2;3741:9;3732:7;3728:23;3724:32;3721:119;;;3759:79;;:::i;:::-;3721:119;3879:1;3904:53;3949:7;3940:6;3929:9;3925:22;3904:53;:::i;:::-;3894:63;;3850:117;4006:2;4032:50;4074:7;4065:6;4054:9;4050:22;4032:50;:::i;:::-;4022:60;;3977:115;3631:468;;;;;:::o;4105:474::-;4173:6;4181;4230:2;4218:9;4209:7;4205:23;4201:32;4198:119;;;4236:79;;:::i;:::-;4198:119;4356:1;4381:53;4426:7;4417:6;4406:9;4402:22;4381:53;:::i;:::-;4371:63;;4327:117;4483:2;4509:53;4554:7;4545:6;4534:9;4530:22;4509:53;:::i;:::-;4499:63;;4454:118;4105:474;;;;;:::o;4585:109::-;4666:21;4681:5;4666:21;:::i;:::-;4661:3;4654:34;4585:109;;:::o;4700:210::-;4787:4;4825:2;4814:9;4810:18;4802:26;;4838:65;4900:1;4889:9;4885:17;4876:6;4838:65;:::i;:::-;4700:210;;;;:::o;4916:60::-;4944:3;4965:5;4958:12;;4916:60;;;:::o;4982:142::-;5032:9;5065:53;5083:34;5092:24;5110:5;5092:24;:::i;:::-;5083:34;:::i;:::-;5065:53;:::i;:::-;5052:66;;4982:142;;;:::o;5130:126::-;5180:9;5213:37;5244:5;5213:37;:::i;:::-;5200:50;;5130:126;;;:::o;5262:153::-;5339:9;5372:37;5403:5;5372:37;:::i;:::-;5359:50;;5262:153;;;:::o;5421:185::-;5535:64;5593:5;5535:64;:::i;:::-;5530:3;5523:77;5421:185;;:::o;5612:276::-;5732:4;5770:2;5759:9;5755:18;5747:26;;5783:98;5878:1;5867:9;5863:17;5854:6;5783:98;:::i;:::-;5612:276;;;;:::o;5894:118::-;5981:24;5999:5;5981:24;:::i;:::-;5976:3;5969:37;5894:118;;:::o;6018:222::-;6111:4;6149:2;6138:9;6134:18;6126:26;;6162:71;6230:1;6219:9;6215:17;6206:6;6162:71;:::i;:::-;6018:222;;;;:::o;6246:329::-;6305:6;6354:2;6342:9;6333:7;6329:23;6325:32;6322:119;;;6360:79;;:::i;:::-;6322:119;6480:1;6505:53;6550:7;6541:6;6530:9;6526:22;6505:53;:::i;:::-;6495:63;;6451:117;6246:329;;;;:::o;6581:117::-;6690:1;6687;6680:12;6704:180;6752:77;6749:1;6742:88;6849:4;6846:1;6839:15;6873:4;6870:1;6863:15;6890:281;6973:27;6995:4;6973:27;:::i;:::-;6965:6;6961:40;7103:6;7091:10;7088:22;7067:18;7055:10;7052:34;7049:62;7046:88;;;7114:18;;:::i;:::-;7046:88;7154:10;7150:2;7143:22;6933:238;6890:281;;:::o;7177:129::-;7211:6;7238:20;;:::i;:::-;7228:30;;7267:33;7295:4;7287:6;7267:33;:::i;:::-;7177:129;;;:::o;7312:311::-;7389:4;7479:18;7471:6;7468:30;7465:56;;;7501:18;;:::i;:::-;7465:56;7551:4;7543:6;7539:17;7531:25;;7611:4;7605;7601:15;7593:23;;7312:311;;;:::o;7629:117::-;7738:1;7735;7728:12;7769:710;7865:5;7890:81;7906:64;7963:6;7906:64;:::i;:::-;7890:81;:::i;:::-;7881:90;;7991:5;8020:6;8013:5;8006:21;8054:4;8047:5;8043:16;8036:23;;8107:4;8099:6;8095:17;8087:6;8083:30;8136:3;8128:6;8125:15;8122:122;;;8155:79;;:::i;:::-;8122:122;8270:6;8253:220;8287:6;8282:3;8279:15;8253:220;;;8362:3;8391:37;8424:3;8412:10;8391:37;:::i;:::-;8386:3;8379:50;8458:4;8453:3;8449:14;8442:21;;8329:144;8313:4;8308:3;8304:14;8297:21;;8253:220;;;8257:21;7871:608;;7769:710;;;;;:::o;8502:370::-;8573:5;8622:3;8615:4;8607:6;8603:17;8599:27;8589:122;;8630:79;;:::i;:::-;8589:122;8747:6;8734:20;8772:94;8862:3;8854:6;8847:4;8839:6;8835:17;8772:94;:::i;:::-;8763:103;;8579:293;8502:370;;;;:::o;8878:311::-;8955:4;9045:18;9037:6;9034:30;9031:56;;;9067:18;;:::i;:::-;9031:56;9117:4;9109:6;9105:17;9097:25;;9177:4;9171;9167:15;9159:23;;8878:311;;;:::o;9212:710::-;9308:5;9333:81;9349:64;9406:6;9349:64;:::i;:::-;9333:81;:::i;:::-;9324:90;;9434:5;9463:6;9456:5;9449:21;9497:4;9490:5;9486:16;9479:23;;9550:4;9542:6;9538:17;9530:6;9526:30;9579:3;9571:6;9568:15;9565:122;;;9598:79;;:::i;:::-;9565:122;9713:6;9696:220;9730:6;9725:3;9722:15;9696:220;;;9805:3;9834:37;9867:3;9855:10;9834:37;:::i;:::-;9829:3;9822:50;9901:4;9896:3;9892:14;9885:21;;9772:144;9756:4;9751:3;9747:14;9740:21;;9696:220;;;9700:21;9314:608;;9212:710;;;;;:::o;9945:370::-;10016:5;10065:3;10058:4;10050:6;10046:17;10042:27;10032:122;;10073:79;;:::i;:::-;10032:122;10190:6;10177:20;10215:94;10305:3;10297:6;10290:4;10282:6;10278:17;10215:94;:::i;:::-;10206:103;;10022:293;9945:370;;;;:::o;10321:894::-;10439:6;10447;10496:2;10484:9;10475:7;10471:23;10467:32;10464:119;;;10502:79;;:::i;:::-;10464:119;10650:1;10639:9;10635:17;10622:31;10680:18;10672:6;10669:30;10666:117;;;10702:79;;:::i;:::-;10666:117;10807:78;10877:7;10868:6;10857:9;10853:22;10807:78;:::i;:::-;10797:88;;10593:302;10962:2;10951:9;10947:18;10934:32;10993:18;10985:6;10982:30;10979:117;;;11015:79;;:::i;:::-;10979:117;11120:78;11190:7;11181:6;11170:9;11166:22;11120:78;:::i;:::-;11110:88;;10905:303;10321:894;;;;;:::o;11221:619::-;11298:6;11306;11314;11363:2;11351:9;11342:7;11338:23;11334:32;11331:119;;;11369:79;;:::i;:::-;11331:119;11489:1;11514:53;11559:7;11550:6;11539:9;11535:22;11514:53;:::i;:::-;11504:63;;11460:117;11616:2;11642:53;11687:7;11678:6;11667:9;11663:22;11642:53;:::i;:::-;11632:63;;11587:118;11744:2;11770:53;11815:7;11806:6;11795:9;11791:22;11770:53;:::i;:::-;11760:63;;11715:118;11221:619;;;;;:::o;11846:86::-;11881:7;11921:4;11914:5;11910:16;11899:27;;11846:86;;;:::o;11938:112::-;12021:22;12037:5;12021:22;:::i;:::-;12016:3;12009:35;11938:112;;:::o;12056:214::-;12145:4;12183:2;12172:9;12168:18;12160:26;;12196:67;12260:1;12249:9;12245:17;12236:6;12196:67;:::i;:::-;12056:214;;;;:::o;12276:323::-;12332:6;12381:2;12369:9;12360:7;12356:23;12352:32;12349:119;;;12387:79;;:::i;:::-;12349:119;12507:1;12532:50;12574:7;12565:6;12554:9;12550:22;12532:50;:::i;:::-;12522:60;;12478:114;12276:323;;;;:::o;12605:104::-;12650:7;12679:24;12697:5;12679:24;:::i;:::-;12668:35;;12605:104;;;:::o;12715:142::-;12818:32;12844:5;12818:32;:::i;:::-;12813:3;12806:45;12715:142;;:::o;12863:254::-;12972:4;13010:2;12999:9;12995:18;12987:26;;13023:87;13107:1;13096:9;13092:17;13083:6;13023:87;:::i;:::-;12863:254;;;;:::o;13123:1057::-;13227:6;13235;13243;13251;13259;13267;13316:3;13304:9;13295:7;13291:23;13287:33;13284:120;;;13323:79;;:::i;:::-;13284:120;13443:1;13468:53;13513:7;13504:6;13493:9;13489:22;13468:53;:::i;:::-;13458:63;;13414:117;13570:2;13596:53;13641:7;13632:6;13621:9;13617:22;13596:53;:::i;:::-;13586:63;;13541:118;13698:2;13724:53;13769:7;13760:6;13749:9;13745:22;13724:53;:::i;:::-;13714:63;;13669:118;13826:2;13852:53;13897:7;13888:6;13877:9;13873:22;13852:53;:::i;:::-;13842:63;;13797:118;13954:3;13981:53;14026:7;14017:6;14006:9;14002:22;13981:53;:::i;:::-;13971:63;;13925:119;14083:3;14110:53;14155:7;14146:6;14135:9;14131:22;14110:53;:::i;:::-;14100:63;;14054:119;13123:1057;;;;;;;;:::o;14186:474::-;14254:6;14262;14311:2;14299:9;14290:7;14286:23;14282:32;14279:119;;;14317:79;;:::i;:::-;14279:119;14437:1;14462:53;14507:7;14498:6;14487:9;14483:22;14462:53;:::i;:::-;14452:63;;14408:117;14564:2;14590:53;14635:7;14626:6;14615:9;14611:22;14590:53;:::i;:::-;14580:63;;14535:118;14186:474;;;;;:::o;14666:182::-;14806:34;14802:1;14794:6;14790:14;14783:58;14666:182;:::o;14854:366::-;14996:3;15017:67;15081:2;15076:3;15017:67;:::i;:::-;15010:74;;15093:93;15182:3;15093:93;:::i;:::-;15211:2;15206:3;15202:12;15195:19;;14854:366;;;:::o;15226:419::-;15392:4;15430:2;15419:9;15415:18;15407:26;;15479:9;15473:4;15469:20;15465:1;15454:9;15450:17;15443:47;15507:131;15633:4;15507:131;:::i;:::-;15499:139;;15226:419;;;:::o;15651:180::-;15699:77;15696:1;15689:88;15796:4;15793:1;15786:15;15820:4;15817:1;15810:15;15837:320;15881:6;15918:1;15912:4;15908:12;15898:22;;15965:1;15959:4;15955:12;15986:18;15976:81;;16042:4;16034:6;16030:17;16020:27;;15976:81;16104:2;16096:6;16093:14;16073:18;16070:38;16067:84;;16123:18;;:::i;:::-;16067:84;15888:269;15837:320;;;:::o;16163:180::-;16303:32;16299:1;16291:6;16287:14;16280:56;16163:180;:::o;16349:366::-;16491:3;16512:67;16576:2;16571:3;16512:67;:::i;:::-;16505:74;;16588:93;16677:3;16588:93;:::i;:::-;16706:2;16701:3;16697:12;16690:19;;16349:366;;;:::o;16721:419::-;16887:4;16925:2;16914:9;16910:18;16902:26;;16974:9;16968:4;16964:20;16960:1;16949:9;16945:17;16938:47;17002:131;17128:4;17002:131;:::i;:::-;16994:139;;16721:419;;;:::o;17146:221::-;17286:34;17282:1;17274:6;17270:14;17263:58;17355:4;17350:2;17342:6;17338:15;17331:29;17146:221;:::o;17373:366::-;17515:3;17536:67;17600:2;17595:3;17536:67;:::i;:::-;17529:74;;17612:93;17701:3;17612:93;:::i;:::-;17730:2;17725:3;17721:12;17714:19;;17373:366;;;:::o;17745:419::-;17911:4;17949:2;17938:9;17934:18;17926:26;;17998:9;17992:4;17988:20;17984:1;17973:9;17969:17;17962:47;18026:131;18152:4;18026:131;:::i;:::-;18018:139;;17745:419;;;:::o;18170:180::-;18218:77;18215:1;18208:88;18315:4;18312:1;18305:15;18339:4;18336:1;18329:15;18356:180;18404:77;18401:1;18394:88;18501:4;18498:1;18491:15;18525:4;18522:1;18515:15;18542:348;18582:7;18605:20;18623:1;18605:20;:::i;:::-;18600:25;;18639:20;18657:1;18639:20;:::i;:::-;18634:25;;18827:1;18759:66;18755:74;18752:1;18749:81;18744:1;18737:9;18730:17;18726:105;18723:131;;;18834:18;;:::i;:::-;18723:131;18882:1;18879;18875:9;18864:20;;18542:348;;;;:::o;18896:233::-;18935:3;18958:24;18976:5;18958:24;:::i;:::-;18949:33;;19004:66;18997:5;18994:77;18991:103;;19074:18;;:::i;:::-;18991:103;19121:1;19114:5;19110:13;19103:20;;18896:233;;;:::o;19135:143::-;19192:5;19223:6;19217:13;19208:22;;19239:33;19266:5;19239:33;:::i;:::-;19135:143;;;;:::o;19284:351::-;19354:6;19403:2;19391:9;19382:7;19378:23;19374:32;19371:119;;;19409:79;;:::i;:::-;19371:119;19529:1;19554:64;19610:7;19601:6;19590:9;19586:22;19554:64;:::i;:::-;19544:74;;19500:128;19284:351;;;;:::o;19641:332::-;19762:4;19800:2;19789:9;19785:18;19777:26;;19813:71;19881:1;19870:9;19866:17;19857:6;19813:71;:::i;:::-;19894:72;19962:2;19951:9;19947:18;19938:6;19894:72;:::i;:::-;19641:332;;;;;:::o;19979:137::-;20033:5;20064:6;20058:13;20049:22;;20080:30;20104:5;20080:30;:::i;:::-;19979:137;;;;:::o;20122:345::-;20189:6;20238:2;20226:9;20217:7;20213:23;20209:32;20206:119;;;20244:79;;:::i;:::-;20206:119;20364:1;20389:61;20442:7;20433:6;20422:9;20418:22;20389:61;:::i;:::-;20379:71;;20335:125;20122:345;;;;:::o;20473:442::-;20622:4;20660:2;20649:9;20645:18;20637:26;;20673:71;20741:1;20730:9;20726:17;20717:6;20673:71;:::i;:::-;20754:72;20822:2;20811:9;20807:18;20798:6;20754:72;:::i;:::-;20836;20904:2;20893:9;20889:18;20880:6;20836:72;:::i;:::-;20473:442;;;;;;:::o;20921:151::-;21061:3;21057:1;21049:6;21045:14;21038:27;20921:151;:::o;21078:365::-;21220:3;21241:66;21305:1;21300:3;21241:66;:::i;:::-;21234:73;;21316:93;21405:3;21316:93;:::i;:::-;21434:2;21429:3;21425:12;21418:19;;21078:365;;;:::o;21449:419::-;21615:4;21653:2;21642:9;21638:18;21630:26;;21702:9;21696:4;21692:20;21688:1;21677:9;21673:17;21666:47;21730:131;21856:4;21730:131;:::i;:::-;21722:139;;21449:419;;;:::o;21874:775::-;22107:4;22145:3;22134:9;22130:19;22122:27;;22159:71;22227:1;22216:9;22212:17;22203:6;22159:71;:::i;:::-;22240:72;22308:2;22297:9;22293:18;22284:6;22240:72;:::i;:::-;22322;22390:2;22379:9;22375:18;22366:6;22322:72;:::i;:::-;22404;22472:2;22461:9;22457:18;22448:6;22404:72;:::i;:::-;22486:73;22554:3;22543:9;22539:19;22530:6;22486:73;:::i;:::-;22569;22637:3;22626:9;22622:19;22613:6;22569:73;:::i;:::-;21874:775;;;;;;;;;:::o;22655:225::-;22795:34;22791:1;22783:6;22779:14;22772:58;22864:8;22859:2;22851:6;22847:15;22840:33;22655:225;:::o;22886:366::-;23028:3;23049:67;23113:2;23108:3;23049:67;:::i;:::-;23042:74;;23125:93;23214:3;23125:93;:::i;:::-;23243:2;23238:3;23234:12;23227:19;;22886:366;;;:::o;23258:419::-;23424:4;23462:2;23451:9;23447:18;23439:26;;23511:9;23505:4;23501:20;23497:1;23486:9;23482:17;23475:47;23539:131;23665:4;23539:131;:::i;:::-;23531:139;;23258:419;;;:::o;23683:225::-;23823:34;23819:1;23811:6;23807:14;23800:58;23892:8;23887:2;23879:6;23875:15;23868:33;23683:225;:::o;23914:366::-;24056:3;24077:67;24141:2;24136:3;24077:67;:::i;:::-;24070:74;;24153:93;24242:3;24153:93;:::i;:::-;24271:2;24266:3;24262:12;24255:19;;23914:366;;;:::o;24286:419::-;24452:4;24490:2;24479:9;24475:18;24467:26;;24539:9;24533:4;24529:20;24525:1;24514:9;24510:17;24503:47;24567:131;24693:4;24567:131;:::i;:::-;24559:139;;24286:419;;;:::o;24711:180::-;24759:77;24756:1;24749:88;24856:4;24853:1;24846:15;24880:4;24877:1;24870:15;24897:185;24937:1;24954:20;24972:1;24954:20;:::i;:::-;24949:25;;24988:20;25006:1;24988:20;:::i;:::-;24983:25;;25027:1;25017:35;;25032:18;;:::i;:::-;25017:35;25074:1;25071;25067:9;25062:14;;24897:185;;;;:::o;25088:227::-;25228:34;25224:1;25216:6;25212:14;25205:58;25297:10;25292:2;25284:6;25280:15;25273:35;25088:227;:::o;25321:366::-;25463:3;25484:67;25548:2;25543:3;25484:67;:::i;:::-;25477:74;;25560:93;25649:3;25560:93;:::i;:::-;25678:2;25673:3;25669:12;25662:19;;25321:366;;;:::o;25693:419::-;25859:4;25897:2;25886:9;25882:18;25874:26;;25946:9;25940:4;25936:20;25932:1;25921:9;25917:17;25910:47;25974:131;26100:4;25974:131;:::i;:::-;25966:139;;25693:419;;;:::o;26118:305::-;26158:3;26177:20;26195:1;26177:20;:::i;:::-;26172:25;;26211:20;26229:1;26211:20;:::i;:::-;26206:25;;26365:1;26297:66;26293:74;26290:1;26287:81;26284:107;;;26371:18;;:::i;:::-;26284:107;26415:1;26412;26408:9;26401:16;;26118:305;;;;:::o;26429:177::-;26569:29;26565:1;26557:6;26553:14;26546:53;26429:177;:::o;26612:366::-;26754:3;26775:67;26839:2;26834:3;26775:67;:::i;:::-;26768:74;;26851:93;26940:3;26851:93;:::i;:::-;26969:2;26964:3;26960:12;26953:19;;26612:366;;;:::o;26984:419::-;27150:4;27188:2;27177:9;27173:18;27165:26;;27237:9;27231:4;27227:20;27223:1;27212:9;27208:17;27201:47;27265:131;27391:4;27265:131;:::i;:::-;27257:139;;26984:419;;;:::o;27409:223::-;27549:34;27545:1;27537:6;27533:14;27526:58;27618:6;27613:2;27605:6;27601:15;27594:31;27409:223;:::o;27638:366::-;27780:3;27801:67;27865:2;27860:3;27801:67;:::i;:::-;27794:74;;27877:93;27966:3;27877:93;:::i;:::-;27995:2;27990:3;27986:12;27979:19;;27638:366;;;:::o;28010:419::-;28176:4;28214:2;28203:9;28199:18;28191:26;;28263:9;28257:4;28253:20;28249:1;28238:9;28234:17;28227:47;28291:131;28417:4;28291:131;:::i;:::-;28283:139;;28010:419;;;:::o;28435:221::-;28575:34;28571:1;28563:6;28559:14;28552:58;28644:4;28639:2;28631:6;28627:15;28620:29;28435:221;:::o;28662:366::-;28804:3;28825:67;28889:2;28884:3;28825:67;:::i;:::-;28818:74;;28901:93;28990:3;28901:93;:::i;:::-;29019:2;29014:3;29010:12;29003:19;;28662:366;;;:::o;29034:419::-;29200:4;29238:2;29227:9;29223:18;29215:26;;29287:9;29281:4;29277:20;29273:1;29262:9;29258:17;29251:47;29315:131;29441:4;29315:131;:::i;:::-;29307:139;;29034:419;;;:::o;29459:224::-;29599:34;29595:1;29587:6;29583:14;29576:58;29668:7;29663:2;29655:6;29651:15;29644:32;29459:224;:::o;29689:366::-;29831:3;29852:67;29916:2;29911:3;29852:67;:::i;:::-;29845:74;;29928:93;30017:3;29928:93;:::i;:::-;30046:2;30041:3;30037:12;30030:19;;29689:366;;;:::o;30061:419::-;30227:4;30265:2;30254:9;30250:18;30242:26;;30314:9;30308:4;30304:20;30300:1;30289:9;30285:17;30278:47;30342:131;30468:4;30342:131;:::i;:::-;30334:139;;30061:419;;;:::o;30486:222::-;30626:34;30622:1;30614:6;30610:14;30603:58;30695:5;30690:2;30682:6;30678:15;30671:30;30486:222;:::o;30714:366::-;30856:3;30877:67;30941:2;30936:3;30877:67;:::i;:::-;30870:74;;30953:93;31042:3;30953:93;:::i;:::-;31071:2;31066:3;31062:12;31055:19;;30714:366;;;:::o;31086:419::-;31252:4;31290:2;31279:9;31275:18;31267:26;;31339:9;31333:4;31329:20;31325:1;31314:9;31310:17;31303:47;31367:131;31493:4;31367:131;:::i;:::-;31359:139;;31086:419;;;:::o;31511:225::-;31651:34;31647:1;31639:6;31635:14;31628:58;31720:8;31715:2;31707:6;31703:15;31696:33;31511:225;:::o;31742:366::-;31884:3;31905:67;31969:2;31964:3;31905:67;:::i;:::-;31898:74;;31981:93;32070:3;31981:93;:::i;:::-;32099:2;32094:3;32090:12;32083:19;;31742:366;;;:::o;32114:419::-;32280:4;32318:2;32307:9;32303:18;32295:26;;32367:9;32361:4;32357:20;32353:1;32342:9;32338:17;32331:47;32395:131;32521:4;32395:131;:::i;:::-;32387:139;;32114:419;;;:::o;32539:223::-;32679:34;32675:1;32667:6;32663:14;32656:58;32748:6;32743:2;32735:6;32731:15;32724:31;32539:223;:::o;32768:366::-;32910:3;32931:67;32995:2;32990:3;32931:67;:::i;:::-;32924:74;;33007:93;33096:3;33007:93;:::i;:::-;33125:2;33120:3;33116:12;33109:19;;32768:366;;;:::o;33140:419::-;33306:4;33344:2;33333:9;33329:18;33321:26;;33393:9;33387:4;33383:20;33379:1;33368:9;33364:17;33357:47;33421:131;33547:4;33421:131;:::i;:::-;33413:139;;33140:419;;;:::o;33565:182::-;33705:34;33701:1;33693:6;33689:14;33682:58;33565:182;:::o;33753:366::-;33895:3;33916:67;33980:2;33975:3;33916:67;:::i;:::-;33909:74;;33992:93;34081:3;33992:93;:::i;:::-;34110:2;34105:3;34101:12;34094:19;;33753:366;;;:::o;34125:419::-;34291:4;34329:2;34318:9;34314:18;34306:26;;34378:9;34372:4;34368:20;34364:1;34353:9;34349:17;34342:47;34406:131;34532:4;34406:131;:::i;:::-;34398:139;;34125:419;;;:::o;34550:172::-;34690:24;34686:1;34678:6;34674:14;34667:48;34550:172;:::o;34728:366::-;34870:3;34891:67;34955:2;34950:3;34891:67;:::i;:::-;34884:74;;34967:93;35056:3;34967:93;:::i;:::-;35085:2;35080:3;35076:12;35069:19;;34728:366;;;:::o;35100:419::-;35266:4;35304:2;35293:9;35289:18;35281:26;;35353:9;35347:4;35343:20;35339:1;35328:9;35324:17;35317:47;35381:131;35507:4;35381:131;:::i;:::-;35373:139;;35100:419;;;:::o;35525:168::-;35665:20;35661:1;35653:6;35649:14;35642:44;35525:168;:::o;35699:366::-;35841:3;35862:67;35926:2;35921:3;35862:67;:::i;:::-;35855:74;;35938:93;36027:3;35938:93;:::i;:::-;36056:2;36051:3;36047:12;36040:19;;35699:366;;;:::o;36071:419::-;36237:4;36275:2;36264:9;36260:18;36252:26;;36324:9;36318:4;36314:20;36310:1;36299:9;36295:17;36288:47;36352:131;36478:4;36352:131;:::i;:::-;36344:139;;36071:419;;;:::o;36496:174::-;36636:26;36632:1;36624:6;36620:14;36613:50;36496:174;:::o;36676:366::-;36818:3;36839:67;36903:2;36898:3;36839:67;:::i;:::-;36832:74;;36915:93;37004:3;36915:93;:::i;:::-;37033:2;37028:3;37024:12;37017:19;;36676:366;;;:::o;37048:419::-;37214:4;37252:2;37241:9;37237:18;37229:26;;37301:9;37295:4;37291:20;37287:1;37276:9;37272:17;37265:47;37329:131;37455:4;37329:131;:::i;:::-;37321:139;;37048:419;;;:::o;37473:170::-;37613:22;37609:1;37601:6;37597:14;37590:46;37473:170;:::o;37649:366::-;37791:3;37812:67;37876:2;37871:3;37812:67;:::i;:::-;37805:74;;37888:93;37977:3;37888:93;:::i;:::-;38006:2;38001:3;37997:12;37990:19;;37649:366;;;:::o;38021:419::-;38187:4;38225:2;38214:9;38210:18;38202:26;;38274:9;38268:4;38264:20;38260:1;38249:9;38245:17;38238:47;38302:131;38428:4;38302:131;:::i;:::-;38294:139;;38021:419;;;:::o;38446:223::-;38586:34;38582:1;38574:6;38570:14;38563:58;38655:6;38650:2;38642:6;38638:15;38631:31;38446:223;:::o;38675:366::-;38817:3;38838:67;38902:2;38897:3;38838:67;:::i;:::-;38831:74;;38914:93;39003:3;38914:93;:::i;:::-;39032:2;39027:3;39023:12;39016:19;;38675:366;;;:::o;39047:419::-;39213:4;39251:2;39240:9;39236:18;39228:26;;39300:9;39294:4;39290:20;39286:1;39275:9;39271:17;39264:47;39328:131;39454:4;39328:131;:::i;:::-;39320:139;;39047:419;;;:::o;39472:191::-;39512:4;39532:20;39550:1;39532:20;:::i;:::-;39527:25;;39566:20;39584:1;39566:20;:::i;:::-;39561:25;;39605:1;39602;39599:8;39596:34;;;39610:18;;:::i;:::-;39596:34;39655:1;39652;39648:9;39640:17;;39472:191;;;;:::o;39669:220::-;39809:34;39805:1;39797:6;39793:14;39786:58;39878:3;39873:2;39865:6;39861:15;39854:28;39669:220;:::o;39895:366::-;40037:3;40058:67;40122:2;40117:3;40058:67;:::i;:::-;40051:74;;40134:93;40223:3;40134:93;:::i;:::-;40252:2;40247:3;40243:12;40236:19;;39895:366;;;:::o;40267:419::-;40433:4;40471:2;40460:9;40456:18;40448:26;;40520:9;40514:4;40510:20;40506:1;40495:9;40491:17;40484:47;40548:131;40674:4;40548:131;:::i;:::-;40540:139;;40267:419;;;:::o;40692:85::-;40737:7;40766:5;40755:16;;40692:85;;;:::o;40783:158::-;40841:9;40874:61;40892:42;40901:32;40927:5;40901:32;:::i;:::-;40892:42;:::i;:::-;40874:61;:::i;:::-;40861:74;;40783:158;;;:::o;40947:147::-;41042:45;41081:5;41042:45;:::i;:::-;41037:3;41030:58;40947:147;;:::o;41100:114::-;41167:6;41201:5;41195:12;41185:22;;41100:114;;;:::o;41220:184::-;41319:11;41353:6;41348:3;41341:19;41393:4;41388:3;41384:14;41369:29;;41220:184;;;;:::o;41410:132::-;41477:4;41500:3;41492:11;;41530:4;41525:3;41521:14;41513:22;;41410:132;;;:::o;41548:108::-;41625:24;41643:5;41625:24;:::i;:::-;41620:3;41613:37;41548:108;;:::o;41662:179::-;41731:10;41752:46;41794:3;41786:6;41752:46;:::i;:::-;41830:4;41825:3;41821:14;41807:28;;41662:179;;;;:::o;41847:113::-;41917:4;41949;41944:3;41940:14;41932:22;;41847:113;;;:::o;41996:732::-;42115:3;42144:54;42192:5;42144:54;:::i;:::-;42214:86;42293:6;42288:3;42214:86;:::i;:::-;42207:93;;42324:56;42374:5;42324:56;:::i;:::-;42403:7;42434:1;42419:284;42444:6;42441:1;42438:13;42419:284;;;42520:6;42514:13;42547:63;42606:3;42591:13;42547:63;:::i;:::-;42540:70;;42633:60;42686:6;42633:60;:::i;:::-;42623:70;;42479:224;42466:1;42463;42459:9;42454:14;;42419:284;;;42423:14;42719:3;42712:10;;42120:608;;;41996:732;;;;:::o;42734:831::-;42997:4;43035:3;43024:9;43020:19;43012:27;;43049:71;43117:1;43106:9;43102:17;43093:6;43049:71;:::i;:::-;43130:80;43206:2;43195:9;43191:18;43182:6;43130:80;:::i;:::-;43257:9;43251:4;43247:20;43242:2;43231:9;43227:18;43220:48;43285:108;43388:4;43379:6;43285:108;:::i;:::-;43277:116;;43403:72;43471:2;43460:9;43456:18;43447:6;43403:72;:::i;:::-;43485:73;43553:3;43542:9;43538:19;43529:6;43485:73;:::i;:::-;42734:831;;;;;;;;:::o;43588:732::-;43695:5;43720:81;43736:64;43793:6;43736:64;:::i;:::-;43720:81;:::i;:::-;43711:90;;43821:5;43850:6;43843:5;43836:21;43884:4;43877:5;43873:16;43866:23;;43937:4;43929:6;43925:17;43917:6;43913:30;43966:3;43958:6;43955:15;43952:122;;;43985:79;;:::i;:::-;43952:122;44100:6;44083:231;44117:6;44112:3;44109:15;44083:231;;;44192:3;44221:48;44265:3;44253:10;44221:48;:::i;:::-;44216:3;44209:61;44299:4;44294:3;44290:14;44283:21;;44159:155;44143:4;44138:3;44134:14;44127:21;;44083:231;;;44087:21;43701:619;;43588:732;;;;;:::o;44343:385::-;44425:5;44474:3;44467:4;44459:6;44455:17;44451:27;44441:122;;44482:79;;:::i;:::-;44441:122;44592:6;44586:13;44617:105;44718:3;44710:6;44703:4;44695:6;44691:17;44617:105;:::i;:::-;44608:114;;44431:297;44343:385;;;;:::o;44734:554::-;44829:6;44878:2;44866:9;44857:7;44853:23;44849:32;44846:119;;;44884:79;;:::i;:::-;44846:119;45025:1;45014:9;45010:17;45004:24;45055:18;45047:6;45044:30;45041:117;;;45077:79;;:::i;:::-;45041:117;45182:89;45263:7;45254:6;45243:9;45239:22;45182:89;:::i;:::-;45172:99;;44975:306;44734:554;;;;:::o

Swarm Source

ipfs://5b87218f65eb9b5a7cbbd9df0d2d9f1bf7e21d94ee02b607d6ed125c12693a28

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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