ETH Price: $3,782.66 (-1.85%)
Gas: 21 Gwei

Contract

0x7Bb5DbF0d4F31d4a0feC294E0662c00521DD915C
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Write Floor Data198977232024-05-18 15:28:1110 days ago1716046091IN
0x7Bb5DbF0...521DD915C
0 ETH0.000779923.4914131
Write Floor Data198895542024-05-17 12:00:4712 days ago1715947247IN
0x7Bb5DbF0...521DD915C
0 ETH0.005441458.23807102
Write Floor Data198894942024-05-17 11:48:4712 days ago1715946527IN
0x7Bb5DbF0...521DD915C
0 ETH0.005113047.76042467
Write Floor Data198726392024-05-15 3:17:5914 days ago1715743079IN
0x7Bb5DbF0...521DD915C
0 ETH0.00193896.81211692
Write Floor Data198726332024-05-15 3:16:4714 days ago1715743007IN
0x7Bb5DbF0...521DD915C
0 ETH0.002265767.96082235
Write Floor Data198653962024-05-14 2:53:4715 days ago1715655227IN
0x7Bb5DbF0...521DD915C
0 ETH0.000987344.67723569
Write Dungeon Co...198228552024-05-08 4:06:5921 days ago1715141219IN
0x7Bb5DbF0...521DD915C
0 ETH0.000697814.33576408
Write Dungeon Co...198228032024-05-08 3:56:3521 days ago1715140595IN
0x7Bb5DbF0...521DD915C
0 ETH0.001179623.78731645
Write Dungeon Co...198211152024-05-07 22:17:3521 days ago1715120255IN
0x7Bb5DbF0...521DD915C
0 ETH0.000208944.69821646
Write Dungeon Co...198210972024-05-07 22:13:5921 days ago1715120039IN
0x7Bb5DbF0...521DD915C
0 ETH0.000299954.51831319
Write Dungeon Co...198210292024-05-07 22:00:2321 days ago1715119223IN
0x7Bb5DbF0...521DD915C
0 ETH0.000189064.251111
Write Floor Data197793892024-05-02 2:14:3527 days ago1714616075IN
0x7Bb5DbF0...521DD915C
0 ETH0.001528696.54796362
Write Floor Data197792642024-05-02 1:49:1127 days ago1714614551IN
0x7Bb5DbF0...521DD915C
0 ETH0.001274155.45768252
Write Floor Data197792052024-05-02 1:37:1127 days ago1714613831IN
0x7Bb5DbF0...521DD915C
0 ETH0.001589046.80646856
Write Floor Data197791452024-05-02 1:25:1127 days ago1714613111IN
0x7Bb5DbF0...521DD915C
0 ETH0.000714734.91905449
Write Floor Data197562712024-04-28 20:42:5930 days ago1714336979IN
0x7Bb5DbF0...521DD915C
0 ETH0.000879146.16997862
Write Dungeon Co...197498112024-04-27 23:01:2331 days ago1714258883IN
0x7Bb5DbF0...521DD915C
0 ETH0.000787644.44038993
Write Floor Data197498042024-04-27 22:59:5931 days ago1714258799IN
0x7Bb5DbF0...521DD915C
0 ETH0.000675754.65111164
Reset All Floors197497912024-04-27 22:57:2331 days ago1714258643IN
0x7Bb5DbF0...521DD915C
0 ETH0.000525384.26917135
Write Dungeon Co...197497682024-04-27 22:52:4731 days ago1714258367IN
0x7Bb5DbF0...521DD915C
0 ETH0.000679834.3727385
Write Floor Data197497432024-04-27 22:47:4731 days ago1714258067IN
0x7Bb5DbF0...521DD915C
0 ETH0.000769154.73615156
Write Floor Data197497382024-04-27 22:46:4731 days ago1714258007IN
0x7Bb5DbF0...521DD915C
0 ETH0.001030064.823569
Write Floor Data197497262024-04-27 22:44:2331 days ago1714257863IN
0x7Bb5DbF0...521DD915C
0 ETH0.000577814.63197525
Write Dungeon Co...197446732024-04-27 5:44:5932 days ago1714196699IN
0x7Bb5DbF0...521DD915C
0 ETH0.000950435.41917782
Write Dungeon Co...197444132024-04-27 4:52:4732 days ago1714193567IN
0x7Bb5DbF0...521DD915C
0 ETH0.000795635.11721536
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DungeonConfig

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: DungeonConfig.sol
// SPDX-License-Identifier: MIT
//
// DungeonConfig by DungeonMaster/@DungeonSpawner

pragma solidity ^0.8.0;

import "./Ownable.sol";

interface IDungeon {
    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface IDungeonRewards {
    function getStakedTokens(
        address owner
    )
        external
        view
        returns (uint256[] memory dungeons, uint256[] memory avatars);
}

contract DungeonConfig is Ownable {
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/
    event AssignPerms(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );
    event AssignGlobalPerms(address indexed from, address indexed to);
    event RevokeGlobalPerms(address indexed from, address indexed to);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/
    address public dungeonAddress;
    address public dungeonRewardsAddress;

    struct Permission {
        address grantedBy; // The address that granted the permission
        address grantedTo; // The address that received the permission
    }
    struct GlobalPermission {
        address grantedTo;
        address grantedBy;
    }

    struct FloorData {
        string txId; // transaction ID for the floor data
        uint256 version; // current version of the floor data (every resetAllFloors increments the version #, outdating previous entries)
    }

    struct DungeonData {
        bool locked;
        uint256 trialTimeout;
        bool randomizeLayout; // randomize layout indicates each floor after floor 1 has a random layout/environment
        string passwordHash; // DungeonMaster notes: not really secure, of course, since it's publically available, but the best we have
        string ownersMessage;
        string gameMode; // space theme, 3d, leaderboard, etc... and if starts with https:, NFT will redirect to url after loading up (use for streaming via rumble, etc)
        string tilesetOverride; // override tileset with this txid/url allowing owners further customization
    }

    // Mapping that tells us which version of the dungeon data we're dealing with 
    // (reseting all floors increments the version # -- saves us gas from having to clear all the existing dungeon floor data)
    mapping(uint256 => uint256) private tokenVersions;

    mapping(uint256 => DungeonData) public dungeons;
    // Mapping from tokenId to a mapping of floorNumber to FloorData
    mapping(uint256 => mapping(uint256 => FloorData)) public dungeonFloors;

    mapping(uint256 => Permission) public tokenPermissions;
    // Mapping to store global permissions
    mapping(address => GlobalPermission) public globalPermissions;

    string public BASE_CODE_TXID = ""; // base code txid

    constructor(address _dungeonAddress, address _dungeonRewardsAddress) {
        dungeonAddress = _dungeonAddress;
        dungeonRewardsAddress = _dungeonRewardsAddress;
    }

    modifier onlyOwnerOrStaker(uint256 tokenId) {
        IDungeon dungeon = IDungeon(dungeonAddress);
        address owner = dungeon.ownerOf(tokenId);
        bool isStaker = owner == dungeonRewardsAddress &&
            isTokenStakedByAddress(tokenId, msg.sender);

        require(
            owner == msg.sender || isStaker,
            "Caller is not owner or staker"
        );
        _;
    }

    function isTokenStakedByAddress(
        uint256 tokenId,
        address addressToCheck
    ) private view returns (bool) {
        IDungeonRewards rewards = IDungeonRewards(dungeonRewardsAddress);
        (uint256[] memory stakedDungeons, ) = rewards.getStakedTokens(
            addressToCheck
        );
        for (uint i = 0; i < stakedDungeons.length; i++) {
            if (stakedDungeons[i] == tokenId) {
                return true;
            }
        }
        return false;
    }

    modifier isPermitted(uint256 tokenId) {
        IDungeon dungeon = IDungeon(dungeonAddress);
        address owner = dungeon.ownerOf(tokenId);

        // First, check if msg.sender is the owner. If true, no further checks needed.
        if (
            owner == msg.sender ||
            (owner == dungeonRewardsAddress &&
                isTokenStakedByAddress(tokenId, msg.sender))
        ) {
            _;
            return;
        }

        // Global Permissions Check
        GlobalPermission memory globalPerm = globalPermissions[msg.sender];
        if (globalPerm.grantedTo == msg.sender) {
            bool isGlobalGrantorOwnerOrStaker = globalPerm.grantedBy == owner ||
                (owner == dungeonRewardsAddress &&
                    isTokenStakedByAddress(tokenId, globalPerm.grantedBy));

            if (isGlobalGrantorOwnerOrStaker) {
                _;
                return;
            }
        }

        // Only proceed to check permissions if the sender is not the owner or a staker.
        Permission memory permission = tokenPermissions[tokenId];
        bool hasValidPermission = permission.grantedTo == msg.sender &&
            (permission.grantedBy == owner ||
                (owner == dungeonRewardsAddress &&
                    isTokenStakedByAddress(tokenId, permission.grantedBy)));

        require(hasValidPermission, "Not authorized");

        _;
    }

    function writeDungeonConfig(
        uint256 tokenId,
        DungeonData memory configData
    ) public isPermitted(tokenId) {
        DungeonData storage dungeon = dungeons[tokenId];
        dungeon.locked = configData.locked;
        dungeon.trialTimeout = configData.trialTimeout;
        dungeon.randomizeLayout = configData.randomizeLayout;
        dungeon.passwordHash = configData.passwordHash;
        dungeon.ownersMessage = configData.ownersMessage;
        dungeon.gameMode = configData.gameMode;
        dungeon.tilesetOverride = configData.tilesetOverride;
    }

    // same as above, but without tilesetOverride - costs about half the gas
    function writeDungeonConfig(
        uint256 tokenId,
        bool locked,
        uint256 trialTimeout,
        bool randomizeLayout,
        string memory passwordHash,
        string memory ownersMessage,
        string memory gameMode
    ) public isPermitted(tokenId) {
        DungeonData storage dungeon = dungeons[tokenId];
        dungeon.locked = locked;
        dungeon.trialTimeout = trialTimeout;
        dungeon.randomizeLayout = randomizeLayout;
        dungeon.passwordHash = passwordHash;
        dungeon.ownersMessage = ownersMessage;
        dungeon.gameMode = gameMode;
    }

    function readDungeonConfig(
        uint256 tokenId
    )
        public
        view
        returns (
            bool locked,
            uint256 trialTimeout,
            bool randomizeLayout,
            string memory passwordHash,
            string memory ownersMessage,
            string memory gameMode,
            string memory tilesetOverride,
            string memory codeTxId
        )
    {
        DungeonData memory dungeon = dungeons[tokenId];

        // could directly assing the fields from the dungeon struct to construct the return values as per the
        // 2nd version of this function, but it's just as gas efficient to wrap it in a return like this
        return (
            dungeon.locked,
            dungeon.trialTimeout,
            dungeon.randomizeLayout,
            dungeon.passwordHash,
            dungeon.ownersMessage,
            dungeon.gameMode,
            dungeon.tilesetOverride,
            BASE_CODE_TXID
        );
    }

    // read Dungeon Config with custom floors
    function readDungeonConfig(
        uint256 tokenId, uint256 maxFloorNumber
    )
        public
        view
        returns (
            bool locked,
            uint256 trialTimeout,
            bool randomizeLayout,
            string memory passwordHash,
            string memory ownersMessage,
            string memory gameMode,
            string memory tilesetOverride,
            string memory codeTxId,
            uint256[] memory customFloors
        )
    {
        DungeonData memory dungeon = dungeons[tokenId];
        uint256 currentVersion = tokenVersions[tokenId];

        // Directly use the fields from the dungeon struct to construct the return values
        locked = dungeon.locked;
        trialTimeout = dungeon.trialTimeout;
        randomizeLayout = dungeon.randomizeLayout;
        passwordHash = dungeon.passwordHash;
        ownersMessage = dungeon.ownersMessage;
        gameMode = dungeon.gameMode;
        tilesetOverride = dungeon.tilesetOverride;
        codeTxId = BASE_CODE_TXID;

        // Use the helper function to get customFloors - do it this way to avoid CompilerError: Stack too deep
        customFloors = getCustomFloors(tokenId, maxFloorNumber, currentVersion);
    }

    // collect customFloors data
    function getCustomFloors(uint256 tokenId, uint256 maxFloorNumber, uint256 currentVersion)
        internal
        view
        returns (uint256[] memory customFloors)
    {
        uint256[] memory tempFloors = new uint256[](maxFloorNumber);
        uint256 count = 0;

        for (uint256 floor = 0; floor <= maxFloorNumber; floor++) {
            if (dungeonFloors[tokenId][floor].version == currentVersion &&
                bytes(dungeonFloors[tokenId][floor].txId).length > 0) {
                tempFloors[count] = floor;
                count++;
            }
        }

        customFloors = new uint256[](count);
        for (uint256 i = 0; i < count; i++) {
            customFloors[i] = tempFloors[i];
        }
    }

    function writeFloorData(
        uint256 tokenId,
        uint256 floorNumber,
        string memory txId
    ) public isPermitted(tokenId) {
        // Store the transaction ID for the specific floor
        dungeonFloors[tokenId][floorNumber] = FloorData(txId, tokenVersions[tokenId]);
    }

    function readFloorData(
        uint256 tokenId,
        uint256 floorNumber
    ) public view returns (string memory) {
         FloorData memory floorData = dungeonFloors[tokenId][floorNumber];
        // Return the transaction ID for the specific floor
        if(floorData.version == tokenVersions[tokenId]) {
            return floorData.txId;
        } else {
            return ""; // Indicates no data for the current version
        }        
    }

    function resetAllFloors(uint256 tokenId) public isPermitted(tokenId) { 
        tokenVersions[tokenId] += 1; // Increment the version to "reset" the data
    }

    function assignPermission(
        uint256 tokenId,
        address to
    ) public onlyOwnerOrStaker(tokenId) {
        tokenPermissions[tokenId] = Permission(msg.sender, to);

        emit AssignPerms(msg.sender, to, tokenId);
    }

    // Assign global permission
    function assignGlobalPermission(address to) public {
        globalPermissions[to] = GlobalPermission({
            grantedTo: to,
            grantedBy: msg.sender
        });

        emit AssignGlobalPerms(msg.sender, to);
    }

    // Optional: Function to revoke global permission
    function revokeGlobalPermission(address to) public {
        require(
            globalPermissions[to].grantedBy == msg.sender,
            "Not authorized to revoke"
        );
        delete globalPermissions[to];
        emit RevokeGlobalPerms(msg.sender, to);
    }

    // set the ethscription txid of the base codebase
    function setBaseCodeTxid(string memory baseCodeTxid) public onlyOwner {
        BASE_CODE_TXID = baseCodeTxid;
    }

    // read the ethscription txid of the base codebase
    function getBaseCodeTxid() public view returns (string memory) {
        return BASE_CODE_TXID;
    }

}

File 2 of 2: Ownable.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.10;

error NotOwner();

// https://github.com/m1guelpf/erc721-drop/blob/main/src/LilOwnable.sol
abstract contract Ownable {
    address internal _owner;

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

    modifier onlyOwner() {
        require(_owner == msg.sender);
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

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

    function transferOwnership(address _newOwner) external {
        if (msg.sender != _owner) revert NotOwner();

        _owner = _newOwner;
    }

    function renounceOwnership() public {
        if (msg.sender != _owner) revert NotOwner();

        _owner = address(0);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        pure
        virtual
        returns (bool)
    {
        return interfaceId == 0x7f5828d0; // ERC165 Interface ID for ERC173
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dungeonAddress","type":"address"},{"internalType":"address","name":"_dungeonRewardsAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"AssignGlobalPerms","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":"AssignPerms","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"RevokeGlobalPerms","type":"event"},{"inputs":[],"name":"BASE_CODE_TXID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"assignGlobalPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"assignPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dungeonAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dungeonFloors","outputs":[{"internalType":"string","name":"txId","type":"string"},{"internalType":"uint256","name":"version","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dungeonRewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dungeons","outputs":[{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"trialTimeout","type":"uint256"},{"internalType":"bool","name":"randomizeLayout","type":"bool"},{"internalType":"string","name":"passwordHash","type":"string"},{"internalType":"string","name":"ownersMessage","type":"string"},{"internalType":"string","name":"gameMode","type":"string"},{"internalType":"string","name":"tilesetOverride","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseCodeTxid","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"globalPermissions","outputs":[{"internalType":"address","name":"grantedTo","type":"address"},{"internalType":"address","name":"grantedBy","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"readDungeonConfig","outputs":[{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"trialTimeout","type":"uint256"},{"internalType":"bool","name":"randomizeLayout","type":"bool"},{"internalType":"string","name":"passwordHash","type":"string"},{"internalType":"string","name":"ownersMessage","type":"string"},{"internalType":"string","name":"gameMode","type":"string"},{"internalType":"string","name":"tilesetOverride","type":"string"},{"internalType":"string","name":"codeTxId","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"maxFloorNumber","type":"uint256"}],"name":"readDungeonConfig","outputs":[{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"trialTimeout","type":"uint256"},{"internalType":"bool","name":"randomizeLayout","type":"bool"},{"internalType":"string","name":"passwordHash","type":"string"},{"internalType":"string","name":"ownersMessage","type":"string"},{"internalType":"string","name":"gameMode","type":"string"},{"internalType":"string","name":"tilesetOverride","type":"string"},{"internalType":"string","name":"codeTxId","type":"string"},{"internalType":"uint256[]","name":"customFloors","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"floorNumber","type":"uint256"}],"name":"readFloorData","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"resetAllFloors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"revokeGlobalPermission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseCodeTxid","type":"string"}],"name":"setBaseCodeTxid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenPermissions","outputs":[{"internalType":"address","name":"grantedBy","type":"address"},{"internalType":"address","name":"grantedTo","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"trialTimeout","type":"uint256"},{"internalType":"bool","name":"randomizeLayout","type":"bool"},{"internalType":"string","name":"passwordHash","type":"string"},{"internalType":"string","name":"ownersMessage","type":"string"},{"internalType":"string","name":"gameMode","type":"string"}],"name":"writeDungeonConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"bool","name":"locked","type":"bool"},{"internalType":"uint256","name":"trialTimeout","type":"uint256"},{"internalType":"bool","name":"randomizeLayout","type":"bool"},{"internalType":"string","name":"passwordHash","type":"string"},{"internalType":"string","name":"ownersMessage","type":"string"},{"internalType":"string","name":"gameMode","type":"string"},{"internalType":"string","name":"tilesetOverride","type":"string"}],"internalType":"struct DungeonConfig.DungeonData","name":"configData","type":"tuple"}],"name":"writeDungeonConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"floorNumber","type":"uint256"},{"internalType":"string","name":"txId","type":"string"}],"name":"writeFloorData","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040525f608090815260089062000019908262000123565b5034801562000026575f80fd5b5060405162002cf238038062002cf283398101604081905262000049916200020b565b5f80546001600160a01b03199081163317909155600180546001600160a01b039485169083161790556002805492909316911617905562000241565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620000ae57607f821691505b602082108103620000cd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200011e57805f5260205f20601f840160051c81016020851015620000fa5750805b601f840160051c820191505b818110156200011b575f815560010162000106565b50505b505050565b81516001600160401b038111156200013f576200013f62000085565b620001578162000150845462000099565b84620000d3565b602080601f8311600181146200018d575f8415620001755750858301515b5f19600386901b1c1916600185901b178555620001e7565b5f85815260208120601f198616915b82811015620001bd578886015182559484019460019091019084016200019c565b5085821015620001db57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b80516001600160a01b038116811462000206575f80fd5b919050565b5f80604083850312156200021d575f80fd5b6200022883620001ef565b91506200023860208401620001ef565b90509250929050565b612aa3806200024f5f395ff3fe608060405234801561000f575f80fd5b5060043610610148575f3560e01c80638da5cb5b116100bf578063bdb6955a11610079578063bdb6955a14610330578063c4d4073b14610343578063c6dba62414610364578063ce3aef9814610397578063e9aab685146103aa578063f2fde38b146103bd575f80fd5b80638da5cb5b1461025a5780639345feac1461027e578063956e958a14610291578063966beda9146102b7578063b31985c2146102ca578063bb7c93fa1461031d575f80fd5b806324f7374c1161011057806324f7374c146101e95780633d086286146102115780634be0110c146102195780635d5fd04d1461022c57806363df70141461023f578063715018a614610252575f80fd5b806301ffc9a71461014c57806313154b7e14610185578063156d2c2d1461019a578063168e4d83146101ad57806317753f88146101d4575b5f80fd5b61017061015a36600461218b565b6001600160e01b0319166307f5828d60e41b1490565b60405190151581526020015b60405180910390f35b610198610193366004612293565b6103d0565b005b6101986101a83660046122e4565b6103f5565b6101c06101bb3660046122ff565b6104c2565b60405161017c989796959493929190612359565b6101dc610823565b60405161017c91906123e1565b6101fc6101f73660046123f3565b6108b3565b60405161017c99989796959493929190612413565b6101dc610c39565b6101986102273660046124d9565b610cc5565b61019861023a366004612525565b610fa6565b61019861024d3660046122ff565b611126565b610198611381565b5f546001600160a01b03165b6040516001600160a01b03909116815260200161017c565b600154610266906001600160a01b031681565b6102a461029f3660046122ff565b6113bc565b60405161017c9796959493929190612553565b6101986102c53660046122e4565b611616565b6102fd6102d83660046122ff565b60066020525f9081526040902080546001909101546001600160a01b03918216911682565b604080516001600160a01b0393841681529290911660208301520161017c565b61019861032b3660046125d7565b611698565b600254610266906001600160a01b031681565b6103566103513660046123f3565b6119b0565b60405161017c92919061268c565b6102fd6103723660046122e4565b60076020525f9081526040902080546001909101546001600160a01b03918216911682565b6101986103a53660046126ad565b611a5c565b6101dc6103b83660046123f3565b611e0a565b6101986103cb3660046122e4565b611f07565b5f546001600160a01b031633146103e5575f80fd5b60086103f1828261283a565b5050565b6001600160a01b038181165f908152600760205260409020600101541633146104655760405162461bcd60e51b815260206004820152601860248201527f4e6f7420617574686f72697a656420746f207265766f6b65000000000000000060448201526064015b60405180910390fd5b6001600160a01b0381165f8181526007602052604080822080546001600160a01b031990811682556001909101805490911690555133917f9707cdba5b9bc019fd0657ac3b54ba7c7a8bf5be354b01b2b74083c185dd44dc91a350565b5f818152600460209081526040808320815160e081018352815460ff90811615158252600183015494820194909452600282015490931615159183019190915260038101805484938493606093849384938493849389938386019190610527906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610553906127b6565b801561059e5780601f106105755761010080835404028352916020019161059e565b820191905f5260205f20905b81548152906001019060200180831161058157829003601f168201915b505050505081526020016004820180546105b7906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546105e3906127b6565b801561062e5780601f106106055761010080835404028352916020019161062e565b820191905f5260205f20905b81548152906001019060200180831161061157829003601f168201915b50505050508152602001600582018054610647906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610673906127b6565b80156106be5780601f10610695576101008083540402835291602001916106be565b820191905f5260205f20905b8154815290600101906020018083116106a157829003601f168201915b505050505081526020016006820180546106d7906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610703906127b6565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815250509050805f015181602001518260400151836060015184608001518560a001518660c001516008808054610789906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b5906127b6565b80156108005780601f106107d757610100808354040283529160200191610800565b820191905f5260205f20905b8154815290600101906020018083116107e357829003601f168201915b505050505090509850985098509850985098509850985050919395975091939597565b606060088054610832906127b6565b80601f016020809104026020016040519081016040528092919081815260200182805461085e906127b6565b80156108a95780601f10610880576101008083540402835291602001916108a9565b820191905f5260205f20905b81548152906001019060200180831161088c57829003601f168201915b5050505050905090565b5f828152600460209081526040808320815160e081018352815460ff90811615158252600183015494820194909452600282015490931615159183019190915260038101805484938493606093849384938493849384938a9392918386019161091b906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610947906127b6565b80156109925780601f1061096957610100808354040283529160200191610992565b820191905f5260205f20905b81548152906001019060200180831161097557829003601f168201915b505050505081526020016004820180546109ab906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546109d7906127b6565b8015610a225780601f106109f957610100808354040283529160200191610a22565b820191905f5260205f20905b815481529060010190602001808311610a0557829003601f168201915b50505050508152602001600582018054610a3b906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a67906127b6565b8015610ab25780601f10610a8957610100808354040283529160200191610ab2565b820191905f5260205f20905b815481529060010190602001808311610a9557829003601f168201915b50505050508152602001600682018054610acb906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610af7906127b6565b8015610b425780601f10610b1957610100808354040283529160200191610b42565b820191905f5260205f20905b815481529060010190602001808311610b2557829003601f168201915b50505050508152505090505f60035f8e81526020019081526020015f20549050815f01519a50816020015199508160400151985081606001519750816080015196508160a0015195508160c00151945060088054610b9f906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcb906127b6565b8015610c165780601f10610bed57610100808354040283529160200191610c16565b820191905f5260205f20905b815481529060010190602001808311610bf957829003601f168201915b50505050509350610c288d8d83611f52565b925050509295985092959850929598565b60088054610c46906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c72906127b6565b8015610cbd5780601f10610c9457610100808354040283529160200191610cbd565b820191905f5260205f20905b815481529060010190602001808311610ca057829003601f168201915b505050505081565b6001546040516331a9108f60e11b81526004810185905284916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015610d10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3491906128fa565b90506001600160a01b038116331480610d6a57506002546001600160a01b038281169116148015610d6a5750610d6a83336120cc565b15610dc4576040805180820182528581525f8881526003602090815283822054818401528982526005815283822089835290529190912081518190610daf908261283a565b50602082015181600101559050505050610fa0565b335f81815260076020908152604091829020825180840190935280546001600160a01b03908116808552600190920154169183019190915290919003610eab575f826001600160a01b031682602001516001600160a01b03161480610e4a57506002546001600160a01b038481169116148015610e4a5750610e4a8583602001516120cc565b90508015610ea9576040805180820182528781525f8a81526003602090815283822054818401528b8252600581528382208b835290529190912081518190610e92908261283a565b506020820151816001015590505050505050610fa0565b505b5f848152600660209081526040808320815180830190925280546001600160a01b03908116835260019091015416918101829052919033148015610f2d5750836001600160a01b0316825f01516001600160a01b03161480610f2d57506002546001600160a01b038581169116148015610f2d5750610f2d86835f01516120cc565b905080610f4c5760405162461bcd60e51b815260040161045c90612915565b6040805180820182528881525f8b81526003602090815283822054818401528c8252600581528382208c835290529190912081518190610f8c908261283a565b506020820151816001015590505050505050505b50505050565b6001546040516331a9108f60e11b81526004810184905283916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101591906128fa565b6002549091505f906001600160a01b03808416911614801561103c575061103c84336120cc565b90506001600160a01b0382163314806110525750805b61109e5760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74206f776e6572206f72207374616b6572000000604482015260640161045c565b604080518082018252338082526001600160a01b0388811660208085018281525f8d81526006909252868220955186549085166001600160a01b03199182161787559051600190960180549690941695169490941790915592518993927fdfe4038b7a47a54e9cb9a74936e28ebea8370918b17bb83cab7225cfc1e1e5c591a4505050505050565b6001546040516331a9108f60e11b81526004810183905282916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015611171573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119591906128fa565b90506001600160a01b0381163314806111cb57506002546001600160a01b0382811691161480156111cb57506111cb83336120cc565b156111f9575f8481526003602052604081208054600192906111ee908490612951565b909155505050505050565b335f81815260076020908152604091829020825180840190935280546001600160a01b039081168085526001909201541691830191909152909190036112b4575f826001600160a01b031682602001516001600160a01b0316148061127f57506002546001600160a01b03848116911614801561127f575061127f8583602001516120cc565b905080156112b2575f8681526003602052604081208054600192906112a5908490612951565b9091555050505050505050565b505b5f848152600660209081526040808320815180830190925280546001600160a01b039081168352600190910154169181018290529190331480156113365750836001600160a01b0316825f01516001600160a01b0316148061133657506002546001600160a01b038581169116148015611336575061133686835f01516120cc565b9050806113555760405162461bcd60e51b815260040161045c90612915565b5f878152600360205260408120805460019290611373908490612951565b909155505050505050505050565b5f546001600160a01b031633146113ab576040516330cd747160e01b815260040160405180910390fd5b5f80546001600160a01b0319169055565b60046020525f9081526040902080546001820154600283015460038401805460ff94851695939490921692916113f1906127b6565b80601f016020809104026020016040519081016040528092919081815260200182805461141d906127b6565b80156114685780601f1061143f57610100808354040283529160200191611468565b820191905f5260205f20905b81548152906001019060200180831161144b57829003601f168201915b50505050509080600401805461147d906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114a9906127b6565b80156114f45780601f106114cb576101008083540402835291602001916114f4565b820191905f5260205f20905b8154815290600101906020018083116114d757829003601f168201915b505050505090806005018054611509906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611535906127b6565b80156115805780601f1061155757610100808354040283529160200191611580565b820191905f5260205f20905b81548152906001019060200180831161156357829003601f168201915b505050505090806006018054611595906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546115c1906127b6565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b5050505050905087565b6040805180820182526001600160a01b038084168083523360208085018281525f8481526007909252868220955186549086166001600160a01b031991821617875590516001909601805496909516951694909417909255925190917f209d7c70c1ab2adc07afcfbbaab11b6392ea49508eaef7028b6faf9a20d2234591a350565b6001546040516331a9108f60e11b81526004810189905288916001600160a01b0316905f908290636352211e90602401602060405180830381865afa1580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170791906128fa565b90506001600160a01b03811633148061173d57506002546001600160a01b03828116911614801561173d575061173d83336120cc565b156117a8575f8a8152600460205260409020805460ff199081168b1515178255600182018a905560028201805490911689151517905560038101611781888261283a565b5060048101611790878261283a565b506005810161179f868261283a565b505050506119a6565b335f81815260076020908152604091829020825180840190935280546001600160a01b039081168085526001909201541691830191909152909190036118a0575f826001600160a01b031682602001516001600160a01b0316148061182e57506002546001600160a01b03848116911614801561182e575061182e8583602001516120cc565b9050801561189e575f8c8152600460205260409020805460ff199081168d1515178255600182018c90556002820180549091168b1515179055600381016118758a8261283a565b5060048101611884898261283a565b5060058101611893888261283a565b5050505050506119a6565b505b5f848152600660209081526040808320815180830190925280546001600160a01b039081168352600190910154169181018290529190331480156119225750836001600160a01b0316825f01516001600160a01b0316148061192257506002546001600160a01b038581169116148015611922575061192286835f01516120cc565b9050806119415760405162461bcd60e51b815260040161045c90612915565b5f8d8152600460205260409020805460ff199081168e1515178255600182018d90556002820180549091168c1515179055600381016119808b8261283a565b506004810161198f8a8261283a565b506005810161199e898261283a565b505050505050505b5050505050505050565b600560209081525f92835260408084209091529082529020805481906119d5906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a01906127b6565b8015611a4c5780601f10611a2357610100808354040283529160200191611a4c565b820191905f5260205f20905b815481529060010190602001808311611a2f57829003601f168201915b5050505050908060010154905082565b6001546040516331a9108f60e11b81526004810184905283916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015611aa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acb91906128fa565b90506001600160a01b038116331480611b0157506002546001600160a01b038281169116148015611b015750611b0183336120cc565b15611ba0575f858152600460209081526040918290208651815490151560ff19918216178255918701516001820155918601516002830180549115159190921617905560608501516003820190611b58908261283a565b5060808501516004820190611b6d908261283a565b5060a08501516005820190611b82908261283a565b5060c08501516006820190611b97908261283a565b50505050505050565b335f81815260076020908152604091829020825180840190935280546001600160a01b03908116808552600190920154169183019190915290919003611ccc575f826001600160a01b031682602001516001600160a01b03161480611c2657506002546001600160a01b038481169116148015611c265750611c268583602001516120cc565b90508015611cca575f878152600460209081526040918290208851815490151560ff19918216178255918901516001820155918801516002830180549115159190921617905560608701516003820190611c80908261283a565b5060808701516004820190611c95908261283a565b5060a08701516005820190611caa908261283a565b5060c08701516006820190611cbf908261283a565b505050505050505050565b505b5f848152600660209081526040808320815180830190925280546001600160a01b03908116835260019091015416918101829052919033148015611d4e5750836001600160a01b0316825f01516001600160a01b03161480611d4e57506002546001600160a01b038581169116148015611d4e5750611d4e86835f01516120cc565b905080611d6d5760405162461bcd60e51b815260040161045c90612915565b5f888152600460209081526040918290208951815490151560ff19918216178255918a01516001820155918901516002830180549115159190921617905560608801516003820190611dbf908261283a565b5060808801516004820190611dd4908261283a565b5060a08801516005820190611de9908261283a565b5060c08801516006820190611dfe908261283a565b50505050505050505050565b5f8281526005602090815260408083208484529091528082208151808301909252805460609392919082908290611e40906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6c906127b6565b8015611eb75780601f10611e8e57610100808354040283529160200191611eb7565b820191905f5260205f20905b815481529060010190602001808311611e9a57829003601f168201915b50505050508152602001600182015481525050905060035f8581526020019081526020015f2054816020015103611ef057519050611f01565b505060408051602081019091525f81525b92915050565b5f546001600160a01b03163314611f31576040516330cd747160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f8367ffffffffffffffff811115611f6e57611f6e6121b9565b604051908082528060200260200182016040528015611f97578160200160208202803683370190505b5090505f805b858111612033575f87815260056020908152604080832084845290915290206001015485148015611ff057505f87815260056020908152604080832084845290915281208054611fec906127b6565b9050115b15612021578083838151811061200857612008612964565b60209081029190910101528161201d81612978565b9250505b8061202b81612978565b915050611f9d565b508067ffffffffffffffff81111561204d5761204d6121b9565b604051908082528060200260200182016040528015612076578160200160208202803683370190505b5092505f5b818110156120c25782818151811061209557612095612964565b60200260200101518482815181106120af576120af612964565b602090810291909101015260010161207b565b5050509392505050565b6002546040516363c28db160e01b81526001600160a01b0383811660048301525f921690829082906363c28db1906024015f60405180830381865afa158015612117573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261213e9190810190612a0d565b5090505f5b8151811015612180578582828151811061215f5761215f612964565b6020026020010151036121785760019350505050611f01565b600101612143565b505f95945050505050565b5f6020828403121561219b575f80fd5b81356001600160e01b0319811681146121b2575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e0810167ffffffffffffffff811182821017156121f0576121f06121b9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561221f5761221f6121b9565b604052919050565b5f82601f830112612236575f80fd5b813567ffffffffffffffff811115612250576122506121b9565b612263601f8201601f19166020016121f6565b818152846020838601011115612277575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156122a3575f80fd5b813567ffffffffffffffff8111156122b9575f80fd5b6122c584828501612227565b949350505050565b6001600160a01b03811681146122e1575f80fd5b50565b5f602082840312156122f4575f80fd5b81356121b2816122cd565b5f6020828403121561230f575f80fd5b5035919050565b5f81518084525f5b8181101561233a5760208185018101518683018201520161231e565b505f602082860101526020601f19601f83011685010191505092915050565b5f6101008a15158352896020840152881515604084015280606084015261238281840189612316565b905082810360808401526123968188612316565b905082810360a08401526123aa8187612316565b905082810360c08401526123be8186612316565b905082810360e08401526123d28185612316565b9b9a5050505050505050505050565b602081525f6121b26020830184612316565b5f8060408385031215612404575f80fd5b50508035926020909101359150565b5f6101208b1515835260208b60208501528a1515604085015281606085015261243e8285018b612316565b91508382036080850152612452828a612316565b915083820360a08501526124668289612316565b915083820360c085015261247a8288612316565b915083820360e085015261248e8287612316565b848103610100860152855180825260208088019450909101905f5b818110156124c5578451835293830193918301916001016124a9565b50909e9d5050505050505050505050505050565b5f805f606084860312156124eb575f80fd5b8335925060208401359150604084013567ffffffffffffffff81111561250f575f80fd5b61251b86828701612227565b9150509250925092565b5f8060408385031215612536575f80fd5b823591506020830135612548816122cd565b809150509250929050565b8715158152866020820152851515604082015260e060608201525f61257b60e0830187612316565b828103608084015261258d8187612316565b905082810360a08401526125a18186612316565b905082810360c08401526125b58185612316565b9a9950505050505050505050565b803580151581146125d2575f80fd5b919050565b5f805f805f805f60e0888a0312156125ed575f80fd5b873596506125fd602089016125c3565b955060408801359450612612606089016125c3565b9350608088013567ffffffffffffffff8082111561262e575f80fd5b61263a8b838c01612227565b945060a08a013591508082111561264f575f80fd5b61265b8b838c01612227565b935060c08a0135915080821115612670575f80fd5b5061267d8a828b01612227565b91505092959891949750929550565b604081525f61269e6040830185612316565b90508260208301529392505050565b5f80604083850312156126be575f80fd5b82359150602083013567ffffffffffffffff808211156126dc575f80fd5b9084019060e082870312156126ef575f80fd5b6126f76121cd565b612700836125c3565b815260208301356020820152612718604084016125c3565b604082015260608301358281111561272e575f80fd5b61273a88828601612227565b606083015250608083013582811115612751575f80fd5b61275d88828601612227565b60808301525060a083013582811115612774575f80fd5b61278088828601612227565b60a08301525060c083013582811115612797575f80fd5b6127a388828601612227565b60c0830152508093505050509250929050565b600181811c908216806127ca57607f821691505b6020821081036127e857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561283557805f5260205f20601f840160051c810160208510156128135750805b601f840160051c820191505b81811015612832575f815560010161281f565b50505b505050565b815167ffffffffffffffff811115612854576128546121b9565b6128688161286284546127b6565b846127ee565b602080601f83116001811461289b575f84156128845750858301515b5f19600386901b1c1916600185901b1785556128f2565b5f85815260208120601f198616915b828110156128c9578886015182559484019460019091019084016128aa565b50858210156128e657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561290a575f80fd5b81516121b2816122cd565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611f0157611f0161293d565b634e487b7160e01b5f52603260045260245ffd5b5f600182016129895761298961293d565b5060010190565b5f82601f83011261299f575f80fd5b8151602067ffffffffffffffff8211156129bb576129bb6121b9565b8160051b6129ca8282016121f6565b92835284810182019282810190878511156129e3575f80fd5b83870192505b84831015612a02578251825291830191908301906129e9565b979650505050505050565b5f8060408385031215612a1e575f80fd5b825167ffffffffffffffff80821115612a35575f80fd5b612a4186838701612990565b93506020850151915080821115612a56575f80fd5b50612a6385828601612990565b915050925092905056fea264697066735822122057637e3468e97560534a45d2093cee9c31dfc3d02fd63ff197e814b7e50e037c64736f6c6343000818003300000000000000000000000018487d2cac946c7fe800855c4039aac210f68baa000000000000000000000000287787f55723f7a816aa37de1dbd72a4671de1cc

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610148575f3560e01c80638da5cb5b116100bf578063bdb6955a11610079578063bdb6955a14610330578063c4d4073b14610343578063c6dba62414610364578063ce3aef9814610397578063e9aab685146103aa578063f2fde38b146103bd575f80fd5b80638da5cb5b1461025a5780639345feac1461027e578063956e958a14610291578063966beda9146102b7578063b31985c2146102ca578063bb7c93fa1461031d575f80fd5b806324f7374c1161011057806324f7374c146101e95780633d086286146102115780634be0110c146102195780635d5fd04d1461022c57806363df70141461023f578063715018a614610252575f80fd5b806301ffc9a71461014c57806313154b7e14610185578063156d2c2d1461019a578063168e4d83146101ad57806317753f88146101d4575b5f80fd5b61017061015a36600461218b565b6001600160e01b0319166307f5828d60e41b1490565b60405190151581526020015b60405180910390f35b610198610193366004612293565b6103d0565b005b6101986101a83660046122e4565b6103f5565b6101c06101bb3660046122ff565b6104c2565b60405161017c989796959493929190612359565b6101dc610823565b60405161017c91906123e1565b6101fc6101f73660046123f3565b6108b3565b60405161017c99989796959493929190612413565b6101dc610c39565b6101986102273660046124d9565b610cc5565b61019861023a366004612525565b610fa6565b61019861024d3660046122ff565b611126565b610198611381565b5f546001600160a01b03165b6040516001600160a01b03909116815260200161017c565b600154610266906001600160a01b031681565b6102a461029f3660046122ff565b6113bc565b60405161017c9796959493929190612553565b6101986102c53660046122e4565b611616565b6102fd6102d83660046122ff565b60066020525f9081526040902080546001909101546001600160a01b03918216911682565b604080516001600160a01b0393841681529290911660208301520161017c565b61019861032b3660046125d7565b611698565b600254610266906001600160a01b031681565b6103566103513660046123f3565b6119b0565b60405161017c92919061268c565b6102fd6103723660046122e4565b60076020525f9081526040902080546001909101546001600160a01b03918216911682565b6101986103a53660046126ad565b611a5c565b6101dc6103b83660046123f3565b611e0a565b6101986103cb3660046122e4565b611f07565b5f546001600160a01b031633146103e5575f80fd5b60086103f1828261283a565b5050565b6001600160a01b038181165f908152600760205260409020600101541633146104655760405162461bcd60e51b815260206004820152601860248201527f4e6f7420617574686f72697a656420746f207265766f6b65000000000000000060448201526064015b60405180910390fd5b6001600160a01b0381165f8181526007602052604080822080546001600160a01b031990811682556001909101805490911690555133917f9707cdba5b9bc019fd0657ac3b54ba7c7a8bf5be354b01b2b74083c185dd44dc91a350565b5f818152600460209081526040808320815160e081018352815460ff90811615158252600183015494820194909452600282015490931615159183019190915260038101805484938493606093849384938493849389938386019190610527906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610553906127b6565b801561059e5780601f106105755761010080835404028352916020019161059e565b820191905f5260205f20905b81548152906001019060200180831161058157829003601f168201915b505050505081526020016004820180546105b7906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546105e3906127b6565b801561062e5780601f106106055761010080835404028352916020019161062e565b820191905f5260205f20905b81548152906001019060200180831161061157829003601f168201915b50505050508152602001600582018054610647906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610673906127b6565b80156106be5780601f10610695576101008083540402835291602001916106be565b820191905f5260205f20905b8154815290600101906020018083116106a157829003601f168201915b505050505081526020016006820180546106d7906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610703906127b6565b801561074e5780601f106107255761010080835404028352916020019161074e565b820191905f5260205f20905b81548152906001019060200180831161073157829003601f168201915b5050505050815250509050805f015181602001518260400151836060015184608001518560a001518660c001516008808054610789906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b5906127b6565b80156108005780601f106107d757610100808354040283529160200191610800565b820191905f5260205f20905b8154815290600101906020018083116107e357829003601f168201915b505050505090509850985098509850985098509850985050919395975091939597565b606060088054610832906127b6565b80601f016020809104026020016040519081016040528092919081815260200182805461085e906127b6565b80156108a95780601f10610880576101008083540402835291602001916108a9565b820191905f5260205f20905b81548152906001019060200180831161088c57829003601f168201915b5050505050905090565b5f828152600460209081526040808320815160e081018352815460ff90811615158252600183015494820194909452600282015490931615159183019190915260038101805484938493606093849384938493849384938a9392918386019161091b906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610947906127b6565b80156109925780601f1061096957610100808354040283529160200191610992565b820191905f5260205f20905b81548152906001019060200180831161097557829003601f168201915b505050505081526020016004820180546109ab906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546109d7906127b6565b8015610a225780601f106109f957610100808354040283529160200191610a22565b820191905f5260205f20905b815481529060010190602001808311610a0557829003601f168201915b50505050508152602001600582018054610a3b906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a67906127b6565b8015610ab25780601f10610a8957610100808354040283529160200191610ab2565b820191905f5260205f20905b815481529060010190602001808311610a9557829003601f168201915b50505050508152602001600682018054610acb906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610af7906127b6565b8015610b425780601f10610b1957610100808354040283529160200191610b42565b820191905f5260205f20905b815481529060010190602001808311610b2557829003601f168201915b50505050508152505090505f60035f8e81526020019081526020015f20549050815f01519a50816020015199508160400151985081606001519750816080015196508160a0015195508160c00151945060088054610b9f906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcb906127b6565b8015610c165780601f10610bed57610100808354040283529160200191610c16565b820191905f5260205f20905b815481529060010190602001808311610bf957829003601f168201915b50505050509350610c288d8d83611f52565b925050509295985092959850929598565b60088054610c46906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c72906127b6565b8015610cbd5780601f10610c9457610100808354040283529160200191610cbd565b820191905f5260205f20905b815481529060010190602001808311610ca057829003601f168201915b505050505081565b6001546040516331a9108f60e11b81526004810185905284916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015610d10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3491906128fa565b90506001600160a01b038116331480610d6a57506002546001600160a01b038281169116148015610d6a5750610d6a83336120cc565b15610dc4576040805180820182528581525f8881526003602090815283822054818401528982526005815283822089835290529190912081518190610daf908261283a565b50602082015181600101559050505050610fa0565b335f81815260076020908152604091829020825180840190935280546001600160a01b03908116808552600190920154169183019190915290919003610eab575f826001600160a01b031682602001516001600160a01b03161480610e4a57506002546001600160a01b038481169116148015610e4a5750610e4a8583602001516120cc565b90508015610ea9576040805180820182528781525f8a81526003602090815283822054818401528b8252600581528382208b835290529190912081518190610e92908261283a565b506020820151816001015590505050505050610fa0565b505b5f848152600660209081526040808320815180830190925280546001600160a01b03908116835260019091015416918101829052919033148015610f2d5750836001600160a01b0316825f01516001600160a01b03161480610f2d57506002546001600160a01b038581169116148015610f2d5750610f2d86835f01516120cc565b905080610f4c5760405162461bcd60e51b815260040161045c90612915565b6040805180820182528881525f8b81526003602090815283822054818401528c8252600581528382208c835290529190912081518190610f8c908261283a565b506020820151816001015590505050505050505b50505050565b6001546040516331a9108f60e11b81526004810184905283916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101591906128fa565b6002549091505f906001600160a01b03808416911614801561103c575061103c84336120cc565b90506001600160a01b0382163314806110525750805b61109e5760405162461bcd60e51b815260206004820152601d60248201527f43616c6c6572206973206e6f74206f776e6572206f72207374616b6572000000604482015260640161045c565b604080518082018252338082526001600160a01b0388811660208085018281525f8d81526006909252868220955186549085166001600160a01b03199182161787559051600190960180549690941695169490941790915592518993927fdfe4038b7a47a54e9cb9a74936e28ebea8370918b17bb83cab7225cfc1e1e5c591a4505050505050565b6001546040516331a9108f60e11b81526004810183905282916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015611171573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119591906128fa565b90506001600160a01b0381163314806111cb57506002546001600160a01b0382811691161480156111cb57506111cb83336120cc565b156111f9575f8481526003602052604081208054600192906111ee908490612951565b909155505050505050565b335f81815260076020908152604091829020825180840190935280546001600160a01b039081168085526001909201541691830191909152909190036112b4575f826001600160a01b031682602001516001600160a01b0316148061127f57506002546001600160a01b03848116911614801561127f575061127f8583602001516120cc565b905080156112b2575f8681526003602052604081208054600192906112a5908490612951565b9091555050505050505050565b505b5f848152600660209081526040808320815180830190925280546001600160a01b039081168352600190910154169181018290529190331480156113365750836001600160a01b0316825f01516001600160a01b0316148061133657506002546001600160a01b038581169116148015611336575061133686835f01516120cc565b9050806113555760405162461bcd60e51b815260040161045c90612915565b5f878152600360205260408120805460019290611373908490612951565b909155505050505050505050565b5f546001600160a01b031633146113ab576040516330cd747160e01b815260040160405180910390fd5b5f80546001600160a01b0319169055565b60046020525f9081526040902080546001820154600283015460038401805460ff94851695939490921692916113f1906127b6565b80601f016020809104026020016040519081016040528092919081815260200182805461141d906127b6565b80156114685780601f1061143f57610100808354040283529160200191611468565b820191905f5260205f20905b81548152906001019060200180831161144b57829003601f168201915b50505050509080600401805461147d906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114a9906127b6565b80156114f45780601f106114cb576101008083540402835291602001916114f4565b820191905f5260205f20905b8154815290600101906020018083116114d757829003601f168201915b505050505090806005018054611509906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611535906127b6565b80156115805780601f1061155757610100808354040283529160200191611580565b820191905f5260205f20905b81548152906001019060200180831161156357829003601f168201915b505050505090806006018054611595906127b6565b80601f01602080910402602001604051908101604052809291908181526020018280546115c1906127b6565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b5050505050905087565b6040805180820182526001600160a01b038084168083523360208085018281525f8481526007909252868220955186549086166001600160a01b031991821617875590516001909601805496909516951694909417909255925190917f209d7c70c1ab2adc07afcfbbaab11b6392ea49508eaef7028b6faf9a20d2234591a350565b6001546040516331a9108f60e11b81526004810189905288916001600160a01b0316905f908290636352211e90602401602060405180830381865afa1580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170791906128fa565b90506001600160a01b03811633148061173d57506002546001600160a01b03828116911614801561173d575061173d83336120cc565b156117a8575f8a8152600460205260409020805460ff199081168b1515178255600182018a905560028201805490911689151517905560038101611781888261283a565b5060048101611790878261283a565b506005810161179f868261283a565b505050506119a6565b335f81815260076020908152604091829020825180840190935280546001600160a01b039081168085526001909201541691830191909152909190036118a0575f826001600160a01b031682602001516001600160a01b0316148061182e57506002546001600160a01b03848116911614801561182e575061182e8583602001516120cc565b9050801561189e575f8c8152600460205260409020805460ff199081168d1515178255600182018c90556002820180549091168b1515179055600381016118758a8261283a565b5060048101611884898261283a565b5060058101611893888261283a565b5050505050506119a6565b505b5f848152600660209081526040808320815180830190925280546001600160a01b039081168352600190910154169181018290529190331480156119225750836001600160a01b0316825f01516001600160a01b0316148061192257506002546001600160a01b038581169116148015611922575061192286835f01516120cc565b9050806119415760405162461bcd60e51b815260040161045c90612915565b5f8d8152600460205260409020805460ff199081168e1515178255600182018d90556002820180549091168c1515179055600381016119808b8261283a565b506004810161198f8a8261283a565b506005810161199e898261283a565b505050505050505b5050505050505050565b600560209081525f92835260408084209091529082529020805481906119d5906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a01906127b6565b8015611a4c5780601f10611a2357610100808354040283529160200191611a4c565b820191905f5260205f20905b815481529060010190602001808311611a2f57829003601f168201915b5050505050908060010154905082565b6001546040516331a9108f60e11b81526004810184905283916001600160a01b0316905f908290636352211e90602401602060405180830381865afa158015611aa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acb91906128fa565b90506001600160a01b038116331480611b0157506002546001600160a01b038281169116148015611b015750611b0183336120cc565b15611ba0575f858152600460209081526040918290208651815490151560ff19918216178255918701516001820155918601516002830180549115159190921617905560608501516003820190611b58908261283a565b5060808501516004820190611b6d908261283a565b5060a08501516005820190611b82908261283a565b5060c08501516006820190611b97908261283a565b50505050505050565b335f81815260076020908152604091829020825180840190935280546001600160a01b03908116808552600190920154169183019190915290919003611ccc575f826001600160a01b031682602001516001600160a01b03161480611c2657506002546001600160a01b038481169116148015611c265750611c268583602001516120cc565b90508015611cca575f878152600460209081526040918290208851815490151560ff19918216178255918901516001820155918801516002830180549115159190921617905560608701516003820190611c80908261283a565b5060808701516004820190611c95908261283a565b5060a08701516005820190611caa908261283a565b5060c08701516006820190611cbf908261283a565b505050505050505050565b505b5f848152600660209081526040808320815180830190925280546001600160a01b03908116835260019091015416918101829052919033148015611d4e5750836001600160a01b0316825f01516001600160a01b03161480611d4e57506002546001600160a01b038581169116148015611d4e5750611d4e86835f01516120cc565b905080611d6d5760405162461bcd60e51b815260040161045c90612915565b5f888152600460209081526040918290208951815490151560ff19918216178255918a01516001820155918901516002830180549115159190921617905560608801516003820190611dbf908261283a565b5060808801516004820190611dd4908261283a565b5060a08801516005820190611de9908261283a565b5060c08801516006820190611dfe908261283a565b50505050505050505050565b5f8281526005602090815260408083208484529091528082208151808301909252805460609392919082908290611e40906127b6565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6c906127b6565b8015611eb75780601f10611e8e57610100808354040283529160200191611eb7565b820191905f5260205f20905b815481529060010190602001808311611e9a57829003601f168201915b50505050508152602001600182015481525050905060035f8581526020019081526020015f2054816020015103611ef057519050611f01565b505060408051602081019091525f81525b92915050565b5f546001600160a01b03163314611f31576040516330cd747160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f8367ffffffffffffffff811115611f6e57611f6e6121b9565b604051908082528060200260200182016040528015611f97578160200160208202803683370190505b5090505f805b858111612033575f87815260056020908152604080832084845290915290206001015485148015611ff057505f87815260056020908152604080832084845290915281208054611fec906127b6565b9050115b15612021578083838151811061200857612008612964565b60209081029190910101528161201d81612978565b9250505b8061202b81612978565b915050611f9d565b508067ffffffffffffffff81111561204d5761204d6121b9565b604051908082528060200260200182016040528015612076578160200160208202803683370190505b5092505f5b818110156120c25782818151811061209557612095612964565b60200260200101518482815181106120af576120af612964565b602090810291909101015260010161207b565b5050509392505050565b6002546040516363c28db160e01b81526001600160a01b0383811660048301525f921690829082906363c28db1906024015f60405180830381865afa158015612117573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261213e9190810190612a0d565b5090505f5b8151811015612180578582828151811061215f5761215f612964565b6020026020010151036121785760019350505050611f01565b600101612143565b505f95945050505050565b5f6020828403121561219b575f80fd5b81356001600160e01b0319811681146121b2575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160e0810167ffffffffffffffff811182821017156121f0576121f06121b9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561221f5761221f6121b9565b604052919050565b5f82601f830112612236575f80fd5b813567ffffffffffffffff811115612250576122506121b9565b612263601f8201601f19166020016121f6565b818152846020838601011115612277575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156122a3575f80fd5b813567ffffffffffffffff8111156122b9575f80fd5b6122c584828501612227565b949350505050565b6001600160a01b03811681146122e1575f80fd5b50565b5f602082840312156122f4575f80fd5b81356121b2816122cd565b5f6020828403121561230f575f80fd5b5035919050565b5f81518084525f5b8181101561233a5760208185018101518683018201520161231e565b505f602082860101526020601f19601f83011685010191505092915050565b5f6101008a15158352896020840152881515604084015280606084015261238281840189612316565b905082810360808401526123968188612316565b905082810360a08401526123aa8187612316565b905082810360c08401526123be8186612316565b905082810360e08401526123d28185612316565b9b9a5050505050505050505050565b602081525f6121b26020830184612316565b5f8060408385031215612404575f80fd5b50508035926020909101359150565b5f6101208b1515835260208b60208501528a1515604085015281606085015261243e8285018b612316565b91508382036080850152612452828a612316565b915083820360a08501526124668289612316565b915083820360c085015261247a8288612316565b915083820360e085015261248e8287612316565b848103610100860152855180825260208088019450909101905f5b818110156124c5578451835293830193918301916001016124a9565b50909e9d5050505050505050505050505050565b5f805f606084860312156124eb575f80fd5b8335925060208401359150604084013567ffffffffffffffff81111561250f575f80fd5b61251b86828701612227565b9150509250925092565b5f8060408385031215612536575f80fd5b823591506020830135612548816122cd565b809150509250929050565b8715158152866020820152851515604082015260e060608201525f61257b60e0830187612316565b828103608084015261258d8187612316565b905082810360a08401526125a18186612316565b905082810360c08401526125b58185612316565b9a9950505050505050505050565b803580151581146125d2575f80fd5b919050565b5f805f805f805f60e0888a0312156125ed575f80fd5b873596506125fd602089016125c3565b955060408801359450612612606089016125c3565b9350608088013567ffffffffffffffff8082111561262e575f80fd5b61263a8b838c01612227565b945060a08a013591508082111561264f575f80fd5b61265b8b838c01612227565b935060c08a0135915080821115612670575f80fd5b5061267d8a828b01612227565b91505092959891949750929550565b604081525f61269e6040830185612316565b90508260208301529392505050565b5f80604083850312156126be575f80fd5b82359150602083013567ffffffffffffffff808211156126dc575f80fd5b9084019060e082870312156126ef575f80fd5b6126f76121cd565b612700836125c3565b815260208301356020820152612718604084016125c3565b604082015260608301358281111561272e575f80fd5b61273a88828601612227565b606083015250608083013582811115612751575f80fd5b61275d88828601612227565b60808301525060a083013582811115612774575f80fd5b61278088828601612227565b60a08301525060c083013582811115612797575f80fd5b6127a388828601612227565b60c0830152508093505050509250929050565b600181811c908216806127ca57607f821691505b6020821081036127e857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561283557805f5260205f20601f840160051c810160208510156128135750805b601f840160051c820191505b81811015612832575f815560010161281f565b50505b505050565b815167ffffffffffffffff811115612854576128546121b9565b6128688161286284546127b6565b846127ee565b602080601f83116001811461289b575f84156128845750858301515b5f19600386901b1c1916600185901b1785556128f2565b5f85815260208120601f198616915b828110156128c9578886015182559484019460019091019084016128aa565b50858210156128e657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561290a575f80fd5b81516121b2816122cd565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611f0157611f0161293d565b634e487b7160e01b5f52603260045260245ffd5b5f600182016129895761298961293d565b5060010190565b5f82601f83011261299f575f80fd5b8151602067ffffffffffffffff8211156129bb576129bb6121b9565b8160051b6129ca8282016121f6565b92835284810182019282810190878511156129e3575f80fd5b83870192505b84831015612a02578251825291830191908301906129e9565b979650505050505050565b5f8060408385031215612a1e575f80fd5b825167ffffffffffffffff80821115612a35575f80fd5b612a4186838701612990565b93506020850151915080821115612a56575f80fd5b50612a6385828601612990565b915050925092905056fea264697066735822122057637e3468e97560534a45d2093cee9c31dfc3d02fd63ff197e814b7e50e037c64736f6c63430008180033

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

00000000000000000000000018487d2cac946c7fe800855c4039aac210f68baa000000000000000000000000287787f55723f7a816aa37de1dbd72a4671de1cc

-----Decoded View---------------
Arg [0] : _dungeonAddress (address): 0x18487D2CaC946c7Fe800855c4039aAC210f68bAa
Arg [1] : _dungeonRewardsAddress (address): 0x287787F55723f7a816aA37De1dbD72a4671De1cc

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000018487d2cac946c7fe800855c4039aac210f68baa
Arg [1] : 000000000000000000000000287787f55723f7a816aa37de1dbd72a4671de1cc


Deployed Bytecode Sourcemap

448:11774:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;879:208:1;;;;;;:::i;:::-;-1:-1:-1;;;;;;1020:25:1;-1:-1:-1;;;1020:25:1;;879:208;;;;470:14:2;;463:22;445:41;;433:2;418:18;879:208:1;;;;;;;;11932:118:0;;;;;;:::i;:::-;;:::i;:::-;;11592:277;;;;;;:::i;:::-;;:::i;6943:1005::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;12114:103::-;;;:::i;:::-;;;;;;;:::i;8003:1253::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;3020:33::-;;;:::i;10056:300::-;;;;;;:::i;:::-;;:::i;11009:241::-;;;;;;:::i;:::-;;:::i;10840:161::-;;;;;;:::i;:::-;;:::i;741:130:1:-;;;:::i;496:81::-;536:7;563:6;-1:-1:-1;;;;;563:6:1;496:81;;;-1:-1:-1;;;;;7272:32:2;;;7254:51;;7242:2;7227:18;496:81:1;7108:203:2;1133:29:0;;;;;-1:-1:-1;;;;;1133:29:0;;;2642:47;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;11291:238::-;;;;;;:::i;:::-;;:::i;2845:54::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2845:54:0;;;;;;;;;;;-1:-1:-1;;;;;8498:15:2;;;8480:34;;8550:15;;;;8545:2;8530:18;;8523:43;8415:18;2845:54:0;8268:304:2;6324:611:0;;;;;;:::i;:::-;;:::i;1169:36::-;;;;;-1:-1:-1;;;;;1169:36:0;;;2766:70;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2950:61::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2950:61:0;;;;;;;5650:588;;;;;;:::i;:::-;;:::i;10364:468::-;;;;;;:::i;:::-;;:::i;585:148:1:-;;;;;;:::i;:::-;;:::i;11932:118:0:-;387:6:1;;-1:-1:-1;;;;;387:6:1;397:10;387:20;379:29;;;;;;12013:14:0::1;:29;12030:12:::0;12013:14;:29:::1;:::i;:::-;;11932:118:::0;:::o;11592:277::-;-1:-1:-1;;;;;11676:21:0;;;;;;;:17;:21;;;;;:31;;;;11711:10;11676:45;11654:119;;;;-1:-1:-1;;;11654:119:0;;14208:2:2;11654:119:0;;;14190:21:2;14247:2;14227:18;;;14220:30;14286:26;14266:18;;;14259:54;14330:18;;11654:119:0;;;;;;;;;-1:-1:-1;;;;;11791:21:0;;;;;;:17;:21;;;;;;11784:28;;-1:-1:-1;;;;;;11784:28:0;;;;;;;;;;;;;;;;11828:33;11846:10;;11828:33;;;11592:277;:::o;6943:1005::-;7065:11;7404:17;;;:8;:17;;;;;;;;7375:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7065:11;;;;7161:26;;;;;;;;;;7065:11;;7375:46;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7673:7;:14;;;7702:7;:20;;;7737:7;:23;;;7775:7;:20;;;7810:7;:21;;;7846:7;:16;;;7877:7;:23;;;7915:14;7651:289;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6943:1005;;;;;;;;;:::o;12114:103::-;12162:13;12195:14;12188:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12114:103;:::o;8003:1253::-;8149:11;8532:17;;;:8;:17;;;;;;;;8503:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8149:11;;;;8245:26;;;;;;;;;;;;8149:11;;8503:46;8532:17;8503:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8560:22;8585:13;:22;8599:7;8585:22;;;;;;;;;;;;8560:47;;8720:7;:14;;;8711:23;;8760:7;:20;;;8745:35;;8809:7;:23;;;8791:41;;8858:7;:20;;;8843:35;;8905:7;:21;;;8889:37;;8948:7;:16;;;8937:27;;8993:7;:23;;;8975:41;;9038:14;9027:25;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9192:56;9208:7;9217:14;9233;9192:15;:56::i;:::-;9177:71;;8492:764;;8003:1253;;;;;;;;;;;:::o;3020:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10056:300::-;4276:14;;4318:24;;-1:-1:-1;;;4318:24:0;;;;;14505:25:2;;;10191:7:0;;-1:-1:-1;;;;;4276:14:0;;4248:16;;4276:14;;4318:15;;14478:18:2;;4318:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4302:40;-1:-1:-1;;;;;;4461:19:0;;4470:10;4461:19;;:132;;-1:-1:-1;4507:21:0;;-1:-1:-1;;;;;4498:30:0;;;4507:21;;4498:30;:94;;;;;4549:43;4572:7;4581:10;4549:22;:43::i;:::-;4443:211;;;10309:39:::1;::::0;;;;::::1;::::0;;;;;-1:-1:-1;10325:22:0;;;:13:::1;10309:39;10325:22:::0;;;;;;;10309:39;;::::1;::::0;10271:22;;;:13:::1;:22:::0;;;;;:35;;;;;;;;;:77;;:35;;:77:::1;::::0;:35;:77:::1;:::i;:::-;;;;;;;;;;;;;4636:7:::0;;;;4443:211;4758:10;4703:34;4740:29;;;:17;:29;;;;;;;;;4703:66;;;;;;;;;;-1:-1:-1;;;;;4703:66:0;;;;;;;;;;;;;;;;;;;;;4784:34;;4780:374;;4835:33;4895:5;-1:-1:-1;;;;;4871:29:0;:10;:20;;;-1:-1:-1;;;;;4871:29:0;;:160;;;-1:-1:-1;4931:21:0;;-1:-1:-1;;;;;4922:30:0;;;4931:21;;4922:30;:108;;;;;4977:53;5000:7;5009:10;:20;;;4977:22;:53::i;:::-;4835:196;;5052:28;5048:95;;;10309:39:::1;::::0;;;;::::1;::::0;;;;;-1:-1:-1;10325:22:0;;;:13:::1;10309:39;10325:22:::0;;;;;;;10309:39;;::::1;::::0;10271:22;;;:13:::1;:22:::0;;;;;:35;;;;;;;;;:77;;:35;;:77:::1;::::0;:35;:77:::1;:::i;:::-;;;;;;;;;;;;;5121:7:::0;;;;;;5048:95;4820:334;4780:374;5256:28;5287:25;;;:16;:25;;;;;;;;5256:56;;;;;;;;;;-1:-1:-1;;;;;5256:56:0;;;;;;;;;;;;;;;;;;:28;5373:10;5349:34;:213;;;;;5425:5;-1:-1:-1;;;;;5401:29:0;:10;:20;;;-1:-1:-1;;;;;5401:29:0;;:160;;;-1:-1:-1;5461:21:0;;-1:-1:-1;;;;;5452:30:0;;;5461:21;;5452:30;:108;;;;;5507:53;5530:7;5539:10;:20;;;5507:22;:53::i;:::-;5323:239;;5583:18;5575:45;;;;-1:-1:-1;;;5575:45:0;;;;;;;:::i;:::-;10309:39:::1;::::0;;;;::::1;::::0;;;;;-1:-1:-1;10325:22:0;;;:13:::1;10309:39;10325:22:::0;;;;;;;10309:39;;::::1;::::0;10271:22;;;:13:::1;:22:::0;;;;;:35;;;;;;;;;:77;;:35;;:77:::1;::::0;:35;:77:::1;:::i;:::-;;;;;;;;;;;;;4237:1405:::0;;;;;10056:300;;;;;:::o;11009:241::-;3348:14;;3390:24;;-1:-1:-1;;;3390:24:0;;;;;14505:25:2;;;11114:7:0;;-1:-1:-1;;;;;3348:14:0;;3320:16;;3348:14;;3390:15;;14478:18:2;;3390:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3450:21;;3374:40;;-1:-1:-1;3425:13:0;;-1:-1:-1;;;;;3441:30:0;;;3450:21;;3441:30;:90;;;;;3488:43;3511:7;3520:10;3488:22;:43::i;:::-;3425:106;-1:-1:-1;;;;;;3566:19:0;;3575:10;3566:19;;:31;;;3589:8;3566:31;3544:110;;;;-1:-1:-1;;;3544:110:0;;15342:2:2;3544:110:0;;;15324:21:2;15381:2;15361:18;;;15354:30;15420:31;15400:18;;;15393:59;15469:18;;3544:110:0;15140:353:2;3544:110:0;11162:26:::1;::::0;;;;::::1;::::0;;11173:10:::1;11162:26:::0;;;-1:-1:-1;;;;;11162:26:0;;::::1;;::::0;;::::1;::::0;;;-1:-1:-1;11134:25:0;;;:16:::1;:25:::0;;;;;;:54;;;;;;::::1;-1:-1:-1::0;;;;;;11134:54:0;;::::1;;::::0;;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;11206:36;;11151:7;;11162:26;11206:36:::1;::::0;::::1;3309:365:::0;;;11009:241;;;:::o;10840:161::-;4276:14;;4318:24;;-1:-1:-1;;;4318:24:0;;;;;14505:25:2;;;10900:7:0;;-1:-1:-1;;;;;4276:14:0;;4248:16;;4276:14;;4318:15;;14478:18:2;;4318:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4302:40;-1:-1:-1;;;;;;4461:19:0;;4470:10;4461:19;;:132;;-1:-1:-1;4507:21:0;;-1:-1:-1;;;;;4498:30:0;;;4507:21;;4498:30;:94;;;;;4549:43;4572:7;4581:10;4549:22;:43::i;:::-;4443:211;;;10921:22:::1;::::0;;;:13:::1;:22;::::0;;;;:27;;10947:1:::1;::::0;10921:22;:27:::1;::::0;10947:1;;10921:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;10840:161:0:o;4443:211::-;4758:10;4703:34;4740:29;;;:17;:29;;;;;;;;;4703:66;;;;;;;;;;-1:-1:-1;;;;;4703:66:0;;;;;;;;;;;;;;;;;;;;;4784:34;;4780:374;;4835:33;4895:5;-1:-1:-1;;;;;4871:29:0;:10;:20;;;-1:-1:-1;;;;;4871:29:0;;:160;;;-1:-1:-1;4931:21:0;;-1:-1:-1;;;;;4922:30:0;;;4931:21;;4922:30;:108;;;;;4977:53;5000:7;5009:10;:20;;;4977:22;:53::i;:::-;4835:196;;5052:28;5048:95;;;10921:22:::1;::::0;;;:13:::1;:22;::::0;;;;:27;;10947:1:::1;::::0;10921:22;:27:::1;::::0;10947:1;;10921:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;;10840:161:0:o;5048:95::-;4820:334;4780:374;5256:28;5287:25;;;:16;:25;;;;;;;;5256:56;;;;;;;;;;-1:-1:-1;;;;;5256:56:0;;;;;;;;;;;;;;;;;;:28;5373:10;5349:34;:213;;;;;5425:5;-1:-1:-1;;;;;5401:29:0;:10;:20;;;-1:-1:-1;;;;;5401:29:0;;:160;;;-1:-1:-1;5461:21:0;;-1:-1:-1;;;;;5452:30:0;;;5461:21;;5452:30;:108;;;;;5507:53;5530:7;5539:10;:20;;;5507:22;:53::i;:::-;5323:239;;5583:18;5575:45;;;;-1:-1:-1;;;5575:45:0;;;;;;;:::i;:::-;10921:22:::1;::::0;;;:13:::1;:22;::::0;;;;:27;;10947:1:::1;::::0;10921:22;:27:::1;::::0;10947:1;;10921:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;;;10840:161:0:o;741:130:1:-;806:6;;-1:-1:-1;;;;;806:6:1;792:10;:20;788:43;;821:10;;-1:-1:-1;;;821:10:1;;;;;;;;;;;788:43;861:1;844:19;;-1:-1:-1;;;;;;844:19:1;;;741:130::o;2642:47:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11291:238::-;11377:93;;;;;;;;-1:-1:-1;;;;;11377:93:0;;;;;;11448:10;11377:93;;;;;;;-1:-1:-1;11353:21:0;;;:17;:21;;;;;;:117;;;;;;;-1:-1:-1;;;;;;11353:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:33;;11448:10;;11488:33;;;11291:238;:::o;6324:611::-;4276:14;;4318:24;;-1:-1:-1;;;4318:24:0;;;;;14505:25:2;;;6596:7:0;;-1:-1:-1;;;;;4276:14:0;;4248:16;;4276:14;;4318:15;;14478:18:2;;4318:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4302:40;-1:-1:-1;;;;;;4461:19:0;;4470:10;4461:19;;:132;;-1:-1:-1;4507:21:0;;-1:-1:-1;;;;;4498:30:0;;;4507:21;;4498:30;:94;;;;;4549:43;4572:7;4581:10;4549:22;:43::i;:::-;4443:211;;;6616:27:::1;6646:17:::0;;;:8:::1;:17;::::0;;;;6674:23;;-1:-1:-1;;6674:23:0;;::::1;::::0;::::1;;;::::0;;-1:-1:-1;6708:20:0;::::1;:35:::0;;;6754:23:::1;::::0;::::1;:41:::0;;;;::::1;::::0;::::1;;;::::0;;6806:20:::1;::::0;::::1;:35;6829:12:::0;6806:20;:35:::1;:::i;:::-;-1:-1:-1::0;6852:21:0::1;::::0;::::1;:37;6876:13:::0;6852:21;:37:::1;:::i;:::-;-1:-1:-1::0;6900:16:0::1;::::0;::::1;:27;6919:8:::0;6900:16;:27:::1;:::i;:::-;;6605:330;4636:7:::0;;;;4443:211;4758:10;4703:34;4740:29;;;:17;:29;;;;;;;;;4703:66;;;;;;;;;;-1:-1:-1;;;;;4703:66:0;;;;;;;;;;;;;;;;;;;;;4784:34;;4780:374;;4835:33;4895:5;-1:-1:-1;;;;;4871:29:0;:10;:20;;;-1:-1:-1;;;;;4871:29:0;;:160;;;-1:-1:-1;4931:21:0;;-1:-1:-1;;;;;4922:30:0;;;4931:21;;4922:30;:108;;;;;4977:53;5000:7;5009:10;:20;;;4977:22;:53::i;:::-;4835:196;;5052:28;5048:95;;;6616:27:::1;6646:17:::0;;;:8:::1;:17;::::0;;;;6674:23;;-1:-1:-1;;6674:23:0;;::::1;::::0;::::1;;;::::0;;-1:-1:-1;6708:20:0;::::1;:35:::0;;;6754:23:::1;::::0;::::1;:41:::0;;;;::::1;::::0;::::1;;;::::0;;6806:20:::1;::::0;::::1;:35;6829:12:::0;6806:20;:35:::1;:::i;:::-;-1:-1:-1::0;6852:21:0::1;::::0;::::1;:37;6876:13:::0;6852:21;:37:::1;:::i;:::-;-1:-1:-1::0;6900:16:0::1;::::0;::::1;:27;6919:8:::0;6900:16;:27:::1;:::i;:::-;;6605:330;5121:7:::0;;;;;;5048:95;4820:334;4780:374;5256:28;5287:25;;;:16;:25;;;;;;;;5256:56;;;;;;;;;;-1:-1:-1;;;;;5256:56:0;;;;;;;;;;;;;;;;;;:28;5373:10;5349:34;:213;;;;;5425:5;-1:-1:-1;;;;;5401:29:0;:10;:20;;;-1:-1:-1;;;;;5401:29:0;;:160;;;-1:-1:-1;5461:21:0;;-1:-1:-1;;;;;5452:30:0;;;5461:21;;5452:30;:108;;;;;5507:53;5530:7;5539:10;:20;;;5507:22;:53::i;:::-;5323:239;;5583:18;5575:45;;;;-1:-1:-1;;;5575:45:0;;;;;;;:::i;:::-;6616:27:::1;6646:17:::0;;;:8:::1;:17;::::0;;;;6674:23;;-1:-1:-1;;6674:23:0;;::::1;::::0;::::1;;;::::0;;-1:-1:-1;6708:20:0;::::1;:35:::0;;;6754:23:::1;::::0;::::1;:41:::0;;;;::::1;::::0;::::1;;;::::0;;6806:20:::1;::::0;::::1;:35;6829:12:::0;6806:20;:35:::1;:::i;:::-;-1:-1:-1::0;6852:21:0::1;::::0;::::1;:37;6876:13:::0;6852:21;:37:::1;:::i;:::-;-1:-1:-1::0;6900:16:0::1;::::0;::::1;:27;6919:8:::0;6900:16;:27:::1;:::i;:::-;;6605:330;4237:1405:::0;;;;;6324:611;;;;;;;;;:::o;2766:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5650:588::-;4276:14;;4318:24;;-1:-1:-1;;;4318:24:0;;;;;14505:25:2;;;5770:7:0;;-1:-1:-1;;;;;4276:14:0;;4248:16;;4276:14;;4318:15;;14478:18:2;;4318:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4302:40;-1:-1:-1;;;;;;4461:19:0;;4470:10;4461:19;;:132;;-1:-1:-1;4507:21:0;;-1:-1:-1;;;;;4498:30:0;;;4507:21;;4498:30;:94;;;;;4549:43;4572:7;4581:10;4549:22;:43::i;:::-;4443:211;;;5790:27:::1;5820:17:::0;;;:8:::1;:17;::::0;;;;;;;;5865;;5848:34;;;::::1;;-1:-1:-1::0;;5848:34:0;;::::1;;::::0;;5916:23;;::::1;::::0;5848:34;5893:20;::::1;:46:::0;5976:26;;::::1;::::0;5950:23:::1;::::0;::::1;:52:::0;;;::::1;;::::0;;;::::1;;::::0;;6036:23:::1;::::0;::::1;::::0;6013:20:::1;::::0;::::1;::::0;:46:::1;::::0;:20;:46:::1;:::i;:::-;-1:-1:-1::0;6094:24:0::1;::::0;::::1;::::0;6070:21:::1;::::0;::::1;::::0;:48:::1;::::0;:21;:48:::1;:::i;:::-;-1:-1:-1::0;6148:19:0::1;::::0;::::1;::::0;6129:16:::1;::::0;::::1;::::0;:38:::1;::::0;:16;:38:::1;:::i;:::-;-1:-1:-1::0;6204:26:0::1;::::0;::::1;::::0;6178:23:::1;::::0;::::1;::::0;:52:::1;::::0;:23;:52:::1;:::i;:::-;;5779:459;4636:7:::0;;5650:588;;;:::o;4443:211::-;4758:10;4703:34;4740:29;;;:17;:29;;;;;;;;;4703:66;;;;;;;;;;-1:-1:-1;;;;;4703:66:0;;;;;;;;;;;;;;;;;;;;;4784:34;;4780:374;;4835:33;4895:5;-1:-1:-1;;;;;4871:29:0;:10;:20;;;-1:-1:-1;;;;;4871:29:0;;:160;;;-1:-1:-1;4931:21:0;;-1:-1:-1;;;;;4922:30:0;;;4931:21;;4922:30;:108;;;;;4977:53;5000:7;5009:10;:20;;;4977:22;:53::i;:::-;4835:196;;5052:28;5048:95;;;5790:27:::1;5820:17:::0;;;:8:::1;:17;::::0;;;;;;;;5865;;5848:34;;;::::1;;-1:-1:-1::0;;5848:34:0;;::::1;;::::0;;5916:23;;::::1;::::0;5848:34;5893:20;::::1;:46:::0;5976:26;;::::1;::::0;5950:23:::1;::::0;::::1;:52:::0;;;::::1;;::::0;;;::::1;;::::0;;6036:23:::1;::::0;::::1;::::0;6013:20:::1;::::0;::::1;::::0;:46:::1;::::0;:20;:46:::1;:::i;:::-;-1:-1:-1::0;6094:24:0::1;::::0;::::1;::::0;6070:21:::1;::::0;::::1;::::0;:48:::1;::::0;:21;:48:::1;:::i;:::-;-1:-1:-1::0;6148:19:0::1;::::0;::::1;::::0;6129:16:::1;::::0;::::1;::::0;:38:::1;::::0;:16;:38:::1;:::i;:::-;-1:-1:-1::0;6204:26:0::1;::::0;::::1;::::0;6178:23:::1;::::0;::::1;::::0;:52:::1;::::0;:23;:52:::1;:::i;:::-;;5779:459;5121:7:::0;;;;5650:588;;;:::o;5048:95::-;4820:334;4780:374;5256:28;5287:25;;;:16;:25;;;;;;;;5256:56;;;;;;;;;;-1:-1:-1;;;;;5256:56:0;;;;;;;;;;;;;;;;;;:28;5373:10;5349:34;:213;;;;;5425:5;-1:-1:-1;;;;;5401:29:0;:10;:20;;;-1:-1:-1;;;;;5401:29:0;;:160;;;-1:-1:-1;5461:21:0;;-1:-1:-1;;;;;5452:30:0;;;5461:21;;5452:30;:108;;;;;5507:53;5530:7;5539:10;:20;;;5507:22;:53::i;:::-;5323:239;;5583:18;5575:45;;;;-1:-1:-1;;;5575:45:0;;;;;;;:::i;:::-;5790:27:::1;5820:17:::0;;;:8:::1;:17;::::0;;;;;;;;5865;;5848:34;;;::::1;;-1:-1:-1::0;;5848:34:0;;::::1;;::::0;;5916:23;;::::1;::::0;5848:34;5893:20;::::1;:46:::0;5976:26;;::::1;::::0;5950:23:::1;::::0;::::1;:52:::0;;;::::1;;::::0;;;::::1;;::::0;;6036:23:::1;::::0;::::1;::::0;6013:20:::1;::::0;::::1;::::0;:46:::1;::::0;:20;:46:::1;:::i;:::-;-1:-1:-1::0;6094:24:0::1;::::0;::::1;::::0;6070:21:::1;::::0;::::1;::::0;:48:::1;::::0;:21;:48:::1;:::i;:::-;-1:-1:-1::0;6148:19:0::1;::::0;::::1;::::0;6129:16:::1;::::0;::::1;::::0;:38:::1;::::0;:16;:38:::1;:::i;:::-;-1:-1:-1::0;6204:26:0::1;::::0;::::1;::::0;6178:23:::1;::::0;::::1;::::0;:52:::1;::::0;:23;:52:::1;:::i;:::-;;5779:459;4237:1405:::0;;;;;5650:588;;;:::o;10364:468::-;10498:26;10527:22;;;:13;:22;;;;;;;;:35;;;;;;;;;10498:64;;;;;;;;;;10471:13;;10498:26;:64;10527:35;10498:64;;10527:35;;10498:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10658:13;:22;10672:7;10658:22;;;;;;;;;;;;10637:9;:17;;;:43;10634:183;;10704:14;;-1:-1:-1;10697:21:0;;10634:183;-1:-1:-1;;10751:9:0;;;;;;;;;-1:-1:-1;10751:9:0;;10364:468;;;;;:::o;585:148:1:-;669:6;;-1:-1:-1;;;;;669:6:1;655:10;:20;651:43;;684:10;;-1:-1:-1;;;684:10:1;;;;;;;;;;;651:43;707:6;:18;;-1:-1:-1;;;;;;707:18:1;-1:-1:-1;;;;;707:18:1;;;;;;;;;;585:148::o;9298:750:0:-;9438:29;9485:27;9529:14;9515:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9515:29:0;;9485:59;;9555:13;9590;9585:304;9618:14;9609:5;:23;9585:304;;9662:22;;;;:13;:22;;;;;;;;:29;;;;;;;;:37;;;:55;;:128;;;;-1:-1:-1;9789:1:0;9744:22;;;:13;:22;;;;;;;;:29;;;;;;;;9738:48;;;;;:::i;:::-;;;:52;9662:128;9658:220;;;9831:5;9811:10;9822:5;9811:17;;;;;;;;:::i;:::-;;;;;;;;;;:25;9855:7;;;;:::i;:::-;;;;9658:220;9634:7;;;;:::i;:::-;;;;9585:304;;;;9930:5;9916:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9916:20:0;;9901:35;;9952:9;9947:94;9971:5;9967:1;:9;9947:94;;;10016:10;10027:1;10016:13;;;;;;;;:::i;:::-;;;;;;;9998:12;10011:1;9998:15;;;;;;;;:::i;:::-;;;;;;;;;;:31;9978:3;;9947:94;;;;9474:574;;9298:750;;;;;:::o;3682:509::-;3861:21;;3932:63;;-1:-1:-1;;;3932:63:0;;-1:-1:-1;;;;;7272:32:2;;;3932:63:0;;;7254:51:2;3802:4:0;;3861:21;;3802:4;;3861:21;;3932:23;;7227:18:2;;3932:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3932:63:0;;;;;;;;;;;;:::i;:::-;3894:101;;;4011:6;4006:155;4027:14;:21;4023:1;:25;4006:155;;;4095:7;4074:14;4089:1;4074:17;;;;;;;;:::i;:::-;;;;;;;:28;4070:80;;4130:4;4123:11;;;;;;;4070:80;4050:3;;4006:155;;;-1:-1:-1;4178:5:0;;3682:509;-1:-1:-1;;;;;3682:509:0:o;14:286:2:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:2;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:2:o;497:127::-;558:10;553:3;549:20;546:1;539:31;589:4;586:1;579:15;613:4;610:1;603:15;629:253;701:2;695:9;743:4;731:17;;778:18;763:34;;799:22;;;760:62;757:88;;;825:18;;:::i;:::-;861:2;854:22;629:253;:::o;887:275::-;958:2;952:9;1023:2;1004:13;;-1:-1:-1;;1000:27:2;988:40;;1058:18;1043:34;;1079:22;;;1040:62;1037:88;;;1105:18;;:::i;:::-;1141:2;1134:22;887:275;;-1:-1:-1;887:275:2:o;1167:531::-;1210:5;1263:3;1256:4;1248:6;1244:17;1240:27;1230:55;;1281:1;1278;1271:12;1230:55;1317:6;1304:20;1343:18;1339:2;1336:26;1333:52;;;1365:18;;:::i;:::-;1409:55;1452:2;1433:13;;-1:-1:-1;;1429:27:2;1458:4;1425:38;1409:55;:::i;:::-;1489:2;1480:7;1473:19;1535:3;1528:4;1523:2;1515:6;1511:15;1507:26;1504:35;1501:55;;;1552:1;1549;1542:12;1501:55;1617:2;1610:4;1602:6;1598:17;1591:4;1582:7;1578:18;1565:55;1665:1;1640:16;;;1658:4;1636:27;1629:38;;;;1644:7;1167:531;-1:-1:-1;;;1167:531:2:o;1703:322::-;1772:6;1825:2;1813:9;1804:7;1800:23;1796:32;1793:52;;;1841:1;1838;1831:12;1793:52;1881:9;1868:23;1914:18;1906:6;1903:30;1900:50;;;1946:1;1943;1936:12;1900:50;1969;2011:7;2002:6;1991:9;1987:22;1969:50;:::i;:::-;1959:60;1703:322;-1:-1:-1;;;;1703:322:2:o;2030:131::-;-1:-1:-1;;;;;2105:31:2;;2095:42;;2085:70;;2151:1;2148;2141:12;2085:70;2030:131;:::o;2166:247::-;2225:6;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;2418:180::-;2477:6;2530:2;2518:9;2509:7;2505:23;2501:32;2498:52;;;2546:1;2543;2536:12;2498:52;-1:-1:-1;2569:23:2;;2418:180;-1:-1:-1;2418:180:2:o;2603:423::-;2645:3;2683:5;2677:12;2710:6;2705:3;2698:19;2735:1;2745:162;2759:6;2756:1;2753:13;2745:162;;;2821:4;2877:13;;;2873:22;;2867:29;2849:11;;;2845:20;;2838:59;2774:12;2745:162;;;2749:3;2952:1;2945:4;2936:6;2931:3;2927:16;2923:27;2916:38;3015:4;3008:2;3004:7;2999:2;2991:6;2987:15;2983:29;2978:3;2974:39;2970:50;2963:57;;;2603:423;;;;:::o;3031:1131::-;3407:4;3436:3;3480:6;3473:14;3466:22;3455:9;3448:41;3525:6;3520:2;3509:9;3505:18;3498:34;3582:6;3575:14;3568:22;3563:2;3552:9;3548:18;3541:50;3627:2;3622;3611:9;3607:18;3600:30;3653:45;3694:2;3683:9;3679:18;3671:6;3653:45;:::i;:::-;3639:59;;3747:9;3739:6;3735:22;3729:3;3718:9;3714:19;3707:51;3781:33;3807:6;3799;3781:33;:::i;:::-;3767:47;;3863:9;3855:6;3851:22;3845:3;3834:9;3830:19;3823:51;3897:33;3923:6;3915;3897:33;:::i;:::-;3883:47;;3979:9;3971:6;3967:22;3961:3;3950:9;3946:19;3939:51;4013:33;4039:6;4031;4013:33;:::i;:::-;3999:47;;4095:9;4087:6;4083:22;4077:3;4066:9;4062:19;4055:51;4123:33;4149:6;4141;4123:33;:::i;:::-;4115:41;3031:1131;-1:-1:-1;;;;;;;;;;;3031:1131:2:o;4167:220::-;4316:2;4305:9;4298:21;4279:4;4336:45;4377:2;4366:9;4362:18;4354:6;4336:45;:::i;4392:248::-;4460:6;4468;4521:2;4509:9;4500:7;4496:23;4492:32;4489:52;;;4537:1;4534;4527:12;4489:52;-1:-1:-1;;4560:23:2;;;4630:2;4615:18;;;4602:32;;-1:-1:-1;4392:248:2:o;4645:1675::-;5099:4;5128:3;5172:6;5165:14;5158:22;5147:9;5140:41;5200:2;5238:6;5233:2;5222:9;5218:18;5211:34;5295:6;5288:14;5281:22;5276:2;5265:9;5261:18;5254:50;5340:2;5335;5324:9;5320:18;5313:30;5366:45;5407:2;5396:9;5392:18;5384:6;5366:45;:::i;:::-;5352:59;;5460:9;5452:6;5448:22;5442:3;5431:9;5427:19;5420:51;5494:33;5520:6;5512;5494:33;:::i;:::-;5480:47;;5576:9;5568:6;5564:22;5558:3;5547:9;5543:19;5536:51;5610:33;5636:6;5628;5610:33;:::i;:::-;5596:47;;5692:9;5684:6;5680:22;5674:3;5663:9;5659:19;5652:51;5726:33;5752:6;5744;5726:33;:::i;:::-;5712:47;;5808:9;5800:6;5796:22;5790:3;5779:9;5775:19;5768:51;5842:33;5868:6;5860;5842:33;:::i;:::-;5912:22;;;5906:3;5891:19;;5884:51;5984:13;;6006:22;;;6056:2;6082:15;;;;-1:-1:-1;6044:15:2;;;;6115:1;6125:169;6139:6;6136:1;6133:13;6125:169;;;6200:13;;6188:26;;6269:15;;;;6234:12;;;;6161:1;6154:9;6125:169;;;-1:-1:-1;6311:3:2;;4645:1675;-1:-1:-1;;;;;;;;;;;;;;4645:1675:2:o;6325:458::-;6412:6;6420;6428;6481:2;6469:9;6460:7;6456:23;6452:32;6449:52;;;6497:1;6494;6487:12;6449:52;6533:9;6520:23;6510:33;;6590:2;6579:9;6575:18;6562:32;6552:42;;6645:2;6634:9;6630:18;6617:32;6672:18;6664:6;6661:30;6658:50;;;6704:1;6701;6694:12;6658:50;6727;6769:7;6760:6;6749:9;6745:22;6727:50;:::i;:::-;6717:60;;;6325:458;;;;;:::o;6788:315::-;6856:6;6864;6917:2;6905:9;6896:7;6892:23;6888:32;6885:52;;;6933:1;6930;6923:12;6885:52;6969:9;6956:23;6946:33;;7029:2;7018:9;7014:18;7001:32;7042:31;7067:5;7042:31;:::i;:::-;7092:5;7082:15;;;6788:315;;;;;:::o;7316:947::-;7695:6;7688:14;7681:22;7670:9;7663:41;7740:6;7735:2;7724:9;7720:18;7713:34;7797:6;7790:14;7783:22;7778:2;7767:9;7763:18;7756:50;7842:3;7837:2;7826:9;7822:18;7815:31;7644:4;7869:46;7910:3;7899:9;7895:19;7887:6;7869:46;:::i;:::-;7964:9;7956:6;7952:22;7946:3;7935:9;7931:19;7924:51;7998:33;8024:6;8016;7998:33;:::i;:::-;7984:47;;8080:9;8072:6;8068:22;8062:3;8051:9;8047:19;8040:51;8114:33;8140:6;8132;8114:33;:::i;:::-;8100:47;;8196:9;8188:6;8184:22;8178:3;8167:9;8163:19;8156:51;8224:33;8250:6;8242;8224:33;:::i;:::-;8216:41;7316:947;-1:-1:-1;;;;;;;;;;7316:947:2:o;8577:160::-;8642:20;;8698:13;;8691:21;8681:32;;8671:60;;8727:1;8724;8717:12;8671:60;8577:160;;;:::o;8742:1019::-;8879:6;8887;8895;8903;8911;8919;8927;8980:3;8968:9;8959:7;8955:23;8951:33;8948:53;;;8997:1;8994;8987:12;8948:53;9033:9;9020:23;9010:33;;9062:35;9093:2;9082:9;9078:18;9062:35;:::i;:::-;9052:45;;9144:2;9133:9;9129:18;9116:32;9106:42;;9167:35;9198:2;9187:9;9183:18;9167:35;:::i;:::-;9157:45;;9253:3;9242:9;9238:19;9225:33;9277:18;9318:2;9310:6;9307:14;9304:34;;;9334:1;9331;9324:12;9304:34;9357:50;9399:7;9390:6;9379:9;9375:22;9357:50;:::i;:::-;9347:60;;9460:3;9449:9;9445:19;9432:33;9416:49;;9490:2;9480:8;9477:16;9474:36;;;9506:1;9503;9496:12;9474:36;9529:52;9573:7;9562:8;9551:9;9547:24;9529:52;:::i;:::-;9519:62;;9634:3;9623:9;9619:19;9606:33;9590:49;;9664:2;9654:8;9651:16;9648:36;;;9680:1;9677;9670:12;9648:36;;9703:52;9747:7;9736:8;9725:9;9721:24;9703:52;:::i;:::-;9693:62;;;8742:1019;;;;;;;;;;:::o;9766:291::-;9943:2;9932:9;9925:21;9906:4;9963:45;10004:2;9993:9;9989:18;9981:6;9963:45;:::i;:::-;9955:53;;10044:6;10039:2;10028:9;10024:18;10017:34;9766:291;;;;;:::o;10062:1384::-;10157:6;10165;10218:2;10206:9;10197:7;10193:23;10189:32;10186:52;;;10234:1;10231;10224:12;10186:52;10270:9;10257:23;10247:33;;10331:2;10320:9;10316:18;10303:32;10354:18;10395:2;10387:6;10384:14;10381:34;;;10411:1;10408;10401:12;10381:34;10434:22;;;;10490:4;10472:16;;;10468:27;10465:47;;;10508:1;10505;10498:12;10465:47;10534:22;;:::i;:::-;10579:19;10595:2;10579:19;:::i;:::-;10572:5;10565:34;10652:2;10648;10644:11;10631:25;10626:2;10619:5;10615:14;10608:49;10689:28;10713:2;10709;10705:11;10689:28;:::i;:::-;10684:2;10677:5;10673:14;10666:52;10764:2;10760;10756:11;10743:25;10793:2;10783:8;10780:16;10777:36;;;10809:1;10806;10799:12;10777:36;10845:45;10882:7;10871:8;10867:2;10863:17;10845:45;:::i;:::-;10840:2;10833:5;10829:14;10822:69;;10937:3;10933:2;10929:12;10916:26;10967:2;10957:8;10954:16;10951:36;;;10983:1;10980;10973:12;10951:36;11020:45;11057:7;11046:8;11042:2;11038:17;11020:45;:::i;:::-;11014:3;11007:5;11003:15;10996:70;;11112:3;11108:2;11104:12;11091:26;11142:2;11132:8;11129:16;11126:36;;;11158:1;11155;11148:12;11126:36;11195:45;11232:7;11221:8;11217:2;11213:17;11195:45;:::i;:::-;11189:3;11182:5;11178:15;11171:70;;11287:3;11283:2;11279:12;11266:26;11317:2;11307:8;11304:16;11301:36;;;11333:1;11330;11323:12;11301:36;11370:45;11407:7;11396:8;11392:2;11388:17;11370:45;:::i;:::-;11364:3;11357:5;11353:15;11346:70;;11435:5;11425:15;;;;;10062:1384;;;;;:::o;11451:380::-;11530:1;11526:12;;;;11573;;;11594:61;;11648:4;11640:6;11636:17;11626:27;;11594:61;11701:2;11693:6;11690:14;11670:18;11667:38;11664:161;;11747:10;11742:3;11738:20;11735:1;11728:31;11782:4;11779:1;11772:15;11810:4;11807:1;11800:15;11664:161;;11451:380;;;:::o;11962:518::-;12064:2;12059:3;12056:11;12053:421;;;12100:5;12097:1;12090:16;12144:4;12141:1;12131:18;12214:2;12202:10;12198:19;12195:1;12191:27;12185:4;12181:38;12250:4;12238:10;12235:20;12232:47;;;-1:-1:-1;12273:4:2;12232:47;12328:2;12323:3;12319:12;12316:1;12312:20;12306:4;12302:31;12292:41;;12383:81;12401:2;12394:5;12391:13;12383:81;;;12460:1;12446:16;;12427:1;12416:13;12383:81;;;12387:3;;12053:421;11962:518;;;:::o;12656:1345::-;12782:3;12776:10;12809:18;12801:6;12798:30;12795:56;;;12831:18;;:::i;:::-;12860:97;12950:6;12910:38;12942:4;12936:11;12910:38;:::i;:::-;12904:4;12860:97;:::i;:::-;13012:4;;13069:2;13058:14;;13086:1;13081:663;;;;13788:1;13805:6;13802:89;;;-1:-1:-1;13857:19:2;;;13851:26;13802:89;-1:-1:-1;;12613:1:2;12609:11;;;12605:24;12601:29;12591:40;12637:1;12633:11;;;12588:57;13904:81;;13051:944;;13081:663;11909:1;11902:14;;;11946:4;11933:18;;-1:-1:-1;;13117:20:2;;;13235:236;13249:7;13246:1;13243:14;13235:236;;;13338:19;;;13332:26;13317:42;;13430:27;;;;13398:1;13386:14;;;;13265:19;;13235:236;;;13239:3;13499:6;13490:7;13487:19;13484:201;;;13560:19;;;13554:26;-1:-1:-1;;13643:1:2;13639:14;;;13655:3;13635:24;13631:37;13627:42;13612:58;13597:74;;13484:201;;;13731:1;13722:6;13719:1;13715:14;13711:22;13705:4;13698:36;13051:944;;;;;12656:1345;;:::o;14541:251::-;14611:6;14664:2;14652:9;14643:7;14639:23;14635:32;14632:52;;;14680:1;14677;14670:12;14632:52;14712:9;14706:16;14731:31;14756:5;14731:31;:::i;14797:338::-;14999:2;14981:21;;;15038:2;15018:18;;;15011:30;-1:-1:-1;;;15072:2:2;15057:18;;15050:44;15126:2;15111:18;;14797:338::o;15498:127::-;15559:10;15554:3;15550:20;15547:1;15540:31;15590:4;15587:1;15580:15;15614:4;15611:1;15604:15;15630:125;15695:9;;;15716:10;;;15713:36;;;15729:18;;:::i;15760:127::-;15821:10;15816:3;15812:20;15809:1;15802:31;15852:4;15849:1;15842:15;15876:4;15873:1;15866:15;15892:135;15931:3;15952:17;;;15949:43;;15972:18;;:::i;:::-;-1:-1:-1;16019:1:2;16008:13;;15892:135::o;16032:709::-;16097:5;16150:3;16143:4;16135:6;16131:17;16127:27;16117:55;;16168:1;16165;16158:12;16117:55;16197:6;16191:13;16223:4;16246:18;16242:2;16239:26;16236:52;;;16268:18;;:::i;:::-;16314:2;16311:1;16307:10;16337:28;16361:2;16357;16353:11;16337:28;:::i;:::-;16399:15;;;16469;;;16465:24;;;16430:12;;;;16501:15;;;16498:35;;;16529:1;16526;16519:12;16498:35;16565:2;16557:6;16553:15;16542:26;;16577:135;16593:6;16588:3;16585:15;16577:135;;;16659:10;;16647:23;;16610:12;;;;16690;;;;16577:135;;;16730:5;16032:709;-1:-1:-1;;;;;;;16032:709:2:o;16746:614::-;16875:6;16883;16936:2;16924:9;16915:7;16911:23;16907:32;16904:52;;;16952:1;16949;16942:12;16904:52;16985:9;16979:16;17014:18;17055:2;17047:6;17044:14;17041:34;;;17071:1;17068;17061:12;17041:34;17094:72;17158:7;17149:6;17138:9;17134:22;17094:72;:::i;:::-;17084:82;;17212:2;17201:9;17197:18;17191:25;17175:41;;17241:2;17231:8;17228:16;17225:36;;;17257:1;17254;17247:12;17225:36;;17280:74;17346:7;17335:8;17324:9;17320:24;17280:74;:::i;:::-;17270:84;;;16746:614;;;;;:::o

Swarm Source

ipfs://57637e3468e97560534a45d2093cee9c31dfc3d02fd63ff197e814b7e50e037c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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