{
  "_format": "hh-sol-artifact-1",
  "contractName": "veUSDToken",
  "sourceName": "contracts/veUSD/veUSDToken.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InitializerAlreadySet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitializerNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEnableMintingRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPauseMintingRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintingAlreadySet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoValidUpdatesProvided",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotAuthorizedInitializer",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldBorrowerOperationsAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newBorrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "BorrowerOperationsAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EIP712DomainChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": "address",
          "name": "_oldStabilityPoolAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newStabilityPoolAddress",
          "type": "address"
        }
      ],
      "name": "StabilityPoolAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDBurnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDMinterChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldVaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newVaultManagerDiamondAddress",
          "type": "address"
        }
      ],
      "name": "VaultManagerDiamondAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "veUSDTokenBalanceUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINT_PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_BURNER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "borrowerOperationsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canMint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "eip712Domain",
      "outputs": [
        {
          "internalType": "bytes1",
          "name": "fields",
          "type": "bytes1"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifyingContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "extensions",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governorAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "vaultManagerDiamondAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stabilityPoolAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "borrowerOperationsAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "governorAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "ownerAndAdminRole",
              "type": "address"
            }
          ],
          "internalType": "struct IveUSDToken_Initializer.InitializerParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolBurner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stabilityPoolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_borrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "migrateProtocolContracts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initializer_",
          "type": "address"
        }
      ],
      "name": "registerInitializer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registeredInitializer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "returnFromPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "sendToPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stabilityPoolAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_canMint",
          "type": "bool"
        }
      ],
      "name": "updateMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultManagerDiamondAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61348180620000f36000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80638f656d2211610191578063b22b7840116100e3578063beb9716d11610097578063d547741f11610071578063d547741f146106a4578063dd62ed3e146106b7578063ffa1ad74146106f057600080fd5b8063beb9716d14610669578063ca15c8731461067e578063d505accf1461069157600080fd5b8063b7f8cf9b116100c8578063b7f8cf9b1461062f578063bb997bac14610643578063bcf47d331461065657600080fd5b8063b22b78401461060a578063b59913471461061d57600080fd5b806395d89b4111610145578063a217fddf1161011f578063a217fddf146105dc578063a457c2d7146105e4578063a9059cbb146105f757600080fd5b806395d89b411461059a5780639d1b636c146105a25780639dc29fac146105c957600080fd5b806390acdb0b1161017657806390acdb0b1461052757806391d148541461054e578063933cc28f1461058757600080fd5b80638f656d22146105015780639010d07c1461051457600080fd5b80633644e5151161024a578063472fa5cb116101fe5780637ecebe00116101d85780637ecebe00146104ac57806384b0196e146104bf5780638a1d7fd0146104da57600080fd5b8063472fa5cb1461045c57806352033ede1461046f57806370a082311461048357600080fd5b8063395093511161022f578063395093511461042357806340c10f1914610436578063460ab5ad1461044957600080fd5b80633644e5151461040857806336568abe1461041057600080fd5b806320c582be116102ac578063276f1c4111610286578063276f1c41146103d25780632f2ff15d146103e6578063313ce567146103f957600080fd5b806320c582be1461038757806323b872dd1461039c578063248a9ca3146103af57600080fd5b8063095ea7b3116102dd578063095ea7b3146103365780630b622ab21461034957806318160ddd1461037557600080fd5b806301ffc9a7146102f957806306fdde0314610321575b600080fd5b61030c610307366004612dda565b61072c565b60405190151581526020015b60405180910390f35b610329610770565b6040516103189190612e54565b61030c610344366004612e83565b610802565b6101645461035d906001600160a01b031681565b6040516001600160a01b039091168152602001610318565b6035545b604051908152602001610318565b61039a610395366004612ead565b61081a565b005b61030c6103aa366004612ead565b610832565b6103796103bd366004612ee9565b600090815260fe602052604090206001015490565b6101665461035d906001600160a01b031681565b61039a6103f4366004612f02565b610850565b60405160128152602001610318565b6103796108c2565b61039a61041e366004612f02565b6108d1565b61030c610431366004612e83565b61095e565b61039a610444366004612e83565b61099d565b61039a610457366004612f2e565b6109b7565b61030c61046a366004612f71565b610c02565b6101635461035d906001600160a01b031681565b610379610491366004612f71565b6001600160a01b031660009081526033602052604090205490565b6103796104ba366004612f71565b610c42565b6104c7610c60565b6040516103189796959493929190612f8c565b6103797fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61039a61050f366004613054565b610d22565b61035d6105223660046130e2565b610ecc565b6103797feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b61030c61055c366004612f02565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61030c610595366004612f71565b610eec565b610329610f2c565b6103797ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b61039a6105d7366004612e83565b610f3b565b610379600081565b61030c6105f2366004612e83565b610f4d565b61030c610605366004612e83565b611002565b61039a610618366004613104565b611017565b610162546001600160a01b031661035d565b6101655461035d906001600160a01b031681565b61039a610651366004612ead565b611138565b61039a610664366004612f71565b611140565b6101625461030c90600160a81b900460ff1681565b61037961068c366004612ee9565b6111c5565b61039a61069f366004613126565b6111dd565b61039a6106b2366004612f02565b611341565b6103796106c5366004613199565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6103296040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f00000000000000000000000000000000000000000000000000000000148061076a575061076a8261141f565b92915050565b60606036805461077f906131c3565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906131c3565b80156107f85780601f106107cd576101008083540402835291602001916107f8565b820191906000526020600020905b8154815290600101906020018083116107db57829003601f168201915b5050505050905090565b600033610810818585611486565b5060019392505050565b6108226115de565b61082d838383611677565b505050565b600061083d8361186b565b610848848484611912565b949350505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682148061089d57507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b156108b8576108aa61192b565b6108b482826119ac565b5050565b6108b482826119cf565b60006108cc6119f4565b905090565b6001600160a01b03811633146109545760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6108b482826119fe565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610810908290869061099890879061320d565b611486565b6109a5611a21565b6109ad611a7b565b6108b48282611af6565b6109bf61192b565b60006001600160a01b038416158015906109e85750610163546001600160a01b03858116911614155b15610a6c5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a1610163805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861617905580610a6881613220565b9150505b6001600160a01b03831615801590610a935750610164546001600160a01b03848116911614155b15610b175761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a1610164805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03851617905580610b1381613220565b9150505b6001600160a01b03821615801590610b3e5750610165546001600160a01b03838116911614155b15610bc25761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a1610165805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841617905580610bbe81613220565b9150505b80600003610bfc576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6001600160a01b03811660009081527feafe13aad5d3a5d187a954044369818b7127ef559bd7b70003ccdd69fcd610eb602052604081205460ff1661076a565b6001600160a01b03811660009081526099602052604081205461076a565b6000606080600080600060606065546000801b148015610c805750606654155b610ccc5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161094b565b610cd4611bb7565b610cdc611bc6565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff1615808015610d425750600054600160ff909116105b80610d5c5750303b158015610d5c575060005460ff166001145b610dce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161094b565b6000805460ff191660011790558015610df1576000805461ff0019166101001790555b61016254600160a01b900460ff16610e35576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b03163314610e7a576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8382611bd5565b80156108b4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610ee59083611ec6565b9392505050565b6001600160a01b03811660009081527f051cef79febf56dae905e9a9a4144ab14e584259b6aead293c63d402ccaaf8d0602052604081205460ff1661076a565b60606037805461077f906131c3565b610f43611ed2565b6108b48282611f4d565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015610fea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161094b565b610ff78286868403611486565b506001949350505050565b600061100d8361186b565b610ee583836120b8565b61016254600160a81b900460ff16151581151503611061576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156110745761106f61192b565b611119565b3360009081527f203192a6f70c38c729e657bb590f85f4166457a19e9d23d7b5c74fd27a8c2708602052604090205460ff161580156110e257503360009081527f32796e36004994222362c2f9423d5e208bb848170964890784a8d59ed40f50af602052604090205460ff16155b15611119576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b6108226120c6565b61016254600160a01b900460ff1615611185576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b60008181526101306020526040812061076a90612147565b8342111561122d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161094b565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861125c8c612151565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006112b782612179565b905060006112c7828787876121c1565b9050896001600160a01b0316816001600160a01b03161461132a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161094b565b6113358a8a8a611486565b50505050505050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682036113ab57604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe06820361141557604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b6108b482826121e9565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061076a57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461076a565b6001600160a01b0383166115015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03821661157d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610164546001600160a01b03163314806116035750610163546001600160a01b031633145b6116755760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c0000606482015260840161094b565b565b6001600160a01b0383166116f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03821661176f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038316600090815260336020526040902054818110156117fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061185e9086815260200190565b60405180910390a3610bfc565b306001600160a01b0382160361190f5760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a40161094b565b50565b60003361192085828561220e565b610ff7858585611677565b610166546001600160a01b031633146116755760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6119b6828261229a565b60008281526101306020526040902061082d908261233c565b600082815260fe60205260409020600101546119ea81612351565b61082d83836119ac565b60006108cc61235b565b611a0882826123cf565b60008281526101306020526040902061082d9082612452565b61016254600160a81b900460ff166116755760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c6564000000000000604482015260640161094b565b611a8433610eec565b6116755760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e7465720000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216611b4c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161094b565b8060356000828254611b5e919061320d565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60606067805461077f906131c3565b60606068805461077f906131c3565b600054610100900460ff16611c405760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b611cb46040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250612467565b611cf26040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506124dc565b611cfa612586565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155602083015161016480549184169183169190911790556040830151610165805491841691831691909117905560608301516101668054919093169116179055611da77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744660006125f1565b611dd27fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0660006125f1565b611dfd7feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0660006125f1565b611e0e6000801b82608001516119ac565b611e3c7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682604001516119ac565b611e6a7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682600001516119ac565b611e987fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682602001516119ac565b61190f7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682604001516119ac565b6000610ee5838361263c565b611edb33610c02565b6116755760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e65720000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216611fc95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216600090815260336020526040902054818110156120585760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600033610810818585611677565b610164546001600160a01b031633146116755760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c0000000000000000000000000000000000000000000000000000606482015260840161094b565b600061076a825490565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600061076a6121866119f4565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006121d287878787612666565b915091506121df8161272a565b5095945050505050565b600082815260fe602052604090206001015461220481612351565b61082d83836119fe565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610bfc578181101561228d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161094b565b610bfc8484848403611486565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff166108b457600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556122f83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ee5836001600160a01b03841661288f565b61190f81336128de565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612386612953565b61238e6129ac565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff16156108b457600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ee5836001600160a01b0384166129dd565b600054610100900460ff166124d25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6108b48282612ad0565b600054610100900460ff166125475760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b61190f816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b54565b600054610100900460ff166116755760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b600082815260fe6020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600082600001828154811061265357612653613239565b9060005260206000200154905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561269d5750600090506003612721565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156126f1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661271a57600060019250925050612721565b9150600090505b94509492505050565b600081600481111561273e5761273e61324f565b036127465750565b600181600481111561275a5761275a61324f565b036127a75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161094b565b60028160048111156127bb576127bb61324f565b036128085760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161094b565b600381600481111561281c5761281c61324f565b0361190f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b60008181526001830160205260408120546128d65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561076a565b50600061076a565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff166108b45761291181612be7565b61291c836020612bf9565b60405160200161292d929190613265565b60408051601f198184030181529082905262461bcd60e51b825261094b91600401612e54565b60008061295e611bb7565b805190915015612975578051602090910120919050565b60655480156129845792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806129b7611bc6565b8051909150156129ce578051602090910120919050565b60665480156129845792915050565b60008181526001830160205260408120548015612ac6576000612a016001836132e6565b8554909150600090612a15906001906132e6565b9050818114612a7a576000866000018281548110612a3557612a35613239565b9060005260206000200154905080876000018481548110612a5857612a58613239565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a8b57612a8b6132f9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061076a565b600091505061076a565b600054610100900460ff16612b3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6036612b47838261335d565b50603761082d828261335d565b600054610100900460ff16612bbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6067612bcb838261335d565b506068612bd8828261335d565b50506000606581905560665550565b606061076a6001600160a01b03831660145b60606000612c0883600261341d565b612c1390600261320d565b67ffffffffffffffff811115612c2b57612c2b61303e565b6040519080825280601f01601f191660200182016040528015612c55576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612c8c57612c8c613239565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612cd757612cd7613239565b60200101906001600160f81b031916908160001a9053506000612cfb84600261341d565b612d0690600161320d565b90505b6001811115612d8b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612d4757612d47613239565b1a60f81b828281518110612d5d57612d5d613239565b60200101906001600160f81b031916908160001a90535060049490941c93612d8481613434565b9050612d09565b508315610ee55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161094b565b600060208284031215612dec57600080fd5b81356001600160e01b031981168114610ee557600080fd5b60005b83811015612e1f578181015183820152602001612e07565b50506000910152565b60008151808452612e40816020860160208601612e04565b601f01601f19169290920160200192915050565b602081526000610ee56020830184612e28565b80356001600160a01b0381168114612e7e57600080fd5b919050565b60008060408385031215612e9657600080fd5b612e9f83612e67565b946020939093013593505050565b600080600060608486031215612ec257600080fd5b612ecb84612e67565b9250612ed960208501612e67565b9150604084013590509250925092565b600060208284031215612efb57600080fd5b5035919050565b60008060408385031215612f1557600080fd5b82359150612f2560208401612e67565b90509250929050565b600080600060608486031215612f4357600080fd5b612f4c84612e67565b9250612f5a60208501612e67565b9150612f6860408501612e67565b90509250925092565b600060208284031215612f8357600080fd5b610ee582612e67565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612fc860e084018a612e28565b8381036040850152612fda818a612e28565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561302c57835183529284019291840191600101613010565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a0828403121561306657600080fd5b60405160a0810181811067ffffffffffffffff821117156130895761308961303e565b60405261309583612e67565b81526130a360208401612e67565b60208201526130b460408401612e67565b60408201526130c560608401612e67565b60608201526130d660808401612e67565b60808201529392505050565b600080604083850312156130f557600080fd5b50508035926020909101359150565b60006020828403121561311657600080fd5b81358015158114610ee557600080fd5b600080600080600080600060e0888a03121561314157600080fd5b61314a88612e67565b965061315860208901612e67565b95506040880135945060608801359350608088013560ff8116811461317c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156131ac57600080fd5b6131b583612e67565b9150612f2560208401612e67565b600181811c908216806131d757607f821691505b60208210810361217357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561076a5761076a6131f7565b600060018201613232576132326131f7565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161329d816017850160208801612e04565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516132da816028840160208801612e04565b01602801949350505050565b8181038181111561076a5761076a6131f7565b634e487b7160e01b600052603160045260246000fd5b601f82111561082d57600081815260208120601f850160051c810160208610156133365750805b601f850160051c820191505b8181101561335557828155600101613342565b505050505050565b815167ffffffffffffffff8111156133775761337761303e565b61338b8161338584546131c3565b8461330f565b602080601f8311600181146133c057600084156133a85750858301515b600019600386901b1c1916600185901b178555613355565b600085815260208120601f198616915b828110156133ef578886015182559484019460019091019084016133d0565b508582101561340d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808202811582820484141761076a5761076a6131f7565b600081613443576134436131f7565b50600019019056fea2646970667358221220a673744ba61b8c42d8575739462d1865a6b7e8f1132ca1c77c9cce1802ee91db64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80638f656d2211610191578063b22b7840116100e3578063beb9716d11610097578063d547741f11610071578063d547741f146106a4578063dd62ed3e146106b7578063ffa1ad74146106f057600080fd5b8063beb9716d14610669578063ca15c8731461067e578063d505accf1461069157600080fd5b8063b7f8cf9b116100c8578063b7f8cf9b1461062f578063bb997bac14610643578063bcf47d331461065657600080fd5b8063b22b78401461060a578063b59913471461061d57600080fd5b806395d89b4111610145578063a217fddf1161011f578063a217fddf146105dc578063a457c2d7146105e4578063a9059cbb146105f757600080fd5b806395d89b411461059a5780639d1b636c146105a25780639dc29fac146105c957600080fd5b806390acdb0b1161017657806390acdb0b1461052757806391d148541461054e578063933cc28f1461058757600080fd5b80638f656d22146105015780639010d07c1461051457600080fd5b80633644e5151161024a578063472fa5cb116101fe5780637ecebe00116101d85780637ecebe00146104ac57806384b0196e146104bf5780638a1d7fd0146104da57600080fd5b8063472fa5cb1461045c57806352033ede1461046f57806370a082311461048357600080fd5b8063395093511161022f578063395093511461042357806340c10f1914610436578063460ab5ad1461044957600080fd5b80633644e5151461040857806336568abe1461041057600080fd5b806320c582be116102ac578063276f1c4111610286578063276f1c41146103d25780632f2ff15d146103e6578063313ce567146103f957600080fd5b806320c582be1461038757806323b872dd1461039c578063248a9ca3146103af57600080fd5b8063095ea7b3116102dd578063095ea7b3146103365780630b622ab21461034957806318160ddd1461037557600080fd5b806301ffc9a7146102f957806306fdde0314610321575b600080fd5b61030c610307366004612dda565b61072c565b60405190151581526020015b60405180910390f35b610329610770565b6040516103189190612e54565b61030c610344366004612e83565b610802565b6101645461035d906001600160a01b031681565b6040516001600160a01b039091168152602001610318565b6035545b604051908152602001610318565b61039a610395366004612ead565b61081a565b005b61030c6103aa366004612ead565b610832565b6103796103bd366004612ee9565b600090815260fe602052604090206001015490565b6101665461035d906001600160a01b031681565b61039a6103f4366004612f02565b610850565b60405160128152602001610318565b6103796108c2565b61039a61041e366004612f02565b6108d1565b61030c610431366004612e83565b61095e565b61039a610444366004612e83565b61099d565b61039a610457366004612f2e565b6109b7565b61030c61046a366004612f71565b610c02565b6101635461035d906001600160a01b031681565b610379610491366004612f71565b6001600160a01b031660009081526033602052604090205490565b6103796104ba366004612f71565b610c42565b6104c7610c60565b6040516103189796959493929190612f8c565b6103797fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61039a61050f366004613054565b610d22565b61035d6105223660046130e2565b610ecc565b6103797feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b61030c61055c366004612f02565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61030c610595366004612f71565b610eec565b610329610f2c565b6103797ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b61039a6105d7366004612e83565b610f3b565b610379600081565b61030c6105f2366004612e83565b610f4d565b61030c610605366004612e83565b611002565b61039a610618366004613104565b611017565b610162546001600160a01b031661035d565b6101655461035d906001600160a01b031681565b61039a610651366004612ead565b611138565b61039a610664366004612f71565b611140565b6101625461030c90600160a81b900460ff1681565b61037961068c366004612ee9565b6111c5565b61039a61069f366004613126565b6111dd565b61039a6106b2366004612f02565b611341565b6103796106c5366004613199565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6103296040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f00000000000000000000000000000000000000000000000000000000148061076a575061076a8261141f565b92915050565b60606036805461077f906131c3565b80601f01602080910402602001604051908101604052809291908181526020018280546107ab906131c3565b80156107f85780601f106107cd576101008083540402835291602001916107f8565b820191906000526020600020905b8154815290600101906020018083116107db57829003601f168201915b5050505050905090565b600033610810818585611486565b5060019392505050565b6108226115de565b61082d838383611677565b505050565b600061083d8361186b565b610848848484611912565b949350505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682148061089d57507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b156108b8576108aa61192b565b6108b482826119ac565b5050565b6108b482826119cf565b60006108cc6119f4565b905090565b6001600160a01b03811633146109545760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6108b482826119fe565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610810908290869061099890879061320d565b611486565b6109a5611a21565b6109ad611a7b565b6108b48282611af6565b6109bf61192b565b60006001600160a01b038416158015906109e85750610163546001600160a01b03858116911614155b15610a6c5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a1610163805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861617905580610a6881613220565b9150505b6001600160a01b03831615801590610a935750610164546001600160a01b03848116911614155b15610b175761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a1610164805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03851617905580610b1381613220565b9150505b6001600160a01b03821615801590610b3e5750610165546001600160a01b03838116911614155b15610bc25761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a1610165805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841617905580610bbe81613220565b9150505b80600003610bfc576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6001600160a01b03811660009081527feafe13aad5d3a5d187a954044369818b7127ef559bd7b70003ccdd69fcd610eb602052604081205460ff1661076a565b6001600160a01b03811660009081526099602052604081205461076a565b6000606080600080600060606065546000801b148015610c805750606654155b610ccc5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640161094b565b610cd4611bb7565b610cdc611bc6565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b600054610100900460ff1615808015610d425750600054600160ff909116105b80610d5c5750303b158015610d5c575060005460ff166001145b610dce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161094b565b6000805460ff191660011790558015610df1576000805461ff0019166101001790555b61016254600160a01b900460ff16610e35576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b03163314610e7a576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8382611bd5565b80156108b4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610ee59083611ec6565b9392505050565b6001600160a01b03811660009081527f051cef79febf56dae905e9a9a4144ab14e584259b6aead293c63d402ccaaf8d0602052604081205460ff1661076a565b60606037805461077f906131c3565b610f43611ed2565b6108b48282611f4d565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015610fea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161094b565b610ff78286868403611486565b506001949350505050565b600061100d8361186b565b610ee583836120b8565b61016254600160a81b900460ff16151581151503611061576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156110745761106f61192b565b611119565b3360009081527f203192a6f70c38c729e657bb590f85f4166457a19e9d23d7b5c74fd27a8c2708602052604090205460ff161580156110e257503360009081527f32796e36004994222362c2f9423d5e208bb848170964890784a8d59ed40f50af602052604090205460ff16155b15611119576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b6108226120c6565b61016254600160a01b900460ff1615611185576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b60008181526101306020526040812061076a90612147565b8342111561122d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161094b565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861125c8c612151565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006112b782612179565b905060006112c7828787876121c1565b9050896001600160a01b0316816001600160a01b03161461132a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161094b565b6113358a8a8a611486565b50505050505050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682036113ab57604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe06820361141557604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b6108b482826121e9565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061076a57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461076a565b6001600160a01b0383166115015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03821661157d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610164546001600160a01b03163314806116035750610163546001600160a01b031633145b6116755760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c0000606482015260840161094b565b565b6001600160a01b0383166116f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03821661176f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038316600090815260336020526040902054818110156117fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061185e9086815260200190565b60405180910390a3610bfc565b306001600160a01b0382160361190f5760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a40161094b565b50565b60003361192085828561220e565b610ff7858585611677565b610166546001600160a01b031633146116755760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6119b6828261229a565b60008281526101306020526040902061082d908261233c565b600082815260fe60205260409020600101546119ea81612351565b61082d83836119ac565b60006108cc61235b565b611a0882826123cf565b60008281526101306020526040902061082d9082612452565b61016254600160a81b900460ff166116755760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c6564000000000000604482015260640161094b565b611a8433610eec565b6116755760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e7465720000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216611b4c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161094b565b8060356000828254611b5e919061320d565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60606067805461077f906131c3565b60606068805461077f906131c3565b600054610100900460ff16611c405760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b611cb46040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250612467565b611cf26040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506124dc565b611cfa612586565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1991821617909155602083015161016480549184169183169190911790556040830151610165805491841691831691909117905560608301516101668054919093169116179055611da77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744660006125f1565b611dd27fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0660006125f1565b611dfd7feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0660006125f1565b611e0e6000801b82608001516119ac565b611e3c7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682604001516119ac565b611e6a7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682600001516119ac565b611e987fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682602001516119ac565b61190f7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682604001516119ac565b6000610ee5838361263c565b611edb33610c02565b6116755760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e65720000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216611fc95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b038216600090815260336020526040902054818110156120585760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600033610810818585611677565b610164546001600160a01b031633146116755760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c0000000000000000000000000000000000000000000000000000606482015260840161094b565b600061076a825490565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600061076a6121866119f4565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060006121d287878787612666565b915091506121df8161272a565b5095945050505050565b600082815260fe602052604090206001015461220481612351565b61082d83836119fe565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610bfc578181101561228d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161094b565b610bfc8484848403611486565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff166108b457600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556122f83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ee5836001600160a01b03841661288f565b61190f81336128de565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612386612953565b61238e6129ac565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff16156108b457600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ee5836001600160a01b0384166129dd565b600054610100900460ff166124d25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6108b48282612ad0565b600054610100900460ff166125475760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b61190f816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612b54565b600054610100900460ff166116755760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b600082815260fe6020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600082600001828154811061265357612653613239565b9060005260206000200154905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561269d5750600090506003612721565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156126f1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661271a57600060019250925050612721565b9150600090505b94509492505050565b600081600481111561273e5761273e61324f565b036127465750565b600181600481111561275a5761275a61324f565b036127a75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161094b565b60028160048111156127bb576127bb61324f565b036128085760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161094b565b600381600481111561281c5761281c61324f565b0361190f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161094b565b60008181526001830160205260408120546128d65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561076a565b50600061076a565b600082815260fe602090815260408083206001600160a01b038516845290915290205460ff166108b45761291181612be7565b61291c836020612bf9565b60405160200161292d929190613265565b60408051601f198184030181529082905262461bcd60e51b825261094b91600401612e54565b60008061295e611bb7565b805190915015612975578051602090910120919050565b60655480156129845792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806129b7611bc6565b8051909150156129ce578051602090910120919050565b60665480156129845792915050565b60008181526001830160205260408120548015612ac6576000612a016001836132e6565b8554909150600090612a15906001906132e6565b9050818114612a7a576000866000018281548110612a3557612a35613239565b9060005260206000200154905080876000018481548110612a5857612a58613239565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a8b57612a8b6132f9565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061076a565b600091505061076a565b600054610100900460ff16612b3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6036612b47838261335d565b50603761082d828261335d565b600054610100900460ff16612bbf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161094b565b6067612bcb838261335d565b506068612bd8828261335d565b50506000606581905560665550565b606061076a6001600160a01b03831660145b60606000612c0883600261341d565b612c1390600261320d565b67ffffffffffffffff811115612c2b57612c2b61303e565b6040519080825280601f01601f191660200182016040528015612c55576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612c8c57612c8c613239565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612cd757612cd7613239565b60200101906001600160f81b031916908160001a9053506000612cfb84600261341d565b612d0690600161320d565b90505b6001811115612d8b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612d4757612d47613239565b1a60f81b828281518110612d5d57612d5d613239565b60200101906001600160f81b031916908160001a90535060049490941c93612d8481613434565b9050612d09565b508315610ee55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161094b565b600060208284031215612dec57600080fd5b81356001600160e01b031981168114610ee557600080fd5b60005b83811015612e1f578181015183820152602001612e07565b50506000910152565b60008151808452612e40816020860160208601612e04565b601f01601f19169290920160200192915050565b602081526000610ee56020830184612e28565b80356001600160a01b0381168114612e7e57600080fd5b919050565b60008060408385031215612e9657600080fd5b612e9f83612e67565b946020939093013593505050565b600080600060608486031215612ec257600080fd5b612ecb84612e67565b9250612ed960208501612e67565b9150604084013590509250925092565b600060208284031215612efb57600080fd5b5035919050565b60008060408385031215612f1557600080fd5b82359150612f2560208401612e67565b90509250929050565b600080600060608486031215612f4357600080fd5b612f4c84612e67565b9250612f5a60208501612e67565b9150612f6860408501612e67565b90509250925092565b600060208284031215612f8357600080fd5b610ee582612e67565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152612fc860e084018a612e28565b8381036040850152612fda818a612e28565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561302c57835183529284019291840191600101613010565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a0828403121561306657600080fd5b60405160a0810181811067ffffffffffffffff821117156130895761308961303e565b60405261309583612e67565b81526130a360208401612e67565b60208201526130b460408401612e67565b60408201526130c560608401612e67565b60608201526130d660808401612e67565b60808201529392505050565b600080604083850312156130f557600080fd5b50508035926020909101359150565b60006020828403121561311657600080fd5b81358015158114610ee557600080fd5b600080600080600080600060e0888a03121561314157600080fd5b61314a88612e67565b965061315860208901612e67565b95506040880135945060608801359350608088013560ff8116811461317c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156131ac57600080fd5b6131b583612e67565b9150612f2560208401612e67565b600181811c908216806131d757607f821691505b60208210810361217357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561076a5761076a6131f7565b600060018201613232576132326131f7565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161329d816017850160208801612e04565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516132da816028840160208801612e04565b01602801949350505050565b8181038181111561076a5761076a6131f7565b634e487b7160e01b600052603160045260246000fd5b601f82111561082d57600081815260208120601f850160051c810160208610156133365750805b601f850160051c820191505b8181101561335557828155600101613342565b505050505050565b815167ffffffffffffffff8111156133775761337761303e565b61338b8161338584546131c3565b8461330f565b602080601f8311600181146133c057600084156133a85750858301515b600019600386901b1c1916600185901b178555613355565b600085815260208120601f198616915b828110156133ef578886015182559484019460019091019084016133d0565b508582101561340d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808202811582820484141761076a5761076a6131f7565b600081613443576134436131f7565b50600019019056fea2646970667358221220a673744ba61b8c42d8575739462d1865a6b7e8f1132ca1c77c9cce1802ee91db64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
