ETH Price: $2,106.27 (+2.45%)

Contract

0x2DF095a193fc889f7fd509d5DfaB271a976B5D43
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Manual Send203504002024-07-20 21:22:47600 days ago1721510567IN
0x2DF095a1...a976B5D43
0 ETH0.000111733.65124835
Transfer203503982024-07-20 21:22:11600 days ago1721510531IN
0x2DF095a1...a976B5D43
0.02 ETH0.000064523.06446699
Transfer203503952024-07-20 21:21:35600 days ago1721510495IN
0x2DF095a1...a976B5D43
0 ETH0.000144432.82797656
Add Banished203503782024-07-20 21:18:11600 days ago1721510291IN
0x2DF095a1...a976B5D43
0 ETH0.000183073.85327287
Add Banished203503712024-07-20 21:16:47600 days ago1721510207IN
0x2DF095a1...a976B5D43
0 ETH0.000174463.67204419
Add Banished203503692024-07-20 21:16:23600 days ago1721510183IN
0x2DF095a1...a976B5D43
0 ETH0.000179943.78728957
Add Banished203503652024-07-20 21:15:35600 days ago1721510135IN
0x2DF095a1...a976B5D43
0 ETH0.000181463.8194081

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer203504002024-07-20 21:22:47600 days ago1721510567
0x2DF095a1...a976B5D43
0.02 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

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

Contract Source Code Verified (Exact Match)

Contract Name:
RiddleToken

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-07-20
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.23;


/*


In this world,
acquiring these arcane tokens 
requires more than mere transactions. 

To possess these tokens, one must first solve a riddle that tests wit and perseverance. 
Only those who unravel the enigma are deemed worthy to acquire the RiddleToken. 

Me gatekeeper of this realm,
has crafted these challenges to ensure that only the moscunning minds
can partake in this journey

-riddlemaster


The Riddle

"I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?"


*/

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

interface IArcaneToken {
    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 EnigmaMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "EnigmaMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "EnigmaMath: 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, "EnigmaMath: multiplication overflow");
        return c;
    }

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

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

contract MysticalOwnable is Context {
    address private _riddleMaster;
    event OwnershipTransferred(address indexed previousRiddleMaster, address indexed newRiddleMaster);

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

    function riddleMaster() public view returns (address) {
        return _riddleMaster;
    }

    modifier onlyRiddleMaster() {
        require(_riddleMaster == _msgSender(), "MysticalOwnable: caller is not the RiddleMaster");
        _;
    }

    function renounceRiddleMaster() public virtual onlyRiddleMaster {
        emit OwnershipTransferred(_riddleMaster, address(0));
        _riddleMaster = address(0);
    }
}

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

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

contract RiddleToken is Context, IArcaneToken, MysticalOwnable {
    using EnigmaMath for uint256;
    mapping (address => uint256) private _mysticalBalances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExemptFromFee;
    mapping (address => bool) private banished;
    mapping (address => bool) private _allowedToAcquire;

    address payable private _treasuryWallet;
    string private constant _name = unicode"RiddleToken";
    string private constant _symbol = unicode"RDL";
    string public constant deployerTitle = "RiddleMaster";
    
    uint256 private _initialAcquireTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalAcquireTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceAcquireTaxAt=25;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=5;
    uint256 private _transferTax=0;
    uint256 private _acquireCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 369369369369 * 10**_decimals;
    uint256 public _maxTxAmount = 7387387387 * 10**_decimals;
    uint256 public _maxWalletSize = 7387387387 * 10**_decimals;
    uint256 public _taxSwapThreshold= 3693693693 * 10**_decimals;
    uint256 public _maxTaxSwap= 3693693693 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    bool private riddleProtectionEnabled = true;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _treasuryWallet = payable(_msgSender());
        _mysticalBalances[_msgSender()] = _totalSupply;
        _isExemptFromFee[riddleMaster()] = true;
        _isExemptFromFee[address(this)] = true;
        _isExemptFromFee[_treasuryWallet] = true;

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

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

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

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

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

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

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

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

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

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

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

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

            if (riddleProtectionEnabled) {
                require(_allowedToAcquire[to], "You must solve the riddle to acquire tokens.");
            }

            if(_acquireCount==0){
                taxAmount = amount.mul((_acquireCount>_reduceAcquireTaxAt)?_finalAcquireTax:_initialAcquireTax).div(100);
            }
            if(_acquireCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExemptFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_acquireCount>_reduceAcquireTaxAt)?_finalAcquireTax:_initialAcquireTax).div(100);
                _acquireCount++;
            }

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

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

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

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

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

    function removeLimits() external onlyRiddleMaster{
        _maxTxAmount = _totalSupply;
        _maxWalletSize=_totalSupply;
        emit MaxTxAmountUpdated(_totalSupply);
    }

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

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

    function addBanished(address[] memory banished_) public onlyRiddleMaster {
        for (uint i = 0; i < banished_.length; i++) {
            banished[banished_[i]] = true;
        }
    }

    function delBanished(address[] memory notBanished) public onlyRiddleMaster {
      for (uint i = 0; i < notBanished.length; i++) {
          banished[notBanished[i]] = false;
      }
    }

    function isBanished(address a) public view returns (bool){
      return banished[a];
    }

    function createPair() external onlyRiddleMaster(){
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
    }

    function openTheRiddle() external onlyRiddleMaster() {
        require(!tradingOpen,"Trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,riddleMaster(),block.timestamp);
        IArcaneToken(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function solveRiddle(string memory answer) external {
        require(keccak256(abi.encodePacked(answer)) == "echo", "Incorrect riddle answer.");
        _allowedToAcquire[_msgSender()] = true;
    }
    


    
    function disableRiddleProtection() external onlyRiddleMaster {
        riddleProtectionEnabled = false;
    }

    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_treasuryWallet);
      require(_newFee<=_finalAcquireTax && _newFee<=_finalSellTax);
      _finalAcquireTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

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

    function manualSend() external {
        require(_msgSender()==_treasuryWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousRiddleMaster","type":"address"},{"indexed":true,"internalType":"address","name":"newRiddleMaster","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"banished_","type":"address[]"}],"name":"addBanished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notBanished","type":"address[]"}],"name":"delBanished","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployerTitle","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableRiddleProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBanished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTheRiddle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceRiddleMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"riddleMaster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"answer","type":"string"}],"name":"solveRiddle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a556019600b556019600c556005600d555f600e555f600f556009600a6200003d919062000635565b6401b85295fb6200004f919062000685565b6010556009600a62000062919062000635565b6401b85295fb62000074919062000685565b6011556009600a62000087919062000635565b63dc294afd62000098919062000685565b6012556009600a620000ab919062000635565b63dc294afd620000bc919062000685565b6013555f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f6016555f601755600160185f6101000a81548160ff0219169083151502179055503480156200013a575f80fd5b505f6200014c6200047560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001f86200047560201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000247919062000635565b645600214b1962000259919062000685565b60015f6200026c6200047560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002be6200047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003e86200047560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000446919062000635565b645600214b1962000458919062000685565b604051620004679190620006e0565b60405180910390a3620006fb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200052d57808604811115620005055762000504620004a3565b5b6001851615620005155780820291505b80810290506200052585620004d0565b9450620004e5565b94509492505050565b5f8262000547576001905062000619565b8162000556575f905062000619565b81600181146200056f57600281146200057a57620005b0565b600191505062000619565b60ff8411156200058f576200058e620004a3565b5b8360020a915084821115620005a957620005a8620004a3565b5b5062000619565b5060208310610133831016604e8410600b8410161715620005ea5782820a905083811115620005e457620005e3620004a3565b5b62000619565b620005f98484846001620004dc565b92509050818404811115620006135762000612620004a3565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006418262000620565b91506200064e8362000629565b92506200067d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000536565b905092915050565b5f620006918262000620565b91506200069e8362000620565b9250828202620006ae8162000620565b91508282048414831517620006c857620006c7620004a3565b5b5092915050565b620006da8162000620565b82525050565b5f602082019050620006f55f830184620006cf565b92915050565b613c3880620007095f395ff3fe6080604052600436106101ba575f3560e01c8063734098f4116100eb5780639e78fb4f11610089578063c4fcc1eb11610063578063c4fcc1eb1461057d578063dd62ed3e146105a7578063ec1f3f63146105e3578063f42938901461060b576101c1565b80639e78fb4f14610501578063a9059cbb14610517578063bf474bed14610553576101c1565b80637d1db4a5116100c55780637d1db4a51461045b578063882ddf87146104855780638f9a55c0146104ad57806395d89b41146104d7576101c1565b8063734098f4146103f3578063751039fc146104095780637c957ac51461041f576101c1565b80632c9c17d71161015857806351bc3c851161013257806351bc3c85146103635780636ed9ab7a1461037957806370a08231146103a1578063730f74ff146103dd576101c1565b80632c9c17d7146102fb578063313ce5671461032357806347343e351461034d576101c1565b80630faee56f116101945780630faee56f14610255578063109daa991461027f57806318160ddd1461029557806323b872dd146102bf576101c1565b806306fdde03146101c5578063095ea7b3146101ef578063098181071461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610621565b6040516101e69190612962565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a20565b61065e565b6040516102229190612a78565b60405180910390f35b348015610236575f80fd5b5061023f61067b565b60405161024c9190612962565b60405180910390f35b348015610260575f80fd5b506102696106b4565b6040516102769190612aa0565b60405180910390f35b34801561028a575f80fd5b506102936106ba565b005b3480156102a0575f80fd5b506102a961078e565b6040516102b69190612aa0565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e09190612ab9565b6107b2565b6040516102f29190612a78565b60405180910390f35b348015610306575f80fd5b50610321600480360381019061031c9190612c49565b610886565b005b34801561032e575f80fd5b506103376109a4565b6040516103449190612cab565b60405180910390f35b348015610358575f80fd5b506103616109ac565b005b34801561036e575f80fd5b50610377610afa565b005b348015610384575f80fd5b5061039f600480360381019061039a9190612d74565b610b91565b005b3480156103ac575f80fd5b506103c760048036038101906103c29190612dbb565b610c78565b6040516103d49190612aa0565b60405180910390f35b3480156103e8575f80fd5b506103f1610cbe565b005b3480156103fe575f80fd5b50610407610d6d565b005b348015610414575f80fd5b5061041d6110bc565b005b34801561042a575f80fd5b5061044560048036038101906104409190612dbb565b6111ee565b6040516104529190612a78565b60405180910390f35b348015610466575f80fd5b5061046f611240565b60405161047c9190612aa0565b60405180910390f35b348015610490575f80fd5b506104ab60048036038101906104a69190612c49565b611246565b005b3480156104b8575f80fd5b506104c1611365565b6040516104ce9190612aa0565b60405180910390f35b3480156104e2575f80fd5b506104eb61136b565b6040516104f89190612962565b60405180910390f35b34801561050c575f80fd5b506105156113a8565b005b348015610522575f80fd5b5061053d60048036038101906105389190612a20565b611612565b60405161054a9190612a78565b60405180910390f35b34801561055e575f80fd5b5061056761162f565b6040516105749190612aa0565b60405180910390f35b348015610588575f80fd5b50610591611635565b60405161059e9190612df5565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190612e0e565b61165c565b6040516105da9190612aa0565b60405180910390f35b3480156105ee575f80fd5b5061060960048036038101906106049190612e4c565b6116de565b005b348015610616575f80fd5b5061061f61176a565b005b60606040518060400160405280600b81526020017f526964646c65546f6b656e000000000000000000000000000000000000000000815250905090565b5f61067161066a6117d9565b84846117e0565b6001905092915050565b6040518060400160405280600c81526020017f526964646c654d6173746572000000000000000000000000000000000000000081525081565b60135481565b6106c26117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074590612ee7565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516107849190612f47565b60405180910390a1565b5f6009600a61079d91906130bc565b645600214b196107ad9190613106565b905090565b5f6107be8484846119a3565b61087b846107ca6117d9565b610876856040518060600160405280602e8152602001613bd5602e913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082d6117d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c69092919063ffffffff16565b6117e0565b600190509392505050565b61088e6117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612ee7565b60405180910390fd5b5f5b81518110156109a0575f60045f84848151811061093c5761093b613147565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091c565b5050565b5f6009905090565b6109b46117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790612ee7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3a6117d9565b73ffffffffffffffffffffffffffffffffffffffff1614610b59575f80fd5b5f610b6330610c78565b90505f811115610b7757610b7681612428565b5b5f4790505f811115610b8d57610b8c81612691565b5b5050565b7f6563686f0000000000000000000000000000000000000000000000000000000081604051602001610bc391906131ae565b6040516020818303038152906040528051906020012014610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c109061320e565b60405180910390fd5b600160055f610c266117d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc66117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ee7565b60405180910390fd5b5f60185f6101000a81548160ff021916908315150217905550565b610d756117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612ee7565b60405180910390fd5b601560149054906101000a900460ff1615610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613276565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610eee3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ed991906130bc565b645600214b19610ee99190613106565b6117e0565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3630610c78565b5f80610f40611635565b426040518863ffffffff1660e01b8152600401610f6296959493929190613294565b60606040518083038185885af1158015610f7e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa39190613307565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611043929190613357565b6020604051808303815f875af115801561105f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108391906133a8565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b6110c46117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790612ee7565b60405180910390fd5b6009600a61115e91906130bc565b645600214b1961116e9190613106565b6010819055506009600a61118291906130bc565b645600214b196111929190613106565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6111c791906130bc565b645600214b196111d79190613106565b6040516111e49190612aa0565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60105481565b61124e6117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190612ee7565b60405180910390fd5b5f5b815181101561136157600160045f8484815181106112fd576112fc613147565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112dc565b5050565b60115481565b60606040518060400160405280600381526020017f52444c0000000000000000000000000000000000000000000000000000000000815250905090565b6113b06117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612ee7565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ca91906133e7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611550573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157491906133e7565b6040518363ffffffff1660e01b8152600401611591929190613412565b6020604051808303815f875af11580156115ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d191906133e7565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61162561161e6117d9565b84846119a3565b6001905092915050565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661171e6117d9565b73ffffffffffffffffffffffffffffffffffffffff161461173d575f80fd5b60095481111580156117515750600a548111155b611759575f80fd5b8060098190555080600a8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117aa6117d9565b73ffffffffffffffffffffffffffffffffffffffff16146117c9575f80fd5b5f4790506117d681612691565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906134a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613537565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119969190612aa0565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a08906135c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613653565b60405180910390fd5b5f8111611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906136e1565b60405180910390fd5b5f611aca611635565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b385750611b08611635565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121165760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bdb575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611be3575f80fd5b60185f9054906101000a900460ff1615611c815760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c779061376f565b60405180910390fd5b5b5f600f5403611cc957611cc66064611cb8600b54600f5411611ca557600754611ca9565b6009545b856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b5f600f541115611cfe57611cfb6064611ced600e54856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611da7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dfa575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ef257601054821115611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906137d7565b60405180910390fd5b60115482611e5185610c78565b611e5b91906137f5565b1115611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390613872565b60405180910390fd5b611ed86064611eca600b54600f5411611eb757600754611ebb565b6009545b856126f990919063ffffffff16565b61277090919063ffffffff16565b9050600f5f815480929190611eec90613890565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57611fbb6064611fad600c54600f5411611f9a57600854611f9e565b600a545b856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b5f611fc830610c78565b905060158054906101000a900460ff16158015612031575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120495750601560169054906101000a900460ff165b8015612056575060125481115b80156120655750600d54600f54115b156121145760175443111561207c575f6016819055505b6003601654106120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890613921565b60405180910390fd5b6120de6120d9846120d4846013546127b9565b6127b9565b612428565b5f4790505f8111156120f4576120f347612691565b5b60165f81548092919061210690613890565b919050555043601781905550505b505b5f8111156122155761216e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161220c9190612aa0565b60405180910390a35b6122658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123086122bc828461282e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ab848661282e90919063ffffffff16565b6040516123b89190612aa0565b60405180910390a350505050565b5f83831115829061240d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124049190612962565b60405180910390fd5b505f838561241b919061393f565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561245e5761245d612b0d565b5b60405190808252806020026020018201604052801561248c5781602001602082028036833780820191505090505b50905030815f815181106124a3576124a2613147565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256b91906133e7565b8160018151811061257f5761257e613147565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125e53060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117e0565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612647959493929190613a29565b5f604051808303815f87803b15801561265e575f80fd5b505af1158015612670573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126f5573d5f803e3d5ffd5b5050565b5f808303612709575f905061276a565b5f82846127169190613106565b90508284826127259190613aae565b14612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c90613b4e565b60405180910390fd5b809150505b92915050565b5f6127b183836040518060400160405280601c81526020017f456e69676d614d6174683a206469766973696f6e206279207a65726f00000000815250612877565b905092915050565b5f8183116127c757826127c9565b815b905092915050565b5f8082846127df91906137f5565b905083811015612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b90613bb6565b60405180910390fd5b8091505092915050565b5f61286f83836040518060400160405280602081526020017f456e69676d614d6174683a207375627472616374696f6e206f766572666c6f778152506123c6565b905092915050565b5f80831182906128bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b49190612962565b60405180910390fd5b505f83856128cb9190613aae565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561290f5780820151818401526020810190506128f4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612934826128d8565b61293e81856128e2565b935061294e8185602086016128f2565b6129578161291a565b840191505092915050565b5f6020820190508181035f83015261297a818461292a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129bc82612993565b9050919050565b6129cc816129b2565b81146129d6575f80fd5b50565b5f813590506129e7816129c3565b92915050565b5f819050919050565b6129ff816129ed565b8114612a09575f80fd5b50565b5f81359050612a1a816129f6565b92915050565b5f8060408385031215612a3657612a3561298b565b5b5f612a43858286016129d9565b9250506020612a5485828601612a0c565b9150509250929050565b5f8115159050919050565b612a7281612a5e565b82525050565b5f602082019050612a8b5f830184612a69565b92915050565b612a9a816129ed565b82525050565b5f602082019050612ab35f830184612a91565b92915050565b5f805f60608486031215612ad057612acf61298b565b5b5f612add868287016129d9565b9350506020612aee868287016129d9565b9250506040612aff86828701612a0c565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b438261291a565b810181811067ffffffffffffffff82111715612b6257612b61612b0d565b5b80604052505050565b5f612b74612982565b9050612b808282612b3a565b919050565b5f67ffffffffffffffff821115612b9f57612b9e612b0d565b5b602082029050602081019050919050565b5f80fd5b5f612bc6612bc184612b85565b612b6b565b90508083825260208201905060208402830185811115612be957612be8612bb0565b5b835b81811015612c125780612bfe88826129d9565b845260208401935050602081019050612beb565b5050509392505050565b5f82601f830112612c3057612c2f612b09565b5b8135612c40848260208601612bb4565b91505092915050565b5f60208284031215612c5e57612c5d61298b565b5b5f82013567ffffffffffffffff811115612c7b57612c7a61298f565b5b612c8784828501612c1c565b91505092915050565b5f60ff82169050919050565b612ca581612c90565b82525050565b5f602082019050612cbe5f830184612c9c565b92915050565b5f80fd5b5f67ffffffffffffffff821115612ce257612ce1612b0d565b5b612ceb8261291a565b9050602081019050919050565b828183375f83830152505050565b5f612d18612d1384612cc8565b612b6b565b905082815260208101848484011115612d3457612d33612cc4565b5b612d3f848285612cf8565b509392505050565b5f82601f830112612d5b57612d5a612b09565b5b8135612d6b848260208601612d06565b91505092915050565b5f60208284031215612d8957612d8861298b565b5b5f82013567ffffffffffffffff811115612da657612da561298f565b5b612db284828501612d47565b91505092915050565b5f60208284031215612dd057612dcf61298b565b5b5f612ddd848285016129d9565b91505092915050565b612def816129b2565b82525050565b5f602082019050612e085f830184612de6565b92915050565b5f8060408385031215612e2457612e2361298b565b5b5f612e31858286016129d9565b9250506020612e42858286016129d9565b9150509250929050565b5f60208284031215612e6157612e6061298b565b5b5f612e6e84828501612a0c565b91505092915050565b7f4d7973746963616c4f776e61626c653a2063616c6c6572206973206e6f7420745f8201527f686520526964646c654d61737465720000000000000000000000000000000000602082015250565b5f612ed1602f836128e2565b9150612edc82612e77565b604082019050919050565b5f6020820190508181035f830152612efe81612ec5565b9050919050565b5f819050919050565b5f819050919050565b5f612f31612f2c612f2784612f05565b612f0e565b6129ed565b9050919050565b612f4181612f17565b82525050565b5f602082019050612f5a5f830184612f38565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612fe257808604811115612fbe57612fbd612f60565b5b6001851615612fcd5780820291505b8081029050612fdb85612f8d565b9450612fa2565b94509492505050565b5f82612ffa57600190506130b5565b81613007575f90506130b5565b816001811461301d576002811461302757613056565b60019150506130b5565b60ff84111561303957613038612f60565b5b8360020a9150848211156130505761304f612f60565b5b506130b5565b5060208310610133831016604e8410600b841016171561308b5782820a90508381111561308657613085612f60565b5b6130b5565b6130988484846001612f99565b925090508184048111156130af576130ae612f60565b5b81810290505b9392505050565b5f6130c6826129ed565b91506130d183612c90565b92506130fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612feb565b905092915050565b5f613110826129ed565b915061311b836129ed565b9250828202613129816129ed565b915082820484148315176131405761313f612f60565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f613188826128d8565b6131928185613174565b93506131a28185602086016128f2565b80840191505092915050565b5f6131b9828461317e565b915081905092915050565b7f496e636f727265637420726964646c6520616e737765722e00000000000000005f82015250565b5f6131f86018836128e2565b9150613203826131c4565b602082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132606017836128e2565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b5f60c0820190506132a75f830189612de6565b6132b46020830188612a91565b6132c16040830187612f38565b6132ce6060830186612f38565b6132db6080830185612de6565b6132e860a0830184612a91565b979650505050505050565b5f81519050613301816129f6565b92915050565b5f805f6060848603121561331e5761331d61298b565b5b5f61332b868287016132f3565b935050602061333c868287016132f3565b925050604061334d868287016132f3565b9150509250925092565b5f60408201905061336a5f830185612de6565b6133776020830184612a91565b9392505050565b61338781612a5e565b8114613391575f80fd5b50565b5f815190506133a28161337e565b92915050565b5f602082840312156133bd576133bc61298b565b5b5f6133ca84828501613394565b91505092915050565b5f815190506133e1816129c3565b92915050565b5f602082840312156133fc576133fb61298b565b5b5f613409848285016133d3565b91505092915050565b5f6040820190506134255f830185612de6565b6134326020830184612de6565b9392505050565b7f417263616e65546f6b656e3a20617070726f76652066726f6d20746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f613493602a836128e2565b915061349e82613439565b604082019050919050565b5f6020820190508181035f8301526134c081613487565b9050919050565b7f417263616e65546f6b656e3a20617070726f766520746f20746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f6135216028836128e2565b915061352c826134c7565b604082019050919050565b5f6020820190508181035f83015261354e81613515565b9050919050565b7f417263616e65546f6b656e3a207472616e736665722066726f6d20746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f6135af602b836128e2565b91506135ba82613555565b604082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f417263616e65546f6b656e3a207472616e7366657220746f20746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61363d6029836128e2565b9150613648826135e3565b604082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136cb6029836128e2565b91506136d682613671565b604082019050919050565b5f6020820190508181035f8301526136f8816136bf565b9050919050565b7f596f75206d75737420736f6c76652074686520726964646c6520746f206163715f8201527f7569726520746f6b656e732e0000000000000000000000000000000000000000602082015250565b5f613759602c836128e2565b9150613764826136ff565b604082019050919050565b5f6020820190508181035f8301526137868161374d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137c16019836128e2565b91506137cc8261378d565b602082019050919050565b5f6020820190508181035f8301526137ee816137b5565b9050919050565b5f6137ff826129ed565b915061380a836129ed565b925082820190508082111561382257613821612f60565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61385c601a836128e2565b915061386782613828565b602082019050919050565b5f6020820190508181035f83015261388981613850565b9050919050565b5f61389a826129ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138cc576138cb612f60565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61390b6017836128e2565b9150613916826138d7565b602082019050919050565b5f6020820190508181035f830152613938816138ff565b9050919050565b5f613949826129ed565b9150613954836129ed565b925082820390508181111561396c5761396b612f60565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139a4816129b2565b82525050565b5f6139b5838361399b565b60208301905092915050565b5f602082019050919050565b5f6139d782613972565b6139e1818561397c565b93506139ec8361398c565b805f5b83811015613a1c578151613a0388826139aa565b9750613a0e836139c1565b9250506001810190506139ef565b5085935050505092915050565b5f60a082019050613a3c5f830188612a91565b613a496020830187612f38565b8181036040830152613a5b81866139cd565b9050613a6a6060830185612de6565b613a776080830184612a91565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ab8826129ed565b9150613ac3836129ed565b925082613ad357613ad2613a81565b5b828204905092915050565b7f456e69676d614d6174683a206d756c7469706c69636174696f6e206f766572665f8201527f6c6f770000000000000000000000000000000000000000000000000000000000602082015250565b5f613b386023836128e2565b9150613b4382613ade565b604082019050919050565b5f6020820190508181035f830152613b6581613b2c565b9050919050565b7f456e69676d614d6174683a206164646974696f6e206f766572666c6f770000005f82015250565b5f613ba0601d836128e2565b9150613bab82613b6c565b602082019050919050565b5f6020820190508181035f830152613bcd81613b94565b905091905056fe417263616e65546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cca256951ca00d13c52628326a7fc79ed4e0de25c4d451b0ff9dc4bc5a1f62f664736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063734098f4116100eb5780639e78fb4f11610089578063c4fcc1eb11610063578063c4fcc1eb1461057d578063dd62ed3e146105a7578063ec1f3f63146105e3578063f42938901461060b576101c1565b80639e78fb4f14610501578063a9059cbb14610517578063bf474bed14610553576101c1565b80637d1db4a5116100c55780637d1db4a51461045b578063882ddf87146104855780638f9a55c0146104ad57806395d89b41146104d7576101c1565b8063734098f4146103f3578063751039fc146104095780637c957ac51461041f576101c1565b80632c9c17d71161015857806351bc3c851161013257806351bc3c85146103635780636ed9ab7a1461037957806370a08231146103a1578063730f74ff146103dd576101c1565b80632c9c17d7146102fb578063313ce5671461032357806347343e351461034d576101c1565b80630faee56f116101945780630faee56f14610255578063109daa991461027f57806318160ddd1461029557806323b872dd146102bf576101c1565b806306fdde03146101c5578063095ea7b3146101ef578063098181071461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610621565b6040516101e69190612962565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612a20565b61065e565b6040516102229190612a78565b60405180910390f35b348015610236575f80fd5b5061023f61067b565b60405161024c9190612962565b60405180910390f35b348015610260575f80fd5b506102696106b4565b6040516102769190612aa0565b60405180910390f35b34801561028a575f80fd5b506102936106ba565b005b3480156102a0575f80fd5b506102a961078e565b6040516102b69190612aa0565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e09190612ab9565b6107b2565b6040516102f29190612a78565b60405180910390f35b348015610306575f80fd5b50610321600480360381019061031c9190612c49565b610886565b005b34801561032e575f80fd5b506103376109a4565b6040516103449190612cab565b60405180910390f35b348015610358575f80fd5b506103616109ac565b005b34801561036e575f80fd5b50610377610afa565b005b348015610384575f80fd5b5061039f600480360381019061039a9190612d74565b610b91565b005b3480156103ac575f80fd5b506103c760048036038101906103c29190612dbb565b610c78565b6040516103d49190612aa0565b60405180910390f35b3480156103e8575f80fd5b506103f1610cbe565b005b3480156103fe575f80fd5b50610407610d6d565b005b348015610414575f80fd5b5061041d6110bc565b005b34801561042a575f80fd5b5061044560048036038101906104409190612dbb565b6111ee565b6040516104529190612a78565b60405180910390f35b348015610466575f80fd5b5061046f611240565b60405161047c9190612aa0565b60405180910390f35b348015610490575f80fd5b506104ab60048036038101906104a69190612c49565b611246565b005b3480156104b8575f80fd5b506104c1611365565b6040516104ce9190612aa0565b60405180910390f35b3480156104e2575f80fd5b506104eb61136b565b6040516104f89190612962565b60405180910390f35b34801561050c575f80fd5b506105156113a8565b005b348015610522575f80fd5b5061053d60048036038101906105389190612a20565b611612565b60405161054a9190612a78565b60405180910390f35b34801561055e575f80fd5b5061056761162f565b6040516105749190612aa0565b60405180910390f35b348015610588575f80fd5b50610591611635565b60405161059e9190612df5565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c89190612e0e565b61165c565b6040516105da9190612aa0565b60405180910390f35b3480156105ee575f80fd5b5061060960048036038101906106049190612e4c565b6116de565b005b348015610616575f80fd5b5061061f61176a565b005b60606040518060400160405280600b81526020017f526964646c65546f6b656e000000000000000000000000000000000000000000815250905090565b5f61067161066a6117d9565b84846117e0565b6001905092915050565b6040518060400160405280600c81526020017f526964646c654d6173746572000000000000000000000000000000000000000081525081565b60135481565b6106c26117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074590612ee7565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516107849190612f47565b60405180910390a1565b5f6009600a61079d91906130bc565b645600214b196107ad9190613106565b905090565b5f6107be8484846119a3565b61087b846107ca6117d9565b610876856040518060600160405280602e8152602001613bd5602e913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082d6117d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123c69092919063ffffffff16565b6117e0565b600190509392505050565b61088e6117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612ee7565b60405180910390fd5b5f5b81518110156109a0575f60045f84848151811061093c5761093b613147565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091c565b5050565b5f6009905090565b6109b46117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790612ee7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b3a6117d9565b73ffffffffffffffffffffffffffffffffffffffff1614610b59575f80fd5b5f610b6330610c78565b90505f811115610b7757610b7681612428565b5b5f4790505f811115610b8d57610b8c81612691565b5b5050565b7f6563686f0000000000000000000000000000000000000000000000000000000081604051602001610bc391906131ae565b6040516020818303038152906040528051906020012014610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c109061320e565b60405180910390fd5b600160055f610c266117d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc66117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ee7565b60405180910390fd5b5f60185f6101000a81548160ff021916908315150217905550565b610d756117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df890612ee7565b60405180910390fd5b601560149054906101000a900460ff1615610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613276565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610eee3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ed991906130bc565b645600214b19610ee99190613106565b6117e0565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f3630610c78565b5f80610f40611635565b426040518863ffffffff1660e01b8152600401610f6296959493929190613294565b60606040518083038185885af1158015610f7e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fa39190613307565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611043929190613357565b6020604051808303815f875af115801561105f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108391906133a8565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b6110c46117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790612ee7565b60405180910390fd5b6009600a61115e91906130bc565b645600214b1961116e9190613106565b6010819055506009600a61118291906130bc565b645600214b196111929190613106565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6111c791906130bc565b645600214b196111d79190613106565b6040516111e49190612aa0565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60105481565b61124e6117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190612ee7565b60405180910390fd5b5f5b815181101561136157600160045f8484815181106112fd576112fc613147565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112dc565b5050565b60115481565b60606040518060400160405280600381526020017f52444c0000000000000000000000000000000000000000000000000000000000815250905090565b6113b06117d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612ee7565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ca91906133e7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611550573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157491906133e7565b6040518363ffffffff1660e01b8152600401611591929190613412565b6020604051808303815f875af11580156115ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d191906133e7565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61162561161e6117d9565b84846119a3565b6001905092915050565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661171e6117d9565b73ffffffffffffffffffffffffffffffffffffffff161461173d575f80fd5b60095481111580156117515750600a548111155b611759575f80fd5b8060098190555080600a8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117aa6117d9565b73ffffffffffffffffffffffffffffffffffffffff16146117c9575f80fd5b5f4790506117d681612691565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906134a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390613537565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119969190612aa0565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a08906135c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7690613653565b60405180910390fd5b5f8111611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906136e1565b60405180910390fd5b5f611aca611635565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b385750611b08611635565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121165760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bdb575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611be3575f80fd5b60185f9054906101000a900460ff1615611c815760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c779061376f565b60405180910390fd5b5b5f600f5403611cc957611cc66064611cb8600b54600f5411611ca557600754611ca9565b6009545b856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b5f600f541115611cfe57611cfb6064611ced600e54856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611da7575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611dfa575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ef257601054821115611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906137d7565b60405180910390fd5b60115482611e5185610c78565b611e5b91906137f5565b1115611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9390613872565b60405180910390fd5b611ed86064611eca600b54600f5411611eb757600754611ebb565b6009545b856126f990919063ffffffff16565b61277090919063ffffffff16565b9050600f5f815480929190611eec90613890565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57611fbb6064611fad600c54600f5411611f9a57600854611f9e565b600a545b856126f990919063ffffffff16565b61277090919063ffffffff16565b90505b5f611fc830610c78565b905060158054906101000a900460ff16158015612031575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120495750601560169054906101000a900460ff165b8015612056575060125481115b80156120655750600d54600f54115b156121145760175443111561207c575f6016819055505b6003601654106120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890613921565b60405180910390fd5b6120de6120d9846120d4846013546127b9565b6127b9565b612428565b5f4790505f8111156120f4576120f347612691565b5b60165f81548092919061210690613890565b919050555043601781905550505b505b5f8111156122155761216e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161220c9190612aa0565b60405180910390a35b6122658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123086122bc828461282e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123ab848661282e90919063ffffffff16565b6040516123b89190612aa0565b60405180910390a350505050565b5f83831115829061240d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124049190612962565b60405180910390fd5b505f838561241b919061393f565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561245e5761245d612b0d565b5b60405190808252806020026020018201604052801561248c5781602001602082028036833780820191505090505b50905030815f815181106124a3576124a2613147565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612547573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256b91906133e7565b8160018151811061257f5761257e613147565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125e53060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117e0565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612647959493929190613a29565b5f604051808303815f87803b15801561265e575f80fd5b505af1158015612670573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126f5573d5f803e3d5ffd5b5050565b5f808303612709575f905061276a565b5f82846127169190613106565b90508284826127259190613aae565b14612765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275c90613b4e565b60405180910390fd5b809150505b92915050565b5f6127b183836040518060400160405280601c81526020017f456e69676d614d6174683a206469766973696f6e206279207a65726f00000000815250612877565b905092915050565b5f8183116127c757826127c9565b815b905092915050565b5f8082846127df91906137f5565b905083811015612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b90613bb6565b60405180910390fd5b8091505092915050565b5f61286f83836040518060400160405280602081526020017f456e69676d614d6174683a207375627472616374696f6e206f766572666c6f778152506123c6565b905092915050565b5f80831182906128bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b49190612962565b60405180910390fd5b505f83856128cb9190613aae565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561290f5780820151818401526020810190506128f4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612934826128d8565b61293e81856128e2565b935061294e8185602086016128f2565b6129578161291a565b840191505092915050565b5f6020820190508181035f83015261297a818461292a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129bc82612993565b9050919050565b6129cc816129b2565b81146129d6575f80fd5b50565b5f813590506129e7816129c3565b92915050565b5f819050919050565b6129ff816129ed565b8114612a09575f80fd5b50565b5f81359050612a1a816129f6565b92915050565b5f8060408385031215612a3657612a3561298b565b5b5f612a43858286016129d9565b9250506020612a5485828601612a0c565b9150509250929050565b5f8115159050919050565b612a7281612a5e565b82525050565b5f602082019050612a8b5f830184612a69565b92915050565b612a9a816129ed565b82525050565b5f602082019050612ab35f830184612a91565b92915050565b5f805f60608486031215612ad057612acf61298b565b5b5f612add868287016129d9565b9350506020612aee868287016129d9565b9250506040612aff86828701612a0c565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b438261291a565b810181811067ffffffffffffffff82111715612b6257612b61612b0d565b5b80604052505050565b5f612b74612982565b9050612b808282612b3a565b919050565b5f67ffffffffffffffff821115612b9f57612b9e612b0d565b5b602082029050602081019050919050565b5f80fd5b5f612bc6612bc184612b85565b612b6b565b90508083825260208201905060208402830185811115612be957612be8612bb0565b5b835b81811015612c125780612bfe88826129d9565b845260208401935050602081019050612beb565b5050509392505050565b5f82601f830112612c3057612c2f612b09565b5b8135612c40848260208601612bb4565b91505092915050565b5f60208284031215612c5e57612c5d61298b565b5b5f82013567ffffffffffffffff811115612c7b57612c7a61298f565b5b612c8784828501612c1c565b91505092915050565b5f60ff82169050919050565b612ca581612c90565b82525050565b5f602082019050612cbe5f830184612c9c565b92915050565b5f80fd5b5f67ffffffffffffffff821115612ce257612ce1612b0d565b5b612ceb8261291a565b9050602081019050919050565b828183375f83830152505050565b5f612d18612d1384612cc8565b612b6b565b905082815260208101848484011115612d3457612d33612cc4565b5b612d3f848285612cf8565b509392505050565b5f82601f830112612d5b57612d5a612b09565b5b8135612d6b848260208601612d06565b91505092915050565b5f60208284031215612d8957612d8861298b565b5b5f82013567ffffffffffffffff811115612da657612da561298f565b5b612db284828501612d47565b91505092915050565b5f60208284031215612dd057612dcf61298b565b5b5f612ddd848285016129d9565b91505092915050565b612def816129b2565b82525050565b5f602082019050612e085f830184612de6565b92915050565b5f8060408385031215612e2457612e2361298b565b5b5f612e31858286016129d9565b9250506020612e42858286016129d9565b9150509250929050565b5f60208284031215612e6157612e6061298b565b5b5f612e6e84828501612a0c565b91505092915050565b7f4d7973746963616c4f776e61626c653a2063616c6c6572206973206e6f7420745f8201527f686520526964646c654d61737465720000000000000000000000000000000000602082015250565b5f612ed1602f836128e2565b9150612edc82612e77565b604082019050919050565b5f6020820190508181035f830152612efe81612ec5565b9050919050565b5f819050919050565b5f819050919050565b5f612f31612f2c612f2784612f05565b612f0e565b6129ed565b9050919050565b612f4181612f17565b82525050565b5f602082019050612f5a5f830184612f38565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612fe257808604811115612fbe57612fbd612f60565b5b6001851615612fcd5780820291505b8081029050612fdb85612f8d565b9450612fa2565b94509492505050565b5f82612ffa57600190506130b5565b81613007575f90506130b5565b816001811461301d576002811461302757613056565b60019150506130b5565b60ff84111561303957613038612f60565b5b8360020a9150848211156130505761304f612f60565b5b506130b5565b5060208310610133831016604e8410600b841016171561308b5782820a90508381111561308657613085612f60565b5b6130b5565b6130988484846001612f99565b925090508184048111156130af576130ae612f60565b5b81810290505b9392505050565b5f6130c6826129ed565b91506130d183612c90565b92506130fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612feb565b905092915050565b5f613110826129ed565b915061311b836129ed565b9250828202613129816129ed565b915082820484148315176131405761313f612f60565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f613188826128d8565b6131928185613174565b93506131a28185602086016128f2565b80840191505092915050565b5f6131b9828461317e565b915081905092915050565b7f496e636f727265637420726964646c6520616e737765722e00000000000000005f82015250565b5f6131f86018836128e2565b9150613203826131c4565b602082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132606017836128e2565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b5f60c0820190506132a75f830189612de6565b6132b46020830188612a91565b6132c16040830187612f38565b6132ce6060830186612f38565b6132db6080830185612de6565b6132e860a0830184612a91565b979650505050505050565b5f81519050613301816129f6565b92915050565b5f805f6060848603121561331e5761331d61298b565b5b5f61332b868287016132f3565b935050602061333c868287016132f3565b925050604061334d868287016132f3565b9150509250925092565b5f60408201905061336a5f830185612de6565b6133776020830184612a91565b9392505050565b61338781612a5e565b8114613391575f80fd5b50565b5f815190506133a28161337e565b92915050565b5f602082840312156133bd576133bc61298b565b5b5f6133ca84828501613394565b91505092915050565b5f815190506133e1816129c3565b92915050565b5f602082840312156133fc576133fb61298b565b5b5f613409848285016133d3565b91505092915050565b5f6040820190506134255f830185612de6565b6134326020830184612de6565b9392505050565b7f417263616e65546f6b656e3a20617070726f76652066726f6d20746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f613493602a836128e2565b915061349e82613439565b604082019050919050565b5f6020820190508181035f8301526134c081613487565b9050919050565b7f417263616e65546f6b656e3a20617070726f766520746f20746865207a65726f5f8201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b5f6135216028836128e2565b915061352c826134c7565b604082019050919050565b5f6020820190508181035f83015261354e81613515565b9050919050565b7f417263616e65546f6b656e3a207472616e736665722066726f6d20746865207a5f8201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b5f6135af602b836128e2565b91506135ba82613555565b604082019050919050565b5f6020820190508181035f8301526135dc816135a3565b9050919050565b7f417263616e65546f6b656e3a207472616e7366657220746f20746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61363d6029836128e2565b9150613648826135e3565b604082019050919050565b5f6020820190508181035f83015261366a81613631565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136cb6029836128e2565b91506136d682613671565b604082019050919050565b5f6020820190508181035f8301526136f8816136bf565b9050919050565b7f596f75206d75737420736f6c76652074686520726964646c6520746f206163715f8201527f7569726520746f6b656e732e0000000000000000000000000000000000000000602082015250565b5f613759602c836128e2565b9150613764826136ff565b604082019050919050565b5f6020820190508181035f8301526137868161374d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137c16019836128e2565b91506137cc8261378d565b602082019050919050565b5f6020820190508181035f8301526137ee816137b5565b9050919050565b5f6137ff826129ed565b915061380a836129ed565b925082820190508082111561382257613821612f60565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61385c601a836128e2565b915061386782613828565b602082019050919050565b5f6020820190508181035f83015261388981613850565b9050919050565b5f61389a826129ed565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138cc576138cb612f60565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61390b6017836128e2565b9150613916826138d7565b602082019050919050565b5f6020820190508181035f830152613938816138ff565b9050919050565b5f613949826129ed565b9150613954836129ed565b925082820390508181111561396c5761396b612f60565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139a4816129b2565b82525050565b5f6139b5838361399b565b60208301905092915050565b5f602082019050919050565b5f6139d782613972565b6139e1818561397c565b93506139ec8361398c565b805f5b83811015613a1c578151613a0388826139aa565b9750613a0e836139c1565b9250506001810190506139ef565b5085935050505092915050565b5f60a082019050613a3c5f830188612a91565b613a496020830187612f38565b8181036040830152613a5b81866139cd565b9050613a6a6060830185612de6565b613a776080830184612a91565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ab8826129ed565b9150613ac3836129ed565b925082613ad357613ad2613a81565b5b828204905092915050565b7f456e69676d614d6174683a206d756c7469706c69636174696f6e206f766572665f8201527f6c6f770000000000000000000000000000000000000000000000000000000000602082015250565b5f613b386023836128e2565b9150613b4382613ade565b604082019050919050565b5f6020820190508181035f830152613b6581613b2c565b9050919050565b7f456e69676d614d6174683a206164646974696f6e206f766572666c6f770000005f82015250565b5f613ba0601d836128e2565b9150613bab82613b6c565b602082019050919050565b5f6020820190508181035f830152613bcd81613b94565b905091905056fe417263616e65546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cca256951ca00d13c52628326a7fc79ed4e0de25c4d451b0ff9dc4bc5a1f62f664736f6c63430008170033

Deployed Bytecode Sourcemap

4151:10163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6401:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7247:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4717:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5467:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11630:126;;;;;;;;;;;;;:::i;:::-;;6678:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7416:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12068:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6587:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:172;;;;;;;;;;;;;:::i;:::-;;13758:353;;;;;;;;;;;;;:::i;:::-;;13139:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6786:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13363:111;;;;;;;;;;;;;:::i;:::-;;12554:577;;;;;;;;;;;;;:::i;:::-;;11441:181;;;;;;;;;;;;;:::i;:::-;;12268:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5272:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11869:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5335:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6492:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12368:178;;;;;;;;;;;;;:::i;:::-;;6921:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5400:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2953:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7096:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13482:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14119:192;;;;;;;;;;;;;:::i;:::-;;6401:83;6438:13;6471:5;;;;;;;;;;;;;;;;;6464:12;;6401:83;:::o;7247:161::-;7322:4;7339:39;7348:12;:10;:12::i;:::-;7362:7;7371:6;7339:8;:39::i;:::-;7396:4;7389:11;;7247:161;;;;:::o;4717:53::-;;;;;;;;;;;;;;;;;;;:::o;5467:54::-;;;;:::o;11630:126::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:1:::1;11695:12;:16;;;;11727:21;11746:1;11727:21;;;;;;:::i;:::-;;;;;;;;11630:126::o:0;6678:100::-;6731:7;5189:1;5252:2;:13;;;;:::i;:::-;5237:12;:28;;;;:::i;:::-;6751:19;;6678:100;:::o;7416:319::-;7514:4;7531:36;7541:6;7549:9;7560:6;7531:9;:36::i;:::-;7578:127;7587:6;7595:12;:10;:12::i;:::-;7609:95;7647:6;7609:95;;;;;;;;;;;;;;;;;:11;:19;7621:6;7609:19;;;;;;;;;;;;;;;:33;7629:12;:10;:12::i;:::-;7609:33;;;;;;;;;;;;;;;;:37;;:95;;;;;:::i;:::-;7578:8;:127::i;:::-;7723:4;7716:11;;7416:319;;;;;:::o;12068:192::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12157:6:::1;12152:101;12173:11;:18;12169:1;:22;12152:101;;;12238:5;12211:8;:24;12220:11;12232:1;12220:14;;;;;;;;:::i;:::-;;;;;;;;12211:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12193:3;;;;;;;12152:101;;;;12068:192:::0;:::o;6587:83::-;6628:5;5189:1;6646:16;;6587:83;:::o;3210:172::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;3334:1:::1;3290:47;;3311:13;::::0;::::1;;;;;;;;3290:47;;;;;;;;;;;;3372:1;3348:13:::0;::::1;:26;;;;;;;;;;;;;;;;;;3210:172::o:0;13758:353::-;13822:15;;;;;;;;;;;13808:29;;:12;:10;:12::i;:::-;:29;;;13800:38;;;;;;13849:20;13870:24;13888:4;13870:9;:24::i;:::-;13849:45;;13921:1;13908:12;:14;13905:73;;;13936:30;13953:12;13936:16;:30::i;:::-;13905:73;13988:18;14007:21;13988:40;;14053:1;14042:10;:12;14039:65;;;14068:24;14081:10;14068:12;:24::i;:::-;14039:65;13789:322;;13758:353::o;13139:202::-;13210:45;13237:6;13220:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;13210:35;;;;;;:45;13202:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;13329:4;13295:17;:31;13313:12;:10;:12::i;:::-;13295:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13139:202;:::o;6786:127::-;6852:7;6879:17;:26;6897:7;6879:26;;;;;;;;;;;;;;;;6872:33;;6786:127;;;:::o;13363:111::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13461:5:::1;13435:23;;:31;;;;;;;;;;;;;;;;;;13363:111::o:0;12554:577::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12627:11:::1;;;;;;;;;;;12626:12;12618:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12713:42;12676:15;;:80;;;;;;;;;;;;;;;;;;12767:63;12784:4;12799:15;;;;;;;;;;;5189:1;5252:2;:13;;;;:::i;:::-;5237:12;:28;;;;:::i;:::-;12767:8;:63::i;:::-;12841:15;;;;;;;;;;;:31;;;12880:21;12911:4;12917:24;12935:4;12917:9;:24::i;:::-;12942:1;12944::::0;12946:14:::1;:12;:14::i;:::-;12961:15;12841:136;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13001:13;;;;;;;;;;;12988:35;;;13032:15;;;;;;;;;;;13050:14;12988:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13090:4;13076:11;;:18;;;;;;;;;;;;;;;;;;13119:4;13105:11;;:18;;;;;;;;;;;;;;;;;;12554:577::o:0;11441:181::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;5189:1:::1;5252:2;:13;;;;:::i;:::-;5237:12;:28;;;;:::i;:::-;11501:12;:27;;;;5189:1;5252:2;:13;;;;:::i;:::-;5237:12;:28;;;;:::i;:::-;11539:14;:27;;;;11582:32;5189:1;5252:2;:13;;;;:::i;:::-;5237:12;:28;;;;:::i;:::-;11582:32;;;;;;:::i;:::-;;;;;;;;11441:181::o:0;12268:92::-;12320:4;12341:8;:11;12350:1;12341:11;;;;;;;;;;;;;;;;;;;;;;;;;12334:18;;12268:92;;;:::o;5272:56::-;;;;:::o;11869:191::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;11958:6:::1;11953:100;11974:9;:16;11970:1;:20;11953:100;;;12037:4;12012:8;:22;12021:9;12031:1;12021:12;;;;;;;;:::i;:::-;;;;;;;;12012:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11992:3;;;;;;;11953:100;;;;11869:191:::0;:::o;5335:58::-;;;;:::o;6492:87::-;6531:13;6564:7;;;;;;;;;;;;;;;;;6557:14;;6492:87;:::o;12368:178::-;3118:12;:10;:12::i;:::-;3101:29;;:13;;;;;;;;;;:29;;;3093:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12462:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12444:55;;;12508:4;12515:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12444:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12428:13;;:110;;;;;;;;;;;;;;;;;;12368:178::o:0;6921:167::-;6999:4;7016:42;7026:12;:10;:12::i;:::-;7040:9;7051:6;7016:9;:42::i;:::-;7076:4;7069:11;;6921:167;;;;:::o;5400:60::-;;;;:::o;2953:93::-;2998:7;3025:13;;;;;;;;;;;3018:20;;2953:93;:::o;7096:143::-;7177:7;7204:11;:18;7216:5;7204:18;;;;;;;;;;;;;;;:27;7223:7;7204:27;;;;;;;;;;;;;;;;7197:34;;7096:143;;;;:::o;13482:231::-;13557:15;;;;;;;;;;;13543:29;;:12;:10;:12::i;:::-;:29;;;13535:38;;;;;;13599:16;;13590:7;:25;;:51;;;;;13628:13;;13619:7;:22;;13590:51;13582:60;;;;;;13668:7;13651:16;:24;;;;13698:7;13684:13;:21;;;;13482:231;:::o;14119:192::-;14183:15;;;;;;;;;;;14169:29;;:12;:10;:12::i;:::-;:29;;;14161:38;;;;;;14210:26;14239:21;14210:50;;14271:32;14284:18;14271:12;:32::i;:::-;14150:161;14119:192::o;658:98::-;711:7;738:10;731:17;;658:98;:::o;7743:347::-;7853:1;7836:19;;:5;:19;;;7828:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7940:1;7921:21;;:7;:21;;;7913:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8028:6;7998:11;:18;8010:5;7998:18;;;;;;;;;;;;;;;:27;8017:7;7998:27;;;;;;;;;;;;;;;:36;;;;8066:7;8050:32;;8059:5;8050:32;;;8075:6;8050:32;;;;;;:::i;:::-;;;;;;;;7743:347;;;:::o;8098:2738::-;8202:1;8186:18;;:4;:18;;;8178:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8285:1;8271:16;;:2;:16;;;8263:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8361:1;8352:6;:10;8344:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8419:17;8461:14;:12;:14::i;:::-;8453:22;;:4;:22;;;;:46;;;;;8485:14;:12;:14::i;:::-;8479:20;;:2;:20;;;;8453:46;8449:1983;;;8525:8;:14;8534:4;8525:14;;;;;;;;;;;;;;;;;;;;;;;;;8524:15;:32;;;;;8544:8;:12;8553:2;8544:12;;;;;;;;;;;;;;;;;;;;;;;;;8543:13;8524:32;8516:41;;;;;;8578:23;;;;;;;;;;;8574:142;;;8630:17;:21;8648:2;8630:21;;;;;;;;;;;;;;;;;;;;;;;;;8622:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;8574:142;8750:1;8735:13;;:16;8732:159;;8783:92;8871:3;8783:83;8809:19;;8795:13;;:33;8794:71;;8847:18;;8794:71;;;8830:16;;8794:71;8783:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;8771:104;;8732:159;8922:1;8908:13;;:15;8905:99;;;8955:33;8984:3;8955:24;8966:12;;8955:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8943:45;;8905:99;9032:13;;;;;;;;;;;9024:21;;:4;:21;;;:55;;;;;9063:15;;;;;;;;;;;9049:30;;:2;:30;;;;9024:55;:81;;;;;9085:16;:20;9102:2;9085:20;;;;;;;;;;;;;;;;;;;;;;;;;9083:22;9024:81;9020:438;;;9145:12;;9135:6;:22;;9127:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9240:14;;9230:6;9214:13;9224:2;9214:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9206:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9316:92;9404:3;9316:83;9342:19;;9328:13;;:33;9327:71;;9380:18;;9327:71;;;9363:16;;9327:71;9316:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;9304:104;;9427:13;;:15;;;;;;;;;:::i;:::-;;;;;;9020:438;9483:13;;;;;;;;;;;9477:19;;:2;:19;;;:43;;;;;9515:4;9500:20;;:4;:20;;;;9477:43;9474:178;;;9553:83;9632:3;9553:74;9579:16;;9565:13;;:30;9564:62;;9611:15;;9564:62;;;9597:13;;9564:62;9553:6;:10;;:74;;;;:::i;:::-;:78;;:83;;;;:::i;:::-;9541:95;;9474:178;9668:28;9699:24;9717:4;9699:9;:24::i;:::-;9668:55;;9743:6;;;;;;;;;;9742:7;:30;;;;;9759:13;;;;;;;;;;;9753:19;;:2;:19;;;9742:30;:45;;;;;9776:11;;;;;;;;;;;9742:45;:89;;;;;9814:17;;9791:20;:40;9742:89;:127;;;;;9851:18;;9835:13;;:34;9742:127;9738:683;;;9909:13;;9894:12;:28;9890:90;;;9959:1;9947:9;:13;;;;9890:90;10018:1;10006:9;;:13;9998:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10066:69;10083:51;10087:6;10095:38;10099:20;10121:11;;10095:3;:38::i;:::-;10083:3;:51::i;:::-;10066:16;:69::i;:::-;10154:26;10183:21;10154:50;;10248:1;10227:18;:22;10223:106;;;10274:35;10287:21;10274:12;:35::i;:::-;10223:106;10347:9;;:11;;;;;;;;;:::i;:::-;;;;;;10393:12;10377:13;:28;;;;9871:550;9738:683;8501:1931;8449:1983;10457:1;10447:9;:11;10444:177;;;10505:47;10542:9;10505:17;:32;10531:4;10505:32;;;;;;;;;;;;;;;;:36;;:47;;;;:::i;:::-;10472:17;:32;10498:4;10472:32;;;;;;;;;;;;;;;:80;;;;10593:4;10570:39;;10579:4;10570:39;;;10599:9;10570:39;;;;;;:::i;:::-;;;;;;;;10444:177;10655:35;10683:6;10655:17;:23;10673:4;10655:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;10631:17;:23;10649:4;10631:23;;;;;;;;;;;;;;;:59;;;;10723:48;10749:21;10760:9;10749:6;:10;;:21;;;;:::i;:::-;10723:17;:21;10741:2;10723:21;;;;;;;;;;;;;;;;:25;;:48;;;;:::i;:::-;10701:17;:21;10719:2;10701:21;;;;;;;;;;;;;;;:70;;;;10802:2;10787:41;;10796:4;10787:41;;;10806:21;10817:9;10806:6;:10;;:21;;;;:::i;:::-;10787:41;;;;;;:::i;:::-;;;;;;;;8167:2669;8098:2738;;;:::o;1807:190::-;1893:7;1926:1;1921;:6;;1929:12;1913:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1953:9;1969:1;1965;:5;;;;:::i;:::-;1953:17;;1988:1;1981:8;;;1807:190;;;;;:::o;10950:483::-;5990:4;5981:6;;:13;;;;;;;;;;;;;;;;;;11028:21:::1;11066:1;11052:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11028:40;;11097:4;11079;11084:1;11079:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11123:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11113:4;11118:1;11113:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11156:62;11173:4;11188:15;;;;;;;;;;;11206:11;11156:8;:62::i;:::-;11229:15;;;;;;;;;;;:66;;;11310:11;11336:1;11352:4;11379;11399:15;11229:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11017:416;6026:5:::0;6017:6;;:14;;;;;;;;;;;;;;;;;;10950:483;:::o;11764:97::-;11821:15;;;;;;;;;;;:24;;:32;11846:6;11821:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11764:97;:::o;2005:248::-;2063:7;2092:1;2087;:6;2083:47;;2117:1;2110:8;;;;2083:47;2140:9;2156:1;2152;:5;;;;:::i;:::-;2140:17;;2185:1;2180;2176;:5;;;;:::i;:::-;:10;2168:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:1;2237:8;;;2005:248;;;;;:::o;2261:134::-;2319:7;2346:41;2350:1;2353;2346:41;;;;;;;;;;;;;;;;;:3;:41::i;:::-;2339:48;;2261:134;;;;:::o;10844:98::-;10901:7;10928:1;10926;:3;10925:9;;10933:1;10925:9;;;10931:1;10925:9;10918:16;;10844:98;;;;:::o;1472:181::-;1530:7;1550:9;1566:1;1562;:5;;;;:::i;:::-;1550:17;;1591:1;1586;:6;;1578:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;1644:1;1637:8;;;1472:181;;;;:::o;1661:138::-;1719:7;1746:45;1750:1;1753;1746:45;;;;;;;;;;;;;;;;;:3;:45::i;:::-;1739:52;;1661:138;;;;:::o;2403:189::-;2489:7;2521:1;2517;:5;2524:12;2509:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2548:9;2564:1;2560;:5;;;;:::i;:::-;2548:17;;2583:1;2576:8;;;2403:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:180;4594:77;4591:1;4584:88;4691:4;4688:1;4681:15;4715:4;4712:1;4705:15;4732:281;4815:27;4837:4;4815:27;:::i;:::-;4807:6;4803:40;4945:6;4933:10;4930:22;4909:18;4897:10;4894:34;4891:62;4888:88;;;4956:18;;:::i;:::-;4888:88;4996:10;4992:2;4985:22;4775:238;4732:281;;:::o;5019:129::-;5053:6;5080:20;;:::i;:::-;5070:30;;5109:33;5137:4;5129:6;5109:33;:::i;:::-;5019:129;;;:::o;5154:311::-;5231:4;5321:18;5313:6;5310:30;5307:56;;;5343:18;;:::i;:::-;5307:56;5393:4;5385:6;5381:17;5373:25;;5453:4;5447;5443:15;5435:23;;5154:311;;;:::o;5471:117::-;5580:1;5577;5570:12;5611:710;5707:5;5732:81;5748:64;5805:6;5748:64;:::i;:::-;5732:81;:::i;:::-;5723:90;;5833:5;5862:6;5855:5;5848:21;5896:4;5889:5;5885:16;5878:23;;5949:4;5941:6;5937:17;5929:6;5925:30;5978:3;5970:6;5967:15;5964:122;;;5997:79;;:::i;:::-;5964:122;6112:6;6095:220;6129:6;6124:3;6121:15;6095:220;;;6204:3;6233:37;6266:3;6254:10;6233:37;:::i;:::-;6228:3;6221:50;6300:4;6295:3;6291:14;6284:21;;6171:144;6155:4;6150:3;6146:14;6139:21;;6095:220;;;6099:21;5713:608;;5611:710;;;;;:::o;6344:370::-;6415:5;6464:3;6457:4;6449:6;6445:17;6441:27;6431:122;;6472:79;;:::i;:::-;6431:122;6589:6;6576:20;6614:94;6704:3;6696:6;6689:4;6681:6;6677:17;6614:94;:::i;:::-;6605:103;;6421:293;6344:370;;;;:::o;6720:539::-;6804:6;6853:2;6841:9;6832:7;6828:23;6824:32;6821:119;;;6859:79;;:::i;:::-;6821:119;7007:1;6996:9;6992:17;6979:31;7037:18;7029:6;7026:30;7023:117;;;7059:79;;:::i;:::-;7023:117;7164:78;7234:7;7225:6;7214:9;7210:22;7164:78;:::i;:::-;7154:88;;6950:302;6720:539;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:117::-;7804:1;7801;7794:12;7818:308;7880:4;7970:18;7962:6;7959:30;7956:56;;;7992:18;;:::i;:::-;7956:56;8030:29;8052:6;8030:29;:::i;:::-;8022:37;;8114:4;8108;8104:15;8096:23;;7818:308;;;:::o;8132:146::-;8229:6;8224:3;8219;8206:30;8270:1;8261:6;8256:3;8252:16;8245:27;8132:146;;;:::o;8284:425::-;8362:5;8387:66;8403:49;8445:6;8403:49;:::i;:::-;8387:66;:::i;:::-;8378:75;;8476:6;8469:5;8462:21;8514:4;8507:5;8503:16;8552:3;8543:6;8538:3;8534:16;8531:25;8528:112;;;8559:79;;:::i;:::-;8528:112;8649:54;8696:6;8691:3;8686;8649:54;:::i;:::-;8368:341;8284:425;;;;;:::o;8729:340::-;8785:5;8834:3;8827:4;8819:6;8815:17;8811:27;8801:122;;8842:79;;:::i;:::-;8801:122;8959:6;8946:20;8984:79;9059:3;9051:6;9044:4;9036:6;9032:17;8984:79;:::i;:::-;8975:88;;8791:278;8729:340;;;;:::o;9075:509::-;9144:6;9193:2;9181:9;9172:7;9168:23;9164:32;9161:119;;;9199:79;;:::i;:::-;9161:119;9347:1;9336:9;9332:17;9319:31;9377:18;9369:6;9366:30;9363:117;;;9399:79;;:::i;:::-;9363:117;9504:63;9559:7;9550:6;9539:9;9535:22;9504:63;:::i;:::-;9494:73;;9290:287;9075:509;;;;:::o;9590:329::-;9649:6;9698:2;9686:9;9677:7;9673:23;9669:32;9666:119;;;9704:79;;:::i;:::-;9666:119;9824:1;9849:53;9894:7;9885:6;9874:9;9870:22;9849:53;:::i;:::-;9839:63;;9795:117;9590:329;;;;:::o;9925:118::-;10012:24;10030:5;10012:24;:::i;:::-;10007:3;10000:37;9925:118;;:::o;10049:222::-;10142:4;10180:2;10169:9;10165:18;10157:26;;10193:71;10261:1;10250:9;10246:17;10237:6;10193:71;:::i;:::-;10049:222;;;;:::o;10277:474::-;10345:6;10353;10402:2;10390:9;10381:7;10377:23;10373:32;10370:119;;;10408:79;;:::i;:::-;10370:119;10528:1;10553:53;10598:7;10589:6;10578:9;10574:22;10553:53;:::i;:::-;10543:63;;10499:117;10655:2;10681:53;10726:7;10717:6;10706:9;10702:22;10681:53;:::i;:::-;10671:63;;10626:118;10277:474;;;;;:::o;10757:329::-;10816:6;10865:2;10853:9;10844:7;10840:23;10836:32;10833:119;;;10871:79;;:::i;:::-;10833:119;10991:1;11016:53;11061:7;11052:6;11041:9;11037:22;11016:53;:::i;:::-;11006:63;;10962:117;10757:329;;;;:::o;11092:234::-;11232:34;11228:1;11220:6;11216:14;11209:58;11301:17;11296:2;11288:6;11284:15;11277:42;11092:234;:::o;11332:366::-;11474:3;11495:67;11559:2;11554:3;11495:67;:::i;:::-;11488:74;;11571:93;11660:3;11571:93;:::i;:::-;11689:2;11684:3;11680:12;11673:19;;11332:366;;;:::o;11704:419::-;11870:4;11908:2;11897:9;11893:18;11885:26;;11957:9;11951:4;11947:20;11943:1;11932:9;11928:17;11921:47;11985:131;12111:4;11985:131;:::i;:::-;11977:139;;11704:419;;;:::o;12129:85::-;12174:7;12203:5;12192:16;;12129:85;;;:::o;12220:60::-;12248:3;12269:5;12262:12;;12220:60;;;:::o;12286:158::-;12344:9;12377:61;12395:42;12404:32;12430:5;12404:32;:::i;:::-;12395:42;:::i;:::-;12377:61;:::i;:::-;12364:74;;12286:158;;;:::o;12450:147::-;12545:45;12584:5;12545:45;:::i;:::-;12540:3;12533:58;12450:147;;:::o;12603:238::-;12704:4;12742:2;12731:9;12727:18;12719:26;;12755:79;12831:1;12820:9;12816:17;12807:6;12755:79;:::i;:::-;12603:238;;;;:::o;12847:180::-;12895:77;12892:1;12885:88;12992:4;12989:1;12982:15;13016:4;13013:1;13006:15;13033:102;13075:8;13122:5;13119:1;13115:13;13094:34;;13033:102;;;:::o;13141:848::-;13202:5;13209:4;13233:6;13224:15;;13257:5;13248:14;;13271:712;13292:1;13282:8;13279:15;13271:712;;;13387:4;13382:3;13378:14;13372:4;13369:24;13366:50;;;13396:18;;:::i;:::-;13366:50;13446:1;13436:8;13432:16;13429:451;;;13861:4;13854:5;13850:16;13841:25;;13429:451;13911:4;13905;13901:15;13893:23;;13941:32;13964:8;13941:32;:::i;:::-;13929:44;;13271:712;;;13141:848;;;;;;;:::o;13995:1073::-;14049:5;14240:8;14230:40;;14261:1;14252:10;;14263:5;;14230:40;14289:4;14279:36;;14306:1;14297:10;;14308:5;;14279:36;14375:4;14423:1;14418:27;;;;14459:1;14454:191;;;;14368:277;;14418:27;14436:1;14427:10;;14438:5;;;14454:191;14499:3;14489:8;14486:17;14483:43;;;14506:18;;:::i;:::-;14483:43;14555:8;14552:1;14548:16;14539:25;;14590:3;14583:5;14580:14;14577:40;;;14597:18;;:::i;:::-;14577:40;14630:5;;;14368:277;;14754:2;14744:8;14741:16;14735:3;14729:4;14726:13;14722:36;14704:2;14694:8;14691:16;14686:2;14680:4;14677:12;14673:35;14657:111;14654:246;;;14810:8;14804:4;14800:19;14791:28;;14845:3;14838:5;14835:14;14832:40;;;14852:18;;:::i;:::-;14832:40;14885:5;;14654:246;14925:42;14963:3;14953:8;14947:4;14944:1;14925:42;:::i;:::-;14910:57;;;;14999:4;14994:3;14990:14;14983:5;14980:25;14977:51;;;15008:18;;:::i;:::-;14977:51;15057:4;15050:5;15046:16;15037:25;;13995:1073;;;;;;:::o;15074:281::-;15132:5;15156:23;15174:4;15156:23;:::i;:::-;15148:31;;15200:25;15216:8;15200:25;:::i;:::-;15188:37;;15244:104;15281:66;15271:8;15265:4;15244:104;:::i;:::-;15235:113;;15074:281;;;;:::o;15361:410::-;15401:7;15424:20;15442:1;15424:20;:::i;:::-;15419:25;;15458:20;15476:1;15458:20;:::i;:::-;15453:25;;15513:1;15510;15506:9;15535:30;15553:11;15535:30;:::i;:::-;15524:41;;15714:1;15705:7;15701:15;15698:1;15695:22;15675:1;15668:9;15648:83;15625:139;;15744:18;;:::i;:::-;15625:139;15409:362;15361:410;;;;:::o;15777:180::-;15825:77;15822:1;15815:88;15922:4;15919:1;15912:15;15946:4;15943:1;15936:15;15963:148;16065:11;16102:3;16087:18;;15963:148;;;;:::o;16117:390::-;16223:3;16251:39;16284:5;16251:39;:::i;:::-;16306:89;16388:6;16383:3;16306:89;:::i;:::-;16299:96;;16404:65;16462:6;16457:3;16450:4;16443:5;16439:16;16404:65;:::i;:::-;16494:6;16489:3;16485:16;16478:23;;16227:280;16117:390;;;;:::o;16513:275::-;16645:3;16667:95;16758:3;16749:6;16667:95;:::i;:::-;16660:102;;16779:3;16772:10;;16513:275;;;;:::o;16794:174::-;16934:26;16930:1;16922:6;16918:14;16911:50;16794:174;:::o;16974:366::-;17116:3;17137:67;17201:2;17196:3;17137:67;:::i;:::-;17130:74;;17213:93;17302:3;17213:93;:::i;:::-;17331:2;17326:3;17322:12;17315:19;;16974:366;;;:::o;17346:419::-;17512:4;17550:2;17539:9;17535:18;17527:26;;17599:9;17593:4;17589:20;17585:1;17574:9;17570:17;17563:47;17627:131;17753:4;17627:131;:::i;:::-;17619:139;;17346:419;;;:::o;17771:173::-;17911:25;17907:1;17899:6;17895:14;17888:49;17771:173;:::o;17950:366::-;18092:3;18113:67;18177:2;18172:3;18113:67;:::i;:::-;18106:74;;18189:93;18278:3;18189:93;:::i;:::-;18307:2;18302:3;18298:12;18291:19;;17950:366;;;:::o;18322:419::-;18488:4;18526:2;18515:9;18511:18;18503:26;;18575:9;18569:4;18565:20;18561:1;18550:9;18546:17;18539:47;18603:131;18729:4;18603:131;:::i;:::-;18595:139;;18322:419;;;:::o;18747:807::-;18996:4;19034:3;19023:9;19019:19;19011:27;;19048:71;19116:1;19105:9;19101:17;19092:6;19048:71;:::i;:::-;19129:72;19197:2;19186:9;19182:18;19173:6;19129:72;:::i;:::-;19211:80;19287:2;19276:9;19272:18;19263:6;19211:80;:::i;:::-;19301;19377:2;19366:9;19362:18;19353:6;19301:80;:::i;:::-;19391:73;19459:3;19448:9;19444:19;19435:6;19391:73;:::i;:::-;19474;19542:3;19531:9;19527:19;19518:6;19474:73;:::i;:::-;18747:807;;;;;;;;;:::o;19560:143::-;19617:5;19648:6;19642:13;19633:22;;19664:33;19691:5;19664:33;:::i;:::-;19560:143;;;;:::o;19709:663::-;19797:6;19805;19813;19862:2;19850:9;19841:7;19837:23;19833:32;19830:119;;;19868:79;;:::i;:::-;19830:119;19988:1;20013:64;20069:7;20060:6;20049:9;20045:22;20013:64;:::i;:::-;20003:74;;19959:128;20126:2;20152:64;20208:7;20199:6;20188:9;20184:22;20152:64;:::i;:::-;20142:74;;20097:129;20265:2;20291:64;20347:7;20338:6;20327:9;20323:22;20291:64;:::i;:::-;20281:74;;20236:129;19709:663;;;;;:::o;20378:332::-;20499:4;20537:2;20526:9;20522:18;20514:26;;20550:71;20618:1;20607:9;20603:17;20594:6;20550:71;:::i;:::-;20631:72;20699:2;20688:9;20684:18;20675:6;20631:72;:::i;:::-;20378:332;;;;;:::o;20716:116::-;20786:21;20801:5;20786:21;:::i;:::-;20779:5;20776:32;20766:60;;20822:1;20819;20812:12;20766:60;20716:116;:::o;20838:137::-;20892:5;20923:6;20917:13;20908:22;;20939:30;20963:5;20939:30;:::i;:::-;20838:137;;;;:::o;20981:345::-;21048:6;21097:2;21085:9;21076:7;21072:23;21068:32;21065:119;;;21103:79;;:::i;:::-;21065:119;21223:1;21248:61;21301:7;21292:6;21281:9;21277:22;21248:61;:::i;:::-;21238:71;;21194:125;20981:345;;;;:::o;21332:143::-;21389:5;21420:6;21414:13;21405:22;;21436:33;21463:5;21436:33;:::i;:::-;21332:143;;;;:::o;21481:351::-;21551:6;21600:2;21588:9;21579:7;21575:23;21571:32;21568:119;;;21606:79;;:::i;:::-;21568:119;21726:1;21751:64;21807:7;21798:6;21787:9;21783:22;21751:64;:::i;:::-;21741:74;;21697:128;21481:351;;;;:::o;21838:332::-;21959:4;21997:2;21986:9;21982:18;21974:26;;22010:71;22078:1;22067:9;22063:17;22054:6;22010:71;:::i;:::-;22091:72;22159:2;22148:9;22144:18;22135:6;22091:72;:::i;:::-;21838:332;;;;;:::o;22176:229::-;22316:34;22312:1;22304:6;22300:14;22293:58;22385:12;22380:2;22372:6;22368:15;22361:37;22176:229;:::o;22411:366::-;22553:3;22574:67;22638:2;22633:3;22574:67;:::i;:::-;22567:74;;22650:93;22739:3;22650:93;:::i;:::-;22768:2;22763:3;22759:12;22752:19;;22411:366;;;:::o;22783:419::-;22949:4;22987:2;22976:9;22972:18;22964:26;;23036:9;23030:4;23026:20;23022:1;23011:9;23007:17;23000:47;23064:131;23190:4;23064:131;:::i;:::-;23056:139;;22783:419;;;:::o;23208:227::-;23348:34;23344:1;23336:6;23332:14;23325:58;23417:10;23412:2;23404:6;23400:15;23393:35;23208:227;:::o;23441:366::-;23583:3;23604:67;23668:2;23663:3;23604:67;:::i;:::-;23597:74;;23680:93;23769:3;23680:93;:::i;:::-;23798:2;23793:3;23789:12;23782:19;;23441:366;;;:::o;23813:419::-;23979:4;24017:2;24006:9;24002:18;23994:26;;24066:9;24060:4;24056:20;24052:1;24041:9;24037:17;24030:47;24094:131;24220:4;24094:131;:::i;:::-;24086:139;;23813:419;;;:::o;24238:230::-;24378:34;24374:1;24366:6;24362:14;24355:58;24447:13;24442:2;24434:6;24430:15;24423:38;24238:230;:::o;24474:366::-;24616:3;24637:67;24701:2;24696:3;24637:67;:::i;:::-;24630:74;;24713:93;24802:3;24713:93;:::i;:::-;24831:2;24826:3;24822:12;24815:19;;24474:366;;;:::o;24846:419::-;25012:4;25050:2;25039:9;25035:18;25027:26;;25099:9;25093:4;25089:20;25085:1;25074:9;25070:17;25063:47;25127:131;25253:4;25127:131;:::i;:::-;25119:139;;24846:419;;;:::o;25271:228::-;25411:34;25407:1;25399:6;25395:14;25388:58;25480:11;25475:2;25467:6;25463:15;25456:36;25271:228;:::o;25505:366::-;25647:3;25668:67;25732:2;25727:3;25668:67;:::i;:::-;25661:74;;25744:93;25833:3;25744:93;:::i;:::-;25862:2;25857:3;25853:12;25846:19;;25505:366;;;:::o;25877:419::-;26043:4;26081:2;26070:9;26066:18;26058:26;;26130:9;26124:4;26120:20;26116:1;26105:9;26101:17;26094:47;26158:131;26284:4;26158:131;:::i;:::-;26150:139;;25877:419;;;:::o;26302:228::-;26442:34;26438:1;26430:6;26426:14;26419:58;26511:11;26506:2;26498:6;26494:15;26487:36;26302:228;:::o;26536:366::-;26678:3;26699:67;26763:2;26758:3;26699:67;:::i;:::-;26692:74;;26775:93;26864:3;26775:93;:::i;:::-;26893:2;26888:3;26884:12;26877:19;;26536:366;;;:::o;26908:419::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27161:9;27155:4;27151:20;27147:1;27136:9;27132:17;27125:47;27189:131;27315:4;27189:131;:::i;:::-;27181:139;;26908:419;;;:::o;27333:231::-;27473:34;27469:1;27461:6;27457:14;27450:58;27542:14;27537:2;27529:6;27525:15;27518:39;27333:231;:::o;27570:366::-;27712:3;27733:67;27797:2;27792:3;27733:67;:::i;:::-;27726:74;;27809:93;27898:3;27809:93;:::i;:::-;27927:2;27922:3;27918:12;27911:19;;27570:366;;;:::o;27942:419::-;28108:4;28146:2;28135:9;28131:18;28123:26;;28195:9;28189:4;28185:20;28181:1;28170:9;28166:17;28159:47;28223:131;28349:4;28223:131;:::i;:::-;28215:139;;27942:419;;;:::o;28367:175::-;28507:27;28503:1;28495:6;28491:14;28484:51;28367:175;:::o;28548:366::-;28690:3;28711:67;28775:2;28770:3;28711:67;:::i;:::-;28704:74;;28787:93;28876:3;28787:93;:::i;:::-;28905:2;28900:3;28896:12;28889:19;;28548:366;;;:::o;28920:419::-;29086:4;29124:2;29113:9;29109:18;29101:26;;29173:9;29167:4;29163:20;29159:1;29148:9;29144:17;29137:47;29201:131;29327:4;29201:131;:::i;:::-;29193:139;;28920:419;;;:::o;29345:191::-;29385:3;29404:20;29422:1;29404:20;:::i;:::-;29399:25;;29438:20;29456:1;29438:20;:::i;:::-;29433:25;;29481:1;29478;29474:9;29467:16;;29502:3;29499:1;29496:10;29493:36;;;29509:18;;:::i;:::-;29493:36;29345:191;;;;:::o;29542:176::-;29682:28;29678:1;29670:6;29666:14;29659:52;29542:176;:::o;29724:366::-;29866:3;29887:67;29951:2;29946:3;29887:67;:::i;:::-;29880:74;;29963:93;30052:3;29963:93;:::i;:::-;30081:2;30076:3;30072:12;30065:19;;29724:366;;;:::o;30096:419::-;30262:4;30300:2;30289:9;30285:18;30277:26;;30349:9;30343:4;30339:20;30335:1;30324:9;30320:17;30313:47;30377:131;30503:4;30377:131;:::i;:::-;30369:139;;30096:419;;;:::o;30521:233::-;30560:3;30583:24;30601:5;30583:24;:::i;:::-;30574:33;;30629:66;30622:5;30619:77;30616:103;;30699:18;;:::i;:::-;30616:103;30746:1;30739:5;30735:13;30728:20;;30521:233;;;:::o;30760:173::-;30900:25;30896:1;30888:6;30884:14;30877:49;30760:173;:::o;30939:366::-;31081:3;31102:67;31166:2;31161:3;31102:67;:::i;:::-;31095:74;;31178:93;31267:3;31178:93;:::i;:::-;31296:2;31291:3;31287:12;31280:19;;30939:366;;;:::o;31311:419::-;31477:4;31515:2;31504:9;31500:18;31492:26;;31564:9;31558:4;31554:20;31550:1;31539:9;31535:17;31528:47;31592:131;31718:4;31592:131;:::i;:::-;31584:139;;31311:419;;;:::o;31736:194::-;31776:4;31796:20;31814:1;31796:20;:::i;:::-;31791:25;;31830:20;31848:1;31830:20;:::i;:::-;31825:25;;31874:1;31871;31867:9;31859:17;;31898:1;31892:4;31889:11;31886:37;;;31903:18;;:::i;:::-;31886:37;31736:194;;;;:::o;31936:114::-;32003:6;32037:5;32031:12;32021:22;;31936:114;;;:::o;32056:184::-;32155:11;32189:6;32184:3;32177:19;32229:4;32224:3;32220:14;32205:29;;32056:184;;;;:::o;32246:132::-;32313:4;32336:3;32328:11;;32366:4;32361:3;32357:14;32349:22;;32246:132;;;:::o;32384:108::-;32461:24;32479:5;32461:24;:::i;:::-;32456:3;32449:37;32384:108;;:::o;32498:179::-;32567:10;32588:46;32630:3;32622:6;32588:46;:::i;:::-;32666:4;32661:3;32657:14;32643:28;;32498:179;;;;:::o;32683:113::-;32753:4;32785;32780:3;32776:14;32768:22;;32683:113;;;:::o;32832:732::-;32951:3;32980:54;33028:5;32980:54;:::i;:::-;33050:86;33129:6;33124:3;33050:86;:::i;:::-;33043:93;;33160:56;33210:5;33160:56;:::i;:::-;33239:7;33270:1;33255:284;33280:6;33277:1;33274:13;33255:284;;;33356:6;33350:13;33383:63;33442:3;33427:13;33383:63;:::i;:::-;33376:70;;33469:60;33522:6;33469:60;:::i;:::-;33459:70;;33315:224;33302:1;33299;33295:9;33290:14;;33255:284;;;33259:14;33555:3;33548:10;;32956:608;;;32832:732;;;;:::o;33570:831::-;33833:4;33871:3;33860:9;33856:19;33848:27;;33885:71;33953:1;33942:9;33938:17;33929:6;33885:71;:::i;:::-;33966:80;34042:2;34031:9;34027:18;34018:6;33966:80;:::i;:::-;34093:9;34087:4;34083:20;34078:2;34067:9;34063:18;34056:48;34121:108;34224:4;34215:6;34121:108;:::i;:::-;34113:116;;34239:72;34307:2;34296:9;34292:18;34283:6;34239:72;:::i;:::-;34321:73;34389:3;34378:9;34374:19;34365:6;34321:73;:::i;:::-;33570:831;;;;;;;;:::o;34407:180::-;34455:77;34452:1;34445:88;34552:4;34549:1;34542:15;34576:4;34573:1;34566:15;34593:185;34633:1;34650:20;34668:1;34650:20;:::i;:::-;34645:25;;34684:20;34702:1;34684:20;:::i;:::-;34679:25;;34723:1;34713:35;;34728:18;;:::i;:::-;34713:35;34770:1;34767;34763:9;34758:14;;34593:185;;;;:::o;34784:222::-;34924:34;34920:1;34912:6;34908:14;34901:58;34993:5;34988:2;34980:6;34976:15;34969:30;34784:222;:::o;35012:366::-;35154:3;35175:67;35239:2;35234:3;35175:67;:::i;:::-;35168:74;;35251:93;35340:3;35251:93;:::i;:::-;35369:2;35364:3;35360:12;35353:19;;35012:366;;;:::o;35384:419::-;35550:4;35588:2;35577:9;35573:18;35565:26;;35637:9;35631:4;35627:20;35623:1;35612:9;35608:17;35601:47;35665:131;35791:4;35665:131;:::i;:::-;35657:139;;35384:419;;;:::o;35809:179::-;35949:31;35945:1;35937:6;35933:14;35926:55;35809:179;:::o;35994:366::-;36136:3;36157:67;36221:2;36216:3;36157:67;:::i;:::-;36150:74;;36233:93;36322:3;36233:93;:::i;:::-;36351:2;36346:3;36342:12;36335:19;;35994:366;;;:::o;36366:419::-;36532:4;36570:2;36559:9;36555:18;36547:26;;36619:9;36613:4;36609:20;36605:1;36594:9;36590:17;36583:47;36647:131;36773:4;36647:131;:::i;:::-;36639:139;;36366:419;;;:::o

Swarm Source

ipfs://cca256951ca00d13c52628326a7fc79ed4e0de25c4d451b0ff9dc4bc5a1f62f6

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.