{
  "_format": "hh-sol-artifact-1",
  "contractName": "XAllocationVoting",
  "sourceName": "contracts/x-allocation-voting-governance/XAllocationVoting.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": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "AutoVotingEnabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "AutoVotingNotEnabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "B3TRGovernorOnlyExecutor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        }
      ],
      "name": "DelegatedToNavigator",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DuplicateAppVote",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "GovernorAlreadyCastVote",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "GovernorAppNotAvailableForVoting",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "GovernorInsufficientVotingPower",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "votingPeriod",
          "type": "uint256"
        }
      ],
      "name": "GovernorInvalidVotingPeriod",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "GovernorNonexistentRound",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "person",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "GovernorPersonhoodVerificationFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "enum IXAllocationVotingGovernor.RoundState",
          "name": "current",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "expectedStates",
          "type": "bytes32"
        }
      ],
      "name": "GovernorUnexpectedRoundState",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        }
      ],
      "name": "GovernorVotingThresholdNotMet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "InvalidCaller",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "contractName",
          "type": "string"
        }
      ],
      "name": "InvalidContractAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        }
      ],
      "name": "NavigatorCannotEnableAutoVoting",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "NavigatorPreferencesNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        }
      ],
      "name": "NotDelegatedToNavigator",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "SkipWindowNotReached",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "VoteAlreadyProcessed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "person",
          "type": "address"
        }
      ],
      "name": "XAllocationVotingPersonhoodVerificationFailed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "appsIds",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "voteWeights",
          "type": "uint256[]"
        }
      ],
      "name": "AllocationAutoVoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "appsIds",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "voteWeights",
          "type": "uint256[]"
        }
      ],
      "name": "AllocationVoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isPerson",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "appCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votingPower",
          "type": "uint256"
        }
      ],
      "name": "AutoVoteSkipped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "AutoVotingToggled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "fingerprint",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lastChangedRound",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "multiplier",
          "type": "uint256"
        }
      ],
      "name": "FreshnessMultiplierApplied",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "appsIds",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "voteWeights",
          "type": "uint256[]"
        }
      ],
      "name": "NavigatorVoteCast",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "navigator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "NavigatorVoteSkipped",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "apps",
          "type": "bytes32[]"
        }
      ],
      "name": "PreferredAppsUpdated",
      "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": false,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "voteStart",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "voteEnd",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "appsIds",
          "type": "bytes32[]"
        }
      ],
      "name": "RoundCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CLOCK_MODE",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "ROUND_STARTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": "appSharesCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseAllocationPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "citizen",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "castNavigatorVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[]",
          "name": "appIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256[]",
          "name": "voteWeights",
          "type": "uint256[]"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "castVoteOnBehalfOf",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "citizenSkipWindowBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clock",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentRoundDeadline",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentRoundId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentRoundSnapshot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "disableAutoVotingFor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "finalizeRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getAppIdsOfRound",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "app",
          "type": "bytes32"
        }
      ],
      "name": "getAppVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "app",
          "type": "bytes32"
        }
      ],
      "name": "getAppVotesQF",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getAppsOfRound",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "teamWalletAddress",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "metadataURI",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "createdAtTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "appAvailableForAllocationVoting",
              "type": "bool"
            }
          ],
          "internalType": "struct X2EarnAppsDataTypes.AppWithDetailsReturnType[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getDepositVotingPower",
      "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": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getRound",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "uint48",
              "name": "voteStart",
              "type": "uint48"
            },
            {
              "internalType": "uint32",
              "name": "voteDuration",
              "type": "uint32"
            }
          ],
          "internalType": "struct XAllocationVotingStorageTypes.RoundCore",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getRoundAppSharesCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getRoundBaseAllocationPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTotalAutoVotingUsersAtRoundStart",
      "outputs": [
        {
          "internalType": "uint208",
          "name": "",
          "type": "uint208"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "timepoint",
          "type": "uint48"
        }
      ],
      "name": "getTotalAutoVotingUsersAtTimepoint",
      "outputs": [
        {
          "internalType": "uint208",
          "name": "",
          "type": "uint208"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundStart",
          "type": "uint256"
        }
      ],
      "name": "getTotalVotingPower",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getUserVotingPreferences",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "getVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "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": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "hasUserVotedForApp",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "hasVoted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "hasVotedOnce",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract INavigatorRegistry",
          "name": "_navigatorRegistry",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_citizenSkipWindowBlocks",
          "type": "uint256"
        }
      ],
      "name": "initializeV9",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "appId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isEligibleForVote",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isFinalized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "isUserAutoVotingEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "timepoint",
          "type": "uint48"
        }
      ],
      "name": "isUserAutoVotingEnabledAtTimepoint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isUserAutoVotingEnabledForRound",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isUserAutoVotingEnabledInCurrentRound",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "latestSucceededRoundId",
      "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": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "quorum",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quorumDenominator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timepoint",
          "type": "uint256"
        }
      ],
      "name": "quorumNumerator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quorumNumerator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quorumPercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "quorumReached",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "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": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "roundDeadline",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "roundQuorum",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "roundSnapshot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "appSharesCap_",
          "type": "uint256"
        }
      ],
      "name": "setAppSharesCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IB3TRGovernor",
          "name": "newB3TRGovernor",
          "type": "address"
        }
      ],
      "name": "setB3TRGovernor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "baseAllocationPercentage_",
          "type": "uint256"
        }
      ],
      "name": "setBaseAllocationPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setCitizenSkipWindowBlocks",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IEmissions",
          "name": "newEmissions",
          "type": "address"
        }
      ],
      "name": "setEmissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract INavigatorRegistry",
          "name": "newNavigatorRegistry",
          "type": "address"
        }
      ],
      "name": "setNavigatorRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IRelayerRewardsPool",
          "name": "newRelayerRewardsPool",
          "type": "address"
        }
      ],
      "name": "setRelayerRewardsPoolAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "appIds",
          "type": "bytes32[]"
        }
      ],
      "name": "setUserVotingPreferences",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IVeBetterPassport",
          "name": "newVeBetterPassport",
          "type": "address"
        }
      ],
      "name": "setVeBetterPassport",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IVoterRewards",
          "name": "newVoterRewards",
          "type": "address"
        }
      ],
      "name": "setVoterRewardsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "newVotingPeriod",
          "type": "uint32"
        }
      ],
      "name": "setVotingPeriod",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newVotingThreshold",
          "type": "uint256"
        }
      ],
      "name": "setVotingThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IX2EarnApps",
          "name": "newX2EarnApps",
          "type": "address"
        }
      ],
      "name": "setX2EarnAppsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startNewRound",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "internalType": "enum IXAllocationVotingGovernor.RoundState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "toggleAutoVoting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalVoters",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalVotesQF",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newQuorumNumerator",
          "type": "uint256"
        }
      ],
      "name": "updateQuorumNumerator",
      "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": [
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        }
      ],
      "name": "validatePersonhoodForCurrentRound",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615d2062000104600039600081816146560152818161467f01526147c90152615d206000f3fe6080604052600436106103c55760003560e01c806301ffc9a7146103ca57806302a251a3146103ff578063059e952b1461042257806306f3f9e61461045a5780630a0e74ef1461047c5780630eca87fb1461049c57806319e6e158146104bc578063248a9ca3146104dc578063291605f7146104fc5780632f2ff15d14610529578063300973771461054957806333727c4d146105695780633469f6e21461058957806336568abe146105a95780633b395cbe146105c95780633d4fd3c7146105e95780633e4f49e614610609578063412caf0b1461063657806342707a43146106635780634385963214610683578063498d91bf146106a35780634bb5181a146106c35780634bf5d7e9146106e35780634cadad2f146107055780634f1ef286146107255780634fa76ec91461073857806352d1902d1461074d57806353ed63991461076257806354fd4d5014610782578063561b64ef146107ad57806357181609146107c257806359372812146107e257806359529edd146107f75780635dbdba6e146108175780635fb263671461083757806360c4247f146108575780636282773314610877578063673fc7241461088c57806374038935146108ac57806378a81336146108cc5780637ace2485146108ec578063802d27091461090c57806382afd23b1461092c578063836761e01461094c5780638a829eda1461096c5780638ab52d4b1461098c5780638f1327c0146109a157806391d14854146109fa57806391ddadf414610a1a5780639382c81814610a3c578063952f213314610a5c57806397c3d33414610a7e5780639aeb962b14610a935780639cbe5efd14610ab3578063a022756b14610ac8578063a217fddf14610add578063a461a94d14610af2578063a56b576514610b12578063a5ae08e914610b32578063a7713a7014610738578063aa86328614610b52578063abc517fd14610b72578063ad3cb1cc14610b87578063b25d6f6214610bb8578063b3c93dab14610bd8578063bb7de6d414610bf8578063bd85948c14610c0d578063be2a9f8f14610c22578063bed7301014610c42578063c048f6c914610c62578063cd669a7214610c82578063cfea80ed14610ca4578063d06efeda14610cc4578063d3a368bd14610ce4578063d4a8dd9814610d04578063d547741f14610d24578063d68b4c3614610d44578063e125f74e14610d64578063e540d01d14610d86578063eb9019d414610da6578063f36c8f5c14610dc6578063f530108f14610de8578063f5fae13614610e08578063f72c0d8b14610e28578063f8ce560a14610e4a578063fb03ec6f14610e6a575b600080fd5b3480156103d657600080fd5b506103ea6103e5366004614e2a565b610e8a565b60405190151581526020015b60405180910390f35b34801561040b57600080fd5b50610414610eb5565b6040519081526020016103f6565b34801561042e57600080fd5b5061044261043d366004614e68565b610f29565b6040516001600160d01b0390911681526020016103f6565b34801561046657600080fd5b5061047a610475366004614e85565b610fa4565b005b34801561048857600080fd5b50610414610497366004614e85565b6110a5565b3480156104a857600080fd5b506104146104b7366004614e85565b61111d565b3480156104c857600080fd5b506104146104d7366004614e85565b611158565b3480156104e857600080fd5b506104146104f7366004614e85565b611193565b34801561050857600080fd5b5061051c610517366004614e85565b6111b3565b6040516103f69190614eee565b34801561053557600080fd5b5061047a610544366004614fc0565b61122e565b34801561055557600080fd5b50610414610564366004614e85565b611250565b34801561057557600080fd5b506103ea610584366004614e85565b61128b565b34801561059557600080fd5b5061047a6105a4366004614e85565b611303565b3480156105b557600080fd5b5061047a6105c4366004614fc0565b611392565b3480156105d557600080fd5b5061047a6105e43660046150ec565b6113ca565b3480156105f557600080fd5b506103ea610604366004615120565b611416565b34801561061557600080fd5b50610629610624366004614e85565b6114a1565b6040516103f69190615176565b34801561064257600080fd5b50610656610651366004615184565b6116ea565b6040516103f691906151dc565b34801561066f57600080fd5b506103ea61067e3660046151ef565b611769565b34801561068f57600080fd5b506103ea61069e366004614fc0565b6117fe565b3480156106af57600080fd5b506104146106be366004614e85565b61183a565b3480156106cf57600080fd5b506104146106de366004615227565b611875565b3480156106ef57600080fd5b506106f86118f2565b6040516103f69190615249565b34801561071157600080fd5b50610414610720366004615120565b611965565b61047a610733366004615283565b611971565b34801561074457600080fd5b50610414611990565b34801561075957600080fd5b506104146119db565b34801561076e57600080fd5b5061047a61077d366004615310565b6119f8565b34801561078e57600080fd5b50604080518082019091526002815261031360f41b60208201526106f8565b3480156107b957600080fd5b50610414611c43565b3480156107ce57600080fd5b5061047a6107dd366004615184565b611c8e565b3480156107ee57600080fd5b50610414611cdd565b34801561080357600080fd5b50610414610812366004614e85565b611d28565b34801561082357600080fd5b5061047a610832366004615184565b611d36565b34801561084357600080fd5b506103ea610852366004615184565b611d85565b34801561086357600080fd5b50610414610872366004614e85565b611e44565b34801561088357600080fd5b50610414611e7f565b34801561089857600080fd5b5061047a6108a7366004615184565b611eca565b3480156108b857600080fd5b5061047a6108c7366004614e85565b61207c565b3480156108d857600080fd5b5061047a6108e7366004615184565b6120cc565b3480156108f857600080fd5b50610656610907366004614e85565b61211b565b34801561091857600080fd5b506103ea610927366004615184565b612156565b34801561093857600080fd5b506103ea610947366004614e85565b612190565b34801561095857600080fd5b5061047a610967366004614e85565b6121b4565b34801561097857600080fd5b5061047a610987366004615184565b612204565b34801561099857600080fd5b506104146123cd565b3480156109ad57600080fd5b506109c16109bc366004614e85565b612418565b6040805182516001600160a01b0316815260208084015165ffffffffffff16908201529181015163ffffffff16908201526060016103f6565b348015610a0657600080fd5b506103ea610a15366004614fc0565b6124a5565b348015610a2657600080fd5b50610a2f6124db565b6040516103f691906153d2565b348015610a4857600080fd5b5061047a610a57366004614e85565b61254a565b348015610a6857600080fd5b50610414600080516020615ccb83398151915281565b348015610a8a57600080fd5b5061041461259a565b348015610a9f57600080fd5b506103ea610aae366004615184565b6125e5565b348015610abf57600080fd5b5061041461261f565b348015610ad457600080fd5b5061044261266a565b348015610ae957600080fd5b50610414600081565b348015610afe57600080fd5b506103ea610b0d3660046153e5565b61276e565b348015610b1e57600080fd5b50610414610b2d366004615120565b6127aa565b348015610b3e57600080fd5b5061047a610b4d366004615120565b612804565b348015610b5e57600080fd5b5061047a610b6d366004615120565b612d7c565b348015610b7e57600080fd5b50610414612f9e565b348015610b9357600080fd5b506106f8604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610bc457600080fd5b5061047a610bd3366004615184565b612fe9565b348015610be457600080fd5b5061047a610bf3366004615184565b613038565b348015610c0457600080fd5b50610414613087565b348015610c1957600080fd5b506104146130d2565b348015610c2e57600080fd5b5061047a610c3d366004615120565b6137b3565b348015610c4e57600080fd5b50610414610c5d366004615227565b613fdf565b348015610c6e57600080fd5b5061047a610c7d366004615184565b61401b565b348015610c8e57600080fd5b50610414600080516020615cab83398151915281565b348015610cb057600080fd5b506103ea610cbf366004615184565b61406a565b348015610cd057600080fd5b50610414610cdf366004614e85565b614124565b348015610cf057600080fd5b50610414610cff366004614e85565b61415f565b348015610d1057600080fd5b506103ea610d1f366004614e85565b61419a565b348015610d3057600080fd5b5061047a610d3f366004614fc0565b6141e0565b348015610d5057600080fd5b506103ea610d5f366004615227565b6141fc565b348015610d7057600080fd5b50610d79614259565b6040516103f69190615413565b348015610d9257600080fd5b5061047a610da1366004615439565b614275565b348015610db257600080fd5b50610414610dc1366004615120565b614357565b348015610dd257600080fd5b50610414600080516020615c4b83398151915281565b348015610df457600080fd5b5061047a610e03366004615184565b614393565b348015610e1457600080fd5b5061047a610e23366004614e85565b6143e2565b348015610e3457600080fd5b50610414600080516020615c6b83398151915281565b348015610e5657600080fd5b50610414610e65366004614e85565b614432565b348015610e7657600080fd5b50610414610e85366004614e85565b61446d565b60006001600160e01b03198216639da99b3f60e01b1480610eaf5750610eaf826144a8565b92915050565b600073__$e74cba849739aecfa9bf3b6281c0831878$__6302a251a36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190615456565b905090565b60405163059e952b60e01b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__9063059e952b90610f639085906004016153d2565b602060405180830381865af4158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf919061546f565b600080516020615c4b833981519152610fbc816144dd565b73__$e7d0f1dc0c8caff7791d9dd32970050ea7$__63bd88fe328373__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110449190615498565b6040516001600160e01b031960e085901b168152600481019290925265ffffffffffff1660248201526044015b60006040518083038186803b15801561108957600080fd5b505af415801561109d573d6000803e3d6000fd5b505050505050565b604051630a0e74ef60e01b81526004810182905260009073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90630a0e74ef906024015b602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190615456565b604051630eca87fb60e01b81526004810182905260009073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90630eca87fb906024016110dc565b60405163033cdc2b60e31b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__906319e6e158906024016110dc565b60008061119e6144ea565b60009384526020525050604090206001015490565b60405163291605f760e01b81526004810182905260609073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063291605f790602401600060405180830381865af4158015611206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eaf919081019061551a565b61123782611193565b611240816144dd565b61124a838361450e565b50505050565b604051633009737760e01b81526004810182905260009073__$70f75f99fe6661499ece4b8956af59cd6c$__906330097377906024016110dc565b6040516333727c4d60e01b81526004810182905260009073__$70f75f99fe6661499ece4b8956af59cd6c$__906333727c4d906024015b602060405180830381865af41580156112df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf919061565d565b73__$70f75f99fe6661499ece4b8956af59cd6c$__6309d3c59b82611327846114a1565b60028111156113385761133861514c565b61134185612190565b6040518463ffffffff1660e01b815260040161135f93929190615678565b60006040518083038186803b15801561137757600080fd5b505af415801561138b573d6000803e3d6000fd5b5050505050565b6001600160a01b03811633146113bb5760405163334bd91960e11b815260040160405180910390fd5b6113c582826145af565b505050565b73__$24ed9c895b3ab1d429967676414af5d94a$__63642998816113ec614627565b546001600160a01b031633846040518463ffffffff1660e01b815260040161135f93929190615693565b600073__$24ed9c895b3ab1d429967676414af5d94a$__631f59dfd78461143c85614124565b6040518363ffffffff1660e01b81526004016114599291906156bf565b602060405180830381865af4158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a919061565d565b9392505050565b6040516368377f6d60e11b815260048101829052600090819073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d06efeda90602401602060405180830381865af41580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151a9190615456565b905080600003611545576040516333b4e31b60e21b8152600481018490526024015b60405180910390fd5b600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190615498565b65ffffffffffff169050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63d3a368bd866040518263ffffffff1660e01b81526004016115f991815260200190565b602060405180830381865af4158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190615456565b905081811061164e57506000949350505050565b73__$04e71bdb39671a9b319808db351dce05d3$__63adf865238661167286614432565b6040518363ffffffff1660e01b815260040161168f9291906156e0565b602060405180830381865af41580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d0919061565d565b6116df57506001949350505050565b506002949350505050565b60405163412caf0b60e01b815260609073__$24ed9c895b3ab1d429967676414af5d94a$__9063412caf0b90611724908590600401615413565b600060405180830381865af4158015611741573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eaf9190810190615749565b6040516342707a4360e01b8152600481018490526001600160a01b03831660248201526044810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__906342707a4390606401602060405180830381865af41580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f6919061565d565b949350505050565b6040516321c2cb1960e11b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90634385963290611459908690869060040161577d565b60405163498d91bf60e01b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__9063498d91bf906024016110dc565b6040516325da8c0d60e11b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90634bb5181a906118b190869086906004016156e0565b602060405180830381865af41580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615456565b606073__$95674d662a270791c819f82956386ae379$__634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865af415801561193d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190615794565b600061149a8383614357565b61197961464b565b611982826146f2565b61198c828261470a565b5050565b600073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__63a7713a706040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b60006119e56147be565b50600080516020615c8b83398151915290565b8051825114611a6d5760405162461bcd60e51b815260206004820152603b60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a20617070732060448201527a0c2dcc840eecad2ced0e8e640d8cadccee8d040dad2e6dac2e8c6d602b1b606482015260840161153c565b6000825111611ad55760405162461bcd60e51b815260206004820152602e60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a206e6f20617060448201526d3839903a37903b37ba32903337b960911b606482015260840161153c565b3063a461a94d33611aec611ae7611c43565b614807565b6040518363ffffffff1660e01b8152600401611b099291906156bf565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a919061565d565b15611b6a57336040516305b27abd60e01b815260040161153c9190615413565b6000611b74614627565b600601546001600160a01b031690508015611c2b5760006001600160a01b0382166318be49d933611ba488614124565b6040518363ffffffff1660e01b8152600401611bc19291906157c8565b602060405180830381865afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0291906157e1565b6001600160a01b031614611c2b573360405163640ed18360e01b815260040161153c9190615413565b611c343361406a565b5061124a33858585600061483e565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63561b64ef6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080516020615ccb833981519152611ca6816144dd565b604051632b9f45b760e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90632b9f45b790611071908590600401615413565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63593728126040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000610eaf610e6583614124565b600080516020615ccb833981519152611d4e816144dd565b604051630e0bea3b60e21b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063382fa8ec90611071908590600401615413565b600080611d90614627565b60010160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e089190615456565b604051631f59dfd760e01b815290915073__$24ed9c895b3ab1d429967676414af5d94a$__90631f59dfd79061145990869085906004016156bf565b6040516360c4247f60e01b81526004810182905260009073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__906360c4247f906024016110dc565b600073__$04e71bdb39671a9b319808db351dce05d3$__63628277336040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000611ed4614627565b600601546001600160a01b031690508015801590611efa5750336001600160a01b038216145b611f585760405162461bcd60e51b815260206004820152602960248201527f58416c6c6f636174696f6e566f74696e673a206e6f74206e6176696761746f7260448201526820726567697374727960b81b606482015260840161153c565b604051632947884560e11b815273__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a90611f8f908590600401615413565b602060405180830381865af4158015611fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd0919061565d565b1561198c5773__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308473__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190615498565b6040518463ffffffff1660e01b8152600401611071939291906157fe565b600080516020615c4b833981519152612094816144dd565b604051637403893560e01b81526004810183905273__$36f22459ee3e33aa9c0be04d35fbeab80d$__90637403893590602401611071565b600080516020615ccb8339815191526120e4816144dd565b6040516332ea3f7360e11b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__906365d47ee690611071908590600401615413565b604051637ace248560e01b81526004810182905260609073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__90637ace248590602401611724565b604051632947884560e11b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a906112c2908590600401615413565b60008061219c836114a1565b60028111156121ad576121ad61514c565b1492915050565b600080516020615c4b8339815191526121cc816144dd565b60405163041b3b0f60e51b81526004810183905273__$04e71bdb39671a9b319808db351dce05d3$__9063836761e090602401611071565b336001600160a01b0382161461222f573360405163065ece9760e51b815260040161153c9190615413565b6000612239614627565b600601546001600160a01b031690508015612368576040516353127ad560e11b81526001600160a01b0382169063a624f5aa9061227a908590600401615413565b602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb919061565d565b156122db5781604051638523c47f60e01b815260040161153c9190615413565b604051633e28391d60e01b81526001600160a01b03821690633e28391d90612307908590600401615413565b602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612348919061565d565b15612368578160405163640ed18360e01b815260040161153c9190615413565b73__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308473__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561203a573d6000803e3d6000fd5b600073__$36f22459ee3e33aa9c0be04d35fbeab80d$__638ab52d4b6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6040805160608101825260008082526020820181905281830152905163023c4c9f60e61b81526004810183905273__$ee22ebed0dbdcceb519aa1d808f0526e6a$__90638f1327c090602401606060405180830381865af4158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190615829565b6000806124b06144ea565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612526573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190615498565b600080516020615c4b833981519152612562816144dd565b604051631270590360e31b81526004810183905273__$e74cba849739aecfa9bf3b6281c0831878$__90639382c81890602401611071565b600073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__6397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b604051639aeb962b60e01b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90639aeb962b906112c2908590600401615413565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080612675614627565b60010160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed9190615456565b60405163059e952b60e01b815290915073__$24ed9c895b3ab1d429967676414af5d94a$__9063059e952b906127279084906004016153d2565b602060405180830381865af4158015612744573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612768919061546f565b91505090565b604051631f59dfd760e01b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__90631f59dfd79061145990869086906004016156bf565b60006127b4614627565b60049081015460405163a56b576560e01b81526001600160a01b039091169163a56b5765916127e79187918791016157c8565b602060405180830381865afa1580156118ce573d6000803e3d6000fd5b3063a461a94d83612817611ae785614124565b6040518363ffffffff1660e01b81526004016128349291906156bf565b602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612875919061565d565b6128945781604051632b8b7c8960e01b815260040161153c9190615413565b61289e818361485d565b156128c0578181604051630a90bd6360e11b815260040161153c9291906157c8565b6128ca81836148a7565b60006128d4614627565b600301546001600160a01b031663d0ebb0ee846128f2611ae7611c43565b6040518363ffffffff1660e01b815260040161290f9291906156bf565b600060405180830381865afa15801561292c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612954919081019061589a565b509050600073__$24ed9c895b3ab1d429967676414af5d94a$__63412caf0b856040518263ffffffff1660e01b81526004016129909190615413565b600060405180830381865af41580156129ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129d59190810190615749565b9050600080600073__$24ed9c895b3ab1d429967676414af5d94a$__63ea66e04a308989886040518563ffffffff1660e01b8152600401612a1994939291906158e8565b600060405180830381865af4158015612a36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a5e9190810190615925565b925092509250841580612a7057508251155b15612cfc57604051632947884560e11b815273__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a90612aac908a90600401615413565b602060405180830381865af4158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed919061565d565b15612c385773__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308973__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190615498565b6040518463ffffffff1660e01b8152600401612b99939291906157fe565b60006040518083038186803b158015612bb157600080fd5b505af4158015612bc5573d6000803e3d6000fd5b50505050612bd1614627565b600501546040516373eff33960e11b81526001600160a01b039091169063e7dfe67290612c059089906001906004016156e0565b600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505050505b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690612c719089908b9060040161577d565b60006040518083038186803b158015612c8957600080fd5b505af4158015612c9d573d6000803e3d6000fd5b50508451604080518915158152602081019290925281018490528892506001600160a01b038a1691507f55b62c33ca46df94310e16fc7e52e8ed456d93a5f21b1e7b5b4c2428905ddebc9060600160405180910390a350505050505050565b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690612d359089908b9060040161577d565b60006040518083038186803b158015612d4d57600080fd5b505af4158015612d61573d6000803e3d6000fd5b50505050612d7387878585600161483e565b50505050505050565b600080516020615c6b833981519152612d94816144dd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460089190600160401b900460ff1680612ddd575080546001600160401b03808416911610155b15612dfb5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b038516612e865760405162461bcd60e51b815260206004820152602d60248201527f58416c6c6f636174696f6e566f74696e673a20696e76616c6964206e6176696760448201526c61746f7220726567697374727960981b606482015260840161153c565b60405163ce396b1f60e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063ce396b1f90612ebd908890600401615413565b60006040518083038186803b158015612ed557600080fd5b505af4158015612ee9573d6000803e3d6000fd5b5050604051631270590360e31b81526004810187905273__$e74cba849739aecfa9bf3b6281c0831878$__9250639382c818915060240160006040518083038186803b158015612f3857600080fd5b505af4158015612f4c573d6000803e3d6000fd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b600073__$e74cba849739aecfa9bf3b6281c0831878$__63abc517fd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080516020615ccb833981519152613001816144dd565b60405163358e7d9760e21b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063d639f65c90611071908590600401615413565b600080516020615ccb833981519152613050816144dd565b604051634784a11360e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90634784a11390611071908590600401615413565b600073__$36f22459ee3e33aa9c0be04d35fbeab80d$__63bb7de6d46040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000600080516020615cab8339815191526130ec816144dd565b6000339050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865af415801561313c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131609190615456565b905080156131e45761317181612190565b156131e45760405162461bcd60e51b815260206004820152603f60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a20746865726560448201527f2063616e206265206f6e6c79206f6e6520726f756e64207065722074696d6500606482015260840161153c565b60008111801561326557506040516333727c4d60e01b81526004810182905273__$70f75f99fe6661499ece4b8956af59cd6c$__906333727c4d90602401602060405180830381865af415801561323f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613263919061565d565b155b156132f75773__$70f75f99fe6661499ece4b8956af59cd6c$__6309d3c59b8261328e846114a1565b600281111561329f5761329f61514c565b6132a885612190565b6040518463ffffffff1660e01b81526004016132c693929190615678565b60006040518083038186803b1580156132de57600080fd5b505af41580156132f2573d6000803e3d6000fd5b505050505b6000613301614627565b546040805163c04cff1960e01b815290516001600160a01b039092169163c04cff19916004808201926000929091908290030181865afa158015613349573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133719190810190615749565b9050600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156133be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e29190615498565b9050600073__$e74cba849739aecfa9bf3b6281c0831878$__6302a251a36040518163ffffffff1660e01b8152600401602060405180830381865af415801561342f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134539190615456565b9050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__637ad59a23878585886040518563ffffffff1660e01b81526004016134949493929190615991565b602060405180830381865af41580156134b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d59190615456565b604051633ed9b0ff60e11b81526004810182905290915073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90637db361fe9060240160006040518083038186803b15801561352357600080fd5b505af4158015613537573d6000803e3d6000fd5b505060405163059e952b60e01b81526000925073__$24ed9c895b3ab1d429967676414af5d94a$__915063059e952b906135759087906004016153d2565b602060405180830381865af4158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b6919061546f565b905060006135c2614627565b600601546001600160a01b031690506000811561364b57604051630a5515e360e01b81526001600160a01b03831690630a5515e3906136059089906004016153d2565b602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613646919061546f565b61364e565b60005b905060006136686001600160d01b038084169086166159e5565b905060606000613676614627565b600401546001600160a01b03169050801580159061369d57506000846001600160d01b0316115b1561370b57806001600160a01b0316635584c4f96040518163ffffffff1660e01b8152600401600060405180830381865afa1580156136e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137089190810190615749565b91505b600083118061371b575060008251115b156137a157600061372a614627565b6005015460405163bfaabf3160e01b81526001600160a01b039091169150819063bfaabf319061376d908b9088906001600160d01b038b169089906004016159f8565b600060405180830381600087803b15801561378757600080fd5b505af115801561379b573d6000803e3d6000fd5b50505050505b50949b50505050505050505050505090565b6137c6816137c16000614925565b614948565b5060006137d1614627565b600601546001600160a01b0316905060006137eb83614124565b90506000826001600160a01b03166318be49d986846040518363ffffffff1660e01b815260040161381d9291906157c8565b602060405180830381865afa15801561383a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385e91906157e1565b90506001600160a01b0381166138895784604051630d1c9abb60e31b815260040161153c9190615413565b613893848661485d565b156138b5578484604051630a90bd6360e11b815260040161153c9291906157c8565b60006138bf614627565b600501546001600160a01b031690506138d782614987565b156139dc57604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f6906139159088908a9060040161577d565b60006040518083038186803b15801561392d57600080fd5b505af4158015613941573d6000803e3d6000fd5b5050604051637b8fee0b60e11b81526001600160a01b038416925063f71fdc1691506139739088908a9060040161577d565b600060405180830381600087803b15801561398d57600080fd5b505af11580156139a1573d6000803e3d6000fd5b5050505084826001600160a01b0316876001600160a01b0316600080516020615c2b83398151915260405160405180910390a4505050505050565b604051630e53e11560e21b81526001600160a01b0385169063394f845490613a0a90859089906004016157c8565b602060405180830381865afa158015613a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4b919061565d565b613a9157613a58856149df565b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f6906139159088908a9060040161577d565b6000613a9b614627565b600301546001600160a01b031663d0ebb0ee88613ab787614807565b6040518363ffffffff1660e01b8152600401613ad49291906156bf565b600060405180830381865afa158015613af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b19919081019061589a565b50905080613c2257604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690613b5a9089908b9060040161577d565b60006040518083038186803b158015613b7257600080fd5b505af4158015613b86573d6000803e3d6000fd5b5050604051637b8fee0b60e11b81526001600160a01b038516925063f71fdc169150613bb89089908b9060040161577d565b600060405180830381600087803b158015613bd257600080fd5b505af1158015613be6573d6000803e3d6000fd5b5050505085836001600160a01b0316886001600160a01b0316600080516020615c2b83398151915260405160405180910390a450505050505050565b613c2c86886148a7565b600080866001600160a01b031663f232dd60868a6040518363ffffffff1660e01b8152600401613c5d9291906157c8565b600060405180830381865afa158015613c7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ca29190810190615a1d565b915091506000876001600160a01b031663c61c06e78b896040518363ffffffff1660e01b8152600401613cd69291906157c8565b602060405180830381865afa158015613cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d179190615456565b90506000886001600160a01b031663e1f1c4a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d7d9190615456565b9050600083516001600160401b03811115613d9a57613d9a614ff0565b604051908082528060200260200182016040528015613dc3578160200160208202803683370190505b5090506000805b8551811015613e5a5783868281518110613de657613de6615a76565b602002602001015186613df99190615a8c565b613e039190615aa3565b838281518110613e1557613e15615a76565b602002602001018181525050828181518110613e3357613e33615a76565b602002602001015182613e4691906159e5565b915080613e5281615ac5565b915050613dca565b508381108015613e6b575060008251115b15613ea557613e7a8185615ade565b82600081518110613e8d57613e8d615a76565b60200260200101818151613ea191906159e5565b9052505b73__$04e71bdb39671a9b319808db351dce05d3$__636eafa5f68d8f6040518363ffffffff1660e01b8152600401613ede92919061577d565b60006040518083038186803b158015613ef657600080fd5b505af4158015613f0a573d6000803e3d6000fd5b50505050613f1d8d8d8885886000614af2565b6001600160a01b038816636cf88e73338f8f60006040518563ffffffff1660e01b8152600401613f509493929190615af1565b600060405180830381600087803b158015613f6a57600080fd5b505af1158015613f7e573d6000803e3d6000fd5b505050508b896001600160a01b03168e6001600160a01b03167f28e698009c3f75a566409d95005b1906bbae152060ccf899a822777dd147950c8986604051613fc8929190615b2f565b60405180910390a450505050505050505050505050565b604051630bed730160e41b815260009073__$04e71bdb39671a9b319808db351dce05d3$__9063bed73010906118b190869086906004016156e0565b600080516020615ccb833981519152614033816144dd565b604051637d4b948360e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90637d4b948390611071908590600401615413565b6000806000614077614627565b600301546001600160a01b031663d0ebb0ee85614095611ae7611c43565b6040518363ffffffff1660e01b81526004016140b29291906156bf565b600060405180830381865afa1580156140cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140f7919081019061589a565b915091508161411d5783816040516344c4534960e01b815260040161153c929190615b54565b5092915050565b6040516368377f6d60e11b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d06efeda906024016110dc565b60405163d3a368bd60e01b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d3a368bd906024016110dc565b600073__$04e71bdb39671a9b319808db351dce05d3$__63754ba25d836141c3610e6586614124565b6040518363ffffffff1660e01b81526004016112c29291906156e0565b6141e982611193565b6141f2816144dd565b61124a83836145af565b6000614206614627565b546001600160a01b031663d2570b948461421f85614124565b6040518363ffffffff1660e01b815260040161423c9291906156e0565b602060405180830381865afa158015611476573d6000803e3d6000fd5b6000614263614627565b600601546001600160a01b0316919050565b600080516020615c4b83398151915261428d816144dd565b73__$e74cba849739aecfa9bf3b6281c0831878$__630ff235a9836142b0614627565b60010160009054906101000a90046001600160a01b03166001600160a01b0316635bec4cb46040518163ffffffff1660e01b8152600401602060405180830381865afa158015614304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143289190615456565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401611071565b604051633ae4067560e21b815260009073__$95674d662a270791c819f82956386ae379$__9063eb9019d4906118b190869086906004016157c8565b600080516020615ccb8339815191526143ab816144dd565b60405163ce396b1f60e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063ce396b1f90611071908590600401615413565b600080516020615c4b8339815191526143fa816144dd565b604051637afd709b60e11b81526004810183905273__$36f22459ee3e33aa9c0be04d35fbeab80d$__9063f5fae13690602401611071565b604051637c672b0560e11b81526004810182905260009073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__9063f8ce560a906024016110dc565b60405163fb03ec6f60e01b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__9063fb03ec6f906024016110dc565b60006001600160e01b03198216637965db0b60e01b1480610eaf57506301ffc9a760e01b6001600160e01b0319831614610eaf565b6144e78133614c3c565b50565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6000806145196144ea565b905061452584846124a5565b6145a5576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561455b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610eaf565b6000915050610eaf565b6000806145ba6144ea565b90506145c684846124a5565b156145a5576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610eaf565b7f1da8cbbb2b12987a437595605432a6bbe84c08e9685afaaee593f05659f50d0090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806146d257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166146c6600080516020615c8b833981519152546001600160a01b031690565b6001600160a01b031614155b156146f05760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020615c6b83398151915261198c816144dd565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614764575060408051601f3d908101601f1916820190925261476191810190615456565b60015b6147835781604051634c9c8ce360e01b815260040161153c9190615413565b600080516020615c8b83398151915281146147b457604051632a87526960e21b81526004810182905260240161153c565b6113c58383614c67565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146146f05760405163703e46dd60e11b815260040160405180910390fd5b600065ffffffffffff82111561483a576040516306dfcc6560e41b8152603060048201526024810183905260440161153c565b5090565b600061484d86610dc187614124565b905061109d868686868587614af2565b60009182527fa760c041d4a9fa3a2c67d0d325f3592ba2c7e4330f7ba2283ebf9fe63913d505602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6148af614627565b600501546001600160a01b031663e5ed920b8383336040516001600160e01b031960e086901b16815260048101939093526001600160a01b03918216602484015216604482015260640160006040518083038186803b15801561491157600080fd5b505afa15801561109d573d6000803e3d6000fd5b60008160028111156149395761493961514c565b600160ff919091161b92915050565b600080614954846114a1565b905060008361496283614925565b160361149a578381846040516321b2b5ab60e11b815260040161153c93929190615b78565b6000614991614627565b6006015460405163506b90db60e11b81526001600160a01b039091169063a0d721b6906149c2908590600401615413565b602060405180830381865afa1580156112df573d6000803e3d6000fd5b60405163d3a368bd60e01b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d3a368bd90602401602060405180830381865af4158015614a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a569190615456565b90508073__$e74cba849739aecfa9bf3b6281c0831878$__63abc517fd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015614aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ac69190615456565b614ad090436159e5565b101561198c5760405163474a8edb60e11b81526004810183905260240161153c565b614b00856137c16000614925565b5073__$04e71bdb39671a9b319808db351dce05d3$__63cdc6ac0c8688878787614b298c614124565b6040518763ffffffff1660e01b8152600401614b4a96959493929190615b9a565b60006040518083038186803b158015614b6257600080fd5b505af4158015614b76573d6000803e3d6000fd5b50505050801561109d57614b88614627565b600501546001600160a01b0316636cf88e7333888860006040518563ffffffff1660e01b8152600401614bbe9493929190615af1565b600060405180830381600087803b158015614bd857600080fd5b505af1158015614bec573d6000803e3d6000fd5b5050505084866001600160a01b03167f64dbcb1d23926d04f2fea8c7cc3f5d02846ee1e48940419cf422f69ae35813aa8686604051614c2c929190615b2f565b60405180910390a3505050505050565b614c4682826124a5565b61198c57808260405163e2517d3f60e01b815260040161153c9291906157c8565b614c7082614cbd565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115614cb5576113c58282614d19565b61198c614d8f565b806001600160a01b03163b600003614cea5780604051634c9c8ce360e01b815260040161153c9190615413565b600080516020615c8b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614d369190615c0e565b600060405180830381855af49150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b5091509150614d86858383614dae565b95945050505050565b34156146f05760405163b398979f60e01b815260040160405180910390fd5b606082614dc357614dbe82614e01565b61149a565b8151158015614dda57506001600160a01b0384163b155b15614dfa5783604051639996b31560e01b815260040161153c9190615413565b508061149a565b805115614e115780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215614e3c57600080fd5b81356001600160e01b03198116811461149a57600080fd5b65ffffffffffff811681146144e757600080fd5b600060208284031215614e7a57600080fd5b813561149a81614e54565b600060208284031215614e9757600080fd5b5035919050565b60005b83811015614eb9578181015183820152602001614ea1565b50506000910152565b60008151808452614eda816020860160208601614e9e565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614f9d57888303603f19018552815180518452878101516001600160a01b0316888501528681015160c088860181905290614f5682870182614ec2565b91505060608083015186830382880152614f708382614ec2565b6080858101519089015260a094850151151594909701939093525050509386019390860190600101614f15565b509098975050505050505050565b6001600160a01b03811681146144e757600080fd5b60008060408385031215614fd357600080fd5b823591506020830135614fe581614fab565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561502857615028614ff0565b60405290565b604051601f8201601f191681016001600160401b038111828210171561505657615056614ff0565b604052919050565b60006001600160401b0382111561507757615077614ff0565b5060051b60200190565b600082601f83011261509257600080fd5b813560206150a76150a28361505e565b61502e565b82815260059290921b840181019181810190868411156150c657600080fd5b8286015b848110156150e157803583529183019183016150ca565b509695505050505050565b6000602082840312156150fe57600080fd5b81356001600160401b0381111561511457600080fd5b6117f684828501615081565b6000806040838503121561513357600080fd5b823561513e81614fab565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b600381106151725761517261514c565b9052565b60208101610eaf8284615162565b60006020828403121561519657600080fd5b813561149a81614fab565b600081518084526020808501945080840160005b838110156151d1578151875295820195908201906001016151b5565b509495945050505050565b60208152600061149a60208301846151a1565b60008060006060848603121561520457600080fd5b83359250602084013561521681614fab565b929592945050506040919091013590565b6000806040838503121561523a57600080fd5b50508035926020909101359150565b60208152600061149a6020830184614ec2565b60006001600160401b0382111561527557615275614ff0565b50601f01601f191660200190565b6000806040838503121561529657600080fd5b82356152a181614fab565b915060208301356001600160401b038111156152bc57600080fd5b8301601f810185136152cd57600080fd5b80356152db6150a28261525c565b8181528660208385010111156152f057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060006060848603121561532557600080fd5b833592506020808501356001600160401b038082111561534457600080fd5b61535088838901615081565b9450604087013591508082111561536657600080fd5b508501601f8101871361537857600080fd5b80356153866150a28261505e565b81815260059190911b820183019083810190898311156153a557600080fd5b928401925b828410156153c3578335825292840192908401906153aa565b80955050505050509250925092565b65ffffffffffff91909116815260200190565b600080604083850312156153f857600080fd5b823561540381614fab565b91506020830135614fe581614e54565b6001600160a01b0391909116815260200190565b63ffffffff811681146144e757600080fd5b60006020828403121561544b57600080fd5b813561149a81615427565b60006020828403121561546857600080fd5b5051919050565b60006020828403121561548157600080fd5b81516001600160d01b038116811461149a57600080fd5b6000602082840312156154aa57600080fd5b815161149a81614e54565b80516154c081614fab565b919050565b600082601f8301126154d657600080fd5b81516154e46150a28261525c565b8181528460208386010111156154f957600080fd5b6117f6826020830160208701614e9e565b805180151581146154c057600080fd5b6000602080838503121561552d57600080fd5b82516001600160401b038082111561554457600080fd5b818501915085601f83011261555857600080fd5b81516155666150a28261505e565b81815260059190911b8301840190848101908883111561558557600080fd5b8585015b83811015615650578051858111156155a057600080fd5b860160c0818c03601f190112156155b75760008081fd5b6155bf615006565b88820151815260406155d28184016154b5565b8a830152606080840151898111156155ea5760008081fd5b6155f88f8d838801016154c5565b83850152506080915081840151898111156156135760008081fd5b6156218f8d838801016154c5565b82850152505060a0808401518284015261563d60c0850161550a565b9083015250845250918601918601615589565b5098975050505050505050565b60006020828403121561566f57600080fd5b61149a8261550a565b92835260ff9190911660208301521515604082015260600190565b6001600160a01b03848116825283166020820152606060408201819052600090614d86908301846151a1565b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b918252602082015260400190565b600082601f8301126156ff57600080fd5b8151602061570f6150a28361505e565b82815260059290921b8401810191818101908684111561572e57600080fd5b8286015b848110156150e15780518352918301918301615732565b60006020828403121561575b57600080fd5b81516001600160401b0381111561577157600080fd5b6117f6848285016156ee565b9182526001600160a01b0316602082015260400190565b6000602082840312156157a657600080fd5b81516001600160401b038111156157bc57600080fd5b6117f6848285016154c5565b6001600160a01b03929092168252602082015260400190565b6000602082840312156157f357600080fd5b815161149a81614fab565b6001600160a01b03938416815291909216602082015265ffffffffffff909116604082015260600190565b60006060828403121561583b57600080fd5b604051606081016001600160401b038111828210171561585d5761585d614ff0565b604052825161586b81614fab565b8152602083015161587b81614e54565b6020820152604083015161588e81615427565b60408201529392505050565b600080604083850312156158ad57600080fd5b6158b68361550a565b60208401519092506001600160401b038111156158d257600080fd5b6158de858286016154c5565b9150509250929050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061591b908301846151a1565b9695505050505050565b60008060006060848603121561593a57600080fd5b83516001600160401b038082111561595157600080fd5b61595d878388016156ee565b9450602086015191508082111561597357600080fd5b50615980868287016156ee565b925050604084015190509250925092565b6001600160a01b038516815265ffffffffffff8416602082015263ffffffff8316604082015260806060820181905260009061591b908301846151a1565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eaf57610eaf6159cf565b84815283602082015282604082015260806060820152600061591b60808301846151a1565b60008060408385031215615a3057600080fd5b82516001600160401b0380821115615a4757600080fd5b615a53868387016156ee565b93506020850151915080821115615a6957600080fd5b506158de858286016156ee565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610eaf57610eaf6159cf565b600082615ac057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201615ad757615ad76159cf565b5060010190565b81810381811115610eaf57610eaf6159cf565b6001600160a01b03858116825284166020820152604081018390526080810160028310615b2057615b2061514c565b82606083015295945050505050565b604081526000615b4260408301856151a1565b8281036020840152614d8681856151a1565b6001600160a01b03831681526040602082018190526000906117f690830184614ec2565b83815260608101615b8c6020830185615162565b826040830152949350505050565b8681526000602060018060a01b0388168184015260c06040840152615bc260c08401886151a1565b838103606085015286518082528288019183019060005b81811015615bf557835183529284019291840191600101615bd9565b5050608085019690965250505060a00152949350505050565b60008251615c20818460208701614e9e565b919091019291505056fe8e8addaac431662b768d45375ef48133b8bad0daad5ce4096fd41007e8d31a8771840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc2b53661063988f1ad36e0a49d4d9a6a3106652aaeed2be542c8691d5f5fd168b56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b7a264697066735822122039d2a325e8cafd5bd55c11631394c0223daef90ad873d7bb6c432af04b6967a564736f6c63430008140033",
  "deployedBytecode": "0x6080604052600436106103c55760003560e01c806301ffc9a7146103ca57806302a251a3146103ff578063059e952b1461042257806306f3f9e61461045a5780630a0e74ef1461047c5780630eca87fb1461049c57806319e6e158146104bc578063248a9ca3146104dc578063291605f7146104fc5780632f2ff15d14610529578063300973771461054957806333727c4d146105695780633469f6e21461058957806336568abe146105a95780633b395cbe146105c95780633d4fd3c7146105e95780633e4f49e614610609578063412caf0b1461063657806342707a43146106635780634385963214610683578063498d91bf146106a35780634bb5181a146106c35780634bf5d7e9146106e35780634cadad2f146107055780634f1ef286146107255780634fa76ec91461073857806352d1902d1461074d57806353ed63991461076257806354fd4d5014610782578063561b64ef146107ad57806357181609146107c257806359372812146107e257806359529edd146107f75780635dbdba6e146108175780635fb263671461083757806360c4247f146108575780636282773314610877578063673fc7241461088c57806374038935146108ac57806378a81336146108cc5780637ace2485146108ec578063802d27091461090c57806382afd23b1461092c578063836761e01461094c5780638a829eda1461096c5780638ab52d4b1461098c5780638f1327c0146109a157806391d14854146109fa57806391ddadf414610a1a5780639382c81814610a3c578063952f213314610a5c57806397c3d33414610a7e5780639aeb962b14610a935780639cbe5efd14610ab3578063a022756b14610ac8578063a217fddf14610add578063a461a94d14610af2578063a56b576514610b12578063a5ae08e914610b32578063a7713a7014610738578063aa86328614610b52578063abc517fd14610b72578063ad3cb1cc14610b87578063b25d6f6214610bb8578063b3c93dab14610bd8578063bb7de6d414610bf8578063bd85948c14610c0d578063be2a9f8f14610c22578063bed7301014610c42578063c048f6c914610c62578063cd669a7214610c82578063cfea80ed14610ca4578063d06efeda14610cc4578063d3a368bd14610ce4578063d4a8dd9814610d04578063d547741f14610d24578063d68b4c3614610d44578063e125f74e14610d64578063e540d01d14610d86578063eb9019d414610da6578063f36c8f5c14610dc6578063f530108f14610de8578063f5fae13614610e08578063f72c0d8b14610e28578063f8ce560a14610e4a578063fb03ec6f14610e6a575b600080fd5b3480156103d657600080fd5b506103ea6103e5366004614e2a565b610e8a565b60405190151581526020015b60405180910390f35b34801561040b57600080fd5b50610414610eb5565b6040519081526020016103f6565b34801561042e57600080fd5b5061044261043d366004614e68565b610f29565b6040516001600160d01b0390911681526020016103f6565b34801561046657600080fd5b5061047a610475366004614e85565b610fa4565b005b34801561048857600080fd5b50610414610497366004614e85565b6110a5565b3480156104a857600080fd5b506104146104b7366004614e85565b61111d565b3480156104c857600080fd5b506104146104d7366004614e85565b611158565b3480156104e857600080fd5b506104146104f7366004614e85565b611193565b34801561050857600080fd5b5061051c610517366004614e85565b6111b3565b6040516103f69190614eee565b34801561053557600080fd5b5061047a610544366004614fc0565b61122e565b34801561055557600080fd5b50610414610564366004614e85565b611250565b34801561057557600080fd5b506103ea610584366004614e85565b61128b565b34801561059557600080fd5b5061047a6105a4366004614e85565b611303565b3480156105b557600080fd5b5061047a6105c4366004614fc0565b611392565b3480156105d557600080fd5b5061047a6105e43660046150ec565b6113ca565b3480156105f557600080fd5b506103ea610604366004615120565b611416565b34801561061557600080fd5b50610629610624366004614e85565b6114a1565b6040516103f69190615176565b34801561064257600080fd5b50610656610651366004615184565b6116ea565b6040516103f691906151dc565b34801561066f57600080fd5b506103ea61067e3660046151ef565b611769565b34801561068f57600080fd5b506103ea61069e366004614fc0565b6117fe565b3480156106af57600080fd5b506104146106be366004614e85565b61183a565b3480156106cf57600080fd5b506104146106de366004615227565b611875565b3480156106ef57600080fd5b506106f86118f2565b6040516103f69190615249565b34801561071157600080fd5b50610414610720366004615120565b611965565b61047a610733366004615283565b611971565b34801561074457600080fd5b50610414611990565b34801561075957600080fd5b506104146119db565b34801561076e57600080fd5b5061047a61077d366004615310565b6119f8565b34801561078e57600080fd5b50604080518082019091526002815261031360f41b60208201526106f8565b3480156107b957600080fd5b50610414611c43565b3480156107ce57600080fd5b5061047a6107dd366004615184565b611c8e565b3480156107ee57600080fd5b50610414611cdd565b34801561080357600080fd5b50610414610812366004614e85565b611d28565b34801561082357600080fd5b5061047a610832366004615184565b611d36565b34801561084357600080fd5b506103ea610852366004615184565b611d85565b34801561086357600080fd5b50610414610872366004614e85565b611e44565b34801561088357600080fd5b50610414611e7f565b34801561089857600080fd5b5061047a6108a7366004615184565b611eca565b3480156108b857600080fd5b5061047a6108c7366004614e85565b61207c565b3480156108d857600080fd5b5061047a6108e7366004615184565b6120cc565b3480156108f857600080fd5b50610656610907366004614e85565b61211b565b34801561091857600080fd5b506103ea610927366004615184565b612156565b34801561093857600080fd5b506103ea610947366004614e85565b612190565b34801561095857600080fd5b5061047a610967366004614e85565b6121b4565b34801561097857600080fd5b5061047a610987366004615184565b612204565b34801561099857600080fd5b506104146123cd565b3480156109ad57600080fd5b506109c16109bc366004614e85565b612418565b6040805182516001600160a01b0316815260208084015165ffffffffffff16908201529181015163ffffffff16908201526060016103f6565b348015610a0657600080fd5b506103ea610a15366004614fc0565b6124a5565b348015610a2657600080fd5b50610a2f6124db565b6040516103f691906153d2565b348015610a4857600080fd5b5061047a610a57366004614e85565b61254a565b348015610a6857600080fd5b50610414600080516020615ccb83398151915281565b348015610a8a57600080fd5b5061041461259a565b348015610a9f57600080fd5b506103ea610aae366004615184565b6125e5565b348015610abf57600080fd5b5061041461261f565b348015610ad457600080fd5b5061044261266a565b348015610ae957600080fd5b50610414600081565b348015610afe57600080fd5b506103ea610b0d3660046153e5565b61276e565b348015610b1e57600080fd5b50610414610b2d366004615120565b6127aa565b348015610b3e57600080fd5b5061047a610b4d366004615120565b612804565b348015610b5e57600080fd5b5061047a610b6d366004615120565b612d7c565b348015610b7e57600080fd5b50610414612f9e565b348015610b9357600080fd5b506106f8604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610bc457600080fd5b5061047a610bd3366004615184565b612fe9565b348015610be457600080fd5b5061047a610bf3366004615184565b613038565b348015610c0457600080fd5b50610414613087565b348015610c1957600080fd5b506104146130d2565b348015610c2e57600080fd5b5061047a610c3d366004615120565b6137b3565b348015610c4e57600080fd5b50610414610c5d366004615227565b613fdf565b348015610c6e57600080fd5b5061047a610c7d366004615184565b61401b565b348015610c8e57600080fd5b50610414600080516020615cab83398151915281565b348015610cb057600080fd5b506103ea610cbf366004615184565b61406a565b348015610cd057600080fd5b50610414610cdf366004614e85565b614124565b348015610cf057600080fd5b50610414610cff366004614e85565b61415f565b348015610d1057600080fd5b506103ea610d1f366004614e85565b61419a565b348015610d3057600080fd5b5061047a610d3f366004614fc0565b6141e0565b348015610d5057600080fd5b506103ea610d5f366004615227565b6141fc565b348015610d7057600080fd5b50610d79614259565b6040516103f69190615413565b348015610d9257600080fd5b5061047a610da1366004615439565b614275565b348015610db257600080fd5b50610414610dc1366004615120565b614357565b348015610dd257600080fd5b50610414600080516020615c4b83398151915281565b348015610df457600080fd5b5061047a610e03366004615184565b614393565b348015610e1457600080fd5b5061047a610e23366004614e85565b6143e2565b348015610e3457600080fd5b50610414600080516020615c6b83398151915281565b348015610e5657600080fd5b50610414610e65366004614e85565b614432565b348015610e7657600080fd5b50610414610e85366004614e85565b61446d565b60006001600160e01b03198216639da99b3f60e01b1480610eaf5750610eaf826144a8565b92915050565b600073__$e74cba849739aecfa9bf3b6281c0831878$__6302a251a36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190615456565b905090565b60405163059e952b60e01b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__9063059e952b90610f639085906004016153d2565b602060405180830381865af4158015610f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf919061546f565b600080516020615c4b833981519152610fbc816144dd565b73__$e7d0f1dc0c8caff7791d9dd32970050ea7$__63bd88fe328373__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110449190615498565b6040516001600160e01b031960e085901b168152600481019290925265ffffffffffff1660248201526044015b60006040518083038186803b15801561108957600080fd5b505af415801561109d573d6000803e3d6000fd5b505050505050565b604051630a0e74ef60e01b81526004810182905260009073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90630a0e74ef906024015b602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190615456565b604051630eca87fb60e01b81526004810182905260009073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90630eca87fb906024016110dc565b60405163033cdc2b60e31b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__906319e6e158906024016110dc565b60008061119e6144ea565b60009384526020525050604090206001015490565b60405163291605f760e01b81526004810182905260609073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063291605f790602401600060405180830381865af4158015611206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eaf919081019061551a565b61123782611193565b611240816144dd565b61124a838361450e565b50505050565b604051633009737760e01b81526004810182905260009073__$70f75f99fe6661499ece4b8956af59cd6c$__906330097377906024016110dc565b6040516333727c4d60e01b81526004810182905260009073__$70f75f99fe6661499ece4b8956af59cd6c$__906333727c4d906024015b602060405180830381865af41580156112df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf919061565d565b73__$70f75f99fe6661499ece4b8956af59cd6c$__6309d3c59b82611327846114a1565b60028111156113385761133861514c565b61134185612190565b6040518463ffffffff1660e01b815260040161135f93929190615678565b60006040518083038186803b15801561137757600080fd5b505af415801561138b573d6000803e3d6000fd5b5050505050565b6001600160a01b03811633146113bb5760405163334bd91960e11b815260040160405180910390fd5b6113c582826145af565b505050565b73__$24ed9c895b3ab1d429967676414af5d94a$__63642998816113ec614627565b546001600160a01b031633846040518463ffffffff1660e01b815260040161135f93929190615693565b600073__$24ed9c895b3ab1d429967676414af5d94a$__631f59dfd78461143c85614124565b6040518363ffffffff1660e01b81526004016114599291906156bf565b602060405180830381865af4158015611476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a919061565d565b9392505050565b6040516368377f6d60e11b815260048101829052600090819073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d06efeda90602401602060405180830381865af41580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151a9190615456565b905080600003611545576040516333b4e31b60e21b8152600481018490526024015b60405180910390fd5b600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b49190615498565b65ffffffffffff169050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63d3a368bd866040518263ffffffff1660e01b81526004016115f991815260200190565b602060405180830381865af4158015611616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163a9190615456565b905081811061164e57506000949350505050565b73__$04e71bdb39671a9b319808db351dce05d3$__63adf865238661167286614432565b6040518363ffffffff1660e01b815260040161168f9291906156e0565b602060405180830381865af41580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d0919061565d565b6116df57506001949350505050565b506002949350505050565b60405163412caf0b60e01b815260609073__$24ed9c895b3ab1d429967676414af5d94a$__9063412caf0b90611724908590600401615413565b600060405180830381865af4158015611741573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eaf9190810190615749565b6040516342707a4360e01b8152600481018490526001600160a01b03831660248201526044810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__906342707a4390606401602060405180830381865af41580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f6919061565d565b949350505050565b6040516321c2cb1960e11b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90634385963290611459908690869060040161577d565b60405163498d91bf60e01b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__9063498d91bf906024016110dc565b6040516325da8c0d60e11b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90634bb5181a906118b190869086906004016156e0565b602060405180830381865af41580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615456565b606073__$95674d662a270791c819f82956386ae379$__634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865af415801561193d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190615794565b600061149a8383614357565b61197961464b565b611982826146f2565b61198c828261470a565b5050565b600073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__63a7713a706040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b60006119e56147be565b50600080516020615c8b83398151915290565b8051825114611a6d5760405162461bcd60e51b815260206004820152603b60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a20617070732060448201527a0c2dcc840eecad2ced0e8e640d8cadccee8d040dad2e6dac2e8c6d602b1b606482015260840161153c565b6000825111611ad55760405162461bcd60e51b815260206004820152602e60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a206e6f20617060448201526d3839903a37903b37ba32903337b960911b606482015260840161153c565b3063a461a94d33611aec611ae7611c43565b614807565b6040518363ffffffff1660e01b8152600401611b099291906156bf565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a919061565d565b15611b6a57336040516305b27abd60e01b815260040161153c9190615413565b6000611b74614627565b600601546001600160a01b031690508015611c2b5760006001600160a01b0382166318be49d933611ba488614124565b6040518363ffffffff1660e01b8152600401611bc19291906157c8565b602060405180830381865afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0291906157e1565b6001600160a01b031614611c2b573360405163640ed18360e01b815260040161153c9190615413565b611c343361406a565b5061124a33858585600061483e565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63561b64ef6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080516020615ccb833981519152611ca6816144dd565b604051632b9f45b760e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90632b9f45b790611071908590600401615413565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__63593728126040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000610eaf610e6583614124565b600080516020615ccb833981519152611d4e816144dd565b604051630e0bea3b60e21b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063382fa8ec90611071908590600401615413565b600080611d90614627565b60010160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e089190615456565b604051631f59dfd760e01b815290915073__$24ed9c895b3ab1d429967676414af5d94a$__90631f59dfd79061145990869085906004016156bf565b6040516360c4247f60e01b81526004810182905260009073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__906360c4247f906024016110dc565b600073__$04e71bdb39671a9b319808db351dce05d3$__63628277336040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000611ed4614627565b600601546001600160a01b031690508015801590611efa5750336001600160a01b038216145b611f585760405162461bcd60e51b815260206004820152602960248201527f58416c6c6f636174696f6e566f74696e673a206e6f74206e6176696761746f7260448201526820726567697374727960b81b606482015260840161153c565b604051632947884560e11b815273__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a90611f8f908590600401615413565b602060405180830381865af4158015611fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd0919061565d565b1561198c5773__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308473__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561203a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205e9190615498565b6040518463ffffffff1660e01b8152600401611071939291906157fe565b600080516020615c4b833981519152612094816144dd565b604051637403893560e01b81526004810183905273__$36f22459ee3e33aa9c0be04d35fbeab80d$__90637403893590602401611071565b600080516020615ccb8339815191526120e4816144dd565b6040516332ea3f7360e11b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__906365d47ee690611071908590600401615413565b604051637ace248560e01b81526004810182905260609073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__90637ace248590602401611724565b604051632947884560e11b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a906112c2908590600401615413565b60008061219c836114a1565b60028111156121ad576121ad61514c565b1492915050565b600080516020615c4b8339815191526121cc816144dd565b60405163041b3b0f60e51b81526004810183905273__$04e71bdb39671a9b319808db351dce05d3$__9063836761e090602401611071565b336001600160a01b0382161461222f573360405163065ece9760e51b815260040161153c9190615413565b6000612239614627565b600601546001600160a01b031690508015612368576040516353127ad560e11b81526001600160a01b0382169063a624f5aa9061227a908590600401615413565b602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb919061565d565b156122db5781604051638523c47f60e01b815260040161153c9190615413565b604051633e28391d60e01b81526001600160a01b03821690633e28391d90612307908590600401615413565b602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612348919061565d565b15612368578160405163640ed18360e01b815260040161153c9190615413565b73__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308473__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561203a573d6000803e3d6000fd5b600073__$36f22459ee3e33aa9c0be04d35fbeab80d$__638ab52d4b6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6040805160608101825260008082526020820181905281830152905163023c4c9f60e61b81526004810183905273__$ee22ebed0dbdcceb519aa1d808f0526e6a$__90638f1327c090602401606060405180830381865af4158015612481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190615829565b6000806124b06144ea565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612526573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190615498565b600080516020615c4b833981519152612562816144dd565b604051631270590360e31b81526004810183905273__$e74cba849739aecfa9bf3b6281c0831878$__90639382c81890602401611071565b600073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__6397c3d3346040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b604051639aeb962b60e01b815260009073__$04e71bdb39671a9b319808db351dce05d3$__90639aeb962b906112c2908590600401615413565b600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080612675614627565b60010160009054906101000a90046001600160a01b03166001600160a01b031663c66966b76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed9190615456565b60405163059e952b60e01b815290915073__$24ed9c895b3ab1d429967676414af5d94a$__9063059e952b906127279084906004016153d2565b602060405180830381865af4158015612744573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612768919061546f565b91505090565b604051631f59dfd760e01b815260009073__$24ed9c895b3ab1d429967676414af5d94a$__90631f59dfd79061145990869086906004016156bf565b60006127b4614627565b60049081015460405163a56b576560e01b81526001600160a01b039091169163a56b5765916127e79187918791016157c8565b602060405180830381865afa1580156118ce573d6000803e3d6000fd5b3063a461a94d83612817611ae785614124565b6040518363ffffffff1660e01b81526004016128349291906156bf565b602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612875919061565d565b6128945781604051632b8b7c8960e01b815260040161153c9190615413565b61289e818361485d565b156128c0578181604051630a90bd6360e11b815260040161153c9291906157c8565b6128ca81836148a7565b60006128d4614627565b600301546001600160a01b031663d0ebb0ee846128f2611ae7611c43565b6040518363ffffffff1660e01b815260040161290f9291906156bf565b600060405180830381865afa15801561292c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612954919081019061589a565b509050600073__$24ed9c895b3ab1d429967676414af5d94a$__63412caf0b856040518263ffffffff1660e01b81526004016129909190615413565b600060405180830381865af41580156129ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129d59190810190615749565b9050600080600073__$24ed9c895b3ab1d429967676414af5d94a$__63ea66e04a308989886040518563ffffffff1660e01b8152600401612a1994939291906158e8565b600060405180830381865af4158015612a36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a5e9190810190615925565b925092509250841580612a7057508251155b15612cfc57604051632947884560e11b815273__$24ed9c895b3ab1d429967676414af5d94a$__9063528f108a90612aac908a90600401615413565b602060405180830381865af4158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed919061565d565b15612c385773__$24ed9c895b3ab1d429967676414af5d94a$__63217940a6308973__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b9190615498565b6040518463ffffffff1660e01b8152600401612b99939291906157fe565b60006040518083038186803b158015612bb157600080fd5b505af4158015612bc5573d6000803e3d6000fd5b50505050612bd1614627565b600501546040516373eff33960e11b81526001600160a01b039091169063e7dfe67290612c059089906001906004016156e0565b600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505050505b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690612c719089908b9060040161577d565b60006040518083038186803b158015612c8957600080fd5b505af4158015612c9d573d6000803e3d6000fd5b50508451604080518915158152602081019290925281018490528892506001600160a01b038a1691507f55b62c33ca46df94310e16fc7e52e8ed456d93a5f21b1e7b5b4c2428905ddebc9060600160405180910390a350505050505050565b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690612d359089908b9060040161577d565b60006040518083038186803b158015612d4d57600080fd5b505af4158015612d61573d6000803e3d6000fd5b50505050612d7387878585600161483e565b50505050505050565b600080516020615c6b833981519152612d94816144dd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460089190600160401b900460ff1680612ddd575080546001600160401b03808416911610155b15612dfb5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b1781556001600160a01b038516612e865760405162461bcd60e51b815260206004820152602d60248201527f58416c6c6f636174696f6e566f74696e673a20696e76616c6964206e6176696760448201526c61746f7220726567697374727960981b606482015260840161153c565b60405163ce396b1f60e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063ce396b1f90612ebd908890600401615413565b60006040518083038186803b158015612ed557600080fd5b505af4158015612ee9573d6000803e3d6000fd5b5050604051631270590360e31b81526004810187905273__$e74cba849739aecfa9bf3b6281c0831878$__9250639382c818915060240160006040518083038186803b158015612f3857600080fd5b505af4158015612f4c573d6000803e3d6000fd5b5050825460ff60401b1916835550506040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b600073__$e74cba849739aecfa9bf3b6281c0831878$__63abc517fd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b600080516020615ccb833981519152613001816144dd565b60405163358e7d9760e21b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063d639f65c90611071908590600401615413565b600080516020615ccb833981519152613050816144dd565b604051634784a11360e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90634784a11390611071908590600401615413565b600073__$36f22459ee3e33aa9c0be04d35fbeab80d$__63bb7de6d46040518163ffffffff1660e01b8152600401602060405180830381865af4158015610f00573d6000803e3d6000fd5b6000600080516020615cab8339815191526130ec816144dd565b6000339050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865af415801561313c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131609190615456565b905080156131e45761317181612190565b156131e45760405162461bcd60e51b815260206004820152603f60248201527f58416c6c6f636174696f6e566f74696e67476f7665726e6f723a20746865726560448201527f2063616e206265206f6e6c79206f6e6520726f756e64207065722074696d6500606482015260840161153c565b60008111801561326557506040516333727c4d60e01b81526004810182905273__$70f75f99fe6661499ece4b8956af59cd6c$__906333727c4d90602401602060405180830381865af415801561323f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613263919061565d565b155b156132f75773__$70f75f99fe6661499ece4b8956af59cd6c$__6309d3c59b8261328e846114a1565b600281111561329f5761329f61514c565b6132a885612190565b6040518463ffffffff1660e01b81526004016132c693929190615678565b60006040518083038186803b1580156132de57600080fd5b505af41580156132f2573d6000803e3d6000fd5b505050505b6000613301614627565b546040805163c04cff1960e01b815290516001600160a01b039092169163c04cff19916004808201926000929091908290030181865afa158015613349573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133719190810190615749565b9050600073__$95674d662a270791c819f82956386ae379$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156133be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e29190615498565b9050600073__$e74cba849739aecfa9bf3b6281c0831878$__6302a251a36040518163ffffffff1660e01b8152600401602060405180830381865af415801561342f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134539190615456565b9050600073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__637ad59a23878585886040518563ffffffff1660e01b81526004016134949493929190615991565b602060405180830381865af41580156134b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d59190615456565b604051633ed9b0ff60e11b81526004810182905290915073__$36f22459ee3e33aa9c0be04d35fbeab80d$__90637db361fe9060240160006040518083038186803b15801561352357600080fd5b505af4158015613537573d6000803e3d6000fd5b505060405163059e952b60e01b81526000925073__$24ed9c895b3ab1d429967676414af5d94a$__915063059e952b906135759087906004016153d2565b602060405180830381865af4158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b6919061546f565b905060006135c2614627565b600601546001600160a01b031690506000811561364b57604051630a5515e360e01b81526001600160a01b03831690630a5515e3906136059089906004016153d2565b602060405180830381865afa158015613622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613646919061546f565b61364e565b60005b905060006136686001600160d01b038084169086166159e5565b905060606000613676614627565b600401546001600160a01b03169050801580159061369d57506000846001600160d01b0316115b1561370b57806001600160a01b0316635584c4f96040518163ffffffff1660e01b8152600401600060405180830381865afa1580156136e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137089190810190615749565b91505b600083118061371b575060008251115b156137a157600061372a614627565b6005015460405163bfaabf3160e01b81526001600160a01b039091169150819063bfaabf319061376d908b9088906001600160d01b038b169089906004016159f8565b600060405180830381600087803b15801561378757600080fd5b505af115801561379b573d6000803e3d6000fd5b50505050505b50949b50505050505050505050505090565b6137c6816137c16000614925565b614948565b5060006137d1614627565b600601546001600160a01b0316905060006137eb83614124565b90506000826001600160a01b03166318be49d986846040518363ffffffff1660e01b815260040161381d9291906157c8565b602060405180830381865afa15801561383a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385e91906157e1565b90506001600160a01b0381166138895784604051630d1c9abb60e31b815260040161153c9190615413565b613893848661485d565b156138b5578484604051630a90bd6360e11b815260040161153c9291906157c8565b60006138bf614627565b600501546001600160a01b031690506138d782614987565b156139dc57604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f6906139159088908a9060040161577d565b60006040518083038186803b15801561392d57600080fd5b505af4158015613941573d6000803e3d6000fd5b5050604051637b8fee0b60e11b81526001600160a01b038416925063f71fdc1691506139739088908a9060040161577d565b600060405180830381600087803b15801561398d57600080fd5b505af11580156139a1573d6000803e3d6000fd5b5050505084826001600160a01b0316876001600160a01b0316600080516020615c2b83398151915260405160405180910390a4505050505050565b604051630e53e11560e21b81526001600160a01b0385169063394f845490613a0a90859089906004016157c8565b602060405180830381865afa158015613a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4b919061565d565b613a9157613a58856149df565b604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f6906139159088908a9060040161577d565b6000613a9b614627565b600301546001600160a01b031663d0ebb0ee88613ab787614807565b6040518363ffffffff1660e01b8152600401613ad49291906156bf565b600060405180830381865afa158015613af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b19919081019061589a565b50905080613c2257604051633757d2fb60e11b815273__$04e71bdb39671a9b319808db351dce05d3$__90636eafa5f690613b5a9089908b9060040161577d565b60006040518083038186803b158015613b7257600080fd5b505af4158015613b86573d6000803e3d6000fd5b5050604051637b8fee0b60e11b81526001600160a01b038516925063f71fdc169150613bb89089908b9060040161577d565b600060405180830381600087803b158015613bd257600080fd5b505af1158015613be6573d6000803e3d6000fd5b5050505085836001600160a01b0316886001600160a01b0316600080516020615c2b83398151915260405160405180910390a450505050505050565b613c2c86886148a7565b600080866001600160a01b031663f232dd60868a6040518363ffffffff1660e01b8152600401613c5d9291906157c8565b600060405180830381865afa158015613c7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ca29190810190615a1d565b915091506000876001600160a01b031663c61c06e78b896040518363ffffffff1660e01b8152600401613cd69291906157c8565b602060405180830381865afa158015613cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d179190615456565b90506000886001600160a01b031663e1f1c4a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d7d9190615456565b9050600083516001600160401b03811115613d9a57613d9a614ff0565b604051908082528060200260200182016040528015613dc3578160200160208202803683370190505b5090506000805b8551811015613e5a5783868281518110613de657613de6615a76565b602002602001015186613df99190615a8c565b613e039190615aa3565b838281518110613e1557613e15615a76565b602002602001018181525050828181518110613e3357613e33615a76565b602002602001015182613e4691906159e5565b915080613e5281615ac5565b915050613dca565b508381108015613e6b575060008251115b15613ea557613e7a8185615ade565b82600081518110613e8d57613e8d615a76565b60200260200101818151613ea191906159e5565b9052505b73__$04e71bdb39671a9b319808db351dce05d3$__636eafa5f68d8f6040518363ffffffff1660e01b8152600401613ede92919061577d565b60006040518083038186803b158015613ef657600080fd5b505af4158015613f0a573d6000803e3d6000fd5b50505050613f1d8d8d8885886000614af2565b6001600160a01b038816636cf88e73338f8f60006040518563ffffffff1660e01b8152600401613f509493929190615af1565b600060405180830381600087803b158015613f6a57600080fd5b505af1158015613f7e573d6000803e3d6000fd5b505050508b896001600160a01b03168e6001600160a01b03167f28e698009c3f75a566409d95005b1906bbae152060ccf899a822777dd147950c8986604051613fc8929190615b2f565b60405180910390a450505050505050505050505050565b604051630bed730160e41b815260009073__$04e71bdb39671a9b319808db351dce05d3$__9063bed73010906118b190869086906004016156e0565b600080516020615ccb833981519152614033816144dd565b604051637d4b948360e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__90637d4b948390611071908590600401615413565b6000806000614077614627565b600301546001600160a01b031663d0ebb0ee85614095611ae7611c43565b6040518363ffffffff1660e01b81526004016140b29291906156bf565b600060405180830381865afa1580156140cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140f7919081019061589a565b915091508161411d5783816040516344c4534960e01b815260040161153c929190615b54565b5092915050565b6040516368377f6d60e11b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d06efeda906024016110dc565b60405163d3a368bd60e01b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d3a368bd906024016110dc565b600073__$04e71bdb39671a9b319808db351dce05d3$__63754ba25d836141c3610e6586614124565b6040518363ffffffff1660e01b81526004016112c29291906156e0565b6141e982611193565b6141f2816144dd565b61124a83836145af565b6000614206614627565b546001600160a01b031663d2570b948461421f85614124565b6040518363ffffffff1660e01b815260040161423c9291906156e0565b602060405180830381865afa158015611476573d6000803e3d6000fd5b6000614263614627565b600601546001600160a01b0316919050565b600080516020615c4b83398151915261428d816144dd565b73__$e74cba849739aecfa9bf3b6281c0831878$__630ff235a9836142b0614627565b60010160009054906101000a90046001600160a01b03166001600160a01b0316635bec4cb46040518163ffffffff1660e01b8152600401602060405180830381865afa158015614304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143289190615456565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401611071565b604051633ae4067560e21b815260009073__$95674d662a270791c819f82956386ae379$__9063eb9019d4906118b190869086906004016157c8565b600080516020615ccb8339815191526143ab816144dd565b60405163ce396b1f60e01b815273__$bf28f2fe6ea34a72b5bcc07a968e709e76$__9063ce396b1f90611071908590600401615413565b600080516020615c4b8339815191526143fa816144dd565b604051637afd709b60e11b81526004810183905273__$36f22459ee3e33aa9c0be04d35fbeab80d$__9063f5fae13690602401611071565b604051637c672b0560e11b81526004810182905260009073__$e7d0f1dc0c8caff7791d9dd32970050ea7$__9063f8ce560a906024016110dc565b60405163fb03ec6f60e01b81526004810182905260009073__$04e71bdb39671a9b319808db351dce05d3$__9063fb03ec6f906024016110dc565b60006001600160e01b03198216637965db0b60e01b1480610eaf57506301ffc9a760e01b6001600160e01b0319831614610eaf565b6144e78133614c3c565b50565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6000806145196144ea565b905061452584846124a5565b6145a5576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561455b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610eaf565b6000915050610eaf565b6000806145ba6144ea565b90506145c684846124a5565b156145a5576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610eaf565b7f1da8cbbb2b12987a437595605432a6bbe84c08e9685afaaee593f05659f50d0090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806146d257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166146c6600080516020615c8b833981519152546001600160a01b031690565b6001600160a01b031614155b156146f05760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020615c6b83398151915261198c816144dd565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614764575060408051601f3d908101601f1916820190925261476191810190615456565b60015b6147835781604051634c9c8ce360e01b815260040161153c9190615413565b600080516020615c8b83398151915281146147b457604051632a87526960e21b81526004810182905260240161153c565b6113c58383614c67565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146146f05760405163703e46dd60e11b815260040160405180910390fd5b600065ffffffffffff82111561483a576040516306dfcc6560e41b8152603060048201526024810183905260440161153c565b5090565b600061484d86610dc187614124565b905061109d868686868587614af2565b60009182527fa760c041d4a9fa3a2c67d0d325f3592ba2c7e4330f7ba2283ebf9fe63913d505602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6148af614627565b600501546001600160a01b031663e5ed920b8383336040516001600160e01b031960e086901b16815260048101939093526001600160a01b03918216602484015216604482015260640160006040518083038186803b15801561491157600080fd5b505afa15801561109d573d6000803e3d6000fd5b60008160028111156149395761493961514c565b600160ff919091161b92915050565b600080614954846114a1565b905060008361496283614925565b160361149a578381846040516321b2b5ab60e11b815260040161153c93929190615b78565b6000614991614627565b6006015460405163506b90db60e11b81526001600160a01b039091169063a0d721b6906149c2908590600401615413565b602060405180830381865afa1580156112df573d6000803e3d6000fd5b60405163d3a368bd60e01b81526004810182905260009073__$ee22ebed0dbdcceb519aa1d808f0526e6a$__9063d3a368bd90602401602060405180830381865af4158015614a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a569190615456565b90508073__$e74cba849739aecfa9bf3b6281c0831878$__63abc517fd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015614aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ac69190615456565b614ad090436159e5565b101561198c5760405163474a8edb60e11b81526004810183905260240161153c565b614b00856137c16000614925565b5073__$04e71bdb39671a9b319808db351dce05d3$__63cdc6ac0c8688878787614b298c614124565b6040518763ffffffff1660e01b8152600401614b4a96959493929190615b9a565b60006040518083038186803b158015614b6257600080fd5b505af4158015614b76573d6000803e3d6000fd5b50505050801561109d57614b88614627565b600501546001600160a01b0316636cf88e7333888860006040518563ffffffff1660e01b8152600401614bbe9493929190615af1565b600060405180830381600087803b158015614bd857600080fd5b505af1158015614bec573d6000803e3d6000fd5b5050505084866001600160a01b03167f64dbcb1d23926d04f2fea8c7cc3f5d02846ee1e48940419cf422f69ae35813aa8686604051614c2c929190615b2f565b60405180910390a3505050505050565b614c4682826124a5565b61198c57808260405163e2517d3f60e01b815260040161153c9291906157c8565b614c7082614cbd565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115614cb5576113c58282614d19565b61198c614d8f565b806001600160a01b03163b600003614cea5780604051634c9c8ce360e01b815260040161153c9190615413565b600080516020615c8b83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614d369190615c0e565b600060405180830381855af49150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b5091509150614d86858383614dae565b95945050505050565b34156146f05760405163b398979f60e01b815260040160405180910390fd5b606082614dc357614dbe82614e01565b61149a565b8151158015614dda57506001600160a01b0384163b155b15614dfa5783604051639996b31560e01b815260040161153c9190615413565b508061149a565b805115614e115780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215614e3c57600080fd5b81356001600160e01b03198116811461149a57600080fd5b65ffffffffffff811681146144e757600080fd5b600060208284031215614e7a57600080fd5b813561149a81614e54565b600060208284031215614e9757600080fd5b5035919050565b60005b83811015614eb9578181015183820152602001614ea1565b50506000910152565b60008151808452614eda816020860160208601614e9e565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015614f9d57888303603f19018552815180518452878101516001600160a01b0316888501528681015160c088860181905290614f5682870182614ec2565b91505060608083015186830382880152614f708382614ec2565b6080858101519089015260a094850151151594909701939093525050509386019390860190600101614f15565b509098975050505050505050565b6001600160a01b03811681146144e757600080fd5b60008060408385031215614fd357600080fd5b823591506020830135614fe581614fab565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561502857615028614ff0565b60405290565b604051601f8201601f191681016001600160401b038111828210171561505657615056614ff0565b604052919050565b60006001600160401b0382111561507757615077614ff0565b5060051b60200190565b600082601f83011261509257600080fd5b813560206150a76150a28361505e565b61502e565b82815260059290921b840181019181810190868411156150c657600080fd5b8286015b848110156150e157803583529183019183016150ca565b509695505050505050565b6000602082840312156150fe57600080fd5b81356001600160401b0381111561511457600080fd5b6117f684828501615081565b6000806040838503121561513357600080fd5b823561513e81614fab565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b600381106151725761517261514c565b9052565b60208101610eaf8284615162565b60006020828403121561519657600080fd5b813561149a81614fab565b600081518084526020808501945080840160005b838110156151d1578151875295820195908201906001016151b5565b509495945050505050565b60208152600061149a60208301846151a1565b60008060006060848603121561520457600080fd5b83359250602084013561521681614fab565b929592945050506040919091013590565b6000806040838503121561523a57600080fd5b50508035926020909101359150565b60208152600061149a6020830184614ec2565b60006001600160401b0382111561527557615275614ff0565b50601f01601f191660200190565b6000806040838503121561529657600080fd5b82356152a181614fab565b915060208301356001600160401b038111156152bc57600080fd5b8301601f810185136152cd57600080fd5b80356152db6150a28261525c565b8181528660208385010111156152f057600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060006060848603121561532557600080fd5b833592506020808501356001600160401b038082111561534457600080fd5b61535088838901615081565b9450604087013591508082111561536657600080fd5b508501601f8101871361537857600080fd5b80356153866150a28261505e565b81815260059190911b820183019083810190898311156153a557600080fd5b928401925b828410156153c3578335825292840192908401906153aa565b80955050505050509250925092565b65ffffffffffff91909116815260200190565b600080604083850312156153f857600080fd5b823561540381614fab565b91506020830135614fe581614e54565b6001600160a01b0391909116815260200190565b63ffffffff811681146144e757600080fd5b60006020828403121561544b57600080fd5b813561149a81615427565b60006020828403121561546857600080fd5b5051919050565b60006020828403121561548157600080fd5b81516001600160d01b038116811461149a57600080fd5b6000602082840312156154aa57600080fd5b815161149a81614e54565b80516154c081614fab565b919050565b600082601f8301126154d657600080fd5b81516154e46150a28261525c565b8181528460208386010111156154f957600080fd5b6117f6826020830160208701614e9e565b805180151581146154c057600080fd5b6000602080838503121561552d57600080fd5b82516001600160401b038082111561554457600080fd5b818501915085601f83011261555857600080fd5b81516155666150a28261505e565b81815260059190911b8301840190848101908883111561558557600080fd5b8585015b83811015615650578051858111156155a057600080fd5b860160c0818c03601f190112156155b75760008081fd5b6155bf615006565b88820151815260406155d28184016154b5565b8a830152606080840151898111156155ea5760008081fd5b6155f88f8d838801016154c5565b83850152506080915081840151898111156156135760008081fd5b6156218f8d838801016154c5565b82850152505060a0808401518284015261563d60c0850161550a565b9083015250845250918601918601615589565b5098975050505050505050565b60006020828403121561566f57600080fd5b61149a8261550a565b92835260ff9190911660208301521515604082015260600190565b6001600160a01b03848116825283166020820152606060408201819052600090614d86908301846151a1565b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b918252602082015260400190565b600082601f8301126156ff57600080fd5b8151602061570f6150a28361505e565b82815260059290921b8401810191818101908684111561572e57600080fd5b8286015b848110156150e15780518352918301918301615732565b60006020828403121561575b57600080fd5b81516001600160401b0381111561577157600080fd5b6117f6848285016156ee565b9182526001600160a01b0316602082015260400190565b6000602082840312156157a657600080fd5b81516001600160401b038111156157bc57600080fd5b6117f6848285016154c5565b6001600160a01b03929092168252602082015260400190565b6000602082840312156157f357600080fd5b815161149a81614fab565b6001600160a01b03938416815291909216602082015265ffffffffffff909116604082015260600190565b60006060828403121561583b57600080fd5b604051606081016001600160401b038111828210171561585d5761585d614ff0565b604052825161586b81614fab565b8152602083015161587b81614e54565b6020820152604083015161588e81615427565b60408201529392505050565b600080604083850312156158ad57600080fd5b6158b68361550a565b60208401519092506001600160401b038111156158d257600080fd5b6158de858286016154c5565b9150509250929050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061591b908301846151a1565b9695505050505050565b60008060006060848603121561593a57600080fd5b83516001600160401b038082111561595157600080fd5b61595d878388016156ee565b9450602086015191508082111561597357600080fd5b50615980868287016156ee565b925050604084015190509250925092565b6001600160a01b038516815265ffffffffffff8416602082015263ffffffff8316604082015260806060820181905260009061591b908301846151a1565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eaf57610eaf6159cf565b84815283602082015282604082015260806060820152600061591b60808301846151a1565b60008060408385031215615a3057600080fd5b82516001600160401b0380821115615a4757600080fd5b615a53868387016156ee565b93506020850151915080821115615a6957600080fd5b506158de858286016156ee565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610eaf57610eaf6159cf565b600082615ac057634e487b7160e01b600052601260045260246000fd5b500490565b600060018201615ad757615ad76159cf565b5060010190565b81810381811115610eaf57610eaf6159cf565b6001600160a01b03858116825284166020820152604081018390526080810160028310615b2057615b2061514c565b82606083015295945050505050565b604081526000615b4260408301856151a1565b8281036020840152614d8681856151a1565b6001600160a01b03831681526040602082018190526000906117f690830184614ec2565b83815260608101615b8c6020830185615162565b826040830152949350505050565b8681526000602060018060a01b0388168184015260c06040840152615bc260c08401886151a1565b838103606085015286518082528288019183019060005b81811015615bf557835183529284019291840191600101615bd9565b5050608085019690965250505060a00152949350505050565b60008251615c20818460208701614e9e565b919091019291505056fe8e8addaac431662b768d45375ef48133b8bad0daad5ce4096fd41007e8d31a8771840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc2b53661063988f1ad36e0a49d4d9a6a3106652aaeed2be542c8691d5f5fd168b56af926aa3845d4dc63a6c773ed36f51794728c97ebcd1bf845bcecb16eeb6b7a264697066735822122039d2a325e8cafd5bd55c11631394c0223daef90ad873d7bb6c432af04b6967a564736f6c63430008140033",
  "linkReferences": {
    "contracts/x-allocation-voting-governance/libraries/AutoVotingLogic.sol": {
      "AutoVotingLogic": [
        {
          "length": 20,
          "start": 4159
        },
        {
          "length": 20,
          "start": 5328
        },
        {
          "length": 20,
          "start": 5406
        },
        {
          "length": 20,
          "start": 6144
        },
        {
          "length": 20,
          "start": 7966
        },
        {
          "length": 20,
          "start": 8299
        },
        {
          "length": 20,
          "start": 8411
        },
        {
          "length": 20,
          "start": 8812
        },
        {
          "length": 20,
          "start": 9326
        },
        {
          "length": 20,
          "start": 10243
        },
        {
          "length": 20,
          "start": 10372
        },
        {
          "length": 20,
          "start": 10847
        },
        {
          "length": 20,
          "start": 10978
        },
        {
          "length": 20,
          "start": 11144
        },
        {
          "length": 20,
          "start": 11256
        },
        {
          "length": 20,
          "start": 13904
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/ExternalContractsUtils.sol": {
      "ExternalContractsUtils": [
        {
          "length": 20,
          "start": 7609
        },
        {
          "length": 20,
          "start": 7777
        },
        {
          "length": 20,
          "start": 8695
        },
        {
          "length": 20,
          "start": 12185
        },
        {
          "length": 20,
          "start": 12564
        },
        {
          "length": 20,
          "start": 12643
        },
        {
          "length": 20,
          "start": 16710
        },
        {
          "length": 20,
          "start": 17598
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundEarningsSettingsUtils.sol": {
      "RoundEarningsSettingsUtils": [
        {
          "length": 20,
          "start": 4546
        },
        {
          "length": 20,
          "start": 4666
        },
        {
          "length": 20,
          "start": 8622
        },
        {
          "length": 20,
          "start": 9429
        },
        {
          "length": 20,
          "start": 12687
        },
        {
          "length": 20,
          "start": 13810
        },
        {
          "length": 20,
          "start": 17684
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundFinalizationUtils.sol": {
      "RoundFinalizationUtils": [
        {
          "length": 20,
          "start": 4973
        },
        {
          "length": 20,
          "start": 5032
        },
        {
          "length": 20,
          "start": 5129
        },
        {
          "length": 20,
          "start": 13065
        },
        {
          "length": 20,
          "start": 13168
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundVotesCountingUtils.sol": {
      "RoundVotesCountingUtils": [
        {
          "length": 20,
          "start": 4725
        },
        {
          "length": 20,
          "start": 5972
        },
        {
          "length": 20,
          "start": 6300
        },
        {
          "length": 20,
          "start": 6420
        },
        {
          "length": 20,
          "start": 6487
        },
        {
          "length": 20,
          "start": 6539
        },
        {
          "length": 20,
          "start": 8071
        },
        {
          "length": 20,
          "start": 8934
        },
        {
          "length": 20,
          "start": 9979
        },
        {
          "length": 20,
          "start": 11595
        },
        {
          "length": 20,
          "start": 11791
        },
        {
          "length": 20,
          "start": 14831
        },
        {
          "length": 20,
          "start": 15211
        },
        {
          "length": 20,
          "start": 15412
        },
        {
          "length": 20,
          "start": 16299
        },
        {
          "length": 20,
          "start": 16629
        },
        {
          "length": 20,
          "start": 17058
        },
        {
          "length": 20,
          "start": 17802
        },
        {
          "length": 20,
          "start": 19463
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundsStorageUtils.sol": {
      "RoundsStorageUtils": [
        {
          "length": 20,
          "start": 4816
        },
        {
          "length": 20,
          "start": 5568
        },
        {
          "length": 20,
          "start": 5830
        },
        {
          "length": 20,
          "start": 7499
        },
        {
          "length": 20,
          "start": 7653
        },
        {
          "length": 20,
          "start": 8760
        },
        {
          "length": 20,
          "start": 9547
        },
        {
          "length": 20,
          "start": 10023
        },
        {
          "length": 20,
          "start": 12793
        },
        {
          "length": 20,
          "start": 13661
        },
        {
          "length": 20,
          "start": 16961
        },
        {
          "length": 20,
          "start": 17020
        },
        {
          "length": 20,
          "start": 19196
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotesQuorumFractionUtils.sol": {
      "VotesQuorumFractionUtils": [
        {
          "length": 20,
          "start": 4290
        },
        {
          "length": 20,
          "start": 6808
        },
        {
          "length": 20,
          "start": 8033
        },
        {
          "length": 20,
          "start": 9890
        },
        {
          "length": 20,
          "start": 17743
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotesUtils.sol": {
      "VotesUtils": [
        {
          "length": 20,
          "start": 4317
        },
        {
          "length": 20,
          "start": 5709
        },
        {
          "length": 20,
          "start": 6650
        },
        {
          "length": 20,
          "start": 8439
        },
        {
          "length": 20,
          "start": 9354
        },
        {
          "length": 20,
          "start": 9699
        },
        {
          "length": 20,
          "start": 11284
        },
        {
          "length": 20,
          "start": 13435
        },
        {
          "length": 20,
          "start": 17517
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotingSettingsUtils.sol": {
      "VotingSettingsUtils": [
        {
          "length": 20,
          "start": 4029
        },
        {
          "length": 20,
          "start": 9852
        },
        {
          "length": 20,
          "start": 12293
        },
        {
          "length": 20,
          "start": 12454
        },
        {
          "length": 20,
          "start": 13548
        },
        {
          "length": 20,
          "start": 17299
        },
        {
          "length": 20,
          "start": 19295
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/x-allocation-voting-governance/libraries/AutoVotingLogic.sol": {
      "AutoVotingLogic": [
        {
          "length": 20,
          "start": 3899
        },
        {
          "length": 20,
          "start": 5068
        },
        {
          "length": 20,
          "start": 5146
        },
        {
          "length": 20,
          "start": 5884
        },
        {
          "length": 20,
          "start": 7706
        },
        {
          "length": 20,
          "start": 8039
        },
        {
          "length": 20,
          "start": 8151
        },
        {
          "length": 20,
          "start": 8552
        },
        {
          "length": 20,
          "start": 9066
        },
        {
          "length": 20,
          "start": 9983
        },
        {
          "length": 20,
          "start": 10112
        },
        {
          "length": 20,
          "start": 10587
        },
        {
          "length": 20,
          "start": 10718
        },
        {
          "length": 20,
          "start": 10884
        },
        {
          "length": 20,
          "start": 10996
        },
        {
          "length": 20,
          "start": 13644
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/ExternalContractsUtils.sol": {
      "ExternalContractsUtils": [
        {
          "length": 20,
          "start": 7349
        },
        {
          "length": 20,
          "start": 7517
        },
        {
          "length": 20,
          "start": 8435
        },
        {
          "length": 20,
          "start": 11925
        },
        {
          "length": 20,
          "start": 12304
        },
        {
          "length": 20,
          "start": 12383
        },
        {
          "length": 20,
          "start": 16450
        },
        {
          "length": 20,
          "start": 17338
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundEarningsSettingsUtils.sol": {
      "RoundEarningsSettingsUtils": [
        {
          "length": 20,
          "start": 4286
        },
        {
          "length": 20,
          "start": 4406
        },
        {
          "length": 20,
          "start": 8362
        },
        {
          "length": 20,
          "start": 9169
        },
        {
          "length": 20,
          "start": 12427
        },
        {
          "length": 20,
          "start": 13550
        },
        {
          "length": 20,
          "start": 17424
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundFinalizationUtils.sol": {
      "RoundFinalizationUtils": [
        {
          "length": 20,
          "start": 4713
        },
        {
          "length": 20,
          "start": 4772
        },
        {
          "length": 20,
          "start": 4869
        },
        {
          "length": 20,
          "start": 12805
        },
        {
          "length": 20,
          "start": 12908
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundVotesCountingUtils.sol": {
      "RoundVotesCountingUtils": [
        {
          "length": 20,
          "start": 4465
        },
        {
          "length": 20,
          "start": 5712
        },
        {
          "length": 20,
          "start": 6040
        },
        {
          "length": 20,
          "start": 6160
        },
        {
          "length": 20,
          "start": 6227
        },
        {
          "length": 20,
          "start": 6279
        },
        {
          "length": 20,
          "start": 7811
        },
        {
          "length": 20,
          "start": 8674
        },
        {
          "length": 20,
          "start": 9719
        },
        {
          "length": 20,
          "start": 11335
        },
        {
          "length": 20,
          "start": 11531
        },
        {
          "length": 20,
          "start": 14571
        },
        {
          "length": 20,
          "start": 14951
        },
        {
          "length": 20,
          "start": 15152
        },
        {
          "length": 20,
          "start": 16039
        },
        {
          "length": 20,
          "start": 16369
        },
        {
          "length": 20,
          "start": 16798
        },
        {
          "length": 20,
          "start": 17542
        },
        {
          "length": 20,
          "start": 19203
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/RoundsStorageUtils.sol": {
      "RoundsStorageUtils": [
        {
          "length": 20,
          "start": 4556
        },
        {
          "length": 20,
          "start": 5308
        },
        {
          "length": 20,
          "start": 5570
        },
        {
          "length": 20,
          "start": 7239
        },
        {
          "length": 20,
          "start": 7393
        },
        {
          "length": 20,
          "start": 8500
        },
        {
          "length": 20,
          "start": 9287
        },
        {
          "length": 20,
          "start": 9763
        },
        {
          "length": 20,
          "start": 12533
        },
        {
          "length": 20,
          "start": 13401
        },
        {
          "length": 20,
          "start": 16701
        },
        {
          "length": 20,
          "start": 16760
        },
        {
          "length": 20,
          "start": 18936
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotesQuorumFractionUtils.sol": {
      "VotesQuorumFractionUtils": [
        {
          "length": 20,
          "start": 4030
        },
        {
          "length": 20,
          "start": 6548
        },
        {
          "length": 20,
          "start": 7773
        },
        {
          "length": 20,
          "start": 9630
        },
        {
          "length": 20,
          "start": 17483
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotesUtils.sol": {
      "VotesUtils": [
        {
          "length": 20,
          "start": 4057
        },
        {
          "length": 20,
          "start": 5449
        },
        {
          "length": 20,
          "start": 6390
        },
        {
          "length": 20,
          "start": 8179
        },
        {
          "length": 20,
          "start": 9094
        },
        {
          "length": 20,
          "start": 9439
        },
        {
          "length": 20,
          "start": 11024
        },
        {
          "length": 20,
          "start": 13175
        },
        {
          "length": 20,
          "start": 17257
        }
      ]
    },
    "contracts/x-allocation-voting-governance/libraries/VotingSettingsUtils.sol": {
      "VotingSettingsUtils": [
        {
          "length": 20,
          "start": 3769
        },
        {
          "length": 20,
          "start": 9592
        },
        {
          "length": 20,
          "start": 12033
        },
        {
          "length": 20,
          "start": 12194
        },
        {
          "length": 20,
          "start": 13288
        },
        {
          "length": 20,
          "start": 17039
        },
        {
          "length": 20,
          "start": 19035
        }
      ]
    }
  }
}
