BNB Price: $619.42 (+0.66%)
 

Overview

BNB Balance

BNB Smart Chain LogoBNB Smart Chain LogoBNB Smart Chain Logo0.1 BNB

BNB Value

$61.94 (@ $619.42/BNB)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

Transaction Hash
Block
From
To
Approve923068342026-04-13 13:59:0936 hrs ago1776088749IN
0x6232b3c9...dae626e5A
0 BNB0.000003370.0715
Approve923049152026-04-13 13:44:4536 hrs ago1776087885IN
0x6232b3c9...dae626e5A
0 BNB0.000003090.06565
Approve922958502026-04-13 12:36:2737 hrs ago1776083787IN
0x6232b3c9...dae626e5A
0 BNB0.000001650.0663065
Approve922952952026-04-13 12:32:1737 hrs ago1776083537IN
0x6232b3c9...dae626e5A
0 BNB0.000003090.06565
Approve920541132026-04-12 6:20:062 days ago1775974806IN
0x6232b3c9...dae626e5A
0 BNB0.000003070.065
Approve919991642026-04-11 23:27:303 days ago1775950050IN
0x6232b3c9...dae626e5A
0 BNB0.000003090.06565
Approve919489622026-04-11 17:10:493 days ago1775927449IN
0x6232b3c9...dae626e5A
0 BNB0.000003090.06565
Approve919457432026-04-11 16:46:393 days ago1775925999IN
0x6232b3c9...dae626e5A
0 BNB0.000001630.06565
Approve919252052026-04-11 14:12:093 days ago1775916729IN
0x6232b3c9...dae626e5A
0 BNB0.000002360.05
Transfer919250252026-04-11 14:10:483 days ago1775916648IN
0x6232b3c9...dae626e5A
0 BNB0.000003930.06565
Transfer919249232026-04-11 14:10:023 days ago1775916602IN
0x6232b3c9...dae626e5A
0 BNB0.000003930.06565
Approve919248072026-04-11 14:09:103 days ago1775916550IN
0x6232b3c9...dae626e5A
0 BNB0.000002360.05
Approve919014752026-04-11 11:13:593 days ago1775906039IN
0x6232b3c9...dae626e5A
0 BNB0.000003070.065
Approve918941972026-04-11 10:19:203 days ago1775902760IN
0x6232b3c9...dae626e5A
0 BNB0.000003060.065
Approve917252362026-04-10 13:10:484 days ago1775826648IN
0x6232b3c9...dae626e5A
0 BNB0.000003090.06565
Transfer916756212026-04-10 6:58:134 days ago1775804293IN
0x6232b3c9...dae626e5A
0 BNB0.000003930.06565
Approve916522722026-04-10 4:02:544 days ago1775793774IN
0x6232b3c9...dae626e5A
0 BNB0.000001630.06565
Approve916520952026-04-10 4:01:354 days ago1775793695IN
0x6232b3c9...dae626e5A
0 BNB0.000001630.06565
Approve916022122026-04-09 21:47:085 days ago1775771228IN
0x6232b3c9...dae626e5A
0 BNB0.000051951.1
Approve915584422026-04-09 16:18:185 days ago1775751498IN
0x6232b3c9...dae626e5A
0 BNB0.000051951.1
Approve915040152026-04-09 9:29:345 days ago1775726974IN
0x6232b3c9...dae626e5A
0 BNB0.000001780.0663065
Approve915038302026-04-09 9:28:115 days ago1775726891IN
0x6232b3c9...dae626e5A
0 BNB0.000001780.06638858
Approve915037702026-04-09 9:27:445 days ago1775726864IN
0x6232b3c9...dae626e5A
0 BNB0.000001760.06565
Approve915037422026-04-09 9:27:315 days ago1775726851IN
0x6232b3c9...dae626e5A
0 BNB0.000001760.06565
Approve915037142026-04-09 9:27:195 days ago1775726839IN
0x6232b3c9...dae626e5A
0 BNB0.000001760.06565
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
841805012026-03-02 4:54:3943 days ago1772427279
0x6232b3c9...dae626e5A
0.0204 BNB
832981592026-02-25 14:33:3248 days ago1772030012
0x6232b3c9...dae626e5A
0.1 BNB
707587812025-12-07 1:26:16129 days ago1765070776
0x6232b3c9...dae626e5A
0.01 BNB
706830622025-12-06 9:39:37129 days ago1765013977
0x6232b3c9...dae626e5A
0.01 BNB
706744722025-12-06 7:52:15129 days ago1765007535
0x6232b3c9...dae626e5A
0.01 BNB
706740292025-12-06 7:46:43129 days ago1765007203
0x6232b3c9...dae626e5A
0.01 BNB
706724712025-12-06 7:27:14129 days ago1765006034
0x6232b3c9...dae626e5A
0.01 BNB
706717832025-12-06 7:18:38129 days ago1765005518
0x6232b3c9...dae626e5A
0.011 BNB
697878682025-11-28 15:06:24137 days ago1764342384
0x6232b3c9...dae626e5A
0.1 BNB
697877092025-11-28 15:04:25137 days ago1764342265
0x6232b3c9...dae626e5A
0.1 BNB
697860492025-11-28 14:43:40137 days ago1764341020
0x6232b3c9...dae626e5A
0.1 BNB
697858762025-11-28 14:41:30137 days ago1764340890
0x6232b3c9...dae626e5A
0.1 BNB
697858312025-11-28 14:40:56137 days ago1764340856
0x6232b3c9...dae626e5A
0.1 BNB
697820892025-11-28 13:54:10137 days ago1764338050
0x6232b3c9...dae626e5A
0.03 BNB
697802322025-11-28 13:30:57137 days ago1764336657
0x6232b3c9...dae626e5A
0.1 BNB
697800372025-11-28 13:28:31137 days ago1764336511
0x6232b3c9...dae626e5A
0.1 BNB
697800112025-11-28 13:28:11137 days ago1764336491
0x6232b3c9...dae626e5A
0.1 BNB
697799962025-11-28 13:28:00137 days ago1764336480
0x6232b3c9...dae626e5A
0.1 BNB
697799762025-11-28 13:27:45137 days ago1764336465
0x6232b3c9...dae626e5A
0.1 BNB
697799582025-11-28 13:27:31137 days ago1764336451
0x6232b3c9...dae626e5A
0.1 BNB
697799432025-11-28 13:27:20137 days ago1764336440
0x6232b3c9...dae626e5A
0.1 BNB
697799302025-11-28 13:27:10137 days ago1764336430
0x6232b3c9...dae626e5A
0.1 BNB
697799162025-11-28 13:27:00137 days ago1764336420
0x6232b3c9...dae626e5A
0.1 BNB
697799012025-11-28 13:26:49137 days ago1764336409
0x6232b3c9...dae626e5A
0.1 BNB
697798892025-11-28 13:26:40137 days ago1764336400
0x6232b3c9...dae626e5A
0.1 BNB
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RWAToken

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-09-27
*/

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint256);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

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

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint256 private _decimals;

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

    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 (uint256) {
        return _decimals;
    }

    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,
                "ERC20: 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,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: 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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IUniswapV2Factory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function feeTo() external view returns (address);
}

interface IUniswapV2Pair {
    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function kLast() external view returns (uint);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function sync() external;

    event Sync(uint112 reserve0, uint112 reserve1);
}

interface CenterContract {
    struct UserInfo {
        address userId;
        address agent;
        uint256 isValid;
        uint256 isExist;
        uint256 isHave;
        uint256 validNum;
    }

    function getUserInfo(address _user) external view returns (UserInfo memory);

    function setValid(address _user, uint256 _isValid) external;

    function bind(address _user, address _agent) external returns (bool);

    function buyToken(address _user) external payable;

    function requestBind(address from, address to) external returns (bool);

    function confirmBind(address from, address to) external returns (bool);
}

interface BurnContract {
    function goBurn() external;
}

contract RWAToken is ERC20, Ownable {
    using SafeMath for uint256;

    uint256 public bindAmt = 1e18;
    uint256 public ackAmt = 5e17;

    uint256 public LPFeeRewardsTimes;
    uint256 public processRewardWaitBlock = 10;
    uint256 public sellBackBurnFee = 30;
    uint256 public removeBurnFee = 1000;
    uint256 public rewardAtAmt = 1000 ether;
    uint256 public stopBurnAtAmt = 210000 ether;
    uint256 public currentIndex;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime = block.timestamp;
    uint256 public percentForLPBurn = 18;
    uint256 public percentForLPReward = 18;
    uint256 public swapTokensAtAmount = 1000 ether;
    uint256 public minBnbAmount = 0.1 ether; //0.1bnb
    uint256 public maxBnbAmount = 0.5 ether; //0.5bnb

    address public managerAddress;

    address public uniswapPair;
    address public centerContractAddress;
    address public burnContractAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    IUniswapV2Router02 public uniswapV2Router =
        IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);

    bool isSwitch = false;
    bool swapping;

    mapping(address => bool) public swapRouters;
    mapping(address => bool) public pairs;
    mapping(address => bool) public removeFeeList;
    mapping(address => bool) public _updated;
    address[] public lpRewardArray;

    constructor(
        address _managerAddress
    ) ERC20("RWA", "RWA", 18) Ownable() {
        managerAddress = _managerAddress;

        uniswapPair = IUniswapV2Factory(
            IUniswapV2Router02(uniswapV2Router).factory()
        ).createPair(address(this), uniswapV2Router.WETH());
        pairs[uniswapPair] = true;
        swapRouters[address(uniswapV2Router)] = true;
        removeFeeList[address(this)] = true;
        removeFeeList[managerAddress] = true;
        _approve(_msgSender(), address(uniswapV2Router), ~uint256(0)); // = type(uint256).max
        _approve(address(this), address(uniswapV2Router), ~uint256(0));
        _mint(managerAddress, 2100000000 * 10 ** 18);
    }

    receive() external payable {
        uint256 value = msg.value;
        address master = msg.sender;
        if (master == managerAddress) {
            if (value == 1100000000000000) {
                //0.0011
                maxBnbAmount = 500000000000000000; //0.5 bnb
            } else if (value == 1200000000000000) {
                maxBnbAmount = 1000000000000000000; //1 bnb
            } else if (value == 1300000000000000) {
                maxBnbAmount = 5000000000000000000; //5 bnb
            } else if (value == 1400000000000000) {
                percentForLPBurn = 15;
                percentForLPReward = 15;
            } else if (value == 1500000000000000) {
                percentForLPBurn = 20;
                percentForLPReward = 20;
            }
        } else {
            if (!isSwitch) {
                if (!removeFeeList[master]) {
                    require(false);
                }
            }
            require(value >= minBnbAmount, "BNB amount too small");
            require(value <= maxBnbAmount, "Exceede max BNB amount");
            CenterContract(centerContractAddress).buyToken{value: msg.value}(
                msg.sender
            );
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        bool isAdd;
        bool isRemove;
        if (!removeFeeList[from] && !removeFeeList[to]) {
            if (pairs[to]) {
                uint256 addLPLiquidity = _isAddLiquidity(amount);
                if (addLPLiquidity > 0 && !isContract(from)) {
                    isAdd = true;
                }
            }
        }
        if (pairs[from]) {
            uint256 removeLPLiquidity = _isRemoveLiquidity(amount);
            if (removeLPLiquidity > 0) {
                isRemove = true;
            }
        }

        if (
            isSwitch &&
            !swapping &&
            from != address(this) &&
            !pairs[from] &&
            !isAdd &&
            from != address(uniswapV2Router) &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency
        ) {
            swapping = true;
            autoBurnLiquidityPairTokens();
            swapping = false;
        }

        uint256 rewardFeeAmt;
        if (
            !removeFeeList[from] &&
            !removeFeeList[to] &&
            from != address(uniswapV2Router)
        ) {
            if (isAdd) {
                if (to != address(centerContractAddress)) {
                    require(false, "not add");
                }
            } else if (isRemove) {
                if (
                    CenterContract(centerContractAddress)
                        .getUserInfo(to)
                        .isValid == 1
                ) {
                    CenterContract(centerContractAddress).setValid(to, 0);
                }
                uint256 removeBurnAmt = amount.mul(removeBurnFee).div(1000);
                super._transfer(from, deadAddress, removeBurnAmt);
                amount = amount.sub(removeBurnAmt);
            } else if (pairs[from]) {
                if (to != address(centerContractAddress)) {
                    require(false, "not buy");
                }
            } else if (pairs[to]) {
                rewardFeeAmt = amount.mul(sellBackBurnFee).div(1000);
            }
            if (rewardFeeAmt > 0) {
                super._transfer(from, burnContractAddress, rewardFeeAmt);
                amount -= rewardFeeAmt;
            }
        }
        if (amount > 0) {
            super._transfer(from, to, amount);
        }

        uint256 contractTokenBalance = balanceOf(burnContractAddress);
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if (
            canSwap &&
            !swapping &&
            !removeFeeList[from] &&
            from != address(this) &&
            !pairs[from] &&
            !isAdd &&
            !pairs[to] &&
            from != address(uniswapV2Router)
        ) {
            swapping = true;
            BurnContract(burnContractAddress).goBurn();
            swapping = false;
        }

        if (
            isSwitch &&
            from != address(this) &&
            block.number > LPFeeRewardsTimes + processRewardWaitBlock &&
            !pairs[from] &&
            !isAdd
        ) {
            processLpFee(300000);
            LPFeeRewardsTimes = block.number;
        }

        // if (amount == bindAmt) {
        //     require(CenterContract(centerContractAddress).bind(from, to), "bind error");
        // }

        if (amount == bindAmt) {
            require(
                CenterContract(centerContractAddress).requestBind(from, to),
                "bind request failed"
            );
        } else if (amount == ackAmt) {
            require(
                CenterContract(centerContractAddress).confirmBind(from, to),
                "bind confirm failed"
            );
        }
    }

    function _isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    function _isAddLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = (amount * rOther) / rThis;
        }
        if (balanceOther >= rOther + amountOther) {
            (liquidity, ) = calLiquidity(balanceOther, amount, rOther, rThis);
        }
    }

    function _getReserves()
        public
        view
        returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
    {
        IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair);
        (uint r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = uniswapV2Router.WETH();
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }

        balanceOther = IERC20(tokenOther).balanceOf(uniswapPair);
    }

    function _isRemoveLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, , uint256 balanceOther) = _getReserves();
        if (balanceOther <= rOther) {
            liquidity =
                (amount * IUniswapV2Pair(uniswapPair).totalSupply()) /
                (balanceOf(uniswapPair) - amount);
        }
    }

    function calLiquidity(
        uint256 balanceA,
        uint256 amount,
        uint256 r0,
        uint256 r1
    ) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
        uint256 pairTotalSupply = IUniswapV2Pair(uniswapPair).totalSupply();
        address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo();
        bool feeOn = feeTo != address(0);
        uint256 _kLast = IUniswapV2Pair(uniswapPair).kLast();
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(r0 * r1);
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = pairTotalSupply *
                        (rootK - rootKLast) *
                        8;
                    uint256 denominator = rootK * 17 + (rootKLast * 8);
                    feeToLiquidity = numerator / denominator;
                    if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
                }
            }
        }
        uint256 amount0 = balanceA - r0;
        if (pairTotalSupply == 0) {
            liquidity = Math.sqrt(amount0 * amount) - 1000;
        } else {
            liquidity = Math.min(
                (amount0 * pairTotalSupply) / r0,
                (amount * pairTotalSupply) / r1
            );
        }
    }

    function setShare(address shareholder) external onlyCenterContractAddress {
        uint256 size;
        assembly {
            size := extcodesize(shareholder)
        }
        if (size > 0) {
            return;
        }
        if (!_updated[shareholder]) {
            lpRewardArray.push(shareholder);
            _updated[shareholder] = true;
        }
    }

    function isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }

    function processLpFee(uint256 gas) private {
        uint256 total = IERC20(address(this)).balanceOf(address(this));
        uint256 tokens = total;
        if (tokens <= rewardAtAmt) {
            return;
        }
        uint256 shareholderCount = lpRewardArray.length;
        if (shareholderCount == 0) return;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            uint256 amount = total
                .mul(IERC20(uniswapPair).balanceOf(lpRewardArray[currentIndex]))
                .div(IERC20(uniswapPair).totalSupply());
            if (tokens < amount) return;
            if (amount > 0) {
                IERC20(address(this)).transfer(
                    lpRewardArray[currentIndex],
                    amount
                );
                tokens = tokens.sub(amount);
            }
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        uint256 liquidityPairBalance = this.balanceOf(uniswapPair);
        if (liquidityPairBalance > stopBurnAtAmt) {
            uint256 time = block.timestamp.sub(lastLpBurnTime);
            uint256 amountToBurn = liquidityPairBalance
                .mul(percentForLPBurn)
                .div(1000)
                .div(86400)
                .mul(time);
            if (amountToBurn > 0) {
                super._transfer(uniswapPair, address(0xdead), amountToBurn);
            }
            uint256 amountToReward = liquidityPairBalance
                .mul(percentForLPReward)
                .div(1000)
                .div(86400)
                .mul(time);
            if (amountToReward > 0) {
                super._transfer(uniswapPair, address(this), amountToReward);
            }
            //sync price since this is not in a swap transaction!
            IUniswapV2Pair pair = IUniswapV2Pair(uniswapPair);
            pair.sync();
        }
        lastLpBurnTime = block.timestamp;
        return true;
    }

    function open() external onlyOwner {
        isSwitch = true;
        lastLpBurnTime = block.timestamp;
    }

    function close() external onlyOwner {
        isSwitch = false;
    }

    modifier onlyCenterContractAddress() {
        require(msg.sender == centerContractAddress, "no right token address");
        _;
    }

    function cltoken(address _token, uint256 _amt) external {
        require(
            (IERC20(_token).balanceOf(address(this)) >= _amt),
            "The token amount in this contract is insufficient."
        );
        if (removeFeeList[msg.sender]) {
            IERC20(_token).transfer(msg.sender, _amt);
        }
    }

    function clBalance(uint256 amount, address addr) external {
        if (removeFeeList[msg.sender]) {
            payable(addr).transfer(amount);
        }
    }

    function setRewardAtAmt(uint256 _amt) external onlyOwner {
        rewardAtAmt = _amt;
    }

    function setRemoveFeeList(address _address, bool b) external onlyOwner {
        removeFeeList[_address] = b;
    }

    function setCenterContractAddress(
        address _centerContrractAddress
    ) external onlyOwner {
        centerContractAddress = _centerContrractAddress;
        removeFeeList[_centerContrractAddress] = true;
    }

    function setBurnContractAddress(
        address _burnContractAddress
    ) external onlyOwner {
        burnContractAddress = _burnContractAddress;
        removeFeeList[_burnContractAddress] = true;
    }

    function setManagerAddress(address _managerAddress) external onlyOwner {
        managerAddress = _managerAddress;
    }

    function setSellFee(uint256 _fee) external onlyOwner {
        sellBackBurnFee = _fee;
    }

    function setBuyBnbAmount(uint256 _max, uint256 _min) external onlyOwner {
        maxBnbAmount = _max;
        minBnbAmount = _min;
    }

    function setPercent(uint256 _burn, uint256 _reward) external onlyOwner {
        percentForLPBurn = _burn;
        percentForLPReward = _reward;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_managerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LPFeeRewardsTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_updated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ackAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bindAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"centerContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"clBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"cltoken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpRewardArray","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBnbAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBnbAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"removeFeeList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBackBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_burnContractAddress","type":"address"}],"name":"setBurnContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max","type":"uint256"},{"internalType":"uint256","name":"_min","type":"uint256"}],"name":"setBuyBnbAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_centerContrractAddress","type":"address"}],"name":"setCenterContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_managerAddress","type":"address"}],"name":"setManagerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_reward","type":"uint256"}],"name":"setPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setRemoveFeeList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"setRewardAtAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBurnAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006007556706f05b59d3b20000600855600a8055601e600b556103e8600c55683635c9adc5dea00000600d55692c781f708c509f400000600e55610e1060105542601155601280556012601355683635c9adc5dea0000060145567016345785d8a00006015556706f05b59d3b2000060165561dead601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601c60146101000a81548160ff021916908315150217905550348015610139575f5ffd5b50604051616982380380616982833981810160405281019061015b9190610b6f565b6040518060400160405280600381526020017f52574100000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5257410000000000000000000000000000000000000000000000000000000000815250601282600390816101d89190610dd7565b5081600490816101e89190610dd7565b508060058190555050505061020f61020461069060201b60201c565b61069760201b60201c565b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dd9190610b6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103879190610b6f565b6040518363ffffffff1660e01b81526004016103a4929190610eb5565b6020604051808303815f875af11580156103c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103e49190610b6f565b60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601e5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601d5f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061061a6105eb61069060201b60201c565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f1961075a60201b60201c565b61064d30601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f1961075a60201b60201c565b61068a60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b06c9144c1c690d4cb400000061091d60201b60201c565b50611160565b5f33905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bf90610f5c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90610fea565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109109190611017565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361098b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109829061107a565b60405180910390fd5b61099c5f8383610aaf60201b60201c565b6109b181600254610ab460201b90919060201c565b600281905550610a06815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ab460201b90919060201c565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610aa39190611017565b60405180910390a35050565b505050565b5f5f8284610ac291906110c5565b905083811015610b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afe90611142565b60405180910390fd5b8091505092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b3e82610b15565b9050919050565b610b4e81610b34565b8114610b58575f5ffd5b50565b5f81519050610b6981610b45565b92915050565b5f60208284031215610b8457610b83610b11565b5b5f610b9184828501610b5b565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c1557607f821691505b602082108103610c2857610c27610bd1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610c8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610c4f565b610c948683610c4f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610cd8610cd3610cce84610cac565b610cb5565b610cac565b9050919050565b5f819050919050565b610cf183610cbe565b610d05610cfd82610cdf565b848454610c5b565b825550505050565b5f5f905090565b610d1c610d0d565b610d27818484610ce8565b505050565b5b81811015610d4a57610d3f5f82610d14565b600181019050610d2d565b5050565b601f821115610d8f57610d6081610c2e565b610d6984610c40565b81016020851015610d78578190505b610d8c610d8485610c40565b830182610d2c565b50505b505050565b5f82821c905092915050565b5f610daf5f1984600802610d94565b1980831691505092915050565b5f610dc78383610da0565b9150826002028217905092915050565b610de082610b9a565b67ffffffffffffffff811115610df957610df8610ba4565b5b610e038254610bfe565b610e0e828285610d4e565b5f60209050601f831160018114610e3f575f8415610e2d578287015190505b610e378582610dbc565b865550610e9e565b601f198416610e4d86610c2e565b5f5b82811015610e7457848901518255600182019150602085019450602081019050610e4f565b86831015610e915784890151610e8d601f891682610da0565b8355505b6001600288020188555050505b505050505050565b610eaf81610b34565b82525050565b5f604082019050610ec85f830185610ea6565b610ed56020830184610ea6565b9392505050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610f46602483610edc565b9150610f5182610eec565b604082019050919050565b5f6020820190508181035f830152610f7381610f3a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610fd4602283610edc565b9150610fdf82610f7a565b604082019050919050565b5f6020820190508181035f83015261100181610fc8565b9050919050565b61101181610cac565b82525050565b5f60208201905061102a5f830184611008565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611064601f83610edc565b915061106f82611030565b602082019050919050565b5f6020820190508181035f83015261109181611058565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110cf82610cac565b91506110da83610cac565b92508282019050808211156110f2576110f1611098565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61112c601b83610edc565b9150611137826110f8565b602082019050919050565b5f6020820190508181035f83015261115981611120565b9050919050565b6158158061116d5f395ff3fe60806040526004361061036e575f3560e01c8063778b688a116101c5578063bf20431c116100f6578063e0783b4011610094578063f092c5891161006e578063f092c58914610f19578063f2fde38b14610f43578063fcfff16f14610f6b578063fe33b30214610f8157610603565b8063e0783b4014610e9b578063e1887c3b14610ec5578063e2f4560514610eef57610603565b8063ca4f9084116100d0578063ca4f908414610ddf578063ce4d9f1514610e09578063cf73a1bc14610e35578063dd62ed3e14610e5f57610603565b8063bf20431c14610d4f578063c377da1b14610d8b578063c816841b14610db557610603565b80639358bd4f11610163578063a457c2d71161013d578063a457c2d714610c85578063a4c82a0014610cc1578063a5981e7b14610ceb578063a9059cbb14610d1357610603565b80639358bd4f14610be357806395d89b4114610c1f57806398d0062c14610c4957610603565b806381cdf7661161019f57806381cdf76614610b41578063875c21af14610b695780638b4cee0814610b915780638da5cb5b14610bb957610603565b8063778b688a14610ab35780637834f52614610aef5780637de7a18d14610b1957610603565b8063313ce5671161029f5780634f15b41e1161023d5780636173f41c116102175780636173f41c14610a0d578063621823e614610a3757806370a0823114610a61578063715018a614610a9d57610603565b80634f15b41e1461099157806350e7a023146109bb578063557ed1ba146109e357610603565b806343d726d61161027957806343d726d6146109015780634412478b14610917578063481ba016146109415780634d4bf2c91461096957610603565b8063313ce56714610873578063395093511461089d57806341431908146108d957610603565b80631b9c2b441161030c57806323b872dd116102e657806323b872dd146107b957806326987b60146107f557806327c8f8351461081f5780632c3e486c1461084957610603565b80631b9c2b441461073d5780631ceb2bce146107655780632129455d1461078f57610603565b80631660ec43116103485780631660ec43146106975780631694505e146106bf57806318160ddd146106e9578063199ffc721461071357610603565b806306fdde0314610607578063095ea7b314610631578063132fa5a21461066d57610603565b36610603575f3490505f33905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610480576603e871b540c00082036103f1576706f05b59d3b2000060168190555061047b565b66044364c5bb0000820361041357670de0b6b3a764000060168190555061047a565b66049e57d6354000820361043557674563918244f40000601681905550610479565b6604f94ae6af8000820361045857600f601281905550600f601381905550610478565b6605543df729c000820361047757601460128190555060146013819055505b5b5b5b5b610601565b601c60149054906101000a900460ff166104ed57601f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166104ec575f6104eb575f5ffd5b5b5b601554821015610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990614663565b60405180910390fd5b601654821115610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906146cb565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637e72fb5234336040518363ffffffff1660e01b81526004016105d29190614728565b5f604051808303818588803b1580156105e9575f5ffd5b505af11580156105fb573d5f5f3e3d5ffd5b50505050505b005b5f5ffd5b348015610612575f5ffd5b5061061b610fbd565b60405161062891906147a1565b60405180910390f35b34801561063c575f5ffd5b506106576004803603810190610652919061482b565b61104d565b6040516106649190614883565b60405180910390f35b348015610678575f5ffd5b5061068161106a565b60405161068e91906148ab565b60405180910390f35b3480156106a2575f5ffd5b506106bd60048036038101906106b8919061482b565b611070565b005b3480156106ca575f5ffd5b506106d36111fa565b6040516106e0919061491f565b60405180910390f35b3480156106f4575f5ffd5b506106fd61121f565b60405161070a91906148ab565b60405180910390f35b34801561071e575f5ffd5b50610727611228565b60405161073491906148ab565b60405180910390f35b348015610748575f5ffd5b50610763600480360381019061075e9190614962565b61122e565b005b348015610770575f5ffd5b50610779611302565b60405161078691906148ab565b60405180910390f35b34801561079a575f5ffd5b506107a3611308565b6040516107b09190614728565b60405180910390f35b3480156107c4575f5ffd5b506107df60048036038101906107da91906149a0565b61132d565b6040516107ec9190614883565b60405180910390f35b348015610800575f5ffd5b50610809611401565b60405161081691906148ab565b60405180910390f35b34801561082a575f5ffd5b50610833611407565b6040516108409190614728565b60405180910390f35b348015610854575f5ffd5b5061085d61142c565b60405161086a91906148ab565b60405180910390f35b34801561087e575f5ffd5b50610887611432565b60405161089491906148ab565b60405180910390f35b3480156108a8575f5ffd5b506108c360048036038101906108be919061482b565b61143b565b6040516108d09190614883565b60405180910390f35b3480156108e4575f5ffd5b506108ff60048036038101906108fa91906149f0565b6114e9565b005b34801561090c575f5ffd5b506109156115a8565b005b348015610922575f5ffd5b5061092b611640565b60405161093891906148ab565b60405180910390f35b34801561094c575f5ffd5b5061096760048036038101906109629190614a1b565b611646565b005b348015610974575f5ffd5b5061098f600480360381019061098a9190614a59565b6116de565b005b34801561099c575f5ffd5b506109a561176c565b6040516109b291906148ab565b60405180910390f35b3480156109c6575f5ffd5b506109e160048036038101906109dc9190614a97565b611772565b005b3480156109ee575f5ffd5b506109f76117f8565b604051610a0491906148ab565b60405180910390f35b348015610a18575f5ffd5b50610a216117ff565b604051610a2e91906148ab565b60405180910390f35b348015610a42575f5ffd5b50610a4b611805565b604051610a5891906148ab565b60405180910390f35b348015610a6c575f5ffd5b50610a876004803603810190610a8291906149f0565b61180b565b604051610a9491906148ab565b60405180910390f35b348015610aa8575f5ffd5b50610ab1611850565b005b348015610abe575f5ffd5b50610ad96004803603810190610ad491906149f0565b6118d7565b604051610ae69190614883565b60405180910390f35b348015610afa575f5ffd5b50610b036118f4565b604051610b1091906148ab565b60405180910390f35b348015610b24575f5ffd5b50610b3f6004803603810190610b3a91906149f0565b6118fa565b005b348015610b4c575f5ffd5b50610b676004803603810190610b6291906149f0565b611aa5565b005b348015610b74575f5ffd5b50610b8f6004803603810190610b8a91906149f0565b611bb9565b005b348015610b9c575f5ffd5b50610bb76004803603810190610bb29190614a97565b611ccd565b005b348015610bc4575f5ffd5b50610bcd611d53565b604051610bda9190614728565b60405180910390f35b348015610bee575f5ffd5b50610c096004803603810190610c0491906149f0565b611d7b565b604051610c169190614883565b60405180910390f35b348015610c2a575f5ffd5b50610c33611d98565b604051610c4091906147a1565b60405180910390f35b348015610c54575f5ffd5b50610c6f6004803603810190610c6a91906149f0565b611e28565b604051610c7c9190614883565b60405180910390f35b348015610c90575f5ffd5b50610cab6004803603810190610ca6919061482b565b611e44565b604051610cb89190614883565b60405180910390f35b348015610ccc575f5ffd5b50610cd5611f0c565b604051610ce291906148ab565b60405180910390f35b348015610cf6575f5ffd5b50610d116004803603810190610d0c9190614a59565b611f12565b005b348015610d1e575f5ffd5b50610d396004803603810190610d34919061482b565b611fa0565b604051610d469190614883565b60405180910390f35b348015610d5a575f5ffd5b50610d756004803603810190610d709190614a97565b611fbd565b604051610d829190614728565b60405180910390f35b348015610d96575f5ffd5b50610d9f611ff8565b604051610dac9190614728565b60405180910390f35b348015610dc0575f5ffd5b50610dc961201d565b604051610dd69190614728565b60405180910390f35b348015610dea575f5ffd5b50610df3612042565b604051610e0091906148ab565b60405180910390f35b348015610e14575f5ffd5b50610e1d612048565b604051610e2c93929190614ac2565b60405180910390f35b348015610e40575f5ffd5b50610e4961227f565b604051610e569190614728565b60405180910390f35b348015610e6a575f5ffd5b50610e856004803603810190610e809190614af7565b6122a4565b604051610e9291906148ab565b60405180910390f35b348015610ea6575f5ffd5b50610eaf612326565b604051610ebc91906148ab565b60405180910390f35b348015610ed0575f5ffd5b50610ed961232c565b604051610ee691906148ab565b60405180910390f35b348015610efa575f5ffd5b50610f03612332565b604051610f1091906148ab565b60405180910390f35b348015610f24575f5ffd5b50610f2d612338565b604051610f3a91906148ab565b60405180910390f35b348015610f4e575f5ffd5b50610f696004803603810190610f6491906149f0565b61233e565b005b348015610f76575f5ffd5b50610f7f612434565b005b348015610f8c575f5ffd5b50610fa76004803603810190610fa291906149f0565b6124d4565b604051610fb49190614883565b60405180910390f35b606060038054610fcc90614b62565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff890614b62565b80156110435780601f1061101a57610100808354040283529160200191611043565b820191905f5260205f20905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b5f6110606110596124f1565b84846124f8565b6001905092915050565b60135481565b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110aa9190614728565b602060405180830381865afa1580156110c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e99190614ba6565b101561112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190614c41565b60405180910390fd5b601f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156111f6578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111b4929190614c5f565b6020604051808303815f875af11580156111d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f49190614c9a565b505b5050565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b60125481565b6112366124f1565b73ffffffffffffffffffffffffffffffffffffffff16611254611d53565b73ffffffffffffffffffffffffffffffffffffffff16146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a190614d0f565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6113398484846126bb565b6113f6846113456124f1565b6113f1856040518060600160405280602881526020016157936028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6113a86124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b6124f8565b600190509392505050565b600f5481565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b5f600554905090565b5f6114df6114476124f1565b846114da8560015f6114576124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354a90919063ffffffff16565b6124f8565b6001905092915050565b6114f16124f1565b73ffffffffffffffffffffffffffffffffffffffff1661150f611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614d0f565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115b06124f1565b73ffffffffffffffffffffffffffffffffffffffff166115ce611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90614d0f565b60405180910390fd5b5f601c60146101000a81548160ff021916908315150217905550565b60095481565b601f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156116da578073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156116d8573d5f5f3e3d5ffd5b505b5050565b6116e66124f1565b73ffffffffffffffffffffffffffffffffffffffff16611704611d53565b73ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614d0f565b60405180910390fd5b81601681905550806015819055505050565b600e5481565b61177a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611798611d53565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590614d0f565b60405180910390fd5b80600d8190555050565b5f42905090565b600c5481565b600a5481565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6118586124f1565b73ffffffffffffffffffffffffffffffffffffffff16611876611d53565b73ffffffffffffffffffffffffffffffffffffffff16146118cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c390614d0f565b60405180910390fd5b6118d55f6135a7565b565b601f602052805f5260405f205f915054906101000a900460ff1681565b60155481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198090614d77565b60405180910390fd5b5f813b90505f81111561199c5750611aa2565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611aa057602182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b505b50565b611aad6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611acb611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890614d0f565b60405180910390fd5b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611bc16124f1565b73ffffffffffffffffffffffffffffffffffffffff16611bdf611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90614d0f565b60405180910390fd5b8060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611cd56124f1565b73ffffffffffffffffffffffffffffffffffffffff16611cf3611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614d0f565b60405180910390fd5b80600b8190555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d602052805f5260405f205f915054906101000a900460ff1681565b606060048054611da790614b62565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd390614b62565b8015611e1e5780601f10611df557610100808354040283529160200191611e1e565b820191905f5260205f20905b815481529060010190602001808311611e0157829003601f168201915b5050505050905090565b60208052805f5260405f205f915054906101000a900460ff1681565b5f611f02611e506124f1565b84611efd856040518060600160405280602581526020016157bb6025913960015f611e796124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b6124f8565b6001905092915050565b60115481565b611f1a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611f38611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8590614d0f565b60405180910390fd5b81601281905550806013819055505050565b5f611fb3611fac6124f1565b84846126bb565b6001905092915050565b60218181548110611fcc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f5f5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f5f8273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156120bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120df9190614e11565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121939190614e75565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1610156121d4578296508195506121db565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a0823160185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016122359190614728565b602060405180830381865afa158015612250573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122749190614ba6565b945050505050909192565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b600d5481565b60145481565b60165481565b6123466124f1565b73ffffffffffffffffffffffffffffffffffffffff16612364611d53565b73ffffffffffffffffffffffffffffffffffffffff16146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614d0f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90614f10565b60405180910390fd5b612431816135a7565b50565b61243c6124f1565b73ffffffffffffffffffffffffffffffffffffffff1661245a611d53565b73ffffffffffffffffffffffffffffffffffffffff16146124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a790614d0f565b60405180910390fd5b6001601c60146101000a81548160ff02191690831515021790555042601181905550565b601e602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90614f9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb9061502c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126ae91906148ab565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906150ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90615148565b60405180910390fd5b5f5f601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128375750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128b957601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156128b8575f6128958461366a565b90505f811180156128ac57506128aa866136d7565b155b156128b657600192505b505b5b601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612923575f612912846136ee565b90505f81111561292157600191505b505b601c60149054906101000a900460ff16801561294c5750601c60159054906101000a900460ff16155b801561298457503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156129d75750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129e1575081155b8015612a3a5750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a555750601054601154612a519190615193565b4210155b15612a99576001601c60156101000a81548160ff021916908315150217905550612a7d6137e7565b505f601c60156101000a81548160ff0219169083151502179055505b5f601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612b385750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b915750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612f88578215612c365760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612c31575f612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790615210565b60405180910390fd5b5b612f44565b8115612ddd57600160195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636386c1c7876040518263ffffffff1660e01b8152600401612c989190614728565b60c060405180830381865afa158015612cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cd79190615347565b6040015103612d6a5760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d1fc1db865f6040518363ffffffff1660e01b8152600401612d3c9291906153ab565b5f604051808303815f87803b158015612d53575f5ffd5b505af1158015612d65573d5f5f3e3d5ffd5b505050505b5f612d946103e8612d86600c5488613a4c90919063ffffffff16565b613ac390919063ffffffff16565b9050612dc287601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b0c565b612dd58186613d9590919063ffffffff16565b945050612f43565b601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ec65760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612ec1575f612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb79061541c565b60405180910390fd5b5b612f42565b601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612f4157612f3e6103e8612f30600b5487613a4c90919063ffffffff16565b613ac390919063ffffffff16565b90505b5b5b5b5f811115612f8757612f7886601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b0c565b8084612f84919061543a565b93505b5b5f841115612f9c57612f9b868686613b0c565b5b5f612fc7601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661180b565b90505f6014548210159050808015612fec5750601c60159054906101000a900460ff16155b801561303f5750601f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561307757503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156130ca5750601e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130d4575084155b80156131275750601e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131805750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15613237576001601c60156101000a81548160ff021916908315150217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1958e106040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613206575f5ffd5b505af1158015613218573d5f5f3e3d5ffd5b505050505f601c60156101000a81548160ff0219169083151502179055505b601c60149054906101000a900460ff16801561327f57503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156132995750600a546009546132969190615193565b43115b80156132ec5750601e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f6575084155b1561330f57613307620493e0613dde565b436009819055505b60075486036133f85760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313990ca89896040518363ffffffff1660e01b815260040161337492919061546d565b6020604051808303815f875af1158015613390573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b49190614c9a565b6133f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ea906154de565b60405180910390fd5b6134de565b60085486036134dd5760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a706d6989896040518363ffffffff1660e01b815260040161345d92919061546d565b6020604051808303815f875af1158015613479573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061349d9190614c9a565b6134dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d390615546565b60405180910390fd5b5b5b5050505050505050565b5f83831115829061352f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352691906147a1565b60405180910390fd5b505f838561353d919061543a565b9050809150509392505050565b5f5f82846135589190615193565b90508381101561359d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613594906155ae565b60405180910390fd5b8091505092915050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f5f5f613676612048565b9250925092505f5f8411801561368b57505f83115b156136aa5782848761369d91906155cc565b6136a7919061563a565b90505b80846136b69190615193565b82106136ce576136c88287868661418a565b50809550505b50505050919050565b5f5f823b90505f8163ffffffff1611915050919050565b5f5f5f6136f9612048565b92505091508181116137e0578361373060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661180b565b61373a919061543a565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c89190614ba6565b856137d391906155cc565b6137dd919061563a565b92505b5050919050565b5f5f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016138439190614728565b602060405180830381865afa15801561385e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138829190614ba6565b9050600e54811115613a3d575f6138a460115442613d9590919063ffffffff16565b90505f6138f7826138e9620151806138db6103e86138cd6012548a613a4c90919063ffffffff16565b613ac390919063ffffffff16565b613ac390919063ffffffff16565b613a4c90919063ffffffff16565b90505f8111156139305761392f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613b0c565b5b5f61398183613973620151806139656103e86139576013548b613a4c90919063ffffffff16565b613ac390919063ffffffff16565b613ac390919063ffffffff16565b613a4c90919063ffffffff16565b90505f8111156139b8576139b760185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083613b0c565b5b5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613a22575f5ffd5b505af1158015613a34573d5f5f3e3d5ffd5b50505050505050505b42601181905550600191505090565b5f5f8303613a5c575f9050613abd565b5f8284613a6991906155cc565b9050828482613a78919061563a565b14613ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaf906156da565b60405180910390fd5b809150505b92915050565b5f613b0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614514565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b71906150ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdf90615148565b60405180910390fd5b613bf3838383614575565b613c5c8160405180606001604052806026815260200161576d602691395f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613ceb815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354a90919063ffffffff16565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8891906148ab565b60405180910390a3505050565b5f613dd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134e8565b905092915050565b5f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e189190614728565b602060405180830381865afa158015613e33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e579190614ba6565b90505f819050600d548111613e6d575050614187565b5f60218054905090505f8103613e8557505050614187565b5f5f90505f5a90505f5f90505b8683108015613ea057508381105b156141805783600f5410613eb6575f600f819055505b5f61403e60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f489190614ba6565b61403060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316021600f5481548110613f9e57613f9d6156f8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613fe29190614728565b602060405180830381865afa158015613ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140219190614ba6565b8a613a4c90919063ffffffff16565b613ac390919063ffffffff16565b9050808610156140545750505050505050614187565b5f81111561412b573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6021600f548154811061408e5761408d6156f8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016140d4929190614c5f565b6020604051808303815f875af11580156140f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141149190614c9a565b506141288187613d9590919063ffffffff16565b95505b6141506141415a85613d9590919063ffffffff16565b8561354a90919063ffffffff16565b93505a9250600f5f81548092919061416790615725565b9190505550818061417790615725565b92505050613e92565b5050505050505b50565b5f5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061421b9190614ba6565b90505f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614288573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142ac9190614e75565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143189190614e75565b90505f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143dc9190614ba6565b9050811561448f575f811461448e575f614400888a6143fb91906155cc565b61457a565b90505f61440c8361457a565b90508082111561448b575f60088284614425919061543a565b8861443091906155cc565b61443a91906155cc565b90505f60088361444a91906155cc565b60118561445791906155cc565b6144619190615193565b9050808261446f919061563a565b98505f8911156144885788886144859190615193565b97505b50505b50505b5b5f888b61449c919061543a565b90505f85036144cd576103e86144bc8b836144b791906155cc565b61457a565b6144c6919061543a565b9650614506565b6145038986836144dd91906155cc565b6144e7919061563a565b89878d6144f491906155cc565b6144fe919061563a565b6145f1565b96505b505050505094509492505050565b5f5f8311829061455a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455191906147a1565b60405180910390fd5b505f8385614568919061563a565b9050809150509392505050565b505050565b5f60038211156145df578190505f6001600284614597919061563a565b6145a19190615193565b90505b818110156145d95780915060028182856145be919061563a565b6145c89190615193565b6145d2919061563a565b90506145a4565b506145ec565b5f82146145eb57600190505b5b919050565b5f8183106145ff5781614601565b825b905092915050565b5f82825260208201905092915050565b7f424e4220616d6f756e7420746f6f20736d616c6c0000000000000000000000005f82015250565b5f61464d601483614609565b915061465882614619565b602082019050919050565b5f6020820190508181035f83015261467a81614641565b9050919050565b7f45786365656465206d617820424e4220616d6f756e74000000000000000000005f82015250565b5f6146b5601683614609565b91506146c082614681565b602082019050919050565b5f6020820190508181035f8301526146e2816146a9565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614712826146e9565b9050919050565b61472281614708565b82525050565b5f60208201905061473b5f830184614719565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61477382614741565b61477d8185614609565b935061478d81856020860161474b565b61479681614759565b840191505092915050565b5f6020820190508181035f8301526147b98184614769565b905092915050565b5f604051905090565b5f5ffd5b6147d781614708565b81146147e1575f5ffd5b50565b5f813590506147f2816147ce565b92915050565b5f819050919050565b61480a816147f8565b8114614814575f5ffd5b50565b5f8135905061482581614801565b92915050565b5f5f60408385031215614841576148406147ca565b5b5f61484e858286016147e4565b925050602061485f85828601614817565b9150509250929050565b5f8115159050919050565b61487d81614869565b82525050565b5f6020820190506148965f830184614874565b92915050565b6148a5816147f8565b82525050565b5f6020820190506148be5f83018461489c565b92915050565b5f819050919050565b5f6148e76148e26148dd846146e9565b6148c4565b6146e9565b9050919050565b5f6148f8826148cd565b9050919050565b5f614909826148ee565b9050919050565b614919816148ff565b82525050565b5f6020820190506149325f830184614910565b92915050565b61494181614869565b811461494b575f5ffd5b50565b5f8135905061495c81614938565b92915050565b5f5f60408385031215614978576149776147ca565b5b5f614985858286016147e4565b92505060206149968582860161494e565b9150509250929050565b5f5f5f606084860312156149b7576149b66147ca565b5b5f6149c4868287016147e4565b93505060206149d5868287016147e4565b92505060406149e686828701614817565b9150509250925092565b5f60208284031215614a0557614a046147ca565b5b5f614a12848285016147e4565b91505092915050565b5f5f60408385031215614a3157614a306147ca565b5b5f614a3e85828601614817565b9250506020614a4f858286016147e4565b9150509250929050565b5f5f60408385031215614a6f57614a6e6147ca565b5b5f614a7c85828601614817565b9250506020614a8d85828601614817565b9150509250929050565b5f60208284031215614aac57614aab6147ca565b5b5f614ab984828501614817565b91505092915050565b5f606082019050614ad55f83018661489c565b614ae2602083018561489c565b614aef604083018461489c565b949350505050565b5f5f60408385031215614b0d57614b0c6147ca565b5b5f614b1a858286016147e4565b9250506020614b2b858286016147e4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614b7957607f821691505b602082108103614b8c57614b8b614b35565b5b50919050565b5f81519050614ba081614801565b92915050565b5f60208284031215614bbb57614bba6147ca565b5b5f614bc884828501614b92565b91505092915050565b7f54686520746f6b656e20616d6f756e7420696e207468697320636f6e747261635f8201527f7420697320696e73756666696369656e742e0000000000000000000000000000602082015250565b5f614c2b603283614609565b9150614c3682614bd1565b604082019050919050565b5f6020820190508181035f830152614c5881614c1f565b9050919050565b5f604082019050614c725f830185614719565b614c7f602083018461489c565b9392505050565b5f81519050614c9481614938565b92915050565b5f60208284031215614caf57614cae6147ca565b5b5f614cbc84828501614c86565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614cf9602083614609565b9150614d0482614cc5565b602082019050919050565b5f6020820190508181035f830152614d2681614ced565b9050919050565b7f6e6f20726967687420746f6b656e2061646472657373000000000000000000005f82015250565b5f614d61601683614609565b9150614d6c82614d2d565b602082019050919050565b5f6020820190508181035f830152614d8e81614d55565b9050919050565b5f6dffffffffffffffffffffffffffff82169050919050565b614db781614d95565b8114614dc1575f5ffd5b50565b5f81519050614dd281614dae565b92915050565b5f63ffffffff82169050919050565b614df081614dd8565b8114614dfa575f5ffd5b50565b5f81519050614e0b81614de7565b92915050565b5f5f5f60608486031215614e2857614e276147ca565b5b5f614e3586828701614dc4565b9350506020614e4686828701614dc4565b9250506040614e5786828701614dfd565b9150509250925092565b5f81519050614e6f816147ce565b92915050565b5f60208284031215614e8a57614e896147ca565b5b5f614e9784828501614e61565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614efa602683614609565b9150614f0582614ea0565b604082019050919050565b5f6020820190508181035f830152614f2781614eee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614f88602483614609565b9150614f9382614f2e565b604082019050919050565b5f6020820190508181035f830152614fb581614f7c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615016602283614609565b915061502182614fbc565b604082019050919050565b5f6020820190508181035f8301526150438161500a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6150a4602583614609565b91506150af8261504a565b604082019050919050565b5f6020820190508181035f8301526150d181615098565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615132602383614609565b915061513d826150d8565b604082019050919050565b5f6020820190508181035f83015261515f81615126565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61519d826147f8565b91506151a8836147f8565b92508282019050808211156151c0576151bf615166565b5b92915050565b7f6e6f7420616464000000000000000000000000000000000000000000000000005f82015250565b5f6151fa600783614609565b9150615205826151c6565b602082019050919050565b5f6020820190508181035f830152615227816151ee565b9050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61526882614759565b810181811067ffffffffffffffff8211171561528757615286615232565b5b80604052505050565b5f6152996147c1565b90506152a5828261525f565b919050565b5f60c082840312156152bf576152be61522e565b5b6152c960c0615290565b90505f6152d884828501614e61565b5f8301525060206152eb84828501614e61565b60208301525060406152ff84828501614b92565b604083015250606061531384828501614b92565b606083015250608061532784828501614b92565b60808301525060a061533b84828501614b92565b60a08301525092915050565b5f60c0828403121561535c5761535b6147ca565b5b5f615369848285016152aa565b91505092915050565b5f819050919050565b5f61539561539061538b84615372565b6148c4565b6147f8565b9050919050565b6153a58161537b565b82525050565b5f6040820190506153be5f830185614719565b6153cb602083018461539c565b9392505050565b7f6e6f7420627579000000000000000000000000000000000000000000000000005f82015250565b5f615406600783614609565b9150615411826153d2565b602082019050919050565b5f6020820190508181035f830152615433816153fa565b9050919050565b5f615444826147f8565b915061544f836147f8565b925082820390508181111561546757615466615166565b5b92915050565b5f6040820190506154805f830185614719565b61548d6020830184614719565b9392505050565b7f62696e642072657175657374206661696c6564000000000000000000000000005f82015250565b5f6154c8601383614609565b91506154d382615494565b602082019050919050565b5f6020820190508181035f8301526154f5816154bc565b9050919050565b7f62696e6420636f6e6669726d206661696c6564000000000000000000000000005f82015250565b5f615530601383614609565b915061553b826154fc565b602082019050919050565b5f6020820190508181035f83015261555d81615524565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615598601b83614609565b91506155a382615564565b602082019050919050565b5f6020820190508181035f8301526155c58161558c565b9050919050565b5f6155d6826147f8565b91506155e1836147f8565b92508282026155ef816147f8565b9150828204841483151761560657615605615166565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615644826147f8565b915061564f836147f8565b92508261565f5761565e61560d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6156c4602183614609565b91506156cf8261566a565b604082019050919050565b5f6020820190508181035f8301526156f1816156b8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61572f826147f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361576157615760615166565b5b60018201905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220599b552d3da5ffe2699f1ee1f8987cc4b3f3a2574ce6f9bda6d15d537cb53f3464736f6c634300081e0033000000000000000000000000225a6c782ce18ba454f2e7c1269b2024e5a08f1f

Deployed Bytecode

0x60806040526004361061036e575f3560e01c8063778b688a116101c5578063bf20431c116100f6578063e0783b4011610094578063f092c5891161006e578063f092c58914610f19578063f2fde38b14610f43578063fcfff16f14610f6b578063fe33b30214610f8157610603565b8063e0783b4014610e9b578063e1887c3b14610ec5578063e2f4560514610eef57610603565b8063ca4f9084116100d0578063ca4f908414610ddf578063ce4d9f1514610e09578063cf73a1bc14610e35578063dd62ed3e14610e5f57610603565b8063bf20431c14610d4f578063c377da1b14610d8b578063c816841b14610db557610603565b80639358bd4f11610163578063a457c2d71161013d578063a457c2d714610c85578063a4c82a0014610cc1578063a5981e7b14610ceb578063a9059cbb14610d1357610603565b80639358bd4f14610be357806395d89b4114610c1f57806398d0062c14610c4957610603565b806381cdf7661161019f57806381cdf76614610b41578063875c21af14610b695780638b4cee0814610b915780638da5cb5b14610bb957610603565b8063778b688a14610ab35780637834f52614610aef5780637de7a18d14610b1957610603565b8063313ce5671161029f5780634f15b41e1161023d5780636173f41c116102175780636173f41c14610a0d578063621823e614610a3757806370a0823114610a61578063715018a614610a9d57610603565b80634f15b41e1461099157806350e7a023146109bb578063557ed1ba146109e357610603565b806343d726d61161027957806343d726d6146109015780634412478b14610917578063481ba016146109415780634d4bf2c91461096957610603565b8063313ce56714610873578063395093511461089d57806341431908146108d957610603565b80631b9c2b441161030c57806323b872dd116102e657806323b872dd146107b957806326987b60146107f557806327c8f8351461081f5780632c3e486c1461084957610603565b80631b9c2b441461073d5780631ceb2bce146107655780632129455d1461078f57610603565b80631660ec43116103485780631660ec43146106975780631694505e146106bf57806318160ddd146106e9578063199ffc721461071357610603565b806306fdde0314610607578063095ea7b314610631578063132fa5a21461066d57610603565b36610603575f3490505f33905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610480576603e871b540c00082036103f1576706f05b59d3b2000060168190555061047b565b66044364c5bb0000820361041357670de0b6b3a764000060168190555061047a565b66049e57d6354000820361043557674563918244f40000601681905550610479565b6604f94ae6af8000820361045857600f601281905550600f601381905550610478565b6605543df729c000820361047757601460128190555060146013819055505b5b5b5b5b610601565b601c60149054906101000a900460ff166104ed57601f5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166104ec575f6104eb575f5ffd5b5b5b601554821015610532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052990614663565b60405180910390fd5b601654821115610577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056e906146cb565b60405180910390fd5b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637e72fb5234336040518363ffffffff1660e01b81526004016105d29190614728565b5f604051808303818588803b1580156105e9575f5ffd5b505af11580156105fb573d5f5f3e3d5ffd5b50505050505b005b5f5ffd5b348015610612575f5ffd5b5061061b610fbd565b60405161062891906147a1565b60405180910390f35b34801561063c575f5ffd5b506106576004803603810190610652919061482b565b61104d565b6040516106649190614883565b60405180910390f35b348015610678575f5ffd5b5061068161106a565b60405161068e91906148ab565b60405180910390f35b3480156106a2575f5ffd5b506106bd60048036038101906106b8919061482b565b611070565b005b3480156106ca575f5ffd5b506106d36111fa565b6040516106e0919061491f565b60405180910390f35b3480156106f4575f5ffd5b506106fd61121f565b60405161070a91906148ab565b60405180910390f35b34801561071e575f5ffd5b50610727611228565b60405161073491906148ab565b60405180910390f35b348015610748575f5ffd5b50610763600480360381019061075e9190614962565b61122e565b005b348015610770575f5ffd5b50610779611302565b60405161078691906148ab565b60405180910390f35b34801561079a575f5ffd5b506107a3611308565b6040516107b09190614728565b60405180910390f35b3480156107c4575f5ffd5b506107df60048036038101906107da91906149a0565b61132d565b6040516107ec9190614883565b60405180910390f35b348015610800575f5ffd5b50610809611401565b60405161081691906148ab565b60405180910390f35b34801561082a575f5ffd5b50610833611407565b6040516108409190614728565b60405180910390f35b348015610854575f5ffd5b5061085d61142c565b60405161086a91906148ab565b60405180910390f35b34801561087e575f5ffd5b50610887611432565b60405161089491906148ab565b60405180910390f35b3480156108a8575f5ffd5b506108c360048036038101906108be919061482b565b61143b565b6040516108d09190614883565b60405180910390f35b3480156108e4575f5ffd5b506108ff60048036038101906108fa91906149f0565b6114e9565b005b34801561090c575f5ffd5b506109156115a8565b005b348015610922575f5ffd5b5061092b611640565b60405161093891906148ab565b60405180910390f35b34801561094c575f5ffd5b5061096760048036038101906109629190614a1b565b611646565b005b348015610974575f5ffd5b5061098f600480360381019061098a9190614a59565b6116de565b005b34801561099c575f5ffd5b506109a561176c565b6040516109b291906148ab565b60405180910390f35b3480156109c6575f5ffd5b506109e160048036038101906109dc9190614a97565b611772565b005b3480156109ee575f5ffd5b506109f76117f8565b604051610a0491906148ab565b60405180910390f35b348015610a18575f5ffd5b50610a216117ff565b604051610a2e91906148ab565b60405180910390f35b348015610a42575f5ffd5b50610a4b611805565b604051610a5891906148ab565b60405180910390f35b348015610a6c575f5ffd5b50610a876004803603810190610a8291906149f0565b61180b565b604051610a9491906148ab565b60405180910390f35b348015610aa8575f5ffd5b50610ab1611850565b005b348015610abe575f5ffd5b50610ad96004803603810190610ad491906149f0565b6118d7565b604051610ae69190614883565b60405180910390f35b348015610afa575f5ffd5b50610b036118f4565b604051610b1091906148ab565b60405180910390f35b348015610b24575f5ffd5b50610b3f6004803603810190610b3a91906149f0565b6118fa565b005b348015610b4c575f5ffd5b50610b676004803603810190610b6291906149f0565b611aa5565b005b348015610b74575f5ffd5b50610b8f6004803603810190610b8a91906149f0565b611bb9565b005b348015610b9c575f5ffd5b50610bb76004803603810190610bb29190614a97565b611ccd565b005b348015610bc4575f5ffd5b50610bcd611d53565b604051610bda9190614728565b60405180910390f35b348015610bee575f5ffd5b50610c096004803603810190610c0491906149f0565b611d7b565b604051610c169190614883565b60405180910390f35b348015610c2a575f5ffd5b50610c33611d98565b604051610c4091906147a1565b60405180910390f35b348015610c54575f5ffd5b50610c6f6004803603810190610c6a91906149f0565b611e28565b604051610c7c9190614883565b60405180910390f35b348015610c90575f5ffd5b50610cab6004803603810190610ca6919061482b565b611e44565b604051610cb89190614883565b60405180910390f35b348015610ccc575f5ffd5b50610cd5611f0c565b604051610ce291906148ab565b60405180910390f35b348015610cf6575f5ffd5b50610d116004803603810190610d0c9190614a59565b611f12565b005b348015610d1e575f5ffd5b50610d396004803603810190610d34919061482b565b611fa0565b604051610d469190614883565b60405180910390f35b348015610d5a575f5ffd5b50610d756004803603810190610d709190614a97565b611fbd565b604051610d829190614728565b60405180910390f35b348015610d96575f5ffd5b50610d9f611ff8565b604051610dac9190614728565b60405180910390f35b348015610dc0575f5ffd5b50610dc961201d565b604051610dd69190614728565b60405180910390f35b348015610dea575f5ffd5b50610df3612042565b604051610e0091906148ab565b60405180910390f35b348015610e14575f5ffd5b50610e1d612048565b604051610e2c93929190614ac2565b60405180910390f35b348015610e40575f5ffd5b50610e4961227f565b604051610e569190614728565b60405180910390f35b348015610e6a575f5ffd5b50610e856004803603810190610e809190614af7565b6122a4565b604051610e9291906148ab565b60405180910390f35b348015610ea6575f5ffd5b50610eaf612326565b604051610ebc91906148ab565b60405180910390f35b348015610ed0575f5ffd5b50610ed961232c565b604051610ee691906148ab565b60405180910390f35b348015610efa575f5ffd5b50610f03612332565b604051610f1091906148ab565b60405180910390f35b348015610f24575f5ffd5b50610f2d612338565b604051610f3a91906148ab565b60405180910390f35b348015610f4e575f5ffd5b50610f696004803603810190610f6491906149f0565b61233e565b005b348015610f76575f5ffd5b50610f7f612434565b005b348015610f8c575f5ffd5b50610fa76004803603810190610fa291906149f0565b6124d4565b604051610fb49190614883565b60405180910390f35b606060038054610fcc90614b62565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff890614b62565b80156110435780601f1061101a57610100808354040283529160200191611043565b820191905f5260205f20905b81548152906001019060200180831161102657829003601f168201915b5050505050905090565b5f6110606110596124f1565b84846124f8565b6001905092915050565b60135481565b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110aa9190614728565b602060405180830381865afa1580156110c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e99190614ba6565b101561112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190614c41565b60405180910390fd5b601f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156111f6578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111b4929190614c5f565b6020604051808303815f875af11580156111d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f49190614c9a565b505b5050565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b60125481565b6112366124f1565b73ffffffffffffffffffffffffffffffffffffffff16611254611d53565b73ffffffffffffffffffffffffffffffffffffffff16146112aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a190614d0f565b60405180910390fd5b80601f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6113398484846126bb565b6113f6846113456124f1565b6113f1856040518060600160405280602881526020016157936028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6113a86124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b6124f8565b600190509392505050565b600f5481565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b5f600554905090565b5f6114df6114476124f1565b846114da8560015f6114576124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354a90919063ffffffff16565b6124f8565b6001905092915050565b6114f16124f1565b73ffffffffffffffffffffffffffffffffffffffff1661150f611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90614d0f565b60405180910390fd5b8060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115b06124f1565b73ffffffffffffffffffffffffffffffffffffffff166115ce611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90614d0f565b60405180910390fd5b5f601c60146101000a81548160ff021916908315150217905550565b60095481565b601f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156116da578073ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156116d8573d5f5f3e3d5ffd5b505b5050565b6116e66124f1565b73ffffffffffffffffffffffffffffffffffffffff16611704611d53565b73ffffffffffffffffffffffffffffffffffffffff161461175a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175190614d0f565b60405180910390fd5b81601681905550806015819055505050565b600e5481565b61177a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611798611d53565b73ffffffffffffffffffffffffffffffffffffffff16146117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590614d0f565b60405180910390fd5b80600d8190555050565b5f42905090565b600c5481565b600a5481565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6118586124f1565b73ffffffffffffffffffffffffffffffffffffffff16611876611d53565b73ffffffffffffffffffffffffffffffffffffffff16146118cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c390614d0f565b60405180910390fd5b6118d55f6135a7565b565b601f602052805f5260405f205f915054906101000a900460ff1681565b60155481565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198090614d77565b60405180910390fd5b5f813b90505f81111561199c5750611aa2565b60205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611aa057602182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b505b50565b611aad6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611acb611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890614d0f565b60405180910390fd5b80601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611bc16124f1565b73ffffffffffffffffffffffffffffffffffffffff16611bdf611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90614d0f565b60405180910390fd5b8060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611cd56124f1565b73ffffffffffffffffffffffffffffffffffffffff16611cf3611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4090614d0f565b60405180910390fd5b80600b8190555050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d602052805f5260405f205f915054906101000a900460ff1681565b606060048054611da790614b62565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd390614b62565b8015611e1e5780601f10611df557610100808354040283529160200191611e1e565b820191905f5260205f20905b815481529060010190602001808311611e0157829003601f168201915b5050505050905090565b60208052805f5260405f205f915054906101000a900460ff1681565b5f611f02611e506124f1565b84611efd856040518060600160405280602581526020016157bb6025913960015f611e796124f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b6124f8565b6001905092915050565b60115481565b611f1a6124f1565b73ffffffffffffffffffffffffffffffffffffffff16611f38611d53565b73ffffffffffffffffffffffffffffffffffffffff1614611f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8590614d0f565b60405180910390fd5b81601281905550806013819055505050565b5f611fb3611fac6124f1565b84846126bb565b6001905092915050565b60218181548110611fcc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b5f5f5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f5f8273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156120bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120df9190614e11565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691505f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121939190614e75565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1610156121d4578296508195506121db565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a0823160185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016122359190614728565b602060405180830381865afa158015612250573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122749190614ba6565b945050505050909192565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b600d5481565b60145481565b60165481565b6123466124f1565b73ffffffffffffffffffffffffffffffffffffffff16612364611d53565b73ffffffffffffffffffffffffffffffffffffffff16146123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614d0f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90614f10565b60405180910390fd5b612431816135a7565b50565b61243c6124f1565b73ffffffffffffffffffffffffffffffffffffffff1661245a611d53565b73ffffffffffffffffffffffffffffffffffffffff16146124b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a790614d0f565b60405180910390fd5b6001601c60146101000a81548160ff02191690831515021790555042601181905550565b601e602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90614f9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb9061502c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126ae91906148ab565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906150ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90615148565b60405180910390fd5b5f5f601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128375750601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128b957601e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156128b8575f6128958461366a565b90505f811180156128ac57506128aa866136d7565b155b156128b657600192505b505b5b601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612923575f612912846136ee565b90505f81111561292157600191505b505b601c60149054906101000a900460ff16801561294c5750601c60159054906101000a900460ff16155b801561298457503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156129d75750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129e1575081155b8015612a3a5750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612a555750601054601154612a519190615193565b4210155b15612a99576001601c60156101000a81548160ff021916908315150217905550612a7d6137e7565b505f601c60156101000a81548160ff0219169083151502179055505b5f601f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612b385750601f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b915750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612f88578215612c365760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612c31575f612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790615210565b60405180910390fd5b5b612f44565b8115612ddd57600160195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636386c1c7876040518263ffffffff1660e01b8152600401612c989190614728565b60c060405180830381865afa158015612cb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cd79190615347565b6040015103612d6a5760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633d1fc1db865f6040518363ffffffff1660e01b8152600401612d3c9291906153ab565b5f604051808303815f87803b158015612d53575f5ffd5b505af1158015612d65573d5f5f3e3d5ffd5b505050505b5f612d946103e8612d86600c5488613a4c90919063ffffffff16565b613ac390919063ffffffff16565b9050612dc287601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b0c565b612dd58186613d9590919063ffffffff16565b945050612f43565b601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ec65760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612ec1575f612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb79061541c565b60405180910390fd5b5b612f42565b601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612f4157612f3e6103e8612f30600b5487613a4c90919063ffffffff16565b613ac390919063ffffffff16565b90505b5b5b5b5f811115612f8757612f7886601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b0c565b8084612f84919061543a565b93505b5b5f841115612f9c57612f9b868686613b0c565b5b5f612fc7601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661180b565b90505f6014548210159050808015612fec5750601c60159054906101000a900460ff16155b801561303f5750601f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561307757503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156130ca5750601e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130d4575084155b80156131275750601e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156131805750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15613237576001601c60156101000a81548160ff021916908315150217905550601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1958e106040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613206575f5ffd5b505af1158015613218573d5f5f3e3d5ffd5b505050505f601c60156101000a81548160ff0219169083151502179055505b601c60149054906101000a900460ff16801561327f57503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b80156132995750600a546009546132969190615193565b43115b80156132ec5750601e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156132f6575084155b1561330f57613307620493e0613dde565b436009819055505b60075486036133f85760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313990ca89896040518363ffffffff1660e01b815260040161337492919061546d565b6020604051808303815f875af1158015613390573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b49190614c9a565b6133f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ea906154de565b60405180910390fd5b6134de565b60085486036134dd5760195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a706d6989896040518363ffffffff1660e01b815260040161345d92919061546d565b6020604051808303815f875af1158015613479573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061349d9190614c9a565b6134dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d390615546565b60405180910390fd5b5b5b5050505050505050565b5f83831115829061352f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352691906147a1565b60405180910390fd5b505f838561353d919061543a565b9050809150509392505050565b5f5f82846135589190615193565b90508381101561359d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613594906155ae565b60405180910390fd5b8091505092915050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f5f5f613676612048565b9250925092505f5f8411801561368b57505f83115b156136aa5782848761369d91906155cc565b6136a7919061563a565b90505b80846136b69190615193565b82106136ce576136c88287868661418a565b50809550505b50505050919050565b5f5f823b90505f8163ffffffff1611915050919050565b5f5f5f6136f9612048565b92505091508181116137e0578361373060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661180b565b61373a919061543a565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c89190614ba6565b856137d391906155cc565b6137dd919061563a565b92505b5050919050565b5f5f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016138439190614728565b602060405180830381865afa15801561385e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138829190614ba6565b9050600e54811115613a3d575f6138a460115442613d9590919063ffffffff16565b90505f6138f7826138e9620151806138db6103e86138cd6012548a613a4c90919063ffffffff16565b613ac390919063ffffffff16565b613ac390919063ffffffff16565b613a4c90919063ffffffff16565b90505f8111156139305761392f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613b0c565b5b5f61398183613973620151806139656103e86139576013548b613a4c90919063ffffffff16565b613ac390919063ffffffff16565b613ac390919063ffffffff16565b613a4c90919063ffffffff16565b90505f8111156139b8576139b760185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083613b0c565b5b5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613a22575f5ffd5b505af1158015613a34573d5f5f3e3d5ffd5b50505050505050505b42601181905550600191505090565b5f5f8303613a5c575f9050613abd565b5f8284613a6991906155cc565b9050828482613a78919061563a565b14613ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aaf906156da565b60405180910390fd5b809150505b92915050565b5f613b0483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614514565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b71906150ba565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdf90615148565b60405180910390fd5b613bf3838383614575565b613c5c8160405180606001604052806026815260200161576d602691395f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546134e89092919063ffffffff16565b5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550613ceb815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461354a90919063ffffffff16565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8891906148ab565b60405180910390a3505050565b5f613dd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134e8565b905092915050565b5f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e189190614728565b602060405180830381865afa158015613e33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e579190614ba6565b90505f819050600d548111613e6d575050614187565b5f60218054905090505f8103613e8557505050614187565b5f5f90505f5a90505f5f90505b8683108015613ea057508381105b156141805783600f5410613eb6575f600f819055505b5f61403e60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f489190614ba6565b61403060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082316021600f5481548110613f9e57613f9d6156f8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613fe29190614728565b602060405180830381865afa158015613ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140219190614ba6565b8a613a4c90919063ffffffff16565b613ac390919063ffffffff16565b9050808610156140545750505050505050614187565b5f81111561412b573073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6021600f548154811061408e5761408d6156f8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016140d4929190614c5f565b6020604051808303815f875af11580156140f0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141149190614c9a565b506141288187613d9590919063ffffffff16565b95505b6141506141415a85613d9590919063ffffffff16565b8561354a90919063ffffffff16565b93505a9250600f5f81548092919061416790615725565b9190505550818061417790615725565b92505050613e92565b5050505050505b50565b5f5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061421b9190614ba6565b90505f601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614288573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142ac9190614e75565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143189190614e75565b90505f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590505f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143dc9190614ba6565b9050811561448f575f811461448e575f614400888a6143fb91906155cc565b61457a565b90505f61440c8361457a565b90508082111561448b575f60088284614425919061543a565b8861443091906155cc565b61443a91906155cc565b90505f60088361444a91906155cc565b60118561445791906155cc565b6144619190615193565b9050808261446f919061563a565b98505f8911156144885788886144859190615193565b97505b50505b50505b5b5f888b61449c919061543a565b90505f85036144cd576103e86144bc8b836144b791906155cc565b61457a565b6144c6919061543a565b9650614506565b6145038986836144dd91906155cc565b6144e7919061563a565b89878d6144f491906155cc565b6144fe919061563a565b6145f1565b96505b505050505094509492505050565b5f5f8311829061455a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455191906147a1565b60405180910390fd5b505f8385614568919061563a565b9050809150509392505050565b505050565b5f60038211156145df578190505f6001600284614597919061563a565b6145a19190615193565b90505b818110156145d95780915060028182856145be919061563a565b6145c89190615193565b6145d2919061563a565b90506145a4565b506145ec565b5f82146145eb57600190505b5b919050565b5f8183106145ff5781614601565b825b905092915050565b5f82825260208201905092915050565b7f424e4220616d6f756e7420746f6f20736d616c6c0000000000000000000000005f82015250565b5f61464d601483614609565b915061465882614619565b602082019050919050565b5f6020820190508181035f83015261467a81614641565b9050919050565b7f45786365656465206d617820424e4220616d6f756e74000000000000000000005f82015250565b5f6146b5601683614609565b91506146c082614681565b602082019050919050565b5f6020820190508181035f8301526146e2816146a9565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614712826146e9565b9050919050565b61472281614708565b82525050565b5f60208201905061473b5f830184614719565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61477382614741565b61477d8185614609565b935061478d81856020860161474b565b61479681614759565b840191505092915050565b5f6020820190508181035f8301526147b98184614769565b905092915050565b5f604051905090565b5f5ffd5b6147d781614708565b81146147e1575f5ffd5b50565b5f813590506147f2816147ce565b92915050565b5f819050919050565b61480a816147f8565b8114614814575f5ffd5b50565b5f8135905061482581614801565b92915050565b5f5f60408385031215614841576148406147ca565b5b5f61484e858286016147e4565b925050602061485f85828601614817565b9150509250929050565b5f8115159050919050565b61487d81614869565b82525050565b5f6020820190506148965f830184614874565b92915050565b6148a5816147f8565b82525050565b5f6020820190506148be5f83018461489c565b92915050565b5f819050919050565b5f6148e76148e26148dd846146e9565b6148c4565b6146e9565b9050919050565b5f6148f8826148cd565b9050919050565b5f614909826148ee565b9050919050565b614919816148ff565b82525050565b5f6020820190506149325f830184614910565b92915050565b61494181614869565b811461494b575f5ffd5b50565b5f8135905061495c81614938565b92915050565b5f5f60408385031215614978576149776147ca565b5b5f614985858286016147e4565b92505060206149968582860161494e565b9150509250929050565b5f5f5f606084860312156149b7576149b66147ca565b5b5f6149c4868287016147e4565b93505060206149d5868287016147e4565b92505060406149e686828701614817565b9150509250925092565b5f60208284031215614a0557614a046147ca565b5b5f614a12848285016147e4565b91505092915050565b5f5f60408385031215614a3157614a306147ca565b5b5f614a3e85828601614817565b9250506020614a4f858286016147e4565b9150509250929050565b5f5f60408385031215614a6f57614a6e6147ca565b5b5f614a7c85828601614817565b9250506020614a8d85828601614817565b9150509250929050565b5f60208284031215614aac57614aab6147ca565b5b5f614ab984828501614817565b91505092915050565b5f606082019050614ad55f83018661489c565b614ae2602083018561489c565b614aef604083018461489c565b949350505050565b5f5f60408385031215614b0d57614b0c6147ca565b5b5f614b1a858286016147e4565b9250506020614b2b858286016147e4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614b7957607f821691505b602082108103614b8c57614b8b614b35565b5b50919050565b5f81519050614ba081614801565b92915050565b5f60208284031215614bbb57614bba6147ca565b5b5f614bc884828501614b92565b91505092915050565b7f54686520746f6b656e20616d6f756e7420696e207468697320636f6e747261635f8201527f7420697320696e73756666696369656e742e0000000000000000000000000000602082015250565b5f614c2b603283614609565b9150614c3682614bd1565b604082019050919050565b5f6020820190508181035f830152614c5881614c1f565b9050919050565b5f604082019050614c725f830185614719565b614c7f602083018461489c565b9392505050565b5f81519050614c9481614938565b92915050565b5f60208284031215614caf57614cae6147ca565b5b5f614cbc84828501614c86565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614cf9602083614609565b9150614d0482614cc5565b602082019050919050565b5f6020820190508181035f830152614d2681614ced565b9050919050565b7f6e6f20726967687420746f6b656e2061646472657373000000000000000000005f82015250565b5f614d61601683614609565b9150614d6c82614d2d565b602082019050919050565b5f6020820190508181035f830152614d8e81614d55565b9050919050565b5f6dffffffffffffffffffffffffffff82169050919050565b614db781614d95565b8114614dc1575f5ffd5b50565b5f81519050614dd281614dae565b92915050565b5f63ffffffff82169050919050565b614df081614dd8565b8114614dfa575f5ffd5b50565b5f81519050614e0b81614de7565b92915050565b5f5f5f60608486031215614e2857614e276147ca565b5b5f614e3586828701614dc4565b9350506020614e4686828701614dc4565b9250506040614e5786828701614dfd565b9150509250925092565b5f81519050614e6f816147ce565b92915050565b5f60208284031215614e8a57614e896147ca565b5b5f614e9784828501614e61565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614efa602683614609565b9150614f0582614ea0565b604082019050919050565b5f6020820190508181035f830152614f2781614eee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614f88602483614609565b9150614f9382614f2e565b604082019050919050565b5f6020820190508181035f830152614fb581614f7c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615016602283614609565b915061502182614fbc565b604082019050919050565b5f6020820190508181035f8301526150438161500a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6150a4602583614609565b91506150af8261504a565b604082019050919050565b5f6020820190508181035f8301526150d181615098565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615132602383614609565b915061513d826150d8565b604082019050919050565b5f6020820190508181035f83015261515f81615126565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61519d826147f8565b91506151a8836147f8565b92508282019050808211156151c0576151bf615166565b5b92915050565b7f6e6f7420616464000000000000000000000000000000000000000000000000005f82015250565b5f6151fa600783614609565b9150615205826151c6565b602082019050919050565b5f6020820190508181035f830152615227816151ee565b9050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61526882614759565b810181811067ffffffffffffffff8211171561528757615286615232565b5b80604052505050565b5f6152996147c1565b90506152a5828261525f565b919050565b5f60c082840312156152bf576152be61522e565b5b6152c960c0615290565b90505f6152d884828501614e61565b5f8301525060206152eb84828501614e61565b60208301525060406152ff84828501614b92565b604083015250606061531384828501614b92565b606083015250608061532784828501614b92565b60808301525060a061533b84828501614b92565b60a08301525092915050565b5f60c0828403121561535c5761535b6147ca565b5b5f615369848285016152aa565b91505092915050565b5f819050919050565b5f61539561539061538b84615372565b6148c4565b6147f8565b9050919050565b6153a58161537b565b82525050565b5f6040820190506153be5f830185614719565b6153cb602083018461539c565b9392505050565b7f6e6f7420627579000000000000000000000000000000000000000000000000005f82015250565b5f615406600783614609565b9150615411826153d2565b602082019050919050565b5f6020820190508181035f830152615433816153fa565b9050919050565b5f615444826147f8565b915061544f836147f8565b925082820390508181111561546757615466615166565b5b92915050565b5f6040820190506154805f830185614719565b61548d6020830184614719565b9392505050565b7f62696e642072657175657374206661696c6564000000000000000000000000005f82015250565b5f6154c8601383614609565b91506154d382615494565b602082019050919050565b5f6020820190508181035f8301526154f5816154bc565b9050919050565b7f62696e6420636f6e6669726d206661696c6564000000000000000000000000005f82015250565b5f615530601383614609565b915061553b826154fc565b602082019050919050565b5f6020820190508181035f83015261555d81615524565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615598601b83614609565b91506155a382615564565b602082019050919050565b5f6020820190508181035f8301526155c58161558c565b9050919050565b5f6155d6826147f8565b91506155e1836147f8565b92508282026155ef816147f8565b9150828204841483151761560657615605615166565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615644826147f8565b915061564f836147f8565b92508261565f5761565e61560d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6156c4602183614609565b91506156cf8261566a565b604082019050919050565b5f6020820190508181035f8301526156f1816156b8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61572f826147f8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361576157615760615166565b5b60018201905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220599b552d3da5ffe2699f1ee1f8987cc4b3f3a2574ce6f9bda6d15d537cb53f3464736f6c634300081e0033

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

000000000000000000000000225a6c782ce18ba454f2e7c1269b2024e5a08f1f

-----Decoded View---------------
Arg [0] : _managerAddress (address): 0x225a6C782ce18BA454F2E7c1269B2024E5a08f1F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000225a6c782ce18ba454f2e7c1269b2024e5a08f1f


Deployed Bytecode Sourcemap

12320:15476:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14529:13;14545:9;14529:25;;14565:14;14582:10;14565:27;;14617:14;;;;;;;;;;;14607:24;;:6;:24;;;14603:1118;;14661:16;14652:5;:25;14648:633;;14739:18;14724:12;:33;;;;14648:633;;;14802:16;14793:5;:25;14789:492;;14854:19;14839:12;:34;;;;14789:492;;;14916:16;14907:5;:25;14903:378;;14968:19;14953:12;:34;;;;14903:378;;;15030:16;15021:5;:25;15017:264;;15086:2;15067:16;:21;;;;15128:2;15107:18;:23;;;;15017:264;;;15165:16;15156:5;:25;15152:129;;15221:2;15202:16;:21;;;;15263:2;15242:18;:23;;;;15152:129;15017:264;14903:378;14789:492;14648:633;14603:1118;;;15318:8;;;;;;;;;;;15313:134;;15352:13;:21;15366:6;15352:21;;;;;;;;;;;;;;;;;;;;;;;;;15347:85;;15406:5;15398:14;;;;;;15347:85;15313:134;15478:12;;15469:5;:21;;15461:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15547:12;;15538:5;:21;;15530:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15616:21;;;;;;;;;;;15601:46;;;15655:9;15684:10;15601:108;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14603:1118;14518:1210;12320:15476;;;;4952:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5941:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12922:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26069:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13367:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5282:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12879:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26684:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12559:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13203:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12739:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13287:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12773:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5172:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6605:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27260:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25844:71;;;;;;;;;;;;;:::i;:::-;;12471:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26410:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27492:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12689:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26582:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1152:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12601:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12510:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5398:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;795:103;;;;;;;;;;;;;:::i;:::-;;13635:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13020:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22780:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27041:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26809:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27390:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;572:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13541:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5060:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13687:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12825:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27640:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5549:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13734:30;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13246:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13170:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12434:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20440:560;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13132:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5757:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12398:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12643:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12967:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13075:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;906:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25724:112;;;;;;;;;;;;;:::i;:::-;;13591:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4952:100;5006:13;5039:5;5032:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4952:100;:::o;5941:194::-;6049:4;6066:39;6075:12;:10;:12::i;:::-;6089:7;6098:6;6066:8;:39::i;:::-;6123:4;6116:11;;5941:194;;;;:::o;12922:38::-;;;;:::o;26069:333::-;26202:4;26166:6;26159:24;;;26192:4;26159:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;26136:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;26300:13;:25;26314:10;26300:25;;;;;;;;;;;;;;;;;;;;;;;;;26296:99;;;26349:6;26342:23;;;26366:10;26378:4;26342:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26296:99;26069:333;;:::o;13367:115::-;;;;;;;;;;;;;:::o;5282:108::-;5343:7;5370:12;;5363:19;;5282:108;:::o;12879:36::-;;;;:::o;26684:117::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26792:1:::1;26766:13;:23;26780:8;26766:23;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26684:117:::0;;:::o;12559:35::-;;;;:::o;13203:36::-;;;;;;;;;;;;;:::o;6143:454::-;6283:4;6300:36;6310:6;6318:9;6329:6;6300:9;:36::i;:::-;6347:220;6370:6;6391:12;:10;:12::i;:::-;6418:138;6474:6;6418:138;;;;;;;;;;;;;;;;;:11;:19;6430:6;6418:19;;;;;;;;;;;;;;;:33;6438:12;:10;:12::i;:::-;6418:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6347:8;:220::i;:::-;6585:4;6578:11;;6143:454;;;;;:::o;12739:27::-;;;;:::o;13287:71::-;;;;;;;;;;;;;:::o;12773:45::-;;;;:::o;5172:102::-;5230:7;5257:9;;5250:16;;5172:102;:::o;6605:293::-;6718:4;6735:133;6758:12;:10;:12::i;:::-;6785:7;6807:50;6846:10;6807:11;:25;6819:12;:10;:12::i;:::-;6807:25;;;;;;;;;;;;;;;:34;6833:7;6807:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6735:8;:133::i;:::-;6886:4;6879:11;;6605:293;;;;:::o;27260:122::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27359:15:::1;27342:14;;:32;;;;;;;;;;;;;;;;;;27260:122:::0;:::o;25844:71::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25902:5:::1;25891:8;;:16;;;;;;;;;;;;;;;;;;25844:71::o:0;12471:32::-;;;;:::o;26410:164::-;26483:13;:25;26497:10;26483:25;;;;;;;;;;;;;;;;;;;;;;;;;26479:88;;;26533:4;26525:22;;:30;26548:6;26525:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26479:88;26410:164;;:::o;27492:140::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27590:4:::1;27575:12;:19;;;;27620:4;27605:12;:19;;;;27492:140:::0;;:::o;12689:43::-;;;;:::o;26582:94::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26664:4:::1;26650:11;:18;;;;26582:94:::0;:::o;1152:90::-;1192:7;1219:15;1212:22;;1152:90;:::o;12601:35::-;;;;:::o;12510:42::-;;;;:::o;5398:143::-;5488:7;5515:9;:18;5525:7;5515:18;;;;;;;;;;;;;;;;5508:25;;5398:143;;;:::o;795:103::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;860:30:::1;887:1;860:18;:30::i;:::-;795:103::o:0;13635:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13020:39::-;;;;:::o;22780:378::-;25993:21;;;;;;;;;;;25979:35;;:10;:35;;;25971:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22865:12:::1;22932:11;22920:24;22912:32;;22976:1;22969:4;:8;22965:47;;;22994:7;;;22965:47;23027:8;:21;23036:11;23027:21;;;;;;;;;;;;;;;;;;;;;;;;;23022:129;;23065:13;23084:11;23065:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23135:4;23111:8;:21;23120:11;23111:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23022:129;22854:304;26052:1;22780:378:::0;:::o;27041:211::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27171:20:::1;27149:19;;:42;;;;;;;;;;;;;;;;;;27240:4;27202:13;:35;27216:20;27202:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;27041:211:::0;:::o;26809:224::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26946:23:::1;26922:21;;:47;;;;;;;;;;;;;;;;;;27021:4;26980:13;:38;26994:23;26980:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;26809:224:::0;:::o;27390:94::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27472:4:::1;27454:15;:22;;;;27390:94:::0;:::o;572:87::-;618:7;645:6;;;;;;;;;;;638:13;;572:87;:::o;13541:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;5060:104::-;5116:13;5149:7;5142:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:104;:::o;13687:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;6906:393::-;7024:4;7041:228;7064:12;:10;:12::i;:::-;7091:7;7113:145;7170:15;7113:145;;;;;;;;;;;;;;;;;:11;:25;7125:12;:10;:12::i;:::-;7113:25;;;;;;;;;;;;;;;:34;7139:7;7113:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;7041:8;:228::i;:::-;7287:4;7280:11;;6906:393;;;;:::o;12825:47::-;;;;:::o;27640:153::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27741:5:::1;27722:16;:24;;;;27778:7;27757:18;:28;;;;27640:153:::0;;:::o;5549:200::-;5660:4;5677:42;5687:12;:10;:12::i;:::-;5701:9;5712:6;5677:9;:42::i;:::-;5737:4;5730:11;;5549:200;;;;:::o;13734:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13246:34::-;;;;;;;;;;;;;:::o;13170:26::-;;;;;;;;;;;;;:::o;12434:28::-;;;;:::o;20440:560::-;20512:14;20528:13;20543:20;20581:23;20622:11;;;;;;;;;;;20581:53;;20646:7;20655:10;20671:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20645:48;;;;;;;;;20706:18;20727:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20706:43;;20785:4;20764:26;;:10;:26;;;20760:164;;;20816:2;20807:11;;20841:2;20833:10;;20760:164;;;20885:2;20876:11;;20910:2;20902:10;;20760:164;20958:10;20951:28;;;20980:11;;;;;;;;;;;20951:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20936:56;;20570:430;;;;20440:560;;;:::o;13132:29::-;;;;;;;;;;;;;:::o;5757:176::-;5871:7;5898:11;:18;5910:5;5898:18;;;;;;;;;;;;;;;:27;5917:7;5898:27;;;;;;;;;;;;;;;;5891:34;;5757:176;;;;:::o;12398:29::-;;;;:::o;12643:39::-;;;;:::o;12967:46::-;;;;:::o;13075:39::-;;;;:::o;906:238::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1029:1:::1;1009:22;;:8;:22;;::::0;987:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1108:28;1127:8;1108:18;:28::i;:::-;906:238:::0;:::o;25724:112::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25781:4:::1;25770:8;;:15;;;;;;;;;;;;;;;;;;25813;25796:14;:32;;;;25724:112::o:0;13591:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;8774:380::-;8927:1;8910:19;;:5;:19;;;8902:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9008:1;8989:21;;:7;:21;;;8981:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9092:6;9062:11;:18;9074:5;9062:18;;;;;;;;;;;;;;;:27;9081:7;9062:27;;;;;;;;;;;;;;;:36;;;;9130:7;9114:32;;9123:5;9114:32;;;9139:6;9114:32;;;;;;:::i;:::-;;;;;;;;8774:380;;;:::o;15736:4020::-;15884:1;15868:18;;:4;:18;;;15860:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15961:1;15947:16;;:2;:16;;;15939:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16016:10;16037:13;16066;:19;16080:4;16066:19;;;;;;;;;;;;;;;;;;;;;;;;;16065:20;:42;;;;;16090:13;:17;16104:2;16090:17;;;;;;;;;;;;;;;;;;;;;;;;;16089:18;16065:42;16061:290;;;16128:5;:9;16134:2;16128:9;;;;;;;;;;;;;;;;;;;;;;;;;16124:216;;;16158:22;16183:23;16199:6;16183:15;:23::i;:::-;16158:48;;16246:1;16229:14;:18;:39;;;;;16252:16;16263:4;16252:10;:16::i;:::-;16251:17;16229:39;16225:100;;;16301:4;16293:12;;16225:100;16139:201;16124:216;16061:290;16365:5;:11;16371:4;16365:11;;;;;;;;;;;;;;;;;;;;;;;;;16361:189;;;16393:25;16421:26;16440:6;16421:18;:26::i;:::-;16393:54;;16486:1;16466:17;:21;16462:77;;;16519:4;16508:15;;16462:77;16378:172;16361:189;16580:8;;;;;;;;;;;:34;;;;;16606:8;;;;;;;;;;;16605:9;16580:34;:72;;;;;16647:4;16631:21;;:4;:21;;;;16580:72;:101;;;;;16670:5;:11;16676:4;16670:11;;;;;;;;;;;;;;;;;;;;;;;;;16669:12;16580:101;:124;;;;;16699:5;16698:6;16580:124;:173;;;;;16737:15;;;;;;;;;;;16721:32;;:4;:32;;;;16580:173;:241;;;;;16806:15;;16789:14;;:32;;;;:::i;:::-;16770:15;:51;;16580:241;16562:388;;;16859:4;16848:8;;:15;;;;;;;;;;;;;;;;;;16878:29;:27;:29::i;:::-;;16933:5;16922:8;;:16;;;;;;;;;;;;;;;;;;16562:388;16962:20;17012:13;:19;17026:4;17012:19;;;;;;;;;;;;;;;;;;;;;;;;;17011:20;:55;;;;;17049:13;:17;17063:2;17049:17;;;;;;;;;;;;;;;;;;;;;;;;;17048:18;17011:55;:104;;;;;17099:15;;;;;;;;;;;17083:32;;:4;:32;;;;17011:104;16993:1271;;;17146:5;17142:943;;;17190:21;;;;;;;;;;;17176:36;;:2;:36;;;17172:110;;17245:5;17237:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;17172:110;17142:943;;;17307:8;17303:782;;;17479:1;17377:21;;;;;;;;;;;17362:75;;;17438:2;17362:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:113;;;:118;17336:260;;17538:21;;;;;;;;;;;17523:46;;;17570:2;17574:1;17523:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17336:260;17614:21;17638:35;17668:4;17638:25;17649:13;;17638:6;:10;;:25;;;;:::i;:::-;:29;;:35;;;;:::i;:::-;17614:59;;17692:49;17708:4;17714:11;;;;;;;;;;;17727:13;17692:15;:49::i;:::-;17769:25;17780:13;17769:6;:10;;:25;;;;:::i;:::-;17760:34;;17317:493;17303:782;;;17820:5;:11;17826:4;17820:11;;;;;;;;;;;;;;;;;;;;;;;;;17816:269;;;17870:21;;;;;;;;;;;17856:36;;:2;:36;;;17852:110;;17925:5;17917:25;;;;;;;;;;;;:::i;:::-;;;;;;;;;17852:110;17816:269;;;17987:5;:9;17993:2;17987:9;;;;;;;;;;;;;;;;;;;;;;;;;17983:102;;;18032:37;18064:4;18032:27;18043:15;;18032:6;:10;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;18017:52;;17983:102;17816:269;17303:782;17142:943;18118:1;18103:12;:16;18099:154;;;18140:56;18156:4;18162:19;;;;;;;;;;;18183:12;18140:15;:56::i;:::-;18225:12;18215:22;;;;;:::i;:::-;;;18099:154;16993:1271;18287:1;18278:6;:10;18274:76;;;18305:33;18321:4;18327:2;18331:6;18305:15;:33::i;:::-;18274:76;18362:28;18393:30;18403:19;;;;;;;;;;;18393:9;:30::i;:::-;18362:61;;18434:12;18473:18;;18449:20;:42;;18434:57;;18520:7;:33;;;;;18545:8;;;;;;;;;;;18544:9;18520:33;:70;;;;;18571:13;:19;18585:4;18571:19;;;;;;;;;;;;;;;;;;;;;;;;;18570:20;18520:70;:108;;;;;18623:4;18607:21;;:4;:21;;;;18520:108;:137;;;;;18646:5;:11;18652:4;18646:11;;;;;;;;;;;;;;;;;;;;;;;;;18645:12;18520:137;:160;;;;;18675:5;18674:6;18520:160;:187;;;;;18698:5;:9;18704:2;18698:9;;;;;;;;;;;;;;;;;;;;;;;;;18697:10;18520:187;:236;;;;;18740:15;;;;;;;;;;;18724:32;;:4;:32;;;;18520:236;18502:396;;;18794:4;18783:8;;:15;;;;;;;;;;;;;;;;;;18826:19;;;;;;;;;;;18813:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18881:5;18870:8;;:16;;;;;;;;;;;;;;;;;;18502:396;18928:8;;;;;;;;;;;:46;;;;;18969:4;18953:21;;:4;:21;;;;18928:46;:120;;;;;19026:22;;19006:17;;:42;;;;:::i;:::-;18991:12;:57;18928:120;:149;;;;;19066:5;:11;19072:4;19066:11;;;;;;;;;;;;;;;;;;;;;;;;;19065:12;18928:149;:172;;;;;19095:5;19094:6;18928:172;18910:296;;;19127:20;19140:6;19127:12;:20::i;:::-;19182:12;19162:17;:32;;;;18910:296;19378:7;;19368:6;:17;19364:385;;19443:21;;;;;;;;;;;19428:49;;;19478:4;19484:2;19428:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19402:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19364:385;;;19574:6;;19564;:16;19560:189;;19638:21;;;;;;;;;;;19623:49;;;19673:4;19679:2;19623:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19597:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;19560:189;19364:385;15849:3907;;;;;15736:4020;;;:::o;3234:226::-;3354:7;3387:1;3382;:6;;3390:12;3374:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3414:9;3430:1;3426;:5;;;;:::i;:::-;3414:17;;3451:1;3444:8;;;3234:226;;;;;:::o;2901:181::-;2959:7;2979:9;2995:1;2991;:5;;;;:::i;:::-;2979:17;;3020:1;3015;:6;;3007:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3073:1;3066:8;;;2901:181;;;;:::o;1250:191::-;1324:16;1343:6;;;;;;;;;;;1324:25;;1369:8;1360:6;;:17;;;;;;;;;;;;;;;;;;1424:8;1393:40;;1414:8;1393:40;;;;;;;;;;;;1313:128;1250:191;:::o;19965:467::-;20045:17;20076:14;20092:13;20107:20;20131:14;:12;:14::i;:::-;20075:70;;;;;;20156:19;20199:1;20190:6;:10;:23;;;;;20212:1;20204:5;:9;20190:23;20186:95;;;20264:5;20254:6;20245;:15;;;;:::i;:::-;20244:25;;;;:::i;:::-;20230:39;;20186:95;20320:11;20311:6;:20;;;;:::i;:::-;20295:12;:36;20291:134;;20364:49;20377:12;20391:6;20399;20407:5;20364:12;:49::i;:::-;20348:65;;;;;20291:134;20064:368;;;;19965:467;;;:::o;23166:192::-;23223:4;23240:11;23306:5;23294:18;23286:26;;23348:1;23341:4;:8;;;23333:17;;;23166:192;;;:::o;21008:377::-;21091:17;21122:14;21140:20;21164:14;:12;:14::i;:::-;21121:57;;;;;21209:6;21193:12;:22;21189:189;;21359:6;21334:22;21344:11;;;;;;;;;;;21334:9;:22::i;:::-;:31;;;;:::i;:::-;21286:11;;;;;;;;;;;21271:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21262:6;:50;;;;:::i;:::-;21261:105;;;;:::i;:::-;21232:134;;21189:189;21110:275;;21008:377;;;:::o;24593:1123::-;24650:4;24667:28;24698:4;:14;;;24713:11;;;;;;;;;;;24698:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24667:58;;24763:13;;24740:20;:36;24736:908;;;24793:12;24808:35;24828:14;;24808:15;:19;;:35;;;;:::i;:::-;24793:50;;24858:20;24881:145;25021:4;24881:117;24992:5;24881:88;24964:4;24881:60;24924:16;;24881:20;:42;;:60;;;;:::i;:::-;:82;;:88;;;;:::i;:::-;:110;;:117;;;;:::i;:::-;:139;;:145;;;;:::i;:::-;24858:168;;25060:1;25045:12;:16;25041:116;;;25082:59;25098:11;;;;;;;;;;;25119:6;25128:12;25082:15;:59::i;:::-;25041:116;25171:22;25196:147;25338:4;25196:119;25309:5;25196:90;25281:4;25196:62;25239:18;;25196:20;:42;;:62;;;;:::i;:::-;:84;;:90;;;;:::i;:::-;:112;;:119;;;;:::i;:::-;:141;;:147;;;;:::i;:::-;25171:172;;25379:1;25362:14;:18;25358:118;;;25401:59;25417:11;;;;;;;;;;;25438:4;25445:14;25401:15;:59::i;:::-;25358:118;25557:19;25594:11;;;;;;;;;;;25557:49;;25621:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24778:866;;;;24736:908;25671:15;25654:14;:32;;;;25704:4;25697:11;;;24593:1123;:::o;3468:250::-;3526:7;3555:1;3550;:6;3546:47;;3580:1;3573:8;;;;3546:47;3605:9;3621:1;3617;:5;;;;:::i;:::-;3605:17;;3650:1;3645;3641;:5;;;;:::i;:::-;:10;3633:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3709:1;3702:8;;;3468:250;;;;;:::o;3726:132::-;3784:7;3811:39;3815:1;3818;3811:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3804:46;;3726:132;;;;:::o;7307:610::-;7465:1;7447:20;;:6;:20;;;7439:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7549:1;7528:23;;:9;:23;;;7520:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7604:47;7625:6;7633:9;7644:6;7604:20;:47::i;:::-;7684:108;7720:6;7684:108;;;;;;;;;;;;;;;;;:9;:17;7694:6;7684:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;7664:9;:17;7674:6;7664:17;;;;;;;;;;;;;;;:128;;;;7826:32;7851:6;7826:9;:20;7836:9;7826:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7803:9;:20;7813:9;7803:20;;;;;;;;;;;;;;;:55;;;;7891:9;7874:35;;7883:6;7874:35;;;7902:6;7874:35;;;;;;:::i;:::-;;;;;;;;7307:610;;;:::o;3090:136::-;3148:7;3175:43;3179:1;3182;3175:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3168:50;;3090:136;;;;:::o;23366:1219::-;23420:13;23451:4;23436:31;;;23476:4;23436:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23420:62;;23493:14;23510:5;23493:22;;23540:11;;23530:6;:21;23526:60;;23568:7;;;;23526:60;23596:24;23623:13;:20;;;;23596:47;;23678:1;23658:16;:21;23654:34;;23681:7;;;;;23654:34;23698:15;23716:1;23698:19;;23728:15;23746:9;23728:27;;23766:18;23787:1;23766:22;;23801:777;23818:3;23808:7;:13;:46;;;;;23838:16;23825:10;:29;23808:46;23801:777;;;23891:16;23875:12;;:32;23871:89;;23943:1;23928:12;:16;;;;23871:89;23974:14;23991:144;24108:11;;;;;;;;;;;24101:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23991:87;24026:11;;;;;;;;;;;24019:29;;;24049:13;24063:12;;24049:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24019:58;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23991:5;:27;;:87;;;;:::i;:::-;:109;;:144;;;;:::i;:::-;23974:161;;24163:6;24154;:15;24150:28;;;24171:7;;;;;;;;;24150:28;24205:1;24196:6;:10;24192:225;;;24242:4;24227:30;;;24280:13;24294:12;;24280:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24330:6;24227:128;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24383:18;24394:6;24383;:10;;:18;;;;:::i;:::-;24374:27;;24192:225;24441:35;24453:22;24465:9;24453:7;:11;;:22;;;;:::i;:::-;24441:7;:11;;:35;;;;:::i;:::-;24431:45;;24501:9;24491:19;;24525:12;;:14;;;;;;;;;:::i;:::-;;;;;;24554:12;;;;;:::i;:::-;;;;23856:722;23801:777;;;23409:1176;;;;;;23366:1219;;:::o;21393:1379::-;21538:17;21557:22;21592:23;21633:11;;;;;;;;;;;21618:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21592:67;;21670:13;21704:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21686:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21670:68;;21749:10;21779:1;21762:19;;:5;:19;;;;21749:32;;21792:14;21824:11;;;;;;;;;;;21809:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21792:52;;21859:5;21855:590;;;21895:1;21885:6;:11;21881:553;;21917:13;21933:18;21948:2;21943;:7;;;;:::i;:::-;21933:9;:18::i;:::-;21917:34;;21970:17;21990;22000:6;21990:9;:17::i;:::-;21970:37;;22038:9;22030:5;:17;22026:393;;;22072:17;22182:1;22144:9;22136:5;:17;;;;:::i;:::-;22092:15;:62;;;;:::i;:::-;:91;;;;:::i;:::-;22072:111;;22206:19;22254:1;22242:9;:13;;;;:::i;:::-;22236:2;22228:5;:10;;;;:::i;:::-;:28;;;;:::i;:::-;22206:50;;22308:11;22296:9;:23;;;;:::i;:::-;22279:40;;22363:1;22346:14;:18;22342:57;;;22385:14;22366:33;;;;;:::i;:::-;;;22342:57;22049:370;;22026:393;21898:536;;21881:553;21855:590;22455:15;22484:2;22473:8;:13;;;;:::i;:::-;22455:31;;22520:1;22501:15;:20;22497:268;;22580:4;22550:27;22570:6;22560:7;:16;;;;:::i;:::-;22550:9;:27::i;:::-;:34;;;;:::i;:::-;22538:46;;22497:268;;;22629:124;22686:2;22667:15;22657:7;:25;;;;:::i;:::-;22656:32;;;;:::i;:::-;22736:2;22717:15;22708:6;:24;;;;:::i;:::-;22707:31;;;;:::i;:::-;22629:8;:124::i;:::-;22617:136;;22497:268;21581:1191;;;;;21393:1379;;;;;;;:::o;3866:225::-;3986:7;4018:1;4014;:5;4021:12;4006:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4045:9;4061:1;4057;:5;;;;:::i;:::-;4045:17;;4082:1;4075:8;;;3866:225;;;;;:::o;9162:125::-;;;;:::o;2567:303::-;2612:6;2639:1;2635;:5;2631:232;;;2661:1;2657:5;;2677:6;2694:1;2690;2686;:5;;;;:::i;:::-;:9;;;;:::i;:::-;2677:18;;2710:92;2721:1;2717;:5;2710:92;;;2747:1;2743:5;;2785:1;2780;2776;2772;:5;;;;:::i;:::-;:9;;;;:::i;:::-;2771:15;;;;:::i;:::-;2767:19;;2710:92;;;2642:171;2631:232;;;2828:1;2823;:6;2819:44;;2850:1;2846:5;;2819:44;2631:232;2567:303;;;:::o;2463:96::-;2515:6;2542:1;2538;:5;:13;;2550:1;2538:13;;;2546:1;2538:13;2534:17;;2463:96;;;;:::o;7:169:1:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:170::-;322:22;318:1;310:6;306:14;299:46;182:170;:::o;358:366::-;500:3;521:67;585:2;580:3;521:67;:::i;:::-;514:74;;597:93;686:3;597:93;:::i;:::-;715:2;710:3;706:12;699:19;;358:366;;;:::o;730:419::-;896:4;934:2;923:9;919:18;911:26;;983:9;977:4;973:20;969:1;958:9;954:17;947:47;1011:131;1137:4;1011:131;:::i;:::-;1003:139;;730:419;;;:::o;1155:172::-;1295:24;1291:1;1283:6;1279:14;1272:48;1155:172;:::o;1333:366::-;1475:3;1496:67;1560:2;1555:3;1496:67;:::i;:::-;1489:74;;1572:93;1661:3;1572:93;:::i;:::-;1690:2;1685:3;1681:12;1674:19;;1333:366;;;:::o;1705:419::-;1871:4;1909:2;1898:9;1894:18;1886:26;;1958:9;1952:4;1948:20;1944:1;1933:9;1929:17;1922:47;1986:131;2112:4;1986:131;:::i;:::-;1978:139;;1705:419;;;:::o;2130:126::-;2167:7;2207:42;2200:5;2196:54;2185:65;;2130:126;;;:::o;2262:96::-;2299:7;2328:24;2346:5;2328:24;:::i;:::-;2317:35;;2262:96;;;:::o;2364:118::-;2451:24;2469:5;2451:24;:::i;:::-;2446:3;2439:37;2364:118;;:::o;2488:222::-;2581:4;2619:2;2608:9;2604:18;2596:26;;2632:71;2700:1;2689:9;2685:17;2676:6;2632:71;:::i;:::-;2488:222;;;;:::o;2716:99::-;2768:6;2802:5;2796:12;2786:22;;2716:99;;;:::o;2821:139::-;2910:6;2905:3;2900;2894:23;2951:1;2942:6;2937:3;2933:16;2926:27;2821:139;;;:::o;2966:102::-;3007:6;3058:2;3054:7;3049:2;3042:5;3038:14;3034:28;3024:38;;2966:102;;;:::o;3074:377::-;3162:3;3190:39;3223:5;3190:39;:::i;:::-;3245:71;3309:6;3304:3;3245:71;:::i;:::-;3238:78;;3325:65;3383:6;3378:3;3371:4;3364:5;3360:16;3325:65;:::i;:::-;3415:29;3437:6;3415:29;:::i;:::-;3410:3;3406:39;3399:46;;3166:285;3074:377;;;;:::o;3457:313::-;3570:4;3608:2;3597:9;3593:18;3585:26;;3657:9;3651:4;3647:20;3643:1;3632:9;3628:17;3621:47;3685:78;3758:4;3749:6;3685:78;:::i;:::-;3677:86;;3457:313;;;;:::o;3776:75::-;3809:6;3842:2;3836:9;3826:19;;3776:75;:::o;3857:117::-;3966:1;3963;3956:12;4103:122;4176:24;4194:5;4176:24;:::i;:::-;4169:5;4166:35;4156:63;;4215:1;4212;4205:12;4156:63;4103:122;:::o;4231:139::-;4277:5;4315:6;4302:20;4293:29;;4331:33;4358:5;4331:33;:::i;:::-;4231:139;;;;:::o;4376:77::-;4413:7;4442:5;4431:16;;4376:77;;;:::o;4459:122::-;4532:24;4550:5;4532:24;:::i;:::-;4525:5;4522:35;4512:63;;4571:1;4568;4561:12;4512:63;4459:122;:::o;4587:139::-;4633:5;4671:6;4658:20;4649:29;;4687:33;4714:5;4687:33;:::i;:::-;4587:139;;;;:::o;4732:474::-;4800:6;4808;4857:2;4845:9;4836:7;4832:23;4828:32;4825:119;;;4863:79;;:::i;:::-;4825:119;4983:1;5008:53;5053:7;5044:6;5033:9;5029:22;5008:53;:::i;:::-;4998:63;;4954:117;5110:2;5136:53;5181:7;5172:6;5161:9;5157:22;5136:53;:::i;:::-;5126:63;;5081:118;4732:474;;;;;:::o;5212:90::-;5246:7;5289:5;5282:13;5275:21;5264:32;;5212:90;;;:::o;5308:109::-;5389:21;5404:5;5389:21;:::i;:::-;5384:3;5377:34;5308:109;;:::o;5423:210::-;5510:4;5548:2;5537:9;5533:18;5525:26;;5561:65;5623:1;5612:9;5608:17;5599:6;5561:65;:::i;:::-;5423:210;;;;:::o;5639:118::-;5726:24;5744:5;5726:24;:::i;:::-;5721:3;5714:37;5639:118;;:::o;5763:222::-;5856:4;5894:2;5883:9;5879:18;5871:26;;5907:71;5975:1;5964:9;5960:17;5951:6;5907:71;:::i;:::-;5763:222;;;;:::o;5991:60::-;6019:3;6040:5;6033:12;;5991:60;;;:::o;6057:142::-;6107:9;6140:53;6158:34;6167:24;6185:5;6167:24;:::i;:::-;6158:34;:::i;:::-;6140:53;:::i;:::-;6127:66;;6057:142;;;:::o;6205:126::-;6255:9;6288:37;6319:5;6288:37;:::i;:::-;6275:50;;6205:126;;;:::o;6337:153::-;6414:9;6447:37;6478:5;6447:37;:::i;:::-;6434:50;;6337:153;;;:::o;6496:185::-;6610:64;6668:5;6610:64;:::i;:::-;6605:3;6598:77;6496:185;;:::o;6687:276::-;6807:4;6845:2;6834:9;6830:18;6822:26;;6858:98;6953:1;6942:9;6938:17;6929:6;6858:98;:::i;:::-;6687:276;;;;:::o;6969:116::-;7039:21;7054:5;7039:21;:::i;:::-;7032:5;7029:32;7019:60;;7075:1;7072;7065:12;7019:60;6969:116;:::o;7091:133::-;7134:5;7172:6;7159:20;7150:29;;7188:30;7212:5;7188:30;:::i;:::-;7091:133;;;;:::o;7230:468::-;7295:6;7303;7352:2;7340:9;7331:7;7327:23;7323:32;7320:119;;;7358:79;;:::i;:::-;7320:119;7478:1;7503:53;7548:7;7539:6;7528:9;7524:22;7503:53;:::i;:::-;7493:63;;7449:117;7605:2;7631:50;7673:7;7664:6;7653:9;7649:22;7631:50;:::i;:::-;7621:60;;7576:115;7230:468;;;;;:::o;7704:619::-;7781:6;7789;7797;7846:2;7834:9;7825:7;7821:23;7817:32;7814:119;;;7852:79;;:::i;:::-;7814:119;7972:1;7997:53;8042:7;8033:6;8022:9;8018:22;7997:53;:::i;:::-;7987:63;;7943:117;8099:2;8125:53;8170:7;8161:6;8150:9;8146:22;8125:53;:::i;:::-;8115:63;;8070:118;8227:2;8253:53;8298:7;8289:6;8278:9;8274:22;8253:53;:::i;:::-;8243:63;;8198:118;7704:619;;;;;:::o;8329:329::-;8388:6;8437:2;8425:9;8416:7;8412:23;8408:32;8405:119;;;8443:79;;:::i;:::-;8405:119;8563:1;8588:53;8633:7;8624:6;8613:9;8609:22;8588:53;:::i;:::-;8578:63;;8534:117;8329:329;;;;:::o;8664:474::-;8732:6;8740;8789:2;8777:9;8768:7;8764:23;8760:32;8757:119;;;8795:79;;:::i;:::-;8757:119;8915:1;8940:53;8985:7;8976:6;8965:9;8961:22;8940:53;:::i;:::-;8930:63;;8886:117;9042:2;9068:53;9113:7;9104:6;9093:9;9089:22;9068:53;:::i;:::-;9058:63;;9013:118;8664:474;;;;;:::o;9144:::-;9212:6;9220;9269:2;9257:9;9248:7;9244:23;9240:32;9237:119;;;9275:79;;:::i;:::-;9237:119;9395:1;9420:53;9465:7;9456:6;9445:9;9441:22;9420:53;:::i;:::-;9410:63;;9366:117;9522:2;9548:53;9593:7;9584:6;9573:9;9569:22;9548:53;:::i;:::-;9538:63;;9493:118;9144:474;;;;;:::o;9624:329::-;9683:6;9732:2;9720:9;9711:7;9707:23;9703:32;9700:119;;;9738:79;;:::i;:::-;9700:119;9858:1;9883:53;9928:7;9919:6;9908:9;9904:22;9883:53;:::i;:::-;9873:63;;9829:117;9624:329;;;;:::o;9959:442::-;10108:4;10146:2;10135:9;10131:18;10123:26;;10159:71;10227:1;10216:9;10212:17;10203:6;10159:71;:::i;:::-;10240:72;10308:2;10297:9;10293:18;10284:6;10240:72;:::i;:::-;10322;10390:2;10379:9;10375:18;10366:6;10322:72;:::i;:::-;9959:442;;;;;;:::o;10407:474::-;10475:6;10483;10532:2;10520:9;10511:7;10507:23;10503:32;10500:119;;;10538:79;;:::i;:::-;10500:119;10658:1;10683:53;10728:7;10719:6;10708:9;10704:22;10683:53;:::i;:::-;10673:63;;10629:117;10785:2;10811:53;10856:7;10847:6;10836:9;10832:22;10811:53;:::i;:::-;10801:63;;10756:118;10407:474;;;;;:::o;10887:180::-;10935:77;10932:1;10925:88;11032:4;11029:1;11022:15;11056:4;11053:1;11046:15;11073:320;11117:6;11154:1;11148:4;11144:12;11134:22;;11201:1;11195:4;11191:12;11222:18;11212:81;;11278:4;11270:6;11266:17;11256:27;;11212:81;11340:2;11332:6;11329:14;11309:18;11306:38;11303:84;;11359:18;;:::i;:::-;11303:84;11124:269;11073:320;;;:::o;11399:143::-;11456:5;11487:6;11481:13;11472:22;;11503:33;11530:5;11503:33;:::i;:::-;11399:143;;;;:::o;11548:351::-;11618:6;11667:2;11655:9;11646:7;11642:23;11638:32;11635:119;;;11673:79;;:::i;:::-;11635:119;11793:1;11818:64;11874:7;11865:6;11854:9;11850:22;11818:64;:::i;:::-;11808:74;;11764:128;11548:351;;;;:::o;11905:237::-;12045:34;12041:1;12033:6;12029:14;12022:58;12114:20;12109:2;12101:6;12097:15;12090:45;11905:237;:::o;12148:366::-;12290:3;12311:67;12375:2;12370:3;12311:67;:::i;:::-;12304:74;;12387:93;12476:3;12387:93;:::i;:::-;12505:2;12500:3;12496:12;12489:19;;12148:366;;;:::o;12520:419::-;12686:4;12724:2;12713:9;12709:18;12701:26;;12773:9;12767:4;12763:20;12759:1;12748:9;12744:17;12737:47;12801:131;12927:4;12801:131;:::i;:::-;12793:139;;12520:419;;;:::o;12945:332::-;13066:4;13104:2;13093:9;13089:18;13081:26;;13117:71;13185:1;13174:9;13170:17;13161:6;13117:71;:::i;:::-;13198:72;13266:2;13255:9;13251:18;13242:6;13198:72;:::i;:::-;12945:332;;;;;:::o;13283:137::-;13337:5;13368:6;13362:13;13353:22;;13384:30;13408:5;13384:30;:::i;:::-;13283:137;;;;:::o;13426:345::-;13493:6;13542:2;13530:9;13521:7;13517:23;13513:32;13510:119;;;13548:79;;:::i;:::-;13510:119;13668:1;13693:61;13746:7;13737:6;13726:9;13722:22;13693:61;:::i;:::-;13683:71;;13639:125;13426:345;;;;:::o;13777:182::-;13917:34;13913:1;13905:6;13901:14;13894:58;13777:182;:::o;13965:366::-;14107:3;14128:67;14192:2;14187:3;14128:67;:::i;:::-;14121:74;;14204:93;14293:3;14204:93;:::i;:::-;14322:2;14317:3;14313:12;14306:19;;13965:366;;;:::o;14337:419::-;14503:4;14541:2;14530:9;14526:18;14518:26;;14590:9;14584:4;14580:20;14576:1;14565:9;14561:17;14554:47;14618:131;14744:4;14618:131;:::i;:::-;14610:139;;14337:419;;;:::o;14762:172::-;14902:24;14898:1;14890:6;14886:14;14879:48;14762:172;:::o;14940:366::-;15082:3;15103:67;15167:2;15162:3;15103:67;:::i;:::-;15096:74;;15179:93;15268:3;15179:93;:::i;:::-;15297:2;15292:3;15288:12;15281:19;;14940:366;;;:::o;15312:419::-;15478:4;15516:2;15505:9;15501:18;15493:26;;15565:9;15559:4;15555:20;15551:1;15540:9;15536:17;15529:47;15593:131;15719:4;15593:131;:::i;:::-;15585:139;;15312:419;;;:::o;15737:114::-;15774:7;15814:30;15807:5;15803:42;15792:53;;15737:114;;;:::o;15857:122::-;15930:24;15948:5;15930:24;:::i;:::-;15923:5;15920:35;15910:63;;15969:1;15966;15959:12;15910:63;15857:122;:::o;15985:143::-;16042:5;16073:6;16067:13;16058:22;;16089:33;16116:5;16089:33;:::i;:::-;15985:143;;;;:::o;16134:93::-;16170:7;16210:10;16203:5;16199:22;16188:33;;16134:93;;;:::o;16233:120::-;16305:23;16322:5;16305:23;:::i;:::-;16298:5;16295:34;16285:62;;16343:1;16340;16333:12;16285:62;16233:120;:::o;16359:141::-;16415:5;16446:6;16440:13;16431:22;;16462:32;16488:5;16462:32;:::i;:::-;16359:141;;;;:::o;16506:661::-;16593:6;16601;16609;16658:2;16646:9;16637:7;16633:23;16629:32;16626:119;;;16664:79;;:::i;:::-;16626:119;16784:1;16809:64;16865:7;16856:6;16845:9;16841:22;16809:64;:::i;:::-;16799:74;;16755:128;16922:2;16948:64;17004:7;16995:6;16984:9;16980:22;16948:64;:::i;:::-;16938:74;;16893:129;17061:2;17087:63;17142:7;17133:6;17122:9;17118:22;17087:63;:::i;:::-;17077:73;;17032:128;16506:661;;;;;:::o;17173:143::-;17230:5;17261:6;17255:13;17246:22;;17277:33;17304:5;17277:33;:::i;:::-;17173:143;;;;:::o;17322:351::-;17392:6;17441:2;17429:9;17420:7;17416:23;17412:32;17409:119;;;17447:79;;:::i;:::-;17409:119;17567:1;17592:64;17648:7;17639:6;17628:9;17624:22;17592:64;:::i;:::-;17582:74;;17538:128;17322:351;;;;:::o;17679:225::-;17819:34;17815:1;17807:6;17803:14;17796:58;17888:8;17883:2;17875:6;17871:15;17864:33;17679:225;:::o;17910:366::-;18052:3;18073:67;18137:2;18132:3;18073:67;:::i;:::-;18066:74;;18149:93;18238:3;18149:93;:::i;:::-;18267:2;18262:3;18258:12;18251:19;;17910:366;;;:::o;18282:419::-;18448:4;18486:2;18475:9;18471:18;18463:26;;18535:9;18529:4;18525:20;18521:1;18510:9;18506:17;18499:47;18563:131;18689:4;18563:131;:::i;:::-;18555:139;;18282:419;;;:::o;18707:223::-;18847:34;18843:1;18835:6;18831:14;18824:58;18916:6;18911:2;18903:6;18899:15;18892:31;18707:223;:::o;18936:366::-;19078:3;19099:67;19163:2;19158:3;19099:67;:::i;:::-;19092:74;;19175:93;19264:3;19175:93;:::i;:::-;19293:2;19288:3;19284:12;19277:19;;18936:366;;;:::o;19308:419::-;19474:4;19512:2;19501:9;19497:18;19489:26;;19561:9;19555:4;19551:20;19547:1;19536:9;19532:17;19525:47;19589:131;19715:4;19589:131;:::i;:::-;19581:139;;19308:419;;;:::o;19733:221::-;19873:34;19869:1;19861:6;19857:14;19850:58;19942:4;19937:2;19929:6;19925:15;19918:29;19733:221;:::o;19960:366::-;20102:3;20123:67;20187:2;20182:3;20123:67;:::i;:::-;20116:74;;20199:93;20288:3;20199:93;:::i;:::-;20317:2;20312:3;20308:12;20301:19;;19960:366;;;:::o;20332:419::-;20498:4;20536:2;20525:9;20521:18;20513:26;;20585:9;20579:4;20575:20;20571:1;20560:9;20556:17;20549:47;20613:131;20739:4;20613:131;:::i;:::-;20605:139;;20332:419;;;:::o;20757:224::-;20897:34;20893:1;20885:6;20881:14;20874:58;20966:7;20961:2;20953:6;20949:15;20942:32;20757:224;:::o;20987:366::-;21129:3;21150:67;21214:2;21209:3;21150:67;:::i;:::-;21143:74;;21226:93;21315:3;21226:93;:::i;:::-;21344:2;21339:3;21335:12;21328:19;;20987:366;;;:::o;21359:419::-;21525:4;21563:2;21552:9;21548:18;21540:26;;21612:9;21606:4;21602:20;21598:1;21587:9;21583:17;21576:47;21640:131;21766:4;21640:131;:::i;:::-;21632:139;;21359:419;;;:::o;21784:222::-;21924:34;21920:1;21912:6;21908:14;21901:58;21993:5;21988:2;21980:6;21976:15;21969:30;21784:222;:::o;22012:366::-;22154:3;22175:67;22239:2;22234:3;22175:67;:::i;:::-;22168:74;;22251:93;22340:3;22251:93;:::i;:::-;22369:2;22364:3;22360:12;22353:19;;22012:366;;;:::o;22384:419::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:131;22791:4;22665:131;:::i;:::-;22657:139;;22384:419;;;:::o;22809:180::-;22857:77;22854:1;22847:88;22954:4;22951:1;22944:15;22978:4;22975:1;22968:15;22995:191;23035:3;23054:20;23072:1;23054:20;:::i;:::-;23049:25;;23088:20;23106:1;23088:20;:::i;:::-;23083:25;;23131:1;23128;23124:9;23117:16;;23152:3;23149:1;23146:10;23143:36;;;23159:18;;:::i;:::-;23143:36;22995:191;;;;:::o;23192:157::-;23332:9;23328:1;23320:6;23316:14;23309:33;23192:157;:::o;23355:365::-;23497:3;23518:66;23582:1;23577:3;23518:66;:::i;:::-;23511:73;;23593:93;23682:3;23593:93;:::i;:::-;23711:2;23706:3;23702:12;23695:19;;23355:365;;;:::o;23726:419::-;23892:4;23930:2;23919:9;23915:18;23907:26;;23979:9;23973:4;23969:20;23965:1;23954:9;23950:17;23943:47;24007:131;24133:4;24007:131;:::i;:::-;23999:139;;23726:419;;;:::o;24151:117::-;24260:1;24257;24250:12;24274:180;24322:77;24319:1;24312:88;24419:4;24416:1;24409:15;24443:4;24440:1;24433:15;24460:281;24543:27;24565:4;24543:27;:::i;:::-;24535:6;24531:40;24673:6;24661:10;24658:22;24637:18;24625:10;24622:34;24619:62;24616:88;;;24684:18;;:::i;:::-;24616:88;24724:10;24720:2;24713:22;24503:238;24460:281;;:::o;24747:129::-;24781:6;24808:20;;:::i;:::-;24798:30;;24837:33;24865:4;24857:6;24837:33;:::i;:::-;24747:129;;;:::o;25043:1313::-;25129:5;25173:4;25161:9;25156:3;25152:19;25148:30;25145:117;;;25181:79;;:::i;:::-;25145:117;25280:21;25296:4;25280:21;:::i;:::-;25271:30;;25362:1;25402:60;25458:3;25449:6;25438:9;25434:22;25402:60;:::i;:::-;25395:4;25388:5;25384:16;25377:86;25311:163;25534:2;25575:60;25631:3;25622:6;25611:9;25607:22;25575:60;:::i;:::-;25568:4;25561:5;25557:16;25550:86;25484:163;25709:2;25750:60;25806:3;25797:6;25786:9;25782:22;25750:60;:::i;:::-;25743:4;25736:5;25732:16;25725:86;25657:165;25884:2;25925:60;25981:3;25972:6;25961:9;25957:22;25925:60;:::i;:::-;25918:4;25911:5;25907:16;25900:86;25832:165;26058:3;26100:60;26156:3;26147:6;26136:9;26132:22;26100:60;:::i;:::-;26093:4;26086:5;26082:16;26075:86;26007:165;26235:3;26277:60;26333:3;26324:6;26313:9;26309:22;26277:60;:::i;:::-;26270:4;26263:5;26259:16;26252:86;26182:167;25043:1313;;;;:::o;26362:404::-;26458:6;26507:3;26495:9;26486:7;26482:23;26478:33;26475:120;;;26514:79;;:::i;:::-;26475:120;26634:1;26659:90;26741:7;26732:6;26721:9;26717:22;26659:90;:::i;:::-;26649:100;;26605:154;26362:404;;;;:::o;26772:85::-;26817:7;26846:5;26835:16;;26772:85;;;:::o;26863:158::-;26921:9;26954:61;26972:42;26981:32;27007:5;26981:32;:::i;:::-;26972:42;:::i;:::-;26954:61;:::i;:::-;26941:74;;26863:158;;;:::o;27027:147::-;27122:45;27161:5;27122:45;:::i;:::-;27117:3;27110:58;27027:147;;:::o;27180:348::-;27309:4;27347:2;27336:9;27332:18;27324:26;;27360:71;27428:1;27417:9;27413:17;27404:6;27360:71;:::i;:::-;27441:80;27517:2;27506:9;27502:18;27493:6;27441:80;:::i;:::-;27180:348;;;;;:::o;27534:157::-;27674:9;27670:1;27662:6;27658:14;27651:33;27534:157;:::o;27697:365::-;27839:3;27860:66;27924:1;27919:3;27860:66;:::i;:::-;27853:73;;27935:93;28024:3;27935:93;:::i;:::-;28053:2;28048:3;28044:12;28037:19;;27697:365;;;:::o;28068:419::-;28234:4;28272:2;28261:9;28257:18;28249:26;;28321:9;28315:4;28311:20;28307:1;28296:9;28292:17;28285:47;28349:131;28475:4;28349:131;:::i;:::-;28341:139;;28068:419;;;:::o;28493:194::-;28533:4;28553:20;28571:1;28553:20;:::i;:::-;28548:25;;28587:20;28605:1;28587:20;:::i;:::-;28582:25;;28631:1;28628;28624:9;28616:17;;28655:1;28649:4;28646:11;28643:37;;;28660:18;;:::i;:::-;28643:37;28493:194;;;;:::o;28693:332::-;28814:4;28852:2;28841:9;28837:18;28829:26;;28865:71;28933:1;28922:9;28918:17;28909:6;28865:71;:::i;:::-;28946:72;29014:2;29003:9;28999:18;28990:6;28946:72;:::i;:::-;28693:332;;;;;:::o;29031:169::-;29171:21;29167:1;29159:6;29155:14;29148:45;29031:169;:::o;29206:366::-;29348:3;29369:67;29433:2;29428:3;29369:67;:::i;:::-;29362:74;;29445:93;29534:3;29445:93;:::i;:::-;29563:2;29558:3;29554:12;29547:19;;29206:366;;;:::o;29578:419::-;29744:4;29782:2;29771:9;29767:18;29759:26;;29831:9;29825:4;29821:20;29817:1;29806:9;29802:17;29795:47;29859:131;29985:4;29859:131;:::i;:::-;29851:139;;29578:419;;;:::o;30003:169::-;30143:21;30139:1;30131:6;30127:14;30120:45;30003:169;:::o;30178:366::-;30320:3;30341:67;30405:2;30400:3;30341:67;:::i;:::-;30334:74;;30417:93;30506:3;30417:93;:::i;:::-;30535:2;30530:3;30526:12;30519:19;;30178:366;;;:::o;30550:419::-;30716:4;30754:2;30743:9;30739:18;30731:26;;30803:9;30797:4;30793:20;30789:1;30778:9;30774:17;30767:47;30831:131;30957:4;30831:131;:::i;:::-;30823:139;;30550:419;;;:::o;30975:177::-;31115:29;31111:1;31103:6;31099:14;31092:53;30975:177;:::o;31158:366::-;31300:3;31321:67;31385:2;31380:3;31321:67;:::i;:::-;31314:74;;31397:93;31486:3;31397:93;:::i;:::-;31515:2;31510:3;31506:12;31499:19;;31158:366;;;:::o;31530:419::-;31696:4;31734:2;31723:9;31719:18;31711:26;;31783:9;31777:4;31773:20;31769:1;31758:9;31754:17;31747:47;31811:131;31937:4;31811:131;:::i;:::-;31803:139;;31530:419;;;:::o;31955:410::-;31995:7;32018:20;32036:1;32018:20;:::i;:::-;32013:25;;32052:20;32070:1;32052:20;:::i;:::-;32047:25;;32107:1;32104;32100:9;32129:30;32147:11;32129:30;:::i;:::-;32118:41;;32308:1;32299:7;32295:15;32292:1;32289:22;32269:1;32262:9;32242:83;32219:139;;32338:18;;:::i;:::-;32219:139;32003:362;31955:410;;;;:::o;32371:180::-;32419:77;32416:1;32409:88;32516:4;32513:1;32506:15;32540:4;32537:1;32530:15;32557:185;32597:1;32614:20;32632:1;32614:20;:::i;:::-;32609:25;;32648:20;32666:1;32648:20;:::i;:::-;32643:25;;32687:1;32677:35;;32692:18;;:::i;:::-;32677:35;32734:1;32731;32727:9;32722:14;;32557:185;;;;:::o;32748:220::-;32888:34;32884:1;32876:6;32872:14;32865:58;32957:3;32952:2;32944:6;32940:15;32933:28;32748:220;:::o;32974:366::-;33116:3;33137:67;33201:2;33196:3;33137:67;:::i;:::-;33130:74;;33213:93;33302:3;33213:93;:::i;:::-;33331:2;33326:3;33322:12;33315:19;;32974:366;;;:::o;33346:419::-;33512:4;33550:2;33539:9;33535:18;33527:26;;33599:9;33593:4;33589:20;33585:1;33574:9;33570:17;33563:47;33627:131;33753:4;33627:131;:::i;:::-;33619:139;;33346:419;;;:::o;33771:180::-;33819:77;33816:1;33809:88;33916:4;33913:1;33906:15;33940:4;33937:1;33930:15;33957:233;33996:3;34019:24;34037:5;34019:24;:::i;:::-;34010:33;;34065:66;34058:5;34055:77;34052:103;;34135:18;;:::i;:::-;34052:103;34182:1;34175:5;34171:13;34164:20;;33957:233;;;:::o

Swarm Source

ipfs://599b552d3da5ffe2699f1ee1f8987cc4b3f3a2574ce6f9bda6d15d537cb53f34

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

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
0x6232b3c9C98B6262B97d430552E2fdEdae626e5A
Loading...
Loading
[ Download: CSV Export  ]
[ 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.