Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
100,000,000 RING

Holders:
4,317 addresses

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

One Ring is a multi-chain cross-stable yield optimizer platform.


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

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xbc56091118baa8bbedfb384d3f30fd7f4fd6f026

Contract Name:
LERC20

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: Unlicense
pragma solidity 0.8.0;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface ILosslessController {
    function beforeTransfer(address sender, address recipient, uint256 amount) external;

    function beforeTransferFrom(address msgSender, address sender, address recipient, uint256 amount) external;

    function beforeApprove(address sender, address spender, uint256 amount) external;

    function beforeIncreaseAllowance(address msgSender, address spender, uint256 addedValue) external;

    function beforeDecreaseAllowance(address msgSender, address spender, uint256 subtractedValue) external;
}

contract LERC20 is Context, IERC20 {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    address public recoveryAdmin;
    address private recoveryAdminCanditate;
    bytes32 private recoveryAdminKeyHash;
    address public admin;
    uint256 public timelockPeriod;
    uint256 public losslessTurnOffTimestamp;
    bool public isLosslessTurnOffProposed;
    bool public isLosslessOn = true;
    ILosslessController public lossless;

    event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event RecoveryAdminChangeProposed(address indexed candidate);
    event RecoveryAdminChanged(address indexed previousAdmin, address indexed newAdmin);
    event LosslessTurnOffProposed(uint256 turnOffDate);
    event LosslessTurnedOff();
    event LosslessTurnedOn();

    constructor(uint256 totalSupply_, string memory name_, string memory symbol_, address admin_, address recoveryAdmin_, uint256 timelockPeriod_, address lossless_) {
        _mint(_msgSender(), totalSupply_);
        _name = name_;
        _symbol = symbol_;
        admin = admin_;
        recoveryAdmin = recoveryAdmin_;
        timelockPeriod = timelockPeriod_;
        lossless = ILosslessController(lossless_);
    }

    // --- LOSSLESS modifiers ---

    modifier lssAprove(address spender, uint256 amount) {
        if (isLosslessOn) {
            lossless.beforeApprove(_msgSender(), spender, amount);
        } 
        _;
    }

    modifier lssTransfer(address recipient, uint256 amount) {
        if (isLosslessOn) {
            lossless.beforeTransfer(_msgSender(), recipient, amount);
        } 
        _;
    }

    modifier lssTransferFrom(address sender, address recipient, uint256 amount) {
        if (isLosslessOn) {
            lossless.beforeTransferFrom(_msgSender(), sender, recipient, amount);
        }
        _;
    }

    modifier lssIncreaseAllowance(address spender, uint256 addedValue) {
        if (isLosslessOn) {
            lossless.beforeIncreaseAllowance(_msgSender(), spender, addedValue);
        }
        _;
    }

    modifier lssDecreaseAllowance(address spender, uint256 subtractedValue) {
        if (isLosslessOn) {
            lossless.beforeDecreaseAllowance(_msgSender(), spender, subtractedValue);
        }
        _;
    }

    modifier onlyRecoveryAdmin() {
        require(_msgSender() == recoveryAdmin, "LERC20: Must be recovery admin");
        _;
    }

    // --- LOSSLESS management ---

    function getAdmin() external view returns (address) {
        return admin;
    }

    function transferOutBlacklistedFunds(address[] calldata from) external {
        require(_msgSender() == address(lossless), "LERC20: Only lossless contract");
        for (uint i = 0; i < from.length; i++) {
            _transfer(from[i], address(lossless), balanceOf(from[i]));
        }
    }

    function setLosslessAdmin(address newAdmin) external onlyRecoveryAdmin {
        require(newAdmin != address(0), "LERC20: Cannot be zero address");
        emit AdminChanged(admin, newAdmin);
        admin = newAdmin;
    }

    function transferRecoveryAdminOwnership(address candidate, bytes32 keyHash) external onlyRecoveryAdmin {
        require(candidate != address(0), "LERC20: Cannot be zero address");
        recoveryAdminCanditate = candidate;
        recoveryAdminKeyHash = keyHash;
        emit RecoveryAdminChangeProposed(candidate);
    }

    function acceptRecoveryAdminOwnership(bytes memory key) external {
        require(_msgSender() == recoveryAdminCanditate, "LERC20: Must be canditate");
        require(keccak256(key) == recoveryAdminKeyHash, "LERC20: Invalid key");
        emit RecoveryAdminChanged(recoveryAdmin, recoveryAdminCanditate);
        recoveryAdmin = recoveryAdminCanditate;
    }

    function proposeLosslessTurnOff() external onlyRecoveryAdmin {
        losslessTurnOffTimestamp = block.timestamp + timelockPeriod;
        isLosslessTurnOffProposed = true;
        emit LosslessTurnOffProposed(losslessTurnOffTimestamp);
    }

    function executeLosslessTurnOff() external onlyRecoveryAdmin {
        require(isLosslessTurnOffProposed, "LERC20: TurnOff not proposed");
        require(losslessTurnOffTimestamp <= block.timestamp, "LERC20: Time lock in progress");
        isLosslessOn = false;
        isLosslessTurnOffProposed = false;
        emit LosslessTurnedOff();
    }

    function executeLosslessTurnOn() external onlyRecoveryAdmin {
        isLosslessTurnOffProposed = false;
        isLosslessOn = true;
        emit LosslessTurnedOn();
    }

    // --- ERC20 methods ---

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external virtual override lssAprove(spender, amount) returns (bool) {
        require((amount == 0) || (_allowances[_msgSender()][spender] == 0), "LERC20: Cannot change non zero allowance");
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external virtual override lssTransferFrom(sender, recipient, amount) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "LERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual lssIncreaseAllowance(spender, addedValue) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual lssDecreaseAllowance(spender, subtractedValue) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "LERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "LERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"recoveryAdmin_","type":"address"},{"internalType":"uint256","name":"timelockPeriod_","type":"uint256"},{"internalType":"address","name":"lossless_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"turnOffDate","type":"uint256"}],"name":"LosslessTurnOffProposed","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOff","type":"event"},{"anonymous":false,"inputs":[],"name":"LosslessTurnedOn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"candidate","type":"address"}],"name":"RecoveryAdminChangeProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"RecoveryAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes","name":"key","type":"bytes"}],"name":"acceptRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeLosslessTurnOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLosslessOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLosslessTurnOffProposed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lossless","outputs":[{"internalType":"contract ILosslessController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"losslessTurnOffTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposeLosslessTurnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setLosslessAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from","type":"address[]"}],"name":"transferOutBlacklistedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"candidate","type":"address"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"}],"name":"transferRecoveryAdminOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600b60016101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50604051620033dd380380620033dd833981810160405281019062000052919062000425565b62000073620000666200017c60201b60201c565b886200018460201b60201c565b85600390805190602001906200008b929190620002d5565b508460049080519060200190620000a4929190620002d5565b5083600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160098190555080600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050620007d6565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ee9062000557565b60405180910390fd5b80600260008282546200020b91906200060e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200026291906200060e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002c9919062000579565b60405180910390a35050565b828054620002e390620006df565b90600052602060002090601f01602090048101928262000307576000855562000353565b82601f106200032257805160ff191683800117855562000353565b8280016001018555821562000353579182015b828111156200035257825182559160200191906001019062000335565b5b50905062000362919062000366565b5090565b5b808211156200038157600081600090555060010162000367565b5090565b60006200039c6200039684620005ca565b62000596565b905082815260208101848484011115620003b557600080fd5b620003c2848285620006a9565b509392505050565b600081519050620003db81620007a2565b92915050565b600082601f830112620003f357600080fd5b81516200040584826020860162000385565b91505092915050565b6000815190506200041f81620007bc565b92915050565b600080600080600080600060e0888a0312156200044157600080fd5b6000620004518a828b016200040e565b975050602088015167ffffffffffffffff8111156200046f57600080fd5b6200047d8a828b01620003e1565b965050604088015167ffffffffffffffff8111156200049b57600080fd5b620004a98a828b01620003e1565b9550506060620004bc8a828b01620003ca565b9450506080620004cf8a828b01620003ca565b93505060a0620004e28a828b016200040e565b92505060c0620004f58a828b01620003ca565b91505092959891949750929550565b600062000513602083620005fd565b91507f4c45524332303a206d696e7420746f20746865207a65726f20616464726573736000830152602082019050919050565b62000551816200069f565b82525050565b60006020820190508181036000830152620005728162000504565b9050919050565b600060208201905062000590600083018462000546565b92915050565b6000604051905081810181811067ffffffffffffffff82111715620005c057620005bf62000773565b5b8060405250919050565b600067ffffffffffffffff821115620005e857620005e762000773565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60006200061b826200069f565b915062000628836200069f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000660576200065f62000715565b5b828201905092915050565b600062000678826200067f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620006c9578082015181840152602081019050620006ac565b83811115620006d9576000848401525b50505050565b60006002820490506001821680620006f857607f821691505b602082108114156200070f576200070e62000744565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620007ad816200066b565b8114620007b957600080fd5b50565b620007c7816200069f565b8114620007d357600080fd5b50565b612bf780620007e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063b38fe95711610097578063d6e242b811610071578063d6e242b814610463578063dd62ed3e1461046d578063efab831c1461049d578063f851a440146104bb5761018e565b8063b38fe9571461041f578063b5c2287714610429578063ccfa214f146104455761018e565b806370a082311461033957806393310ffe14610369578063936af9111461038557806395d89b41146103a1578063a457c2d7146103bf578063a9059cbb146103ef5761018e565b8063313ce5671161014b5780635b8a194a116101255780635b8a194a146102d55780635f6529a3146102df57806361086b00146102fd5780636e9960c31461031b5761018e565b8063313ce5671461026957806334f6ebf51461028757806339509351146102a55761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff5780632baa3c9e1461022f5780632ecaf6751461024b575b600080fd5b61019b6104d9565b6040516101a8919061265f565b60405180910390f35b6101cb60048036038101906101c69190611f5c565b61056b565b6040516101d89190612629565b60405180910390f35b6101e961070c565b6040516101f69190612861565b60405180910390f35b61021960048036038101906102149190611ed1565b610716565b6040516102269190612629565b60405180910390f35b61024960048036038101906102449190611e6c565b6108cd565b005b610253610a94565b6040516102609190612861565b60405180910390f35b610271610a9a565b60405161027e919061287c565b60405180910390f35b61028f610aa3565b60405161029c9190612644565b60405180910390f35b6102bf60048036038101906102ba9190611f5c565b610ac9565b6040516102cc9190612629565b60405180910390f35b6102dd610c27565b005b6102e7610d22565b6040516102f49190612592565b60405180910390f35b610305610d48565b6040516103129190612861565b60405180910390f35b610323610d4e565b6040516103309190612592565b60405180910390f35b610353600480360381019061034e9190611e6c565b610d78565b6040516103609190612861565b60405180910390f35b610383600480360381019061037e9190611f20565b610dc0565b005b61039f600480360381019061039a9190611f98565b610f56565b005b6103a96110e2565b6040516103b6919061265f565b60405180910390f35b6103d960048036038101906103d49190611f5c565b611174565b6040516103e69190612629565b60405180910390f35b61040960048036038101906104049190611f5c565b61131b565b6040516104169190612629565b60405180910390f35b6104276113eb565b005b610443600480360381019061043e9190611fdd565b61157a565b005b61044d611760565b60405161045a9190612629565b60405180910390f35b61046b611773565b005b61048760048036038101906104829190611e95565b611874565b6040516104949190612861565b60405180910390f35b6104a56118fb565b6040516104b29190612629565b60405180910390f35b6104c361190e565b6040516104d09190612592565b60405180910390f35b6060600380546104e890612a63565b80601f016020809104026020016040519081016040528092919081815260200182805461051490612a63565b80156105615780601f1061053657610100808354040283529160200191610561565b820191906000526020600020905b81548152906001019060200180831161054457829003601f168201915b5050505050905090565b60008282600b60019054906101000a900460ff161561061d57600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166347abf3be6105ca611934565b84846040518463ffffffff1660e01b81526004016105ea939291906125f2565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b60008414806106af5750600060016000610635611934565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b6106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e5906127e1565b60405180910390fd5b6107006106f9611934565b868661193c565b60019250505092915050565b6000600254905090565b6000838383600b60019054906101000a900460ff16156107cb57600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663379f5c69610776611934565b8585856040518563ffffffff1660e01b815260040161079894939291906125ad565b600060405180830381600087803b1580156107b257600080fd5b505af11580156107c6573d6000803e3d6000fd5b505050505b6107d6878787611b07565b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610821611934565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156108a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610898906126e1565b60405180910390fd5b6108be886108ad611934565b88846108b9919061296a565b61193c565b60019450505050509392505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661090e611934565b73ffffffffffffffffffffffffffffffffffffffff1614610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906127a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb90612781565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60006012905090565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008282600b60019054906101000a900460ff1615610b7b57600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cf5961bb610b28611934565b84846040518463ffffffff1660e01b8152600401610b48939291906125f2565b600060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050505b610c1b610b86611934565b868660016000610b94611934565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c169190612914565b61193c565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c68611934565b73ffffffffffffffffffffffffffffffffffffffff1614610cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb5906127a1565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055507fa4a40bdd0a809720a61b44f1b3497ce7dad87741a0ba3b961c2e65e645060e7060405160405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e01611934565b73ffffffffffffffffffffffffffffffffffffffff1614610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e906127a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebe90612781565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806007819055508173ffffffffffffffffffffffffffffffffffffffff167fc5666bfdfb79a4b0b4abdbc565d6e9937a263233b2b378c55132d34dc5784a3660405160405180910390a25050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f97611934565b73ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906127c1565b60405180910390fd5b60005b828290508110156110dd576110ca838383818110611037577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061104c9190611e6c565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110c58686868181106110ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906110c09190611e6c565b610d78565b611b07565b80806110d590612a95565b915050610ff0565b505050565b6060600480546110f190612a63565b80601f016020809104026020016040519081016040528092919081815260200182805461111d90612a63565b801561116a5780601f1061113f5761010080835404028352916020019161116a565b820191906000526020600020905b81548152906001019060200180831161114d57829003601f168201915b5050505050905090565b60008282600b60019054906101000a900460ff161561122657600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663568c75a96111d3611934565b84846040518463ffffffff1660e01b81526004016111f3939291906125f2565b600060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050505b600060016000611234611934565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050848110156112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890612821565b60405180910390fd5b61130e6112fc611934565b878784611309919061296a565b61193c565b6001935050505092915050565b60008282600b60019054906101000a900460ff16156113cd57600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ffb811f61137a611934565b84846040518463ffffffff1660e01b815260040161139a939291906125f2565b600060405180830381600087803b1580156113b457600080fd5b505af11580156113c8573d6000803e3d6000fd5b505050505b6113df6113d8611934565b8686611b07565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661142c611934565b73ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906127a1565b60405180910390fd5b600b60009054906101000a900460ff166114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890612721565b60405180910390fd5b42600a541115611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906126a1565b60405180910390fd5b6000600b60016101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff0219169083151502179055507f5b534e2716e5ad68b9f67521378f8199a7ceb9d3f6f354275dad33fe42cf710a60405160405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115bb611934565b73ffffffffffffffffffffffffffffffffffffffff1614611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612761565b60405180910390fd5b60075481805190602001201461165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390612701565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1c7f382531621f02aefb4212478bba8871ffad078202bdbba87f3e21d639aebb60405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60019054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117b4611934565b73ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611801906127a1565b60405180910390fd5b600954426118189190612914565b600a819055506001600b60006101000a81548160ff0219169083151502179055507f88e0be0448355c71674462d3cb36342f0d085f7b43a1deab03052c95eb158709600a5460405161186a9190612861565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390612801565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1390612841565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611afa9190612861565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e90612741565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90612681565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c64906126c1565b60405180910390fd5b8181611c79919061296a565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d099190612914565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d6d9190612861565b60405180910390a350505050565b6000611d8e611d89846128c8565b612897565b905082815260208101848484011115611da657600080fd5b611db1848285612a21565b509392505050565b600081359050611dc881612b7c565b92915050565b60008083601f840112611de057600080fd5b8235905067ffffffffffffffff811115611df957600080fd5b602083019150836020820283011115611e1157600080fd5b9250929050565b600081359050611e2781612b93565b92915050565b600082601f830112611e3e57600080fd5b8135611e4e848260208601611d7b565b91505092915050565b600081359050611e6681612baa565b92915050565b600060208284031215611e7e57600080fd5b6000611e8c84828501611db9565b91505092915050565b60008060408385031215611ea857600080fd5b6000611eb685828601611db9565b9250506020611ec785828601611db9565b9150509250929050565b600080600060608486031215611ee657600080fd5b6000611ef486828701611db9565b9350506020611f0586828701611db9565b9250506040611f1686828701611e57565b9150509250925092565b60008060408385031215611f3357600080fd5b6000611f4185828601611db9565b9250506020611f5285828601611e18565b9150509250929050565b60008060408385031215611f6f57600080fd5b6000611f7d85828601611db9565b9250506020611f8e85828601611e57565b9150509250929050565b60008060208385031215611fab57600080fd5b600083013567ffffffffffffffff811115611fc557600080fd5b611fd185828601611dce565b92509250509250929050565b600060208284031215611fef57600080fd5b600082013567ffffffffffffffff81111561200957600080fd5b61201584828501611e2d565b91505092915050565b6120278161299e565b82525050565b612036816129b0565b82525050565b612045816129fd565b82525050565b6000612056826128f8565b6120608185612903565b9350612070818560208601612a30565b61207981612b6b565b840191505092915050565b6000612091602483612903565b91507f4c45524332303a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120f7601d83612903565b91507f4c45524332303a2054696d65206c6f636b20696e2070726f67726573730000006000830152602082019050919050565b6000612137602783612903565b91507f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008301527f62616c616e6365000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061219d602983612903565b91507f4c45524332303a207472616e7366657220616d6f756e7420657863656564732060008301527f616c6c6f77616e636500000000000000000000000000000000000000000000006020830152604082019050919050565b6000612203601383612903565b91507f4c45524332303a20496e76616c6964206b6579000000000000000000000000006000830152602082019050919050565b6000612243601c83612903565b91507f4c45524332303a205475726e4f6666206e6f742070726f706f736564000000006000830152602082019050919050565b6000612283602683612903565b91507f4c45524332303a207472616e736665722066726f6d20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122e9601983612903565b91507f4c45524332303a204d7573742062652063616e646974617465000000000000006000830152602082019050919050565b6000612329601e83612903565b91507f4c45524332303a2043616e6e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000612369601e83612903565b91507f4c45524332303a204d757374206265207265636f766572792061646d696e00006000830152602082019050919050565b60006123a9601e83612903565b91507f4c45524332303a204f6e6c79206c6f73736c65737320636f6e747261637400006000830152602082019050919050565b60006123e9602883612903565b91507f4c45524332303a2043616e6e6f74206368616e6765206e6f6e207a65726f206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061244f602583612903565b91507f4c45524332303a20617070726f76652066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006124b5602683612903565b91507f4c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f60008301527f77207a65726f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061251b602383612903565b91507f4c45524332303a20617070726f766520746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61257d816129e6565b82525050565b61258c816129f0565b82525050565b60006020820190506125a7600083018461201e565b92915050565b60006080820190506125c2600083018761201e565b6125cf602083018661201e565b6125dc604083018561201e565b6125e96060830184612574565b95945050505050565b6000606082019050612607600083018661201e565b612614602083018561201e565b6126216040830184612574565b949350505050565b600060208201905061263e600083018461202d565b92915050565b6000602082019050612659600083018461203c565b92915050565b60006020820190508181036000830152612679818461204b565b905092915050565b6000602082019050818103600083015261269a81612084565b9050919050565b600060208201905081810360008301526126ba816120ea565b9050919050565b600060208201905081810360008301526126da8161212a565b9050919050565b600060208201905081810360008301526126fa81612190565b9050919050565b6000602082019050818103600083015261271a816121f6565b9050919050565b6000602082019050818103600083015261273a81612236565b9050919050565b6000602082019050818103600083015261275a81612276565b9050919050565b6000602082019050818103600083015261277a816122dc565b9050919050565b6000602082019050818103600083015261279a8161231c565b9050919050565b600060208201905081810360008301526127ba8161235c565b9050919050565b600060208201905081810360008301526127da8161239c565b9050919050565b600060208201905081810360008301526127fa816123dc565b9050919050565b6000602082019050818103600083015261281a81612442565b9050919050565b6000602082019050818103600083015261283a816124a8565b9050919050565b6000602082019050818103600083015261285a8161250e565b9050919050565b60006020820190506128766000830184612574565b92915050565b60006020820190506128916000830184612583565b92915050565b6000604051905081810181811067ffffffffffffffff821117156128be576128bd612b3c565b5b8060405250919050565b600067ffffffffffffffff8211156128e3576128e2612b3c565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061291f826129e6565b915061292a836129e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561295f5761295e612ade565b5b828201905092915050565b6000612975826129e6565b9150612980836129e6565b92508282101561299357612992612ade565b5b828203905092915050565b60006129a9826129c6565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612a0882612a0f565b9050919050565b6000612a1a826129c6565b9050919050565b82818337600083830152505050565b60005b83811015612a4e578082015181840152602081019050612a33565b83811115612a5d576000848401525b50505050565b60006002820490506001821680612a7b57607f821691505b60208210811415612a8f57612a8e612b0d565b5b50919050565b6000612aa0826129e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ad357612ad2612ade565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b612b858161299e565b8114612b9057600080fd5b50565b612b9c816129bc565b8114612ba757600080fd5b50565b612bb3816129e6565b8114612bbe57600080fd5b5056fea26469706673582212208da251fea6d4449a3c04a3e10383792124ed3bd83e8497527c5ff4739cbb3aa564736f6c634300080000330000000000000000000000000000000000000000000000a2a15d09519be0000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000591244e64e33f595cc010ff5dbfb4568a018b4d9000000000000000000000000591244e64e33f595cc010ff5dbfb4568a018b4d9000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000dbb5125ceeaf7233768c84a5df570aeecf0b4634000000000000000000000000000000000000000000000000000000000000000b46414e544f4d5f5445535400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024654000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

1685:8489:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6547:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7477:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6847:110;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7805:468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4772:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2099:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6753:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2263:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8281:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6331:176;;;:::i;:::-;;1949:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2135:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4374:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6965:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5007:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4465:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6648:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8548:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7100:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5971:352;;;:::i;:::-;;5343:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2225:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5716:247;;;:::i;:::-;;7316:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2181:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2072:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6547:93;6594:13;6627:5;6620:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6547:93;:::o;7477:320::-;7589:4;7563:7;7572:6;3207:12;;;;;;;;;;;3203:98;;;3236:8;;;;;;;;;;;:22;;;3259:12;:10;:12::i;:::-;3273:7;3282:6;3236:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3203:98;7625:1:::1;7615:6;:11;7614:58;;;;7670:1;7632:11;:25;7644:12;:10;:12::i;:::-;7632:25;;;;;;;;;;;;;;;:34;7658:7;7632:34;;;;;;;;;;;;;;;;:39;7614:58;7606:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7728:39;7737:12;:10;:12::i;:::-;7751:7;7760:6;7728:8;:39::i;:::-;7785:4;7778:11;;7477:320:::0;;;;;;:::o;6847:110::-;6910:7;6937:12;;6930:19;;6847:110;:::o;7805:468::-;7956:4;7920:6;7928:9;7939:6;3616:12;;;;;;;;;;;3612:113;;;3645:8;;;;;;;;;;;:27;;;3673:12;:10;:12::i;:::-;3687:6;3695:9;3706:6;3645:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:113;7973:36:::1;7983:6;7991:9;8002:6;7973:9;:36::i;:::-;8022:24;8049:11;:19;8061:6;8049:19;;;;;;;;;;;;;;;:33;8069:12;:10;:12::i;:::-;8049:33;;;;;;;;;;;;;;;;8022:60;;8121:6;8101:16;:26;;8093:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8184:57;8193:6;8201:12;:10;:12::i;:::-;8234:6;8215:16;:25;;;;:::i;:::-;8184:8;:57::i;:::-;8261:4;8254:11;;;7805:468:::0;;;;;;;;:::o;4772:227::-;4260:13;;;;;;;;;;;4244:29;;:12;:10;:12::i;:::-;:29;;;4236:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4882:1:::1;4862:22;;:8;:22;;;;4854:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4955:8;4935:29;;4948:5;;;;;;;;;;;4935:29;;;;;;;;;;;;4983:8;4975:5;;:16;;;;;;;;;;;;;;;;;;4772:227:::0;:::o;2099:29::-;;;;:::o;6753:86::-;6804:5;6829:2;6822:9;;6753:86;:::o;2263:35::-;;;;;;;;;;;;;:::o;8281:259::-;8413:4;8383:7;8392:10;3834:12;;;;;;;;;;;3830:112;;;3863:8;;;;;;;;;;;:32;;;3896:12;:10;:12::i;:::-;3910:7;3919:10;3863:67;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3830:112;8430:80:::1;8439:12;:10;:12::i;:::-;8453:7;8499:10;8462:11;:25;8474:12;:10;:12::i;:::-;8462:25;;;;;;;;;;;;;;;:34;8488:7;8462:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8430:8;:80::i;:::-;8528:4;8521:11;;8281:259:::0;;;;;;:::o;6331:176::-;4260:13;;;;;;;;;;;4244:29;;:12;:10;:12::i;:::-;:29;;;4236:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6430:5:::1;6402:25;;:33;;;;;;;;;;;;;;;;;;6461:4;6446:12;;:19;;;;;;;;;;;;;;;;;;6481:18;;;;;;;;;;6331:176::o:0;1949:28::-;;;;;;;;;;;;;:::o;2135:39::-;;;;:::o;4374:83::-;4417:7;4444:5;;;;;;;;;;;4437:12;;4374:83;:::o;6965:127::-;7039:7;7066:9;:18;7076:7;7066:18;;;;;;;;;;;;;;;;7059:25;;6965:127;;;:::o;5007:328::-;4260:13;;;;;;;;;;;4244:29;;:12;:10;:12::i;:::-;:29;;;4236:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5150:1:::1;5129:23;;:9;:23;;;;5121:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5223:9;5198:22;;:34;;;;;;;;;;;;;;;;;;5266:7;5243:20;:30;;;;5317:9;5289:38;;;;;;;;;;;;5007:328:::0;;:::o;4465:299::-;4579:8;;;;;;;;;;;4555:33;;:12;:10;:12::i;:::-;:33;;;4547:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;4639:6;4634:123;4655:4;;:11;;4651:1;:15;4634:123;;;4688:57;4698:4;;4703:1;4698:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4715:8;;;;;;;;;;;4726:18;4736:4;;4741:1;4736:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4726:9;:18::i;:::-;4688:9;:57::i;:::-;4668:3;;;;;:::i;:::-;;;;4634:123;;;;4465:299;;:::o;6648:97::-;6697:13;6730:7;6723:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6648:97;:::o;8548:427::-;8690:4;8655:7;8664:15;4056:12;;;;;;;;;;;4052:117;;;4085:8;;;;;;;;;;;:32;;;4118:12;:10;:12::i;:::-;4132:7;4141:15;4085:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4052:117;8707:24:::1;8734:11;:25;8746:12;:10;:12::i;:::-;8734:25;;;;;;;;;;;;;;;:34;8760:7;8734:34;;;;;;;;;;;;;;;;8707:61;;8807:15;8787:16;:35;;8779:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8876:67;8885:12;:10;:12::i;:::-;8899:7;8927:15;8908:16;:34;;;;:::i;:::-;8876:8;:67::i;:::-;8963:4;8956:11;;;8548:427:::0;;;;;;:::o;7100:208::-;7219:4;7191:9;7202:6;3400:12;;;;;;;;;;;3396:101;;;3429:8;;;;;;;;;;;:23;;;3453:12;:10;:12::i;:::-;3467:9;3478:6;3429:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:101;7236:42:::1;7246:12;:10;:12::i;:::-;7260:9;7271:6;7236:9;:42::i;:::-;7296:4;7289:11;;7100:208:::0;;;;;;:::o;5971:352::-;4260:13;;;;;;;;;;;4244:29;;:12;:10;:12::i;:::-;:29;;;4236:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;6051:25:::1;;;;;;;;;;;6043:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6156:15;6128:24;;:43;;6120:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6231:5;6216:12;;:20;;;;;;;;;;;;;;;;;;6275:5;6247:25;;:33;;;;;;;;;;;;;;;;;;6296:19;;;;;;;;;;5971:352::o:0;5343:365::-;5443:22;;;;;;;;;;;5427:38;;:12;:10;:12::i;:::-;:38;;;5419:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5532:20;;5524:3;5514:14;;;;;;:38;5506:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5628:22;;;;;;;;;;;5592:59;;5613:13;;;;;;;;;;;5592:59;;;;;;;;;;;;5678:22;;;;;;;;;;;5662:13;;:38;;;;;;;;;;;;;;;;;;5343:365;:::o;2225:31::-;;;;;;;;;;;;;:::o;5716:247::-;4260:13;;;;;;;;;;;4244:29;;:12;:10;:12::i;:::-;:29;;;4236:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;5833:14:::1;;5815:15;:32;;;;:::i;:::-;5788:24;:59;;;;5886:4;5858:25;;:32;;;;;;;;;;;;;;;;;;5906:49;5930:24;;5906:49;;;;;;:::i;:::-;;;;;;;;5716:247::o:0;7316:153::-;7407:7;7434:11;:18;7446:5;7434:18;;;;;;;;;;;;;;;:27;7453:7;7434:27;;;;;;;;;;;;;;;;7427:34;;7316:153;;;;:::o;2181:37::-;;;;;;;;;;;;;:::o;2072:20::-;;;;;;;;;;;;;:::o;97:98::-;150:7;177:10;170:17;;97:98;:::o;9823:348::-;9942:1;9925:19;;:5;:19;;;;9917:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10024:1;10005:21;;:7;:21;;;;9997:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10109:6;10079:11;:18;10091:5;10079:18;;;;;;;;;;;;;;;:27;10098:7;10079:27;;;;;;;;;;;;;;;:36;;;;10147:7;10131:32;;10140:5;10131:32;;;10156:6;10131:32;;;;;;:::i;:::-;;;;;;;;9823:348;;;:::o;8983:547::-;9107:1;9089:20;;:6;:20;;;;9081:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9192:1;9171:23;;:9;:23;;;;9163:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9248:21;9272:9;:17;9282:6;9272:17;;;;;;;;;;;;;;;;9248:41;;9325:6;9308:13;:23;;9300:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9422:6;9406:13;:22;;;;:::i;:::-;9386:9;:17;9396:6;9386:17;;;;;;;;;;;;;;;:42;;;;9463:6;9439:9;:20;9449:9;9439:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9504:9;9487:35;;9496:6;9487:35;;;9515:6;9487:35;;;;;;:::i;:::-;;;;;;;;8983:547;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;517:367::-;;;650:3;643:4;635:6;631:17;627:27;617:2;;668:1;665;658:12;617:2;704:6;691:20;681:30;;734:18;726:6;723:30;720:2;;;766:1;763;756:12;720:2;803:4;795:6;791:17;779:29;;857:3;849:4;841:6;837:17;827:8;823:32;820:41;817:2;;;874:1;871;864:12;817:2;607:277;;;;;:::o;890:139::-;;974:6;961:20;952:29;;990:33;1017:5;990:33;:::i;:::-;942:87;;;;:::o;1048:271::-;;1152:3;1145:4;1137:6;1133:17;1129:27;1119:2;;1170:1;1167;1160:12;1119:2;1210:6;1197:20;1235:78;1309:3;1301:6;1294:4;1286:6;1282:17;1235:78;:::i;:::-;1226:87;;1109:210;;;;;:::o;1325:139::-;;1409:6;1396:20;1387:29;;1425:33;1452:5;1425:33;:::i;:::-;1377:87;;;;:::o;1470:262::-;;1578:2;1566:9;1557:7;1553:23;1549:32;1546:2;;;1594:1;1591;1584:12;1546:2;1637:1;1662:53;1707:7;1698:6;1687:9;1683:22;1662:53;:::i;:::-;1652:63;;1608:117;1536:196;;;;:::o;1738:407::-;;;1863:2;1851:9;1842:7;1838:23;1834:32;1831:2;;;1879:1;1876;1869:12;1831:2;1922:1;1947:53;1992:7;1983:6;1972:9;1968:22;1947:53;:::i;:::-;1937:63;;1893:117;2049:2;2075:53;2120:7;2111:6;2100:9;2096:22;2075:53;:::i;:::-;2065:63;;2020:118;1821:324;;;;;:::o;2151:552::-;;;;2293:2;2281:9;2272:7;2268:23;2264:32;2261:2;;;2309:1;2306;2299:12;2261:2;2352:1;2377:53;2422:7;2413:6;2402:9;2398:22;2377:53;:::i;:::-;2367:63;;2323:117;2479:2;2505:53;2550:7;2541:6;2530:9;2526:22;2505:53;:::i;:::-;2495:63;;2450:118;2607:2;2633:53;2678:7;2669:6;2658:9;2654:22;2633:53;:::i;:::-;2623:63;;2578:118;2251:452;;;;;:::o;2709:407::-;;;2834:2;2822:9;2813:7;2809:23;2805:32;2802:2;;;2850:1;2847;2840:12;2802:2;2893:1;2918:53;2963:7;2954:6;2943:9;2939:22;2918:53;:::i;:::-;2908:63;;2864:117;3020:2;3046:53;3091:7;3082:6;3071:9;3067:22;3046:53;:::i;:::-;3036:63;;2991:118;2792:324;;;;;:::o;3122:407::-;;;3247:2;3235:9;3226:7;3222:23;3218:32;3215:2;;;3263:1;3260;3253:12;3215:2;3306:1;3331:53;3376:7;3367:6;3356:9;3352:22;3331:53;:::i;:::-;3321:63;;3277:117;3433:2;3459:53;3504:7;3495:6;3484:9;3480:22;3459:53;:::i;:::-;3449:63;;3404:118;3205:324;;;;;:::o;3535:425::-;;;3678:2;3666:9;3657:7;3653:23;3649:32;3646:2;;;3694:1;3691;3684:12;3646:2;3765:1;3754:9;3750:17;3737:31;3795:18;3787:6;3784:30;3781:2;;;3827:1;3824;3817:12;3781:2;3863:80;3935:7;3926:6;3915:9;3911:22;3863:80;:::i;:::-;3845:98;;;;3708:245;3636:324;;;;;:::o;3966:373::-;;4083:2;4071:9;4062:7;4058:23;4054:32;4051:2;;;4099:1;4096;4089:12;4051:2;4170:1;4159:9;4155:17;4142:31;4200:18;4192:6;4189:30;4186:2;;;4232:1;4229;4222:12;4186:2;4260:62;4314:7;4305:6;4294:9;4290:22;4260:62;:::i;:::-;4250:72;;4113:219;4041:298;;;;:::o;4345:118::-;4432:24;4450:5;4432:24;:::i;:::-;4427:3;4420:37;4410:53;;:::o;4469:109::-;4550:21;4565:5;4550:21;:::i;:::-;4545:3;4538:34;4528:50;;:::o;4584:185::-;4698:64;4756:5;4698:64;:::i;:::-;4693:3;4686:77;4676:93;;:::o;4775:364::-;;4891:39;4924:5;4891:39;:::i;:::-;4946:71;5010:6;5005:3;4946:71;:::i;:::-;4939:78;;5026:52;5071:6;5066:3;5059:4;5052:5;5048:16;5026:52;:::i;:::-;5103:29;5125:6;5103:29;:::i;:::-;5098:3;5094:39;5087:46;;4867:272;;;;;:::o;5145:368::-;;5308:67;5372:2;5367:3;5308:67;:::i;:::-;5301:74;;5405:34;5401:1;5396:3;5392:11;5385:55;5471:6;5466:2;5461:3;5457:12;5450:28;5504:2;5499:3;5495:12;5488:19;;5291:222;;;:::o;5519:327::-;;5682:67;5746:2;5741:3;5682:67;:::i;:::-;5675:74;;5779:31;5775:1;5770:3;5766:11;5759:52;5837:2;5832:3;5828:12;5821:19;;5665:181;;;:::o;5852:371::-;;6015:67;6079:2;6074:3;6015:67;:::i;:::-;6008:74;;6112:34;6108:1;6103:3;6099:11;6092:55;6178:9;6173:2;6168:3;6164:12;6157:31;6214:2;6209:3;6205:12;6198:19;;5998:225;;;:::o;6229:373::-;;6392:67;6456:2;6451:3;6392:67;:::i;:::-;6385:74;;6489:34;6485:1;6480:3;6476:11;6469:55;6555:11;6550:2;6545:3;6541:12;6534:33;6593:2;6588:3;6584:12;6577:19;;6375:227;;;:::o;6608:317::-;;6771:67;6835:2;6830:3;6771:67;:::i;:::-;6764:74;;6868:21;6864:1;6859:3;6855:11;6848:42;6916:2;6911:3;6907:12;6900:19;;6754:171;;;:::o;6931:326::-;;7094:67;7158:2;7153:3;7094:67;:::i;:::-;7087:74;;7191:30;7187:1;7182:3;7178:11;7171:51;7248:2;7243:3;7239:12;7232:19;;7077:180;;;:::o;7263:370::-;;7426:67;7490:2;7485:3;7426:67;:::i;:::-;7419:74;;7523:34;7519:1;7514:3;7510:11;7503:55;7589:8;7584:2;7579:3;7575:12;7568:30;7624:2;7619:3;7615:12;7608:19;;7409:224;;;:::o;7639:323::-;;7802:67;7866:2;7861:3;7802:67;:::i;:::-;7795:74;;7899:27;7895:1;7890:3;7886:11;7879:48;7953:2;7948:3;7944:12;7937:19;;7785:177;;;:::o;7968:328::-;;8131:67;8195:2;8190:3;8131:67;:::i;:::-;8124:74;;8228:32;8224:1;8219:3;8215:11;8208:53;8287:2;8282:3;8278:12;8271:19;;8114:182;;;:::o;8302:328::-;;8465:67;8529:2;8524:3;8465:67;:::i;:::-;8458:74;;8562:32;8558:1;8553:3;8549:11;8542:53;8621:2;8616:3;8612:12;8605:19;;8448:182;;;:::o;8636:328::-;;8799:67;8863:2;8858:3;8799:67;:::i;:::-;8792:74;;8896:32;8892:1;8887:3;8883:11;8876:53;8955:2;8950:3;8946:12;8939:19;;8782:182;;;:::o;8970:372::-;;9133:67;9197:2;9192:3;9133:67;:::i;:::-;9126:74;;9230:34;9226:1;9221:3;9217:11;9210:55;9296:10;9291:2;9286:3;9282:12;9275:32;9333:2;9328:3;9324:12;9317:19;;9116:226;;;:::o;9348:369::-;;9511:67;9575:2;9570:3;9511:67;:::i;:::-;9504:74;;9608:34;9604:1;9599:3;9595:11;9588:55;9674:7;9669:2;9664:3;9660:12;9653:29;9708:2;9703:3;9699:12;9692:19;;9494:223;;;:::o;9723:370::-;;9886:67;9950:2;9945:3;9886:67;:::i;:::-;9879:74;;9983:34;9979:1;9974:3;9970:11;9963:55;10049:8;10044:2;10039:3;10035:12;10028:30;10084:2;10079:3;10075:12;10068:19;;9869:224;;;:::o;10099:367::-;;10262:67;10326:2;10321:3;10262:67;:::i;:::-;10255:74;;10359:34;10355:1;10350:3;10346:11;10339:55;10425:5;10420:2;10415:3;10411:12;10404:27;10457:2;10452:3;10448:12;10441:19;;10245:221;;;:::o;10472:118::-;10559:24;10577:5;10559:24;:::i;:::-;10554:3;10547:37;10537:53;;:::o;10596:112::-;10679:22;10695:5;10679:22;:::i;:::-;10674:3;10667:35;10657:51;;:::o;10714:222::-;;10845:2;10834:9;10830:18;10822:26;;10858:71;10926:1;10915:9;10911:17;10902:6;10858:71;:::i;:::-;10812:124;;;;:::o;10942:553::-;;11157:3;11146:9;11142:19;11134:27;;11171:71;11239:1;11228:9;11224:17;11215:6;11171:71;:::i;:::-;11252:72;11320:2;11309:9;11305:18;11296:6;11252:72;:::i;:::-;11334;11402:2;11391:9;11387:18;11378:6;11334:72;:::i;:::-;11416;11484:2;11473:9;11469:18;11460:6;11416:72;:::i;:::-;11124:371;;;;;;;:::o;11501:442::-;;11688:2;11677:9;11673:18;11665:26;;11701:71;11769:1;11758:9;11754:17;11745:6;11701:71;:::i;:::-;11782:72;11850:2;11839:9;11835:18;11826:6;11782:72;:::i;:::-;11864;11932:2;11921:9;11917:18;11908:6;11864:72;:::i;:::-;11655:288;;;;;;:::o;11949:210::-;;12074:2;12063:9;12059:18;12051:26;;12087:65;12149:1;12138:9;12134:17;12125:6;12087:65;:::i;:::-;12041:118;;;;:::o;12165:276::-;;12323:2;12312:9;12308:18;12300:26;;12336:98;12431:1;12420:9;12416:17;12407:6;12336:98;:::i;:::-;12290:151;;;;:::o;12447:313::-;;12598:2;12587:9;12583:18;12575:26;;12647:9;12641:4;12637:20;12633:1;12622:9;12618:17;12611:47;12675:78;12748:4;12739:6;12675:78;:::i;:::-;12667:86;;12565:195;;;;:::o;12766:419::-;;12970:2;12959:9;12955:18;12947:26;;13019:9;13013:4;13009:20;13005:1;12994:9;12990:17;12983:47;13047:131;13173:4;13047:131;:::i;:::-;13039:139;;12937:248;;;:::o;13191:419::-;;13395:2;13384:9;13380:18;13372:26;;13444:9;13438:4;13434:20;13430:1;13419:9;13415:17;13408:47;13472:131;13598:4;13472:131;:::i;:::-;13464:139;;13362:248;;;:::o;13616:419::-;;13820:2;13809:9;13805:18;13797:26;;13869:9;13863:4;13859:20;13855:1;13844:9;13840:17;13833:47;13897:131;14023:4;13897:131;:::i;:::-;13889:139;;13787:248;;;:::o;14041:419::-;;14245:2;14234:9;14230:18;14222:26;;14294:9;14288:4;14284:20;14280:1;14269:9;14265:17;14258:47;14322:131;14448:4;14322:131;:::i;:::-;14314:139;;14212:248;;;:::o;14466:419::-;;14670:2;14659:9;14655:18;14647:26;;14719:9;14713:4;14709:20;14705:1;14694:9;14690:17;14683:47;14747:131;14873:4;14747:131;:::i;:::-;14739:139;;14637:248;;;:::o;14891:419::-;;15095:2;15084:9;15080:18;15072:26;;15144:9;15138:4;15134:20;15130:1;15119:9;15115:17;15108:47;15172:131;15298:4;15172:131;:::i;:::-;15164:139;;15062:248;;;:::o;15316:419::-;;15520:2;15509:9;15505:18;15497:26;;15569:9;15563:4;15559:20;15555:1;15544:9;15540:17;15533:47;15597:131;15723:4;15597:131;:::i;:::-;15589:139;;15487:248;;;:::o;15741:419::-;;15945:2;15934:9;15930:18;15922:26;;15994:9;15988:4;15984:20;15980:1;15969:9;15965:17;15958:47;16022:131;16148:4;16022:131;:::i;:::-;16014:139;;15912:248;;;:::o;16166:419::-;;16370:2;16359:9;16355:18;16347:26;;16419:9;16413:4;16409:20;16405:1;16394:9;16390:17;16383:47;16447:131;16573:4;16447:131;:::i;:::-;16439:139;;16337:248;;;:::o;16591:419::-;;16795:2;16784:9;16780:18;16772:26;;16844:9;16838:4;16834:20;16830:1;16819:9;16815:17;16808:47;16872:131;16998:4;16872:131;:::i;:::-;16864:139;;16762:248;;;:::o;17016:419::-;;17220:2;17209:9;17205:18;17197:26;;17269:9;17263:4;17259:20;17255:1;17244:9;17240:17;17233:47;17297:131;17423:4;17297:131;:::i;:::-;17289:139;;17187:248;;;:::o;17441:419::-;;17645:2;17634:9;17630:18;17622:26;;17694:9;17688:4;17684:20;17680:1;17669:9;17665:17;17658:47;17722:131;17848:4;17722:131;:::i;:::-;17714:139;;17612:248;;;:::o;17866:419::-;;18070:2;18059:9;18055:18;18047:26;;18119:9;18113:4;18109:20;18105:1;18094:9;18090:17;18083:47;18147:131;18273:4;18147:131;:::i;:::-;18139:139;;18037:248;;;:::o;18291:419::-;;18495:2;18484:9;18480:18;18472:26;;18544:9;18538:4;18534:20;18530:1;18519:9;18515:17;18508:47;18572:131;18698:4;18572:131;:::i;:::-;18564:139;;18462:248;;;:::o;18716:419::-;;18920:2;18909:9;18905:18;18897:26;;18969:9;18963:4;18959:20;18955:1;18944:9;18940:17;18933:47;18997:131;19123:4;18997:131;:::i;:::-;18989:139;;18887:248;;;:::o;19141:222::-;;19272:2;19261:9;19257:18;19249:26;;19285:71;19353:1;19342:9;19338:17;19329:6;19285:71;:::i;:::-;19239:124;;;;:::o;19369:214::-;;19496:2;19485:9;19481:18;19473:26;;19509:67;19573:1;19562:9;19558:17;19549:6;19509:67;:::i;:::-;19463:120;;;;:::o;19589:283::-;;19655:2;19649:9;19639:19;;19697:4;19689:6;19685:17;19804:6;19792:10;19789:22;19768:18;19756:10;19753:34;19750:62;19747:2;;;19815:18;;:::i;:::-;19747:2;19855:10;19851:2;19844:22;19629:243;;;;:::o;19878:331::-;;20029:18;20021:6;20018:30;20015:2;;;20051:18;;:::i;:::-;20015:2;20136:4;20132:9;20125:4;20117:6;20113:17;20109:33;20101:41;;20197:4;20191;20187:15;20179:23;;19944:265;;;:::o;20215:99::-;;20301:5;20295:12;20285:22;;20274:40;;;:::o;20320:169::-;;20438:6;20433:3;20426:19;20478:4;20473:3;20469:14;20454:29;;20416:73;;;;:::o;20495:305::-;;20554:20;20572:1;20554:20;:::i;:::-;20549:25;;20588:20;20606:1;20588:20;:::i;:::-;20583:25;;20742:1;20674:66;20670:74;20667:1;20664:81;20661:2;;;20748:18;;:::i;:::-;20661:2;20792:1;20789;20785:9;20778:16;;20539:261;;;;:::o;20806:191::-;;20866:20;20884:1;20866:20;:::i;:::-;20861:25;;20900:20;20918:1;20900:20;:::i;:::-;20895:25;;20939:1;20936;20933:8;20930:2;;;20944:18;;:::i;:::-;20930:2;20989:1;20986;20982:9;20974:17;;20851:146;;;;:::o;21003:96::-;;21069:24;21087:5;21069:24;:::i;:::-;21058:35;;21048:51;;;:::o;21105:90::-;;21182:5;21175:13;21168:21;21157:32;;21147:48;;;:::o;21201:77::-;;21267:5;21256:16;;21246:32;;;:::o;21284:126::-;;21361:42;21354:5;21350:54;21339:65;;21329:81;;;:::o;21416:77::-;;21482:5;21471:16;;21461:32;;;:::o;21499:86::-;;21574:4;21567:5;21563:16;21552:27;;21542:43;;;:::o;21591:180::-;;21701:64;21759:5;21701:64;:::i;:::-;21688:77;;21678:93;;;:::o;21777:140::-;;21887:24;21905:5;21887:24;:::i;:::-;21874:37;;21864:53;;;:::o;21923:154::-;22007:6;22002:3;21997;21984:30;22069:1;22060:6;22055:3;22051:16;22044:27;21974:103;;;:::o;22083:307::-;22151:1;22161:113;22175:6;22172:1;22169:13;22161:113;;;22260:1;22255:3;22251:11;22245:18;22241:1;22236:3;22232:11;22225:39;22197:2;22194:1;22190:10;22185:15;;22161:113;;;22292:6;22289:1;22286:13;22283:2;;;22372:1;22363:6;22358:3;22354:16;22347:27;22283:2;22132:258;;;;:::o;22396:320::-;;22477:1;22471:4;22467:12;22457:22;;22524:1;22518:4;22514:12;22545:18;22535:2;;22601:4;22593:6;22589:17;22579:27;;22535:2;22663;22655:6;22652:14;22632:18;22629:38;22626:2;;;22682:18;;:::i;:::-;22626:2;22447:269;;;;:::o;22722:233::-;;22784:24;22802:5;22784:24;:::i;:::-;22775:33;;22830:66;22823:5;22820:77;22817:2;;;22900:18;;:::i;:::-;22817:2;22947:1;22940:5;22936:13;22929:20;;22765:190;;;:::o;22961:180::-;23009:77;23006:1;22999:88;23106:4;23103:1;23096:15;23130:4;23127:1;23120:15;23147:180;23195:77;23192:1;23185:88;23292:4;23289:1;23282:15;23316:4;23313:1;23306:15;23333:180;23381:77;23378:1;23371:88;23478:4;23475:1;23468:15;23502:4;23499:1;23492:15;23519:102;;23611:2;23607:7;23602:2;23595:5;23591:14;23587:28;23577:38;;23567:54;;;:::o;23627:122::-;23700:24;23718:5;23700:24;:::i;:::-;23693:5;23690:35;23680:2;;23739:1;23736;23729:12;23680:2;23670:79;:::o;23755:122::-;23828:24;23846:5;23828:24;:::i;:::-;23821:5;23818:35;23808:2;;23867:1;23864;23857:12;23808:2;23798:79;:::o;23883:122::-;23956:24;23974:5;23956:24;:::i;:::-;23949:5;23946:35;23936:2;;23995:1;23992;23985:12;23936:2;23926:79;:::o

Swarm Source

ipfs://8da251fea6d4449a3c04a3e10383792124ed3bd83e8497527c5ff4739cbb3aa5
Loading