{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC1155MinterSupplyCap",
  "sourceName": "contracts/V3/token/ERC1155MinterSupplyCap.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "minterAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_cap",
          "type": "uint256"
        }
      ],
      "name": "addCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "caps",
          "type": "uint256[]"
        }
      ],
      "name": "addCapBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "burnBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "cap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "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": [
        {
          "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": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mintBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162003171380380620031718339810160408190526200003491620002ef565b816200004081620000a2565b506200004e600033620000bb565b620000696000805160206200315183398151915233620000bb565b620000846000805160206200315183398151915282620000bb565b81516200009990600790602085019062000216565b5050506200041d565b8051620000b790600490602084019062000216565b5050565b620000b78282620000d882826200010460201b62000a851760201c565b6000828152600160209081526040909120620000ff91839062000b09620001a4821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000b7576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001603390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001bb836001600160a01b038416620001c4565b90505b92915050565b60008181526001830160205260408120546200020d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001be565b506000620001be565b8280546200022490620003e0565b90600052602060002090601f01602090048101928262000248576000855562000293565b82601f106200026357805160ff191683800117855562000293565b8280016001018555821562000293579182015b828111156200029357825182559160200191906001019062000276565b50620002a1929150620002a5565b5090565b5b80821115620002a15760008155600101620002a6565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620002ea57600080fd5b919050565b600080604083850312156200030357600080fd5b82516001600160401b03808211156200031b57600080fd5b818501915085601f8301126200033057600080fd5b815181811115620003455762000345620002bc565b604051601f8201601f19908116603f01168101908382118183101715620003705762000370620002bc565b816040528281526020935088848487010111156200038d57600080fd5b600091505b82821015620003b1578482018401518183018501529083019062000392565b82821115620003c35760008484830101525b9550620003d5915050858201620002d2565b925050509250929050565b600181811c90821680620003f557607f821691505b602082108114156200041757634e487b7160e01b600052602260045260246000fd5b50919050565b612d24806200042d6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80639010d07c116100be5780639010d07c146102a757806391d14854146102d2578063a217fddf146102e5578063a22cb465146102ed578063bd85b03914610300578063c01e9a5c14610320578063ca15c87314610333578063d539139314610346578063d547741f1461035b578063e985e9c51461036e578063f242432a146103aa578063f5298aca146103bd578063ff2ad8e4146103d057600080fd5b8062fdd58e1461015257806301ffc9a7146101785780630e89341c1461019b5780631f7fdffa146101bb578063248a9ca3146101d05780632eb2c2d6146101f35780632f2ff15d1461020657806336568abe14610219578063497a049c1461022c5780634e1273f41461023f5780634f558e791461025f5780636b20c45414610281578063731133e914610294575b600080fd5b610165610160366004611f24565b6103f0565b6040519081526020015b60405180910390f35b61018b610186366004611f64565b61048b565b604051901515815260200161016f565b6101ae6101a9366004611f81565b610496565b60405161016f9190611ff2565b6101ce6101c936600461214e565b610569565b005b6101656101de366004611f81565b60009081526020819052604090206001015490565b6101ce6102013660046121e6565b6105af565b6101ce61021436600461228f565b6105fb565b6101ce61022736600461228f565b610625565b6101ce61023a3660046122bb565b6106a3565b61025261024d3660046122dd565b610715565b60405161016f91906123e2565b61018b61026d366004611f81565b600090815260056020526040902054151590565b6101ce61028f3660046123f5565b61083e565b6101ce6102a2366004612468565b610881565b6102ba6102b53660046122bb565b6108c1565b6040516001600160a01b03909116815260200161016f565b61018b6102e036600461228f565b6108e0565b610165600081565b6101ce6102fb3660046124bc565b610909565b61016561030e366004611f81565b60009081526005602052604090205490565b6101ce61032e3660046124f8565b610914565b610165610341366004611f81565b6109c1565b610165600080516020612ccf83398151915281565b6101ce61036936600461228f565b6109d8565b61018b61037c366004612544565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101ce6103b836600461256e565b6109fd565b6101ce6103cb3660046125d2565b610a42565b6101656103de366004611f81565b60066020526000908152604090205481565b60006001600160a01b0383166104605760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048582610b1e565b60008181526005602052604090205460609061050d5760405162461bcd60e51b815260206004820152603060248201527f455243313135354d657461646174613a2055524920717565727920666f72206e60448201526f37b732bc34b9ba32b73a103a37b5b2b760811b6064820152608401610457565b60006007805461051c90612605565b9050116105385760405180602001604052806000815250610485565b600761054383610b5e565b60405160200161055492919061265c565b60405160208183030381529060405292915050565b610581600080516020612ccf833981519152336108e0565b61059d5760405162461bcd60e51b815260040161045790612703565b6105a984848484610bf2565b50505050565b6001600160a01b0385163314806105cb57506105cb853361037c565b6105e75760405162461bcd60e51b815260040161045790612755565b6105f48585858585610d3b565b5050505050565b60008281526020819052604090206001015461061681610ed6565b6106208383610ee3565b505050565b6001600160a01b03811633146106955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610457565b61069f8282610f05565b5050565b6106bb600080516020612ccf833981519152336108e0565b6106d75760405162461bcd60e51b815260040161045790612703565b806106ee5750600090815260066020526040812055565b6000828152600660205260408120805483929061070c9084906127b9565b90915550505050565b6060815183511461077a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610457565b600083516001600160401b0381111561079557610795612005565b6040519080825280602002602001820160405280156107be578160200160208202803683370190505b50905060005b8451811015610836576108098582815181106107e2576107e26127d1565b60200260200101518583815181106107fc576107fc6127d1565b60200260200101516103f0565b82828151811061081b5761081b6127d1565b602090810291909101015261082f816127e7565b90506107c4565b509392505050565b6001600160a01b03831633148061085a575061085a833361037c565b6108765760405162461bcd60e51b815260040161045790612802565b610620838383610f27565b610899600080516020612ccf833981519152336108e0565b6108b55760405162461bcd60e51b815260040161045790612703565b6105a9848484846110b4565b60008281526001602052604081206108d9908361118d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61069f338383611199565b61092c600080516020612ccf833981519152336108e0565b6109485760405162461bcd60e51b815260040161045790612703565b60005b825181101561062057818181518110610966576109666127d1565b602002602001015160066000858481518110610984576109846127d1565b6020026020010151815260200190815260200160002060008282546109a991906127b9565b909155508190506109b9816127e7565b91505061094b565b60008181526001602052604081206104859061127a565b6000828152602081905260409020600101546109f381610ed6565b6106208383610f05565b6001600160a01b038516331480610a195750610a19853361037c565b610a355760405162461bcd60e51b815260040161045790612755565b6105f48585858585611284565b6001600160a01b038316331480610a5e5750610a5e833361037c565b610a7a5760405162461bcd60e51b815260040161045790612802565b6106208383836113ae565b610a8f82826108e0565b61069f576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108d9836001600160a01b0384166114b8565b60006001600160e01b03198216636cdb3d1360e11b1480610b4f57506001600160e01b031982166303a24d0760e21b145b80610485575061048582611507565b60606000610b6b8361152c565b60010190506000816001600160401b03811115610b8a57610b8a612005565b6040519080825280601f01601f191660200182016040528015610bb4576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610bed57610836565b610bbe565b6001600160a01b038416610c185760405162461bcd60e51b81526004016104579061284b565b8151835114610c395760405162461bcd60e51b81526004016104579061288c565b33610c4981600087878787611602565b60005b8451811015610ce557838181518110610c6757610c676127d1565b602002602001015160026000878481518110610c8557610c856127d1565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ccd91906127b9565b90915550819050610cdd816127e7565b915050610c4c565b50846001600160a01b031660006001600160a01b0316826001600160a01b0316600080516020612c8f8339815191528787604051610d249291906128d4565b60405180910390a46105f48160008787878761173d565b8151835114610d5c5760405162461bcd60e51b81526004016104579061288c565b6001600160a01b038416610d825760405162461bcd60e51b8152600401610457906128f9565b33610d91818787878787611602565b60005b8451811015610e7a576000858281518110610db157610db16127d1565b602002602001015190506000858381518110610dcf57610dcf6127d1565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610e205760405162461bcd60e51b81526004016104579061293e565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610e5f9084906127b9565b9250508190555050505080610e73906127e7565b9050610d94565b50846001600160a01b0316866001600160a01b0316826001600160a01b0316600080516020612c8f8339815191528787604051610eb89291906128d4565b60405180910390a4610ece81878787878761173d565b505050505050565b610ee081336118a8565b50565b610eed8282610a85565b60008281526001602052604090206106209082610b09565b610f0f8282611901565b60008281526001602052604090206106209082611966565b6001600160a01b038316610f4d5760405162461bcd60e51b815260040161045790612988565b8051825114610f6e5760405162461bcd60e51b81526004016104579061288c565b6000339050610f9181856000868660405180602001604052806000815250611602565b60005b8351811015611059576000848281518110610fb157610fb16127d1565b602002602001015190506000848381518110610fcf57610fcf6127d1565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110205760405162461bcd60e51b8152600401610457906129cb565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611051816127e7565b915050610f94565b5060006001600160a01b0316846001600160a01b0316826001600160a01b0316600080516020612c8f83398151915286866040516110989291906128d4565b60405180910390a46040805160208101909152600090526105a9565b6001600160a01b0384166110da5760405162461bcd60e51b81526004016104579061284b565b3360006110e68561197b565b905060006110f38561197b565b905061110483600089858589611602565b60008681526002602090815260408083206001600160a01b038b168452909152812080548792906111369084906127b9565b909155505060408051878152602081018790526001600160a01b03808a169260009291871691600080516020612caf833981519152910160405180910390a4611184836000898989896119c6565b50505050505050565b60006108d98383611a90565b816001600160a01b0316836001600160a01b0316141561120d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610457565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610485825490565b6001600160a01b0384166112aa5760405162461bcd60e51b8152600401610457906128f9565b3360006112b68561197b565b905060006112c38561197b565b90506112d3838989858589611602565b60008681526002602090815260408083206001600160a01b038c168452909152902054858110156113165760405162461bcd60e51b81526004016104579061293e565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906113559084906127b9565b909155505060408051888152602081018890526001600160a01b03808b16928c82169291881691600080516020612caf833981519152910160405180910390a46113a3848a8a8a8a8a6119c6565b505050505050505050565b6001600160a01b0383166113d45760405162461bcd60e51b815260040161045790612988565b3360006113e08461197b565b905060006113ed8461197b565b905061140d83876000858560405180602001604052806000815250611602565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114505760405162461bcd60e51b8152600401610457906129cb565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a9052909290881691600080516020612caf833981519152910160405180910390a4604080516020810190915260009052611184565b60008181526001830160205260408120546114ff57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b506000610485565b60006001600160e01b03198216635a05180f60e01b1480610485575061048582611aba565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061156b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310611595576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106115b357662386f26fc10000830492506010015b6305f5e10083106115cb576305f5e100830492506008015b61271083106115df57612710830492506004015b606483106115f1576064830492506002015b600a83106104855760010192915050565b6001600160a01b03851661172f5760005b835181101561172d57600060066000868481518110611634576116346127d1565b6020026020010151815260200190815260200160002054111561171b5760066000858381518110611667576116676127d1565b6020026020010151815260200190815260200160002054838281518110611690576116906127d1565b60200260200101516116c78684815181106116ad576116ad6127d1565b602002602001015160009081526005602052604090205490565b6116d191906127b9565b111561171b5760405162461bcd60e51b8152602060048201526019602482015278455243313135354d696e746572537570706c793a206361702160381b6044820152606401610457565b80611725816127e7565b915050611613565b505b610ece868686868686611aef565b6001600160a01b0384163b15610ece5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117819089908990889088908890600401612a0f565b602060405180830381600087803b15801561179b57600080fd5b505af19250505080156117cb575060408051601f3d908101601f191682019092526117c891810190612a6d565b60015b611878576117d7612a8a565b806308c379a0141561181157506117ec612aa6565b806117f75750611813565b8060405162461bcd60e51b81526004016104579190611ff2565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610457565b6001600160e01b0319811663bc197c8160e01b146111845760405162461bcd60e51b815260040161045790612b2f565b6118b282826108e0565b61069f576118bf81611c68565b6118ca836020611c7a565b6040516020016118db929190612b77565b60408051601f198184030181529082905262461bcd60e51b825261045791600401611ff2565b61190b82826108e0565b1561069f576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108d9836001600160a01b038416611e15565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119b5576119b56127d1565b602090810291909101015292915050565b6001600160a01b0384163b15610ece5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a0a9089908990889088908890600401612be6565b602060405180830381600087803b158015611a2457600080fd5b505af1925050508015611a54575060408051601f3d908101601f19168201909252611a5191810190612a6d565b60015b611a60576117d7612a8a565b6001600160e01b0319811663f23a6e6160e01b146111845760405162461bcd60e51b815260040161045790612b2f565b6000826000018281548110611aa757611aa76127d1565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061048557506301ffc9a760e01b6001600160e01b0319831614610485565b6001600160a01b038516611b765760005b8351811015611b7457828181518110611b1b57611b1b6127d1565b602002602001015160056000868481518110611b3957611b396127d1565b602002602001015181526020019081526020016000206000828254611b5e91906127b9565b90915550611b6d9050816127e7565b9050611b00565b505b6001600160a01b038416610ece5760005b8351811015611184576000848281518110611ba457611ba46127d1565b602002602001015190506000848381518110611bc257611bc26127d1565b6020026020010151905060006005600084815260200190815260200160002054905081811015611c455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608401610457565b60009283526005602052604090922091039055611c61816127e7565b9050611b87565b60606104856001600160a01b03831660145b60606000611c89836002612c2b565b611c949060026127b9565b6001600160401b03811115611cab57611cab612005565b6040519080825280601f01601f191660200182016040528015611cd5576020820181803683370190505b509050600360fc1b81600081518110611cf057611cf06127d1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611d1f57611d1f6127d1565b60200101906001600160f81b031916908160001a9053506000611d43846002612c2b565b611d4e9060016127b9565b90505b6001811115611dc6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611d8257611d826127d1565b1a60f81b828281518110611d9857611d986127d1565b60200101906001600160f81b031916908160001a90535060049490941c93611dbf81612c4a565b9050611d51565b5083156108d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610457565b60008181526001830160205260408120548015611efe576000611e39600183612c61565b8554909150600090611e4d90600190612c61565b9050818114611eb2576000866000018281548110611e6d57611e6d6127d1565b9060005260206000200154905080876000018481548110611e9057611e906127d1565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ec357611ec3612c78565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b80356001600160a01b0381168114611f1f57600080fd5b919050565b60008060408385031215611f3757600080fd5b611f4083611f08565b946020939093013593505050565b6001600160e01b031981168114610ee057600080fd5b600060208284031215611f7657600080fd5b81356108d981611f4e565b600060208284031215611f9357600080fd5b5035919050565b60005b83811015611fb5578181015183820152602001611f9d565b838111156105a95750506000910152565b60008151808452611fde816020860160208601611f9a565b601f01601f19169290920160200192915050565b6020815260006108d96020830184611fc6565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561204057612040612005565b6040525050565b60006001600160401b0382111561206057612060612005565b5060051b60200190565b600082601f83011261207b57600080fd5b8135602061208882612047565b604051612095828261201b565b83815260059390931b85018201928281019150868411156120b557600080fd5b8286015b848110156120d057803583529183019183016120b9565b509695505050505050565b600082601f8301126120ec57600080fd5b81356001600160401b0381111561210557612105612005565b60405161211c601f8301601f19166020018261201b565b81815284602083860101111561213157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561216457600080fd5b61216d85611f08565b935060208501356001600160401b038082111561218957600080fd5b6121958883890161206a565b945060408701359150808211156121ab57600080fd5b6121b78883890161206a565b935060608701359150808211156121cd57600080fd5b506121da878288016120db565b91505092959194509250565b600080600080600060a086880312156121fe57600080fd5b61220786611f08565b945061221560208701611f08565b935060408601356001600160401b038082111561223157600080fd5b61223d89838a0161206a565b9450606088013591508082111561225357600080fd5b61225f89838a0161206a565b9350608088013591508082111561227557600080fd5b50612282888289016120db565b9150509295509295909350565b600080604083850312156122a257600080fd5b823591506122b260208401611f08565b90509250929050565b600080604083850312156122ce57600080fd5b50508035926020909101359150565b600080604083850312156122f057600080fd5b82356001600160401b038082111561230757600080fd5b818501915085601f83011261231b57600080fd5b8135602061232882612047565b604051612335828261201b565b83815260059390931b850182019282810191508984111561235557600080fd5b948201945b8386101561237a5761236b86611f08565b8252948201949082019061235a565b9650508601359250508082111561239057600080fd5b5061239d8582860161206a565b9150509250929050565b600081518084526020808501945080840160005b838110156123d7578151875295820195908201906001016123bb565b509495945050505050565b6020815260006108d960208301846123a7565b60008060006060848603121561240a57600080fd5b61241384611f08565b925060208401356001600160401b038082111561242f57600080fd5b61243b8783880161206a565b9350604086013591508082111561245157600080fd5b5061245e8682870161206a565b9150509250925092565b6000806000806080858703121561247e57600080fd5b61248785611f08565b9350602085013592506040850135915060608501356001600160401b038111156124b057600080fd5b6121da878288016120db565b600080604083850312156124cf57600080fd5b6124d883611f08565b9150602083013580151581146124ed57600080fd5b809150509250929050565b6000806040838503121561250b57600080fd5b82356001600160401b038082111561252257600080fd5b61252e8683870161206a565b9350602085013591508082111561239057600080fd5b6000806040838503121561255757600080fd5b61256083611f08565b91506122b260208401611f08565b600080600080600060a0868803121561258657600080fd5b61258f86611f08565b945061259d60208701611f08565b9350604086013592506060860135915060808601356001600160401b038111156125c657600080fd5b612282888289016120db565b6000806000606084860312156125e757600080fd5b6125f084611f08565b95602085013595506040909401359392505050565b600181811c9082168061261957607f821691505b6020821081141561263a57634e487b7160e01b600052602260045260246000fd5b50919050565b60008151612652818560208601611f9a565b9290920192915050565b600080845481600182811c91508083168061267857607f831692505b602080841082141561269857634e487b7160e01b86526022600452602486fd5b8180156126ac57600181146126bd576126ea565b60ff198616895284890196506126ea565b60008b81526020902060005b868110156126e25781548b8201529085019083016126c9565b505084890196505b5050505050506126fa8185612640565b95945050505050565b60208082526032908201527f455243313135354d696e746572537570706c793a206d7573742068617665206d6040820152711a5b9d195c881c9bdb19481d1bc81b5a5b9d60721b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127cc576127cc6127a3565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156127fb576127fb6127a3565b5060010190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6040815260006128e760408301856123a7565b82810360208401526126fa81856123a7565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090612a3b908301866123a7565b8281036060840152612a4d81866123a7565b90508281036080840152612a618185611fc6565b98975050505050505050565b600060208284031215612a7f57600080fd5b81516108d981611f4e565b600060033d1115612aa35760046000803e5060005160e01c5b90565b600060443d1015612ab45790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612ae357505050505090565b8285019150815181811115612afb5750505050505090565b843d8701016020828501011115612b155750505050505090565b612b246020828601018761201b565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612ba9816017850160208801611f9a565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612bda816028840160208801611f9a565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612c2090830184611fc6565b979650505050505050565b6000816000190483118215151615612c4557612c456127a3565b500290565b600081612c5957612c596127a3565b506000190190565b600082821015612c7357612c736127a3565b500390565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212208665724b2c343fb73f0b7d4335d1cf996734a2c063c3c614246c7e542fe9cc3164736f6c634300080800339f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80639010d07c116100be5780639010d07c146102a757806391d14854146102d2578063a217fddf146102e5578063a22cb465146102ed578063bd85b03914610300578063c01e9a5c14610320578063ca15c87314610333578063d539139314610346578063d547741f1461035b578063e985e9c51461036e578063f242432a146103aa578063f5298aca146103bd578063ff2ad8e4146103d057600080fd5b8062fdd58e1461015257806301ffc9a7146101785780630e89341c1461019b5780631f7fdffa146101bb578063248a9ca3146101d05780632eb2c2d6146101f35780632f2ff15d1461020657806336568abe14610219578063497a049c1461022c5780634e1273f41461023f5780634f558e791461025f5780636b20c45414610281578063731133e914610294575b600080fd5b610165610160366004611f24565b6103f0565b6040519081526020015b60405180910390f35b61018b610186366004611f64565b61048b565b604051901515815260200161016f565b6101ae6101a9366004611f81565b610496565b60405161016f9190611ff2565b6101ce6101c936600461214e565b610569565b005b6101656101de366004611f81565b60009081526020819052604090206001015490565b6101ce6102013660046121e6565b6105af565b6101ce61021436600461228f565b6105fb565b6101ce61022736600461228f565b610625565b6101ce61023a3660046122bb565b6106a3565b61025261024d3660046122dd565b610715565b60405161016f91906123e2565b61018b61026d366004611f81565b600090815260056020526040902054151590565b6101ce61028f3660046123f5565b61083e565b6101ce6102a2366004612468565b610881565b6102ba6102b53660046122bb565b6108c1565b6040516001600160a01b03909116815260200161016f565b61018b6102e036600461228f565b6108e0565b610165600081565b6101ce6102fb3660046124bc565b610909565b61016561030e366004611f81565b60009081526005602052604090205490565b6101ce61032e3660046124f8565b610914565b610165610341366004611f81565b6109c1565b610165600080516020612ccf83398151915281565b6101ce61036936600461228f565b6109d8565b61018b61037c366004612544565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101ce6103b836600461256e565b6109fd565b6101ce6103cb3660046125d2565b610a42565b6101656103de366004611f81565b60066020526000908152604090205481565b60006001600160a01b0383166104605760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048582610b1e565b60008181526005602052604090205460609061050d5760405162461bcd60e51b815260206004820152603060248201527f455243313135354d657461646174613a2055524920717565727920666f72206e60448201526f37b732bc34b9ba32b73a103a37b5b2b760811b6064820152608401610457565b60006007805461051c90612605565b9050116105385760405180602001604052806000815250610485565b600761054383610b5e565b60405160200161055492919061265c565b60405160208183030381529060405292915050565b610581600080516020612ccf833981519152336108e0565b61059d5760405162461bcd60e51b815260040161045790612703565b6105a984848484610bf2565b50505050565b6001600160a01b0385163314806105cb57506105cb853361037c565b6105e75760405162461bcd60e51b815260040161045790612755565b6105f48585858585610d3b565b5050505050565b60008281526020819052604090206001015461061681610ed6565b6106208383610ee3565b505050565b6001600160a01b03811633146106955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610457565b61069f8282610f05565b5050565b6106bb600080516020612ccf833981519152336108e0565b6106d75760405162461bcd60e51b815260040161045790612703565b806106ee5750600090815260066020526040812055565b6000828152600660205260408120805483929061070c9084906127b9565b90915550505050565b6060815183511461077a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610457565b600083516001600160401b0381111561079557610795612005565b6040519080825280602002602001820160405280156107be578160200160208202803683370190505b50905060005b8451811015610836576108098582815181106107e2576107e26127d1565b60200260200101518583815181106107fc576107fc6127d1565b60200260200101516103f0565b82828151811061081b5761081b6127d1565b602090810291909101015261082f816127e7565b90506107c4565b509392505050565b6001600160a01b03831633148061085a575061085a833361037c565b6108765760405162461bcd60e51b815260040161045790612802565b610620838383610f27565b610899600080516020612ccf833981519152336108e0565b6108b55760405162461bcd60e51b815260040161045790612703565b6105a9848484846110b4565b60008281526001602052604081206108d9908361118d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61069f338383611199565b61092c600080516020612ccf833981519152336108e0565b6109485760405162461bcd60e51b815260040161045790612703565b60005b825181101561062057818181518110610966576109666127d1565b602002602001015160066000858481518110610984576109846127d1565b6020026020010151815260200190815260200160002060008282546109a991906127b9565b909155508190506109b9816127e7565b91505061094b565b60008181526001602052604081206104859061127a565b6000828152602081905260409020600101546109f381610ed6565b6106208383610f05565b6001600160a01b038516331480610a195750610a19853361037c565b610a355760405162461bcd60e51b815260040161045790612755565b6105f48585858585611284565b6001600160a01b038316331480610a5e5750610a5e833361037c565b610a7a5760405162461bcd60e51b815260040161045790612802565b6106208383836113ae565b610a8f82826108e0565b61069f576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108d9836001600160a01b0384166114b8565b60006001600160e01b03198216636cdb3d1360e11b1480610b4f57506001600160e01b031982166303a24d0760e21b145b80610485575061048582611507565b60606000610b6b8361152c565b60010190506000816001600160401b03811115610b8a57610b8a612005565b6040519080825280601f01601f191660200182016040528015610bb4576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610bed57610836565b610bbe565b6001600160a01b038416610c185760405162461bcd60e51b81526004016104579061284b565b8151835114610c395760405162461bcd60e51b81526004016104579061288c565b33610c4981600087878787611602565b60005b8451811015610ce557838181518110610c6757610c676127d1565b602002602001015160026000878481518110610c8557610c856127d1565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ccd91906127b9565b90915550819050610cdd816127e7565b915050610c4c565b50846001600160a01b031660006001600160a01b0316826001600160a01b0316600080516020612c8f8339815191528787604051610d249291906128d4565b60405180910390a46105f48160008787878761173d565b8151835114610d5c5760405162461bcd60e51b81526004016104579061288c565b6001600160a01b038416610d825760405162461bcd60e51b8152600401610457906128f9565b33610d91818787878787611602565b60005b8451811015610e7a576000858281518110610db157610db16127d1565b602002602001015190506000858381518110610dcf57610dcf6127d1565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610e205760405162461bcd60e51b81526004016104579061293e565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610e5f9084906127b9565b9250508190555050505080610e73906127e7565b9050610d94565b50846001600160a01b0316866001600160a01b0316826001600160a01b0316600080516020612c8f8339815191528787604051610eb89291906128d4565b60405180910390a4610ece81878787878761173d565b505050505050565b610ee081336118a8565b50565b610eed8282610a85565b60008281526001602052604090206106209082610b09565b610f0f8282611901565b60008281526001602052604090206106209082611966565b6001600160a01b038316610f4d5760405162461bcd60e51b815260040161045790612988565b8051825114610f6e5760405162461bcd60e51b81526004016104579061288c565b6000339050610f9181856000868660405180602001604052806000815250611602565b60005b8351811015611059576000848281518110610fb157610fb16127d1565b602002602001015190506000848381518110610fcf57610fcf6127d1565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110205760405162461bcd60e51b8152600401610457906129cb565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580611051816127e7565b915050610f94565b5060006001600160a01b0316846001600160a01b0316826001600160a01b0316600080516020612c8f83398151915286866040516110989291906128d4565b60405180910390a46040805160208101909152600090526105a9565b6001600160a01b0384166110da5760405162461bcd60e51b81526004016104579061284b565b3360006110e68561197b565b905060006110f38561197b565b905061110483600089858589611602565b60008681526002602090815260408083206001600160a01b038b168452909152812080548792906111369084906127b9565b909155505060408051878152602081018790526001600160a01b03808a169260009291871691600080516020612caf833981519152910160405180910390a4611184836000898989896119c6565b50505050505050565b60006108d98383611a90565b816001600160a01b0316836001600160a01b0316141561120d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610457565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610485825490565b6001600160a01b0384166112aa5760405162461bcd60e51b8152600401610457906128f9565b3360006112b68561197b565b905060006112c38561197b565b90506112d3838989858589611602565b60008681526002602090815260408083206001600160a01b038c168452909152902054858110156113165760405162461bcd60e51b81526004016104579061293e565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906113559084906127b9565b909155505060408051888152602081018890526001600160a01b03808b16928c82169291881691600080516020612caf833981519152910160405180910390a46113a3848a8a8a8a8a6119c6565b505050505050505050565b6001600160a01b0383166113d45760405162461bcd60e51b815260040161045790612988565b3360006113e08461197b565b905060006113ed8461197b565b905061140d83876000858560405180602001604052806000815250611602565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114505760405162461bcd60e51b8152600401610457906129cb565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a9052909290881691600080516020612caf833981519152910160405180910390a4604080516020810190915260009052611184565b60008181526001830160205260408120546114ff57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b506000610485565b60006001600160e01b03198216635a05180f60e01b1480610485575061048582611aba565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061156b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310611595576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106115b357662386f26fc10000830492506010015b6305f5e10083106115cb576305f5e100830492506008015b61271083106115df57612710830492506004015b606483106115f1576064830492506002015b600a83106104855760010192915050565b6001600160a01b03851661172f5760005b835181101561172d57600060066000868481518110611634576116346127d1565b6020026020010151815260200190815260200160002054111561171b5760066000858381518110611667576116676127d1565b6020026020010151815260200190815260200160002054838281518110611690576116906127d1565b60200260200101516116c78684815181106116ad576116ad6127d1565b602002602001015160009081526005602052604090205490565b6116d191906127b9565b111561171b5760405162461bcd60e51b8152602060048201526019602482015278455243313135354d696e746572537570706c793a206361702160381b6044820152606401610457565b80611725816127e7565b915050611613565b505b610ece868686868686611aef565b6001600160a01b0384163b15610ece5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117819089908990889088908890600401612a0f565b602060405180830381600087803b15801561179b57600080fd5b505af19250505080156117cb575060408051601f3d908101601f191682019092526117c891810190612a6d565b60015b611878576117d7612a8a565b806308c379a0141561181157506117ec612aa6565b806117f75750611813565b8060405162461bcd60e51b81526004016104579190611ff2565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610457565b6001600160e01b0319811663bc197c8160e01b146111845760405162461bcd60e51b815260040161045790612b2f565b6118b282826108e0565b61069f576118bf81611c68565b6118ca836020611c7a565b6040516020016118db929190612b77565b60408051601f198184030181529082905262461bcd60e51b825261045791600401611ff2565b61190b82826108e0565b1561069f576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108d9836001600160a01b038416611e15565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119b5576119b56127d1565b602090810291909101015292915050565b6001600160a01b0384163b15610ece5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a0a9089908990889088908890600401612be6565b602060405180830381600087803b158015611a2457600080fd5b505af1925050508015611a54575060408051601f3d908101601f19168201909252611a5191810190612a6d565b60015b611a60576117d7612a8a565b6001600160e01b0319811663f23a6e6160e01b146111845760405162461bcd60e51b815260040161045790612b2f565b6000826000018281548110611aa757611aa76127d1565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061048557506301ffc9a760e01b6001600160e01b0319831614610485565b6001600160a01b038516611b765760005b8351811015611b7457828181518110611b1b57611b1b6127d1565b602002602001015160056000868481518110611b3957611b396127d1565b602002602001015181526020019081526020016000206000828254611b5e91906127b9565b90915550611b6d9050816127e7565b9050611b00565b505b6001600160a01b038416610ece5760005b8351811015611184576000848281518110611ba457611ba46127d1565b602002602001015190506000848381518110611bc257611bc26127d1565b6020026020010151905060006005600084815260200190815260200160002054905081811015611c455760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608401610457565b60009283526005602052604090922091039055611c61816127e7565b9050611b87565b60606104856001600160a01b03831660145b60606000611c89836002612c2b565b611c949060026127b9565b6001600160401b03811115611cab57611cab612005565b6040519080825280601f01601f191660200182016040528015611cd5576020820181803683370190505b509050600360fc1b81600081518110611cf057611cf06127d1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611d1f57611d1f6127d1565b60200101906001600160f81b031916908160001a9053506000611d43846002612c2b565b611d4e9060016127b9565b90505b6001811115611dc6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611d8257611d826127d1565b1a60f81b828281518110611d9857611d986127d1565b60200101906001600160f81b031916908160001a90535060049490941c93611dbf81612c4a565b9050611d51565b5083156108d95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610457565b60008181526001830160205260408120548015611efe576000611e39600183612c61565b8554909150600090611e4d90600190612c61565b9050818114611eb2576000866000018281548110611e6d57611e6d6127d1565b9060005260206000200154905080876000018481548110611e9057611e906127d1565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ec357611ec3612c78565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b80356001600160a01b0381168114611f1f57600080fd5b919050565b60008060408385031215611f3757600080fd5b611f4083611f08565b946020939093013593505050565b6001600160e01b031981168114610ee057600080fd5b600060208284031215611f7657600080fd5b81356108d981611f4e565b600060208284031215611f9357600080fd5b5035919050565b60005b83811015611fb5578181015183820152602001611f9d565b838111156105a95750506000910152565b60008151808452611fde816020860160208601611f9a565b601f01601f19169290920160200192915050565b6020815260006108d96020830184611fc6565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561204057612040612005565b6040525050565b60006001600160401b0382111561206057612060612005565b5060051b60200190565b600082601f83011261207b57600080fd5b8135602061208882612047565b604051612095828261201b565b83815260059390931b85018201928281019150868411156120b557600080fd5b8286015b848110156120d057803583529183019183016120b9565b509695505050505050565b600082601f8301126120ec57600080fd5b81356001600160401b0381111561210557612105612005565b60405161211c601f8301601f19166020018261201b565b81815284602083860101111561213157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561216457600080fd5b61216d85611f08565b935060208501356001600160401b038082111561218957600080fd5b6121958883890161206a565b945060408701359150808211156121ab57600080fd5b6121b78883890161206a565b935060608701359150808211156121cd57600080fd5b506121da878288016120db565b91505092959194509250565b600080600080600060a086880312156121fe57600080fd5b61220786611f08565b945061221560208701611f08565b935060408601356001600160401b038082111561223157600080fd5b61223d89838a0161206a565b9450606088013591508082111561225357600080fd5b61225f89838a0161206a565b9350608088013591508082111561227557600080fd5b50612282888289016120db565b9150509295509295909350565b600080604083850312156122a257600080fd5b823591506122b260208401611f08565b90509250929050565b600080604083850312156122ce57600080fd5b50508035926020909101359150565b600080604083850312156122f057600080fd5b82356001600160401b038082111561230757600080fd5b818501915085601f83011261231b57600080fd5b8135602061232882612047565b604051612335828261201b565b83815260059390931b850182019282810191508984111561235557600080fd5b948201945b8386101561237a5761236b86611f08565b8252948201949082019061235a565b9650508601359250508082111561239057600080fd5b5061239d8582860161206a565b9150509250929050565b600081518084526020808501945080840160005b838110156123d7578151875295820195908201906001016123bb565b509495945050505050565b6020815260006108d960208301846123a7565b60008060006060848603121561240a57600080fd5b61241384611f08565b925060208401356001600160401b038082111561242f57600080fd5b61243b8783880161206a565b9350604086013591508082111561245157600080fd5b5061245e8682870161206a565b9150509250925092565b6000806000806080858703121561247e57600080fd5b61248785611f08565b9350602085013592506040850135915060608501356001600160401b038111156124b057600080fd5b6121da878288016120db565b600080604083850312156124cf57600080fd5b6124d883611f08565b9150602083013580151581146124ed57600080fd5b809150509250929050565b6000806040838503121561250b57600080fd5b82356001600160401b038082111561252257600080fd5b61252e8683870161206a565b9350602085013591508082111561239057600080fd5b6000806040838503121561255757600080fd5b61256083611f08565b91506122b260208401611f08565b600080600080600060a0868803121561258657600080fd5b61258f86611f08565b945061259d60208701611f08565b9350604086013592506060860135915060808601356001600160401b038111156125c657600080fd5b612282888289016120db565b6000806000606084860312156125e757600080fd5b6125f084611f08565b95602085013595506040909401359392505050565b600181811c9082168061261957607f821691505b6020821081141561263a57634e487b7160e01b600052602260045260246000fd5b50919050565b60008151612652818560208601611f9a565b9290920192915050565b600080845481600182811c91508083168061267857607f831692505b602080841082141561269857634e487b7160e01b86526022600452602486fd5b8180156126ac57600181146126bd576126ea565b60ff198616895284890196506126ea565b60008b81526020902060005b868110156126e25781548b8201529085019083016126c9565b505084890196505b5050505050506126fa8185612640565b95945050505050565b60208082526032908201527f455243313135354d696e746572537570706c793a206d7573742068617665206d6040820152711a5b9d195c881c9bdb19481d1bc81b5a5b9d60721b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127cc576127cc6127a3565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156127fb576127fb6127a3565b5060010190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6040815260006128e760408301856123a7565b82810360208401526126fa81856123a7565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090612a3b908301866123a7565b8281036060840152612a4d81866123a7565b90508281036080840152612a618185611fc6565b98975050505050505050565b600060208284031215612a7f57600080fd5b81516108d981611f4e565b600060033d1115612aa35760046000803e5060005160e01c5b90565b600060443d1015612ab45790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612ae357505050505090565b8285019150815181811115612afb5750505050505090565b843d8701016020828501011115612b155750505050505090565b612b246020828601018761201b565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612ba9816017850160208801611f9a565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612bda816028840160208801611f9a565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612c2090830184611fc6565b979650505050505050565b6000816000190483118215151615612c4557612c456127a3565b500290565b600081612c5957612c596127a3565b506000190190565b600082821015612c7357612c736127a3565b500390565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fbc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212208665724b2c343fb73f0b7d4335d1cf996734a2c063c3c614246c7e542fe9cc3164736f6c63430008080033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
