ETH Price: $3,482.94 (-1.31%)
Gas: 11 Gwei

Contract

0xc631164B6CB1340B5123c9162f8558c866dE1926
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Value
Set Approval For...200484292024-06-08 16:53:355 days ago1717865615IN
Divine Anarchy: DA Token
0 ETH0.000382588.2936156
Set Approval For...200450262024-06-08 5:28:595 days ago1717824539IN
Divine Anarchy: DA Token
0 ETH0.000239795.19819471
Set Approval For...200435602024-06-08 0:34:235 days ago1717806863IN
Divine Anarchy: DA Token
0 ETH0.000290876.30555922
Set Approval For...200415462024-06-07 17:49:236 days ago1717782563IN
Divine Anarchy: DA Token
0 ETH0.0005474211.86695842
Set Approval For...200383272024-06-07 7:02:236 days ago1717743743IN
Divine Anarchy: DA Token
0 ETH0.0005323311.53983199
Set Approval For...200312992024-06-06 7:28:597 days ago1717658939IN
Divine Anarchy: DA Token
0 ETH0.0005790312.55217573
Set Approval For...200304242024-06-06 4:32:477 days ago1717648367IN
Divine Anarchy: DA Token
0 ETH0.000458179.93215678
Set Approval For...200238042024-06-05 6:21:598 days ago1717568519IN
Divine Anarchy: DA Token
0 ETH0.000268265.81542263
Set Approval For...200236932024-06-05 5:59:478 days ago1717567187IN
Divine Anarchy: DA Token
0 ETH0.000284826.17432124
Safe Transfer Fr...200197042024-06-04 16:38:599 days ago1717519139IN
Divine Anarchy: DA Token
0 ETH0.001609418.7748685
Transfer From200181542024-06-04 11:27:359 days ago1717500455IN
Divine Anarchy: DA Token
0 ETH0.000156285.82616046
Transfer From200181542024-06-04 11:27:359 days ago1717500455IN
Divine Anarchy: DA Token
0 ETH0.000528725.51244948
Transfer From200165162024-06-04 5:57:599 days ago1717480679IN
Divine Anarchy: DA Token
0 ETH0.000680438.21568524
Set Approval For...200107412024-06-03 10:37:1110 days ago1717411031IN
Divine Anarchy: DA Token
0 ETH0.0005679312.31168782
Set Approval For...200105822024-06-03 10:04:4710 days ago1717409087IN
Divine Anarchy: DA Token
0 ETH0.0002940511.17494614
Set Approval For...200105712024-06-03 10:02:3510 days ago1717408955IN
Divine Anarchy: DA Token
0 ETH0.0005296711.46128606
Set Approval For...200010082024-06-02 1:58:5911 days ago1717293539IN
Divine Anarchy: DA Token
0 ETH0.000103274.26439123
Set Approval For...199996872024-06-01 21:34:1111 days ago1717277651IN
Divine Anarchy: DA Token
0 ETH0.000287136.22437319
Set Approval For...199605212024-05-27 10:09:5917 days ago1716804599IN
Divine Anarchy: DA Token
0 ETH0.0006069513.15747466
Set Approval For...199593622024-05-27 6:16:5917 days ago1716790619IN
Divine Anarchy: DA Token
0 ETH0.000458659.94259278
Set Approval For...199592542024-05-27 5:55:1117 days ago1716789311IN
Divine Anarchy: DA Token
0 ETH0.000332047.19802462
Set Approval For...199587022024-05-27 4:04:3517 days ago1716782675IN
Divine Anarchy: DA Token
0 ETH0.000347757.5385314
Set Approval For...199517892024-05-26 4:53:2318 days ago1716699203IN
Divine Anarchy: DA Token
0 ETH0.000142513.08951577
Set Approval For...199502222024-05-25 23:38:3518 days ago1716680315IN
Divine Anarchy: DA Token
0 ETH0.000092553.52867012
Set Approval For...199502212024-05-25 23:38:2318 days ago1716680303IN
Divine Anarchy: DA Token
0 ETH0.000144593.13444258
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
137067082021-11-29 5:12:12927 days ago1638162732
Divine Anarchy: DA Token
0.09 ETH
135743152021-11-08 6:51:05948 days ago1636354265
Divine Anarchy: DA Token
0.54 ETH
135632082021-11-06 13:23:05950 days ago1636204985
Divine Anarchy: DA Token
405.54 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631272021-11-06 13:01:55950 days ago1636203715
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631232021-11-06 13:01:22950 days ago1636203682
Divine Anarchy: DA Token
0.36 ETH
135631142021-11-06 12:59:44950 days ago1636203584
Divine Anarchy: DA Token
0.36 ETH
135631142021-11-06 12:59:44950 days ago1636203584
Divine Anarchy: DA Token
0.36 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DivineAnarchyToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-05
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.0;

interface IERC165 {
    
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
   
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}


interface IERC721Metadata is IERC721 {
    
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


interface IDivineAnarchyToken is IERC721, IERC721Metadata {

    function getTokenClass(uint256 _id) external view returns(uint256);
    function getTokenClassSupplyCap(uint256 _classId) external view returns(uint256);
    function getTokenClassCurrentSupply(uint256 _classId) external view returns(uint256);
    function getTokenClassVotingPower(uint256 _classId) external view returns(uint256);
    function getTokensMintedAtPresale(address account) external view returns(uint256);
    function isTokenClass(uint256 _id) external pure returns(bool);
    function isTokenClassMintable(uint256 _id) external pure returns(bool);
    function isAscensionApple(uint256 _id) external pure returns(bool);
    function isBadApple(uint256 _id) external pure returns(bool);
    function consumedAscensionApples(address account) external view returns(uint256);
    function airdropApples(uint256 amount, uint256 appleClass, address[] memory accounts) external;
}


interface IERC721Enumerable is IERC721 {
  
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

interface IERC721Receiver {
    
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

abstract contract ERC165 is IERC165 {
  
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

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

abstract contract Pausable is Context {
    
    event Paused(address account);
    event Unpaused(address account);
    bool private _paused;

    constructor() {
        _paused = false;
    }

    
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

   
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

library Address {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    
    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
   
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;
    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

library MerkleProof {
    
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }
        return computedHash;
    }
}

interface IOracle {

    function getRandomNumbers() external returns(uint256[][] memory);
    function wait() external pure returns(bool);
}

interface IAdminWallets {

    function getOwnerWallet() external pure returns(address);
    function getDiversityWallet() external pure returns(address);
    function getAssetBenderWallet() external pure returns(address);
    function getMarketingWallet() external pure returns(address);
    function getDivineTreasuryWallet() external pure returns(address);
}
contract DivineAnarchyToken is IDivineAnarchyToken, ERC165, Ownable, Pausable, ReentrancyGuard {

    using Address for address;
    using Strings for string;

    // Contract variables.
    IAdminWallets public adminWallets;
    IOracle public oracle;

    string private _baseURI;
    string private _name;
    string private _symbol;

    uint256 public constant THE_UNKNOWN = 0;
    uint256 public constant KING = 1;
    uint256 public constant ADAM_EVE = 2;
    uint256 public constant HUMAN_HERO = 3;
    uint256 public constant HUMAN_NEMESIS = 4; 
    uint256 public constant ASCENSION_APPLE = 5;
    uint256 public constant BAD_APPLE = 6;

    mapping(uint256 => uint256) private _tokenClass;
    mapping(uint256 => uint256) private _tokenClassSupplyCap;
    mapping(uint256 => uint256) private _tokenClassSupplyCurrent;
    mapping(uint256 => uint256) private _tokenClassVotingPower;

    uint256 private _mintedToTreasury;
    uint256 public  MAX_MINTED_TO_TREASURY = 270; 
    bool private _mintedToTreasuryHasFinished = false;

    uint256 private constant MAX_TOKENS_MINTED_BY_ADDRESS_PRESALE = 3;
    mapping(address => uint256) private _tokensMintedByAddressAtPresale;

    uint256 public MAX_TOKENS_MINTED_BY_ADDRESS = 4;
    mapping(address => uint256) private _tokensMintedByAddress;

    uint256 private _initAscensionApple = 10011;
    uint256 private _initBadApple = 13011;
    mapping(address => uint256) private _consumedAscensionApples;

    uint256 public  TOKEN_UNIT_PRICE = 0.09 ether;
    
    bytes32 public root = 0x71eb2b2e3c82409bb024f8b681245d3eea25dcfd0dc7bbe701ee18cf1e8ecbb1;
    bool isPresaleActive = true;

    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;

    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;
    
    bool public toRescue;
    bool public oracleForced;
    
    event oracleRescued(uint256[][] _tokens, uint256 timestamp, address receiver);
    event val(uint256[][] _tokens);

    // Contract constructor
    constructor (string memory name_, string memory symbol_, string memory baseURI_, address _adminwallets, address _oracle) {
        _name = name_;
        _symbol = symbol_;
        _baseURI = baseURI_;

        adminWallets = IAdminWallets(_adminwallets);
        oracle = IOracle(_oracle);

        _tokenClassSupplyCap[THE_UNKNOWN] = 1;
        _tokenClassSupplyCap[KING] = 8;
        _tokenClassSupplyCap[ADAM_EVE] = 2;
        _tokenClassSupplyCap[HUMAN_HERO] = 5000;
        _tokenClassSupplyCap[HUMAN_NEMESIS] = 5000; 
        _tokenClassSupplyCap[ASCENSION_APPLE] = 3000;
        _tokenClassSupplyCap[BAD_APPLE] = 1500;

        _tokenClassVotingPower[KING] = 2000;
        _tokenClassVotingPower[ADAM_EVE] = 1000;
        _tokenClassVotingPower[HUMAN_HERO] = 1;
        _tokenClassVotingPower[HUMAN_NEMESIS] = 1;
        
        _beforeTokenTransfer(address(0), adminWallets.getDivineTreasuryWallet(), 0);
        _balances[adminWallets.getDivineTreasuryWallet()] += 1;
        _owners[0] = adminWallets.getDivineTreasuryWallet();
        _tokenClass[0] = THE_UNKNOWN;
        _tokenClassSupplyCurrent[THE_UNKNOWN] = 1;
        
        _beforeTokenTransfer(address(0), adminWallets.getDiversityWallet(), 1);
        _beforeTokenTransfer(address(0), adminWallets.getAssetBenderWallet(), 2);
        _beforeTokenTransfer(address(0), adminWallets.getMarketingWallet(), 3);

        // Minting three kings for Diversity, AssetBender and Marketing.
        _balances[adminWallets.getDiversityWallet()] += 1;
        _balances[adminWallets.getAssetBenderWallet()] += 1;
        _balances[adminWallets.getMarketingWallet()] += 1;

        _owners[1] = adminWallets.getDiversityWallet();
        _owners[2] = adminWallets.getAssetBenderWallet();
        _owners[3] = adminWallets.getMarketingWallet();
        _owners[4] = adminWallets.getMarketingWallet();

        for(uint256 i = 1; i <= 5; i++) {
            _tokenClass[i] = KING;
        }
 
        _tokenClassSupplyCurrent[KING] = 3;
    }


    // Contract functions.
    function name() external view override returns (string memory) {
        return _name;
    }

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

    function setBaseURI(string memory baseURI_) external onlyOwner {
        _baseURI = baseURI_;
    }

    function tokenURI(uint256 tokenId) external view override returns (string memory) {
        require(exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI;
        return string(abi.encodePacked(baseURI, Strings.toString(tokenId)));
    }

    function getAdminWalletsAddress() public view returns(address) {
        return address(adminWallets);
    }

    function getOracleAddress() public view returns(address) {
        return address(oracle);
    }

    function getTokenClass(uint256 _id) external view override returns(uint256) {
        return _tokenClass[_id];
    }

    function setTokenClass(uint _id) public pure returns(uint256) {
        // This can be erased if not necessary.
        if (_id == 0) { 
            return THE_UNKNOWN;
        } else if (_id >= 1 && _id <= 8) {
            return KING;
        } else if (_id == 9 && _id == 10) {
            return ADAM_EVE;
        } else if (_id >= 11 && _id <= 5010) {
            return HUMAN_HERO;
        } else if (_id >= 5011 && _id <= 10010) {
            return HUMAN_NEMESIS;
        } else if (_id >= 10011 && _id <= 13010) {
            return ASCENSION_APPLE;
        } else if (_id >= 13011 && _id <= 14510) {
            return BAD_APPLE;
        } else {
            revert('This ID does not belong to a valid token class');
        }
    }

    function getTokenClassSupplyCap(uint256 _classId) external view override returns(uint256) {
        return _tokenClassSupplyCap[_classId];
    }

    function getTokenClassCurrentSupply(uint256 _classId) external view override returns(uint256) {
        return _tokenClassSupplyCurrent[_classId];
    }

    function getTokenClassVotingPower(uint256 _classId) external view override returns(uint256) {
        return _tokenClassVotingPower[_classId];
    }

    function getTokensMintedAtPresale(address account) external view override returns(uint256) {
        return _tokensMintedByAddressAtPresale[account];
    }

    function isTokenClass(uint256 _id) public pure override returns(bool) {
        return (_id >= 0 && _id <= 14510);
    }

    function isTokenClassMintable(uint256 _id) public pure override returns(bool) {
        return (_id >= 0 && _id <= 10010);
    }

    function isAscensionApple(uint256 _id) public pure override returns(bool) {
        return (_id >= 10011 && _id <= 13010);
    }

    function isBadApple(uint256 _id) public pure override returns(bool) {
        return (_id >= 13011 && _id <= 14510);
    }

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

    function ownerOf(uint256 _id) public view returns(address) {
        return _owners[_id];
    }

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

    // Functions to comply with ERC721.
    function approve(address to, uint256 tokenId) external override {
        address owner = ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function getApproved(uint256 tokenId) public view override returns (address operator) {
        require(exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) external override {
        require(_msgSender() != operator, "Error: setting approval status for self");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address account, address operator) public view override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    function getMintedToTreasuryFinished() public view returns(bool) {
        return _mintedToTreasuryHasFinished;
    }
    
    // Minting & airdropping.
    function airdropToTreasury(uint256[][] memory treasuryRandom) external onlyOwner {
        address divineTreasuryWallet = adminWallets.getDivineTreasuryWallet();
        require(!paused(), "Error: token transfer while paused");
        uint256[] memory tokenIds = treasuryRandom[0];
        uint256[] memory classIds = treasuryRandom[1];
        require(classIds.length == tokenIds.length);
        uint256 amount = tokenIds.length;
        require(_mintedToTreasury + amount <= MAX_MINTED_TO_TREASURY, 'Error: you are exceeding the max airdrop amount to Treasury');
        for (uint256 i = 0; i < tokenIds.length; i++) {
            _beforeTokenTransfer(address(0), divineTreasuryWallet, tokenIds[i]);
            _balances[divineTreasuryWallet] += 1;
            _owners[tokenIds[i]] = divineTreasuryWallet;
            _tokenClass[tokenIds[i]] = classIds[i];
            _tokenClassSupplyCurrent[classIds[i]] += 1;
            emit Transfer(address(0), divineTreasuryWallet, tokenIds[i]);
        }

        _mintedToTreasury += amount;

        if(_mintedToTreasury == MAX_MINTED_TO_TREASURY) {
            _mintedToTreasuryHasFinished = true;
        }
    }    

    function mint(address account, uint256 amount, bytes32[] memory proof) external nonReentrant payable {
        // Pre minting checks.
        address operator = _msgSender();

        require(msg.value >= TOKEN_UNIT_PRICE * amount, 'Make sure you can afford 0.09 eth per token');
        require(account != address(0), "Error: mint to the zero address");
        require(!paused(), "Error: token transfer while paused");
        require(_mintedToTreasuryHasFinished == true, 'Error: Wait until airdropping to Treasury has finished');
        if (isPresaleActive == true) {
            require(_tokensMintedByAddressAtPresale[operator] + amount <= MAX_TOKENS_MINTED_BY_ADDRESS_PRESALE, 'Error: you cannot mint more tokens at presale');
            require(MerkleProof.verify(proof, root, keccak256(abi.encodePacked(operator))), "you are not allowed to mint during presale");
        } else {
            require(_tokensMintedByAddress[operator] + amount <= MAX_TOKENS_MINTED_BY_ADDRESS, 'Error: you cannot mint more tokens');
        }

        uint256[][] memory randomList = getRand(amount);
        uint256[] memory tokensIds = randomList[0];
        uint256[] memory classIds = randomList[1];

        for (uint256 i = 0; i < amount; i++) {
            _beforeTokenTransfer(address(0), account, tokensIds[i]);

            _owners[tokensIds[i]] = account;
            _balances[account] += 1;
            _tokenClass[tokensIds[i]] = classIds[i];
            _tokenClassSupplyCurrent[classIds[i]] += 1;

            emit Transfer(address(0), account, tokensIds[i]);
        }

        // Post minting.
        if (isPresaleActive == true) {
            _tokensMintedByAddressAtPresale[operator] += amount;
        } else {
            _tokensMintedByAddress[operator] += amount;
        }
    }

    function transferFrom(address from, address to, uint256 id) public {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);
    }

    function safeTransferFrom(address from, address to, uint256 id) public  {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);
        // Post transfer: check IERC721Receiver.
        require(_checkOnERC721Received(from, to, id, ""), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function safeTransferFrom(address from, address to, uint256 id, bytes calldata data) public  {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        _transfer(from, to, operator, id);

        // Post transfer: check IERC721Receiver with data input.
        require(_checkOnERC721Received(from, to, id, data), "ERC721: transfer to non ERC721Receiver implementer");

    }

    function _transfer(address from, address to, address operator, uint256 id) internal virtual {
        require(_owners[id] == from);
        require(from == operator || getApproved(id) == operator || isApprovedForAll(from, operator), "Error: caller is neither owner nor approved");
        _beforeTokenTransfer(from, to, id);

        // Transfer.
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[id] = to;

        emit Transfer(from, to, id);
        _tokenApprovals[id] = address(0);
    }

    function safeBatchTransferFrom(address from, address to, uint256[] calldata ids) public {
        // Pre transfer checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        if (from != operator && isApprovedForAll(from, operator) == false) {
            for (uint256 i = 0; i < ids.length; i++) {
                require(getApproved(ids[i]) == operator, 'Error: caller is neither owner nor approved');
            }
        }

        // Transfer.
        for (uint256 i = 0; i < ids.length; i++) {
            require(_owners[ids[i]] == from);
            _beforeTokenTransfer(from, to, ids[i]);
            _balances[from] -= 1;
            _balances[to] += 1;
            _owners[ids[i]] = to;

            emit Transfer(from, to, ids[i]);
            _tokenApprovals[ids[i]] = address(0);

            require(_checkOnERC721Received(from, to, ids[i], ""), "ERC721: transfer to non ERC721Receiver implementer");
        }
    }
    
    function burn(address account, uint256 id) public {
        // Pre burning checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        require(account == operator || getApproved(id) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");
        require(account != address(0), "Error: burn from the zero address");
        require(_owners[id] == account, 'Error: account is not owner of token id');
         _beforeTokenTransfer(account, address(0), id);

        // Burn process.
        _owners[id] = address(0);
        _balances[account] -= 1;

        emit Transfer(account, address(0), id);

        // Post burning.
        _tokenApprovals[id] = address(0);
    }

    function burnBatch(address account, uint256[] memory ids) public {
        // Pre burning checks.
        address operator = _msgSender();
        require(!paused(), "Error: token transfer while paused");

        if (account != operator && isApprovedForAll(account, operator) == false) {
            for (uint256 i = 0; i < ids.length; i++) {
                require(getApproved(ids[i]) == operator, 'Error: caller is neither owner nor approved');
            }
        } 

        for (uint256 i = 0; i < ids.length; i++) {
            require(_owners[ids[i]] == account, 'Error: account is not owner of token id');
        }

        // Burn process.
        for (uint256 i = 0; i < ids.length; i++) {
            _beforeTokenTransfer(account, address(0), ids[i]);
            _owners[ids[i]] = address(0);
            _balances[account] -= 1;
            emit Transfer(account, address(0), ids[i]);
        }

        // Post burning.
        for (uint256 i=0; i < ids.length; i++) {
            _tokenApprovals[ids[i]] = address(0);
        }
    }

    function airdropApples(uint256 amount, uint256 appleClass, address[] memory accounts) external override onlyOwner {        
        require(accounts.length == amount, "amount not egal to list length");
        require(appleClass == ASCENSION_APPLE || appleClass == BAD_APPLE, 'Error: The token class is not an apple');
        require(_tokenClassSupplyCurrent[appleClass] + amount <= _tokenClassSupplyCap[appleClass], 'Error: You exceed the supply cap for this apple class');

        uint256 appleIdSetter;

        if (appleClass == ASCENSION_APPLE) {
            appleIdSetter = _initAscensionApple + _tokenClassSupplyCurrent[ASCENSION_APPLE];
        } else {
            appleIdSetter = _initBadApple + _tokenClassSupplyCurrent[BAD_APPLE];
        }

        for (uint256 i = 0; i < accounts.length; i++) {
            uint256 appleId = appleIdSetter + i;
            _beforeTokenTransfer(address(0), accounts[i], appleId);
            _owners[appleId] = accounts[i];
            _balances[accounts[i]] += 1;
            _tokenClass[appleId] = appleClass;
        } 

        _tokenClassSupplyCurrent[appleClass] += amount;
    }

    function ascensionAppleConsume(address account, uint256 appleId) external {
        address operator = _msgSender();

        require(isAscensionApple(appleId), 'Error: token provided is not ascension apple');
        require(_owners[appleId] == operator || getApproved(appleId) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");
        burn(account, appleId);
        _consumedAscensionApples[account] += 1;
    }

    function badAppleConsume(address account, uint256 appleId, uint256 tokenId) external {
        address operator = _msgSender();

        require(isBadApple(appleId), 'Error: token provided is not bad apple');
        require(isTokenClassMintable(tokenId), "Error: token provided is an apple");

        require(_owners[appleId] == operator || getApproved(appleId) == operator || isApprovedForAll(account, operator), "Error: caller is neither owner nor approved");

        burn(account, appleId);
        burn(account, tokenId);

        // Rewarding with 1 ascension apple.
        require(_tokenClassSupplyCurrent[ASCENSION_APPLE] + 1 <= _tokenClassSupplyCap[ASCENSION_APPLE], 'Error: You exceed the supply cap for this apple class');

        uint256 ascensionAppleId = _initAscensionApple + _tokenClassSupplyCurrent[ASCENSION_APPLE];
            
        _beforeTokenTransfer(address(0), account, ascensionAppleId);
        _owners[ascensionAppleId] = account;
        _balances[account] += 1;
        _tokenClassSupplyCurrent[ASCENSION_APPLE] += 1;
    }

    // Auxiliary functions.
    function exists(uint256 tokenId) public view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
        interfaceId == type(IERC721Enumerable).interfaceId ||
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual  returns (uint256) {
        require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view virtual  returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual  returns (uint256) {
        require(index < totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }
    
       function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal   {
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
    
    function walletOfOwner(address _owner) public view returns (uint256[] memory) {
        uint256 tokenCount = balanceOf(_owner);
        uint256[] memory result = new uint256[](tokenCount);
        for(uint256 i = 0; i < tokenCount; i++) {
            result[i] = tokenOfOwnerByIndex(_owner, i);
        }
        return result;
    }
    
    function getData(address _account)external view returns(uint256[][] memory){
        uint256[][] memory data = new uint256[][](2);
        uint256[] memory arrayOfTokens = walletOfOwner(_account);
        uint256[] memory othersData = new uint256[](2);
        othersData[0] = totalSupply();
        othersData[1] = TOKEN_UNIT_PRICE;
        data[0] = arrayOfTokens;
        data[1] = othersData;
        return data;
    }
    
    function withdrawAll() external onlyOwner nonReentrant{
        uint256 balance = address(this).balance;
        require(balance > 0, "balance is 0.");
        (bool success,) = payable(msg.sender).call{value: balance}(new bytes(0));
        if(!success)revert("withdraw: transfer error");    
        
    }

    function withdraw(uint256 _amount) external onlyOwner nonReentrant{
        uint256 balance = address(this).balance;
        require(balance > 0, "balance is 0.");
        require(balance > _amount, "balance must be superior to amount");
        (bool success,) = payable(msg.sender).call{value: _amount}(new bytes(0));
        if(!success)revert("withdraw: transfer error");
    }
    
    function setPresale(bool _bool) external onlyOwner{
        isPresaleActive = _bool;
    }
    
    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }
    
    function setMaxMintedTreasury(uint256 _amount) external onlyOwner {
        MAX_MINTED_TO_TREASURY = _amount;
                if(_mintedToTreasury == MAX_MINTED_TO_TREASURY) {
            _mintedToTreasuryHasFinished = true;
        }
    }
    function setOracle(address _oracle) external onlyOwner{
        oracle = IOracle(_oracle);
    }
    
    function setAdminWallet(address _adminwallets) external onlyOwner {
        adminWallets = IAdminWallets(_adminwallets);
    }
    
    function oracleRescue(uint256 _amount) public view returns(uint256[][]memory) {
        uint256[][] memory array = new uint256[][](2);
        uint256[] memory tokenIds = new uint256[](_amount);
        uint256[] memory classIds = new uint256[](_amount);
        uint256 initRand = 0;
        uint256 each = 0;
        bytes32 bHash = blockhash(block.number - 1);

        while(initRand != _amount){
            uint256 randomNumber = uint256(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            block.timestamp, 
                            bHash, 
                            _msgSender(), 
                            each
                        )
                    )
                ) % 10011
            );
            bool inArray;
            for(uint256 i = 0; i<initRand; i++){
                if(randomNumber == tokenIds[i]){
                    inArray = true;
                }
            }
            if(!exists(randomNumber) && !inArray){
                tokenIds[initRand] = randomNumber;
                classIds[initRand] = setTokenClass(randomNumber);
                initRand += 1;
            }
            each += 1;
        }
        array[0] = tokenIds;
        array[1] = classIds;
    return array;
       
    }
    
    function setRescue(bool _value) external onlyOwner {
        toRescue = _value;
    }
    
    function forceOracle(bool _value) external onlyOwner {
        oracleForced = _value;
    }
    
    function getRand(uint256 _amount) internal returns(uint256[][] memory ){
        if(!toRescue && !oracleForced){
            try oracle.getRandomNumbers() returns(uint256[][] memory array){
                return (array);
            } catch {
                uint256[][] memory arr = oracleRescue(_amount);
                emit oracleRescued(arr, block.timestamp, msg.sender);
                return arr;
            }
        } else if(!toRescue && oracleForced){
            return oracle.getRandomNumbers();
        } else {
            uint256[][] memory arr = oracleRescue(_amount);
            emit oracleRescued(arr, block.timestamp, msg.sender);
            return arr;        
        }
    }
    
    function setMaxTokenMintedByAddress(uint256 _amount) external onlyOwner{
        MAX_TOKENS_MINTED_BY_ADDRESS = _amount;
    }
    
    function setNewTokenPrice(uint256 _newPrice) external onlyOwner{
        TOKEN_UNIT_PRICE = _newPrice;
    }
    
    function getPresaleState()external view returns(bool){
        return isPresaleActive;
    }
    
  
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"baseURI_","type":"string"},{"internalType":"address","name":"_adminwallets","type":"address"},{"internalType":"address","name":"_oracle","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[][]","name":"_tokens","type":"uint256[][]"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"oracleRescued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[][]","name":"_tokens","type":"uint256[][]"}],"name":"val","type":"event"},{"inputs":[],"name":"ADAM_EVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASCENSION_APPLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BAD_APPLE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUMAN_HERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUMAN_NEMESIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KING","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINTED_TO_TREASURY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TOKENS_MINTED_BY_ADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"THE_UNKNOWN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN_UNIT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminWallets","outputs":[{"internalType":"contract IAdminWallets","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"appleClass","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"airdropApples","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[][]","name":"treasuryRandom","type":"uint256[][]"}],"name":"airdropToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"appleId","type":"uint256"}],"name":"ascensionAppleConsume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"appleId","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"badAppleConsume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"consumedAscensionApples","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"forceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdminWalletsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getData","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintedToTreasuryFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPresaleState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getTokenClass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassCurrentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassSupplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_classId","type":"uint256"}],"name":"getTokenClassVotingPower","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getTokensMintedAtPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isAscensionApple","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isBadApple","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isTokenClass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isTokenClassMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleForced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"oracleRescue","outputs":[{"internalType":"uint256[][]","name":"","type":"uint256[][]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adminwallets","type":"address"}],"name":"setAdminWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxMintedTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTokenMintedByAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setNewTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setRescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setTokenClass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toRescue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261010e600c55600d805460ff199081169091556004600f5561271b6011556132d360125567013fbe85edc900006014557f71eb2b2e3c82409bb024f8b681245d3eea25dcfd0dc7bbe701ee18cf1e8ecbb16015556016805490911660011790553480156200007157600080fd5b50604051620060c7380380620060c78339810160408190526200009491620010dd565b6200009f3362000c8b565b6000805460ff60a01b19169055600180558451620000c590600590602088019062000f3e565b508351620000db90600690602087019062000f3e565b508251620000f190600490602086019062000f3e565b50600280546001600160a01b03199081166001600160a01b038581169182178455600380549093169085161790915560017f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c781905560087fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f557f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea9041929092556113887f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558190557f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b855610bb87f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb556105dc7f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc555600a60209081526107d07fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc7556103e87fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba8557fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa39759839055600460008181527fe1eb2b2161a492c07c5a334e48012567cba93ec021043f53c1955516a3c5a841949094556040805163a09ec3ef60e01b815290516200033f95949363a09ec3ef9383810193919291829003018186803b158015620002fc57600080fd5b505afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003379190620010b8565b600062000cdb565b600160186000600260009054906101000a90046001600160a01b03166001600160a01b031663a09ec3ef6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039457600080fd5b505afa158015620003a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cf9190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000400919062001194565b90915550506002546040805163a09ec3ef60e01b815290516001600160a01b039092169163a09ec3ef91600480820192602092909190829003018186803b1580156200044b57600080fd5b505afa15801562000460573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004869190620010b8565b60008080527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b80546001600160a01b0319166001600160a01b039384161790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df8190556009602090815260017fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5560025460408051636528961560e11b815290516200059695929092169263ca512c2a92600480840193829003018186803b1580156200055357600080fd5b505afa15801562000568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058e9190620010b8565b600162000cdb565b6200062e6000600260009054906101000a90046001600160a01b03166001600160a01b0316636c7162d26040518163ffffffff1660e01b815260040160206040518083038186803b158015620005eb57600080fd5b505afa15801562000600573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006269190620010b8565b600262000cdb565b620006c66000600260009054906101000a90046001600160a01b03166001600160a01b0316631d4e49eb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068357600080fd5b505afa15801562000698573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006be9190620010b8565b600362000cdb565b600160186000600260009054906101000a90046001600160a01b03166001600160a01b031663ca512c2a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200071b57600080fd5b505afa15801562000730573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007569190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000787919062001194565b92505081905550600160186000600260009054906101000a90046001600160a01b03166001600160a01b0316636c7162d26040518163ffffffff1660e01b815260040160206040518083038186803b158015620007e357600080fd5b505afa158015620007f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081e9190620010b8565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546200084f919062001194565b92505081905550600160186000600260009054906101000a90046001600160a01b03166001600160a01b0316631d4e49eb6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008ab57600080fd5b505afa158015620008c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008e69190620010b8565b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825462000917919062001194565b909155505060025460408051636528961560e11b815290516001600160a01b039092169163ca512c2a91600480820192602092909190829003018186803b1580156200096257600080fd5b505afa15801562000977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099d9190620010b8565b6001600052601760209081527ff36d6bc9642eb6fb6ee9998b09ce990566df752ab06e11f8de7ab633bbd57b8f80546001600160a01b0319166001600160a01b0393841617905560025460408051633638b16960e11b815290519190931692636c7162d2926004808301939192829003018186803b15801562000a1f57600080fd5b505afa15801562000a34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5a9190620010b8565b60026000819052601760209081527fc52df653038b2ad477d8d97f1ddd63cfd138847b628ad8a7b89c109c3f8782ca80546001600160a01b0319166001600160a01b03948516179055905460408051631d4e49eb60e01b815290519190931692631d4e49eb926004808301939192829003018186803b15801562000add57600080fd5b505afa15801562000af2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b189190620010b8565b6003600052601760209081527fd8b2bced50346359af71f91110b86cdf684b6ab1c6ca64a7583c044d5c24de5c80546001600160a01b0319166001600160a01b0393841617905560025460408051631d4e49eb60e01b815290519190931692631d4e49eb926004808301939192829003018186803b15801562000b9a57600080fd5b505afa15801562000baf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bd59190620010b8565b600460005260176020527f68052a315987b3c92fe6f7df77391bc5a825cabe4950d34f36f8f4e8a6abcb4d80546001600160a01b0319166001600160a01b039290921691909117905560015b6005811162000c51576000818152600760205260409020600190558062000c488162001206565b91505062000c21565b5050600160005250506009602052505060037f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36556200127c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03831662000d395762000d3381601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b62000d5f565b816001600160a01b0316836001600160a01b03161462000d5f5762000d5f838262000dd6565b6001600160a01b03821662000d7e5762000d798162000e84565b505050565b826001600160a01b0316826001600160a01b03161462000d79576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b6001600160a01b03821660009081526018602052604081205462000dfd90600190620011af565b6000838152601c602052604090205490915080821462000e51576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d5460009062000e9890600190620011af565b6000838152601e6020526040812054601d805493945090928490811062000ec35762000ec362001250565b9060005260206000200154905080601d838154811062000ee75762000ee762001250565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d80548062000f225762000f226200123a565b6001900381819060005260206000200160009055905550505050565b82805462000f4c90620011c9565b90600052602060002090601f01602090048101928262000f70576000855562000fbb565b82601f1062000f8b57805160ff191683800117855562000fbb565b8280016001018555821562000fbb579182015b8281111562000fbb57825182559160200191906001019062000f9e565b5062000fc992915062000fcd565b5090565b5b8082111562000fc9576000815560010162000fce565b80516001600160a01b038116811462000ffc57600080fd5b919050565b600082601f8301126200101357600080fd5b81516001600160401b038082111562001030576200103062001266565b604051601f8301601f19908116603f011681019082821181831017156200105b576200105b62001266565b816040528381526020925086838588010111156200107857600080fd5b600091505b838210156200109c57858201830151818301840152908201906200107d565b83821115620010ae5760008385830101525b9695505050505050565b600060208284031215620010cb57600080fd5b620010d68262000fe4565b9392505050565b600080600080600060a08688031215620010f657600080fd5b85516001600160401b03808211156200110e57600080fd5b6200111c89838a0162001001565b965060208801519150808211156200113357600080fd5b6200114189838a0162001001565b955060408801519150808211156200115857600080fd5b50620011678882890162001001565b935050620011786060870162000fe4565b9150620011886080870162000fe4565b90509295509295909350565b60008219821115620011aa57620011aa62001224565b500190565b600082821015620011c457620011c462001224565b500390565b600181811c90821680620011de57607f821691505b602082108114156200120057634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200121d576200121d62001224565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b614e3b806200128c6000396000f3fe6080604052600436106104315760003560e01c8063853828b611610229578063c235150d1161012e578063dab5f340116100b6578063e985e9c51161007a578063e985e9c514610d15578063ebf0c71714610d35578063f2a6556714610d4b578063f2fde38b14610d69578063f73841ce14610d8957600080fd5b8063dab5f34014610c92578063e355063214610cb2578063e367099314610cd5578063e643d86414610ceb578063e78c627e14610d0057600080fd5b8063cd3fe6fd116100fd578063cd3fe6fd14610bfe578063d41edb1814610c13578063d4556a0414610c33578063d5be08af14610c52578063d6a714d514610c7257600080fd5b8063c235150d14610b85578063c54e73e314610b9b578063c87b56dd14610bbb578063c955deba14610bdb57600080fd5b80639fa5fa88116101b1578063b18ca2be11610180578063b18ca2be14610af0578063b2dc5dc314610b10578063b7e2f80814610b30578063b88d4fde14610b45578063bd6a4b4e14610b6557600080fd5b80639fa5fa8814610a65578063a22cb46514610a85578063a714e56d14610aa5578063b18b78dd14610ad257600080fd5b80639168f7f9116101f85780639168f7f9146109d057806395d89b41146109f0578063979c7d6514610a055780639dc29fac14610a255780639e6a054314610a4557600080fd5b8063853828b61461095b57806389cba7f7146109705780638da5cb5b146109855780638fa2f9eb146109a357600080fd5b8063438b63001161033a578063641ce140116102c25780637adbf973116102865780637adbf973146108b35780637d8d1667146108d35780637dc0d1d0146108ed578063833891d31461090d57806383b215361461094357600080fd5b8063641ce140146107ff578063659e84901461081257806370a0823114610832578063715018a61461086857806378dd69f71461087d57600080fd5b80634f6ccce7116103095780634f6ccce71461074a57806355f804b31461076a5780635c975abb1461078a578063601ca23f146107a95780636352211e146107c957600080fd5b8063438b6300146106ba578063474e92b5146106e757806349fb340d146106fc5780634f558e791461071257600080fd5b806323b872dd116103bd5780632f745c591161038c5780632f745c591461060057806330f7d71b14610620578063350829331461064d57806338266b221461066d57806342842e0e1461069a57600080fd5b806323b872dd1461058b57806328412d70146105ab5780632872b052146105c05780632e1a7d4d146105e057600080fd5b8063095ea7b311610404578063095ea7b3146104e757806315ed1fd31461050757806318160ddd146105275780632153f88414610546578063217997951461055e57600080fd5b806301ffc9a714610436578063034601ec1461046b57806306fdde031461048d578063081812fc146104af575b600080fd5b34801561044257600080fd5b506104566104513660046146d7565b610da9565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b5061048b6104863660046141ce565b610e16565b005b34801561049957600080fd5b506104a2611112565b60405161046291906149e7565b3480156104bb57600080fd5b506104cf6104ca3660046146be565b6111a4565b6040516001600160a01b039091168152602001610462565b3480156104f357600080fd5b5061048b6105023660046143c5565b611239565b34801561051357600080fd5b5061048b6105223660046146a3565b6113a5565b34801561053357600080fd5b50601d545b604051908152602001610462565b34801561055257600080fd5b50600d5460ff16610456565b34801561056a57600080fd5b506105386105793660046146be565b60009081526009602052604090205490565b34801561059757600080fd5b5061048b6105a6366004614262565b6113e2565b3480156105b757600080fd5b50610538600181565b3480156105cc57600080fd5b5061048b6105db3660046144a6565b611420565b3480156105ec57600080fd5b5061048b6105fb3660046146be565b611688565b34801561060c57600080fd5b5061053861061b3660046143c5565b61182a565b34801561062c57600080fd5b5061053861063b3660046146be565b60009081526007602052604090205490565b34801561065957600080fd5b5061048b610668366004614154565b6118ce565b34801561067957600080fd5b5061068d610688366004614154565b61191a565b604051610462919061498e565b3480156106a657600080fd5b5061048b6106b5366004614262565b611a0d565b3480156106c657600080fd5b506106da6106d5366004614154565b611a7c565b60405161046291906149d4565b3480156106f357600080fd5b50610538600081565b34801561070857600080fd5b50610538600f5481565b34801561071e57600080fd5b5061045661072d3660046146be565b6000908152601760205260409020546001600160a01b0316151590565b34801561075657600080fd5b506105386107653660046146be565b611b33565b34801561077657600080fd5b5061048b610785366004614711565b611bc6565b34801561079657600080fd5b50600054600160a01b900460ff16610456565b3480156107b557600080fd5b506002546104cf906001600160a01b031681565b3480156107d557600080fd5b506104cf6107e43660046146be565b6000908152601760205260409020546001600160a01b031690565b61048b61080d3660046143f1565b611c07565b34801561081e57600080fd5b5061068d61082d3660046146be565b6121b1565b34801561083e57600080fd5b5061053861084d366004614154565b6001600160a01b031660009081526018602052604090205490565b34801561087457600080fd5b5061048b612407565b34801561088957600080fd5b50610538610898366004614154565b6001600160a01b03166000908152600e602052604090205490565b3480156108bf57600080fd5b5061048b6108ce366004614154565b61243d565b3480156108df57600080fd5b50601f546104569060ff1681565b3480156108f957600080fd5b506003546104cf906001600160a01b031681565b34801561091957600080fd5b50610538610928366004614154565b6001600160a01b031660009081526013602052604090205490565b34801561094f57600080fd5b5060165460ff16610456565b34801561096757600080fd5b5061048b612489565b34801561097c57600080fd5b50610538600381565b34801561099157600080fd5b506000546001600160a01b03166104cf565b3480156109af57600080fd5b506105386109be3660046146be565b6000908152600a602052604090205490565b3480156109dc57600080fd5b506104566109eb3660046146be565b6125d0565b3480156109fc57600080fd5b506104a26125e8565b348015610a1157600080fd5b5061048b610a203660046146a3565b6125f7565b348015610a3157600080fd5b5061048b610a403660046143c5565b61263b565b348015610a5157600080fd5b5061048b610a603660046144db565b6127ff565b348015610a7157600080fd5b5061048b610a803660046146be565b612b6d565b348015610a9157600080fd5b5061048b610aa0366004614390565b612bb7565b348015610ab157600080fd5b50610538610ac03660046146be565b60009081526008602052604090205490565b348015610ade57600080fd5b506003546001600160a01b03166104cf565b348015610afc57600080fd5b5061048b610b0b3660046143c5565b612c8c565b348015610b1c57600080fd5b5061048b610b2b366004614341565b612da1565b348015610b3c57600080fd5b50610538600281565b348015610b5157600080fd5b5061048b610b603660046142a3565b613053565b348015610b7157600080fd5b5061048b610b803660046147a5565b6130e9565b348015610b9157600080fd5b50610538600c5481565b348015610ba757600080fd5b5061048b610bb63660046146a3565b6133b7565b348015610bc757600080fd5b506104a2610bd63660046146be565b6133f4565b348015610be757600080fd5b50610456610bf63660046146be565b61271a101590565b348015610c0a57600080fd5b50610538600481565b348015610c1f57600080fd5b5061048b610c2e3660046146be565b613534565b348015610c3f57600080fd5b50601f5461045690610100900460ff1681565b348015610c5e57600080fd5b50610456610c6d3660046146be565b613563565b348015610c7e57600080fd5b5061048b610c8d3660046146be565b61357b565b348015610c9e57600080fd5b5061048b610cad3660046146be565b6135aa565b348015610cbe57600080fd5b50610456610ccd3660046146be565b6138ae101590565b348015610ce157600080fd5b5061053860145481565b348015610cf757600080fd5b50610538600581565b348015610d0c57600080fd5b50610538600681565b348015610d2157600080fd5b50610456610d30366004614195565b6135d9565b348015610d4157600080fd5b5061053860155481565b348015610d5757600080fd5b506002546001600160a01b03166104cf565b348015610d7557600080fd5b5061048b610d84366004614154565b613607565b348015610d9557600080fd5b50610538610da43660046146be565b61369f565b60006001600160e01b0319821663780e9d6360e01b1480610dda57506001600160e01b03198216634aefe8ef60e01b145b80610df557506001600160e01b03198216635b5e139f60e01b145b80610e1057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000543390600160a01b900460ff1615610e4b5760405162461bcd60e51b8152600401610e4290614a4c565b60405180910390fd5b806001600160a01b0316856001600160a01b031614158015610e745750610e7285826135d9565b155b15610ee95760005b82811015610ee757816001600160a01b0316610eaf858584818110610ea357610ea3614d6e565b905060200201356111a4565b6001600160a01b031614610ed55760405162461bcd60e51b8152600401610e4290614b96565b80610edf81614cfd565b915050610e7c565b505b60005b8281101561110a57856001600160a01b031660176000868685818110610f1457610f14614d6e565b60209081029290920135835250810191909152604001600020546001600160a01b031614610f4157600080fd5b610f648686868685818110610f5857610f58614d6e565b905060200201356137d1565b6001600160a01b0386166000908152601860205260408120805460019290610f8d908490614c7f565b90915550506001600160a01b0385166000908152601860205260408120805460019290610fbb908490614c34565b9091555085905060176000868685818110610fd857610fd8614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083838281811061102357611023614d6e565b90506020020135856001600160a01b0316876001600160a01b0316600080516020614de683398151915260405160405180910390a460006019600086868581811061107057611070614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506110dc86868686858181106110c0576110c0614d6e565b90506020020135604051806020016040528060008152506138c2565b6110f85760405162461bcd60e51b8152600401610e42906149fa565b8061110281614cfd565b915050610eec565b505050505050565b60606005805461112190614cc2565b80601f016020809104026020016040519081016040528092919081815260200182805461114d90614cc2565b801561119a5780601f1061116f5761010080835404028352916020019161119a565b820191906000526020600020905b81548152906001019060200180831161117d57829003601f168201915b5050505050905090565b6000818152601760205260408120546001600160a01b031661121d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610e42565b506000908152601960205260409020546001600160a01b031690565b6000818152601760205260409020546001600160a01b039081169083168114156112af5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610e42565b336001600160a01b03821614806112cb57506112cb81336135d9565b61133d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610e42565b600082815260196020908152604080832080546001600160a01b0319166001600160a01b038881169182179092556017909352818420549151869492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610e4290614ae3565b601f805460ff1916911515919091179055565b6000543390600160a01b900460ff161561140e5760405162461bcd60e51b8152600401610e4290614a4c565b61141a848483856139d0565b50505050565b3361142a83613563565b6114855760405162461bcd60e51b815260206004820152602660248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f7420626164604482015265206170706c6560d01b6064820152608401610e42565b6114918261271a101590565b6114e75760405162461bcd60e51b815260206004820152602160248201527f4572726f723a20746f6b656e2070726f766964656420697320616e206170706c6044820152606560f81b6064820152608401610e42565b6000838152601760205260409020546001600160a01b03828116911614806115285750806001600160a01b031661151d846111a4565b6001600160a01b0316145b80611538575061153884826135d9565b6115545760405162461bcd60e51b8152600401610e4290614b96565b61155e848461263b565b611568848361263b565b60056000527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb546009602052600080516020614dc6833981519152546115af906001614c34565b11156115cd5760405162461bcd60e51b8152600401610e4290614a8e565b600560009081526009602052600080516020614dc6833981519152546011546115f69190614c34565b9050611604600086836137d1565b600081815260176020908152604080832080546001600160a01b0319166001600160a01b038a1690811790915583526018909152812080546001929061164b908490614c34565b9091555050600560009081526009602052600080516020614dc683398151915280546001929061167c908490614c34565b90915550505050505050565b6000546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156116d55760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806117185760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b8181116117725760405162461bcd60e51b815260206004820152602260248201527f62616c616e6365206d757374206265207375706572696f7220746f20616d6f756044820152611b9d60f21b6064820152608401610e42565b60408051600080825260208201909252339084906040516117939190614906565b60006040518083038185875af1925050503d80600081146117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b50509050806118215760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b50506001805550565b6001600160a01b03821660009081526018602052604081205482106118a55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610e42565b506001600160a01b03919091166000908152601b60209081526040808320938352929052205490565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610e4290614ae3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516002808252606082810190935260009190816020015b6060815260200190600190039081611934579050509050600061195684611a7c565b6040805160028082526060820183529293506000929091602083019080368337019050509050611985601d5490565b8160008151811061199857611998614d6e565b602002602001018181525050601454816001815181106119ba576119ba614d6e565b60200260200101818152505081836000815181106119da576119da614d6e565b602002602001018190525080836001815181106119f9576119f9614d6e565b602090810291909101015250909392505050565b6000543390600160a01b900460ff1615611a395760405162461bcd60e51b8152600401610e4290614a4c565b611a45848483856139d0565b611a60848484604051806020016040528060008152506138c2565b61141a5760405162461bcd60e51b8152600401610e42906149fa565b60606000611a9f836001600160a01b031660009081526018602052604090205490565b90506000816001600160401b03811115611abb57611abb614d84565b604051908082528060200260200182016040528015611ae4578160200160208202803683370190505b50905060005b82811015611b2b57611afc858261182a565b828281518110611b0e57611b0e614d6e565b602090810291909101015280611b2381614cfd565b915050611aea565b509392505050565b6000611b3e601d5490565b8210611ba15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610e42565b601d8281548110611bb457611bb4614d6e565b90600052602060002001549050919050565b6000546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610e4290614ae3565b8051611c03906004906020840190614039565b5050565b60026001541415611c2a5760405162461bcd60e51b8152600401610e4290614b5f565b60026001556014543390611c3f908490614c60565b341015611ca25760405162461bcd60e51b815260206004820152602b60248201527f4d616b65207375726520796f752063616e206166666f726420302e303920657460448201526a34103832b9103a37b5b2b760a91b6064820152608401610e42565b6001600160a01b038416611cf85760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e42565b600054600160a01b900460ff1615611d225760405162461bcd60e51b8152600401610e4290614a4c565b600d5460ff161515600114611d985760405162461bcd60e51b815260206004820152603660248201527f4572726f723a205761697420756e74696c2061697264726f7070696e6720746f60448201527508151c99585cdd5c9e481a185cc8199a5b9a5cda195960521b6064820152608401610e42565b60165460ff16151560011415611eda576001600160a01b0381166000908152600e6020526040902054600390611dcf908590614c34565b1115611e335760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b6560448201526c6e732061742070726573616c6560981b6064820152608401610e42565b6015546040516bffffffffffffffffffffffff19606084901b166020820152611e7691849160340160405160208183030381529060405280519060200120613b28565b611ed55760405162461bcd60e51b815260206004820152602a60248201527f796f7520617265206e6f7420616c6c6f77656420746f206d696e7420647572696044820152696e672070726573616c6560b01b6064820152608401610e42565b611f5a565b600f546001600160a01b038216600090815260106020526040902054611f01908590614c34565b1115611f5a5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b656044820152616e7360f01b6064820152608401610e42565b6000611f6584613b3e565b9050600081600081518110611f7c57611f7c614d6e565b60200260200101519050600082600181518110611f9b57611f9b614d6e565b6020026020010151905060005b8681101561213257611fd5600089858481518110611fc857611fc8614d6e565b60200260200101516137d1565b8760176000858481518110611fec57611fec614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928b16835260189091528120805460019290612042908490614c34565b9250508190555081818151811061205b5761205b614d6e565b60200260200101516007600085848151811061207957612079614d6e565b60200260200101518152602001908152602001600020819055506001600960008484815181106120ab576120ab614d6e565b6020026020010151815260200190815260200160002060008282546120d09190614c34565b925050819055508281815181106120e9576120e9614d6e565b6020026020010151886001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a48061212a81614cfd565b915050611fa8565b5060165460ff16151560011415612176576001600160a01b0384166000908152600e60205260408120805488929061216b908490614c34565b909155506121a49050565b6001600160a01b0384166000908152601060205260408120805488929061219e908490614c34565b90915550505b5050600180555050505050565b604080516002808252606082810190935260009190816020015b60608152602001906001900390816121cb5790505090506000836001600160401b038111156121fc576121fc614d84565b604051908082528060200260200182016040528015612225578160200160208202803683370190505b5090506000846001600160401b0381111561224257612242614d84565b60405190808252806020026020018201604052801561226b578160200160208202803683370190505b5090506000808061227d600143614c7f565b4090505b8783146123bd57600061271b4283336040805160208101949094528301919091526bffffffffffffffffffffffff19606091821b1690820152607481018590526094016040516020818303038152906040528051906020012060001c6122e79190614d18565b90506000805b8581101561232d5787818151811061230757612307614d6e565b602002602001015183141561231b57600191505b8061232581614cfd565b9150506122ed565b506000828152601760205260409020546001600160a01b0316158015612351575080155b156123a9578187868151811061236957612369614d6e565b60200260200101818152505061237e8261369f565b86868151811061239057612390614d6e565b60209081029190910101526123a6600186614c34565b94505b6123b4600185614c34565b93505050612281565b84866000815181106123d1576123d1614d6e565b602002602001018190525083866001815181106123f0576123f0614d6e565b602090810291909101015250939695505050505050565b6000546001600160a01b031633146124315760405162461bcd60e51b8152600401610e4290614ae3565b61243b6000613cee565b565b6000546001600160a01b031633146124675760405162461bcd60e51b8152600401610e4290614ae3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124b35760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156124d65760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806125195760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b604080516000808252602082019092523390839060405161253a9190614906565b60006040518083038185875af1925050503d8060008114612577576040519150601f19603f3d011682016040523d82523d6000602084013e61257c565b606091505b50509050806125c85760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b505060018055565b600061271b8210158015610e105750506132d2101590565b60606006805461112190614cc2565b6000546001600160a01b031633146126215760405162461bcd60e51b8152600401610e4290614ae3565b601f80549115156101000261ff0019909216919091179055565b6000543390600160a01b900460ff16156126675760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614806126a05750806001600160a01b0316612695836111a4565b6001600160a01b0316145b806126b057506126b083826135d9565b6126cc5760405162461bcd60e51b8152600401610e4290614b96565b6001600160a01b03831661272c5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e42565b6000828152601760205260409020546001600160a01b038481169116146127655760405162461bcd60e51b8152600401610e4290614b18565b612771836000846137d1565b600082815260176020908152604080832080546001600160a01b03191690556001600160a01b0386168352601890915281208054600192906127b4908490614c7f565b909155505060405182906000906001600160a01b03861690600080516020614de6833981519152908390a450600090815260196020526040902080546001600160a01b031916905550565b6000546001600160a01b031633146128295760405162461bcd60e51b8152600401610e4290614ae3565b6002546040805163a09ec3ef60e01b815290516000926001600160a01b03169163a09ec3ef916004808301926020929190829003018186803b15801561286e57600080fd5b505afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614178565b600054909150600160a01b900460ff16156128d35760405162461bcd60e51b8152600401610e4290614a4c565b6000826000815181106128e8576128e8614d6e565b6020026020010151905060008360018151811061290757612907614d6e565b60200260200101519050815181511461291f57600080fd5b8151600c54600b54612932908390614c34565b11156129a65760405162461bcd60e51b815260206004820152603b60248201527f4572726f723a20796f752061726520657863656564696e6720746865206d617860448201527f2061697264726f7020616d6f756e7420746f20547265617375727900000000006064820152608401610e42565b60005b8351811015612b34576129ca600086868481518110611fc857611fc8614d6e565b6001600160a01b03851660009081526018602052604081208054600192906129f3908490614c34565b925050819055508460176000868481518110612a1157612a11614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110612a5d57612a5d614d6e565b602002602001015160076000868481518110612a7b57612a7b614d6e565b6020026020010151815260200190815260200160002081905550600160096000858481518110612aad57612aad614d6e565b602002602001015181526020019081526020016000206000828254612ad29190614c34565b92505081905550838181518110612aeb57612aeb614d6e565b6020026020010151856001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a480612b2c81614cfd565b9150506129a9565b5080600b6000828254612b479190614c34565b9091555050600c54600b541415612b6657600d805460ff191660011790555b5050505050565b6000546001600160a01b03163314612b975760405162461bcd60e51b8152600401610e4290614ae3565b600c819055600b54811415612bb457600d805460ff191660011790555b50565b336001600160a01b0383161415612c205760405162461bcd60e51b815260206004820152602760248201527f4572726f723a2073657474696e6720617070726f76616c20737461747573206660448201526637b91039b2b63360c91b6064820152608401610e42565b336000818152601a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b33612c96826125d0565b612cf75760405162461bcd60e51b815260206004820152602c60248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f742061736360448201526b656e73696f6e206170706c6560a01b6064820152608401610e42565b6000828152601760205260409020546001600160a01b0382811691161480612d385750806001600160a01b0316612d2d836111a4565b6001600160a01b0316145b80612d485750612d4883826135d9565b612d645760405162461bcd60e51b8152600401610e4290614b96565b612d6e838361263b565b6001600160a01b0383166000908152601360205260408120805460019290612d97908490614c34565b9091555050505050565b6000543390600160a01b900460ff1615612dcd5760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614158015612df65750612df483826135d9565b155b15612e6d5760005b8251811015612e6b57816001600160a01b0316612e33848381518110612e2657612e26614d6e565b60200260200101516111a4565b6001600160a01b031614612e595760405162461bcd60e51b8152600401610e4290614b96565b80612e6381614cfd565b915050612dfe565b505b60005b8251811015612eec57836001600160a01b031660176000858481518110612e9957612e99614d6e565b6020908102919091018101518252810191909152604001600020546001600160a01b031614612eda5760405162461bcd60e51b8152600401610e4290614b18565b80612ee481614cfd565b915050612e70565b5060005b8251811015612fe157612f11846000858481518110611fc857611fc8614d6e565b600060176000858481518110612f2957612f29614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928716835260189091528120805460019290612f7f908490614c7f565b92505081905550828181518110612f9857612f98614d6e565b602002602001015160006001600160a01b0316856001600160a01b0316600080516020614de683398151915260405160405180910390a480612fd981614cfd565b915050612ef0565b5060005b825181101561141a5760006019600085848151811061300657613006614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061304b90614cfd565b915050612fe5565b6000543390600160a01b900460ff161561307f5760405162461bcd60e51b8152600401610e4290614a4c565b61308b868683876139d0565b6130cd86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138c292505050565b61110a5760405162461bcd60e51b8152600401610e42906149fa565b6000546001600160a01b031633146131135760405162461bcd60e51b8152600401610e4290614ae3565b828151146131635760405162461bcd60e51b815260206004820152601e60248201527f616d6f756e74206e6f74206567616c20746f206c697374206c656e67746800006044820152606401610e42565b60058214806131725750600682145b6131cd5760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2054686520746f6b656e20636c617373206973206e6f7420616e604482015265206170706c6560d01b6064820152608401610e42565b6000828152600860209081526040808320546009909252909120546131f3908590614c34565b11156132115760405162461bcd60e51b8152600401610e4290614a8e565b6000600583141561324a5760056000526009602052600080516020614dc6833981519152546011546132439190614c34565b9050613286565b600660005260096020527fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f546012546132839190614c34565b90505b60005b825181101561338d57600061329e8284614c34565b90506132c560008584815181106132b7576132b7614d6e565b6020026020010151836137d1565b8382815181106132d7576132d7614d6e565b60200260200101516017600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060016018600086858151811061332e5761332e614d6e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133659190614c34565b909155505060009081526007602052604090208490558061338581614cfd565b915050613289565b50600083815260096020526040812080548692906133ac908490614c34565b909155505050505050565b6000546001600160a01b031633146133e15760405162461bcd60e51b8152600401610e4290614ae3565b6016805460ff1916911515919091179055565b6000818152601760205260409020546060906001600160a01b03166134735760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610e42565b60006004805461348290614cc2565b80601f01602080910402602001604051908101604052809291908181526020018280546134ae90614cc2565b80156134fb5780601f106134d0576101008083540402835291602001916134fb565b820191906000526020600020905b8154815290600101906020018083116134de57829003601f168201915b505050505090508061350c84613d3e565b60405160200161351d929190614922565b604051602081830303815290604052915050919050565b6000546001600160a01b0316331461355e5760405162461bcd60e51b8152600401610e4290614ae3565b601455565b60006132d38210158015610e105750506138ae101590565b6000546001600160a01b031633146135a55760405162461bcd60e51b8152600401610e4290614ae3565b600f55565b6000546001600160a01b031633146135d45760405162461bcd60e51b8152600401610e4290614ae3565b601555565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b031633146136315760405162461bcd60e51b8152600401610e4290614ae3565b6001600160a01b0381166136965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e42565b612bb481613cee565b6000816136ae57506000919050565b600182101580156136c0575060088211155b156136cd57506001919050565b8160091480156136dd575081600a145b156136ea57506002919050565b600b82101580156136fd57506113928211155b1561370a57506003919050565b611393821015801561371e575061271a8211155b1561372b57506004919050565b61271b821015801561373f57506132d28211155b1561374c57506005919050565b6132d3821015801561376057506138ae8211155b1561376d57506006919050565b60405162461bcd60e51b815260206004820152602e60248201527f5468697320494420646f6573206e6f742062656c6f6e6720746f20612076616c60448201526d696420746f6b656e20636c61737360901b6064820152608401610e42565b919050565b6001600160a01b03831661382c5761382781601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b61384f565b816001600160a01b0316836001600160a01b03161461384f5761384f8382613e3b565b6001600160a01b03821661386b5761386681613ee6565b505050565b826001600160a01b0316826001600160a01b031614613866576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b60006001600160a01b0384163b156139c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613906903390899088908890600401614951565b602060405180830381600087803b15801561392057600080fd5b505af1925050508015613950575060408051601f3d908101601f1916820190925261394d918101906146f4565b60015b6139aa573d80801561397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b5080516139a25760405162461bcd60e51b8152600401610e42906149fa565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506139c8565b5060015b949350505050565b6000818152601760205260409020546001600160a01b038581169116146139f657600080fd5b816001600160a01b0316846001600160a01b03161480613a2f5750816001600160a01b0316613a24826111a4565b6001600160a01b0316145b80613a3f5750613a3f84836135d9565b613a5b5760405162461bcd60e51b8152600401610e4290614b96565b613a668484836137d1565b6001600160a01b0384166000908152601860205260408120805460019290613a8f908490614c7f565b90915550506001600160a01b0383166000908152601860205260408120805460019290613abd908490614c34565b909155505060008181526017602052604080822080546001600160a01b0319166001600160a01b038781169182179092559151849391881691600080516020614de683398151915291a4600090815260196020526040902080546001600160a01b0319169055505050565b600082613b358584613f95565b14949350505050565b601f5460609060ff16158015613b5c5750601f54610100900460ff16155b15613c3857600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bb157600080fd5b505af1925050508015613be657506040513d6000823e601f3d908101601f19168201604052613be39190810190614592565b60015b610e10576000613bf5836121b1565b90507fc36a191bf96c0e51ac78765045a165404afd7594ad423922b0e84d0ee2f39afa814233604051613c2a939291906149a1565b60405180910390a192915050565b601f5460ff16158015613c525750601f54610100900460ff165b15613ce357600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca757600080fd5b505af1158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190614592565b6000613bf5836121b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081613d625750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613d8c5780613d7681614cfd565b9150613d859050600a83614c4c565b9150613d66565b6000816001600160401b03811115613da657613da6614d84565b6040519080825280601f01601f191660200182016040528015613dd0576020820181803683370190505b5090505b84156139c857613de5600183614c7f565b9150613df2600a86614d18565b613dfd906030614c34565b60f81b818381518110613e1257613e12614d6e565b60200101906001600160f81b031916908160001a905350613e34600a86614c4c565b9450613dd4565b6001600160a01b038216600090815260186020526040812054613e6090600190614c7f565b6000838152601c6020526040902054909150808214613eb3576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d54600090613ef890600190614c7f565b6000838152601e6020526040812054601d8054939450909284908110613f2057613f20614d6e565b9060005260206000200154905080601d8381548110613f4157613f41614d6e565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d805480613f7957613f79614d58565b6001900381819060005260206000200160009055905550505050565b600081815b8451811015611b2b576000858281518110613fb757613fb7614d6e565b60200260200101519050808311613ff9576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250614026565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061403181614cfd565b915050613f9a565b82805461404590614cc2565b90600052602060002090601f01602090048101928261406757600085556140ad565b82601f1061408057805160ff19168380011785556140ad565b828001600101855582156140ad579182015b828111156140ad578251825591602001919060010190614092565b506140b99291506140bd565b5090565b5b808211156140b957600081556001016140be565b600082601f8301126140e357600080fd5b813560206140f86140f383614c11565b614be1565b80838252828201915082860187848660051b890101111561411857600080fd5b60005b858110156141375781358452928401929084019060010161411b565b5090979650505050505050565b803580151581146137cc57600080fd5b60006020828403121561416657600080fd5b813561417181614d9a565b9392505050565b60006020828403121561418a57600080fd5b815161417181614d9a565b600080604083850312156141a857600080fd5b82356141b381614d9a565b915060208301356141c381614d9a565b809150509250929050565b600080600080606085870312156141e457600080fd5b84356141ef81614d9a565b935060208501356141ff81614d9a565b925060408501356001600160401b038082111561421b57600080fd5b818701915087601f83011261422f57600080fd5b81358181111561423e57600080fd5b8860208260051b850101111561425357600080fd5b95989497505060200194505050565b60008060006060848603121561427757600080fd5b833561428281614d9a565b9250602084013561429281614d9a565b929592945050506040919091013590565b6000806000806000608086880312156142bb57600080fd5b85356142c681614d9a565b945060208601356142d681614d9a565b93506040860135925060608601356001600160401b03808211156142f957600080fd5b818801915088601f83011261430d57600080fd5b81358181111561431c57600080fd5b89602082850101111561432e57600080fd5b9699959850939650602001949392505050565b6000806040838503121561435457600080fd5b823561435f81614d9a565b915060208301356001600160401b0381111561437a57600080fd5b614386858286016140d2565b9150509250929050565b600080604083850312156143a357600080fd5b82356143ae81614d9a565b91506143bc60208401614144565b90509250929050565b600080604083850312156143d857600080fd5b82356143e381614d9a565b946020939093013593505050565b60008060006060848603121561440657600080fd5b833561441181614d9a565b9250602084810135925060408501356001600160401b0381111561443457600080fd5b8501601f8101871361444557600080fd5b80356144536140f382614c11565b8082825284820191508484018a868560051b870101111561447357600080fd5b600094505b83851015614496578035835260019490940193918501918501614478565b5080955050505050509250925092565b6000806000606084860312156144bb57600080fd5b83356144c681614d9a565b95602085013595506040909401359392505050565b600060208083850312156144ee57600080fd5b82356001600160401b038082111561450557600080fd5b818501915085601f83011261451957600080fd5b81356145276140f382614c11565b80828252858201915085850189878560051b880101111561454757600080fd5b6000805b8581101561458257823587811115614561578283fd5b61456f8d8b838c01016140d2565b865250938801939188019160010161454b565b50919a9950505050505050505050565b600060208083850312156145a557600080fd5b82516001600160401b03808211156145bc57600080fd5b818501915085601f8301126145d057600080fd5b81516145de6140f382614c11565b80828252858201915085850189878560051b88010111156145fe57600080fd5b60005b848110156146945781518681111561461857600080fd5b8701603f81018c1361462957600080fd5b888101516146396140f382614c11565b808282528b82019150604084018f60408560051b870101111561465b57600080fd5b600094505b8385101561467e578051835260019490940193918c01918c01614660565b5087525050509287019290870190600101614601565b50909998505050505050505050565b6000602082840312156146b557600080fd5b61417182614144565b6000602082840312156146d057600080fd5b5035919050565b6000602082840312156146e957600080fd5b813561417181614daf565b60006020828403121561470657600080fd5b815161417181614daf565b6000602080838503121561472457600080fd5b82356001600160401b038082111561473b57600080fd5b818501915085601f83011261474f57600080fd5b81358181111561476157614761614d84565b614773601f8201601f19168501614be1565b9150808252868482850101111561478957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806000606084860312156147ba57600080fd5b83359250602080850135925060408501356001600160401b038111156147df57600080fd5b8501601f810187136147f057600080fd5b80356147fe6140f382614c11565b8082825284820191508484018a868560051b870101111561481e57600080fd5b600094505b8385101561449657803561483681614d9a565b835260019490940193918501918501614823565b600081518084526020808501808196508360051b8101915082860160005b8581101561489257828403895261488084835161489f565b98850198935090840190600101614868565b5091979650505050505050565b600081518084526020808501945080840160005b838110156148cf578151875295820195908201906001016148b3565b509495945050505050565b600081518084526148f2816020860160208601614c96565b601f01601f19169290920160200192915050565b60008251614918818460208701614c96565b9190910192915050565b60008351614934818460208801614c96565b835190830190614948818360208801614c96565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614984908301846148da565b9695505050505050565b602081526000614171602083018461484a565b6060815260006149b4606083018661484a565b6020830194909452506001600160a01b0391909116604090910152919050565b602081526000614171602083018461489f565b60208152600061417160208301846148da565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526022908201527f4572726f723a20746f6b656e207472616e73666572207768696c652070617573604082015261195960f21b606082015260800190565b60208082526035908201527f4572726f723a20596f75206578636565642074686520737570706c792063617060408201527420666f722074686973206170706c6520636c61737360581b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f4572726f723a206163636f756e74206973206e6f74206f776e6572206f6620746040820152661bdad95b881a5960ca1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f4572726f723a2063616c6c6572206973206e656974686572206f776e6572206e60408201526a1bdc88185c1c1c9bdd995960aa1b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715614c0957614c09614d84565b604052919050565b60006001600160401b03821115614c2a57614c2a614d84565b5060051b60200190565b60008219821115614c4757614c47614d2c565b500190565b600082614c5b57614c5b614d42565b500490565b6000816000190483118215151615614c7a57614c7a614d2c565b500290565b600082821015614c9157614c91614d2c565b500390565b60005b83811015614cb1578181015183820152602001614c99565b8381111561141a5750506000910152565b600181811c90821680614cd657607f821691505b60208210811415614cf757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614d1157614d11614d2c565b5060010190565b600082614d2757614d27614d42565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612bb457600080fd5b6001600160e01b031981168114612bb457600080fdfe74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb60000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc000000000000000000000000000000000000000000000000000000000000000e446976696e6520416e617263687900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024441000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d344c6567596d73486f45695a536a5736632f000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104315760003560e01c8063853828b611610229578063c235150d1161012e578063dab5f340116100b6578063e985e9c51161007a578063e985e9c514610d15578063ebf0c71714610d35578063f2a6556714610d4b578063f2fde38b14610d69578063f73841ce14610d8957600080fd5b8063dab5f34014610c92578063e355063214610cb2578063e367099314610cd5578063e643d86414610ceb578063e78c627e14610d0057600080fd5b8063cd3fe6fd116100fd578063cd3fe6fd14610bfe578063d41edb1814610c13578063d4556a0414610c33578063d5be08af14610c52578063d6a714d514610c7257600080fd5b8063c235150d14610b85578063c54e73e314610b9b578063c87b56dd14610bbb578063c955deba14610bdb57600080fd5b80639fa5fa88116101b1578063b18ca2be11610180578063b18ca2be14610af0578063b2dc5dc314610b10578063b7e2f80814610b30578063b88d4fde14610b45578063bd6a4b4e14610b6557600080fd5b80639fa5fa8814610a65578063a22cb46514610a85578063a714e56d14610aa5578063b18b78dd14610ad257600080fd5b80639168f7f9116101f85780639168f7f9146109d057806395d89b41146109f0578063979c7d6514610a055780639dc29fac14610a255780639e6a054314610a4557600080fd5b8063853828b61461095b57806389cba7f7146109705780638da5cb5b146109855780638fa2f9eb146109a357600080fd5b8063438b63001161033a578063641ce140116102c25780637adbf973116102865780637adbf973146108b35780637d8d1667146108d35780637dc0d1d0146108ed578063833891d31461090d57806383b215361461094357600080fd5b8063641ce140146107ff578063659e84901461081257806370a0823114610832578063715018a61461086857806378dd69f71461087d57600080fd5b80634f6ccce7116103095780634f6ccce71461074a57806355f804b31461076a5780635c975abb1461078a578063601ca23f146107a95780636352211e146107c957600080fd5b8063438b6300146106ba578063474e92b5146106e757806349fb340d146106fc5780634f558e791461071257600080fd5b806323b872dd116103bd5780632f745c591161038c5780632f745c591461060057806330f7d71b14610620578063350829331461064d57806338266b221461066d57806342842e0e1461069a57600080fd5b806323b872dd1461058b57806328412d70146105ab5780632872b052146105c05780632e1a7d4d146105e057600080fd5b8063095ea7b311610404578063095ea7b3146104e757806315ed1fd31461050757806318160ddd146105275780632153f88414610546578063217997951461055e57600080fd5b806301ffc9a714610436578063034601ec1461046b57806306fdde031461048d578063081812fc146104af575b600080fd5b34801561044257600080fd5b506104566104513660046146d7565b610da9565b60405190151581526020015b60405180910390f35b34801561047757600080fd5b5061048b6104863660046141ce565b610e16565b005b34801561049957600080fd5b506104a2611112565b60405161046291906149e7565b3480156104bb57600080fd5b506104cf6104ca3660046146be565b6111a4565b6040516001600160a01b039091168152602001610462565b3480156104f357600080fd5b5061048b6105023660046143c5565b611239565b34801561051357600080fd5b5061048b6105223660046146a3565b6113a5565b34801561053357600080fd5b50601d545b604051908152602001610462565b34801561055257600080fd5b50600d5460ff16610456565b34801561056a57600080fd5b506105386105793660046146be565b60009081526009602052604090205490565b34801561059757600080fd5b5061048b6105a6366004614262565b6113e2565b3480156105b757600080fd5b50610538600181565b3480156105cc57600080fd5b5061048b6105db3660046144a6565b611420565b3480156105ec57600080fd5b5061048b6105fb3660046146be565b611688565b34801561060c57600080fd5b5061053861061b3660046143c5565b61182a565b34801561062c57600080fd5b5061053861063b3660046146be565b60009081526007602052604090205490565b34801561065957600080fd5b5061048b610668366004614154565b6118ce565b34801561067957600080fd5b5061068d610688366004614154565b61191a565b604051610462919061498e565b3480156106a657600080fd5b5061048b6106b5366004614262565b611a0d565b3480156106c657600080fd5b506106da6106d5366004614154565b611a7c565b60405161046291906149d4565b3480156106f357600080fd5b50610538600081565b34801561070857600080fd5b50610538600f5481565b34801561071e57600080fd5b5061045661072d3660046146be565b6000908152601760205260409020546001600160a01b0316151590565b34801561075657600080fd5b506105386107653660046146be565b611b33565b34801561077657600080fd5b5061048b610785366004614711565b611bc6565b34801561079657600080fd5b50600054600160a01b900460ff16610456565b3480156107b557600080fd5b506002546104cf906001600160a01b031681565b3480156107d557600080fd5b506104cf6107e43660046146be565b6000908152601760205260409020546001600160a01b031690565b61048b61080d3660046143f1565b611c07565b34801561081e57600080fd5b5061068d61082d3660046146be565b6121b1565b34801561083e57600080fd5b5061053861084d366004614154565b6001600160a01b031660009081526018602052604090205490565b34801561087457600080fd5b5061048b612407565b34801561088957600080fd5b50610538610898366004614154565b6001600160a01b03166000908152600e602052604090205490565b3480156108bf57600080fd5b5061048b6108ce366004614154565b61243d565b3480156108df57600080fd5b50601f546104569060ff1681565b3480156108f957600080fd5b506003546104cf906001600160a01b031681565b34801561091957600080fd5b50610538610928366004614154565b6001600160a01b031660009081526013602052604090205490565b34801561094f57600080fd5b5060165460ff16610456565b34801561096757600080fd5b5061048b612489565b34801561097c57600080fd5b50610538600381565b34801561099157600080fd5b506000546001600160a01b03166104cf565b3480156109af57600080fd5b506105386109be3660046146be565b6000908152600a602052604090205490565b3480156109dc57600080fd5b506104566109eb3660046146be565b6125d0565b3480156109fc57600080fd5b506104a26125e8565b348015610a1157600080fd5b5061048b610a203660046146a3565b6125f7565b348015610a3157600080fd5b5061048b610a403660046143c5565b61263b565b348015610a5157600080fd5b5061048b610a603660046144db565b6127ff565b348015610a7157600080fd5b5061048b610a803660046146be565b612b6d565b348015610a9157600080fd5b5061048b610aa0366004614390565b612bb7565b348015610ab157600080fd5b50610538610ac03660046146be565b60009081526008602052604090205490565b348015610ade57600080fd5b506003546001600160a01b03166104cf565b348015610afc57600080fd5b5061048b610b0b3660046143c5565b612c8c565b348015610b1c57600080fd5b5061048b610b2b366004614341565b612da1565b348015610b3c57600080fd5b50610538600281565b348015610b5157600080fd5b5061048b610b603660046142a3565b613053565b348015610b7157600080fd5b5061048b610b803660046147a5565b6130e9565b348015610b9157600080fd5b50610538600c5481565b348015610ba757600080fd5b5061048b610bb63660046146a3565b6133b7565b348015610bc757600080fd5b506104a2610bd63660046146be565b6133f4565b348015610be757600080fd5b50610456610bf63660046146be565b61271a101590565b348015610c0a57600080fd5b50610538600481565b348015610c1f57600080fd5b5061048b610c2e3660046146be565b613534565b348015610c3f57600080fd5b50601f5461045690610100900460ff1681565b348015610c5e57600080fd5b50610456610c6d3660046146be565b613563565b348015610c7e57600080fd5b5061048b610c8d3660046146be565b61357b565b348015610c9e57600080fd5b5061048b610cad3660046146be565b6135aa565b348015610cbe57600080fd5b50610456610ccd3660046146be565b6138ae101590565b348015610ce157600080fd5b5061053860145481565b348015610cf757600080fd5b50610538600581565b348015610d0c57600080fd5b50610538600681565b348015610d2157600080fd5b50610456610d30366004614195565b6135d9565b348015610d4157600080fd5b5061053860155481565b348015610d5757600080fd5b506002546001600160a01b03166104cf565b348015610d7557600080fd5b5061048b610d84366004614154565b613607565b348015610d9557600080fd5b50610538610da43660046146be565b61369f565b60006001600160e01b0319821663780e9d6360e01b1480610dda57506001600160e01b03198216634aefe8ef60e01b145b80610df557506001600160e01b03198216635b5e139f60e01b145b80610e1057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000543390600160a01b900460ff1615610e4b5760405162461bcd60e51b8152600401610e4290614a4c565b60405180910390fd5b806001600160a01b0316856001600160a01b031614158015610e745750610e7285826135d9565b155b15610ee95760005b82811015610ee757816001600160a01b0316610eaf858584818110610ea357610ea3614d6e565b905060200201356111a4565b6001600160a01b031614610ed55760405162461bcd60e51b8152600401610e4290614b96565b80610edf81614cfd565b915050610e7c565b505b60005b8281101561110a57856001600160a01b031660176000868685818110610f1457610f14614d6e565b60209081029290920135835250810191909152604001600020546001600160a01b031614610f4157600080fd5b610f648686868685818110610f5857610f58614d6e565b905060200201356137d1565b6001600160a01b0386166000908152601860205260408120805460019290610f8d908490614c7f565b90915550506001600160a01b0385166000908152601860205260408120805460019290610fbb908490614c34565b9091555085905060176000868685818110610fd857610fd8614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083838281811061102357611023614d6e565b90506020020135856001600160a01b0316876001600160a01b0316600080516020614de683398151915260405160405180910390a460006019600086868581811061107057611070614d6e565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506110dc86868686858181106110c0576110c0614d6e565b90506020020135604051806020016040528060008152506138c2565b6110f85760405162461bcd60e51b8152600401610e42906149fa565b8061110281614cfd565b915050610eec565b505050505050565b60606005805461112190614cc2565b80601f016020809104026020016040519081016040528092919081815260200182805461114d90614cc2565b801561119a5780601f1061116f5761010080835404028352916020019161119a565b820191906000526020600020905b81548152906001019060200180831161117d57829003601f168201915b5050505050905090565b6000818152601760205260408120546001600160a01b031661121d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610e42565b506000908152601960205260409020546001600160a01b031690565b6000818152601760205260409020546001600160a01b039081169083168114156112af5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610e42565b336001600160a01b03821614806112cb57506112cb81336135d9565b61133d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610e42565b600082815260196020908152604080832080546001600160a01b0319166001600160a01b038881169182179092556017909352818420549151869492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000546001600160a01b031633146113cf5760405162461bcd60e51b8152600401610e4290614ae3565b601f805460ff1916911515919091179055565b6000543390600160a01b900460ff161561140e5760405162461bcd60e51b8152600401610e4290614a4c565b61141a848483856139d0565b50505050565b3361142a83613563565b6114855760405162461bcd60e51b815260206004820152602660248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f7420626164604482015265206170706c6560d01b6064820152608401610e42565b6114918261271a101590565b6114e75760405162461bcd60e51b815260206004820152602160248201527f4572726f723a20746f6b656e2070726f766964656420697320616e206170706c6044820152606560f81b6064820152608401610e42565b6000838152601760205260409020546001600160a01b03828116911614806115285750806001600160a01b031661151d846111a4565b6001600160a01b0316145b80611538575061153884826135d9565b6115545760405162461bcd60e51b8152600401610e4290614b96565b61155e848461263b565b611568848361263b565b60056000527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb546009602052600080516020614dc6833981519152546115af906001614c34565b11156115cd5760405162461bcd60e51b8152600401610e4290614a8e565b600560009081526009602052600080516020614dc6833981519152546011546115f69190614c34565b9050611604600086836137d1565b600081815260176020908152604080832080546001600160a01b0319166001600160a01b038a1690811790915583526018909152812080546001929061164b908490614c34565b9091555050600560009081526009602052600080516020614dc683398151915280546001929061167c908490614c34565b90915550505050505050565b6000546001600160a01b031633146116b25760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156116d55760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806117185760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b8181116117725760405162461bcd60e51b815260206004820152602260248201527f62616c616e6365206d757374206265207375706572696f7220746f20616d6f756044820152611b9d60f21b6064820152608401610e42565b60408051600080825260208201909252339084906040516117939190614906565b60006040518083038185875af1925050503d80600081146117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b50509050806118215760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b50506001805550565b6001600160a01b03821660009081526018602052604081205482106118a55760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610e42565b506001600160a01b03919091166000908152601b60209081526040808320938352929052205490565b6000546001600160a01b031633146118f85760405162461bcd60e51b8152600401610e4290614ae3565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080516002808252606082810190935260009190816020015b6060815260200190600190039081611934579050509050600061195684611a7c565b6040805160028082526060820183529293506000929091602083019080368337019050509050611985601d5490565b8160008151811061199857611998614d6e565b602002602001018181525050601454816001815181106119ba576119ba614d6e565b60200260200101818152505081836000815181106119da576119da614d6e565b602002602001018190525080836001815181106119f9576119f9614d6e565b602090810291909101015250909392505050565b6000543390600160a01b900460ff1615611a395760405162461bcd60e51b8152600401610e4290614a4c565b611a45848483856139d0565b611a60848484604051806020016040528060008152506138c2565b61141a5760405162461bcd60e51b8152600401610e42906149fa565b60606000611a9f836001600160a01b031660009081526018602052604090205490565b90506000816001600160401b03811115611abb57611abb614d84565b604051908082528060200260200182016040528015611ae4578160200160208202803683370190505b50905060005b82811015611b2b57611afc858261182a565b828281518110611b0e57611b0e614d6e565b602090810291909101015280611b2381614cfd565b915050611aea565b509392505050565b6000611b3e601d5490565b8210611ba15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610e42565b601d8281548110611bb457611bb4614d6e565b90600052602060002001549050919050565b6000546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610e4290614ae3565b8051611c03906004906020840190614039565b5050565b60026001541415611c2a5760405162461bcd60e51b8152600401610e4290614b5f565b60026001556014543390611c3f908490614c60565b341015611ca25760405162461bcd60e51b815260206004820152602b60248201527f4d616b65207375726520796f752063616e206166666f726420302e303920657460448201526a34103832b9103a37b5b2b760a91b6064820152608401610e42565b6001600160a01b038416611cf85760405162461bcd60e51b815260206004820152601f60248201527f4572726f723a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e42565b600054600160a01b900460ff1615611d225760405162461bcd60e51b8152600401610e4290614a4c565b600d5460ff161515600114611d985760405162461bcd60e51b815260206004820152603660248201527f4572726f723a205761697420756e74696c2061697264726f7070696e6720746f60448201527508151c99585cdd5c9e481a185cc8199a5b9a5cda195960521b6064820152608401610e42565b60165460ff16151560011415611eda576001600160a01b0381166000908152600e6020526040902054600390611dcf908590614c34565b1115611e335760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b6560448201526c6e732061742070726573616c6560981b6064820152608401610e42565b6015546040516bffffffffffffffffffffffff19606084901b166020820152611e7691849160340160405160208183030381529060405280519060200120613b28565b611ed55760405162461bcd60e51b815260206004820152602a60248201527f796f7520617265206e6f7420616c6c6f77656420746f206d696e7420647572696044820152696e672070726573616c6560b01b6064820152608401610e42565b611f5a565b600f546001600160a01b038216600090815260106020526040902054611f01908590614c34565b1115611f5a5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20796f752063616e6e6f74206d696e74206d6f726520746f6b656044820152616e7360f01b6064820152608401610e42565b6000611f6584613b3e565b9050600081600081518110611f7c57611f7c614d6e565b60200260200101519050600082600181518110611f9b57611f9b614d6e565b6020026020010151905060005b8681101561213257611fd5600089858481518110611fc857611fc8614d6e565b60200260200101516137d1565b8760176000858481518110611fec57611fec614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928b16835260189091528120805460019290612042908490614c34565b9250508190555081818151811061205b5761205b614d6e565b60200260200101516007600085848151811061207957612079614d6e565b60200260200101518152602001908152602001600020819055506001600960008484815181106120ab576120ab614d6e565b6020026020010151815260200190815260200160002060008282546120d09190614c34565b925050819055508281815181106120e9576120e9614d6e565b6020026020010151886001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a48061212a81614cfd565b915050611fa8565b5060165460ff16151560011415612176576001600160a01b0384166000908152600e60205260408120805488929061216b908490614c34565b909155506121a49050565b6001600160a01b0384166000908152601060205260408120805488929061219e908490614c34565b90915550505b5050600180555050505050565b604080516002808252606082810190935260009190816020015b60608152602001906001900390816121cb5790505090506000836001600160401b038111156121fc576121fc614d84565b604051908082528060200260200182016040528015612225578160200160208202803683370190505b5090506000846001600160401b0381111561224257612242614d84565b60405190808252806020026020018201604052801561226b578160200160208202803683370190505b5090506000808061227d600143614c7f565b4090505b8783146123bd57600061271b4283336040805160208101949094528301919091526bffffffffffffffffffffffff19606091821b1690820152607481018590526094016040516020818303038152906040528051906020012060001c6122e79190614d18565b90506000805b8581101561232d5787818151811061230757612307614d6e565b602002602001015183141561231b57600191505b8061232581614cfd565b9150506122ed565b506000828152601760205260409020546001600160a01b0316158015612351575080155b156123a9578187868151811061236957612369614d6e565b60200260200101818152505061237e8261369f565b86868151811061239057612390614d6e565b60209081029190910101526123a6600186614c34565b94505b6123b4600185614c34565b93505050612281565b84866000815181106123d1576123d1614d6e565b602002602001018190525083866001815181106123f0576123f0614d6e565b602090810291909101015250939695505050505050565b6000546001600160a01b031633146124315760405162461bcd60e51b8152600401610e4290614ae3565b61243b6000613cee565b565b6000546001600160a01b031633146124675760405162461bcd60e51b8152600401610e4290614ae3565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146124b35760405162461bcd60e51b8152600401610e4290614ae3565b600260015414156124d65760405162461bcd60e51b8152600401610e4290614b5f565b600260015547806125195760405162461bcd60e51b815260206004820152600d60248201526c3130b630b731b29034b990181760991b6044820152606401610e42565b604080516000808252602082019092523390839060405161253a9190614906565b60006040518083038185875af1925050503d8060008114612577576040519150601f19603f3d011682016040523d82523d6000602084013e61257c565b606091505b50509050806125c85760405162461bcd60e51b81526020600482015260186024820152773bb4ba34323930bb9d103a3930b739b332b91032b93937b960411b6044820152606401610e42565b505060018055565b600061271b8210158015610e105750506132d2101590565b60606006805461112190614cc2565b6000546001600160a01b031633146126215760405162461bcd60e51b8152600401610e4290614ae3565b601f80549115156101000261ff0019909216919091179055565b6000543390600160a01b900460ff16156126675760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614806126a05750806001600160a01b0316612695836111a4565b6001600160a01b0316145b806126b057506126b083826135d9565b6126cc5760405162461bcd60e51b8152600401610e4290614b96565b6001600160a01b03831661272c5760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610e42565b6000828152601760205260409020546001600160a01b038481169116146127655760405162461bcd60e51b8152600401610e4290614b18565b612771836000846137d1565b600082815260176020908152604080832080546001600160a01b03191690556001600160a01b0386168352601890915281208054600192906127b4908490614c7f565b909155505060405182906000906001600160a01b03861690600080516020614de6833981519152908390a450600090815260196020526040902080546001600160a01b031916905550565b6000546001600160a01b031633146128295760405162461bcd60e51b8152600401610e4290614ae3565b6002546040805163a09ec3ef60e01b815290516000926001600160a01b03169163a09ec3ef916004808301926020929190829003018186803b15801561286e57600080fd5b505afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614178565b600054909150600160a01b900460ff16156128d35760405162461bcd60e51b8152600401610e4290614a4c565b6000826000815181106128e8576128e8614d6e565b6020026020010151905060008360018151811061290757612907614d6e565b60200260200101519050815181511461291f57600080fd5b8151600c54600b54612932908390614c34565b11156129a65760405162461bcd60e51b815260206004820152603b60248201527f4572726f723a20796f752061726520657863656564696e6720746865206d617860448201527f2061697264726f7020616d6f756e7420746f20547265617375727900000000006064820152608401610e42565b60005b8351811015612b34576129ca600086868481518110611fc857611fc8614d6e565b6001600160a01b03851660009081526018602052604081208054600192906129f3908490614c34565b925050819055508460176000868481518110612a1157612a11614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110612a5d57612a5d614d6e565b602002602001015160076000868481518110612a7b57612a7b614d6e565b6020026020010151815260200190815260200160002081905550600160096000858481518110612aad57612aad614d6e565b602002602001015181526020019081526020016000206000828254612ad29190614c34565b92505081905550838181518110612aeb57612aeb614d6e565b6020026020010151856001600160a01b031660006001600160a01b0316600080516020614de683398151915260405160405180910390a480612b2c81614cfd565b9150506129a9565b5080600b6000828254612b479190614c34565b9091555050600c54600b541415612b6657600d805460ff191660011790555b5050505050565b6000546001600160a01b03163314612b975760405162461bcd60e51b8152600401610e4290614ae3565b600c819055600b54811415612bb457600d805460ff191660011790555b50565b336001600160a01b0383161415612c205760405162461bcd60e51b815260206004820152602760248201527f4572726f723a2073657474696e6720617070726f76616c20737461747573206660448201526637b91039b2b63360c91b6064820152608401610e42565b336000818152601a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b33612c96826125d0565b612cf75760405162461bcd60e51b815260206004820152602c60248201527f4572726f723a20746f6b656e2070726f7669646564206973206e6f742061736360448201526b656e73696f6e206170706c6560a01b6064820152608401610e42565b6000828152601760205260409020546001600160a01b0382811691161480612d385750806001600160a01b0316612d2d836111a4565b6001600160a01b0316145b80612d485750612d4883826135d9565b612d645760405162461bcd60e51b8152600401610e4290614b96565b612d6e838361263b565b6001600160a01b0383166000908152601360205260408120805460019290612d97908490614c34565b9091555050505050565b6000543390600160a01b900460ff1615612dcd5760405162461bcd60e51b8152600401610e4290614a4c565b806001600160a01b0316836001600160a01b031614158015612df65750612df483826135d9565b155b15612e6d5760005b8251811015612e6b57816001600160a01b0316612e33848381518110612e2657612e26614d6e565b60200260200101516111a4565b6001600160a01b031614612e595760405162461bcd60e51b8152600401610e4290614b96565b80612e6381614cfd565b915050612dfe565b505b60005b8251811015612eec57836001600160a01b031660176000858481518110612e9957612e99614d6e565b6020908102919091018101518252810191909152604001600020546001600160a01b031614612eda5760405162461bcd60e51b8152600401610e4290614b18565b80612ee481614cfd565b915050612e70565b5060005b8251811015612fe157612f11846000858481518110611fc857611fc8614d6e565b600060176000858481518110612f2957612f29614d6e565b6020908102919091018101518252818101929092526040908101600090812080546001600160a01b0319166001600160a01b03958616179055928716835260189091528120805460019290612f7f908490614c7f565b92505081905550828181518110612f9857612f98614d6e565b602002602001015160006001600160a01b0316856001600160a01b0316600080516020614de683398151915260405160405180910390a480612fd981614cfd565b915050612ef0565b5060005b825181101561141a5760006019600085848151811061300657613006614d6e565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061304b90614cfd565b915050612fe5565b6000543390600160a01b900460ff161561307f5760405162461bcd60e51b8152600401610e4290614a4c565b61308b868683876139d0565b6130cd86868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506138c292505050565b61110a5760405162461bcd60e51b8152600401610e42906149fa565b6000546001600160a01b031633146131135760405162461bcd60e51b8152600401610e4290614ae3565b828151146131635760405162461bcd60e51b815260206004820152601e60248201527f616d6f756e74206e6f74206567616c20746f206c697374206c656e67746800006044820152606401610e42565b60058214806131725750600682145b6131cd5760405162461bcd60e51b815260206004820152602660248201527f4572726f723a2054686520746f6b656e20636c617373206973206e6f7420616e604482015265206170706c6560d01b6064820152608401610e42565b6000828152600860209081526040808320546009909252909120546131f3908590614c34565b11156132115760405162461bcd60e51b8152600401610e4290614a8e565b6000600583141561324a5760056000526009602052600080516020614dc6833981519152546011546132439190614c34565b9050613286565b600660005260096020527fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f546012546132839190614c34565b90505b60005b825181101561338d57600061329e8284614c34565b90506132c560008584815181106132b7576132b7614d6e565b6020026020010151836137d1565b8382815181106132d7576132d7614d6e565b60200260200101516017600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060016018600086858151811061332e5761332e614d6e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133659190614c34565b909155505060009081526007602052604090208490558061338581614cfd565b915050613289565b50600083815260096020526040812080548692906133ac908490614c34565b909155505050505050565b6000546001600160a01b031633146133e15760405162461bcd60e51b8152600401610e4290614ae3565b6016805460ff1916911515919091179055565b6000818152601760205260409020546060906001600160a01b03166134735760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610e42565b60006004805461348290614cc2565b80601f01602080910402602001604051908101604052809291908181526020018280546134ae90614cc2565b80156134fb5780601f106134d0576101008083540402835291602001916134fb565b820191906000526020600020905b8154815290600101906020018083116134de57829003601f168201915b505050505090508061350c84613d3e565b60405160200161351d929190614922565b604051602081830303815290604052915050919050565b6000546001600160a01b0316331461355e5760405162461bcd60e51b8152600401610e4290614ae3565b601455565b60006132d38210158015610e105750506138ae101590565b6000546001600160a01b031633146135a55760405162461bcd60e51b8152600401610e4290614ae3565b600f55565b6000546001600160a01b031633146135d45760405162461bcd60e51b8152600401610e4290614ae3565b601555565b6001600160a01b039182166000908152601a6020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b031633146136315760405162461bcd60e51b8152600401610e4290614ae3565b6001600160a01b0381166136965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e42565b612bb481613cee565b6000816136ae57506000919050565b600182101580156136c0575060088211155b156136cd57506001919050565b8160091480156136dd575081600a145b156136ea57506002919050565b600b82101580156136fd57506113928211155b1561370a57506003919050565b611393821015801561371e575061271a8211155b1561372b57506004919050565b61271b821015801561373f57506132d28211155b1561374c57506005919050565b6132d3821015801561376057506138ae8211155b1561376d57506006919050565b60405162461bcd60e51b815260206004820152602e60248201527f5468697320494420646f6573206e6f742062656c6f6e6720746f20612076616c60448201526d696420746f6b656e20636c61737360901b6064820152608401610e42565b919050565b6001600160a01b03831661382c5761382781601d80546000838152601e60205260408120829055600182018355919091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0155565b61384f565b816001600160a01b0316836001600160a01b03161461384f5761384f8382613e3b565b6001600160a01b03821661386b5761386681613ee6565b505050565b826001600160a01b0316826001600160a01b031614613866576001600160a01b0391909116600090815260186020908152604080832054601b83528184208185528352818420859055938352601c90915290205550565b60006001600160a01b0384163b156139c457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613906903390899088908890600401614951565b602060405180830381600087803b15801561392057600080fd5b505af1925050508015613950575060408051601f3d908101601f1916820190925261394d918101906146f4565b60015b6139aa573d80801561397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b5080516139a25760405162461bcd60e51b8152600401610e42906149fa565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506139c8565b5060015b949350505050565b6000818152601760205260409020546001600160a01b038581169116146139f657600080fd5b816001600160a01b0316846001600160a01b03161480613a2f5750816001600160a01b0316613a24826111a4565b6001600160a01b0316145b80613a3f5750613a3f84836135d9565b613a5b5760405162461bcd60e51b8152600401610e4290614b96565b613a668484836137d1565b6001600160a01b0384166000908152601860205260408120805460019290613a8f908490614c7f565b90915550506001600160a01b0383166000908152601860205260408120805460019290613abd908490614c34565b909155505060008181526017602052604080822080546001600160a01b0319166001600160a01b038781169182179092559151849391881691600080516020614de683398151915291a4600090815260196020526040902080546001600160a01b0319169055505050565b600082613b358584613f95565b14949350505050565b601f5460609060ff16158015613b5c5750601f54610100900460ff16155b15613c3857600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bb157600080fd5b505af1925050508015613be657506040513d6000823e601f3d908101601f19168201604052613be39190810190614592565b60015b610e10576000613bf5836121b1565b90507fc36a191bf96c0e51ac78765045a165404afd7594ad423922b0e84d0ee2f39afa814233604051613c2a939291906149a1565b60405180910390a192915050565b601f5460ff16158015613c525750601f54610100900460ff165b15613ce357600360009054906101000a90046001600160a01b03166001600160a01b0316634fdc84dc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ca757600080fd5b505af1158015613cbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190614592565b6000613bf5836121b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081613d625750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613d8c5780613d7681614cfd565b9150613d859050600a83614c4c565b9150613d66565b6000816001600160401b03811115613da657613da6614d84565b6040519080825280601f01601f191660200182016040528015613dd0576020820181803683370190505b5090505b84156139c857613de5600183614c7f565b9150613df2600a86614d18565b613dfd906030614c34565b60f81b818381518110613e1257613e12614d6e565b60200101906001600160f81b031916908160001a905350613e34600a86614c4c565b9450613dd4565b6001600160a01b038216600090815260186020526040812054613e6090600190614c7f565b6000838152601c6020526040902054909150808214613eb3576001600160a01b0384166000908152601b602090815260408083208584528252808320548484528184208190558352601c90915290208190555b506000918252601c602090815260408084208490556001600160a01b039094168352601b81528383209183525290812055565b601d54600090613ef890600190614c7f565b6000838152601e6020526040812054601d8054939450909284908110613f2057613f20614d6e565b9060005260206000200154905080601d8381548110613f4157613f41614d6e565b6000918252602080832090910192909255828152601e9091526040808220849055858252812055601d805480613f7957613f79614d58565b6001900381819060005260206000200160009055905550505050565b600081815b8451811015611b2b576000858281518110613fb757613fb7614d6e565b60200260200101519050808311613ff9576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250614026565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061403181614cfd565b915050613f9a565b82805461404590614cc2565b90600052602060002090601f01602090048101928261406757600085556140ad565b82601f1061408057805160ff19168380011785556140ad565b828001600101855582156140ad579182015b828111156140ad578251825591602001919060010190614092565b506140b99291506140bd565b5090565b5b808211156140b957600081556001016140be565b600082601f8301126140e357600080fd5b813560206140f86140f383614c11565b614be1565b80838252828201915082860187848660051b890101111561411857600080fd5b60005b858110156141375781358452928401929084019060010161411b565b5090979650505050505050565b803580151581146137cc57600080fd5b60006020828403121561416657600080fd5b813561417181614d9a565b9392505050565b60006020828403121561418a57600080fd5b815161417181614d9a565b600080604083850312156141a857600080fd5b82356141b381614d9a565b915060208301356141c381614d9a565b809150509250929050565b600080600080606085870312156141e457600080fd5b84356141ef81614d9a565b935060208501356141ff81614d9a565b925060408501356001600160401b038082111561421b57600080fd5b818701915087601f83011261422f57600080fd5b81358181111561423e57600080fd5b8860208260051b850101111561425357600080fd5b95989497505060200194505050565b60008060006060848603121561427757600080fd5b833561428281614d9a565b9250602084013561429281614d9a565b929592945050506040919091013590565b6000806000806000608086880312156142bb57600080fd5b85356142c681614d9a565b945060208601356142d681614d9a565b93506040860135925060608601356001600160401b03808211156142f957600080fd5b818801915088601f83011261430d57600080fd5b81358181111561431c57600080fd5b89602082850101111561432e57600080fd5b9699959850939650602001949392505050565b6000806040838503121561435457600080fd5b823561435f81614d9a565b915060208301356001600160401b0381111561437a57600080fd5b614386858286016140d2565b9150509250929050565b600080604083850312156143a357600080fd5b82356143ae81614d9a565b91506143bc60208401614144565b90509250929050565b600080604083850312156143d857600080fd5b82356143e381614d9a565b946020939093013593505050565b60008060006060848603121561440657600080fd5b833561441181614d9a565b9250602084810135925060408501356001600160401b0381111561443457600080fd5b8501601f8101871361444557600080fd5b80356144536140f382614c11565b8082825284820191508484018a868560051b870101111561447357600080fd5b600094505b83851015614496578035835260019490940193918501918501614478565b5080955050505050509250925092565b6000806000606084860312156144bb57600080fd5b83356144c681614d9a565b95602085013595506040909401359392505050565b600060208083850312156144ee57600080fd5b82356001600160401b038082111561450557600080fd5b818501915085601f83011261451957600080fd5b81356145276140f382614c11565b80828252858201915085850189878560051b880101111561454757600080fd5b6000805b8581101561458257823587811115614561578283fd5b61456f8d8b838c01016140d2565b865250938801939188019160010161454b565b50919a9950505050505050505050565b600060208083850312156145a557600080fd5b82516001600160401b03808211156145bc57600080fd5b818501915085601f8301126145d057600080fd5b81516145de6140f382614c11565b80828252858201915085850189878560051b88010111156145fe57600080fd5b60005b848110156146945781518681111561461857600080fd5b8701603f81018c1361462957600080fd5b888101516146396140f382614c11565b808282528b82019150604084018f60408560051b870101111561465b57600080fd5b600094505b8385101561467e578051835260019490940193918c01918c01614660565b5087525050509287019290870190600101614601565b50909998505050505050505050565b6000602082840312156146b557600080fd5b61417182614144565b6000602082840312156146d057600080fd5b5035919050565b6000602082840312156146e957600080fd5b813561417181614daf565b60006020828403121561470657600080fd5b815161417181614daf565b6000602080838503121561472457600080fd5b82356001600160401b038082111561473b57600080fd5b818501915085601f83011261474f57600080fd5b81358181111561476157614761614d84565b614773601f8201601f19168501614be1565b9150808252868482850101111561478957600080fd5b8084840185840137600090820190930192909252509392505050565b6000806000606084860312156147ba57600080fd5b83359250602080850135925060408501356001600160401b038111156147df57600080fd5b8501601f810187136147f057600080fd5b80356147fe6140f382614c11565b8082825284820191508484018a868560051b870101111561481e57600080fd5b600094505b8385101561449657803561483681614d9a565b835260019490940193918501918501614823565b600081518084526020808501808196508360051b8101915082860160005b8581101561489257828403895261488084835161489f565b98850198935090840190600101614868565b5091979650505050505050565b600081518084526020808501945080840160005b838110156148cf578151875295820195908201906001016148b3565b509495945050505050565b600081518084526148f2816020860160208601614c96565b601f01601f19169290920160200192915050565b60008251614918818460208701614c96565b9190910192915050565b60008351614934818460208801614c96565b835190830190614948818360208801614c96565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614984908301846148da565b9695505050505050565b602081526000614171602083018461484a565b6060815260006149b4606083018661484a565b6020830194909452506001600160a01b0391909116604090910152919050565b602081526000614171602083018461489f565b60208152600061417160208301846148da565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526022908201527f4572726f723a20746f6b656e207472616e73666572207768696c652070617573604082015261195960f21b606082015260800190565b60208082526035908201527f4572726f723a20596f75206578636565642074686520737570706c792063617060408201527420666f722074686973206170706c6520636c61737360581b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f4572726f723a206163636f756e74206973206e6f74206f776e6572206f6620746040820152661bdad95b881a5960ca1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f4572726f723a2063616c6c6572206973206e656974686572206f776e6572206e60408201526a1bdc88185c1c1c9bdd995960aa1b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715614c0957614c09614d84565b604052919050565b60006001600160401b03821115614c2a57614c2a614d84565b5060051b60200190565b60008219821115614c4757614c47614d2c565b500190565b600082614c5b57614c5b614d42565b500490565b6000816000190483118215151615614c7a57614c7a614d2c565b500290565b600082821015614c9157614c91614d2c565b500390565b60005b83811015614cb1578181015183820152602001614c99565b8381111561141a5750506000910152565b600181811c90821680614cd657607f821691505b60208210811415614cf757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614d1157614d11614d2c565b5060010190565b600082614d2757614d27614d42565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612bb457600080fd5b6001600160e01b031981168114612bb457600080fdfe74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd64736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb60000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc000000000000000000000000000000000000000000000000000000000000000e446976696e6520416e617263687900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024441000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d344c6567596d73486f45695a536a5736632f000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Divine Anarchy
Arg [1] : symbol_ (string): DA
Arg [2] : baseURI_ (string): https://gateway.pinata.cloud/ipfs/QmeeL35t64Nmk7QCCrte9n2wn2D9M4LegYmsHoEiZSjW6c/
Arg [3] : _adminwallets (address): 0x2Ed8143a3684Df0167a0030f61bb58d9e5A16cB6
Arg [4] : _oracle (address): 0x4eE58496DC8EBa4811709F51A90a1CB4797c27cC

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000002ed8143a3684df0167a0030f61bb58d9e5a16cb6
Arg [4] : 0000000000000000000000004ee58496dc8eba4811709f51a90a1cb4797c27cc
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [6] : 446976696e6520416e6172636879000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [8] : 4441000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [10] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [11] : 732f516d65654c33357436344e6d6b37514343727465396e32776e3244394d34
Arg [12] : 4c6567596d73486f45695a536a5736632f000000000000000000000000000000


Deployed Bytecode Sourcemap

8213:29026:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28954:368;;;;;;;;;;-1:-1:-1;28954:368:0;;;;;:::i;:::-;;:::i;:::-;;;17435:14:1;;17428:22;17410:41;;17398:2;17383:18;28954:368:0;;;;;;;;22376:1019;;;;;;;;;;-1:-1:-1;22376:1019:0;;;;;:::i;:::-;;:::i;:::-;;12931:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16738:221::-;;;;;;;;;;-1:-1:-1;16738:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;15647:32:1;;;15629:51;;15617:2;15602:18;16738:221:0;15483:203:1;16269:461:0;;;;;;;;;;-1:-1:-1;16269:461:0;;;;;:::i;:::-;;:::i;35936:87::-;;;;;;;;;;-1:-1:-1;35936:87:0;;;;;:::i;:::-;;:::i;29583:105::-;;;;;;;;;;-1:-1:-1;29663:10:0;:17;29583:105;;;17608:25:1;;;17596:2;17581:18;29583:105:0;17462:177:1;17446:119:0;;;;;;;;;;-1:-1:-1;17529:28:0;;;;17446:119;;14828:154;;;;;;;;;;-1:-1:-1;14828:154:0;;;;;:::i;:::-;14913:7;14940:34;;;:24;:34;;;;;;;14828:154;20646:263;;;;;;;;;;-1:-1:-1;20646:263:0;;;;;:::i;:::-;;:::i;8614:32::-;;;;;;;;;;;;8645:1;8614:32;;26942:1079;;;;;;;;;;-1:-1:-1;26942:1079:0;;;;;:::i;:::-;;:::i;33471:387::-;;;;;;;;;;-1:-1:-1;33471:387:0;;;;;:::i;:::-;;:::i;29334:241::-;;;;;;;;;;-1:-1:-1;29334:241:0;;;;;:::i;:::-;;:::i;13779:118::-;;;;;;;;;;-1:-1:-1;13779:118:0;;;;;:::i;:::-;13846:7;13873:16;;;:11;:16;;;;;;;13779:118;34429:128;;;;;;;;;;-1:-1:-1;34429:128:0;;;;;:::i;:::-;;:::i;32705:432::-;;;;;;;;;;-1:-1:-1;32705:432:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20917:::-;;;;;;;;;;-1:-1:-1;20917:432:0;;;;;:::i;:::-;;:::i;32353:340::-;;;;;;;;;;-1:-1:-1;32353:340:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8568:39::-;;;;;;;;;;;;8606:1;8568:39;;9435:47;;;;;;;;;;;;;;;;28058:124;;;;;;;;;;-1:-1:-1;28058:124:0;;;;;:::i;:::-;28120:4;28144:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;:30;;;28058:124;29696:208;;;;;;;;;;-1:-1:-1;29696:208:0;;;;;:::i;:::-;;:::i;13139:101::-;;;;;;;;;;-1:-1:-1;13139:101:0;;;;;:::i;:::-;;:::i;3110:86::-;;;;;;;;;;-1:-1:-1;3157:4:0;3181:7;-1:-1:-1;;;3181:7:0;;;;3110:86;;8410:33;;;;;;;;;;-1:-1:-1;8410:33:0;;;;-1:-1:-1;;;;;8410:33:0;;;15968:97;;;;;;;;;;-1:-1:-1;15968:97:0;;;;;:::i;:::-;16018:7;16045:12;;;:7;:12;;;;;;-1:-1:-1;;;;;16045:12:0;;15968:97;18806:1832;;;;;;:::i;:::-;;:::i;34569:1355::-;;;;;;;;;;-1:-1:-1;34569:1355:0;;;;;:::i;:::-;;:::i;15851:109::-;;;;;;;;;;-1:-1:-1;15851:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15851:109;5811:103;;;;;;;;;;;;;:::i;15148:157::-;;;;;;;;;;-1:-1:-1;15148:157:0;;;;;:::i;:::-;-1:-1:-1;;;;;15257:40:0;15230:7;15257:40;;;:31;:40;;;;;;;15148:157;34319:98;;;;;;;;;;-1:-1:-1;34319:98:0;;;;;:::i;:::-;;:::i;10632:20::-;;;;;;;;;;-1:-1:-1;10632:20:0;;;;;;;;8450:21;;;;;;;;;;-1:-1:-1;8450:21:0;;;;-1:-1:-1;;;;;8450:21:0;;;16073:147;;;;;;;;;;-1:-1:-1;16073:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;16179:33:0;16152:7;16179:33;;;:24;:33;;;;;;;16073:147;37132:94;;;;;;;;;;-1:-1:-1;37203:15:0;;;;37132:94;;33149:314;;;;;;;;;;;;;:::i;8696:38::-;;;;;;;;;;;;8733:1;8696:38;;5584:87;;;;;;;;;;-1:-1:-1;5630:7:0;5657:6;-1:-1:-1;;;;;5657:6:0;5584:87;;14990:150;;;;;;;;;;-1:-1:-1;14990:150:0;;;;;:::i;:::-;15073:7;15100:32;;;:22;:32;;;;;;;14990:150;15581:130;;;;;;;;;;-1:-1:-1;15581:130:0;;;;;:::i;:::-;;:::i;13033:98::-;;;;;;;;;;;;;:::i;36035:93::-;;;;;;;;;;-1:-1:-1;36035:93:0;;;;;:::i;:::-;;:::i;23407:796::-;;;;;;;;;;-1:-1:-1;23407:796:0;;;;;:::i;:::-;;:::i;17608:1186::-;;;;;;;;;;-1:-1:-1;17608:1186:0;;;;;:::i;:::-;;:::i;34068:245::-;;;;;;;;;;-1:-1:-1;34068:245:0;;;;;:::i;:::-;;:::i;16967:303::-;;;;;;;;;;-1:-1:-1;16967:303:0;;;;;:::i;:::-;;:::i;14674:146::-;;;;;;;;;;-1:-1:-1;14674:146:0;;;;;:::i;:::-;14755:7;14782:30;;;:20;:30;;;;;;;14674:146;13673:98;;;;;;;;;;-1:-1:-1;13756:6:0;;-1:-1:-1;;;;;13756:6:0;13673:98;;26463:471;;;;;;;;;;-1:-1:-1;26463:471:0;;;;;:::i;:::-;;:::i;24211:1080::-;;;;;;;;;;-1:-1:-1;24211:1080:0;;;;;:::i;:::-;;:::i;8653:36::-;;;;;;;;;;;;8688:1;8653:36;;21357:475;;;;;;;;;;-1:-1:-1;21357:475:0;;;;;:::i;:::-;;:::i;25299:1156::-;;;;;;;;;;-1:-1:-1;25299:1156:0;;;;;:::i;:::-;;:::i;9177:44::-;;;;;;;;;;;;;;;;33870:92;;;;;;;;;;-1:-1:-1;33870:92:0;;;;;:::i;:::-;;:::i;13248:299::-;;;;;;;;;;-1:-1:-1;13248:299:0;;;;;:::i;:::-;;:::i;15443:130::-;;;;;;;;;;-1:-1:-1;15443:130:0;;;;;:::i;:::-;15559:5;-1:-1:-1;15552:12:0;;15443:130;8741:41;;;;;;;;;;;;8781:1;8741:41;;37010:110;;;;;;;;;;-1:-1:-1;37010:110:0;;;;;:::i;:::-;;:::i;10659:24::-;;;;;;;;;;-1:-1:-1;10659:24:0;;;;;;;;;;;15719:124;;;;;;;;;;-1:-1:-1;15719:124:0;;;;;:::i;:::-;;:::i;36870:128::-;;;;;;;;;;-1:-1:-1;36870:128:0;;;;;:::i;:::-;;:::i;33974:82::-;;;;;;;;;;-1:-1:-1;33974:82:0;;;;;:::i;:::-;;:::i;15313:122::-;;;;;;;;;;-1:-1:-1;15313:122:0;;;;;:::i;:::-;15421:5;-1:-1:-1;15414:12:0;;15313:122;9719:45;;;;;;;;;;;;;;;;8790:43;;;;;;;;;;;;8832:1;8790:43;;8840:37;;;;;;;;;;;;8876:1;8840:37;;17278:160;;;;;;;;;;-1:-1:-1;17278:160:0;;;;;:::i;:::-;;:::i;9777:88::-;;;;;;;;;;;;;;;;13555:110;;;;;;;;;;-1:-1:-1;13644:12:0;;-1:-1:-1;;;;;13644:12:0;13555:110;;5925:201;;;;;;;;;;-1:-1:-1;5925:201:0;;;;;:::i;:::-;;:::i;13905:761::-;;;;;;;;;;-1:-1:-1;13905:761:0;;;;;:::i;:::-;;:::i;28954:368::-;29056:4;-1:-1:-1;;;;;;29089:50:0;;-1:-1:-1;;;29089:50:0;;:107;;-1:-1:-1;;;;;;;29156:40:0;;-1:-1:-1;;;29156:40:0;29089:107;:172;;;-1:-1:-1;;;;;;;29213:48:0;;-1:-1:-1;;;29213:48:0;29089:172;:225;;;-1:-1:-1;;;;;;;;;;2701:40:0;;;29278:36;29073:241;28954:368;-1:-1:-1;;28954:368:0:o;22376:1019::-;22508:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;22558:9;22550:56;;;;-1:-1:-1;;;22550:56:0;;;;;;;:::i;:::-;;;;;;;;;22631:8;-1:-1:-1;;;;;22623:16:0;:4;-1:-1:-1;;;;;22623:16:0;;;:61;;;;;22643:32;22660:4;22666:8;22643:16;:32::i;:::-;:41;22623:61;22619:256;;;22706:9;22701:163;22721:14;;;22701:163;;;22792:8;-1:-1:-1;;;;;22769:31:0;:19;22781:3;;22785:1;22781:6;;;;;;;:::i;:::-;;;;;;;22769:11;:19::i;:::-;-1:-1:-1;;;;;22769:31:0;;22761:87;;;;-1:-1:-1;;;22761:87:0;;;;;;;:::i;:::-;22737:3;;;;:::i;:::-;;;;22701:163;;;;22619:256;22914:9;22909:479;22929:14;;;22909:479;;;22992:4;-1:-1:-1;;;;;22973:23:0;:7;:15;22981:3;;22985:1;22981:6;;;;;;;:::i;:::-;;;;;;;;;;22973:15;;-1:-1:-1;22973:15:0;;;;;;;;-1:-1:-1;22973:15:0;;-1:-1:-1;;;;;22973:15:0;:23;22965:32;;;;;;23012:38;23033:4;23039:2;23043:3;;23047:1;23043:6;;;;;;;:::i;:::-;;;;;;;23012:20;:38::i;:::-;-1:-1:-1;;;;;23065:15:0;;;;;;:9;:15;;;;;:20;;23084:1;;23065:15;:20;;23084:1;;23065:20;:::i;:::-;;;;-1:-1:-1;;;;;;;23100:13:0;;;;;;:9;:13;;;;;:18;;23117:1;;23100:13;:18;;23117:1;;23100:18;:::i;:::-;;;;-1:-1:-1;23151:2:0;;-1:-1:-1;23133:7:0;:15;23141:3;;23145:1;23141:6;;;;;;;:::i;:::-;;;;;;;23133:15;;;;;;;;;;;;:20;;;;;-1:-1:-1;;;;;23133:20:0;;;;;-1:-1:-1;;;;;23133:20:0;;;;;;23194:3;;23198:1;23194:6;;;;;;;:::i;:::-;;;;;;;23190:2;-1:-1:-1;;;;;23175:26:0;23184:4;-1:-1:-1;;;;;23175:26:0;-1:-1:-1;;;;;;;;;;;23175:26:0;;;;;;;;;23250:1;23216:15;:23;23232:3;;23236:1;23232:6;;;;;;;:::i;:::-;;;;;;;23216:23;;;;;;;;;;;;:36;;;;;-1:-1:-1;;;;;23216:36:0;;;;;-1:-1:-1;;;;;23216:36:0;;;;;;23277:44;23300:4;23306:2;23310:3;;23314:1;23310:6;;;;;;;:::i;:::-;;;;;;;23277:44;;;;;;;;;;;;:22;:44::i;:::-;23269:107;;;;-1:-1:-1;;;23269:107:0;;;;;;;:::i;:::-;22945:3;;;;:::i;:::-;;;;22909:479;;;;22464:931;22376:1019;;;;:::o;12931:94::-;12979:13;13012:5;13005:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12931:94;:::o;16738:221::-;16806:16;28144;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;16835:72;;;;-1:-1:-1;;;16835:72:0;;25740:2:1;16835:72:0;;;25722:21:1;25779:2;25759:18;;;25752:30;25818:34;25798:18;;;25791:62;-1:-1:-1;;;25869:18:1;;;25862:42;25921:19;;16835:72:0;25538:408:1;16835:72:0;-1:-1:-1;16927:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;16927:24:0;;16738:221::o;16269:461::-;16344:13;16045:12;;;:7;:12;;;;;;-1:-1:-1;;;;;16045:12:0;;;;16395:11;;;;;16387:57;;;;-1:-1:-1;;;16387:57:0;;27358:2:1;16387:57:0;;;27340:21:1;27397:2;27377:18;;;27370:30;27436:34;27416:18;;;27409:62;-1:-1:-1;;;27487:18:1;;;27480:31;27528:19;;16387:57:0;27156:397:1;16387:57:0;2869:10;-1:-1:-1;;;;;16479:21:0;;;;:62;;-1:-1:-1;16504:37:0;16521:5;2869:10;17278:160;:::i;16504:37::-;16457:168;;;;-1:-1:-1;;;16457:168:0;;23037:2:1;16457:168:0;;;23019:21:1;23076:2;23056:18;;;23049:30;23115:34;23095:18;;;23088:62;23186:26;23166:18;;;23159:54;23230:19;;16457:168:0;22835:420:1;16457:168:0;16638:24;;;;:15;:24;;;;;;;;:29;;-1:-1:-1;;;;;;16638:29:0;-1:-1:-1;;;;;16638:29:0;;;;;;;;;16045:7;:12;;;;;;;16683:39;;16638:24;;16045:12;;;;;16683:39;;;16333:397;16269:461;;:::o;35936:87::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;35998:8:::1;:17:::0;;-1:-1:-1;;35998:17:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35936:87::o;20646:263::-;20757:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;20807:9;20799:56;;;;-1:-1:-1;;;20799:56:0;;;;;;;:::i;:::-;20868:33;20878:4;20884:2;20888:8;20898:2;20868:9;:33::i;:::-;20713:196;20646:263;;;:::o;26942:1079::-;2869:10;27090:19;27101:7;27090:10;:19::i;:::-;27082:70;;;;-1:-1:-1;;;27082:70:0;;28162:2:1;27082:70:0;;;28144:21:1;28201:2;28181:18;;;28174:30;28240:34;28220:18;;;28213:62;-1:-1:-1;;;28291:18:1;;;28284:36;28337:19;;27082:70:0;27960:402:1;27082:70:0;27171:29;27192:7;15559:5;-1:-1:-1;15552:12:0;;15443:130;27171:29;27163:75;;;;-1:-1:-1;;;27163:75:0;;27760:2:1;27163:75:0;;;27742:21:1;27799:2;27779:18;;;27772:30;27838:34;27818:18;;;27811:62;-1:-1:-1;;;27889:18:1;;;27882:31;27930:19;;27163:75:0;27558:397:1;27163:75:0;27259:16;;;;:7;:16;;;;;;-1:-1:-1;;;;;27259:28:0;;;:16;;:28;;:64;;;27315:8;-1:-1:-1;;;;;27291:32:0;:20;27303:7;27291:11;:20::i;:::-;-1:-1:-1;;;;;27291:32:0;;27259:64;:103;;;;27327:35;27344:7;27353:8;27327:16;:35::i;:::-;27251:159;;;;-1:-1:-1;;;27251:159:0;;;;;;;:::i;:::-;27423:22;27428:7;27437;27423:4;:22::i;:::-;27456;27461:7;27470;27456:4;:22::i;:::-;8832:1;27594:37;;;;27545:24;27594:37;27545:41;-1:-1:-1;;;;;;;;;;;27545:41:0;:45;;27589:1;27545:45;:::i;:::-;:86;;27537:152;;;;-1:-1:-1;;;27537:152:0;;;;;;;:::i;:::-;8832:1;27702:24;27751:41;;;:24;:41;;-1:-1:-1;;;;;;;;;;;27751:41:0;27729:19;;:63;;27751:41;27729:63;:::i;:::-;27702:90;;27817:59;27846:1;27850:7;27859:16;27817:20;:59::i;:::-;27887:25;;;;:7;:25;;;;;;;;:35;;-1:-1:-1;;;;;;27887:35:0;-1:-1:-1;;;;;27887:35:0;;;;;;;;27933:18;;:9;:18;;;;;:23;;-1:-1:-1;;27887:25:0;27933:23;;-1:-1:-1;;27933:23:0;:::i;:::-;;;;-1:-1:-1;;8832:1:0;27967:41;;;;:24;:41;;-1:-1:-1;;;;;;;;;;;27967:46:0;;28012:1;;27967:41;:46;;28012:1;;27967:46;:::i;:::-;;;;-1:-1:-1;;;;;;;26942:1079:0:o;33471:387::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;6463:1:::1;6605:7;;:19;;6597:63;;;;-1:-1:-1::0;;;6597:63:0::1;;;;;;;:::i;:::-;6463:1;6671:7;:18:::0;33566:21:::2;33606:11:::0;33598:37:::2;;;::::0;-1:-1:-1;;;33598:37:0;;25398:2:1;33598:37:0::2;::::0;::::2;25380:21:1::0;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:43;25509:18;;33598:37:0::2;25196:337:1::0;33598:37:0::2;33664:7;33654;:17;33646:64;;;::::0;-1:-1:-1;;;33646:64:0;;24995:2:1;33646:64:0::2;::::0;::::2;24977:21:1::0;25034:2;25014:18;;;25007:30;25073:34;25053:18;;;25046:62;-1:-1:-1;;;25124:18:1;;;25117:32;25166:19;;33646:64:0::2;24793:398:1::0;33646:64:0::2;33780:12;::::0;;33722::::2;33780::::0;;;::::2;::::0;::::2;::::0;;;33747:10:::2;::::0;33771:7;;33739:54:::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33721:72;;;33808:7;33804:46;;33816:34;::::0;-1:-1:-1;;;33816:34:0;;24234:2:1;33816:34:0::2;::::0;::::2;24216:21:1::0;24273:2;24253:18;;;24246:30;-1:-1:-1;;;24292:18:1;;;24285:54;24356:18;;33816:34:0::2;24032:348:1::0;33804:46:0::2;-1:-1:-1::0;;6419:1:0::1;6712:22:::0;;-1:-1:-1;33471:387:0:o;29334:241::-;-1:-1:-1;;;;;15934:18:0;;29423:7;15934:18;;;:9;:18;;;;;;29451:5;:24;29443:80;;;;-1:-1:-1;;;29443:80:0;;20560:2:1;29443:80:0;;;20542:21:1;20599:2;20579:18;;;20572:30;20638:34;20618:18;;;20611:62;-1:-1:-1;;;20689:18:1;;;20682:41;20740:19;;29443:80:0;20358:407:1;29443:80:0;-1:-1:-1;;;;;;29541:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;29334:241::o;34429:128::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34506:12:::1;:43:::0;;-1:-1:-1;;;;;;34506:43:0::1;-1:-1:-1::0;;;;;34506:43:0;;;::::1;::::0;;;::::1;::::0;;34429:128::o;32705:432::-;32817:18;;;32833:1;32817:18;;;32761;32817;;;;;;32791:23;;32817:18;;;;;;;;;;;;;;;;;;;;;32791:44;;32846:30;32879:23;32893:8;32879:13;:23::i;:::-;32943:16;;;32957:1;32943:16;;;;;;;;32846:56;;-1:-1:-1;32913:27:0;;32943:16;;;;;;;;;;;;-1:-1:-1;32943:16:0;32913:46;;32986:13;29663:10;:17;;29583:105;32986:13;32970:10;32981:1;32970:13;;;;;;;;:::i;:::-;;;;;;:29;;;;;33026:16;;33010:10;33021:1;33010:13;;;;;;;;:::i;:::-;;;;;;:32;;;;;33063:13;33053:4;33058:1;33053:7;;;;;;;;:::i;:::-;;;;;;:23;;;;33097:10;33087:4;33092:1;33087:7;;;;;;;;:::i;:::-;;;;;;;;;;:20;-1:-1:-1;33125:4:0;;32705:432;-1:-1:-1;;;32705:432:0:o;20917:::-;21033:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;21083:9;21075:56;;;;-1:-1:-1;;;21075:56:0;;;;;;;:::i;:::-;21144:33;21154:4;21160:2;21164:8;21174:2;21144:9;:33::i;:::-;21246:40;21269:4;21275:2;21279;21246:40;;;;;;;;;;;;:22;:40::i;:::-;21238:103;;;;-1:-1:-1;;;21238:103:0;;;;;;;:::i;32353:340::-;32413:16;32442:18;32463:17;32473:6;-1:-1:-1;;;;;15934:18:0;15907:7;15934:18;;;:9;:18;;;;;;;15851:109;32463:17;32442:38;;32491:23;32531:10;-1:-1:-1;;;;;32517:25:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32517:25:0;;32491:51;;32557:9;32553:109;32576:10;32572:1;:14;32553:109;;;32620:30;32640:6;32648:1;32620:19;:30::i;:::-;32608:6;32615:1;32608:9;;;;;;;;:::i;:::-;;;;;;;;;;:42;32588:3;;;;:::i;:::-;;;;32553:109;;;-1:-1:-1;32679:6:0;32353:340;-1:-1:-1;;;32353:340:0:o;29696:208::-;29763:7;29799:13;29663:10;:17;;29583:105;29799:13;29791:5;:21;29783:78;;;;-1:-1:-1;;;29783:78:0;;28981:2:1;29783:78:0;;;28963:21:1;29020:2;29000:18;;;28993:30;29059:34;29039:18;;;29032:62;-1:-1:-1;;;29110:18:1;;;29103:42;29162:19;;29783:78:0;28779:408:1;29783:78:0;29879:10;29890:5;29879:17;;;;;;;;:::i;:::-;;;;;;;;;29872:24;;29696:208;;;:::o;13139:101::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;13213:19;;::::1;::::0;:8:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;:::-;;13139:101:::0;:::o;18806:1832::-;6463:1;6605:7;;:19;;6597:63;;;;-1:-1:-1;;;6597:63:0;;;;;;;:::i;:::-;6463:1;6671:7;:18;19015:16:::1;::::0;2869:10;;19015:25:::1;::::0;19034:6;;19015:25:::1;:::i;:::-;19002:9;:38;;18994:94;;;::::0;-1:-1:-1;;;18994:94:0;;28569:2:1;18994:94:0::1;::::0;::::1;28551:21:1::0;28608:2;28588:18;;;28581:30;28647:34;28627:18;;;28620:62;-1:-1:-1;;;28698:18:1;;;28691:41;28749:19;;18994:94:0::1;28367:407:1::0;18994:94:0::1;-1:-1:-1::0;;;;;19107:21:0;::::1;19099:65;;;::::0;-1:-1:-1;;;19099:65:0;;30225:2:1;19099:65:0::1;::::0;::::1;30207:21:1::0;30264:2;30244:18;;;30237:30;30303:33;30283:18;;;30276:61;30354:18;;19099:65:0::1;30023:355:1::0;19099:65:0::1;3157:4:::0;3181:7;-1:-1:-1;;;3181:7:0;;;;19183:9:::1;19175:56;;;;-1:-1:-1::0;;;19175:56:0::1;;;;;;;:::i;:::-;19250:28;::::0;::::1;;:36;;:28:::0;:36:::1;19242:103;;;::::0;-1:-1:-1;;;19242:103:0;;29802:2:1;19242:103:0::1;::::0;::::1;29784:21:1::0;29841:2;29821:18;;;29814:30;29880:34;29860:18;;;29853:62;-1:-1:-1;;;29931:18:1;;;29924:52;29993:19;;19242:103:0::1;29600:418:1::0;19242:103:0::1;19360:15;::::0;::::1;;:23;;:15:::0;:23:::1;19356:497;;;-1:-1:-1::0;;;;;19408:41:0;::::1;;::::0;;;:31:::1;:41;::::0;;;;;9351:1:::1;::::0;19408:50:::1;::::0;19452:6;;19408:50:::1;:::i;:::-;:90;;19400:148;;;::::0;-1:-1:-1;;;19400:148:0;;22201:2:1;19400:148:0::1;::::0;::::1;22183:21:1::0;22240:2;22220:18;;;22213:30;22279:34;22259:18;;;22252:62;-1:-1:-1;;;22330:18:1;;;22323:43;22383:19;;19400:148:0::1;21999:409:1::0;19400:148:0::1;19597:4;::::0;19613:26:::1;::::0;-1:-1:-1;;13962:2:1;13958:15;;;13954:53;19613:26:0::1;::::0;::::1;13942:66:1::0;19571:70:0::1;::::0;19590:5;;14024:12:1;;19613:26:0::1;;;;;;;;;;;;19603:37;;;;;;19571:18;:70::i;:::-;19563:125;;;::::0;-1:-1:-1;;;19563:125:0;;19332:2:1;19563:125:0::1;::::0;::::1;19314:21:1::0;19371:2;19351:18;;;19344:30;19410:34;19390:18;;;19383:62;-1:-1:-1;;;19461:18:1;;;19454:40;19511:19;;19563:125:0::1;19130:406:1::0;19563:125:0::1;19356:497;;;19774:28;::::0;-1:-1:-1;;;;;19729:32:0;::::1;;::::0;;;:22:::1;:32;::::0;;;;;:41:::1;::::0;19764:6;;19729:41:::1;:::i;:::-;:73;;19721:120;;;::::0;-1:-1:-1;;;19721:120:0;;18929:2:1;19721:120:0::1;::::0;::::1;18911:21:1::0;18968:2;18948:18;;;18941:30;19007:34;18987:18;;;18980:62;-1:-1:-1;;;19058:18:1;;;19051:32;19100:19;;19721:120:0::1;18727:398:1::0;19721:120:0::1;19865:29;19897:15;19905:6;19897:7;:15::i;:::-;19865:47;;19923:26;19952:10;19963:1;19952:13;;;;;;;;:::i;:::-;;;;;;;19923:42;;19976:25;20004:10;20015:1;20004:13;;;;;;;;:::i;:::-;;;;;;;19976:41;;20035:9;20030:381;20054:6;20050:1;:10;20030:381;;;20082:55;20111:1;20115:7;20124:9;20134:1;20124:12;;;;;;;;:::i;:::-;;;;;;;20082:20;:55::i;:::-;20178:7;20154;:21;20162:9;20172:1;20162:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;20154:21;;;;::::1;::::0;;;;;;;;-1:-1:-1;20154:21:0;;;:31;;-1:-1:-1;;;;;;20154:31:0::1;-1:-1:-1::0;;;;;20154:31:0;;::::1;;::::0;;20200:18;;::::1;::::0;;:9:::1;:18:::0;;;;;:23;;-1:-1:-1;;;20200:23:0::1;::::0;-1:-1:-1;;20200:23:0::1;:::i;:::-;;;;;;;;20266:8;20275:1;20266:11;;;;;;;;:::i;:::-;;;;;;;20238;:25;20250:9;20260:1;20250:12;;;;;;;;:::i;:::-;;;;;;;20238:25;;;;;;;;;;;:39;;;;20333:1;20292:24;:37;20317:8;20326:1;20317:11;;;;;;;;:::i;:::-;;;;;;;20292:37;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;20386:9;20396:1;20386:12;;;;;;;;:::i;:::-;;;;;;;20377:7;-1:-1:-1::0;;;;;20356:43:0::1;20373:1;-1:-1:-1::0;;;;;20356:43:0::1;-1:-1:-1::0;;;;;;;;;;;20356:43:0::1;;;;;;;;;20062:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20030:381;;;-1:-1:-1::0;20453:15:0::1;::::0;::::1;;:23;;:15:::0;:23:::1;20449:182;;;-1:-1:-1::0;;;;;20493:41:0;::::1;;::::0;;;:31:::1;:41;::::0;;;;:51;;20538:6;;20493:41;:51:::1;::::0;20538:6;;20493:51:::1;:::i;:::-;::::0;;;-1:-1:-1;20449:182:0::1;::::0;-1:-1:-1;20449:182:0::1;;-1:-1:-1::0;;;;;20577:32:0;::::1;;::::0;;;:22:::1;:32;::::0;;;;:42;;20613:6;;20577:32;:42:::1;::::0;20613:6;;20577:42:::1;:::i;:::-;::::0;;;-1:-1:-1;;20449:182:0::1;-1:-1:-1::0;;6419:1:0;6712:22;;-1:-1:-1;;;;;18806:1832:0:o;34569:1355::-;34685:18;;;34701:1;34685:18;;;34628:17;34685:18;;;;;;34658:24;;34685:18;;;;;;;;;;;;;;;;;;;;;34658:45;;34714:25;34756:7;-1:-1:-1;;;;;34742:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34742:22:0;;34714:50;;34775:25;34817:7;-1:-1:-1;;;;;34803:22:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34803:22:0;-1:-1:-1;34775:50:0;-1:-1:-1;34836:16:0;;;34920;34935:1;34920:12;:16;:::i;:::-;34910:27;34894:43;;34950:879;34968:7;34956:8;:19;34950:879;;34991:20;35357:5;35153:15;35200:5;2869:10;35106:206;;;;;;15266:19:1;;;;15301:12;;15294:28;;;;-1:-1:-1;;15360:2:1;15356:15;;;15352:53;15338:12;;;15331:75;15422:12;;;15415:28;;;15459:13;;35106:206:0;;;;;;;;;;;;35070:265;;;;;;35040:314;;:322;;;;:::i;:::-;34991:386;-1:-1:-1;35392:12:0;;35419:157;35440:8;35438:1;:10;35419:157;;;35492:8;35501:1;35492:11;;;;;;;;:::i;:::-;;;;;;;35476:12;:27;35473:88;;;35537:4;35527:14;;35473:88;35450:3;;;;:::i;:::-;;;;35419:157;;;-1:-1:-1;28120:4:0;28144:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28144:16:0;:30;;;35593:33;;;35619:7;35618:8;35593:33;35590:204;;;35667:12;35646:8;35655;35646:18;;;;;;;;:::i;:::-;;;;;;:33;;;;;35719:27;35733:12;35719:13;:27::i;:::-;35698:8;35707;35698:18;;;;;;;;:::i;:::-;;;;;;;;;;:48;35765:13;35777:1;35765:13;;:::i;:::-;;;35590:204;35808:9;35816:1;35808:9;;:::i;:::-;;;34976:853;;34950:879;;;35850:8;35839:5;35845:1;35839:8;;;;;;;;:::i;:::-;;;;;;:19;;;;35880:8;35869:5;35875:1;35869:8;;;;;;;;:::i;:::-;;;;;;;;;;:19;-1:-1:-1;35902:5:0;;34569:1355;-1:-1:-1;;;;;;34569:1355:0:o;5811:103::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;5876:30:::1;5903:1;5876:18;:30::i;:::-;5811:103::o:0;34319:98::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34384:6:::1;:25:::0;;-1:-1:-1;;;;;;34384:25:0::1;-1:-1:-1::0;;;;;34384:25:0;;;::::1;::::0;;;::::1;::::0;;34319:98::o;33149:314::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;6463:1:::1;6605:7;;:19;;6597:63;;;;-1:-1:-1::0;;;6597:63:0::1;;;;;;;:::i;:::-;6463:1;6671:7;:18:::0;33232:21:::2;33272:11:::0;33264:37:::2;;;::::0;-1:-1:-1;;;33264:37:0;;25398:2:1;33264:37:0::2;::::0;::::2;25380:21:1::0;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:43;25509:18;;33264:37:0::2;25196:337:1::0;33264:37:0::2;33371:12;::::0;;33313::::2;33371::::0;;;::::2;::::0;::::2;::::0;;;33338:10:::2;::::0;33362:7;;33330:54:::2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33312:72;;;33399:7;33395:46;;33407:34;::::0;-1:-1:-1;;;33407:34:0;;24234:2:1;33407:34:0::2;::::0;::::2;24216:21:1::0;24273:2;24253:18;;;24246:30;-1:-1:-1;;;24292:18:1;;;24285:54;24356:18;;33407:34:0::2;24032:348:1::0;33395:46:0::2;-1:-1:-1::0;;6419:1:0::1;6712:22:::0;;33149:314::o;15581:130::-;15649:4;15681:5;15674:3;:12;;:28;;;;-1:-1:-1;;15697:5:0;-1:-1:-1;15690:12:0;;15581:130::o;13033:98::-;13083:13;13116:7;13109:14;;;;;:::i;36035:93::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;36099:12:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;36099:21:0;;::::1;::::0;;;::::1;::::0;;36035:93::o;23407:796::-;23500:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;23550:9;23542:56;;;;-1:-1:-1;;;23542:56:0;;;;;;;:::i;:::-;23630:8;-1:-1:-1;;;;;23619:19:0;:7;-1:-1:-1;;;;;23619:19:0;;:50;;;;23661:8;-1:-1:-1;;;;;23642:27:0;:15;23654:2;23642:11;:15::i;:::-;-1:-1:-1;;;;;23642:27:0;;23619:50;:89;;;;23673:35;23690:7;23699:8;23673:16;:35::i;:::-;23611:145;;;;-1:-1:-1;;;23611:145:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23775:21:0;;23767:67;;;;-1:-1:-1;;;23767:67:0;;20158:2:1;23767:67:0;;;20140:21:1;20197:2;20177:18;;;20170:30;20236:34;20216:18;;;20209:62;-1:-1:-1;;;20287:18:1;;;20280:31;20328:19;;23767:67:0;19956:397:1;23767:67:0;23853:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;23853:22:0;;;:11;;:22;23845:74;;;;-1:-1:-1;;;23845:74:0;;;;;;;:::i;:::-;23931:45;23952:7;23969:1;23973:2;23931:20;:45::i;:::-;24037:1;24015:11;;;:7;:11;;;;;;;;:24;;-1:-1:-1;;;;;;24015:24:0;;;-1:-1:-1;;;;;24050:18:0;;;;:9;:18;;;;;:23;;24015:24;;24037:1;24050:23;;24015:24;;24050:23;:::i;:::-;;;;-1:-1:-1;;24091:33:0;;24121:2;;24117:1;;-1:-1:-1;;;;;24091:33:0;;;-1:-1:-1;;;;;;;;;;;24091:33:0;24117:1;;24091:33;-1:-1:-1;24193:1:0;24163:19;;;:15;:19;;;;;:32;;-1:-1:-1;;;;;;24163:32:0;;;-1:-1:-1;23407:796:0:o;17608:1186::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;17731:12:::1;::::0;:38:::1;::::0;;-1:-1:-1;;;17731:38:0;;;;17700:28:::1;::::0;-1:-1:-1;;;;;17731:12:0::1;::::0;:36:::1;::::0;:38:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:12;:38;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3157:4:::0;3181:7;17700:69;;-1:-1:-1;;;;3181:7:0;;;;17788:9:::1;17780:56;;;;-1:-1:-1::0;;;17780:56:0::1;;;;;;;:::i;:::-;17847:25;17875:14;17890:1;17875:17;;;;;;;;:::i;:::-;;;;;;;17847:45;;17903:25;17931:14;17946:1;17931:17;;;;;;;;:::i;:::-;;;;;;;17903:45;;17986:8;:15;17967:8;:15;:34;17959:43;;;::::0;::::1;;18030:15:::0;;18094:22:::1;::::0;18064:17:::1;::::0;:26:::1;::::0;18030:15;;18064:26:::1;:::i;:::-;:52;;18056:124;;;::::0;-1:-1:-1;;;18056:124:0;;26930:2:1;18056:124:0::1;::::0;::::1;26912:21:1::0;26969:2;26949:18;;;26942:30;27008:34;26988:18;;;26981:62;27079:29;27059:18;;;27052:57;27126:19;;18056:124:0::1;26728:423:1::0;18056:124:0::1;18196:9;18191:434;18215:8;:15;18211:1;:19;18191:434;;;18252:67;18281:1;18285:20;18307:8;18316:1;18307:11;;;;;;;;:::i;18252:67::-;-1:-1:-1::0;;;;;18334:31:0;::::1;;::::0;;;:9:::1;:31;::::0;;;;:36;;18369:1:::1;::::0;18334:31;:36:::1;::::0;18369:1;;18334:36:::1;:::i;:::-;;;;;;;;18408:20;18385:7;:20;18393:8;18402:1;18393:11;;;;;;;;:::i;:::-;;;;;;;18385:20;;;;;;;;;;;;:43;;;;;-1:-1:-1::0;;;;;18385:43:0::1;;;;;-1:-1:-1::0;;;;;18385:43:0::1;;;;;;18470:8;18479:1;18470:11;;;;;;;;:::i;:::-;;;;;;;18443;:24;18455:8;18464:1;18455:11;;;;;;;;:::i;:::-;;;;;;;18443:24;;;;;;;;;;;:38;;;;18537:1;18496:24;:37;18521:8;18530:1;18521:11;;;;;;;;:::i;:::-;;;;;;;18496:37;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;18601:8;18610:1;18601:11;;;;;;;;:::i;:::-;;;;;;;18579:20;-1:-1:-1::0;;;;;18558:55:0::1;18575:1;-1:-1:-1::0;;;;;18558:55:0::1;-1:-1:-1::0;;;;;;;;;;;18558:55:0::1;;;;;;;;;18232:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18191:434;;;;18658:6;18637:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18701:22:0::1;::::0;18680:17:::1;::::0;:43:::1;18677:110;;;18740:28;:35:::0;;-1:-1:-1;;18740:35:0::1;18771:4;18740:35;::::0;;18677:110:::1;17689:1105;;;;17608:1186:::0;:::o;34068:245::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34145:22:::1;:32:::0;;;34199:17:::1;::::0;:43;::::1;34196:110;;;34259:28;:35:::0;;-1:-1:-1;;34259:35:0::1;34290:4;34259:35;::::0;;34196:110:::1;34068:245:::0;:::o;16967:303::-;2869:10;-1:-1:-1;;;;;17064:24:0;;;;17056:76;;;;-1:-1:-1;;;17056:76:0;;24587:2:1;17056:76:0;;;24569:21:1;24626:2;24606:18;;;24599:30;24665:34;24645:18;;;24638:62;-1:-1:-1;;;24716:18:1;;;24709:37;24763:19;;17056:76:0;24385:403:1;17056:76:0;2869:10;17145:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;17145:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;17145:53:0;;;;;;;;;;17214:48;;17410:41:1;;;17145:42:0;;2869:10;17214:48;;17383:18:1;17214:48:0;;;;;;;16967:303;;:::o;26463:471::-;2869:10;26600:25;26617:7;26600:16;:25::i;:::-;26592:82;;;;-1:-1:-1;;;26592:82:0;;23821:2:1;26592:82:0;;;23803:21:1;23860:2;23840:18;;;23833:30;23899:34;23879:18;;;23872:62;-1:-1:-1;;;23950:18:1;;;23943:42;24002:19;;26592:82:0;23619:408:1;26592:82:0;26693:16;;;;:7;:16;;;;;;-1:-1:-1;;;;;26693:28:0;;;:16;;:28;;:64;;;26749:8;-1:-1:-1;;;;;26725:32:0;:20;26737:7;26725:11;:20::i;:::-;-1:-1:-1;;;;;26725:32:0;;26693:64;:103;;;;26761:35;26778:7;26787:8;26761:16;:35::i;:::-;26685:159;;;;-1:-1:-1;;;26685:159:0;;;;;;;:::i;:::-;26855:22;26860:7;26869;26855:4;:22::i;:::-;-1:-1:-1;;;;;26888:33:0;;;;;;:24;:33;;;;;:38;;26925:1;;26888:33;:38;;26925:1;;26888:38;:::i;:::-;;;;-1:-1:-1;;;;;26463:471:0:o;24211:1080::-;24319:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;24369:9;24361:56;;;;-1:-1:-1;;;24361:56:0;;;;;;;:::i;:::-;24445:8;-1:-1:-1;;;;;24434:19:0;:7;-1:-1:-1;;;;;24434:19:0;;;:67;;;;;24457:35;24474:7;24483:8;24457:16;:35::i;:::-;:44;24434:67;24430:262;;;24523:9;24518:163;24542:3;:10;24538:1;:14;24518:163;;;24609:8;-1:-1:-1;;;;;24586:31:0;:19;24598:3;24602:1;24598:6;;;;;;;;:::i;:::-;;;;;;;24586:11;:19::i;:::-;-1:-1:-1;;;;;24586:31:0;;24578:87;;;;-1:-1:-1;;;24578:87:0;;;;;;;:::i;:::-;24554:3;;;;:::i;:::-;;;;24518:163;;;;24430:262;24710:9;24705:146;24729:3;:10;24725:1;:14;24705:146;;;24788:7;-1:-1:-1;;;;;24769:26:0;:7;:15;24777:3;24781:1;24777:6;;;;;;;;:::i;:::-;;;;;;;;;;;;24769:15;;;;;;;;;;-1:-1:-1;24769:15:0;;-1:-1:-1;;;;;24769:15:0;:26;24761:78;;;;-1:-1:-1;;;24761:78:0;;;;;;;:::i;:::-;24741:3;;;;:::i;:::-;;;;24705:146;;;;24894:9;24889:255;24913:3;:10;24909:1;:14;24889:255;;;24945:49;24966:7;24983:1;24987:3;24991:1;24987:6;;;;;;;;:::i;24945:49::-;25035:1;25009:7;:15;25017:3;25021:1;25017:6;;;;;;;;:::i;:::-;;;;;;;;;;;;25009:15;;;;;;;;;;;;;-1:-1:-1;25009:15:0;;;:28;;-1:-1:-1;;;;;;25009:28:0;-1:-1:-1;;;;;25009:28:0;;;;;;25052:18;;;;;:9;:18;;;;;:23;;-1:-1:-1;;;25052:23:0;;-1:-1:-1;;25052:23:0;:::i;:::-;;;;;;;;25125:3;25129:1;25125:6;;;;;;;;:::i;:::-;;;;;;;25121:1;-1:-1:-1;;;;;25095:37:0;25104:7;-1:-1:-1;;;;;25095:37:0;-1:-1:-1;;;;;;;;;;;25095:37:0;;;;;;;;;24925:3;;;;:::i;:::-;;;;24889:255;;;;25187:9;25182:102;25204:3;:10;25200:1;:14;25182:102;;;25270:1;25236:15;:23;25252:3;25256:1;25252:6;;;;;;;;:::i;:::-;;;;;;;25236:23;;;;;;;;;;;;:36;;;;;-1:-1:-1;;;;;25236:36:0;;;;;-1:-1:-1;;;;;25236:36:0;;;;;;25216:3;;;;;:::i;:::-;;;;25182:102;;21357:475;21494:16;3181:7;2869:10;;-1:-1:-1;;;3181:7:0;;;;21544:9;21536:56;;;;-1:-1:-1;;;21536:56:0;;;;;;;:::i;:::-;21605:33;21615:4;21621:2;21625:8;21635:2;21605:9;:33::i;:::-;21725:42;21748:4;21754:2;21758;21762:4;;21725:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21725:22:0;;-1:-1:-1;;;21725:42:0:i;:::-;21717:105;;;;-1:-1:-1;;;21717:105:0;;;;;;;:::i;25299:1156::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;25459:6:::1;25440:8;:15;:25;25432:68;;;::::0;-1:-1:-1;;;25432:68:0;;23462:2:1;25432:68:0::1;::::0;::::1;23444:21:1::0;23501:2;23481:18;;;23474:30;23540:32;23520:18;;;23513:60;23590:18;;25432:68:0::1;23260:354:1::0;25432:68:0::1;8832:1;25519:10;:29;:56;;;;8876:1;25552:10;:23;25519:56;25511:107;;;::::0;-1:-1:-1;;;25511:107:0;;18522:2:1;25511:107:0::1;::::0;::::1;18504:21:1::0;18561:2;18541:18;;;18534:30;18600:34;18580:18;;;18573:62;-1:-1:-1;;;18651:18:1;;;18644:36;18697:19;;25511:107:0::1;18320:402:1::0;25511:107:0::1;25686:32;::::0;;;:20:::1;:32;::::0;;;;;;;;25637:24:::1;:36:::0;;;;;;;:45:::1;::::0;25676:6;;25637:45:::1;:::i;:::-;:81;;25629:147;;;;-1:-1:-1::0;;;25629:147:0::1;;;;;;;:::i;:::-;25789:21;8832:1;25827:10;:29;25823:241;;;8832:1;25911:41;::::0;:24:::1;:41;::::0;-1:-1:-1;;;;;;;;;;;25911:41:0;25889:19:::1;::::0;:63:::1;::::0;25911:41;25889:63:::1;:::i;:::-;25873:79;;25823:241;;;8876:1;26017:35;::::0;:24:::1;:35;::::0;;;26001:13:::1;::::0;:51:::1;::::0;26017:35;26001:51:::1;:::i;:::-;25985:67;;25823:241;26081:9;26076:312;26100:8;:15;26096:1;:19;26076:312;;;26137:15;26155:17;26171:1:::0;26155:13;:17:::1;:::i;:::-;26137:35;;26187:54;26216:1;26220:8;26229:1;26220:11;;;;;;;;:::i;:::-;;;;;;;26233:7;26187:20;:54::i;:::-;26275:8;26284:1;26275:11;;;;;;;;:::i;:::-;;;;;;;26256:7;:16;26264:7;26256:16;;;;;;;;;;;;:30;;;;;-1:-1:-1::0;;;;;26256:30:0::1;;;;;-1:-1:-1::0;;;;;26256:30:0::1;;;;;;26327:1;26301:9;:22;26311:8;26320:1;26311:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;26301:22:0::1;-1:-1:-1::0;;;;;26301:22:0::1;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26343:20:0::1;::::0;;;:11:::1;:20;::::0;;;;:33;;;26117:3;::::1;::::0;::::1;:::i;:::-;;;;26076:312;;;-1:-1:-1::0;26401:36:0::1;::::0;;;:24:::1;:36;::::0;;;;:46;;26441:6;;26401:36;:46:::1;::::0;26441:6;;26401:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;25299:1156:0:o;33870:92::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;33931:15:::1;:23:::0;;-1:-1:-1;;33931:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33870:92::o;13248:299::-;28120:4;28144:16;;;:7;:16;;;;;;13315:13;;-1:-1:-1;;;;;28144:16:0;13341:75;;;;-1:-1:-1;;;13341:75:0;;26514:2:1;13341:75:0;;;26496:21:1;26553:2;26533:18;;;26526:30;26592:34;26572:18;;;26565:62;-1:-1:-1;;;26643:18:1;;;26636:45;26698:19;;13341:75:0;26312:411:1;13341:75:0;13429:21;13453:8;13429:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13503:7;13512:25;13529:7;13512:16;:25::i;:::-;13486:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13472:67;;;13248:299;;;:::o;37010:110::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;37084:16:::1;:28:::0;37010:110::o;15719:124::-;15781:4;15813:5;15806:3;:12;;:28;;;;-1:-1:-1;;15829:5:0;-1:-1:-1;15822:12:0;;15719:124::o;36870:128::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;36952:28:::1;:38:::0;36870:128::o;33974:82::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;34036:4:::1;:12:::0;33974:82::o;17278:160::-;-1:-1:-1;;;;;17393:27:0;;;17369:4;17393:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;17278:160::o;5925:201::-;5630:7;5657:6;-1:-1:-1;;;;;5657:6:0;2869:10;5719:23;5711:68;;;;-1:-1:-1;;;5711:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6014:22:0;::::1;6006:73;;;::::0;-1:-1:-1;;;6006:73:0;;21391:2:1;6006:73:0::1;::::0;::::1;21373:21:1::0;21430:2;21410:18;;;21403:30;21469:34;21449:18;;;21442:62;-1:-1:-1;;;21520:18:1;;;21513:36;21566:19;;6006:73:0::1;21189:402:1::0;6006:73:0::1;6090:28;6109:8;6090:18;:28::i;13905:761::-:0;13958:7;14031:8;14027:632;;-1:-1:-1;8606:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14027:632::-;14104:1;14097:3;:8;;:20;;;;;14116:1;14109:3;:8;;14097:20;14093:566;;;-1:-1:-1;8645:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14093:566::-;14167:3;14174:1;14167:8;:21;;;;;14179:3;14186:2;14179:9;14167:21;14163:496;;;-1:-1:-1;8688:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14163:496::-;14249:2;14242:3;:9;;:24;;;;;14262:4;14255:3;:11;;14242:24;14238:421;;;-1:-1:-1;8733:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14238:421::-;14329:4;14322:3;:11;;:27;;;;;14344:5;14337:3;:12;;14322:27;14318:341;;;-1:-1:-1;8781:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14318:341::-;14415:5;14408:3;:12;;:28;;;;;14431:5;14424:3;:12;;14408:28;14404:255;;;-1:-1:-1;8832:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14404:255::-;14504:5;14497:3;:12;;:28;;;;;14520:5;14513:3;:12;;14497:28;14493:166;;;-1:-1:-1;8876:1:0;;13905:761;-1:-1:-1;13905:761:0:o;14493:166::-;14591:56;;-1:-1:-1;;;14591:56:0;;19743:2:1;14591:56:0;;;19725:21:1;19782:2;19762:18;;;19755:30;19821:34;19801:18;;;19794:62;-1:-1:-1;;;19872:18:1;;;19865:44;19926:19;;14591:56:0;19541:410:1;14493:166:0;13905:761;;;:::o;29919:516::-;-1:-1:-1;;;;;30052:18:0;;30048:187;;30087:40;30119:7;30769:10;:17;;30742:24;;;;:15;:24;;;;;:44;;;30797:24;;;;;;;;;;;;30665:164;30087:40;30048:187;;;30157:2;-1:-1:-1;;;;;30149:10:0;:4;-1:-1:-1;;;;;30149:10:0;;30145:90;;30176:47;30209:4;30215:7;30176:32;:47::i;:::-;-1:-1:-1;;;;;30249:16:0;;30245:183;;30282:45;30319:7;30282:36;:45::i;:::-;29919:516;;;:::o;30245:183::-;30355:4;-1:-1:-1;;;;;30349:10:0;:2;-1:-1:-1;;;;;30349:10:0;;30345:83;;-1:-1:-1;;;;;15934:18:0;;;;30528:14;15934:18;;;:9;:18;;;;;;;;;30569:12;:16;;;;;:24;;;;;;;;:34;;;30614:26;;;:17;:26;;;;;:35;-1:-1:-1;29919:516:0:o;28190:756::-;28302:4;-1:-1:-1;;;;;28323:13:0;;5269:20;5317:8;28319:620;;28359:72;;-1:-1:-1;;;28359:72:0;;-1:-1:-1;;;;;28359:36:0;;;;;:72;;2869:10;;28410:4;;28416:7;;28425:5;;28359:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28359:72:0;;;;;;;;-1:-1:-1;;28359:72:0;;;;;;;;;;;;:::i;:::-;;;28355:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28601:13:0;;28597:272;;28644:60;;-1:-1:-1;;;28644:60:0;;;;;;;:::i;28597:272::-;28819:6;28813:13;28804:6;28800:2;28796:15;28789:38;28355:529;-1:-1:-1;;;;;;28482:51:0;-1:-1:-1;;;28482:51:0;;-1:-1:-1;28475:58:0;;28319:620;-1:-1:-1;28923:4:0;28319:620;28190:756;;;;;;:::o;21840:528::-;21951:11;;;;:7;:11;;;;;;-1:-1:-1;;;;;21951:19:0;;;:11;;:19;21943:28;;;;;;21998:8;-1:-1:-1;;;;;21990:16:0;:4;-1:-1:-1;;;;;21990:16:0;;:47;;;;22029:8;-1:-1:-1;;;;;22010:27:0;:15;22022:2;22010:11;:15::i;:::-;-1:-1:-1;;;;;22010:27:0;;21990:47;:83;;;;22041:32;22058:4;22064:8;22041:16;:32::i;:::-;21982:139;;;;-1:-1:-1;;;21982:139:0;;;;;;;:::i;:::-;22132:34;22153:4;22159:2;22163;22132:20;:34::i;:::-;-1:-1:-1;;;;;22201:15:0;;;;;;:9;:15;;;;;:20;;22220:1;;22201:15;:20;;22220:1;;22201:20;:::i;:::-;;;;-1:-1:-1;;;;;;;22232:13:0;;;;;;:9;:13;;;;;:18;;22249:1;;22232:13;:18;;22249:1;;22232:18;:::i;:::-;;;;-1:-1:-1;;22261:11:0;;;;:7;:11;;;;;;:16;;-1:-1:-1;;;;;;22261:16:0;-1:-1:-1;;;;;22261:16:0;;;;;;;;;22295:22;;22261:11;;22295:22;;;;-1:-1:-1;;;;;;;;;;;22295:22:0;;22358:1;22328:19;;;:15;:19;;;;;:32;;-1:-1:-1;;;;;;22328:32:0;;;-1:-1:-1;;;21840:528:0:o;6782:190::-;6907:4;6960;6931:25;6944:5;6951:4;6931:12;:25::i;:::-;:33;;6782:190;-1:-1:-1;;;;6782:190:0:o;36140:718::-;36226:8;;36191:18;;36226:8;;36225:9;:26;;;;-1:-1:-1;36239:12:0;;;;;;;36238:13;36225:26;36222:629;;;36271:6;;;;;;;;;-1:-1:-1;;;;;36271:6:0;-1:-1:-1;;;;;36271:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36271:25:0;;;;;;;;;;;;:::i;:::-;;;36267:300;;36405:22;36430:21;36443:7;36430:12;:21::i;:::-;36405:46;;36475:47;36489:3;36494:15;36511:10;36475:47;;;;;;;;:::i;:::-;;;;;;;;36548:3;36140:718;-1:-1:-1;;36140:718:0:o;36222:629::-;36588:8;;;;36587:9;:25;;;;-1:-1:-1;36600:12:0;;;;;;;36587:25;36584:267;;;36635:6;;;;;;;;;-1:-1:-1;;;;;36635:6:0;-1:-1:-1;;;;;36635:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36635:25:0;;;;;;;;;;;;:::i;36584:267::-;36693:22;36718:21;36731:7;36718:12;:21::i;6138:191::-;6212:16;6231:6;;-1:-1:-1;;;;;6248:17:0;;;-1:-1:-1;;;;;;6248:17:0;;;;;;6281:40;;6231:6;;;;;;;6281:40;;6212:16;6281:40;6201:128;6138:191;:::o;3751:532::-;3807:13;3837:10;3833:53;;-1:-1:-1;;3864:10:0;;;;;;;;;;;;-1:-1:-1;;;3864:10:0;;;;;3751:532::o;3833:53::-;3911:5;3896:12;3952:78;3959:9;;3952:78;;3985:8;;;;:::i;:::-;;-1:-1:-1;4008:10:0;;-1:-1:-1;4016:2:0;4008:10;;:::i;:::-;;;3952:78;;;4040:19;4072:6;-1:-1:-1;;;;;4062:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4062:17:0;;4040:39;;4090:154;4097:10;;4090:154;;4124:11;4134:1;4124:11;;:::i;:::-;;-1:-1:-1;4193:10:0;4201:2;4193:5;:10;:::i;:::-;4180:24;;:2;:24;:::i;:::-;4167:39;;4150:6;4157;4150:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4150:56:0;;;;;;;;-1:-1:-1;4221:11:0;4230:2;4221:11;;:::i;:::-;;;4090:154;;30837:981;-1:-1:-1;;;;;15934:18:0;;31103:22;15934:18;;;:9;:18;;;;;;31128:19;;31146:1;;31128:19;:::i;:::-;31158:18;31179:26;;;:17;:26;;;;;;31103:44;;-1:-1:-1;31312:28:0;;;31308:328;;-1:-1:-1;;;;;31379:18:0;;31357:19;31379:18;;;:12;:18;;;;;;;;:34;;;;;;;;;31430:30;;;;;;:44;;;31547:30;;:17;:30;;;;;:43;;;31308:328;-1:-1:-1;31732:26:0;;;;:17;:26;;;;;;;;31725:33;;;-1:-1:-1;;;;;31776:18:0;;;;;:12;:18;;;;;:34;;;;;;;31769:41;30837:981::o;31826:515::-;31933:10;:17;31908:22;;31933:21;;31953:1;;31933:21;:::i;:::-;31965:18;31986:24;;;:15;:24;;;;;;32043:10;:26;;31908:46;;-1:-1:-1;31986:24:0;;31908:46;;32043:26;;;;;;:::i;:::-;;;;;;;;;32021:48;;32107:11;32082:10;32093;32082:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;32187:28;;;:15;:28;;;;;;;:41;;;32282:24;;;;;32275:31;32317:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;31897:444;;;31826:515;:::o;6986:701::-;7069:7;7112:4;7069:7;7127:523;7151:5;:12;7147:1;:16;7127:523;;;7185:20;7208:5;7214:1;7208:8;;;;;;;;:::i;:::-;;;;;;;7185:31;;7251:12;7235;:28;7231:408;;7388:44;;;;;;14204:19:1;;;14239:12;;;14232:28;;;14276:12;;7388:44:0;;;;;;;;;;;;7378:55;;;;;;7363:70;;7231:408;;;7578:44;;;;;;14204:19:1;;;14239:12;;;14232:28;;;14276:12;;7578:44:0;;;;;;;;;;;;7568:55;;;;;;7553:70;;7231:408;-1:-1:-1;7165:3:0;;;;:::i;:::-;;;;7127:523;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:673:1;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:160::-;757:20;;813:13;;806:21;796:32;;786:60;;842:1;839;832:12;857:247;916:6;969:2;957:9;948:7;944:23;940:32;937:52;;;985:1;982;975:12;937:52;1024:9;1011:23;1043:31;1068:5;1043:31;:::i;:::-;1093:5;857:247;-1:-1:-1;;;857:247:1:o;1109:251::-;1179:6;1232:2;1220:9;1211:7;1207:23;1203:32;1200:52;;;1248:1;1245;1238:12;1200:52;1280:9;1274:16;1299:31;1324:5;1299:31;:::i;1365:388::-;1433:6;1441;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;:::-;1618:5;-1:-1:-1;1675:2:1;1660:18;;1647:32;1688:33;1647:32;1688:33;:::i;:::-;1740:7;1730:17;;;1365:388;;;;;:::o;1758:891::-;1862:6;1870;1878;1886;1939:2;1927:9;1918:7;1914:23;1910:32;1907:52;;;1955:1;1952;1945:12;1907:52;1994:9;1981:23;2013:31;2038:5;2013:31;:::i;:::-;2063:5;-1:-1:-1;2120:2:1;2105:18;;2092:32;2133:33;2092:32;2133:33;:::i;:::-;2185:7;-1:-1:-1;2243:2:1;2228:18;;2215:32;-1:-1:-1;;;;;2296:14:1;;;2293:34;;;2323:1;2320;2313:12;2293:34;2361:6;2350:9;2346:22;2336:32;;2406:7;2399:4;2395:2;2391:13;2387:27;2377:55;;2428:1;2425;2418:12;2377:55;2468:2;2455:16;2494:2;2486:6;2483:14;2480:34;;;2510:1;2507;2500:12;2480:34;2563:7;2558:2;2548:6;2545:1;2541:14;2537:2;2533:23;2529:32;2526:45;2523:65;;;2584:1;2581;2574:12;2523:65;1758:891;;;;-1:-1:-1;;2615:2:1;2607:11;;-1:-1:-1;;;1758:891:1:o;2654:456::-;2731:6;2739;2747;2800:2;2788:9;2779:7;2775:23;2771:32;2768:52;;;2816:1;2813;2806:12;2768:52;2855:9;2842:23;2874:31;2899:5;2874:31;:::i;:::-;2924:5;-1:-1:-1;2981:2:1;2966:18;;2953:32;2994:33;2953:32;2994:33;:::i;:::-;2654:456;;3046:7;;-1:-1:-1;;;3100:2:1;3085:18;;;;3072:32;;2654:456::o;3115:936::-;3212:6;3220;3228;3236;3244;3297:3;3285:9;3276:7;3272:23;3268:33;3265:53;;;3314:1;3311;3304:12;3265:53;3353:9;3340:23;3372:31;3397:5;3372:31;:::i;:::-;3422:5;-1:-1:-1;3479:2:1;3464:18;;3451:32;3492:33;3451:32;3492:33;:::i;:::-;3544:7;-1:-1:-1;3598:2:1;3583:18;;3570:32;;-1:-1:-1;3653:2:1;3638:18;;3625:32;-1:-1:-1;;;;;3706:14:1;;;3703:34;;;3733:1;3730;3723:12;3703:34;3771:6;3760:9;3756:22;3746:32;;3816:7;3809:4;3805:2;3801:13;3797:27;3787:55;;3838:1;3835;3828:12;3787:55;3878:2;3865:16;3904:2;3896:6;3893:14;3890:34;;;3920:1;3917;3910:12;3890:34;3965:7;3960:2;3951:6;3947:2;3943:15;3939:24;3936:37;3933:57;;;3986:1;3983;3976:12;3933:57;3115:936;;;;-1:-1:-1;3115:936:1;;-1:-1:-1;4017:2:1;4009:11;;4039:6;3115:936;-1:-1:-1;;;3115:936:1:o;4056:483::-;4149:6;4157;4210:2;4198:9;4189:7;4185:23;4181:32;4178:52;;;4226:1;4223;4216:12;4178:52;4265:9;4252:23;4284:31;4309:5;4284:31;:::i;:::-;4334:5;-1:-1:-1;4390:2:1;4375:18;;4362:32;-1:-1:-1;;;;;4406:30:1;;4403:50;;;4449:1;4446;4439:12;4403:50;4472:61;4525:7;4516:6;4505:9;4501:22;4472:61;:::i;:::-;4462:71;;;4056:483;;;;;:::o;4544:315::-;4609:6;4617;4670:2;4658:9;4649:7;4645:23;4641:32;4638:52;;;4686:1;4683;4676:12;4638:52;4725:9;4712:23;4744:31;4769:5;4744:31;:::i;:::-;4794:5;-1:-1:-1;4818:35:1;4849:2;4834:18;;4818:35;:::i;:::-;4808:45;;4544:315;;;;;:::o;4864:::-;4932:6;4940;4993:2;4981:9;4972:7;4968:23;4964:32;4961:52;;;5009:1;5006;4999:12;4961:52;5048:9;5035:23;5067:31;5092:5;5067:31;:::i;:::-;5117:5;5169:2;5154:18;;;;5141:32;;-1:-1:-1;;;4864:315:1:o;5184:1105::-;5286:6;5294;5302;5355:2;5343:9;5334:7;5330:23;5326:32;5323:52;;;5371:1;5368;5361:12;5323:52;5410:9;5397:23;5429:31;5454:5;5429:31;:::i;:::-;5479:5;-1:-1:-1;5503:2:1;5537:18;;;5524:32;;-1:-1:-1;5607:2:1;5592:18;;5579:32;-1:-1:-1;;;;;5623:30:1;;5620:50;;;5666:1;5663;5656:12;5620:50;5689:22;;5742:4;5734:13;;5730:27;-1:-1:-1;5720:55:1;;5771:1;5768;5761:12;5720:55;5807:2;5794:16;5830:60;5846:43;5886:2;5846:43;:::i;5830:60::-;5912:3;5936:2;5931:3;5924:15;5964:2;5959:3;5955:12;5948:19;;5995:2;5991;5987:11;6043:7;6038:2;6032;6029:1;6025:10;6021:2;6017:19;6013:28;6010:41;6007:61;;;6064:1;6061;6054:12;6007:61;6086:1;6077:10;;6096:163;6110:2;6107:1;6104:9;6096:163;;;6167:17;;6155:30;;6128:1;6121:9;;;;;6205:12;;;;6237;;6096:163;;;6100:3;6278:5;6268:15;;;;;;;5184:1105;;;;;:::o;6294:383::-;6371:6;6379;6387;6440:2;6428:9;6419:7;6415:23;6411:32;6408:52;;;6456:1;6453;6446:12;6408:52;6495:9;6482:23;6514:31;6539:5;6514:31;:::i;:::-;6564:5;6616:2;6601:18;;6588:32;;-1:-1:-1;6667:2:1;6652:18;;;6639:32;;6294:383;-1:-1:-1;;;6294:383:1:o;6682:1127::-;6791:6;6822:2;6865;6853:9;6844:7;6840:23;6836:32;6833:52;;;6881:1;6878;6871:12;6833:52;6921:9;6908:23;-1:-1:-1;;;;;6991:2:1;6983:6;6980:14;6977:34;;;7007:1;7004;6997:12;6977:34;7045:6;7034:9;7030:22;7020:32;;7090:7;7083:4;7079:2;7075:13;7071:27;7061:55;;7112:1;7109;7102:12;7061:55;7148:2;7135:16;7171:60;7187:43;7227:2;7187:43;:::i;7171:60::-;7253:3;7277:2;7272:3;7265:15;7305:2;7300:3;7296:12;7289:19;;7336:2;7332;7328:11;7384:7;7379:2;7373;7370:1;7366:10;7362:2;7358:19;7354:28;7351:41;7348:61;;;7405:1;7402;7395:12;7348:61;7427:1;7448;7458:321;7474:2;7469:3;7466:11;7458:321;;;7555:3;7542:17;7591:2;7578:11;7575:19;7572:39;;;7607:1;7604;7597:12;7572:39;7636:68;7696:7;7691:2;7677:11;7673:2;7669:20;7665:29;7636:68;:::i;:::-;7624:81;;-1:-1:-1;7725:12:1;;;;7757;;;;7496:1;7487:11;7458:321;;;-1:-1:-1;7798:5:1;;6682:1127;-1:-1:-1;;;;;;;;;;6682:1127:1:o;7814:1703::-;7934:6;7965:2;8008;7996:9;7987:7;7983:23;7979:32;7976:52;;;8024:1;8021;8014:12;7976:52;8057:9;8051:16;-1:-1:-1;;;;;8127:2:1;8119:6;8116:14;8113:34;;;8143:1;8140;8133:12;8113:34;8181:6;8170:9;8166:22;8156:32;;8226:7;8219:4;8215:2;8211:13;8207:27;8197:55;;8248:1;8245;8238:12;8197:55;8277:2;8271:9;8300:60;8316:43;8356:2;8316:43;:::i;8300:60::-;8382:3;8406:2;8401:3;8394:15;8434:2;8429:3;8425:12;8418:19;;8465:2;8461;8457:11;8513:7;8508:2;8502;8499:1;8495:10;8491:2;8487:19;8483:28;8480:41;8477:61;;;8534:1;8531;8524:12;8477:61;8556:1;8566:921;8580:2;8577:1;8574:9;8566:921;;;8650:3;8644:10;8686:2;8673:11;8670:19;8667:39;;;8702:1;8699;8692:12;8667:39;8729:20;;8784:2;8776:11;;8772:25;-1:-1:-1;8762:53:1;;8811:1;8808;8801:12;8762:53;8852:2;8848;8844:11;8838:18;8882:60;8898:43;8938:2;8898:43;:::i;8882:60::-;8968:5;9000:2;8993:5;8986:17;9036:2;9029:5;9025:14;9016:23;;9073:2;9069;9065:11;9125:7;9120:2;9114;9111:1;9107:10;9103:2;9099:19;9095:28;9092:41;9089:61;;;9146:1;9143;9136:12;9089:61;9174:1;9163:12;;9188:194;9204:2;9199:3;9196:11;9188:194;;;9275:12;;9261:27;;9226:1;9217:11;;;;;9314:14;;;;9354;;9188:194;;;-1:-1:-1;9395:18:1;;-1:-1:-1;;;9433:12:1;;;;9465;;;;8598:1;8591:9;8566:921;;;-1:-1:-1;9506:5:1;;7814:1703;-1:-1:-1;;;;;;;;;7814:1703:1:o;9522:180::-;9578:6;9631:2;9619:9;9610:7;9606:23;9602:32;9599:52;;;9647:1;9644;9637:12;9599:52;9670:26;9686:9;9670:26;:::i;9707:180::-;9766:6;9819:2;9807:9;9798:7;9794:23;9790:32;9787:52;;;9835:1;9832;9825:12;9787:52;-1:-1:-1;9858:23:1;;9707:180;-1:-1:-1;9707:180:1:o;9892:245::-;9950:6;10003:2;9991:9;9982:7;9978:23;9974:32;9971:52;;;10019:1;10016;10009:12;9971:52;10058:9;10045:23;10077:30;10101:5;10077:30;:::i;10142:249::-;10211:6;10264:2;10252:9;10243:7;10239:23;10235:32;10232:52;;;10280:1;10277;10270:12;10232:52;10312:9;10306:16;10331:30;10355:5;10331:30;:::i;10396:764::-;10465:6;10496:2;10539;10527:9;10518:7;10514:23;10510:32;10507:52;;;10555:1;10552;10545:12;10507:52;10595:9;10582:23;-1:-1:-1;;;;;10665:2:1;10657:6;10654:14;10651:34;;;10681:1;10678;10671:12;10651:34;10719:6;10708:9;10704:22;10694:32;;10764:7;10757:4;10753:2;10749:13;10745:27;10735:55;;10786:1;10783;10776:12;10735:55;10822:2;10809:16;10844:2;10840;10837:10;10834:36;;;10850:18;;:::i;:::-;10892:53;10935:2;10916:13;;-1:-1:-1;;10912:27:1;10908:36;;10892:53;:::i;:::-;10879:66;;10968:2;10961:5;10954:17;11008:7;11003:2;10998;10994;10990:11;10986:20;10983:33;10980:53;;;11029:1;11026;11019:12;10980:53;11084:2;11079;11075;11071:11;11066:2;11059:5;11055:14;11042:45;11128:1;11107:14;;;11103:23;;;11096:34;;;;-1:-1:-1;11111:5:1;10396:764;-1:-1:-1;;;10396:764:1:o;11350:1113::-;11452:6;11460;11468;11521:2;11509:9;11500:7;11496:23;11492:32;11489:52;;;11537:1;11534;11527:12;11489:52;11573:9;11560:23;11550:33;;11602:2;11651;11640:9;11636:18;11623:32;11613:42;;11706:2;11695:9;11691:18;11678:32;-1:-1:-1;;;;;11725:6:1;11722:30;11719:50;;;11765:1;11762;11755:12;11719:50;11788:22;;11841:4;11833:13;;11829:27;-1:-1:-1;11819:55:1;;11870:1;11867;11860:12;11819:55;11906:2;11893:16;11929:60;11945:43;11985:2;11945:43;:::i;11929:60::-;12011:3;12035:2;12030:3;12023:15;12063:2;12058:3;12054:12;12047:19;;12094:2;12090;12086:11;12142:7;12137:2;12131;12128:1;12124:10;12120:2;12116:19;12112:28;12109:41;12106:61;;;12163:1;12160;12153:12;12106:61;12185:1;12176:10;;12195:238;12209:2;12206:1;12203:9;12195:238;;;12280:3;12267:17;12297:31;12322:5;12297:31;:::i;:::-;12341:18;;12227:1;12220:9;;;;;12379:12;;;;12411;;12195:238;;12468:638;12531:3;12569:5;12563:12;12596:6;12591:3;12584:19;12622:4;12663:2;12658:3;12654:12;12688:11;12715;12708:18;;12765:6;12762:1;12758:14;12751:5;12747:26;12735:38;;12807:2;12800:5;12796:14;12828:1;12838:242;12852:6;12849:1;12846:13;12838:242;;;12923:5;12917:4;12913:16;12908:3;12901:29;12951:49;12995:4;12986:6;12980:13;12951:49;:::i;:::-;13058:12;;;;12943:57;-1:-1:-1;13023:15:1;;;;12874:1;12867:9;12838:242;;;-1:-1:-1;13096:4:1;;12468:638;-1:-1:-1;;;;;;;12468:638:1:o;13111:435::-;13164:3;13202:5;13196:12;13229:6;13224:3;13217:19;13255:4;13284:2;13279:3;13275:12;13268:19;;13321:2;13314:5;13310:14;13342:1;13352:169;13366:6;13363:1;13360:13;13352:169;;;13427:13;;13415:26;;13461:12;;;;13496:15;;;;13388:1;13381:9;13352:169;;;-1:-1:-1;13537:3:1;;13111:435;-1:-1:-1;;;;;13111:435:1:o;13551:257::-;13592:3;13630:5;13624:12;13657:6;13652:3;13645:19;13673:63;13729:6;13722:4;13717:3;13713:14;13706:4;13699:5;13695:16;13673:63;:::i;:::-;13790:2;13769:15;-1:-1:-1;;13765:29:1;13756:39;;;;13797:4;13752:50;;13551:257;-1:-1:-1;;13551:257:1:o;14299:274::-;14428:3;14466:6;14460:13;14482:53;14528:6;14523:3;14516:4;14508:6;14504:17;14482:53;:::i;:::-;14551:16;;;;;14299:274;-1:-1:-1;;14299:274:1:o;14578:470::-;14757:3;14795:6;14789:13;14811:53;14857:6;14852:3;14845:4;14837:6;14833:17;14811:53;:::i;:::-;14927:13;;14886:16;;;;14949:57;14927:13;14886:16;14983:4;14971:17;;14949:57;:::i;:::-;15022:20;;14578:470;-1:-1:-1;;;;14578:470:1:o;15691:488::-;-1:-1:-1;;;;;15960:15:1;;;15942:34;;16012:15;;16007:2;15992:18;;15985:43;16059:2;16044:18;;16037:34;;;16107:3;16102:2;16087:18;;16080:31;;;15885:4;;16128:45;;16153:19;;16145:6;16128:45;:::i;:::-;16120:53;15691:488;-1:-1:-1;;;;;;15691:488:1:o;16184:321::-;16413:2;16402:9;16395:21;16376:4;16433:66;16495:2;16484:9;16480:18;16472:6;16433:66;:::i;16510:489::-;16795:2;16784:9;16777:21;16758:4;16815:66;16877:2;16866:9;16862:18;16854:6;16815:66;:::i;:::-;16912:2;16897:18;;16890:34;;;;-1:-1:-1;;;;;;16960:32:1;;;;16955:2;16940:18;;;16933:60;16807:74;16510:489;-1:-1:-1;16510:489:1:o;17004:261::-;17183:2;17172:9;17165:21;17146:4;17203:56;17255:2;17244:9;17240:18;17232:6;17203:56;:::i;18096:219::-;18245:2;18234:9;18227:21;18208:4;18265:44;18305:2;18294:9;18290:18;18282:6;18265:44;:::i;20770:414::-;20972:2;20954:21;;;21011:2;20991:18;;;20984:30;21050:34;21045:2;21030:18;;21023:62;-1:-1:-1;;;21116:2:1;21101:18;;21094:48;21174:3;21159:19;;20770:414::o;21596:398::-;21798:2;21780:21;;;21837:2;21817:18;;;21810:30;21876:34;21871:2;21856:18;;21849:62;-1:-1:-1;;;21942:2:1;21927:18;;21920:32;21984:3;21969:19;;21596:398::o;22413:417::-;22615:2;22597:21;;;22654:2;22634:18;;;22627:30;22693:34;22688:2;22673:18;;22666:62;-1:-1:-1;;;22759:2:1;22744:18;;22737:51;22820:3;22805:19;;22413:417::o;25951:356::-;26153:2;26135:21;;;26172:18;;;26165:30;26231:34;26226:2;26211:18;;26204:62;26298:2;26283:18;;25951:356::o;29192:403::-;29394:2;29376:21;;;29433:2;29413:18;;;29406:30;29472:34;29467:2;29452:18;;29445:62;-1:-1:-1;;;29538:2:1;29523:18;;29516:37;29585:3;29570:19;;29192:403::o;30383:355::-;30585:2;30567:21;;;30624:2;30604:18;;;30597:30;30663:33;30658:2;30643:18;;30636:61;30729:2;30714:18;;30383:355::o;30743:407::-;30945:2;30927:21;;;30984:2;30964:18;;;30957:30;31023:34;31018:2;31003:18;;30996:62;-1:-1:-1;;;31089:2:1;31074:18;;31067:41;31140:3;31125:19;;30743:407::o;31337:275::-;31408:2;31402:9;31473:2;31454:13;;-1:-1:-1;;31450:27:1;31438:40;;-1:-1:-1;;;;;31493:34:1;;31529:22;;;31490:62;31487:88;;;31555:18;;:::i;:::-;31591:2;31584:22;31337:275;;-1:-1:-1;31337:275:1:o;31617:183::-;31677:4;-1:-1:-1;;;;;31702:6:1;31699:30;31696:56;;;31732:18;;:::i;:::-;-1:-1:-1;31777:1:1;31773:14;31789:4;31769:25;;31617:183::o;31805:128::-;31845:3;31876:1;31872:6;31869:1;31866:13;31863:39;;;31882:18;;:::i;:::-;-1:-1:-1;31918:9:1;;31805:128::o;31938:120::-;31978:1;32004;31994:35;;32009:18;;:::i;:::-;-1:-1:-1;32043:9:1;;31938:120::o;32063:168::-;32103:7;32169:1;32165;32161:6;32157:14;32154:1;32151:21;32146:1;32139:9;32132:17;32128:45;32125:71;;;32176:18;;:::i;:::-;-1:-1:-1;32216:9:1;;32063:168::o;32236:125::-;32276:4;32304:1;32301;32298:8;32295:34;;;32309:18;;:::i;:::-;-1:-1:-1;32346:9:1;;32236:125::o;32366:258::-;32438:1;32448:113;32462:6;32459:1;32456:13;32448:113;;;32538:11;;;32532:18;32519:11;;;32512:39;32484:2;32477:10;32448:113;;;32579:6;32576:1;32573:13;32570:48;;;-1:-1:-1;;32614:1:1;32596:16;;32589:27;32366:258::o;32629:380::-;32708:1;32704:12;;;;32751;;;32772:61;;32826:4;32818:6;32814:17;32804:27;;32772:61;32879:2;32871:6;32868:14;32848:18;32845:38;32842:161;;;32925:10;32920:3;32916:20;32913:1;32906:31;32960:4;32957:1;32950:15;32988:4;32985:1;32978:15;32842:161;;32629:380;;;:::o;33014:135::-;33053:3;-1:-1:-1;;33074:17:1;;33071:43;;;33094:18;;:::i;:::-;-1:-1:-1;33141:1:1;33130:13;;33014:135::o;33154:112::-;33186:1;33212;33202:35;;33217:18;;:::i;:::-;-1:-1:-1;33251:9:1;;33154:112::o;33271:127::-;33332:10;33327:3;33323:20;33320:1;33313:31;33363:4;33360:1;33353:15;33387:4;33384:1;33377:15;33403:127;33464:10;33459:3;33455:20;33452:1;33445:31;33495:4;33492:1;33485:15;33519:4;33516:1;33509:15;33535:127;33596:10;33591:3;33587:20;33584:1;33577:31;33627:4;33624:1;33617:15;33651:4;33648:1;33641:15;33667:127;33728:10;33723:3;33719:20;33716:1;33709:31;33759:4;33756:1;33749:15;33783:4;33780:1;33773:15;33799:127;33860:10;33855:3;33851:20;33848:1;33841:31;33891:4;33888:1;33881:15;33915:4;33912:1;33905:15;33931:131;-1:-1:-1;;;;;34006:31:1;;33996:42;;33986:70;;34052:1;34049;34042:12;34067:131;-1:-1:-1;;;;;;34141:32:1;;34131:43;;34121:71;;34188:1;34185;34178:12

Swarm Source

ipfs://f6962069aa3fa14caeae5ea33523e05f6f991abca9f2659833dfad42dc9f28fd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

The Official Divine Anarchy Collection. 10,011 Children of Anarchy.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.