{
  "_format": "hh-sol-artifact-1",
  "contractName": "VoterRewards",
  "sourceName": "contracts/VoterRewards.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CheckpointUnorderedInsertion",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "EmissionsAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tier1",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tier2",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tier3",
          "type": "uint256"
        }
      ],
      "name": "FreshnessMultipliersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "GMVoteRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "GalaxyMemberAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "forAgainst",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "abstain",
          "type": "uint256"
        }
      ],
      "name": "IntentMultipliersSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "LevelToMultiplierPending",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "LevelToMultiplierSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        }
      ],
      "name": "NavigatorFeeTaken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "NavigatorRegistryAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bool",
          "name": "disabled",
          "type": "bool"
        }
      ],
      "name": "QuadraticRewardingToggled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "RelayerFeeTaken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "RelayerRewardsPoolAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "name": "RewardClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gmReward",
          "type": "uint256"
        }
      ],
      "name": "RewardClaimedV2",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rewardWeightedVote",
          "type": "uint256"
        }
      ],
      "name": "VoteRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "XAllocationVotingAddressUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CONTRACTS_ADDRESS_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GOVERNANCE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPLIER_SCALE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SCALING_FACTOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VOTE_REGISTRAR_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "b3tr",
      "outputs": [
        {
          "internalType": "contract IB3TR",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "claimReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clock",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        }
      ],
      "name": "cycleToTotal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        }
      ],
      "name": "cycleToTotalGMWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "cycleToVoterToGMWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "cycleToVoterToTotal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "emissions",
      "outputs": [
        {
          "internalType": "contract IEmissions",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "galaxyMember",
      "outputs": [
        {
          "internalType": "contract IGalaxyMember",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getFreshnessMultipliers",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "tier1",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tier2",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tier3",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getGMReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getIntentMultipliers",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "forAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "abstain",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "getMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getNavigatorFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getRelayerFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "cycle",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "getReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nodeId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "hasNodeVoted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        }
      ],
      "name": "hasTokenVoted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "upgrader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "contractsAddressManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_emissions",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_galaxyMember",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_b3tr",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "levels",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "multipliers",
          "type": "uint256[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "levels",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "multipliers",
          "type": "uint256[]"
        }
      ],
      "name": "initializeV5",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IXAllocationVotingGovernor",
          "name": "_xAllocationVoting",
          "type": "address"
        },
        {
          "internalType": "contract IRelayerRewardsPool",
          "name": "_relayerRewardsPool",
          "type": "address"
        }
      ],
      "name": "initializeV6",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "roundStartTimepoint",
          "type": "uint48"
        },
        {
          "internalType": "uint256",
          "name": "freshnessT1",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "freshnessT2",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "freshnessT3",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "intentFA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "intentAb",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_navigatorRegistry",
          "type": "address"
        }
      ],
      "name": "initializeV7",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "blockNumber",
          "type": "uint48"
        }
      ],
      "name": "isQuadraticRewardingDisabledAtBlock",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isQuadraticRewardingDisabledForCurrentCycle",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        }
      ],
      "name": "levelToMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "navigatorRegistry",
      "outputs": [
        {
          "internalType": "contract INavigatorRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "proposalId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votePower",
          "type": "uint256"
        }
      ],
      "name": "registerVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayerRewardsPool",
      "outputs": [
        {
          "internalType": "contract IRelayerRewardsPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_emissions",
          "type": "address"
        }
      ],
      "name": "setEmissions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tier1",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tier2",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tier3",
          "type": "uint256"
        }
      ],
      "name": "setFreshnessMultipliers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_galaxyMember",
          "type": "address"
        }
      ],
      "name": "setGalaxyMember",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "forAgainst",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "abstain",
          "type": "uint256"
        }
      ],
      "name": "setIntentMultipliers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "setLevelToMultiplier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "setLevelToMultiplierNow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_navigatorRegistry",
          "type": "address"
        }
      ],
      "name": "setNavigatorRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayerRewardsPool",
          "type": "address"
        }
      ],
      "name": "setRelayerRewardsPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_xAllocationVoting",
          "type": "address"
        }
      ],
      "name": "setXAllocationVoting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "toggleQuadraticRewarding",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xAllocationVoting",
      "outputs": [
        {
          "internalType": "contract IXAllocationVotingGovernor",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614b9062000104600039600081816138670152818161389001526139d80152614b906000f3fe60806040526004361061027a5760003560e01c80628f33d71461027f57806301ffc9a7146102b257806308834ee7146102e257806308d059dd146103045780630a431b3f146103335780630dd3729c146103535780630dd8614c14610373578063105fe5001461039357806313a23060146103b35780631647d1d6146103d35780632267716c146103f35780632325e4b914610415578063248a9ca31461042a5780632dc9376f1461044a5780632f18339d1461046a5780632f2ff15d1461048a57806336568abe146104aa578063390697d0146104ca5780633d47fe94146104ea5780634278248e1461050a5780634f1ef2861461052a57806352d1902d1461053d57806354fd4d501461055257806356d110361461058557806357314870146105a557806357efd5b6146105bb578063582a486a146105db5780635fdc1752146105f05780636e8a18231461061057806371057f751461062557806384d14f341461063a5780638dbb1e3a1461065a5780638e82839b1461067a57806391d148541461069a57806391ddadf4146106ba578063952f2133146106e6578063a217fddf14610708578063a7381dab1461071d578063ad3cb1cc1461074b578063ae075b071461077c578063ae0b8da81461079c578063b0b3de89146107bc578063b2facfab146107dc578063be64bad8146107fc578063c208b4e714610811578063d547741f14610831578063de7fd13314610851578063e125f74e14610873578063e205aeb014610888578063e70eb3921461089d578063ee80e932146108bd578063eea41608146108dd578063ef4cadc5146108fd578063f36c8f5c14610914578063f530108f14610936578063f72c0d8b14610956575b600080fd5b34801561028b57600080fd5b5061029f61029a366004614187565b610978565b6040519081526020015b60405180910390f35b3480156102be57600080fd5b506102d26102cd3660046141b7565b610993565b60405190151581526020016102a9565b3480156102ee57600080fd5b506103026102fd3660046141e1565b6109c8565b005b34801561031057600080fd5b5061032461031f3660046141fe565b610a7f565b6040516102a993929190614217565b34801561033f57600080fd5b5061030261034e3660046142e7565b610b17565b34801561035f57600080fd5b5061030261036e36600461434a565b610c3a565b34801561037f57600080fd5b5061030261038e3660046141e1565b610fe2565b34801561039f57600080fd5b5061029f6103ae366004614187565b611082565b3480156103bf57600080fd5b5061029f6103ce3660046141fe565b6110b8565b3480156103df57600080fd5b506103026103ee36600461441b565b6110d8565b3480156103ff57600080fd5b50610408611245565b6040516102a99190614447565b34801561042157600080fd5b50610408611263565b34801561043657600080fd5b5061029f6104453660046141fe565b61127e565b34801561045657600080fd5b5061029f610465366004614187565b61129e565b34801561047657600080fd5b5061030261048536600461445b565b6112b6565b34801561049657600080fd5b506103026104a5366004614187565b6116ab565b3480156104b657600080fd5b506103026104c5366004614187565b6116cd565b3480156104d657600080fd5b5061029f6104e5366004614187565b611705565b3480156104f657600080fd5b506103026105053660046141e1565b61173b565b34801561051657600080fd5b50610302610525366004614498565b6117d5565b6103026105383660046144c6565b611979565b34801561054957600080fd5b5061029f611998565b34801561055e57600080fd5b506040805180820190915260018152603760f81b60208201525b6040516102a99190614591565b34801561059157600080fd5b506103026105a03660046145c4565b6119b5565b3480156105b157600080fd5b5061029f61271081565b3480156105c757600080fd5b506103026105d63660046145fc565b611a85565b3480156105e757600080fd5b50610408611c31565b3480156105fc57600080fd5b5061029f61060b3660046141fe565b611c4f565b34801561061c57600080fd5b50610408611c6f565b34801561063157600080fd5b506102d2611c8d565b34801561064657600080fd5b5061029f610655366004614187565b611d43565b34801561066657600080fd5b5061029f6106753660046145c4565b611d5c565b34801561068657600080fd5b506103026106953660046145c4565b611d72565b3480156106a657600080fd5b506102d26106b5366004614187565b611e43565b3480156106c657600080fd5b506106cf611e79565b60405165ffffffffffff90911681526020016102a9565b3480156106f257600080fd5b5061029f600080516020614b1b83398151915281565b34801561071457600080fd5b5061029f600081565b34801561072957600080fd5b5061073d6107383660046141fe565b611e88565b6040516102a9929190614663565b34801561075757600080fd5b50610578604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561078857600080fd5b506102d26107973660046145c4565b611ef7565b3480156107a857600080fd5b506103026107b73660046141e1565b611f24565b3480156107c857600080fd5b506103026107d73660046145c4565b611fcc565b3480156107e857600080fd5b5061029f6107f7366004614187565b611fe1565b34801561080857600080fd5b50610302611ff9565b34801561081d57600080fd5b5061029f61082c3660046141fe565b612077565b34801561083d57600080fd5b5061030261084c366004614187565b612097565b34801561085d57600080fd5b5061029f600080516020614b3b83398151915281565b34801561087f57600080fd5b506104086120b3565b34801561089457600080fd5b506104086120d1565b3480156108a957600080fd5b506103026108b8366004614187565b6120ef565b3480156108c957600080fd5b506102d26108d8366004614671565b612b38565b3480156108e957600080fd5b506102d26108f83660046145c4565b612b66565b34801561090957600080fd5b5061029f620f424081565b34801561092057600080fd5b5061029f600080516020614a5b83398151915281565b34801561094257600080fd5b506103026109513660046141e1565b612b93565b34801561096257600080fd5b5061029f600080516020614adb83398151915281565b6000806109858484612c33565b509193505050505b92915050565b60006001600160e01b03198216637965db0b60e01b148061098d57506301ffc9a760e01b6001600160e01b031983161461098d565b600080516020614b1b8339815191526109e08161311a565b6001600160a01b038216610a0f5760405162461bcd60e51b8152600401610a069061468c565b60405180910390fd5b6000610a19613127565b60028101546040519192506001600160a01b0390811691908516907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a360020180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080600080610a8d613127565b90506000610a9a8661314b565b9050610aa9600e830182613182565b6001600160d01b03169450610ac1600f830182613182565b6001600160d01b03169350610ad96010830182613182565b6001600160d01b0316925084600003610af25761271094505b83600003610b005761271093505b82600003610b0e5761271092505b50509193909250565b60056000610b23613237565b8054909150600160401b900460ff1680610b4a575080546001600160401b03808416911610155b15610b685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781558251845114610ba85760405162461bcd60e51b8152600401610a06906146de565b60005b8451811015610c0257610bf0858281518110610bc957610bc961473b565b6020026020010151858381518110610be357610be361473b565b602002602001015161325b565b80610bfa81614767565b915050610bab565b50805460ff60401b19168155604051600080516020614a9b83398151915290610c2c908490614780565b60405180910390a150505050565b6000610c44613237565b805490915060ff600160401b82041615906001600160401b0316600081158015610c6b5750825b90506000826001600160401b03166001148015610c875750303b155b905081158015610c95575080155b15610cb35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610cdc57845460ff60401b1916600160401b1785555b6001600160a01b038916610d025760405162461bcd60e51b8152600401610a0690614794565b6001600160a01b038a16610d285760405162461bcd60e51b8152600401610a069061468c565b6001600160a01b038816610d955760405162461bcd60e51b815260206004820152602e60248201527f566f746572526577617264733a205f623374722063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610a06565b6000875111610e025760405162461bcd60e51b815260206004820152603360248201527f566f746572526577617264733a206c6576656c73206d757374206861766520616044820152721d081b19585cdd081bdb9948195b195b595b9d606a1b6064820152608401610a06565b8551875114610e235760405162461bcd60e51b8152600401610a06906146de565b610e2b613389565b610e33613393565b610e3b613389565b6000610e45613127565b80546001600160a01b03808d166001600160a01b03199283161783556001830180548d8316908416179055600283018054918f1691909216179055905060005b8851811015610eed57878181518110610ea057610ea061473b565b60200260200101518260030160008b8481518110610ec057610ec061473b565b60200260200101518152602001908152602001600020819055508080610ee590614767565b915050610e85565b506001600160a01b038e16610f5b5760405162461bcd60e51b815260206004820152602e60248201527f566f746572526577617264733a2061646d696e2063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610a06565b610f6660008f6133a3565b50610f7f600080516020614adb8339815191528e6133a3565b50610f98600080516020614b1b8339815191528d6133a3565b50508315610fd357845460ff60401b19168555604051600080516020614a9b83398151915290610fca90600190614780565b60405180910390a15b50505050505050505050505050565b600080516020614b1b833981519152610ffa8161311a565b6001600160a01b0382166110205760405162461bcd60e51b8152600401610a06906147ea565b600061102a613127565b600d810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907ff2307f4b1378d52b568838b5ec95561ace8309471194cc40f6a287412233031090600090a350505050565b60008061108d613127565b6000948552600501602090815260408086206001600160a01b03959095168652939052505090205490565b6000806110c3613127565b60009384526009016020525050604090205490565b600080516020614a5b8339815191526110f08161311a565b6000841180156111005750600083115b801561110c5750600082115b6111285760405162461bcd60e51b8152600401610a0690614821565b8284101580156111385750818310155b61119c5760405162461bcd60e51b815260206004820152602f60248201527f566f746572526577617264733a207469657273206d75737420626520696e206460448201526e32b9b1b2b73234b7339037b93232b960891b6064820152608401610a06565b60006111a6613127565b905060006111b2611e79565b90506111cc816111c188613444565b600e85019190613478565b50506111e6816111db87613444565b600f85019190613478565b5050611200816111f586613444565b601085019190613478565b50507f1afcafc356220cc188605d0a154dd69b47b6b316a3440aa38ed3872746aa04cf86868660405161123593929190614217565b60405180910390a1505050505050565b600080611250613127565b600201546001600160a01b031692915050565b60008061126e613127565b546001600160a01b031692915050565b600080611289613493565b60009384526020525050604090206001015490565b6000806112ab8484612c33565b509695505050505050565b600080516020614b3b8339815191526112ce8161311a565b81156116a457846000036113305760405162461bcd60e51b8152602060048201526024808201527f566f746572526577617264733a2070726f706f73616c49642063616e6e6f74206044820152630626520360e41b6064820152608401610a06565b6001600160a01b0384166113565760405162461bcd60e51b8152600401610a0690614853565b6000611360613127565b805460405163d206885d60e01b81529192506000916001600160a01b039091169063d206885d90611395908990600401614447565b602060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906148a1565b905060008260020160009054906101000a90046001600160a01b03166001600160a01b031663be26ed7f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145391906148a1565b905061145e816134b7565b60008061146b848b61359e565b91509150600061147b89896136e4565b6002870154604051639be1f14960e01b8152600481018790529192506000916001600160a01b0390911690639be1f14990602401602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f091906148a1565b9050818115611573576000868152600989016020526040812080548792906115199084906148ba565b925050819055508488600a01600088815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461156891906148ba565b909155506115969050565b606461157f86856148cd565b61158991906148fa565b61159390826148ba565b90505b6000868152600489016020526040812080548392906115b69084906148ba565b925050819055508088600501600088815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461160591906148ba565b909155505086156116575761161a878e61370f565b8387877f44b066f968384399d4dd42ceb1c632bb821317a77627627be1541c011a81974c8860405161164e91815260200190565b60405180910390a45b8b6001600160a01b0316867fac45cfd9cf13dd2e8b216503a1ca26d9f2a35e9a6b4b1b5cecc415db06ddf63f8d84604051611693929190614663565b60405180910390a350505050505050505b5050505050565b6116b48261127e565b6116bd8161311a565b6116c783836133a3565b50505050565b6001600160a01b03811633146116f65760405163334bd91960e11b815260040160405180910390fd5b61170082826137e4565b505050565b600080611710613127565b6000948552600a01602090815260408086206001600160a01b03959095168652939052505090205490565b600080516020614b1b8339815191526117538161311a565b6001600160a01b0382166117795760405162461bcd60e51b8152600401610a06906147ea565b6000611783613127565b600c810180546001600160a01b0319166001600160a01b038616908117909155604051919250907fe5820144107eb00b0c792ba15bdebee2fdc1b267734a70d442cadae0c828c4c690600090a2505050565b600660006117e1613237565b8054909150600160401b900460ff1680611808575080546001600160401b03808416911610155b156118265760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b178155600061184f613127565b90506001600160a01b0385166118b75760405162461bcd60e51b815260206004820152602760248201527f566f746572526577617264733a20696e76616c69642078416c6c6f636174696f6044820152666e566f74696e6760c81b6064820152608401610a06565b6001600160a01b03841661191e5760405162461bcd60e51b815260206004820152602860248201527f566f746572526577617264733a20696e76616c69642072656c61796572526577604482015267185c991cd41bdbdb60c21b6064820152608401610a06565b600c810180546001600160a01b038088166001600160a01b031992831617909255600d909201805491861691909216179055805460ff60401b19168155604051600080516020614a9b83398151915290610c2c908490614780565b61198161385c565b61198a82613901565b6119948282613919565b5050565b60006119a26139cd565b50600080516020614afb83398151915290565b600080516020614a5b8339815191526119cd8161311a565b6000831180156119dd5750600082115b6119f95760405162461bcd60e51b8152600401610a0690614821565b6000611a03613127565b90506000611a0f611e79565b9050611a2981611a1e87613444565b601185019190613478565b5050611a4381611a3886613444565b601285019190613478565b50507f1d9b2a19a54acf328291c791fe7f0887882512ee59d7623f7ba02bc55a6a88138585604051611a76929190614663565b60405180910390a15050505050565b600080516020614adb833981519152611a9d8161311a565b60076000611aa9613237565b8054909150600160401b900460ff1680611ad0575080546001600160401b03808416911610155b15611aee5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556000611b17613127565b90506000611b23611e79565b9050611b348c6111c1612710613444565b5050611b458c6111db612710613444565b5050611b568c6111f5612710613444565b5050611b678c611a1e612710613444565b5050611b788c611a38612710613444565b5050611b87816111c18d613444565b5050611b96816111db8c613444565b5050611ba5816111f58b613444565b5050611bb481611a1e8a613444565b5050611bc381611a3889613444565b50506001600160a01b03861615611bf2576013820180546001600160a01b0319166001600160a01b0388161790555b5050805460ff60401b19168155604051600080516020614a9b83398151915290611c1d908490614780565b60405180910390a150505050505050505050565b600080611c3c613127565b600101546001600160a01b031692915050565b600080611c5a613127565b60009384526003016020525050604090205490565b600080611c7a613127565b600d01546001600160a01b031692915050565b600080611c98613127565b905060008160020160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906148a1565b90506000611d2f611d258361314b565b6006850190613182565b6001600160d01b0316600114949350505050565b600080611d508484612c33565b50909695505050505050565b600080611d69848461359e565b50949350505050565b6000611d7d8161311a565b60008311611d9d5760405162461bcd60e51b8152600401610a069061491c565b60008211611df35760405162461bcd60e51b815260206004820152602f6024820152600080516020614abb83398151915260448201526e02067726561746572207468616e203608c1b6064820152608401610a06565b6000611dfd613127565b600085815260038201602052604090819020859055519091508490600080516020614a7b83398151915290611e359086815260200190565b60405180910390a250505050565b600080611e4e613493565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611e83613a16565b905090565b6000806000611e95613127565b90506000611ea28561314b565b9050611eb16011830182613182565b6001600160d01b03169350611ec96012830182613182565b6001600160d01b0316925083600003611ee25761271093505b82600003611ef05761271092505b5050915091565b600080611f02613127565b6000938452600701602090815260408085209585529490525050205460ff1690565b600080516020614b1b833981519152611f3c8161311a565b6001600160a01b038216611f625760405162461bcd60e51b8152600401610a0690614794565b6000611f6c613127565b80546040519192506001600160a01b0390811691908516907f3e9cacccd727006bc0e1f6b190b46b34090f490cd3ab7e45f3ac7a9cfeda63ff90600090a380546001600160a01b0319166001600160a01b03939093169290921790915550565b6000611fd78161311a565b611700838361325b565b600080611fee8484612c33565b979650505050505050565b60006120048161311a565b600061200e613127565b9050600061201a611c8d565b9050612044612027611e79565b82612033576001612036565b60005b60068501919060ff16613478565b50506040518115907f541dc5534ac80f8161f980a8975bec206aee2363c8fa3c54a4709ee3b0cbe99f90600090a2505050565b600080612082613127565b60009384526004016020525050604090205490565b6120a08261127e565b6120a98161311a565b6116c783836137e4565b6000806120be613127565b601301546001600160a01b031692915050565b6000806120dc613127565b600c01546001600160a01b031692915050565b6120f7613a21565b6000821161215a5760405162461bcd60e51b815260206004820152602a60248201527f566f746572526577617264733a206379636c65206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608401610a06565b6001600160a01b0381166121805760405162461bcd60e51b8152600401610a0690614853565b600061218a613127565b600281015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa9190614966565b6122505760405162461bcd60e51b815260206004820152602160248201527f566f746572526577617264733a206379636c65206d75737420626520656e64656044820152601960fa1b6064820152608401610a06565b600c8101546040516368377f6d60e11b8152600481018590526000916122cc916001600160a01b039091169063d06efeda906024015b602060405180830381865afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c791906148a1565b61314b565b600c83015460405163a461a94d60e01b81529192506000916001600160a01b039091169063a461a94d906123069087908690600401614988565b602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614966565b60138401549091506000906001600160a01b0316158015906123d757506013840154604051633e28391d60e01b81526001600160a01b0390911690633e28391d90612396908890600401614447565b602060405180830381865afa1580156123b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d79190614966565b905081806123e25750805b156123f1576123f18686613a57565b6000806000806124018a8a612c33565b93509350935093506000838561241791906148ba565b905060008261242685846148ba565b61243091906148ba565b9050600082116124965760405162461bcd60e51b815260206004820152602b60248201527f566f746572526577617264733a20726577617264206d7573742062652067726560448201526a061746572207468616e20360ac1b6064820152608401610a06565b60018a01546040516370a0823160e01b815282916001600160a01b0316906370a08231906124c8903090600401614447565b602060405180830381865afa1580156124e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250991906148a1565b101561257b5760405162461bcd60e51b815260206004820152603b60248201527f566f746572526577617264733a206e6f7420656e6f756768204233545220696e60448201527a081d1a194818dbdb9d1c9858dd081d1bc81c185e481c995dd85c99602a1b6064820152608401610a06565b60008c815260058b01602090815260408083206001600160a01b038f168085529083528184208490558f8452600a8e01835281842090845290915281205582156127f35760138a01546040516318be49d960e01b81526000916001600160a01b0316906318be49d9906125f4908f908e90600401614988565b602060405180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263591906149a9565b60018c015460138d015460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261267192169088906004016149c6565b6020604051808303816000875af1158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190614966565b61270e5760405162461bcd60e51b815260206004820152602560248201527f566f746572526577617264733a206e617620666565207472616e736665722066604482015264185a5b195960da1b6064820152608401610a06565b8a60130160009054906101000a90046001600160a01b03166001600160a01b03166341556405828f876040518463ffffffff1660e01b8152600401612771939291906001600160a01b039390931683526020830191909152604082015260600190565b600060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b505050508c8c6001600160a01b0316826001600160a01b03167f2996fe9f6ef47f032ce8b00f29e970a8bd675501e6c1de5f2d6c2132a52c8764876040516127e991815260200190565b60405180910390a4505b8315612a135760018a0154600d8b015460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926128339291169088906004016149c6565b6020604051808303816000875af1158015612852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128769190614966565b6128d15760405162461bcd60e51b815260206004820152602660248201527f566f746572526577617264733a20706f6f6c2066656520617070726f76616c2060448201526519985a5b195960d21b6064820152608401610a06565b89600d0160009054906101000a90046001600160a01b03166001600160a01b031663e2bbb158858e6040518363ffffffff1660e01b8152600401612916929190614663565b600060405180830381600087803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b5050505089600d0160009054906101000a90046001600160a01b03166001600160a01b0316636cf88e73338d8f60016040518563ffffffff1660e01b815260040161299294939291906149df565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050508a6001600160a01b03168c336001600160a01b03167f74ed9c7d513ddb680c4bfe9f3fd36e3566ae3d2b402da13294c2704bc61c46ab87604051612a0a91815260200190565b60405180910390a45b60018a015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612a47908e9086906004016149c6565b6020604051808303816000875af1158015612a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8a9190614966565b612ae25760405162461bcd60e51b815260206004820152602360248201527f566f746572526577617264733a20766f746572207472616e73666572206661696044820152621b195960ea1b6064820152608401610a06565b8a6001600160a01b03168c7f5141bec81f3347f1f4850164c7b8a0ebb6e206143d6b483238206f7543ccb4258888604051612b1e929190614663565b60405180910390a350505050505050505050611994613ad4565b600080612b43613127565b9050612b526006820184613182565b6001600160d01b0316600114915050919050565b600080612b71613127565b6000938452600801602090815260408085209585529490525050205460ff1690565b600080516020614b1b833981519152612bab8161311a565b6001600160a01b038216612bd15760405162461bcd60e51b8152600401610a06906147ea565b6000612bdb613127565b6013810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fb87a7ab21d0c3e5964b8f7848575525d4385a6e0814df758d76a28ec347f834390600090a350505050565b6000806000806000612c43613127565b600088815260058201602090815260408083206001600160a01b038b8116855292528083205460028501549151633542e90360e01b8152600481018d90529495509293612cf093929190911690633542e90390602401602060405180830381865afa158015612cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cda91906148a1565b60008b8152600486016020526040902054613ae5565b6000898152600a8401602090815260408083206001600160a01b038c8116855292528083205460028701549151639be1f14960e01b8152600481018e90529495509293612d9d93929190911690639be1f14990602401602060405180830381865afa158015612d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8791906148a1565b60008c8152600987016020526040902054613ae5565b90506000612dab82846148ba565b905080600003612dcc57600080600080975097509750975050505050613111565b601384015481906001600160a01b031615801590612e5857506013850154604051633e28391d60e01b81526001600160a01b0390911690633e28391d90612e17908d90600401614447565b602060405180830381865afa158015612e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e589190614966565b15612ef1576013850154604080516311efbf6160e01b81529051612710926001600160a01b0316916311efbf619160048083019260209291908290030181865afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece91906148a1565b612ed890846148cd565b612ee291906148fa565b9550612eee8683614a2b565b90505b600c8501546040516368377f6d60e11b8152600481018d90528291600091612f2b916001600160a01b03169063d06efeda90602401612286565b60138801549091506000906001600160a01b031615801590612fcc57508760130160009054906101000a90046001600160a01b03166001600160a01b0316633e28391d8e6040518263ffffffff1660e01b8152600401612f8b9190614447565b602060405180830381865afa158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcc9190614966565b9050600088600c0160009054906101000a90046001600160a01b03166001600160a01b031663a461a94d8f856040518363ffffffff1660e01b8152600401613015929190614988565b602060405180830381865afa158015613032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130569190614966565b905080806130615750815b156130e457600d890154604051636e20250760e11b8152600481018790526001600160a01b039091169063dc404a0e90602401602060405180830381865afa1580156130b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d591906148a1565b9a506130e18b86614a2b565b93505b856130ef89866148cd565b6130f991906148fa565b9c506131058d85614a2b565b9b505050505050505050505b92959194509250565b6131248133613b49565b50565b7f114e7ffaaf205d38cd05b17b56f3357806ef2ce889cb4748445ae91cdfc37c0090565b600065ffffffffffff82111561317e576040516306dfcc6560e41b81526030600482015260248101839052604401610a06565b5090565b8154600090818160058111156131e157600061319d84613b74565b6131a79085614a2b565b60008881526020902090915081015465ffffffffffff90811690871610156131d1578091506131df565b6131dc8160016148ba565b92505b505b60006131ef87878585613c5c565b9050801561322a5761321487613206600184614a2b565b600091825260209091200190565b54600160301b90046001600160d01b0316611fee565b6000979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6000821161327b5760405162461bcd60e51b8152600401610a069061491c565b6000613285613127565b905060008160020160009054906101000a90046001600160a01b03166001600160a01b031663be26ed7f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330291906148a1565b9050600b820160006133158360016148ba565b815260208082019290925260409081016000908120825180840184528881528085018881528254600180820185559385529386902091516002909402909101928355519101555184815285917f15981e0d250056d8a624ef3f1b96fddad0d42fd3aeb971e048b9b591674e385a9101611e35565b613391613cbe565b565b61339b613cbe565b613391613ce3565b6000806133ae613493565b90506133ba8484611e43565b61343a576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556133f03390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061098d565b600091505061098d565b60006001600160d01b0382111561317e576040516306dfcc6560e41b815260d0600482015260248101839052604401610a06565b600080613486858585613ceb565b915091505b935093915050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006134c1613127565b6000838152600b820160205260408120549192508190036134e157505050565b60005b81811015613584576000848152600b84016020526040812080548390811061350e5761350e61473b565b60009182526020808320604080518082018252600294909402909101805480855260019091015484840181815291865260038a0184529482902094909455825193519051908152919350600080516020614a7b833981519152910160405180910390a2508061357c81614767565b9150506134e4565b506000838152600b8301602052604081206117009161412b565b60008060006135ab613127565b90506135b78585611ef7565b156135c95760008092509250506136dd565b805460405163958fc97d60e01b8152600481018790526000916001600160a01b03169063958fc97d90602401602060405180830381865afa158015613612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363691906148a1565b90506136428186612b66565b15613655576000809350935050506136dd565b81546040516336af181960e11b8152600481018890526000916001600160a01b031690636d5e303290602401602060405180830381865afa15801561369e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c291906148a1565b60008181526003909401602052604090932054945091925050505b9250929050565b60006136ee611c8d565b156136fa57508161098d565b61370882633b9aca006148cd565b9392505050565b6000613719613127565b60008381526007820160209081526040808320878452909152808220805460ff191660011790558254905163958fc97d60e01b81526004810187905292935090916001600160a01b039091169063958fc97d90602401602060405180830381865afa15801561378c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b091906148a1565b905080156116c757600083815260088301602090815260408083208484529091529020805460ff1916600117905550505050565b6000806137ef613493565b90506137fb8484611e43565b1561343a576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061098d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806138e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166138d7600080516020614afb833981519152546001600160a01b031690565b6001600160a01b031614155b156133915760405163703e46dd60e11b815260040160405180910390fd5b600080516020614adb8339815191526119948161311a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613973575060408051601f3d908101601f19168201909252613970918101906148a1565b60015b6139925781604051634c9c8ce360e01b8152600401610a069190614447565b600080516020614afb83398151915281146139c357604051632a87526960e21b815260048101829052602401610a06565b6117008383613e65565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146133915760405163703e46dd60e11b815260040160405180910390fd5b6000611e834361314b565b6000613a2b613ebb565b805490915060011901613a5157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613a61613127565b600d8101546040516316b8734560e21b8152600481018690526001600160a01b038581166024830152336044830152929350911690635ae1cd149060640160006040518083038186803b158015613ab757600080fd5b505afa158015613acb573d6000803e3d6000fd5b50505050505050565b6000613ade613ebb565b6001905550565b6000831580613af2575081155b80613afb575082155b15613b0857506000613708565b6000620f4240613b1885876148cd565b613b2291906148cd565b90506000613b3084836148fa565b9050613b3f620f4240826148fa565b9695505050505050565b613b538282611e43565b61199457808260405163e2517d3f60e01b8152600401610a069291906149c6565b600081600003613b8657506000919050565b60006001613b9384613edf565b901c6001901b90506001818481613bac57613bac6148e4565b048201901c90506001818481613bc457613bc46148e4565b048201901c90506001818481613bdc57613bdc6148e4565b048201901c90506001818481613bf457613bf46148e4565b048201901c90506001818481613c0c57613c0c6148e4565b048201901c90506001818481613c2457613c246148e4565b048201901c90506001818481613c3c57613c3c6148e4565b048201901c905061370881828581613c5657613c566148e4565b04613f73565b60005b81831015613cb6576000613c738484613f89565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115613ca257809250613cb0565b613cad8160016148ba565b93505b50613c5f565b509392505050565b613cc6613fa4565b61339157604051631afcd79f60e31b815260040160405180910390fd5b613ad4613cbe565b825460009081908015613e0a576000613d0987613206600185614a2b565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015613d5d57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603613da95784613d8088613206600186614a2b565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613dfa565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061348b9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161348b565b613e6e82613fbe565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613eb357611700828261401a565b611994614090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080608083901c15613ef457608092831c92015b604083901c15613f0657604092831c92015b602083901c15613f1857602092831c92015b601083901c15613f2a57601092831c92015b600883901c15613f3c57600892831c92015b600483901c15613f4e57600492831c92015b600283901c15613f6057600292831c92015b600183901c1561098d5760010192915050565b6000818310613f825781613708565b5090919050565b6000613f9860028484186148fa565b613708908484166148ba565b6000613fae613237565b54600160401b900460ff16919050565b806001600160a01b03163b600003613feb5780604051634c9c8ce360e01b8152600401610a069190614447565b600080516020614afb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516140379190614a3e565b600060405180830381855af49150503d8060008114614072576040519150601f19603f3d011682016040523d82523d6000602084013e614077565b606091505b50915091506140878583836140af565b95945050505050565b34156133915760405163b398979f60e01b815260040160405180910390fd5b6060826140c4576140bf82614102565b613708565b81511580156140db57506001600160a01b0384163b155b156140fb5783604051639996b31560e01b8152600401610a069190614447565b5080613708565b8051156141125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054600082556002029060005260206000209081019061312491905b8082111561317e5760008082556001820155600201614148565b6001600160a01b038116811461312457600080fd5b803561418281614162565b919050565b6000806040838503121561419a57600080fd5b8235915060208301356141ac81614162565b809150509250929050565b6000602082840312156141c957600080fd5b81356001600160e01b03198116811461370857600080fd5b6000602082840312156141f357600080fd5b813561370881614162565b60006020828403121561421057600080fd5b5035919050565b9283526020830191909152604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561426b5761426b61422d565b604052919050565b600082601f83011261428457600080fd5b813560206001600160401b0382111561429f5761429f61422d565b8160051b6142ae828201614243565b92835284810182019282810190878511156142c857600080fd5b83870192505b84831015611fee578235825291830191908301906142ce565b600080604083850312156142fa57600080fd5b82356001600160401b038082111561431157600080fd5b61431d86838701614273565b9350602085013591508082111561433357600080fd5b5061434085828601614273565b9150509250929050565b600080600080600080600080610100898b03121561436757600080fd5b883561437281614162565b9750602089013561438281614162565b9650604089013561439281614162565b955060608901356143a281614162565b945060808901356143b281614162565b93506143c060a08a01614177565b925060c08901356001600160401b03808211156143dc57600080fd5b6143e88c838d01614273565b935060e08b01359150808211156143fe57600080fd5b5061440b8b828c01614273565b9150509295985092959890939650565b60008060006060848603121561443057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561447157600080fd5b84359350602085013561448381614162565b93969395505050506040820135916060013590565b600080604083850312156144ab57600080fd5b82356144b681614162565b915060208301356141ac81614162565b600080604083850312156144d957600080fd5b82356144e481614162565b91506020838101356001600160401b038082111561450157600080fd5b818601915086601f83011261451557600080fd5b8135818111156145275761452761422d565b614539601f8201601f19168501614243565b9150808252878482850101111561454f57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015614588578181015183820152602001614570565b50506000910152565b60208152600082518060208401526145b081604085016020870161456d565b601f01601f19169190910160400192915050565b600080604083850312156145d757600080fd5b50508035926020909101359150565b803565ffffffffffff8116811461418257600080fd5b600080600080600080600060e0888a03121561461757600080fd5b614620886145e6565b96506020880135955060408801359450606088013593506080880135925060a0880135915060c088013561465381614162565b8091505092959891949750929550565b918252602082015260400190565b60006020828403121561468357600080fd5b613708826145e6565b60208082526032908201527f566f746572526577617264733a20656d697373696f6e732063616e6e6f7420626040820152716520746865207a65726f206164647265737360701b606082015260800190565b6020808252603e908201527f566f746572526577617264733a206c6576656c7320616e64206d756c7469706c60408201527f69657273206d7573742068617665207468652073616d65206c656e6774680000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161477957614779614751565b5060010190565b6001600160401b0391909116815260200190565b60208082526036908201527f566f746572526577617264733a205f67616c6178794d656d6265722063616e6e6040820152756f7420626520746865207a65726f206164647265737360501b606082015260800190565b6020808252601d908201527f566f746572526577617264733a20496e76616c69642061646472657373000000604082015260600190565b6020808252602490820152600080516020614abb8339815191526040820152630203e20360e41b606082015260800190565b6020808252602e908201527f566f746572526577617264733a20766f7465722063616e6e6f7420626520746860408201526d65207a65726f206164647265737360901b606082015260800190565b6000602082840312156148b357600080fd5b5051919050565b8082018082111561098d5761098d614751565b808202811582820484141761098d5761098d614751565b634e487b7160e01b600052601260045260246000fd5b60008261491757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f566f746572526577617264733a206c6576656c206d75737420626520677265616040820152690746572207468616e20360b41b606082015260800190565b60006020828403121561497857600080fd5b8151801515811461370857600080fd5b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b6000602082840312156149bb57600080fd5b815161370881614162565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03858116825284166020820152604081018390526080810160028310614a1c57634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b8181038181111561098d5761098d614751565b60008251614a5081846020870161456d565b919091019291505056fe71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1cc259987543a764767934b4d714760c68fdeb2ba8318210d9802cf66ae854001c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2566f746572526577617264733a206d756c7469706c696572206d757374206265189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b779e0a786be046868ec7a47625dff81941dbb889bcb3efd61d7ece9a9b92e2279a26469706673582212207c0f13875e675fa93b85fc6716e08c485e466b06d70709cdfd087556db1c621e64736f6c63430008140033",
  "deployedBytecode": "0x60806040526004361061027a5760003560e01c80628f33d71461027f57806301ffc9a7146102b257806308834ee7146102e257806308d059dd146103045780630a431b3f146103335780630dd3729c146103535780630dd8614c14610373578063105fe5001461039357806313a23060146103b35780631647d1d6146103d35780632267716c146103f35780632325e4b914610415578063248a9ca31461042a5780632dc9376f1461044a5780632f18339d1461046a5780632f2ff15d1461048a57806336568abe146104aa578063390697d0146104ca5780633d47fe94146104ea5780634278248e1461050a5780634f1ef2861461052a57806352d1902d1461053d57806354fd4d501461055257806356d110361461058557806357314870146105a557806357efd5b6146105bb578063582a486a146105db5780635fdc1752146105f05780636e8a18231461061057806371057f751461062557806384d14f341461063a5780638dbb1e3a1461065a5780638e82839b1461067a57806391d148541461069a57806391ddadf4146106ba578063952f2133146106e6578063a217fddf14610708578063a7381dab1461071d578063ad3cb1cc1461074b578063ae075b071461077c578063ae0b8da81461079c578063b0b3de89146107bc578063b2facfab146107dc578063be64bad8146107fc578063c208b4e714610811578063d547741f14610831578063de7fd13314610851578063e125f74e14610873578063e205aeb014610888578063e70eb3921461089d578063ee80e932146108bd578063eea41608146108dd578063ef4cadc5146108fd578063f36c8f5c14610914578063f530108f14610936578063f72c0d8b14610956575b600080fd5b34801561028b57600080fd5b5061029f61029a366004614187565b610978565b6040519081526020015b60405180910390f35b3480156102be57600080fd5b506102d26102cd3660046141b7565b610993565b60405190151581526020016102a9565b3480156102ee57600080fd5b506103026102fd3660046141e1565b6109c8565b005b34801561031057600080fd5b5061032461031f3660046141fe565b610a7f565b6040516102a993929190614217565b34801561033f57600080fd5b5061030261034e3660046142e7565b610b17565b34801561035f57600080fd5b5061030261036e36600461434a565b610c3a565b34801561037f57600080fd5b5061030261038e3660046141e1565b610fe2565b34801561039f57600080fd5b5061029f6103ae366004614187565b611082565b3480156103bf57600080fd5b5061029f6103ce3660046141fe565b6110b8565b3480156103df57600080fd5b506103026103ee36600461441b565b6110d8565b3480156103ff57600080fd5b50610408611245565b6040516102a99190614447565b34801561042157600080fd5b50610408611263565b34801561043657600080fd5b5061029f6104453660046141fe565b61127e565b34801561045657600080fd5b5061029f610465366004614187565b61129e565b34801561047657600080fd5b5061030261048536600461445b565b6112b6565b34801561049657600080fd5b506103026104a5366004614187565b6116ab565b3480156104b657600080fd5b506103026104c5366004614187565b6116cd565b3480156104d657600080fd5b5061029f6104e5366004614187565b611705565b3480156104f657600080fd5b506103026105053660046141e1565b61173b565b34801561051657600080fd5b50610302610525366004614498565b6117d5565b6103026105383660046144c6565b611979565b34801561054957600080fd5b5061029f611998565b34801561055e57600080fd5b506040805180820190915260018152603760f81b60208201525b6040516102a99190614591565b34801561059157600080fd5b506103026105a03660046145c4565b6119b5565b3480156105b157600080fd5b5061029f61271081565b3480156105c757600080fd5b506103026105d63660046145fc565b611a85565b3480156105e757600080fd5b50610408611c31565b3480156105fc57600080fd5b5061029f61060b3660046141fe565b611c4f565b34801561061c57600080fd5b50610408611c6f565b34801561063157600080fd5b506102d2611c8d565b34801561064657600080fd5b5061029f610655366004614187565b611d43565b34801561066657600080fd5b5061029f6106753660046145c4565b611d5c565b34801561068657600080fd5b506103026106953660046145c4565b611d72565b3480156106a657600080fd5b506102d26106b5366004614187565b611e43565b3480156106c657600080fd5b506106cf611e79565b60405165ffffffffffff90911681526020016102a9565b3480156106f257600080fd5b5061029f600080516020614b1b83398151915281565b34801561071457600080fd5b5061029f600081565b34801561072957600080fd5b5061073d6107383660046141fe565b611e88565b6040516102a9929190614663565b34801561075757600080fd5b50610578604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561078857600080fd5b506102d26107973660046145c4565b611ef7565b3480156107a857600080fd5b506103026107b73660046141e1565b611f24565b3480156107c857600080fd5b506103026107d73660046145c4565b611fcc565b3480156107e857600080fd5b5061029f6107f7366004614187565b611fe1565b34801561080857600080fd5b50610302611ff9565b34801561081d57600080fd5b5061029f61082c3660046141fe565b612077565b34801561083d57600080fd5b5061030261084c366004614187565b612097565b34801561085d57600080fd5b5061029f600080516020614b3b83398151915281565b34801561087f57600080fd5b506104086120b3565b34801561089457600080fd5b506104086120d1565b3480156108a957600080fd5b506103026108b8366004614187565b6120ef565b3480156108c957600080fd5b506102d26108d8366004614671565b612b38565b3480156108e957600080fd5b506102d26108f83660046145c4565b612b66565b34801561090957600080fd5b5061029f620f424081565b34801561092057600080fd5b5061029f600080516020614a5b83398151915281565b34801561094257600080fd5b506103026109513660046141e1565b612b93565b34801561096257600080fd5b5061029f600080516020614adb83398151915281565b6000806109858484612c33565b509193505050505b92915050565b60006001600160e01b03198216637965db0b60e01b148061098d57506301ffc9a760e01b6001600160e01b031983161461098d565b600080516020614b1b8339815191526109e08161311a565b6001600160a01b038216610a0f5760405162461bcd60e51b8152600401610a069061468c565b60405180910390fd5b6000610a19613127565b60028101546040519192506001600160a01b0390811691908516907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a360020180546001600160a01b0319166001600160a01b03939093169290921790915550565b600080600080610a8d613127565b90506000610a9a8661314b565b9050610aa9600e830182613182565b6001600160d01b03169450610ac1600f830182613182565b6001600160d01b03169350610ad96010830182613182565b6001600160d01b0316925084600003610af25761271094505b83600003610b005761271093505b82600003610b0e5761271092505b50509193909250565b60056000610b23613237565b8054909150600160401b900460ff1680610b4a575080546001600160401b03808416911610155b15610b685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781558251845114610ba85760405162461bcd60e51b8152600401610a06906146de565b60005b8451811015610c0257610bf0858281518110610bc957610bc961473b565b6020026020010151858381518110610be357610be361473b565b602002602001015161325b565b80610bfa81614767565b915050610bab565b50805460ff60401b19168155604051600080516020614a9b83398151915290610c2c908490614780565b60405180910390a150505050565b6000610c44613237565b805490915060ff600160401b82041615906001600160401b0316600081158015610c6b5750825b90506000826001600160401b03166001148015610c875750303b155b905081158015610c95575080155b15610cb35760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610cdc57845460ff60401b1916600160401b1785555b6001600160a01b038916610d025760405162461bcd60e51b8152600401610a0690614794565b6001600160a01b038a16610d285760405162461bcd60e51b8152600401610a069061468c565b6001600160a01b038816610d955760405162461bcd60e51b815260206004820152602e60248201527f566f746572526577617264733a205f623374722063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610a06565b6000875111610e025760405162461bcd60e51b815260206004820152603360248201527f566f746572526577617264733a206c6576656c73206d757374206861766520616044820152721d081b19585cdd081bdb9948195b195b595b9d606a1b6064820152608401610a06565b8551875114610e235760405162461bcd60e51b8152600401610a06906146de565b610e2b613389565b610e33613393565b610e3b613389565b6000610e45613127565b80546001600160a01b03808d166001600160a01b03199283161783556001830180548d8316908416179055600283018054918f1691909216179055905060005b8851811015610eed57878181518110610ea057610ea061473b565b60200260200101518260030160008b8481518110610ec057610ec061473b565b60200260200101518152602001908152602001600020819055508080610ee590614767565b915050610e85565b506001600160a01b038e16610f5b5760405162461bcd60e51b815260206004820152602e60248201527f566f746572526577617264733a2061646d696e2063616e6e6f7420626520746860448201526d65207a65726f206164647265737360901b6064820152608401610a06565b610f6660008f6133a3565b50610f7f600080516020614adb8339815191528e6133a3565b50610f98600080516020614b1b8339815191528d6133a3565b50508315610fd357845460ff60401b19168555604051600080516020614a9b83398151915290610fca90600190614780565b60405180910390a15b50505050505050505050505050565b600080516020614b1b833981519152610ffa8161311a565b6001600160a01b0382166110205760405162461bcd60e51b8152600401610a06906147ea565b600061102a613127565b600d810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907ff2307f4b1378d52b568838b5ec95561ace8309471194cc40f6a287412233031090600090a350505050565b60008061108d613127565b6000948552600501602090815260408086206001600160a01b03959095168652939052505090205490565b6000806110c3613127565b60009384526009016020525050604090205490565b600080516020614a5b8339815191526110f08161311a565b6000841180156111005750600083115b801561110c5750600082115b6111285760405162461bcd60e51b8152600401610a0690614821565b8284101580156111385750818310155b61119c5760405162461bcd60e51b815260206004820152602f60248201527f566f746572526577617264733a207469657273206d75737420626520696e206460448201526e32b9b1b2b73234b7339037b93232b960891b6064820152608401610a06565b60006111a6613127565b905060006111b2611e79565b90506111cc816111c188613444565b600e85019190613478565b50506111e6816111db87613444565b600f85019190613478565b5050611200816111f586613444565b601085019190613478565b50507f1afcafc356220cc188605d0a154dd69b47b6b316a3440aa38ed3872746aa04cf86868660405161123593929190614217565b60405180910390a1505050505050565b600080611250613127565b600201546001600160a01b031692915050565b60008061126e613127565b546001600160a01b031692915050565b600080611289613493565b60009384526020525050604090206001015490565b6000806112ab8484612c33565b509695505050505050565b600080516020614b3b8339815191526112ce8161311a565b81156116a457846000036113305760405162461bcd60e51b8152602060048201526024808201527f566f746572526577617264733a2070726f706f73616c49642063616e6e6f74206044820152630626520360e41b6064820152608401610a06565b6001600160a01b0384166113565760405162461bcd60e51b8152600401610a0690614853565b6000611360613127565b805460405163d206885d60e01b81529192506000916001600160a01b039091169063d206885d90611395908990600401614447565b602060405180830381865afa1580156113b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d691906148a1565b905060008260020160009054906101000a90046001600160a01b03166001600160a01b031663be26ed7f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145391906148a1565b905061145e816134b7565b60008061146b848b61359e565b91509150600061147b89896136e4565b6002870154604051639be1f14960e01b8152600481018790529192506000916001600160a01b0390911690639be1f14990602401602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f091906148a1565b9050818115611573576000868152600989016020526040812080548792906115199084906148ba565b925050819055508488600a01600088815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461156891906148ba565b909155506115969050565b606461157f86856148cd565b61158991906148fa565b61159390826148ba565b90505b6000868152600489016020526040812080548392906115b69084906148ba565b925050819055508088600501600088815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461160591906148ba565b909155505086156116575761161a878e61370f565b8387877f44b066f968384399d4dd42ceb1c632bb821317a77627627be1541c011a81974c8860405161164e91815260200190565b60405180910390a45b8b6001600160a01b0316867fac45cfd9cf13dd2e8b216503a1ca26d9f2a35e9a6b4b1b5cecc415db06ddf63f8d84604051611693929190614663565b60405180910390a350505050505050505b5050505050565b6116b48261127e565b6116bd8161311a565b6116c783836133a3565b50505050565b6001600160a01b03811633146116f65760405163334bd91960e11b815260040160405180910390fd5b61170082826137e4565b505050565b600080611710613127565b6000948552600a01602090815260408086206001600160a01b03959095168652939052505090205490565b600080516020614b1b8339815191526117538161311a565b6001600160a01b0382166117795760405162461bcd60e51b8152600401610a06906147ea565b6000611783613127565b600c810180546001600160a01b0319166001600160a01b038616908117909155604051919250907fe5820144107eb00b0c792ba15bdebee2fdc1b267734a70d442cadae0c828c4c690600090a2505050565b600660006117e1613237565b8054909150600160401b900460ff1680611808575080546001600160401b03808416911610155b156118265760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b178155600061184f613127565b90506001600160a01b0385166118b75760405162461bcd60e51b815260206004820152602760248201527f566f746572526577617264733a20696e76616c69642078416c6c6f636174696f6044820152666e566f74696e6760c81b6064820152608401610a06565b6001600160a01b03841661191e5760405162461bcd60e51b815260206004820152602860248201527f566f746572526577617264733a20696e76616c69642072656c61796572526577604482015267185c991cd41bdbdb60c21b6064820152608401610a06565b600c810180546001600160a01b038088166001600160a01b031992831617909255600d909201805491861691909216179055805460ff60401b19168155604051600080516020614a9b83398151915290610c2c908490614780565b61198161385c565b61198a82613901565b6119948282613919565b5050565b60006119a26139cd565b50600080516020614afb83398151915290565b600080516020614a5b8339815191526119cd8161311a565b6000831180156119dd5750600082115b6119f95760405162461bcd60e51b8152600401610a0690614821565b6000611a03613127565b90506000611a0f611e79565b9050611a2981611a1e87613444565b601185019190613478565b5050611a4381611a3886613444565b601285019190613478565b50507f1d9b2a19a54acf328291c791fe7f0887882512ee59d7623f7ba02bc55a6a88138585604051611a76929190614663565b60405180910390a15050505050565b600080516020614adb833981519152611a9d8161311a565b60076000611aa9613237565b8054909150600160401b900460ff1680611ad0575080546001600160401b03808416911610155b15611aee5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556000611b17613127565b90506000611b23611e79565b9050611b348c6111c1612710613444565b5050611b458c6111db612710613444565b5050611b568c6111f5612710613444565b5050611b678c611a1e612710613444565b5050611b788c611a38612710613444565b5050611b87816111c18d613444565b5050611b96816111db8c613444565b5050611ba5816111f58b613444565b5050611bb481611a1e8a613444565b5050611bc381611a3889613444565b50506001600160a01b03861615611bf2576013820180546001600160a01b0319166001600160a01b0388161790555b5050805460ff60401b19168155604051600080516020614a9b83398151915290611c1d908490614780565b60405180910390a150505050505050505050565b600080611c3c613127565b600101546001600160a01b031692915050565b600080611c5a613127565b60009384526003016020525050604090205490565b600080611c7a613127565b600d01546001600160a01b031692915050565b600080611c98613127565b905060008160020160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906148a1565b90506000611d2f611d258361314b565b6006850190613182565b6001600160d01b0316600114949350505050565b600080611d508484612c33565b50909695505050505050565b600080611d69848461359e565b50949350505050565b6000611d7d8161311a565b60008311611d9d5760405162461bcd60e51b8152600401610a069061491c565b60008211611df35760405162461bcd60e51b815260206004820152602f6024820152600080516020614abb83398151915260448201526e02067726561746572207468616e203608c1b6064820152608401610a06565b6000611dfd613127565b600085815260038201602052604090819020859055519091508490600080516020614a7b83398151915290611e359086815260200190565b60405180910390a250505050565b600080611e4e613493565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b6000611e83613a16565b905090565b6000806000611e95613127565b90506000611ea28561314b565b9050611eb16011830182613182565b6001600160d01b03169350611ec96012830182613182565b6001600160d01b0316925083600003611ee25761271093505b82600003611ef05761271092505b5050915091565b600080611f02613127565b6000938452600701602090815260408085209585529490525050205460ff1690565b600080516020614b1b833981519152611f3c8161311a565b6001600160a01b038216611f625760405162461bcd60e51b8152600401610a0690614794565b6000611f6c613127565b80546040519192506001600160a01b0390811691908516907f3e9cacccd727006bc0e1f6b190b46b34090f490cd3ab7e45f3ac7a9cfeda63ff90600090a380546001600160a01b0319166001600160a01b03939093169290921790915550565b6000611fd78161311a565b611700838361325b565b600080611fee8484612c33565b979650505050505050565b60006120048161311a565b600061200e613127565b9050600061201a611c8d565b9050612044612027611e79565b82612033576001612036565b60005b60068501919060ff16613478565b50506040518115907f541dc5534ac80f8161f980a8975bec206aee2363c8fa3c54a4709ee3b0cbe99f90600090a2505050565b600080612082613127565b60009384526004016020525050604090205490565b6120a08261127e565b6120a98161311a565b6116c783836137e4565b6000806120be613127565b601301546001600160a01b031692915050565b6000806120dc613127565b600c01546001600160a01b031692915050565b6120f7613a21565b6000821161215a5760405162461bcd60e51b815260206004820152602a60248201527f566f746572526577617264733a206379636c65206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608401610a06565b6001600160a01b0381166121805760405162461bcd60e51b8152600401610a0690614853565b600061218a613127565b600281015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa1580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa9190614966565b6122505760405162461bcd60e51b815260206004820152602160248201527f566f746572526577617264733a206379636c65206d75737420626520656e64656044820152601960fa1b6064820152608401610a06565b600c8101546040516368377f6d60e11b8152600481018590526000916122cc916001600160a01b039091169063d06efeda906024015b602060405180830381865afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c791906148a1565b61314b565b600c83015460405163a461a94d60e01b81529192506000916001600160a01b039091169063a461a94d906123069087908690600401614988565b602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614966565b60138401549091506000906001600160a01b0316158015906123d757506013840154604051633e28391d60e01b81526001600160a01b0390911690633e28391d90612396908890600401614447565b602060405180830381865afa1580156123b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d79190614966565b905081806123e25750805b156123f1576123f18686613a57565b6000806000806124018a8a612c33565b93509350935093506000838561241791906148ba565b905060008261242685846148ba565b61243091906148ba565b9050600082116124965760405162461bcd60e51b815260206004820152602b60248201527f566f746572526577617264733a20726577617264206d7573742062652067726560448201526a061746572207468616e20360ac1b6064820152608401610a06565b60018a01546040516370a0823160e01b815282916001600160a01b0316906370a08231906124c8903090600401614447565b602060405180830381865afa1580156124e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250991906148a1565b101561257b5760405162461bcd60e51b815260206004820152603b60248201527f566f746572526577617264733a206e6f7420656e6f756768204233545220696e60448201527a081d1a194818dbdb9d1c9858dd081d1bc81c185e481c995dd85c99602a1b6064820152608401610a06565b60008c815260058b01602090815260408083206001600160a01b038f168085529083528184208490558f8452600a8e01835281842090845290915281205582156127f35760138a01546040516318be49d960e01b81526000916001600160a01b0316906318be49d9906125f4908f908e90600401614988565b602060405180830381865afa158015612611573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263591906149a9565b60018c015460138d015460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261267192169088906004016149c6565b6020604051808303816000875af1158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190614966565b61270e5760405162461bcd60e51b815260206004820152602560248201527f566f746572526577617264733a206e617620666565207472616e736665722066604482015264185a5b195960da1b6064820152608401610a06565b8a60130160009054906101000a90046001600160a01b03166001600160a01b03166341556405828f876040518463ffffffff1660e01b8152600401612771939291906001600160a01b039390931683526020830191909152604082015260600190565b600060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b505050508c8c6001600160a01b0316826001600160a01b03167f2996fe9f6ef47f032ce8b00f29e970a8bd675501e6c1de5f2d6c2132a52c8764876040516127e991815260200190565b60405180910390a4505b8315612a135760018a0154600d8b015460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926128339291169088906004016149c6565b6020604051808303816000875af1158015612852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128769190614966565b6128d15760405162461bcd60e51b815260206004820152602660248201527f566f746572526577617264733a20706f6f6c2066656520617070726f76616c2060448201526519985a5b195960d21b6064820152608401610a06565b89600d0160009054906101000a90046001600160a01b03166001600160a01b031663e2bbb158858e6040518363ffffffff1660e01b8152600401612916929190614663565b600060405180830381600087803b15801561293057600080fd5b505af1158015612944573d6000803e3d6000fd5b5050505089600d0160009054906101000a90046001600160a01b03166001600160a01b0316636cf88e73338d8f60016040518563ffffffff1660e01b815260040161299294939291906149df565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050508a6001600160a01b03168c336001600160a01b03167f74ed9c7d513ddb680c4bfe9f3fd36e3566ae3d2b402da13294c2704bc61c46ab87604051612a0a91815260200190565b60405180910390a45b60018a015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612a47908e9086906004016149c6565b6020604051808303816000875af1158015612a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8a9190614966565b612ae25760405162461bcd60e51b815260206004820152602360248201527f566f746572526577617264733a20766f746572207472616e73666572206661696044820152621b195960ea1b6064820152608401610a06565b8a6001600160a01b03168c7f5141bec81f3347f1f4850164c7b8a0ebb6e206143d6b483238206f7543ccb4258888604051612b1e929190614663565b60405180910390a350505050505050505050611994613ad4565b600080612b43613127565b9050612b526006820184613182565b6001600160d01b0316600114915050919050565b600080612b71613127565b6000938452600801602090815260408085209585529490525050205460ff1690565b600080516020614b1b833981519152612bab8161311a565b6001600160a01b038216612bd15760405162461bcd60e51b8152600401610a06906147ea565b6000612bdb613127565b6013810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fb87a7ab21d0c3e5964b8f7848575525d4385a6e0814df758d76a28ec347f834390600090a350505050565b6000806000806000612c43613127565b600088815260058201602090815260408083206001600160a01b038b8116855292528083205460028501549151633542e90360e01b8152600481018d90529495509293612cf093929190911690633542e90390602401602060405180830381865afa158015612cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cda91906148a1565b60008b8152600486016020526040902054613ae5565b6000898152600a8401602090815260408083206001600160a01b038c8116855292528083205460028701549151639be1f14960e01b8152600481018e90529495509293612d9d93929190911690639be1f14990602401602060405180830381865afa158015612d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8791906148a1565b60008c8152600987016020526040902054613ae5565b90506000612dab82846148ba565b905080600003612dcc57600080600080975097509750975050505050613111565b601384015481906001600160a01b031615801590612e5857506013850154604051633e28391d60e01b81526001600160a01b0390911690633e28391d90612e17908d90600401614447565b602060405180830381865afa158015612e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e589190614966565b15612ef1576013850154604080516311efbf6160e01b81529051612710926001600160a01b0316916311efbf619160048083019260209291908290030181865afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece91906148a1565b612ed890846148cd565b612ee291906148fa565b9550612eee8683614a2b565b90505b600c8501546040516368377f6d60e11b8152600481018d90528291600091612f2b916001600160a01b03169063d06efeda90602401612286565b60138801549091506000906001600160a01b031615801590612fcc57508760130160009054906101000a90046001600160a01b03166001600160a01b0316633e28391d8e6040518263ffffffff1660e01b8152600401612f8b9190614447565b602060405180830381865afa158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcc9190614966565b9050600088600c0160009054906101000a90046001600160a01b03166001600160a01b031663a461a94d8f856040518363ffffffff1660e01b8152600401613015929190614988565b602060405180830381865afa158015613032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130569190614966565b905080806130615750815b156130e457600d890154604051636e20250760e11b8152600481018790526001600160a01b039091169063dc404a0e90602401602060405180830381865afa1580156130b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d591906148a1565b9a506130e18b86614a2b565b93505b856130ef89866148cd565b6130f991906148fa565b9c506131058d85614a2b565b9b505050505050505050505b92959194509250565b6131248133613b49565b50565b7f114e7ffaaf205d38cd05b17b56f3357806ef2ce889cb4748445ae91cdfc37c0090565b600065ffffffffffff82111561317e576040516306dfcc6560e41b81526030600482015260248101839052604401610a06565b5090565b8154600090818160058111156131e157600061319d84613b74565b6131a79085614a2b565b60008881526020902090915081015465ffffffffffff90811690871610156131d1578091506131df565b6131dc8160016148ba565b92505b505b60006131ef87878585613c5c565b9050801561322a5761321487613206600184614a2b565b600091825260209091200190565b54600160301b90046001600160d01b0316611fee565b6000979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6000821161327b5760405162461bcd60e51b8152600401610a069061491c565b6000613285613127565b905060008160020160009054906101000a90046001600160a01b03166001600160a01b031663be26ed7f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330291906148a1565b9050600b820160006133158360016148ba565b815260208082019290925260409081016000908120825180840184528881528085018881528254600180820185559385529386902091516002909402909101928355519101555184815285917f15981e0d250056d8a624ef3f1b96fddad0d42fd3aeb971e048b9b591674e385a9101611e35565b613391613cbe565b565b61339b613cbe565b613391613ce3565b6000806133ae613493565b90506133ba8484611e43565b61343a576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556133f03390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061098d565b600091505061098d565b60006001600160d01b0382111561317e576040516306dfcc6560e41b815260d0600482015260248101839052604401610a06565b600080613486858585613ceb565b915091505b935093915050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b60006134c1613127565b6000838152600b820160205260408120549192508190036134e157505050565b60005b81811015613584576000848152600b84016020526040812080548390811061350e5761350e61473b565b60009182526020808320604080518082018252600294909402909101805480855260019091015484840181815291865260038a0184529482902094909455825193519051908152919350600080516020614a7b833981519152910160405180910390a2508061357c81614767565b9150506134e4565b506000838152600b8301602052604081206117009161412b565b60008060006135ab613127565b90506135b78585611ef7565b156135c95760008092509250506136dd565b805460405163958fc97d60e01b8152600481018790526000916001600160a01b03169063958fc97d90602401602060405180830381865afa158015613612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363691906148a1565b90506136428186612b66565b15613655576000809350935050506136dd565b81546040516336af181960e11b8152600481018890526000916001600160a01b031690636d5e303290602401602060405180830381865afa15801561369e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c291906148a1565b60008181526003909401602052604090932054945091925050505b9250929050565b60006136ee611c8d565b156136fa57508161098d565b61370882633b9aca006148cd565b9392505050565b6000613719613127565b60008381526007820160209081526040808320878452909152808220805460ff191660011790558254905163958fc97d60e01b81526004810187905292935090916001600160a01b039091169063958fc97d90602401602060405180830381865afa15801561378c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b091906148a1565b905080156116c757600083815260088301602090815260408083208484529091529020805460ff1916600117905550505050565b6000806137ef613493565b90506137fb8484611e43565b1561343a576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061098d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806138e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166138d7600080516020614afb833981519152546001600160a01b031690565b6001600160a01b031614155b156133915760405163703e46dd60e11b815260040160405180910390fd5b600080516020614adb8339815191526119948161311a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613973575060408051601f3d908101601f19168201909252613970918101906148a1565b60015b6139925781604051634c9c8ce360e01b8152600401610a069190614447565b600080516020614afb83398151915281146139c357604051632a87526960e21b815260048101829052602401610a06565b6117008383613e65565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146133915760405163703e46dd60e11b815260040160405180910390fd5b6000611e834361314b565b6000613a2b613ebb565b805490915060011901613a5157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000613a61613127565b600d8101546040516316b8734560e21b8152600481018690526001600160a01b038581166024830152336044830152929350911690635ae1cd149060640160006040518083038186803b158015613ab757600080fd5b505afa158015613acb573d6000803e3d6000fd5b50505050505050565b6000613ade613ebb565b6001905550565b6000831580613af2575081155b80613afb575082155b15613b0857506000613708565b6000620f4240613b1885876148cd565b613b2291906148cd565b90506000613b3084836148fa565b9050613b3f620f4240826148fa565b9695505050505050565b613b538282611e43565b61199457808260405163e2517d3f60e01b8152600401610a069291906149c6565b600081600003613b8657506000919050565b60006001613b9384613edf565b901c6001901b90506001818481613bac57613bac6148e4565b048201901c90506001818481613bc457613bc46148e4565b048201901c90506001818481613bdc57613bdc6148e4565b048201901c90506001818481613bf457613bf46148e4565b048201901c90506001818481613c0c57613c0c6148e4565b048201901c90506001818481613c2457613c246148e4565b048201901c90506001818481613c3c57613c3c6148e4565b048201901c905061370881828581613c5657613c566148e4565b04613f73565b60005b81831015613cb6576000613c738484613f89565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115613ca257809250613cb0565b613cad8160016148ba565b93505b50613c5f565b509392505050565b613cc6613fa4565b61339157604051631afcd79f60e31b815260040160405180910390fd5b613ad4613cbe565b825460009081908015613e0a576000613d0987613206600185614a2b565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015613d5d57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603613da95784613d8088613206600186614a2b565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055613dfa565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b60200151925083915061348b9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161348b565b613e6e82613fbe565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613eb357611700828261401a565b611994614090565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600080608083901c15613ef457608092831c92015b604083901c15613f0657604092831c92015b602083901c15613f1857602092831c92015b601083901c15613f2a57601092831c92015b600883901c15613f3c57600892831c92015b600483901c15613f4e57600492831c92015b600283901c15613f6057600292831c92015b600183901c1561098d5760010192915050565b6000818310613f825781613708565b5090919050565b6000613f9860028484186148fa565b613708908484166148ba565b6000613fae613237565b54600160401b900460ff16919050565b806001600160a01b03163b600003613feb5780604051634c9c8ce360e01b8152600401610a069190614447565b600080516020614afb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516140379190614a3e565b600060405180830381855af49150503d8060008114614072576040519150601f19603f3d011682016040523d82523d6000602084013e614077565b606091505b50915091506140878583836140af565b95945050505050565b34156133915760405163b398979f60e01b815260040160405180910390fd5b6060826140c4576140bf82614102565b613708565b81511580156140db57506001600160a01b0384163b155b156140fb5783604051639996b31560e01b8152600401610a069190614447565b5080613708565b8051156141125780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054600082556002029060005260206000209081019061312491905b8082111561317e5760008082556001820155600201614148565b6001600160a01b038116811461312457600080fd5b803561418281614162565b919050565b6000806040838503121561419a57600080fd5b8235915060208301356141ac81614162565b809150509250929050565b6000602082840312156141c957600080fd5b81356001600160e01b03198116811461370857600080fd5b6000602082840312156141f357600080fd5b813561370881614162565b60006020828403121561421057600080fd5b5035919050565b9283526020830191909152604082015260600190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561426b5761426b61422d565b604052919050565b600082601f83011261428457600080fd5b813560206001600160401b0382111561429f5761429f61422d565b8160051b6142ae828201614243565b92835284810182019282810190878511156142c857600080fd5b83870192505b84831015611fee578235825291830191908301906142ce565b600080604083850312156142fa57600080fd5b82356001600160401b038082111561431157600080fd5b61431d86838701614273565b9350602085013591508082111561433357600080fd5b5061434085828601614273565b9150509250929050565b600080600080600080600080610100898b03121561436757600080fd5b883561437281614162565b9750602089013561438281614162565b9650604089013561439281614162565b955060608901356143a281614162565b945060808901356143b281614162565b93506143c060a08a01614177565b925060c08901356001600160401b03808211156143dc57600080fd5b6143e88c838d01614273565b935060e08b01359150808211156143fe57600080fd5b5061440b8b828c01614273565b9150509295985092959890939650565b60008060006060848603121561443057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561447157600080fd5b84359350602085013561448381614162565b93969395505050506040820135916060013590565b600080604083850312156144ab57600080fd5b82356144b681614162565b915060208301356141ac81614162565b600080604083850312156144d957600080fd5b82356144e481614162565b91506020838101356001600160401b038082111561450157600080fd5b818601915086601f83011261451557600080fd5b8135818111156145275761452761422d565b614539601f8201601f19168501614243565b9150808252878482850101111561454f57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015614588578181015183820152602001614570565b50506000910152565b60208152600082518060208401526145b081604085016020870161456d565b601f01601f19169190910160400192915050565b600080604083850312156145d757600080fd5b50508035926020909101359150565b803565ffffffffffff8116811461418257600080fd5b600080600080600080600060e0888a03121561461757600080fd5b614620886145e6565b96506020880135955060408801359450606088013593506080880135925060a0880135915060c088013561465381614162565b8091505092959891949750929550565b918252602082015260400190565b60006020828403121561468357600080fd5b613708826145e6565b60208082526032908201527f566f746572526577617264733a20656d697373696f6e732063616e6e6f7420626040820152716520746865207a65726f206164647265737360701b606082015260800190565b6020808252603e908201527f566f746572526577617264733a206c6576656c7320616e64206d756c7469706c60408201527f69657273206d7573742068617665207468652073616d65206c656e6774680000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161477957614779614751565b5060010190565b6001600160401b0391909116815260200190565b60208082526036908201527f566f746572526577617264733a205f67616c6178794d656d6265722063616e6e6040820152756f7420626520746865207a65726f206164647265737360501b606082015260800190565b6020808252601d908201527f566f746572526577617264733a20496e76616c69642061646472657373000000604082015260600190565b6020808252602490820152600080516020614abb8339815191526040820152630203e20360e41b606082015260800190565b6020808252602e908201527f566f746572526577617264733a20766f7465722063616e6e6f7420626520746860408201526d65207a65726f206164647265737360901b606082015260800190565b6000602082840312156148b357600080fd5b5051919050565b8082018082111561098d5761098d614751565b808202811582820484141761098d5761098d614751565b634e487b7160e01b600052601260045260246000fd5b60008261491757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f566f746572526577617264733a206c6576656c206d75737420626520677265616040820152690746572207468616e20360b41b606082015260800190565b60006020828403121561497857600080fd5b8151801515811461370857600080fd5b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b6000602082840312156149bb57600080fd5b815161370881614162565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03858116825284166020820152604081018390526080810160028310614a1c57634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b8181038181111561098d5761098d614751565b60008251614a5081846020870161456d565b919091019291505056fe71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1cc259987543a764767934b4d714760c68fdeb2ba8318210d9802cf66ae854001c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2566f746572526577617264733a206d756c7469706c696572206d757374206265189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b779e0a786be046868ec7a47625dff81941dbb889bcb3efd61d7ece9a9b92e2279a26469706673582212207c0f13875e675fa93b85fc6716e08c485e466b06d70709cdfd087556db1c621e64736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
