Contract 0x231e6d5a2d93d613ed081951b83211f10ba3ab78

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5cc6cac452e9490c735ee0df39c2f367b0c661e6205a82e2ec9cbcccb88cfc380x61012060164249462022-06-23 19:41:506 days 15 hrs ago0xdf94fca483faf1bf1f1f484df3e0f1b5ff216bae IN  Create: Stations0 AVAX0.09764807525
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stations

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at snowtrace.io on 2022-06-23
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;



  /**********************************************************************
   *                                                                    *
   *    Stations.sol                                                    *
   *                                                                    *
   *      author:    Tony Fischetti    <[email protected]>          *
   *      version:   9                                                  *
   *                                                                    *
   **********************************************************************/


/**
 * Description:
 *
 *
 */

/**
 * Specifications / flags / config
 *
 * Note:
 *   The flag <-> meaning mapping available in the project's
 *   docs will always be at least as up-to-date as the info
 *   here. Refer to that instead.
 *
 *   station type:
 *     0x0000 = microblog
 *
 *   station_flags (starting from left-most bit)
 *     0: single user (0) or multi-user (1)                   - 0x8000
 *     1: trusted/render arbitrary HTML (0) or untrusted (1)  - 0x4000
 *     2: private (0) or public (1)                           - 0x2000
 *     3: undeletable (0) or deletable (1) broadcasts         - 0x1000
 *
 *     4: unmodifiable (0) or modifiable (1) broadcasts       - 0x0800
 *     5: disallow (0) or allow (1) replies                   - 0x0400
 *     6: disallow (0) or allow (1) changing usernames        - 0x0200
 *
 *   broadcast_flags (starting from left-most bit)
 *     0: user-created (0) or system-created (1)              - 0x8000
 *     1: undeleted (0) or (1) deleted broadcast              - 0x4000
 *     2: unedited (0) or (1) edited broadcast                - 0x2000
 *     3: unimported (0) or imported (1) broadcast            - 0x1000
 *
 *     4: apocryphal date (1)                                 - 0x0800
 *     5: encrypted (1)                                       - 0x0400
 *
 *   broadcast_type
 *     0x0000 = raw HTML
 *     0x0001 = plain text
 *     0x0002 = music video with lyrics
 *
 */


/**
 * Example station instantiation:
 *   creator: 0xdF94fCA483faf1bf1f1f484df3e0F1B5fF216bAe
 *   name: Den of understanding
 *   frequency: den-of-understanding
 *   description: an investigation into pulling the curtain back and
                  seeing how the machinery works
 *   type: 0x0000
 *   flags: 0x1E00       (0x9E00 for group tests)
 */

/**
 * TODO:
 *  [x] signature
 *    [ ] should the signed hash contain the timestamp and username?
 *  [ ] another broadcast_type (that's my jam?)
 *  [ ] events that are good enough to create station state from scratch
 *  [ ] "acknowledgements" (and count)
 *  [ ] implement piece-meal fetching of broadcasts
 *  [ ] grep for /TODO/
 *  [ ] self-destruct
 *  [ ] closer to end, trade from clarity to give to gas savings
 *  [ ] delete replies/acknowledgements go away on an edit?
 *        or maybe you need approval after edit?
 *  [ ] all the other ones
 */

contract Stations {

    /* ------------------------------------------------------ */
    /* -- STATE VARIABLES                                     */

    string            station_name;
    string            station_frequency;
    string            station_description;
    uint256 constant  stations_version = 9;
    uint256 constant  stations_minor_version = 1;
    address immutable creator;
    uint256 immutable created_on;
    bytes2  immutable station_type;
    bytes2  immutable station_flags;
    string            station_metadata = "";

    uint256           current_broadcast_id = 0;
    uint256           current_user_index   = 0;
    User      []      all_users_of_station;
    Broadcast []      all_broadcasts;

    mapping(address => uint) user_exist_map;
    mapping(string  => bool) username_exist_map;
    mapping(address => bool) admin_map;
    mapping(address => bool) whitelist_map;

    bool sf_multiuser_p;
    bool sf_untrusted_p;
    bool sf_public_p;
    bool sf_deletable_broadcasts_p;
    bool sf_modifiable_broadcasts_p;
    bool sf_allow_replies_p;
    bool sf_allow_changing_usernames_p;
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- STRUCTURES                                          */

    struct Broadcast {
        uint256 broadcast_id;
        uint256 unix_timestamp;
        address author;
        string  content;
        bytes   signature;
        uint256 parent;
        uint256 reference_count;
        bytes2  broadcast_type;
        bytes2  broadcast_flags;
        string  broadcast_metadata;
    }

    struct User {
        address user_address;
        string  username;
        uint256 time_joined;
        string  user_metadata;
    }
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- EVENTS                                              */

    event UserJoined(
        User theuser
    );

    event NewBroadcast(
        Broadcast thebroadcast
    );

    event BroadcastChange(
        string whatkindofchange,
        Broadcast thebroadcast
    );

    event StationMetadataChange(
        string whatkindofchange
    );

    event UserMetadataChange(
        string whatkindofchange,
        User theuser
    );

    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- CONSTRUCTOR (and parameter getters)                 */

    constructor (address       _creator,
                 string memory _station_name,
                 string memory _station_frequency,
                 string memory _station_description,
                 bytes2        _station_type,
                 bytes2        _station_flags,
                 string memory _station_metadata) {
        creator = _creator;
        station_name = _station_name;
        station_frequency = _station_frequency;
        station_description = _station_description;
        station_type  = _station_type;
        station_flags = _station_flags;
        station_metadata = _station_metadata;

        // creator is automatically an admin
        admin_map[_creator] = true;
        // creator is automatically whitelisted
        whitelist_map[_creator] = true;
        created_on = block.timestamp;
    }

    // should get called right after contract creation
    function inaugurate_station(string memory username) public returns (bool){
        address who = msg.sender;

        require(who == creator,
                "error: need to be the station creator to inaugurate station");

        // interpreting station flags (to avoid repeated function calls)
        sf_multiuser_p                 = ((station_flags & 0x8000) > 0);
        sf_untrusted_p                 = ((station_flags & 0x4000) > 0);
        sf_public_p                    = ((station_flags & 0x2000) > 0);
        sf_deletable_broadcasts_p      = ((station_flags & 0x1000) > 0);
        sf_modifiable_broadcasts_p     = ((station_flags & 0x0800) > 0);
        sf_allow_replies_p             = ((station_flags & 0x0400) > 0);
        sf_allow_changing_usernames_p  = ((station_flags & 0x0200) > 0);

        // creating system user... the uncaused cause
        User memory uncaused_cause = User(address(this), "uncaused-cause",
                                          created_on, "");
        user_exist_map[address(this)] = current_user_index;
        all_users_of_station.push(uncaused_cause);
        current_user_index += 1;
        username_exist_map["uncaused-cause"] = true;

        // creates the "prime" broadcast
        Broadcast memory tmp = Broadcast(0, 0, address(this),
                                         "this is a placeholder",
                                         abi.encodePacked(username),
                                         0, 0, 0x0001, 0x8000, "");
        all_broadcasts.push(tmp);
        current_broadcast_id += 1;

        // setting username of station creator
        uint256 timenow = block.timestamp;
        User memory tmp2 = User(who, username, timenow, "");
        user_exist_map[who] = current_user_index;
        username_exist_map[username] = true;
        all_users_of_station.push(tmp2);
        current_user_index += 1;
        return true;
    }

    function station_info() public view returns (string memory, string memory,
                                                 string memory, uint256,
                                                 uint256, address, uint256,
                                                 bytes2, bytes2, string memory,
                                                 uint256, uint256){
        return (station_name, station_frequency, station_description,
                stations_version, stations_minor_version, creator,
                created_on, station_type, station_flags, station_metadata,
                current_user_index, current_broadcast_id);
    }
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- CHECKING FUNCTIONS (VIEW)                           */

    function user_already_in_station_p(address who)
               public view returns(bool){
        return user_exist_map[who] > 0;
    }

    function username_already_in_station_p(string memory a_name)
               public view returns(bool){
        return username_exist_map[a_name];
    }

    function is_admin_p(address who) public view returns (bool){
        return admin_map[who];
    }

    function is_allowed_in_p(address who) public view returns (bool){
        return whitelist_map[who];
    }
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- ACCESSOR (VIEW or PURE) FUNCTIONS (AND DEBUGGING)   */

    function get_all_broadcasts() public view returns (Broadcast [] memory){
        return all_broadcasts;
    }

    function get_all_users() public view returns (User [] memory){
        return all_users_of_station;
    }
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- MORE INTERESTING FUNCTIONS                          */

    function join_station(string memory username) public returns (bool){
        address who = msg.sender;

        require(sf_multiuser_p || who==creator,
                "station is single-user. cannot join station");
        require(sf_public_p || whitelist_map[who],
                "error: address not whitelisted and group is private");
        require(!user_already_in_station_p(who),
                "error: user already in station");
        require(!username_already_in_station_p(username),
                "error: username already taken");

        uint256 timenow = block.timestamp;
        user_exist_map[who] = current_user_index;
        User memory tmp = User(who, username, timenow, "");
        all_users_of_station.push(tmp);
        current_user_index += 1;
        username_exist_map[username] = true;
        emit UserJoined(tmp);
        return true;
    }

    // TODO: this is a temporary solution
    function _add_user_to_station(address new_user_address,
                                  string memory username)
                                     public returns (bool){
        address who = msg.sender;
        require(is_admin_p(who),
                "error: must be admin to add user in this manner");
        require(sf_multiuser_p || who==creator,
                "station is single-user. cannot join station");
        require(!user_already_in_station_p(new_user_address),
                "error: user already in station");
        require(!username_already_in_station_p(username),
                "error: username already taken");

        uint256 timenow = block.timestamp;
        user_exist_map[new_user_address] = current_user_index;
        User memory tmp = User(new_user_address, username, timenow, "");
        all_users_of_station.push(tmp);
        current_user_index += 1;
        username_exist_map[username] = true;
        emit UserJoined(tmp);
        return true;
    }

    function do_broadcast(string memory content, bytes memory signature,
                          uint256 parent, bytes2 broadcast_type,
                          bytes2  broadcast_flags,
                          string  memory broadcast_metadata,
                          uint256 optional_timestamp)
                               public returns (bool){
        address who = msg.sender;
        uint256 timetouse = block.timestamp;

        if (optional_timestamp != 0){
            // date is now apocryphal
            timetouse = optional_timestamp;
            broadcast_flags = broadcast_flags | 0x0800;
        }

        require(user_already_in_station_p(who), "error: user not in station");
        require((broadcast_type!=0x0000) || (!sf_untrusted_p),
                "error: this station cannot broadcast raw HTML");
        require(!((broadcast_flags & 0x8000) > 0),
                "error: cannot broadcast a 'system' broadcast");
        require(parent == 0 || sf_allow_replies_p,
                "error: this station doesn't accept replies");
        require(verify_broadcast_author(content, who, signature),
                "error: signature mismatch");

        Broadcast memory tmp = Broadcast(current_broadcast_id, timetouse, who,
                                         content, signature, parent, 0,
                                         broadcast_type, broadcast_flags,
                                         broadcast_metadata);

        all_broadcasts[parent].reference_count += 1;
        all_broadcasts.push(tmp);
        emit NewBroadcast(tmp);
        current_broadcast_id += 1;
        return true;
    }

    function import_broadcast(uint256 unix_timestamp,
                              address author,
                              string  memory content,
                              bytes   memory sig,
                              bytes2  broadcast_type,
                              bytes2  broadcast_flags,
                              string  memory broadcast_metadata)
                                                 public returns (uint256){
        address who = msg.sender;
        // TODO: do you, though?
        require(is_admin_p(who),
                "error: need to be station admin to import");
        require(verify_broadcast_author(content, author, sig),
                "error: signature mismatch");
        // no raw html messages if untrusted
        require(!(sf_untrusted_p && broadcast_type==0x0000),
                "error: untrusted station cannot import html broadcasts");
        require((broadcast_flags & 0x8000) == 0,
                "error: cannot import system broadcasts");
        require((broadcast_flags & 0x4000) == 0,
                "error: will not import deleted broadcasts");
        // TODO: can I just use 0xC000 for both?

        Broadcast memory tmp = Broadcast(current_broadcast_id,
                                         unix_timestamp, author, content,
                                         sig, 0, 0, broadcast_type,
                                         broadcast_flags|0x1000|0x0800,
                                         broadcast_metadata);
        all_broadcasts.push(tmp);
        emit NewBroadcast(tmp);
        current_broadcast_id += 1;
        all_broadcasts[0].reference_count += 1;

        return 1;
    }

    function change_username(string memory new_username) public returns (bool){
        address who = msg.sender;

        require(sf_allow_changing_usernames_p,
                "error: this station does not support changing usernames");
        require(user_already_in_station_p(who),
                "error: user not in station");
        require(!username_already_in_station_p(new_username),
                "error: username already taken");

        string memory old_username = all_users_of_station[user_exist_map[who]].username;
        username_exist_map[old_username] = false;
        username_exist_map[new_username] = true;
        all_users_of_station[user_exist_map[who]].username = new_username;
        emit UserMetadataChange("username-change",
                                all_users_of_station[user_exist_map[who]]);
        return true;
    }

    function add_admin(address someone) public returns (bool){
        require(is_admin_p(msg.sender),
                "error: need to be an admin to add another admin");
        require(sf_multiuser_p,
                "station is single-user. cannot add admin");
        admin_map[someone] = true;
        return true;
    }

    function remove_admin(address someone) public returns (bool){
        require(msg.sender == creator,
                "error: need to be station creator to remove an admin");
        require(creator == someone,
                "error: cannot remove station creator from admin list");
        admin_map[someone] = false;
        return true;
    }

    function whitelist_address(address someone) public returns (bool){
        require(is_admin_p(msg.sender),
                "error: need to be an admin to whitelist address");
        whitelist_map[someone] = true;
        return true;
    }

    function reverse_whitelist(address someone) public returns (bool){
        require(is_admin_p(msg.sender),
                "error: need to be an admin to remove address from whitelist");
        whitelist_map[someone] = false;
        return true;
    }
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- DELETIONS AND EDITING FUNCTIONS                     */

    // TODO QUESTION: should the bcaster *and* the admins be able to delete?
    function delete_broadcast(uint256 id_to_delete) public returns (bool){
        require(sf_deletable_broadcasts_p,
                "error: station doesn't allow deletion of broadcasts");
        require(is_admin_p(msg.sender) ||
                  msg.sender == all_broadcasts[id_to_delete].author,
                "error: must be admin or author to delete a broadcast");
        require(id_to_delete != 0, "error: cannot delete prime broadcast");
        require(id_to_delete < current_broadcast_id,
                "error: array index out of bounds");
        all_broadcasts[id_to_delete].content = "";
        all_broadcasts[id_to_delete].signature = "";
        bytes2 newflags = all_broadcasts[id_to_delete].broadcast_flags|0x4000;
        all_broadcasts[id_to_delete].broadcast_flags = newflags;
        all_broadcasts[0].reference_count -= 1;
        emit BroadcastChange("deletion", all_broadcasts[id_to_delete]);
        return true;
    }

    // TODO: needs more flexibility
    // NOTE: even the creator cannot edit a broadcast made by someone else
    function edit_broadcast(uint256 id_to_edit,
                            string memory newcontent,
                            bytes memory newsignature) public returns (bool){
        address who = msg.sender;
        require(sf_modifiable_broadcasts_p,
                "error: station doesn't allow editing broadcasts");
        require(msg.sender == all_broadcasts[id_to_edit].author,
                "error: must be author to edit a broadcast");
        require(id_to_edit != 0, "error: cannot edit prime broadcast");
        require(id_to_edit < current_broadcast_id,
                "error: array index out of bounds");
        require(verify_broadcast_author(newcontent, who, newsignature),
                "error: signature mismatch");
        all_broadcasts[id_to_edit].content = newcontent;
        all_broadcasts[id_to_edit].signature = newsignature;
        bytes2 newflags = all_broadcasts[id_to_edit].broadcast_flags | 0x2000;
        all_broadcasts[id_to_edit].broadcast_flags = newflags;
        emit BroadcastChange("edit", all_broadcasts[id_to_edit]);
        return true;
    }

    function replace_broadcast_metadata(uint256 id_to_edit,
                                        string memory newmetadata)
                                               public returns (bool){
        require(sf_modifiable_broadcasts_p,
                "error: station doesn't allow editing broadcasts");
        require(msg.sender == all_broadcasts[id_to_edit].author,
                "error: must be author to edit a broadcast");
        require(id_to_edit != 0, "error: cannot edit prime broadcast");
        require(id_to_edit < current_broadcast_id,
                "error: array index out of bounds");
        all_broadcasts[id_to_edit].broadcast_metadata = newmetadata;
        emit BroadcastChange("metadata-change", all_broadcasts[id_to_edit]);
        return true;
    }

    function replace_station_metadata(string memory newmetadata)
                                             public returns (bool){
        require(is_admin_p(msg.sender),
                "error: must be admin or author to change station metadata");
        station_metadata = newmetadata;
        emit StationMetadataChange("metadata-change");
        return true;
    }

    function replace_station_name(string memory newname)
                                             public returns (bool){
        require(is_admin_p(msg.sender),
                "error: must be admin or author to change station metadata");
        station_name = newname;
        emit StationMetadataChange("name-change");
        return true;
    }

    function replace_station_description(string memory newdescription)
                                                    public returns (bool){
        require(is_admin_p(msg.sender),
                "error: must be admin or author to change station metadata");
        station_description = newdescription;
        emit StationMetadataChange("description-change");
        return true;
    }

    function replace_user_metadata(string memory newmetadata)
                                                     public returns (bool){
        address who = msg.sender;
        require(user_already_in_station_p(who),
                "error: user not in station");
        all_users_of_station[user_exist_map[who]].user_metadata = newmetadata;
        emit UserMetadataChange("metadata-change",
                                all_users_of_station[user_exist_map[who]]);
        return true;
    }

    // TODO: write self destruct routine
    /* ------------------------------------------------------ */


    /* ------------------------------------------------------ */
    /* -- UTILITIES                                           */

    function get_hash(string memory text) pure public returns (bytes32){
        return keccak256(abi.encodePacked(text));
    }

    function ec_recover_signer(bytes32 msg_hash, bytes memory sig)
                                             public pure returns (address) {
        (bytes32 r, bytes32 s, uint8 v) = split_signature(sig);
        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        bytes32 prefixed = keccak256(abi.encodePacked(prefix, msg_hash));
        return ecrecover(prefixed, v, r, s);
    }

    function split_signature(bytes memory sig) public pure returns (bytes32 r,
                                                                    bytes32 s,
                                                                    uint8 v) {
        require(sig.length==65, "invalid signature length");
        assembly {
            r := mload(add(sig, 32))
            s := mload(add(sig, 64))
            v := byte(0, mload(add(sig, 96)))
        }
        if (v < 27){
            v += 27;
        }
        require(v==27 || v==28, "invalid signature");
        return (r, s, v);
    }

    function verify_broadcast_author(string memory content,
                                     address alleged_author,
                                     bytes memory sig)
                                           public pure returns (bool){
        bytes32 the_hash = keccak256(abi.encodePacked(content));
        address real_author = ec_recover_signer(the_hash, sig);
        return (real_author==alleged_author);
    }
    /* ------------------------------------------------------ */


    function very_temp() public view returns (address){
        address who = msg.sender;
        return who;
    }

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"string","name":"_station_name","type":"string"},{"internalType":"string","name":"_station_frequency","type":"string"},{"internalType":"string","name":"_station_description","type":"string"},{"internalType":"bytes2","name":"_station_type","type":"bytes2"},{"internalType":"bytes2","name":"_station_flags","type":"bytes2"},{"internalType":"string","name":"_station_metadata","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"whatkindofchange","type":"string"},{"components":[{"internalType":"uint256","name":"broadcast_id","type":"uint256"},{"internalType":"uint256","name":"unix_timestamp","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"string","name":"content","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"parent","type":"uint256"},{"internalType":"uint256","name":"reference_count","type":"uint256"},{"internalType":"bytes2","name":"broadcast_type","type":"bytes2"},{"internalType":"bytes2","name":"broadcast_flags","type":"bytes2"},{"internalType":"string","name":"broadcast_metadata","type":"string"}],"indexed":false,"internalType":"struct Stations.Broadcast","name":"thebroadcast","type":"tuple"}],"name":"BroadcastChange","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"broadcast_id","type":"uint256"},{"internalType":"uint256","name":"unix_timestamp","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"string","name":"content","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"parent","type":"uint256"},{"internalType":"uint256","name":"reference_count","type":"uint256"},{"internalType":"bytes2","name":"broadcast_type","type":"bytes2"},{"internalType":"bytes2","name":"broadcast_flags","type":"bytes2"},{"internalType":"string","name":"broadcast_metadata","type":"string"}],"indexed":false,"internalType":"struct Stations.Broadcast","name":"thebroadcast","type":"tuple"}],"name":"NewBroadcast","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"whatkindofchange","type":"string"}],"name":"StationMetadataChange","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"user_address","type":"address"},{"internalType":"string","name":"username","type":"string"},{"internalType":"uint256","name":"time_joined","type":"uint256"},{"internalType":"string","name":"user_metadata","type":"string"}],"indexed":false,"internalType":"struct Stations.User","name":"theuser","type":"tuple"}],"name":"UserJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"whatkindofchange","type":"string"},{"components":[{"internalType":"address","name":"user_address","type":"address"},{"internalType":"string","name":"username","type":"string"},{"internalType":"uint256","name":"time_joined","type":"uint256"},{"internalType":"string","name":"user_metadata","type":"string"}],"indexed":false,"internalType":"struct Stations.User","name":"theuser","type":"tuple"}],"name":"UserMetadataChange","type":"event"},{"inputs":[{"internalType":"address","name":"new_user_address","type":"address"},{"internalType":"string","name":"username","type":"string"}],"name":"_add_user_to_station","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"someone","type":"address"}],"name":"add_admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"new_username","type":"string"}],"name":"change_username","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_to_delete","type":"uint256"}],"name":"delete_broadcast","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"content","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"parent","type":"uint256"},{"internalType":"bytes2","name":"broadcast_type","type":"bytes2"},{"internalType":"bytes2","name":"broadcast_flags","type":"bytes2"},{"internalType":"string","name":"broadcast_metadata","type":"string"},{"internalType":"uint256","name":"optional_timestamp","type":"uint256"}],"name":"do_broadcast","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"msg_hash","type":"bytes32"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"ec_recover_signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_to_edit","type":"uint256"},{"internalType":"string","name":"newcontent","type":"string"},{"internalType":"bytes","name":"newsignature","type":"bytes"}],"name":"edit_broadcast","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get_all_broadcasts","outputs":[{"components":[{"internalType":"uint256","name":"broadcast_id","type":"uint256"},{"internalType":"uint256","name":"unix_timestamp","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"string","name":"content","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"parent","type":"uint256"},{"internalType":"uint256","name":"reference_count","type":"uint256"},{"internalType":"bytes2","name":"broadcast_type","type":"bytes2"},{"internalType":"bytes2","name":"broadcast_flags","type":"bytes2"},{"internalType":"string","name":"broadcast_metadata","type":"string"}],"internalType":"struct Stations.Broadcast[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get_all_users","outputs":[{"components":[{"internalType":"address","name":"user_address","type":"address"},{"internalType":"string","name":"username","type":"string"},{"internalType":"uint256","name":"time_joined","type":"uint256"},{"internalType":"string","name":"user_metadata","type":"string"}],"internalType":"struct Stations.User[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"text","type":"string"}],"name":"get_hash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"unix_timestamp","type":"uint256"},{"internalType":"address","name":"author","type":"address"},{"internalType":"string","name":"content","type":"string"},{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"bytes2","name":"broadcast_type","type":"bytes2"},{"internalType":"bytes2","name":"broadcast_flags","type":"bytes2"},{"internalType":"string","name":"broadcast_metadata","type":"string"}],"name":"import_broadcast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"username","type":"string"}],"name":"inaugurate_station","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"is_admin_p","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"is_allowed_in_p","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"username","type":"string"}],"name":"join_station","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"someone","type":"address"}],"name":"remove_admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_to_edit","type":"uint256"},{"internalType":"string","name":"newmetadata","type":"string"}],"name":"replace_broadcast_metadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newdescription","type":"string"}],"name":"replace_station_description","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newmetadata","type":"string"}],"name":"replace_station_metadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newname","type":"string"}],"name":"replace_station_name","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newmetadata","type":"string"}],"name":"replace_user_metadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"someone","type":"address"}],"name":"reverse_whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"split_signature","outputs":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"station_info","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes2","name":"","type":"bytes2"},{"internalType":"bytes2","name":"","type":"bytes2"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"user_already_in_station_p","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"a_name","type":"string"}],"name":"username_already_in_station_p","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"content","type":"string"},{"internalType":"address","name":"alleged_author","type":"address"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"verify_broadcast_author","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"very_temp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"someone","type":"address"}],"name":"whitelist_address","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

610120604081905260006101008190526200001d9160039162000123565b50600060045560006005553480156200003557600080fd5b5060405162004662380380620046628339810160408190526200005891620002aa565b6001600160601b0319606088901b1660805285516200007f90600090602089019062000123565b5084516200009590600190602088019062000123565b508351620000ab90600290602087019062000123565b506001600160f01b031980841660c052821660e0528051620000d590600390602084019062000123565b505050506001600160a01b03939093166000908152600a602090815260408083208054600160ff199182168117909255600b90935292208054909116909117905550504260a05250620003ea565b828054620001319062000397565b90600052602060002090601f016020900481019282620001555760008555620001a0565b82601f106200017057805160ff1916838001178555620001a0565b82800160010185558215620001a0579182015b82811115620001a057825182559160200191906001019062000183565b50620001ae929150620001b2565b5090565b5b80821115620001ae5760008155600101620001b3565b80516001600160a01b0381168114620001e157600080fd5b919050565b80516001600160f01b031981168114620001e157600080fd5b600082601f83011262000210578081fd5b81516001600160401b03808211156200022d576200022d620003d4565b6040516020601f8401601f1916820181018381118382101715620002555762000255620003d4565b60405283825285840181018710156200026c578485fd5b8492505b838310156200028f578583018101518284018201529182019162000270565b83831115620002a057848185840101525b5095945050505050565b600080600080600080600060e0888a031215620002c5578283fd5b620002d088620001c9565b60208901519097506001600160401b0380821115620002ed578485fd5b620002fb8b838c01620001ff565b975060408a015191508082111562000311578485fd5b6200031f8b838c01620001ff565b965060608a015191508082111562000335578485fd5b620003438b838c01620001ff565b95506200035360808b01620001e6565b94506200036360a08b01620001e6565b935060c08a015191508082111562000379578283fd5b50620003888a828b01620001ff565b91505092959891949750929550565b600281046001821680620003ac57607f821691505b60208210811415620003ce57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160c05160f01c60f01b60e05160f01c60f01b6141fe62000464600039600081816115580152611bc4015260006115370152600081816115160152611cc2015260008181610be601528181610c2f01528181610f6f015281816114f501528181611b7b01526121aa01526141fe6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637758f79511610104578063ad1e5e53116100a2578063e04070aa11610071578063e04070aa146103f0578063edd1760014610405578063fbde185c1461041a578063ff89fb3c1461042d576101cf565b8063ad1e5e5314610395578063b2c4ae38146103a8578063b6914d1c146103bb578063d9c2820f146103ce576101cf565b80639499dedc116100de5780639499dedc1461033c57806396898a6c1461034f578063a8ad60d51461036f578063aafd879514610382576101cf565b80637758f79514610303578063845952a8146103165780638b55e5d214610329576101cf565b806332ac1bdc116101715780634fc4b2fe1161014b5780634fc4b2fe146102b75780635385bfaa146102ca578063747a69dc146102dd578063766b9ca5146102f0576101cf565b806332ac1bdc1461027157806340be5df0146102915780634254184f146102a4576101cf565b806327593112116101ad5780632759311214610223578063286ef0fb146102365780632a42f3ac1461024b5780632feb287c1461025e576101cf565b80630d813111146101d457806313a070b7146101fd57806314e8979114610210575b600080fd5b6101e76101e236600461307f565b610440565b6040516101f491906134ee565b60405180910390f35b6101e761020b366004612da6565b6106cf565b6101e761021e366004612e7d565b610745565b6101e7610231366004612da6565b610797565b61023e6107b5565b6040516101f49190613427565b6101e7610259366004612e42565b6107b9565b6101e761026c366004612e42565b610831565b61028461027f366004612fbf565b610899565b6040516101f491906134f9565b6101e761029f366004612da6565b610bd9565b6101e76102b2366004612e42565b610c99565b6101e76102c5366004612dc7565b610f39565b6101e76102d8366004612e42565b61115b565b6101e76102eb366004612e42565b61126c565b6101e76102fe366004612da6565b6112d4565b6101e7610311366004612e13565b6112f2565b610284610324366004612e42565b61145d565b6101e7610337366004612da6565b61148d565b6101e761034a366004612e42565b6114aa565b6103576114d6565b6040516101f49c9b9a99989796959493929190613539565b6101e761037d366004612fa7565b6117d5565b61023e610390366004612e13565b611a96565b6101e76103a3366004612e42565b611b6e565b6101e76103b6366004612da6565b61214b565b6101e76103c9366004612e42565b612197565b6103e16103dc366004612e42565b6123f4565b6040516101f493929190613502565b6103f861247e565b6040516101f4919061349b565b61040d612621565b6040516101f4919061343b565b6101e7610428366004612da6565b61289b565b6101e761043b366004612eee565b6128eb565b600c546000903390640100000000900460ff166104785760405162461bcd60e51b815260040161046f90613dfb565b60405180910390fd5b6007858154811061049957634e487b7160e01b600052603260045260246000fd5b60009182526020909120600990910201600201546001600160a01b031633146104d45760405162461bcd60e51b815260040161046f90613db2565b846104f15760405162461bcd60e51b815260040161046f90613708565b60045485106105125760405162461bcd60e51b815260040161046f90613d7d565b61051d848285610745565b6105395760405162461bcd60e51b815260040161046f90613899565b836007868154811061055b57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060090201600301908051906020019061057f929190612c5d565b5082600786815481106105a257634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160040190805190602001906105c6929190612c5d565b506000600786815481106105ea57634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160070160029054906101000a900460f01b61200060f01b179050806007878154811061063457634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160070160026101000a81548161ffff021916908360f01c02179055507f5d9f8269c261af3edb966b3021af01742d6078f4873fda7b1a65be01d1a9173f600787815481106106a057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016040516106bb9190613cc9565b60405180910390a150600195945050505050565b60006106da33610797565b6106f65760405162461bcd60e51b815260040161046f90613d2e565b600c5460ff166107185760405162461bcd60e51b815260040161046f90613a79565b506001600160a01b0381166000908152600a60205260409020805460ff191660019081179091555b919050565b6000808460405160200161075991906133f1565b604051602081830303815290604052805190602001209050600061077d8285611a96565b6001600160a01b0390811690861614925050509392505050565b6001600160a01b03166000908152600a602052604090205460ff1690565b3390565b60006107c433610797565b6107e05760405162461bcd60e51b815260040161046f90613e4a565b81516107f3906000906020850190612c5d565b507ff5cdf5bea757c21492e10b8416c64649a7c3ccb6da381ab9f75bc68e14041c8160405161082190613bd8565b60405180910390a1506001919050565b600061083c33610797565b6108585760405162461bcd60e51b815260040161046f90613e4a565b815161086b906002906020850190612c5d565b507ff5cdf5bea757c21492e10b8416c64649a7c3ccb6da381ab9f75bc68e14041c8160405161082190613c9d565b6000336108a581610797565b6108c15760405162461bcd60e51b815260040161046f90613f3b565b6108cc878988610745565b6108e85760405162461bcd60e51b815260040161046f90613899565b600c54610100900460ff16801561090757506001600160f01b03198516155b156109245760405162461bcd60e51b815260040161046f906137f6565b600160ff1b8416156109485760405162461bcd60e51b815260040161046f906138d0565b600160fe1b84161561096c5760405162461bcd60e51b815260040161046f906136bf565b6040805161014081018252600454815260208082018c81526001600160a01b03808d16948401948552606084018c8152608085018c9052600060a0860181905260c086018190526001600160f01b0319808d1660e0880152600360fb1b8c171661010087015261012086018a9052600780546001810182559152855160099091027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810191825593517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68985015595517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a84018054919093166001600160a01b031990911617909155518051939485949093610aab937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b01920190612c5d565b5060808201518051610ac7916004840191602090910190612c5d565b5060a0820151600582015560c0820151600682015560e082015160078201805461010085015161ffff1990911660f093841c1763ffff00001916620100009190931c029190911790556101208201518051610b2c916008840191602090910190612c5d565b5050507f9388d8736b672a2541bc6c3f66b225ad6d1c38f679219cf62e80c545500f12ec81604051610b5e919061406b565b60405180910390a1600160046000828254610b799190614091565b9250508190555060016007600081548110610ba457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016006016000828254610bc49190614091565b9091555060019b9a5050505050505050505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c235760405162461bcd60e51b815260040161046f90613f84565b816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c745760405162461bcd60e51b815260040161046f90613bfd565b506001600160a01b03166000908152600a60205260409020805460ff19169055600190565b600c5460009033906601000000000000900460ff16610cca5760405162461bcd60e51b815260040161046f90613a1c565b610cd38161148d565b610cef5760405162461bcd60e51b815260040161046f90613cf7565b610cf8836114aa565b15610d155760405162461bcd60e51b815260040161046f9061399b565b6001600160a01b038116600090815260086020526040812054600680549091908110610d5157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016001018054610d6d90614121565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990614121565b8015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b505050505090506000600982604051610dff91906133f1565b908152604051908190036020018120805492151560ff1990931692909217909155600190600990610e319087906133f1565b9081526040805160209281900383019020805460ff1916931515939093179092556001600160a01b038416600090815260089091522054600680548692908110610e8b57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016001019080519060200190610eaf929190612c5d565b506001600160a01b038216600090815260086020526040902054600680547f0681db3bb32852b882d4b7cf371a93b79344b7b5fa8390dd725127ee61c6189992908110610f0c57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201604051610f279190613ac1565b60405180910390a15060019392505050565b600033610f4581610797565b610f615760405162461bcd60e51b815260040161046f9061401c565b600c5460ff1680610fa357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b610fbf5760405162461bcd60e51b815260040161046f90613649565b610fc88461148d565b15610fe55760405162461bcd60e51b815260040161046f90613ba1565b610fee836114aa565b1561100b5760405162461bcd60e51b815260040161046f9061399b565b6005546001600160a01b038581166000818152600860209081526040808320959095558451608081018652928352828101888152428487018190528651808401909752838752606085019690965260068054600181018255935283516000805160206141a9833981519152600490940293840180546001600160a01b031916919096161785555180519394859490936110b893600080516020614189833981519152909101920190612c5d565b5060408201516002820155606082015180516110de916003840191602090910190612c5d565b5050506001600560008282546110f49190614091565b92505081905550600160098660405161110d91906133f1565b908152604051908190036020018120805492151560ff19909316929092179091557fd968486496b6377fcac1444c885a7c5171828105a57d3581ae926cd31e5d1043906106bb90839061407e565b6000336111678161148d565b6111835760405162461bcd60e51b815260040161046f90613cf7565b6001600160a01b0381166000908152600860205260409020546006805485929081106111bf57634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160030190805190602001906111e3929190612c5d565b506001600160a01b038116600090815260086020526040902054600680547f0681db3bb32852b882d4b7cf371a93b79344b7b5fa8390dd725127ee61c618999290811061124057634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160405161125b9190613625565b60405180910390a150600192915050565b600061127733610797565b6112935760405162461bcd60e51b815260040161046f90613e4a565b81516112a6906003906020850190612c5d565b507ff5cdf5bea757c21492e10b8416c64649a7c3ccb6da381ab9f75bc68e14041c81604051610821906135e9565b6001600160a01b03166000908152600b602052604090205460ff1690565b600c54600090640100000000900460ff1661131f5760405162461bcd60e51b815260040161046f90613dfb565b6007838154811061134057634e487b7160e01b600052603260045260246000fd5b60009182526020909120600990910201600201546001600160a01b0316331461137b5760405162461bcd60e51b815260040161046f90613db2565b826113985760405162461bcd60e51b815260040161046f90613708565b60045483106113b95760405162461bcd60e51b815260040161046f90613d7d565b81600784815481106113db57634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160080190805190602001906113ff929190612c5d565b507f5d9f8269c261af3edb966b3021af01742d6078f4873fda7b1a65be01d1a9173f6007848154811061144257634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160405161125b9190613601565b60008160405160200161147091906133f1565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0316600090815260086020526040902054151590565b60006009826040516114bc91906133f1565b9081526040519081900360200190205460ff169050919050565b60608060606000806000806000806060600080600060016002600960017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060036005546004548b805461158b90614121565b80601f01602080910402602001604051908101604052809291908181526020018280546115b790614121565b80156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b50505050509b508a805461161790614121565b80601f016020809104026020016040519081016040528092919081815260200182805461164390614121565b80156116905780601f1061166557610100808354040283529160200191611690565b820191906000526020600020905b81548152906001019060200180831161167357829003601f168201915b50505050509a508980546116a390614121565b80601f01602080910402602001604051908101604052809291908181526020018280546116cf90614121565b801561171c5780601f106116f15761010080835404028352916020019161171c565b820191906000526020600020905b8154815290600101906020018083116116ff57829003601f168201915b5050505050995082805461172f90614121565b80601f016020809104026020016040519081016040528092919081815260200182805461175b90614121565b80156117a85780601f1061177d576101008083540402835291602001916117a8565b820191906000526020600020905b81548152906001019060200180831161178b57829003601f168201915b505050505092509b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b600c546000906301000000900460ff166118015760405162461bcd60e51b815260040161046f90613b4e565b61180a33610797565b8061185157506007828154811061183157634e487b7160e01b600052603260045260246000fd5b60009182526020909120600990910201600201546001600160a01b031633145b61186d5760405162461bcd60e51b815260040161046f90613afa565b8161188a5760405162461bcd60e51b815260040161046f90613fd8565b60045482106118ab5760405162461bcd60e51b815260040161046f90613d7d565b60405180602001604052806000815250600783815481106118dc57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016003019080519060200190611900929190612c5d565b50604051806020016040528060008152506007838154811061193257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016004019080519060200190611956929190612c5d565b5060006007838154811061197a57634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160070160029054906101000a900460f01b61400060f01b17905080600784815481106119c457634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160070160026101000a81548161ffff021916908360f01c021790555060016007600081548110611a1257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016006016000828254611a3291906140ce565b925050819055507f5d9f8269c261af3edb966b3021af01742d6078f4873fda7b1a65be01d1a9173f60078481548110611a7b57634e487b7160e01b600052603260045260246000fd5b906000526020600020906009020160405161125b9190613916565b600080600080611aa5856123f4565b92509250925060006040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905060008188604051602001611afa9291906133cf565b60405160208183030381529060405280519060200120905060018184878760405160008152602001604052604051611b35949392919061351b565b6020604051602081039080840390855afa158015611b57573d6000803e3d6000fd5b5050604051601f1901519998505050505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114611bb95760405162461bcd60e51b815260040161046f90613799565b600c8054600160ff1b7f0000000000000000000000000000000000000000000000000000000000000000908116151560ff199092169190911761ff001916610100600160fe1b83161515021762ff00001916600160fd1b8216151562010000021763ff0000001916600160fc1b821615156301000000021764ff000000001916600160fb1b82161515640100000000021765ff00000000001916600160fa1b8216151565010000000000021766ff0000000000001916600160f91b919091161515660100000000000002179055604080516080810182523080825282518084018452600e81526d756e6361757365642d636175736560901b6020808301919091528084019182527f0000000000000000000000000000000000000000000000000000000000000000848601528451808201865260008082526060860191909152600554938152600882529485209290925560068054600181018255945282516000805160206141a9833981519152600490950294850180546001600160a01b0319166001600160a01b0390921691909117815590518051939485949293611d7493600080516020614189833981519152909201920190612c5d565b506040820151600282015560608201518051611d9a916003840191602090910190612c5d565b505050600160056000828254611db09190614091565b9250508190555060016009604051611dc79061340d565b9081526040805160209281900383018120805460ff19169415159490941790935561014083018152600080845282840181905230848301528151808301835260158152743a3434b99034b9903090383630b1b2b437b63232b960591b81850152606085015290519092916080830191611e42918991016133f1565b60408051601f1981840301815291815290825260006020838101829052838301829052600160f01b606080860191909152600160ff1b60808601528351808301855283815260a090950194909452600780546001810182559252845160099092027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6888101928355858201517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689820155928501517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a840180546001600160a01b039092166001600160a01b031990921691909117905592840151805194955085949193611f73937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b0192910190612c5d565b5060808201518051611f8f916004840191602090910190612c5d565b5060a0820151600582015560c0820151600682015560e082015160078201805461010085015161ffff1990911660f093841c1763ffff00001916620100009190931c029190911790556101208201518051611ff4916008840191602090910190612c5d565b50505060016004600082825461200a9190614091565b9091555050604080516080810182526001600160a01b038516808252602080830189905242838501819052845180830186526000808252606086019190915260055493815260089092529084902091909155915160019060099061206f908a906133f1565b90815260405160209181900382019020805460ff1916921515929092179091556006805460018101825560009190915282516000805160206141a9833981519152600490920291820180546001600160a01b0319166001600160a01b03909216919091178155838301518051859492936120fd93600080516020614189833981519152909101920190612c5d565b506040820151600282015560608201518051612123916003840191602090910190612c5d565b5050506001600560008282546121399190614091565b90915550600198975050505050505050565b600061215633610797565b6121725760405162461bcd60e51b815260040161046f90613ede565b506001600160a01b03166000908152600b60205260409020805460ff19169055600190565b600c54600090339060ff16806121de57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b6121fa5760405162461bcd60e51b815260040161046f90613649565b600c5462010000900460ff168061222957506001600160a01b0381166000908152600b602052604090205460ff165b6122455760405162461bcd60e51b815260040161046f90613948565b61224e8161148d565b1561226b5760405162461bcd60e51b815260040161046f90613ba1565b612274836114aa565b156122915760405162461bcd60e51b815260040161046f9061399b565b6005546001600160a01b038281166000818152600860209081526040808320959095558451608081018652928352828101888152428487018190528651808401909752838752606085019690965260068054600181018255935283516000805160206141a9833981519152600490940293840180546001600160a01b0319169190961617855551805193948594909361233e93600080516020614189833981519152909101920190612c5d565b506040820151600282015560608201518051612364916003840191602090910190612c5d565b50505060016005600082825461237a9190614091565b92505081905550600160098660405161239391906133f1565b908152604051908190036020018120805492151560ff19909316929092179091557fd968486496b6377fcac1444c885a7c5171828105a57d3581ae926cd31e5d1043906123e190839061407e565b60405180910390a1506001949350505050565b6000806000835160411461241a5760405162461bcd60e51b815260040161046f90613ea7565b50505060208101516040820151606083015160001a601b81101561244657612443601b826140a9565b90505b8060ff16601b148061245b57508060ff16601c145b6124775760405162461bcd60e51b815260040161046f90613694565b9193909250565b60606006805480602002602001604051908101604052809291908181526020016000905b8282101561261857600084815260209081902060408051608081019091526004850290910180546001600160a01b0316825260018101805492939192918401916124eb90614121565b80601f016020809104026020016040519081016040528092919081815260200182805461251790614121565b80156125645780601f1061253957610100808354040283529160200191612564565b820191906000526020600020905b81548152906001019060200180831161254757829003601f168201915b505050505081526020016002820154815260200160038201805461258790614121565b80601f01602080910402602001604051908101604052809291908181526020018280546125b390614121565b80156126005780601f106125d557610100808354040283529160200191612600565b820191906000526020600020905b8154815290600101906020018083116125e357829003601f168201915b505050505081525050815260200190600101906124a2565b50505050905090565b60606007805480602002602001604051908101604052809291908181526020016000905b828210156126185760008481526020908190206040805161014081018252600986029092018054835260018101549383019390935260028301546001600160a01b0316908201526003820180549192916060840191906126a490614121565b80601f01602080910402602001604051908101604052809291908181526020018280546126d090614121565b801561271d5780601f106126f25761010080835404028352916020019161271d565b820191906000526020600020905b81548152906001019060200180831161270057829003601f168201915b5050505050815260200160048201805461273690614121565b80601f016020809104026020016040519081016040528092919081815260200182805461276290614121565b80156127af5780601f10612784576101008083540402835291602001916127af565b820191906000526020600020905b81548152906001019060200180831161279257829003601f168201915b5050509183525050600582015460208201526006820154604082015260078201546001600160f01b031960f082811b821660608501526201000090920490911b16608082015260088201805460a09092019161280a90614121565b80601f016020809104026020016040519081016040528092919081815260200182805461283690614121565b80156128835780601f1061285857610100808354040283529160200191612883565b820191906000526020600020905b81548152906001019060200180831161286657829003601f168201915b50505050508152505081526020019060010190612645565b60006128a633610797565b6128c25760405162461bcd60e51b815260040161046f9061374a565b506001600160a01b03166000908152600b60205260409020805460ff1916600190811790915590565b6000334283156129015750600160fb1b90941793825b61290a8261148d565b6129265760405162461bcd60e51b815260040161046f90613cf7565b6001600160f01b031987161515806129465750600c54610100900460ff16155b6129625760405162461bcd60e51b815260040161046f9061384c565b600160ff1b8616156129865760405162461bcd60e51b815260040161046f90613c51565b87158061299e5750600c5465010000000000900460ff165b6129ba5760405162461bcd60e51b815260040161046f906139d2565b6129c58a838b610745565b6129e15760405162461bcd60e51b815260040161046f90613899565b60006040518061014001604052806004548152602001838152602001846001600160a01b031681526020018c81526020018b81526020018a815260200160008152602001896001600160f01b0319168152602001886001600160f01b0319168152602001878152509050600160078a81548110612a6e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600902016006016000828254612a8e9190614091565b90915550506007805460018101825560009190915281517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68860099092029182019081556020808401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68984015560408401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a840180546001600160a01b0319166001600160a01b03909216919091179055606084015180518594612b79937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101920190612c5d565b5060808201518051612b95916004840191602090910190612c5d565b5060a0820151600582015560c0820151600682015560e082015160078201805461010085015161ffff1990911660f093841c1763ffff00001916620100009190931c029190911790556101208201518051612bfa916008840191602090910190612c5d565b5050507f9388d8736b672a2541bc6c3f66b225ad6d1c38f679219cf62e80c545500f12ec81604051612c2c919061406b565b60405180910390a1600160046000828254612c479190614091565b9091555060019c9b505050505050505050505050565b828054612c6990614121565b90600052602060002090601f016020900481019282612c8b5760008555612cd1565b82601f10612ca457805160ff1916838001178555612cd1565b82800160010185558215612cd1579182015b82811115612cd1578251825591602001919060010190612cb6565b50612cdd929150612ce1565b5090565b5b80821115612cdd5760008155600101612ce2565b80356001600160a01b038116811461074057600080fd5b80356001600160f01b03198116811461074057600080fd5b600082601f830112612d35578081fd5b813567ffffffffffffffff80821115612d5057612d50614172565b604051601f8301601f191681016020018281118282101715612d7457612d74614172565b604052828152848301602001861015612d8b578384fd5b82602086016020830137918201602001929092529392505050565b600060208284031215612db7578081fd5b612dc082612cf6565b9392505050565b60008060408385031215612dd9578081fd5b612de283612cf6565b9150602083013567ffffffffffffffff811115612dfd578182fd5b612e0985828601612d25565b9150509250929050565b60008060408385031215612e25578182fd5b82359150602083013567ffffffffffffffff811115612dfd578182fd5b600060208284031215612e53578081fd5b813567ffffffffffffffff811115612e69578182fd5b612e7584828501612d25565b949350505050565b600080600060608486031215612e91578081fd5b833567ffffffffffffffff80821115612ea8578283fd5b612eb487838801612d25565b9450612ec260208701612cf6565b93506040860135915080821115612ed7578283fd5b50612ee486828701612d25565b9150509250925092565b600080600080600080600060e0888a031215612f08578283fd5b873567ffffffffffffffff80821115612f1f578485fd5b612f2b8b838c01612d25565b985060208a0135915080821115612f40578485fd5b612f4c8b838c01612d25565b975060408a01359650612f6160608b01612d0d565b9550612f6f60808b01612d0d565b945060a08a0135915080821115612f84578384fd5b50612f918a828b01612d25565b92505060c0880135905092959891949750929550565b600060208284031215612fb8578081fd5b5035919050565b600080600080600080600060e0888a031215612fd9578283fd5b87359650612fe960208901612cf6565b9550604088013567ffffffffffffffff80821115613005578485fd5b6130118b838c01612d25565b965060608a0135915080821115613026578485fd5b6130328b838c01612d25565b955061304060808b01612d0d565b945061304e60a08b01612d0d565b935060c08a0135915080821115613063578283fd5b506130708a828b01612d25565b91505092959891949750929550565b600080600060608486031215613093578283fd5b83359250602084013567ffffffffffffffff808211156130b1578384fd5b612ec287838801612d25565b6001600160a01b03169052565b6001600160f01b0319169052565b600081518084526130f08160208601602086016140f1565b601f01601f19169290920160200192915050565b80546000906002810460018083168061311e57607f831692505b602080841082141561313e57634e487b7160e01b86526022600452602486fd5b838852818015613155576001811461316957613197565b60ff19861689830152604089019650613197565b876000528160002060005b8681101561318f5781548b8201850152908501908301613174565b8a0183019750505b50505050505092915050565b600f81526e6d657461646174612d6368616e676560881b602082015260400190565b6000610140825184526020830151602085015260408301516131ea60408601826130bd565b506060830151816060860152613202828601826130d8565b9150506080830151848203608086015261321c82826130d8565b91505060a083015160a085015260c083015160c085015260e083015161324560e08601826130ca565b5061010080840151613259828701826130ca565b5050610120808401518583038287015261327383826130d8565b9695505050505050565b6000610140825484526001830154602085015261329d60028401546140e5565b6132aa60408601826130bd565b508060608501526132c081850160038501613104565b905083810360808501526132d78160048501613104565b9050600583015460a0850152600683015460c0850152600783015461330260e086018260f01b6130ca565b61331e610100860160e083901b6001600160f01b0319166130ca565b50838103610120850152612e758160088501613104565b600060018060a01b03825116835260208201516080602085015261335c60808501826130d8565b9050604083015160408501526060830151848203606086015261337f82826130d8565b95945050505050565b80546001600160a01b031682526080602083018190526000906133b090840160018401613104565b600283015460408501528381036060850152612e758160038501613104565b600083516133e18184602088016140f1565b9190910191825250602001919050565b600082516134038184602087016140f1565b9190910192915050565b6d756e6361757365642d636175736560901b8152600e0190565b6001600160a01b0391909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561348e57603f1988860301845261347c8583516131c5565b94509285019290850190600101613460565b5092979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b8281101561348e57603f198886030184526134dc858351613335565b945092850192908501906001016134c0565b901515815260200190565b90815260200190565b928352602083019190915260ff16604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b6000610180825261354e61018083018f6130d8565b8281036020840152613560818f6130d8565b90508281036040840152613574818e6130d8565b606084018d9052608084018c90526001600160a01b038b1660a085015260c084018a90526001600160f01b0319891660e085015290506135b86101008401886130ca565b8281036101208401526135cb81876130d8565b610140840195909552505061016001529a9950505050505050505050565b6000602082526135fb602083016131a3565b92915050565b600060408252613613604083016131a3565b8281036020840152612e75818561327d565b600060408252613637604083016131a3565b8281036020840152612e758185613388565b6020808252602b908201527f73746174696f6e2069732073696e676c652d757365722e2063616e6e6f74206a60408201526a37b4b71039ba30ba34b7b760a91b606082015260800190565b602080825260119082015270696e76616c6964207369676e617475726560781b604082015260600190565b60208082526029908201527f6572726f723a2077696c6c206e6f7420696d706f72742064656c657465642062604082015268726f6164636173747360b81b606082015260800190565b60208082526022908201527f6572726f723a2063616e6e6f742065646974207072696d652062726f616463616040820152611cdd60f21b606082015260800190565b6020808252602f908201527f6572726f723a206e65656420746f20626520616e2061646d696e20746f20776860408201526e6974656c697374206164647265737360881b606082015260800190565b6020808252603b908201527f6572726f723a206e65656420746f206265207468652073746174696f6e20637260408201527f6561746f7220746f20696e61756775726174652073746174696f6e0000000000606082015260800190565b60208082526036908201527f6572726f723a20756e747275737465642073746174696f6e2063616e6e6f7420604082015275696d706f72742068746d6c2062726f6164636173747360501b606082015260800190565b6020808252602d908201527f6572726f723a20746869732073746174696f6e2063616e6e6f742062726f616460408201526c18d85cdd081c985dc812151353609a1b606082015260800190565b60208082526019908201527f6572726f723a207369676e6174757265206d69736d6174636800000000000000604082015260600190565b60208082526026908201527f6572726f723a2063616e6e6f7420696d706f72742073797374656d2062726f6160408201526564636173747360d01b606082015260800190565b60006040825260086040830152673232b632ba34b7b760c11b606083015260806020830152612dc0608083018461327d565b60208082526033908201527f6572726f723a2061646472657373206e6f742077686974656c697374656420616040820152726e642067726f7570206973207072697661746560681b606082015260800190565b6020808252601d908201527f6572726f723a20757365726e616d6520616c72656164792074616b656e000000604082015260600190565b6020808252602a908201527f6572726f723a20746869732073746174696f6e20646f65736e277420616363656040820152697074207265706c69657360b01b606082015260800190565b60208082526037908201527f6572726f723a20746869732073746174696f6e20646f6573206e6f742073757060408201527f706f7274206368616e67696e6720757365726e616d6573000000000000000000606082015260800190565b60208082526028908201527f73746174696f6e2069732073696e676c652d757365722e2063616e6e6f74206160408201526732321030b236b4b760c11b606082015260800190565b600060408252600f60408301526e757365726e616d652d6368616e676560881b606083015260806020830152612dc06080830184613388565b60208082526034908201527f6572726f723a206d7573742062652061646d696e206f7220617574686f7220746040820152731bc819195b195d19481848189c9bd85918d85cdd60621b606082015260800190565b60208082526033908201527f6572726f723a2073746174696f6e20646f65736e277420616c6c6f772064656c6040820152726574696f6e206f662062726f6164636173747360681b606082015260800190565b6020808252601e908201527f6572726f723a207573657220616c726561647920696e2073746174696f6e0000604082015260600190565b6020808252600b908201526a6e616d652d6368616e676560a81b604082015260600190565b60208082526034908201527f6572726f723a2063616e6e6f742072656d6f76652073746174696f6e20637265604082015273185d1bdc88199c9bdb4818591b5a5b881b1a5cdd60621b606082015260800190565b6020808252602c908201527f6572726f723a2063616e6e6f742062726f61646361737420612027737973746560408201526b1b49c8189c9bd85918d85cdd60a21b606082015260800190565b6020808252601290820152716465736372697074696f6e2d6368616e676560701b604082015260600190565b600060408252600460408301526319591a5d60e21b606083015260806020830152612dc0608083018461327d565b6020808252601a908201527f6572726f723a2075736572206e6f7420696e2073746174696f6e000000000000604082015260600190565b6020808252602f908201527f6572726f723a206e65656420746f20626520616e2061646d696e20746f20616460408201526e321030b737ba3432b91030b236b4b760891b606082015260800190565b6020808252818101527f6572726f723a20617272617920696e646578206f7574206f6620626f756e6473604082015260600190565b60208082526029908201527f6572726f723a206d75737420626520617574686f7220746f2065646974206120604082015268189c9bd85918d85cdd60ba1b606082015260800190565b6020808252602f908201527f6572726f723a2073746174696f6e20646f65736e277420616c6c6f772065646960408201526e74696e672062726f6164636173747360881b606082015260800190565b60208082526039908201527f6572726f723a206d7573742062652061646d696e206f7220617574686f72207460408201527f6f206368616e67652073746174696f6e206d6574616461746100000000000000606082015260800190565b60208082526018908201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604082015260600190565b6020808252603b908201527f6572726f723a206e65656420746f20626520616e2061646d696e20746f20726560408201527f6d6f766520616464726573732066726f6d2077686974656c6973740000000000606082015260800190565b60208082526029908201527f6572726f723a206e65656420746f2062652073746174696f6e2061646d696e206040820152681d1bc81a5b5c1bdc9d60ba1b606082015260800190565b60208082526034908201527f6572726f723a206e65656420746f2062652073746174696f6e2063726561746f60408201527339103a37903932b6b7bb329030b71030b236b4b760611b606082015260800190565b60208082526024908201527f6572726f723a2063616e6e6f742064656c657465207072696d652062726f616460408201526318d85cdd60e21b606082015260800190565b6020808252602f908201527f6572726f723a206d7573742062652061646d696e20746f20616464207573657260408201526e1034b7103a3434b99036b0b73732b960891b606082015260800190565b600060208252612dc060208301846131c5565b600060208252612dc06020830184613335565b600082198211156140a4576140a461415c565b500190565b600060ff821660ff84168060ff038211156140c6576140c661415c565b019392505050565b6000828210156140e0576140e061415c565b500390565b6001600160a01b031690565b60005b8381101561410c5781810151838201526020016140f4565b8381111561411b576000848401525b50505050565b60028104600182168061413557607f821691505b6020821081141561415657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfef652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40f652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3fa2646970667358221220bca88f725dea90757715dd3f5513dd0b9162344f622db1f467d0002fb31ddebe64736f6c63430008000033000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000001344656e206f66206f7665727374616e64696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000001364656e2d6f662d6f7665727374616e64696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051616e20696e7665737469676174696f6e20696e746f2070756c6c696e6720746865206375727461696e206261636b20616e6420736565696e6720686f7720746865206d616368696e65727920776f726b730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000001344656e206f66206f7665727374616e64696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000001364656e2d6f662d6f7665727374616e64696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051616e20696e7665737469676174696f6e20696e746f2070756c6c696e6720746865206375727461696e206261636b20616e6420736565696e6720686f7720746865206d616368696e65727920776f726b730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _creator (address): 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266
Arg [1] : _station_name (string): Den of overstanding
Arg [2] : _station_frequency (string): den-of-overstanding
Arg [3] : _station_description (string): an investigation into pulling the curtain back and seeing how the machinery works
Arg [4] : _station_type (bytes2): 0x0000
Arg [5] : _station_flags (bytes2): 0x1e00
Arg [6] : _station_metadata (string):

-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 1e00000000000000000000000000000000000000000000000000000000000000
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [8] : 44656e206f66206f7665727374616e64696e6700000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [10] : 64656e2d6f662d6f7665727374616e64696e6700000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [12] : 616e20696e7665737469676174696f6e20696e746f2070756c6c696e67207468
Arg [13] : 65206375727461696e206261636b20616e6420736565696e6720686f77207468
Arg [14] : 65206d616368696e65727920776f726b73000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

3153:22015:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19567:1114;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16989:328;;;;;;:::i;:::-;;:::i;24543:430::-;;;;;;:::i;:::-;;:::i;9867:99::-;;;;;;:::i;:::-;;:::i;25049:114::-;;;:::i;:::-;;;;;;;:::i;21873:355::-;;;;;;:::i;:::-;;:::i;22236:397::-;;;;;;:::i;:::-;;:::i;14382:1716::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17325:352::-;;;;;;:::i;:::-;;:::i;16106:875::-;;;;;;:::i;:::-;;:::i;11674:1017::-;;;;;;:::i;:::-;;:::i;22641:504::-;;;;;;:::i;:::-;;:::i;21490:375::-;;;;;;:::i;:::-;;:::i;9974:108::-;;;;;;:::i;:::-;;:::i;20689:793::-;;;;;;:::i;:::-;;:::i;23399:126::-;;;;;;:::i;:::-;;:::i;9559:138::-;;;;;;:::i;:::-;;:::i;9705:154::-;;;;;;:::i;:::-;;:::i;8692:657::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;18484:962::-;;;;;;:::i;:::-;;:::i;23533:400::-;;;;;;:::i;:::-;;:::i;6729:1955::-;;;;;;:::i;:::-;;:::i;17938:258::-;;;;;;:::i;:::-;;:::i;10728:895::-;;;;;;:::i;:::-;;:::i;23941:594::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;10411:107::-;;;:::i;:::-;;;;;;;:::i;10292:111::-;;;:::i;:::-;;;;;;;:::i;17685:245::-;;;;;;:::i;:::-;;:::i;12699:1675::-;;;;;;:::i;:::-;;:::i;19567:1114::-;19797:26;;19738:4;;19768:10;;19797:26;;;;;19789:103;;;;-1:-1:-1;;;19789:103:0;;;;;;;:::i;:::-;;;;;;;;;19925:14;19940:10;19925:26;;;;;;-1:-1:-1;;;19925:26:0;;;;;;;;;;;;;;;;;;;;;;:33;;;-1:-1:-1;;;;;19925:33:0;19911:10;:47;19903:118;;;;-1:-1:-1;;;19903:118:0;;;;;;;:::i;:::-;20040:15;20032:62;;;;-1:-1:-1;;;20032:62:0;;;;;;;:::i;:::-;20126:20;;20113:10;:33;20105:95;;;;-1:-1:-1;;;20105:95:0;;;;;;;:::i;:::-;20219:54;20243:10;20255:3;20260:12;20219:23;:54::i;:::-;20211:109;;;;-1:-1:-1;;;20211:109:0;;;;;;;:::i;:::-;20368:10;20331:14;20346:10;20331:26;;;;;;-1:-1:-1;;;20331:26:0;;;;;;;;;;;;;;;;;;;:34;;:47;;;;;;;;;;;;:::i;:::-;;20428:12;20389:14;20404:10;20389:26;;;;;;-1:-1:-1;;;20389:26:0;;;;;;;;;;;;;;;;;;;:36;;:51;;;;;;;;;;;;:::i;:::-;;20451:15;20469:14;20484:10;20469:26;;;;;;-1:-1:-1;;;20469:26:0;;;;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;20514:6;20469:51;;;20451:69;;20576:8;20531:14;20546:10;20531:26;;;;;;-1:-1:-1;;;20531:26:0;;;;;;;;;;;;;;;;;;;:42;;;:53;;;;;;;;;;;;;;;;;;20600:51;20624:14;20639:10;20624:26;;;;;;-1:-1:-1;;;20624:26:0;;;;;;;;;;;;;;;;;;;20600:51;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;20669:4:0;;19567:1114;-1:-1:-1;;;;;19567:1114:0:o;16989:328::-;17041:4;17065:22;17076:10;17065;:22::i;:::-;17057:99;;;;-1:-1:-1;;;17057:99:0;;;;;;;:::i;:::-;17175:14;;;;17167:84;;;;-1:-1:-1;;;17167:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17262:18:0;;;;;;:9;:18;;;;;:25;;-1:-1:-1;;17262:25:0;17283:4;17262:25;;;;;;16989:328;;;;:::o;24543:430::-;24782:4;24798:16;24844:7;24827:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;24817:36;;;;;;24798:55;;24864:19;24886:32;24904:8;24914:3;24886:17;:32::i;:::-;-1:-1:-1;;;;;24937:27:0;;;;;;;;-1:-1:-1;;;24543:430:0;;;;;:::o;9867:99::-;-1:-1:-1;;;;;9944:14:0;9921:4;9944:14;;;:9;:14;;;;;;;;;9867:99::o;25049:114::-;25124:10;25049:114;:::o;21873:355::-;21988:4;22012:22;22023:10;22012;:22::i;:::-;22004:109;;;;-1:-1:-1;;;22004:109:0;;;;;;;:::i;:::-;22124:22;;;;:12;;:22;;;;;:::i;:::-;;22162:36;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;22216:4:0;21873:355;;;:::o;22236:397::-;22372:4;22396:22;22407:10;22396;:22::i;:::-;22388:109;;;;-1:-1:-1;;;22388:109:0;;;;;;;:::i;:::-;22508:36;;;;:19;;:36;;;;;:::i;:::-;;22560:43;;;;;;:::i;14382:1716::-;14828:7;14861:10;14924:15;14861:10;14924;:15::i;:::-;14916:86;;;;-1:-1:-1;;;14916:86:0;;;;;;;:::i;:::-;15021:45;15045:7;15054:6;15062:3;15021:23;:45::i;:::-;15013:100;;;;-1:-1:-1;;;15013:100:0;;;;;;;:::i;:::-;15180:14;;;;;;;:40;;;;-1:-1:-1;;;;;;;15198:22:0;;;15180:40;15178:43;15170:127;;;;-1:-1:-1;;;15170:127:0;;;;;;;:::i;:::-;-1:-1:-1;;;15317:24:0;;15316:31;15308:99;;;;-1:-1:-1;;;15308:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;15427:24:0;;15426:31;15418:102;;;;-1:-1:-1;;;15418:102:0;;;;;;;:::i;:::-;15606:310;;;;;;;;15616:20;;15606:310;;;;;;;;;-1:-1:-1;;;;;15606:310:0;;;;;;;;;;;;;;;;;;;;;15583:20;15606:310;;;;;;;;;;;;-1:-1:-1;;;;;;15606:310:0;;;;;;;-1:-1:-1;;;15824:29:0;;15606:310;;;;;;;;;;;15927:14;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15927:24:0;;;;;;;;;;15606:310;;;;15927:24;;;;;;;;;;:::i;:::-;-1:-1:-1;15927:24:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15927:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15927:24:0;;;;;;;;-1:-1:-1;;15927:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15967:17;15980:3;15967:17;;;;;;:::i;:::-;;;;;;;;16019:1;15995:20;;:25;;;;;;;:::i;:::-;;;;;;;;16068:1;16031:14;16046:1;16031:17;;;;;;-1:-1:-1;;;16031:17:0;;;;;;;;;;;;;;;;;;;:33;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;16089:1:0;;14382:1716;-1:-1:-1;;;;;;;;;;;14382:1716:0:o;17325:352::-;17380:4;17404:10;-1:-1:-1;;;;;17418:7:0;17404:21;;17396:103;;;;-1:-1:-1;;;17396:103:0;;;;;;;:::i;:::-;17529:7;-1:-1:-1;;;;;17518:18:0;:7;-1:-1:-1;;;;;17518:18:0;;17510:100;;;;-1:-1:-1;;;17510:100:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17621:18:0;17642:5;17621:18;;;:9;:18;;;;;:26;;-1:-1:-1;;17621:26:0;;;-1:-1:-1;;17325:352:0:o;16106:875::-;16236:29;;16175:4;;16205:10;;16236:29;;;;;16228:114;;;;-1:-1:-1;;;16228:114:0;;;;;;;:::i;:::-;16361:30;16387:3;16361:25;:30::i;:::-;16353:86;;;;-1:-1:-1;;;16353:86:0;;;;;;;:::i;:::-;16459:43;16489:12;16459:29;:43::i;:::-;16458:44;16450:103;;;;-1:-1:-1;;;16450:103:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16616:19:0;;16566:26;16616:19;;;:14;:19;;;;;;16595:20;:41;;:20;;16616:19;16595:41;;;;-1:-1:-1;;;16595:41:0;;;;;;;;;;;;;;;;;;;:50;;16566:79;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16691:5;16656:18;16675:12;16656:32;;;;;;:::i;:::-;;;;;;;;;;;;;;:40;;;;;-1:-1:-1;;16656:40:0;;;;;;;;;;;;16707:18;;:32;;16726:12;;16707:32;:::i;:::-;;;;;;;;;;;;;;;;:39;;-1:-1:-1;;16707:39:0;;;;;;;;;;;-1:-1:-1;;;;;16778:19:0;;-1:-1:-1;16778:19:0;;;:14;:19;;;;;16757:20;:41;;16810:12;;16778:19;16757:41;;;;-1:-1:-1;;;16757:41:0;;;;;;;;;;;;;;;;;;;:50;;:65;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;16930:19:0;;;;;;:14;:19;;;;;;16909:20;:41;;16838:113;;16930:19;16909:41;;;;-1:-1:-1;;;16909:41:0;;;;;;;;;;;;;;;;;;;16838:113;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;16969:4:0;;16106:875;-1:-1:-1;;;16106:875:0:o;11674:1017::-;11843:4;11873:10;11902:15;11873:10;11902;:15::i;:::-;11894:92;;;;-1:-1:-1;;;11894:92:0;;;;;;;:::i;:::-;12005:14;;;;;:30;;;12028:7;-1:-1:-1;;;;;12023:12:0;:3;-1:-1:-1;;;;;12023:12:0;;12005:30;11997:103;;;;-1:-1:-1;;;11997:103:0;;;;;;;:::i;:::-;12120:43;12146:16;12120:25;:43::i;:::-;12119:44;12111:104;;;;-1:-1:-1;;;12111:104:0;;;;;;;:::i;:::-;12235:39;12265:8;12235:29;:39::i;:::-;12234:40;12226:99;;;;-1:-1:-1;;;12226:99:0;;;;;;;:::i;:::-;12417:18;;-1:-1:-1;;;;;12382:32:0;;;12338:15;12382:32;;;:14;:32;;;;;;;;:53;;;;12464:45;;;;;;;;;;;;;;;;12356:15;12464:45;;;;;;;;;;;;;;;;;;;;;;;;12520:20;:30;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12520:30:0;;;;;;;;;-1:-1:-1;;;;;;12520:30:0;;;;;;;;;;;12464:45;;;;12520:30;;;;-1:-1:-1;;;;;;;;;;;12520:30:0;;;;;;;:::i;:::-;-1:-1:-1;12520:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12583:1;12561:18;;:23;;;;;;;:::i;:::-;;;;;;;;12626:4;12595:18;12614:8;12595:28;;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;12595:35:0;;;;;;;;;;12646:15;;;;12657:3;;12646:15;:::i;22641:504::-;22769:4;22799:10;22828:30;22799:10;22828:25;:30::i;:::-;22820:86;;;;-1:-1:-1;;;22820:86:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22938:19:0;;;;;;:14;:19;;;;;;22917:20;:41;;22975:11;;22938:19;22917:41;;;;-1:-1:-1;;;22917:41:0;;;;;;;;;;;;;;;;;;;:55;;:69;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;23094:19:0;;;;;;:14;:19;;;;;;23073:20;:41;;23002:113;;23094:19;23073:41;;;;-1:-1:-1;;;23073:41:0;;;;;;;;;;;;;;;;;;;23002:113;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;23133:4:0;;22641:504;-1:-1:-1;;22641:504:0:o;21490:375::-;21613:4;21637:22;21648:10;21637;:22::i;:::-;21629:109;;;;-1:-1:-1;;;21629:109:0;;;;;;;:::i;:::-;21749:30;;;;:16;;:30;;;;;:::i;:::-;;21795:40;;;;;;:::i;9974:108::-;-1:-1:-1;;;;;10056:18:0;10033:4;10056:18;;;:13;:18;;;;;;;;;9974:108::o;20689:793::-;20901:26;;20877:4;;20901:26;;;;;20893:103;;;;-1:-1:-1;;;20893:103:0;;;;;;;:::i;:::-;21029:14;21044:10;21029:26;;;;;;-1:-1:-1;;;21029:26:0;;;;;;;;;;;;;;;;;;;;;;:33;;;-1:-1:-1;;;;;21029:33:0;21015:10;:47;21007:118;;;;-1:-1:-1;;;21007:118:0;;;;;;;:::i;:::-;21144:15;21136:62;;;;-1:-1:-1;;;21136:62:0;;;;;;;:::i;:::-;21230:20;;21217:10;:33;21209:95;;;;-1:-1:-1;;;21209:95:0;;;;;;;:::i;:::-;21363:11;21315:14;21330:10;21315:26;;;;;;-1:-1:-1;;;21315:26:0;;;;;;;;;;;;;;;;;;;:45;;:59;;;;;;;;;;;;:::i;:::-;;21390:62;21425:14;21440:10;21425:26;;;;;;-1:-1:-1;;;21425:26:0;;;;;;;;;;;;;;;;;;;21390:62;;;;;;:::i;23399:126::-;23458:7;23511:4;23494:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;23484:33;;;;;;23477:40;;23399:126;;;:::o;9559:138::-;-1:-1:-1;;;;;9666:19:0;9643:4;9666:19;;;:14;:19;;;;;;:23;;;9559:138::o;9705:154::-;9802:4;9825:18;9844:6;9825:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;9705:154:0;;;:::o;8692:657::-;8737:13;8752;8817;8832:7;8891;8900;8909;8968:6;8976;8984:13;9049:7;9058;9085:12;9099:17;9118:19;3474:1;3525;9198:7;9224:10;9236:12;9250:13;9265:16;9300:18;;9320:20;;9077:264;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8692:657;;;;;;;;;;;;:::o;18484:962::-;18572:25;;18548:4;;18572:25;;;;;18564:106;;;;-1:-1:-1;;;18564:106:0;;;;;;;:::i;:::-;18689:22;18700:10;18689;:22::i;:::-;:94;;;;18748:14;18763:12;18748:28;;;;;;-1:-1:-1;;;18748:28:0;;;;;;;;;;;;;;;;;;;;;;:35;;;-1:-1:-1;;;;;18748:35:0;18734:10;:49;18689:94;18681:176;;;;-1:-1:-1;;;18681:176:0;;;;;;;:::i;:::-;18876:17;18868:66;;;;-1:-1:-1;;;18868:66:0;;;;;;;:::i;:::-;18968:20;;18953:12;:35;18945:97;;;;-1:-1:-1;;;18945:97:0;;;;;;;:::i;:::-;19053:41;;;;;;;;;;;;:14;19068:12;19053:28;;;;;;-1:-1:-1;;;19053:28:0;;;;;;;;;;;;;;;;;;;:36;;:41;;;;;;;;;;;;:::i;:::-;;19105:43;;;;;;;;;;;;:14;19120:12;19105:28;;;;;;-1:-1:-1;;;19105:28:0;;;;;;;;;;;;;;;;;;;:38;;:43;;;;;;;;;;;;:::i;:::-;;19159:15;19177:14;19192:12;19177:28;;;;;;-1:-1:-1;;;19177:28:0;;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;19222:6;19177:51;;;19159:69;;19286:8;19239:14;19254:12;19239:28;;;;;;-1:-1:-1;;;19239:28:0;;;;;;;;;;;;;;;;;;;:44;;;:55;;;;;;;;;;;;;;;;;;19342:1;19305:14;19320:1;19305:17;;;;;;-1:-1:-1;;;19305:17:0;;;;;;;;;;;;;;;;;;;:33;;;:38;;;;;;;:::i;:::-;;;;;;;;19359:57;19387:14;19402:12;19387:28;;;;;;-1:-1:-1;;;19387:28:0;;;;;;;;;;;;;;;;;;;19359:57;;;;;;:::i;23533:400::-;23663:7;23684:9;23695;23706:7;23717:20;23733:3;23717:15;:20::i;:::-;23683:54;;;;;;23748:19;:56;;;;;;;;;;;;;;;;;;;23815:16;23861:6;23869:8;23844:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23834:45;;;;;;23815:64;;23897:28;23907:8;23917:1;23920;23923;23897:28;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23897:28:0;;-1:-1:-1;;23897:28:0;;;23533:400;-1:-1:-1;;;;;;;;;23533:400:0:o;6729:1955::-;6797:4;6827:10;-1:-1:-1;;;;;6865:7:0;6858:14;;;6850:103;;;;-1:-1:-1;;;6850:103:0;;;;;;;:::i;:::-;7040:14;:63;;-1:-1:-1;;;7075:13:0;:22;;;7074:28;;-1:-1:-1;;7040:63:0;;;;;;;-1:-1:-1;;7114:63:0;7040;-1:-1:-1;;;7149:22:0;;7148:28;;7114:63;;-1:-1:-1;;7188:63:0;-1:-1:-1;;;7223:22:0;;7222:28;;7188:63;;;-1:-1:-1;;7262:63:0;-1:-1:-1;;;7297:22:0;;7296:28;;7262:63;;;-1:-1:-1;;7336:63:0;-1:-1:-1;;;7371:22:0;;7370:28;;7336:63;;;-1:-1:-1;;7410:63:0;-1:-1:-1;;;7445:22:0;;7444:28;;7410:63;;;-1:-1:-1;;7484:63:0;-1:-1:-1;;;7519:22:0;;;;7518:28;;7484:63;;;;;7644:96;;;;;;;;7657:4;7644:96;;;;;;;;;;;;;-1:-1:-1;;;7644:96:0;;;;;;;;;;;;;;7725:10;7644:96;;;;;;;;;;;-1:-1:-1;7644:96:0;;;;;;;;;;7410:18;7783;7751:29;;;:14;:29;;;;;:50;;;;7484:29;7812:41;;-1:-1:-1;7812:41:0;;;;;;;;-1:-1:-1;;;;;;;;;;;7336:26:0;7812:41;;;;;;;;-1:-1:-1;;;;;;7812:41:0;-1:-1:-1;;;;;7812:41:0;;;;;;;;;;;;;7644:96;;;;7812:41;;;;-1:-1:-1;;;;;;;;;;;7812:41:0;;;;;;;:::i;:::-;-1:-1:-1;7812:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7886:1;7864:18;;:23;;;;;;;:::i;:::-;;;;;;;;7937:4;7898:18;:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;:43;;-1:-1:-1;;7898:43:0;;;;;;;;;;;8019:235;;;;;-1:-1:-1;8019:235:0;;;;;;;;;8043:4;8019:235;;;;;;;;;;;;;;-1:-1:-1;;;8019:235:0;;;;;;;;8159:26;;-1:-1:-1;;7898:36:0;8019:235;;;;8159:26;;8176:8;;8159:26;;:::i;:::-;;;;-1:-1:-1;;8159:26:0;;;;;;;;;8019:235;;;8229:1;8159:26;8019:235;;;;;;;;;;;;-1:-1:-1;;;8019:235:0;;;;;;;;-1:-1:-1;;;8019:235:0;;;;;;;;;;;;;;;;;;;;;;8265:14;:24;;8235:6;8265:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8265:24:0;;;-1:-1:-1;;;;;;8265:24:0;;;;;;;;;;;;;;;7996:258;;-1:-1:-1;7996:258:0;;8265:24;;;;;;;;;;;:::i;:::-;-1:-1:-1;8265:24:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8265:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8265:24:0;;;;;;;;-1:-1:-1;;8265:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8324:1;8300:20;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;8449:32:0;;;;;;;;-1:-1:-1;;;;;8449:32:0;;;;;;;;;;;;8404:15;8449:32;;;;;;;;;;;;;8386:15;8449:32;;;;;;;;;;8514:18;;8492:19;;;:14;:19;;;;;;;:40;;;;8543:28;;8574:4;;8543:18;;:28;;8459:8;;8543:28;:::i;:::-;;;;;;;;;;;;;;;:35;;-1:-1:-1;;8543:35:0;;;;;;;;;;;8589:20;:31;;-1:-1:-1;8589:31:0;;;;-1:-1:-1;8589:31:0;;;;;;-1:-1:-1;;;;;;;;;;;8589:31:0;;;;;;;;;-1:-1:-1;;;;;;8589:31:0;-1:-1:-1;;;;;8589:31:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8589:31:0;;;;;;;:::i;:::-;-1:-1:-1;8589:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8653:1;8631:18;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;8672:4:0;;6729:1955;-1:-1:-1;;;;;;;;6729:1955:0:o;17938:258::-;17998:4;18022:22;18033:10;18022;:22::i;:::-;18014:111;;;;-1:-1:-1;;;18014:111:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;18136:22:0;18161:5;18136:22;;;:13;:22;;;;;:30;;-1:-1:-1;;18136:30:0;;;-1:-1:-1;;17938:258:0:o;10728:895::-;10851:14;;10790:4;;10820:10;;10851:14;;;:30;;;10874:7;-1:-1:-1;;;;;10869:12:0;:3;-1:-1:-1;;;;;10869:12:0;;10851:30;10843:103;;;;-1:-1:-1;;;10843:103:0;;;;;;;:::i;:::-;10965:11;;;;;;;;:33;;-1:-1:-1;;;;;;10980:18:0;;;;;;:13;:18;;;;;;;;10965:33;10957:114;;;;-1:-1:-1;;;10957:114:0;;;;;;;:::i;:::-;11091:30;11117:3;11091:25;:30::i;:::-;11090:31;11082:91;;;;-1:-1:-1;;;11082:91:0;;;;;;;:::i;:::-;11193:39;11223:8;11193:29;:39::i;:::-;11192:40;11184:99;;;;-1:-1:-1;;;11184:99:0;;;;;;;:::i;:::-;11362:18;;-1:-1:-1;;;;;11340:19:0;;;11296:15;11340:19;;;:14;:19;;;;;;;;:40;;;;11409:32;;;;;;;;;;;;;;;;11314:15;11409:32;;;;;;;;;;;;;;;;;;;;;;;;11452:20;:30;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11452:30:0;;;;;;;;;-1:-1:-1;;;;;;11452:30:0;;;;;;;;;;;11409:32;;;;11452:30;;;;-1:-1:-1;;;;;;;;;;;11452:30:0;;;;;;;:::i;:::-;-1:-1:-1;11452:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11515:1;11493:18;;:23;;;;;;;:::i;:::-;;;;;;;;11558:4;11527:18;11546:8;11527:28;;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;11527:35:0;;;;;;;;;;11578:15;;;;11589:3;;11578:15;:::i;:::-;;;;;;;;-1:-1:-1;11611:4:0;;10728:895;-1:-1:-1;;;;10728:895:0:o;23941:594::-;24005:9;24085;24165:7;24193:3;:10;24205:2;24193:14;24185:51;;;;-1:-1:-1;;;24185:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;24291:2:0;24282:12;;24276:19;24329:2;24320:12;;24314:19;24375:2;24366:12;;24360:19;24357:1;24352:28;24409:2;24405:6;;24401:45;;;24427:7;24432:2;24427:7;;:::i;:::-;;;24401:45;24464:1;:5;;24467:2;24464:5;:14;;;;24473:1;:5;;24476:2;24473:5;24464:14;24456:44;;;;-1:-1:-1;;;24456:44:0;;;;;;;:::i;:::-;23941:594;;;;;:::o;10411:107::-;10457:14;10490:20;10483:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10483:27:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10411:107;:::o;10292:111::-;10343:19;10381:14;10374:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10374:21:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10374:21:0;;;-1:-1:-1;;10374:21:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10374:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17685:245;17745:4;17769:22;17780:10;17769;:22::i;:::-;17761:99;;;;-1:-1:-1;;;17761:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17871:22:0;;;;;:13;:22;;;;;:29;;-1:-1:-1;;17871:29:0;17896:4;17871:29;;;;;;17896:4;17685:245::o;12699:1675::-;13051:4;13081:10;13122:15;13154:23;;13150:181;;-1:-1:-1;;;;13295:24:0;;;;13244:18;13150:181;13351:30;13377:3;13351:25;:30::i;:::-;13343:69;;;;-1:-1:-1;;;13343:69:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13432:22:0;;;;;13431:45;;-1:-1:-1;13461:14:0;;;;;;;13460:15;13431:45;13423:120;;;;-1:-1:-1;;;13423:120:0;;;;;;;:::i;:::-;-1:-1:-1;;;13565:24:0;;13564:30;13554:107;;;;-1:-1:-1;;;13554:107:0;;;;;;;:::i;:::-;13680:11;;;:33;;-1:-1:-1;13695:18:0;;;;;;;13680:33;13672:105;;;;-1:-1:-1;;;13672:105:0;;;;;;;:::i;:::-;13796:48;13820:7;13829:3;13834:9;13796:23;:48::i;:::-;13788:103;;;;-1:-1:-1;;;13788:103:0;;;;;;;:::i;:::-;13904:20;13927:257;;;;;;;;13937:20;;13927:257;;;;13959:9;13927:257;;;;13970:3;-1:-1:-1;;;;;13927:257:0;;;;;14017:7;13927:257;;;;14026:9;13927:257;;;;14037:6;13927:257;;;;14045:1;13927:257;;;;14090:14;-1:-1:-1;;;;;13927:257:0;;;;;;14106:15;-1:-1:-1;;;;;13927:257:0;;;;;;14165:18;13927:257;;;13904:280;;14239:1;14197:14;14212:6;14197:22;;;;;;-1:-1:-1;;;14197:22:0;;;;;;;;;;;;;;;;;;;:38;;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;14251:14:0;:24;;;;;;;-1:-1:-1;14251:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14251:24:0;-1:-1:-1;;;;;14251:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14251:24:0;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14251:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14251:24:0;;;;;;;;-1:-1:-1;;14251:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14291:17;14304:3;14291:17;;;;;;:::i;:::-;;;;;;;;14343:1;14319:20;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;14362:4:0;;12699:1675;-1:-1:-1;;;;;;;;;;;;12699:1675:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:175:1;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:170;263:20;;-1:-1:-1;;;;;;312:27:1;;302:38;;292:2;;354:1;351;344:12;369:712;;466:3;459:4;451:6;447:17;443:27;433:2;;488:5;481;474:20;433:2;528:6;515:20;554:18;591:2;587;584:10;581:2;;;597:18;;:::i;:::-;646:2;640:9;715:2;696:13;;-1:-1:-1;;692:27:1;680:40;;722:4;676:51;742:18;;;762:22;;;739:46;736:2;;;788:18;;:::i;:::-;824:2;817:22;848:18;;;885:15;;;902:4;881:26;878:35;-1:-1:-1;875:2:1;;;930:5;923;916:20;875:2;998;991:4;983:6;979:17;972:4;964:6;960:17;947:54;1021:15;;;1038:4;1017:26;1010:41;;;;1025:6;423:658;-1:-1:-1;;;423:658:1:o;1086:198::-;;1198:2;1186:9;1177:7;1173:23;1169:32;1166:2;;;1219:6;1211;1204:22;1166:2;1247:31;1268:9;1247:31;:::i;:::-;1237:41;1156:128;-1:-1:-1;;;1156:128:1:o;1289:419::-;;;1428:2;1416:9;1407:7;1403:23;1399:32;1396:2;;;1449:6;1441;1434:22;1396:2;1477:31;1498:9;1477:31;:::i;:::-;1467:41;;1559:2;1548:9;1544:18;1531:32;1586:18;1578:6;1575:30;1572:2;;;1623:6;1615;1608:22;1572:2;1651:51;1694:7;1685:6;1674:9;1670:22;1651:51;:::i;:::-;1641:61;;;1386:322;;;;;:::o;1713:410::-;;;1851:2;1839:9;1830:7;1826:23;1822:32;1819:2;;;1872:6;1864;1857:22;1819:2;1913:9;1900:23;1890:33;;1974:2;1963:9;1959:18;1946:32;2001:18;1993:6;1990:30;1987:2;;;2038:6;2030;2023:22;2128:342;;2249:2;2237:9;2228:7;2224:23;2220:32;2217:2;;;2270:6;2262;2255:22;2217:2;2315:9;2302:23;2348:18;2340:6;2337:30;2334:2;;;2385:6;2377;2370:22;2334:2;2413:51;2456:7;2447:6;2436:9;2432:22;2413:51;:::i;:::-;2403:61;2207:263;-1:-1:-1;;;;2207:263:1:o;2823:650::-;;;;2988:2;2976:9;2967:7;2963:23;2959:32;2956:2;;;3009:6;3001;2994:22;2956:2;3054:9;3041:23;3083:18;3124:2;3116:6;3113:14;3110:2;;;3145:6;3137;3130:22;3110:2;3173:51;3216:7;3207:6;3196:9;3192:22;3173:51;:::i;:::-;3163:61;;3243:40;3279:2;3268:9;3264:18;3243:40;:::i;:::-;3233:50;;3336:2;3325:9;3321:18;3308:32;3292:48;;3365:2;3355:8;3352:16;3349:2;;;3386:6;3378;3371:22;3349:2;;3414:53;3459:7;3448:8;3437:9;3433:24;3414:53;:::i;:::-;3404:63;;;2946:527;;;;;:::o;3478:1073::-;;;;;;;;3719:3;3707:9;3698:7;3694:23;3690:33;3687:2;;;3741:6;3733;3726:22;3687:2;3786:9;3773:23;3815:18;3856:2;3848:6;3845:14;3842:2;;;3877:6;3869;3862:22;3842:2;3905:51;3948:7;3939:6;3928:9;3924:22;3905:51;:::i;:::-;3895:61;;4009:2;3998:9;3994:18;3981:32;3965:48;;4038:2;4028:8;4025:16;4022:2;;;4059:6;4051;4044:22;4022:2;4087:53;4132:7;4121:8;4110:9;4106:24;4087:53;:::i;:::-;4077:63;;4187:2;4176:9;4172:18;4159:32;4149:42;;4210:39;4245:2;4234:9;4230:18;4210:39;:::i;:::-;4200:49;;4268:40;4303:3;4292:9;4288:19;4268:40;:::i;:::-;4258:50;;4361:3;4350:9;4346:19;4333:33;4317:49;;4391:2;4381:8;4378:16;4375:2;;;4412:6;4404;4397:22;4375:2;;4440:53;4485:7;4474:8;4463:9;4459:24;4440:53;:::i;:::-;4430:63;;;4540:3;4529:9;4525:19;4512:33;4502:43;;3677:874;;;;;;;;;;:::o;4556:190::-;;4668:2;4656:9;4647:7;4643:23;4639:32;4636:2;;;4689:6;4681;4674:22;4636:2;-1:-1:-1;4717:23:1;;4626:120;-1:-1:-1;4626:120:1:o;4751:1081::-;;;;;;;;4992:3;4980:9;4971:7;4967:23;4963:33;4960:2;;;5014:6;5006;4999:22;4960:2;5055:9;5042:23;5032:33;;5084:40;5120:2;5109:9;5105:18;5084:40;:::i;:::-;5074:50;;5175:2;5164:9;5160:18;5147:32;5198:18;5239:2;5231:6;5228:14;5225:2;;;5260:6;5252;5245:22;5225:2;5288:51;5331:7;5322:6;5311:9;5307:22;5288:51;:::i;:::-;5278:61;;5392:2;5381:9;5377:18;5364:32;5348:48;;5421:2;5411:8;5408:16;5405:2;;;5442:6;5434;5427:22;5405:2;5470:53;5515:7;5504:8;5493:9;5489:24;5470:53;:::i;:::-;5460:63;;5542:40;5577:3;5566:9;5562:19;5542:40;:::i;:::-;5532:50;;5601:40;5636:3;5625:9;5621:19;5601:40;:::i;:::-;5591:50;;5694:3;5683:9;5679:19;5666:33;5650:49;;5724:2;5714:8;5711:16;5708:2;;;5745:6;5737;5730:22;5708:2;;5773:53;5818:7;5807:8;5796:9;5792:24;5773:53;:::i;:::-;5763:63;;;4950:882;;;;;;;;;;:::o;6253:642::-;;;;6418:2;6406:9;6397:7;6393:23;6389:32;6386:2;;;6439:6;6431;6424:22;6386:2;6480:9;6467:23;6457:33;;6541:2;6530:9;6526:18;6513:32;6564:18;6605:2;6597:6;6594:14;6591:2;;;6626:6;6618;6611:22;6591:2;6654:51;6697:7;6688:6;6677:9;6673:22;6654:51;:::i;6900:106::-;-1:-1:-1;;;;;6968:31:1;6956:44;;6946:60::o;7011:101::-;-1:-1:-1;;;;;;7078:27:1;7066:40;;7056:56::o;7117:259::-;;7198:5;7192:12;7225:6;7220:3;7213:19;7241:63;7297:6;7290:4;7285:3;7281:14;7274:4;7267:5;7263:16;7241:63;:::i;:::-;7358:2;7337:15;-1:-1:-1;;7333:29:1;7324:39;;;;7365:4;7320:50;;7168:208;-1:-1:-1;;7168:208:1:o;7381:1034::-;7467:12;;7381:1034;;7539:1;7524:17;;7560:1;7596:18;;;;7623:2;;7677:4;7669:6;7665:17;7655:27;;7623:2;7703;7751;7743:6;7740:14;7720:18;7717:38;7714:2;;;-1:-1:-1;;;7778:33:1;;7834:4;7831:1;7824:15;7864:4;7785:3;7852:17;7714:2;7888:19;;;7923:18;7950:109;;;;8073:1;8068:341;;;;7916:493;;7950:109;-1:-1:-1;;7992:24:1;;7978:12;;;7971:46;8046:2;8037:12;;;-1:-1:-1;7950:109:1;;8068:341;8099:5;8096:1;8089:16;8146:2;8143:1;8133:16;8171:1;8185:174;8199:6;8196:1;8193:13;8185:174;;;8286:14;;8268:11;;;8264:20;;8257:44;8329:16;;;;8214:10;;8185:174;;;8383:11;;8379:20;;;-1:-1:-1;;7916:493:1;;;;;;;7440:975;;;;:::o;8420:166::-;8499:2;8487:15;;-1:-1:-1;;;8527:4:1;8518:14;;8511:41;8577:2;8568:12;;8477:109::o;8591:1161::-;;8674:6;8707:5;8701:12;8696:3;8689:25;8763:4;8756:5;8752:16;8746:23;8739:4;8734:3;8730:14;8723:47;8816:4;8809:5;8805:16;8799:23;8831:50;8875:4;8870:3;8866:14;8852:12;8831:50;:::i;:::-;;8929:4;8922:5;8918:16;8912:23;8967:2;8960:4;8955:3;8951:14;8944:26;8991:48;9035:2;9030:3;9026:12;9010:14;8991:48;:::i;:::-;8979:60;;;9087:4;9080:5;9076:16;9070:23;9135:3;9129:4;9125:14;9118:4;9113:3;9109:14;9102:38;9163:40;9198:4;9182:14;9163:40;:::i;:::-;9149:54;;;9252:4;9245:5;9241:16;9235:23;9228:4;9223:3;9219:14;9212:47;9308:4;9301:5;9297:16;9291:23;9284:4;9279:3;9275:14;9268:47;9363:4;9356:5;9352:16;9346:23;9378:51;9423:4;9418:3;9414:14;9398;9378:51;:::i;:::-;;9448:6;9502:2;9495:5;9491:14;9485:21;9515:49;9560:2;9555:3;9551:12;9535:14;9515:49;:::i;:::-;;;9583:6;9637:2;9630:5;9626:14;9620:21;9683:3;9675:6;9671:16;9666:2;9661:3;9657:12;9650:38;9704:42;9739:6;9723:14;9704:42;:::i;:::-;9697:49;8654:1098;-1:-1:-1;;;;;;8654:1098:1:o;9757:1005::-;;9848:6;9881:5;9875:12;9870:3;9863:25;9937:4;9930:5;9926:16;9920:23;9913:4;9908:3;9904:14;9897:47;9973:55;10021:4;10014:5;10010:16;10004:23;9973:55;:::i;:::-;10037:50;10081:4;10076:3;10072:14;10058:12;10037:50;:::i;:::-;;10119:2;10112:4;10107:3;10103:14;10096:26;10143:58;10197:2;10192:3;10188:12;10181:4;10174:5;10170:16;10143:58;:::i;:::-;10131:70;;10243:3;10237:4;10233:14;10226:4;10221:3;10217:14;10210:38;10271:50;10316:4;10309;10302:5;10298:16;10271:50;:::i;:::-;10257:64;;10370:4;10363:5;10359:16;10353:23;10346:4;10341:3;10337:14;10330:47;10426:4;10419:5;10415:16;10409:23;10402:4;10397:3;10393:14;10386:47;10476:4;10469:5;10465:16;10459:23;10491:56;10541:4;10536:3;10532:14;10520:9;10515:3;10511:19;10491:56;:::i;:::-;10556:81;10629:6;10620:16;;10584:4;10580:20;;;-1:-1:-1;;;;;;10576:42:1;10556:81;:::i;:::-;;10683:3;10675:6;10671:16;10662:6;10657:3;10653:16;10646:42;10704:52;10749:6;10742:4;10735:5;10731:16;10704:52;:::i;10767:496::-;;10882:1;10878;10873:3;10869:11;10865:19;10857:5;10851:12;10847:38;10842:3;10835:51;10932:4;10925:5;10921:16;10915:23;10970:4;10963;10958:3;10954:14;10947:28;10996:48;11038:4;11033:3;11029:14;11015:12;10996:48;:::i;:::-;10984:60;;11093:4;11086:5;11082:16;11076:23;11069:4;11064:3;11060:14;11053:47;11148:4;11141:5;11137:16;11131:23;11196:3;11190:4;11186:14;11179:4;11174:3;11170:14;11163:38;11217:40;11252:4;11236:14;11217:40;:::i;:::-;11210:47;10825:438;-1:-1:-1;;;;;10825:438:1:o;11268:420::-;11360:12;;-1:-1:-1;;;;;11356:38:1;11344:51;;11427:4;11420;11411:14;;11404:28;;;11268:420;;11453:60;;11498:14;;11391:1;11480:16;;11453:60;:::i;:::-;11562:4;11555:5;11551:16;11545:23;11538:4;11533:3;11529:14;11522:47;11611:3;11605:4;11601:14;11594:4;11589:3;11585:14;11578:38;11632:50;11677:4;11670;11663:5;11659:16;11632:50;:::i;11693:370::-;;11888:6;11882:13;11904:53;11950:6;11945:3;11938:4;11930:6;11926:17;11904:53;:::i;:::-;11979:16;;;;12004:21;;;-1:-1:-1;12052:4:1;12041:16;;11858:205;-1:-1:-1;11858:205:1:o;12068:276::-;;12237:6;12231:13;12253:53;12299:6;12294:3;12287:4;12279:6;12275:17;12253:53;:::i;:::-;12322:16;;;;;12207:137;-1:-1:-1;;12207:137:1:o;12349:265::-;-1:-1:-1;;;12551:29:1;;12605:2;12596:12;;12541:73::o;12619:203::-;-1:-1:-1;;;;;12783:32:1;;;;12765:51;;12753:2;12738:18;;12720:102::o;12827:850::-;;13048:2;13088;13077:9;13073:18;13118:2;13107:9;13100:21;13141:6;13176;13170:13;13207:6;13199;13192:22;13245:2;13234:9;13230:18;13223:25;;13308:2;13302;13294:6;13290:15;13279:9;13275:31;13271:40;13257:54;;13346:2;13338:6;13334:15;13367:4;13380:268;13394:6;13391:1;13388:13;13380:268;;;13487:2;13483:7;13471:9;13463:6;13459:22;13455:36;13450:3;13443:49;13515:53;13561:6;13552;13546:13;13515:53;:::i;:::-;13505:63;-1:-1:-1;13626:12:1;;;;13591:15;;;;13416:1;13409:9;13380:268;;;-1:-1:-1;13665:6:1;;13028:649;-1:-1:-1;;;;;;;13028:649:1:o;13682:837::-;;13895:2;13935;13924:9;13920:18;13965:2;13954:9;13947:21;13988:6;14023;14017:13;14054:6;14046;14039:22;14092:2;14081:9;14077:18;14070:25;;14155:2;14149;14141:6;14137:15;14126:9;14122:31;14118:40;14104:54;;14193:2;14185:6;14181:15;14214:4;14227:263;14241:6;14238:1;14235:13;14227:263;;;14334:2;14330:7;14318:9;14310:6;14306:22;14302:36;14297:3;14290:49;14362:48;14403:6;14394;14388:13;14362:48;:::i;:::-;14352:58;-1:-1:-1;14468:12:1;;;;14433:15;;;;14263:1;14256:9;14227:263;;14524:187;14689:14;;14682:22;14664:41;;14652:2;14637:18;;14619:92::o;14716:177::-;14862:25;;;14850:2;14835:18;;14817:76::o;14898:326::-;15096:25;;;15152:2;15137:18;;15130:34;;;;15212:4;15200:17;15195:2;15180:18;;15173:45;15084:2;15069:18;;15051:173::o;15229:398::-;15456:25;;;15529:4;15517:17;;;;15512:2;15497:18;;15490:45;15566:2;15551:18;;15544:34;15609:2;15594:18;;15587:34;15443:3;15428:19;;15410:217::o;15632:1352::-;;16147:3;16136:9;16129:22;16174:47;16216:3;16205:9;16201:19;16193:6;16174:47;:::i;:::-;16269:9;16261:6;16257:22;16252:2;16241:9;16237:18;16230:50;16303:34;16330:6;16322;16303:34;:::i;:::-;16289:48;;16385:9;16377:6;16373:22;16368:2;16357:9;16353:18;16346:50;16419:34;16446:6;16438;16419:34;:::i;:::-;16484:2;16469:18;;16462:34;;;16527:3;16512:19;;16505:35;;;-1:-1:-1;;;;;16577:32:1;;16597:3;16556:19;;16549:61;16641:3;16626:19;;16619:35;;;-1:-1:-1;;;;;;16691:28:1;;16685:3;16670:19;;16663:57;16405:48;-1:-1:-1;16729:48:1;16772:3;16757:19;;16749:6;16729:48;:::i;:::-;16826:9;16818:6;16814:22;16808:3;16797:9;16793:19;16786:51;16854:34;16881:6;16873;16854:34;:::i;:::-;16919:3;16904:19;;16897:36;;;;-1:-1:-1;;16964:3:1;16949:19;16942:36;16846:42;16119:865;-1:-1:-1;;;;;;;;;;16119:865:1:o;16989:279::-;;17191:2;17180:9;17173:21;17211:51;17258:2;17247:9;17243:18;17211:51;:::i;:::-;17203:59;17163:105;-1:-1:-1;;17163:105:1:o;17273:490::-;;17550:2;17539:9;17532:21;17576:51;17623:2;17612:9;17608:18;17576:51;:::i;:::-;17675:9;17667:6;17663:22;17658:2;17647:9;17643:18;17636:50;17703:54;17750:6;17742;17703:54;:::i;17768:477::-;;18037:2;18026:9;18019:21;18063:51;18110:2;18099:9;18095:18;18063:51;:::i;:::-;18162:9;18154:6;18150:22;18145:2;18134:9;18130:18;18123:50;18190:49;18232:6;18224;18190:49;:::i;18250:407::-;18452:2;18434:21;;;18491:2;18471:18;;;18464:30;18530:34;18525:2;18510:18;;18503:62;-1:-1:-1;;;18596:2:1;18581:18;;18574:41;18647:3;18632:19;;18424:233::o;18662:341::-;18864:2;18846:21;;;18903:2;18883:18;;;18876:30;-1:-1:-1;;;18937:2:1;18922:18;;18915:47;18994:2;18979:18;;18836:167::o;19008:405::-;19210:2;19192:21;;;19249:2;19229:18;;;19222:30;19288:34;19283:2;19268:18;;19261:62;-1:-1:-1;;;19354:2:1;19339:18;;19332:39;19403:3;19388:19;;19182:231::o;19418:398::-;19620:2;19602:21;;;19659:2;19639:18;;;19632:30;19698:34;19693:2;19678:18;;19671:62;-1:-1:-1;;;19764:2:1;19749:18;;19742:32;19806:3;19791:19;;19592:224::o;19821:411::-;20023:2;20005:21;;;20062:2;20042:18;;;20035:30;20101:34;20096:2;20081:18;;20074:62;-1:-1:-1;;;20167:2:1;20152:18;;20145:45;20222:3;20207:19;;19995:237::o;20237:423::-;20439:2;20421:21;;;20478:2;20458:18;;;20451:30;20517:34;20512:2;20497:18;;20490:62;20588:29;20583:2;20568:18;;20561:57;20650:3;20635:19;;20411:249::o;20665:418::-;20867:2;20849:21;;;20906:2;20886:18;;;20879:30;20945:34;20940:2;20925:18;;20918:62;-1:-1:-1;;;21011:2:1;20996:18;;20989:52;21073:3;21058:19;;20839:244::o;21088:409::-;21290:2;21272:21;;;21329:2;21309:18;;;21302:30;21368:34;21363:2;21348:18;;21341:62;-1:-1:-1;;;21434:2:1;21419:18;;21412:43;21487:3;21472:19;;21262:235::o;21502:349::-;21704:2;21686:21;;;21743:2;21723:18;;;21716:30;21782:27;21777:2;21762:18;;21755:55;21842:2;21827:18;;21676:175::o;21856:402::-;22058:2;22040:21;;;22097:2;22077:18;;;22070:30;22136:34;22131:2;22116:18;;22109:62;-1:-1:-1;;;22202:2:1;22187:18;;22180:36;22248:3;22233:19;;22030:228::o;22263:497::-;;22540:2;22529:9;22522:21;22579:1;22574:2;22563:9;22559:18;22552:29;-1:-1:-1;;;22612:2:1;22601:9;22597:18;22590:38;22666:3;22659:4;22648:9;22644:20;22637:33;22687:67;22749:3;22738:9;22734:19;22726:6;22687:67;:::i;22765:415::-;22967:2;22949:21;;;23006:2;22986:18;;;22979:30;23045:34;23040:2;23025:18;;23018:62;-1:-1:-1;;;23111:2:1;23096:18;;23089:49;23170:3;23155:19;;22939:241::o;23185:353::-;23387:2;23369:21;;;23426:2;23406:18;;;23399:30;23465:31;23460:2;23445:18;;23438:59;23529:2;23514:18;;23359:179::o;23543:406::-;23745:2;23727:21;;;23784:2;23764:18;;;23757:30;23823:34;23818:2;23803:18;;23796:62;-1:-1:-1;;;23889:2:1;23874:18;;23867:40;23939:3;23924:19;;23717:232::o;23954:419::-;24156:2;24138:21;;;24195:2;24175:18;;;24168:30;24234:34;24229:2;24214:18;;24207:62;24305:25;24300:2;24285:18;;24278:53;24363:3;24348:19;;24128:245::o;24378:404::-;24580:2;24562:21;;;24619:2;24599:18;;;24592:30;24658:34;24653:2;24638:18;;24631:62;-1:-1:-1;;;24724:2:1;24709:18;;24702:38;24772:3;24757:19;;24552:230::o;24787:492::-;;25056:2;25045:9;25038:21;25095:2;25090;25079:9;25075:18;25068:30;-1:-1:-1;;;25129:2:1;25118:9;25114:18;25107:45;25190:3;25183:4;25172:9;25168:20;25161:33;25211:62;25268:3;25257:9;25253:19;25245:6;25211:62;:::i;25284:416::-;25486:2;25468:21;;;25525:2;25505:18;;;25498:30;25564:34;25559:2;25544:18;;25537:62;-1:-1:-1;;;25630:2:1;25615:18;;25608:50;25690:3;25675:19;;25458:242::o;25705:415::-;25907:2;25889:21;;;25946:2;25926:18;;;25919:30;25985:34;25980:2;25965:18;;25958:62;-1:-1:-1;;;26051:2:1;26036:18;;26029:49;26110:3;26095:19;;25879:241::o;26125:354::-;26327:2;26309:21;;;26366:2;26346:18;;;26339:30;26405:32;26400:2;26385:18;;26378:60;26470:2;26455:18;;26299:180::o;26484:335::-;26686:2;26668:21;;;26725:2;26705:18;;;26698:30;-1:-1:-1;;;26759:2:1;26744:18;;26737:41;26810:2;26795:18;;26658:161::o;26824:416::-;27026:2;27008:21;;;27065:2;27045:18;;;27038:30;27104:34;27099:2;27084:18;;27077:62;-1:-1:-1;;;27170:2:1;27155:18;;27148:50;27230:3;27215:19;;26998:242::o;27245:408::-;27447:2;27429:21;;;27486:2;27466:18;;;27459:30;27525:34;27520:2;27505:18;;27498:62;-1:-1:-1;;;27591:2:1;27576:18;;27569:42;27643:3;27628:19;;27419:234::o;27658:342::-;27860:2;27842:21;;;27899:2;27879:18;;;27872:30;-1:-1:-1;;;27933:2:1;27918:18;;27911:48;27991:2;27976:18;;27832:168::o;28005:493::-;;28282:2;28271:9;28264:21;28321:1;28316:2;28305:9;28301:18;28294:29;-1:-1:-1;;;28354:2:1;28343:9;28339:18;28332:34;28404:3;28397:4;28386:9;28382:20;28375:33;28425:67;28487:3;28476:9;28472:19;28464:6;28425:67;:::i;28503:350::-;28705:2;28687:21;;;28744:2;28724:18;;;28717:30;28783:28;28778:2;28763:18;;28756:56;28844:2;28829:18;;28677:176::o;28858:411::-;29060:2;29042:21;;;29099:2;29079:18;;;29072:30;29138:34;29133:2;29118:18;;29111:62;-1:-1:-1;;;29204:2:1;29189:18;;29182:45;29259:3;29244:19;;29032:237::o;29274:356::-;29476:2;29458:21;;;29495:18;;;29488:30;29554:34;29549:2;29534:18;;29527:62;29621:2;29606:18;;29448:182::o;29635:405::-;29837:2;29819:21;;;29876:2;29856:18;;;29849:30;29915:34;29910:2;29895:18;;29888:62;-1:-1:-1;;;29981:2:1;29966:18;;29959:39;30030:3;30015:19;;29809:231::o;30045:411::-;30247:2;30229:21;;;30286:2;30266:18;;;30259:30;30325:34;30320:2;30305:18;;30298:62;-1:-1:-1;;;30391:2:1;30376:18;;30369:45;30446:3;30431:19;;30219:237::o;30461:421::-;30663:2;30645:21;;;30702:2;30682:18;;;30675:30;30741:34;30736:2;30721:18;;30714:62;30812:27;30807:2;30792:18;;30785:55;30872:3;30857:19;;30635:247::o;30887:348::-;31089:2;31071:21;;;31128:2;31108:18;;;31101:30;31167:26;31162:2;31147:18;;31140:54;31226:2;31211:18;;31061:174::o;31240:423::-;31442:2;31424:21;;;31481:2;31461:18;;;31454:30;31520:34;31515:2;31500:18;;31493:62;31591:29;31586:2;31571:18;;31564:57;31653:3;31638:19;;31414:249::o;31668:405::-;31870:2;31852:21;;;31909:2;31889:18;;;31882:30;31948:34;31943:2;31928:18;;31921:62;-1:-1:-1;;;32014:2:1;31999:18;;31992:39;32063:3;32048:19;;31842:231::o;32078:416::-;32280:2;32262:21;;;32319:2;32299:18;;;32292:30;32358:34;32353:2;32338:18;;32331:62;-1:-1:-1;;;32424:2:1;32409:18;;32402:50;32484:3;32469:19;;32252:242::o;32499:400::-;32701:2;32683:21;;;32740:2;32720:18;;;32713:30;32779:34;32774:2;32759:18;;32752:62;-1:-1:-1;;;32845:2:1;32830:18;;32823:34;32889:3;32874:19;;32673:226::o;32904:411::-;33106:2;33088:21;;;33145:2;33125:18;;;33118:30;33184:34;33179:2;33164:18;;33157:62;-1:-1:-1;;;33250:2:1;33235:18;;33228:45;33305:3;33290:19;;33078:237::o;33320:263::-;;33499:2;33488:9;33481:21;33519:58;33573:2;33562:9;33558:18;33550:6;33519:58;:::i;33588:250::-;;33759:2;33748:9;33741:21;33779:53;33828:2;33817:9;33813:18;33805:6;33779:53;:::i;34025:128::-;;34096:1;34092:6;34089:1;34086:13;34083:2;;;34102:18;;:::i;:::-;-1:-1:-1;34138:9:1;;34073:80::o;34158:204::-;;34232:4;34229:1;34225:12;34264:4;34261:1;34257:12;34299:3;34293:4;34289:14;34284:3;34281:23;34278:2;;;34307:18;;:::i;:::-;34343:13;;34204:158;-1:-1:-1;;;34204:158:1:o;34367:125::-;;34435:1;34432;34429:8;34426:2;;;34440:18;;:::i;:::-;-1:-1:-1;34477:9:1;;34416:76::o;34497:120::-;-1:-1:-1;;;;;34580:31:1;;34559:58::o;34622:258::-;34694:1;34704:113;34718:6;34715:1;34712:13;34704:113;;;34794:11;;;34788:18;34775:11;;;34768:39;34740:2;34733:10;34704:113;;;34835:6;34832:1;34829:13;34826:2;;;34870:1;34861:6;34856:3;34852:16;34845:27;34826:2;;34675:205;;;:::o;34885:380::-;34970:1;34960:12;;35017:1;35007:12;;;35028:2;;35082:4;35074:6;35070:17;35060:27;;35028:2;35135;35127:6;35124:14;35104:18;35101:38;35098:2;;;35181:10;35176:3;35172:20;35169:1;35162:31;35216:4;35213:1;35206:15;35244:4;35241:1;35234:15;35098:2;;34940:325;;;:::o;35270:127::-;35331:10;35326:3;35322:20;35319:1;35312:31;35362:4;35359:1;35352:15;35386:4;35383:1;35376:15;35402:127;35463:10;35458:3;35454:20;35451:1;35444:31;35494:4;35491:1;35484:15;35518:4;35515:1;35508:15

Swarm Source

ipfs://bca88f725dea90757715dd3f5513dd0b9162344f622db1f467d0002fb31ddebe
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.