{
  "_format": "hh-sol-artifact-1",
  "contractName": "ENSCustody",
  "sourceName": "contracts/custody/ENSCustody.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "CustodyNotEnoughBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "InvalidForwardedToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "InvalidOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "InvalidToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OperationProhibited",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "Unauthorised",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "UnknownToken",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "Parked",
      "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": "recepient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Withdrawal",
      "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": [],
      "name": "NAME",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        }
      ],
      "name": "addMinters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchSafeTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "closeMinter",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "commitment",
          "type": "bytes32"
        }
      ],
      "name": "commit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct IForwarder.ForwardRequest",
          "name": "req",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "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": "controller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wrapper",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "registrar",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "internalTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "secret",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        },
        {
          "internalType": "bool",
          "name": "reverseRecord",
          "type": "bool"
        },
        {
          "internalType": "uint16",
          "name": "ownerControlledFuses",
          "type": "uint16"
        },
        {
          "internalType": "bool",
          "name": "selfCustody",
          "type": "bool"
        }
      ],
      "name": "makeCommitment",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "nonceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "secret",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        },
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        },
        {
          "internalType": "bool",
          "name": "reverseRecord",
          "type": "bool"
        },
        {
          "internalType": "uint16",
          "name": "ownerControlledFuses",
          "type": "uint16"
        },
        {
          "internalType": "bool",
          "name": "selfCustody",
          "type": "bool"
        }
      ],
      "name": "register",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        }
      ],
      "name": "removeMinters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "renew",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "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": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "rentPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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 payable",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "rotateMinter",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseRegistrar",
          "type": "address"
        }
      ],
      "name": "setBaseRegistrar",
      "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": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct IForwarder.ForwardRequest",
          "name": "req",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "verify",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recepient",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613c5480620000f46000396000f3fe60806040526004361061024a5760003560e01c806383e7f6ff11610139578063ac9650d8116100b6578063d53913931161007a578063d539139314610719578063d547741f1461073b578063f14fcbc81461075b578063f23a6e611461077b578063f2fde38b1461079b578063ffa1ad74146107bb57600080fd5b8063ac9650d81461066c578063acf1a84114610699578063bc197c81146106b9578063c0c53b8b146106d9578063cf015853146106f957600080fd5b8063a0e3aef1116100fd578063a0e3aef1146105c0578063a217fddf146105e0578063a3f4df7e146105f5578063a42474001461062c578063aa271e1a1461064c57600080fd5b806383e7f6ff1461052d5780638da5cb5b1461054d57806391d148541461056b578063983b2d561461058b57806398650275146105ab57600080fd5b806351cff8d9116101c75780636a8be89e1161018b5780636a8be89e146104a55780636ccbae5f146104c5578063715018a6146104e557806371e2a657146104fa57806381c81d351461051a57600080fd5b806351cff8d9146103f1578063572b6c05146104115780635fc1964f1461043a578063634486da1461045a5780636352211e1461046d57600080fd5b80632f2ff15d1161020e5780632f2ff15d146103515780633092afd51461037157806336568abe146103915780633e7ba166146103b1578063423f6cef146103d157600080fd5b806301ffc9a714610256578063150b7a021461028b5780631ab93e86146102c45780631bf7e13e146102e6578063248a9ca31461031357600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004612bb2565b6107ec565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a6366004612c32565b610832565b6040516001600160e01b03199091168152602001610282565b3480156102d057600080fd5b506102e46102df366004612ce8565b610984565b005b3480156102f257600080fd5b50610306610301366004612d3c565b610b51565b6040516102829190612def565b34801561031f57600080fd5b5061034361032e366004612e02565b600090815260fb602052604090206001015490565b604051908152602001610282565b34801561035d57600080fd5b506102e461036c366004612e1b565b610c1d565b34801561037d57600080fd5b506102e461038c366004612e4b565b610c47565b34801561039d57600080fd5b506102e46103ac366004612e1b565b610c5b565b3480156103bd57600080fd5b506102e46103cc366004612e68565b610ce9565b3480156103dd57600080fd5b506102e46103ec366004612e68565b610d59565b3480156103fd57600080fd5b506102e461040c366004612e4b565b610e35565b34801561041d57600080fd5b5061027661042c366004612e4b565b6001600160a01b0316301490565b34801561044657600080fd5b506102e4610455366004612efd565b610eee565b6102e4610468366004612e4b565b610f36565b34801561047957600080fd5b5061048d610488366004612e02565b610ff9565b6040516001600160a01b039091168152602001610282565b3480156104b157600080fd5b506102e46104c0366004612e4b565b611004565b3480156104d157600080fd5b506103436104e0366004612e02565b61104d565b3480156104f157600080fd5b506102e4611093565b34801561050657600080fd5b506102e4610515366004612efd565b6110a7565b6102e4610528366004612e4b565b6110ef565b34801561053957600080fd5b50610343610548366004612f9b565b61116c565b34801561055957600080fd5b506097546001600160a01b031661048d565b34801561057757600080fd5b50610276610586366004612e1b565b61120f565b34801561059757600080fd5b506102e46105a6366004612e4b565b61123a565b3480156105b757600080fd5b506102e461124b565b3480156105cc57600080fd5b506103436105db366004613077565b611265565b3480156105ec57600080fd5b50610343600081565b34801561060157600080fd5b506103066040518060400160405280600b81526020016a454e5320437573746f647960a81b81525081565b34801561063857600080fd5b50610276610647366004612d3c565b611311565b34801561065857600080fd5b50610276610667366004612e4b565b611364565b34801561067857600080fd5b5061068c610687366004613150565b61137e565b6040516102829190613191565b3480156106a557600080fd5b506102e46106b4366004612f9b565b61145a565b3480156106c557600080fd5b506102ab6106d43660046131f3565b611613565b3480156106e557600080fd5b506102e46106f43660046132b1565b6116cc565b34801561070557600080fd5b506102e46107143660046132fc565b61186e565b34801561072557600080fd5b50610343600080516020613c0883398151915281565b34801561074757600080fd5b506102e4610756366004612e1b565b61197b565b34801561076757600080fd5b506102e4610776366004612e02565b6119a0565b34801561078757600080fd5b506102ab6107963660046133de565b611a14565b3480156107a757600080fd5b506102e46107b6366004612e4b565b611aa5565b3480156107c757600080fd5b5061030660405180604001604052806005815260200164181718971b60d91b81525081565b60006001600160e01b03198216630a85bd0160e11b148061081d57506001600160e01b03198216630271189760e51b145b8061082c575061082c82611ac1565b92915050565b7ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c5004546000906001600160a01b031680610869611af6565b6001600160a01b031603610962576000808061088786880188613459565b92509250925061089683611b05565b6001600160a01b03841663b88d4fde30600080516020613c28833981519152546040516001600160a01b03909116908c906108dc90879030906000908b906020016134ba565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161090a94939291906134fa565b600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b5050505061094e61094882611b37565b84611bbc565b50630a85bd0160e11b935061097b92505050565b6040516344e7d94960e01b815260040160405180910390fd5b95945050505050565b61098f610667611af6565b6109b45760405162461bcd60e51b81526004016109ab9061352d565b60405180910390fd5b60005b81811015610a4f576000610a1f600080516020613ba18339815191528585858181106109e5576109e5613562565b90506020020135604051602001610a06929190918252602082015260400190565b6040516020818303038152906040528051906020012090565b80546001600160a01b0319166001600160a01b039290921691909117905580610a478161358e565b9150506109b7565b506000816001600160401b03811115610a6a57610a6a612e94565b604051908082528060200260200182016040528015610a93578160200160208202803683370190505b50905060005b8151811015610ad3576001828281518110610ab657610ab6613562565b602090810291909101015280610acb8161358e565b915050610a99565b50600080516020613c2883398151915254604051631759616b60e11b81526001600160a01b0390911690632eb2c2d690610b1990309088908890889088906004016135a7565b600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b5050505050505050565b606060005a9050610b63858585611311565b610b8057604051638baa579f60e01b815260040160405180910390fd5b610c12610b906020870187612e4b565b30604088013584610ba460608b018b613656565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250611c3592505050565b9150505b9392505050565b600082815260fb6020526040902060010154610c3881611d16565b610c428383611d27565b505050565b610c4f611dae565b610c5881611e27565b50565b610c63611af6565b6001600160a01b0316816001600160a01b031614610cdb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016109ab565b610ce58282611e3f565b5050565b80610cf2611af6565b6001600160a01b0316610d0482611ec4565b6001600160a01b031614610d465780610d1b611af6565b604051637ea58b1160e01b815260048101929092526001600160a01b031660248201526044016109ab565b610d4f82611fc8565b610c428284611bbc565b80610d62611af6565b6001600160a01b0316610d7482611ec4565b6001600160a01b031614610d8b5780610d1b611af6565b610d9482611fc8565b60408051600080516020613ba18339815191526020820152908101839052600090610dc190606001610a06565b80546001600160a01b0319166001600160a01b03928316179055600080516020613c2883398151915254604051637921219560e11b81523060048201528583166024820152604481018590526001606482015260a06084820152600060a4820152911690819063f242432a9060c401610b19565b610e40610667611af6565b610e5c5760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610e6f57600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ea7573d6000803e3d6000fd5b50604080516001600160a01b0384168152602081018390527f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65910160405180910390a15050565b610ef6611dae565b60005b8151811015610ce557610f24828281518110610f1757610f17613562565b6020026020010151611e27565b80610f2e8161358e565b915050610ef9565b610f41610667611af6565b610f5d5760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610fb35760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d50545900000060448201526064016109ab565b610fbc81611fe1565b610fc461124b565b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610ce5573d6000803e3d6000fd5b600061082c82611ec4565b61100c611dae565b7ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c500480546001600160a01b0319166001600160a01b0392909216919091179055565b604080517f1ee5d87a048b728f67073f282321992c260e5be4fa651d08665c5b4ee7a83815602082015290810182905260009061108c90606001610a06565b5492915050565b61109b611dae565b6110a56000611ff9565b565b6110af611dae565b60005b8151811015610ce5576110dd8282815181106110d0576110d0613562565b6020026020010151611fe1565b806110e78161358e565b9150506110b2565b6110fa610667611af6565b6111165760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610fbc5760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d50545900000060448201526064016109ab565b600080516020613bc1833981519152546040516383e7f6ff60e01b81526000916001600160a01b031690829082906383e7f6ff906111b2908990899089906004016136c5565b6040805180830381865afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136e9565b6020810151815191925061120591613737565b9695505050505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611242611dae565b610c5881611fe1565b6110a5600080516020613c088339815191526103ac611af6565b600080516020613bc1833981519152546000906001600160a01b0316806365a69dcf8d856112935730611295565b8d5b8d8d8d8d8d8d8d6040518a63ffffffff1660e01b81526004016112c0999897969594939291906137db565b602060405180830381865afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061384b565b9c9b505050505050505050505050565b600061135c61131f85613864565b3085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204b92505050565b949350505050565b600061082c600080516020613c088339815191528361120f565b6060600061138c83856138ee565b90503033036114515760005b8381101561144f5761141f6113ab611af6565b6113b361218a565b8787858181106113c5576113c5613562565b90506020028101906113d79190613656565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925061219e915050565b82828151811061143157611431613562565b602002602001018190525080806114479061358e565b915050611398565b505b61135c816121ce565b611465610667611af6565b6114815760405162461bcd60e51b81526004016109ab9061352d565b6002603354036114d35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109ab565b6002603355600080516020613bc1833981519152546040516383e7f6ff60e01b81526001600160a01b039091169060009082906383e7f6ff9061151e908890889088906004016136c5565b6040805180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e91906136e9565b6020810151815191925061157191613737565b4710156115915760405163050205f960e01b815260040160405180910390fd5b816001600160a01b031663acf1a841826020015183600001516115b49190613737565b8787876040518563ffffffff1660e01b81526004016115d5939291906136c5565b6000604051808303818588803b1580156115ee57600080fd5b505af1158015611602573d6000803e3d6000fd5b505060016033555050505050505050565b6000600080516020613c28833981519152546001600160a01b0316611636611af6565b6001600160a01b03161461165d576040516344e7d94960e01b815260040160405180910390fd5b600061166b83850185612e4b565b905061167681611b05565b60005b878110156116b5576116a389898381811061169657611696613562565b9050602002013583611bbc565b806116ad8161358e565b915050611679565b5063bc197c8160e01b9a9950505050505050505050565b600054610100900460ff16158080156116ec5750600054600160ff909116105b806117065750303b158015611706575060005460ff166001145b6117695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ab565b6000805460ff19166001179055801561178c576000805461ff0019166101001790555b600080516020613bc183398151915280546001600160a01b038087166001600160a01b031992831617909255600080516020613c2883398151915280548684169083161790557ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c500480549285169290911691909117905561180a6122ff565b61181261232e565b61181a612365565b61182261238c565b8015611868576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b611879610667611af6565b6118955760405162461bcd60e51b81526004016109ab9061352d565b6002603354036118e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109ab565b600260338190555060006119308c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b3792505050565b905061193b81611fc8565b6119598c8c8461194b573061194d565b8c5b8c8c8c8c8c8c8c6123cb565b8161196857611968818b611bbc565b5050600160335550505050505050505050565b600082815260fb602052604090206001015461199681611d16565b610c428383611e3f565b6000600080516020613bc183398151915254604051631e29f97960e31b8152600481018490526001600160a01b039091169150819063f14fcbc890602401600060405180830381600087803b1580156119f857600080fd5b505af1158015611a0c573d6000803e3d6000fd5b505050505050565b6000600080516020613c28833981519152546001600160a01b0316611a37611af6565b6001600160a01b031614611a5e576040516344e7d94960e01b815260040160405180910390fd5b6001600160a01b03861615611a92576000611a7b83850185612e4b565b9050611a8681611b05565b611a908682611bbc565b505b5063f23a6e6160e01b9695505050505050565b611aad611dae565b611ab681612516565b610c5860008261258c565b60006001600160e01b03198216637965db0b60e01b148061082c57506301ffc9a760e01b6001600160e01b031983161461082c565b6000611b00612596565b905090565b6001600160a01b038116610c585760405163b20f76e360e01b81526001600160a01b03821660048201526024016109ab565b60007f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60001b82604051602001611b6e9190613961565b60405160208183030381529060405280519060200120604051602001611b9e929190918252602082015260400190565b60408051601f19818403018152919052805160209091012092915050565b60408051600080516020613ba183398151915260208201529081018390528190611be890606001610a06565b80546001600160a01b0319166001600160a01b039283161790556040519082169083907f45aa97e368889fb3527c1db60c59c2ae91e82f21778613449e46d4208c1c4b1290600090a35050565b6060611c40856125b1565b600080876001600160a01b031686611c5a8b8a898961219e565b604051611c679190613961565b60006040518083038160008787f1925050503d8060008114611ca5576040519150601f19603f3d011682016040523d82523d6000602084013e611caa565b606091505b509092509050611cbb603f8761397d565b5a11611cc957611cc961399f565b611d0982826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c4544000000000000815250612617565b9998505050505050505050565b610c5881611d22611af6565b612650565b611d31828261120f565b610ce557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d6a611af6565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611db6611af6565b6001600160a01b0316611dd16097546001600160a01b031690565b6001600160a01b0316146110a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109ab565b610c58600080516020613c088339815191528261197b565b611e49828261120f565b15610ce557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19169055611e80611af6565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60408051600080516020613ba18339815191526020820152908101829052600090611ef190606001610a06565b546001600160a01b0316905080611f1e5760405163124bad6360e31b8152600481018390526024016109ab565b30600080516020613c28833981519152546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9991906139b5565b6001600160a01b031614611fc3576040516303b673fd60e21b8152600481018390526024016109ab565b919050565b303303611fd857610c58816126b4565b610c58816125b1565b610c58600080516020613c088339815191528261258c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040838101519051636ccbae5f60e01b8152600481019190915260009081903090636ccbae5f90602401602060405180830381865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b6919061384b565b905060006121648660600151805190602001208688602001516040516020016121049392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b905081866020015114801561120557508551611205906001600160a01b031682866126de565b600030330361219b5750601f193601355b90565b60608285856040516020016121b5939291906139d2565b6040516020818303038152906040529050949350505050565b606081516001600160401b038111156121e9576121e9612e94565b60405190808252806020026020018201604052801561221c57816020015b60608152602001906001900390816122075790505b50905060005b82518110156122f957600080306001600160a01b031685848151811061224a5761224a613562565b602002602001015160405161225f9190613961565b600060405180830381855af49150503d806000811461229a576040519150601f19603f3d011682016040523d82523d6000602084013e61229f565b606091505b50915091506122c78282604051806060016040528060278152602001613be160279139612617565b8484815181106122d9576122d9613562565b6020026020010181905250505080806122f19061358e565b915050612222565b50919050565b600054610100900460ff166123265760405162461bcd60e51b81526004016109ab90613a11565b6110a5612820565b600054610100900460ff166123555760405162461bcd60e51b81526004016109ab90613a11565b61235d61284e565b6110a561284e565b600054610100900460ff1661235d5760405162461bcd60e51b81526004016109ab90613a11565b600054610100900460ff166123b35760405162461bcd60e51b81526004016109ab90613a11565b6123bb612875565b6123c361284e565b6110a56128ac565b600080516020613bc1833981519152546040516383e7f6ff60e01b81526001600160a01b039091169060009082906383e7f6ff90612411908f908f908e906004016136c5565b6040805180830381865afa15801561242d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245191906136e9565b6020810151815191925061246491613737565b4710156124845760405163050205f960e01b815260040160405180910390fd5b816001600160a01b03166374694a2b826020015183600001516124a79190613737565b8e8e8e8e8e8e8e8e8e8e6040518c63ffffffff1660e01b81526004016124d69a99989796959493929190613a5c565b6000604051808303818588803b1580156124ef57600080fd5b505af1158015612503573d6000803e3d6000fd5b5050505050505050505050505050505050565b61251e611dae565b6001600160a01b0381166125835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ab565b610c5881611ff9565b610ce58282611d27565b60003033036125ac575060331936013560601c90565b503390565b604080517f1ee5d87a048b728f67073f282321992c260e5be4fa651d08665c5b4ee7a8381560208201529081018290526000906060016040516020818303038152906040528051906020012090506126068190565b54612612906001613737565b905550565b60608315612626575081610c16565b8251156126365782518084602001fd5b8160405162461bcd60e51b81526004016109ab9190612def565b61265a828261120f565b610ce557612672816001600160a01b031660146128e5565b61267d8360206128e5565b60405160200161268e929190613ace565b60408051601f198184030181529082905262461bcd60e51b82526109ab91600401612def565b6126bc61218a565b8114610c5857604051635637b6af60e11b8152600481018290526024016109ab565b60008060006126ed8585612a80565b9092509050600081600481111561270657612706613b43565b1480156127245750856001600160a01b0316826001600160a01b0316145b1561273457600192505050610c16565b600080876001600160a01b0316631626ba7e60e01b888860405160240161275c929190613b59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161279a9190613961565b600060405180830381855afa9150503d80600081146127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50915091508180156127ed575080516020145b801561281457508051630b135d3f60e11b90612812908301602090810190840161384b565b145b98975050505050505050565b600054610100900460ff166128475760405162461bcd60e51b81526004016109ab90613a11565b6001603355565b600054610100900460ff166110a55760405162461bcd60e51b81526004016109ab90613a11565b600054610100900460ff1661289c5760405162461bcd60e51b81526004016109ab90613a11565b6110a56128a7611af6565b611ff9565b600054610100900460ff166128d35760405162461bcd60e51b81526004016109ab90613a11565b6110a560006128e0611af6565b61258c565b606060006128f4836002613b72565b6128ff906002613737565b6001600160401b0381111561291657612916612e94565b6040519080825280601f01601f191660200182016040528015612940576020820181803683370190505b509050600360fc1b8160008151811061295b5761295b613562565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061298a5761298a613562565b60200101906001600160f81b031916908160001a90535060006129ae846002613b72565b6129b9906001613737565b90505b6001811115612a31576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106129ed576129ed613562565b1a60f81b828281518110612a0357612a03613562565b60200101906001600160f81b031916908160001a90535060049490941c93612a2a81613b89565b90506129bc565b508315610c165760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109ab565b6000808251604103612ab65760208301516040840151606085015160001a612aaa87828585612ac5565b94509450505050612abe565b506000905060025b9250929050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612afc5750600090506003612ba9565b8460ff16601b14158015612b1457508460ff16601c14155b15612b255750600090506004612ba9565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612ba257600060019250925050612ba9565b9150600090505b94509492505050565b600060208284031215612bc457600080fd5b81356001600160e01b031981168114610c1657600080fd5b6001600160a01b0381168114610c5857600080fd5b60008083601f840112612c0357600080fd5b5081356001600160401b03811115612c1a57600080fd5b602083019150836020828501011115612abe57600080fd5b600080600080600060808688031215612c4a57600080fd5b8535612c5581612bdc565b94506020860135612c6581612bdc565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b612c9388828901612bf1565b969995985093965092949392505050565b60008083601f840112612cb657600080fd5b5081356001600160401b03811115612ccd57600080fd5b6020830191508360208260051b8501011115612abe57600080fd5b600080600060408486031215612cfd57600080fd5b8335612d0881612bdc565b925060208401356001600160401b03811115612d2357600080fd5b612d2f86828701612ca4565b9497909650939450505050565b600080600060408486031215612d5157600080fd5b83356001600160401b0380821115612d6857600080fd5b9085019060808288031215612d7c57600080fd5b90935060208501359080821115612d9257600080fd5b50612d2f86828701612bf1565b60005b83811015612dba578181015183820152602001612da2565b50506000910152565b60008151808452612ddb816020860160208601612d9f565b601f01601f19169290920160200192915050565b602081526000610c166020830184612dc3565b600060208284031215612e1457600080fd5b5035919050565b60008060408385031215612e2e57600080fd5b823591506020830135612e4081612bdc565b809150509250929050565b600060208284031215612e5d57600080fd5b8135610c1681612bdc565b60008060408385031215612e7b57600080fd5b8235612e8681612bdc565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ed257612ed2612e94565b604052919050565b60006001600160401b03821115612ef357612ef3612e94565b5060051b60200190565b60006020808385031215612f1057600080fd5b82356001600160401b03811115612f2657600080fd5b8301601f81018513612f3757600080fd5b8035612f4a612f4582612eda565b612eaa565b81815260059190911b82018301908381019087831115612f6957600080fd5b928401925b82841015612f90578335612f8181612bdc565b82529284019290840190612f6e565b979650505050505050565b600080600060408486031215612fb057600080fd5b83356001600160401b03811115612fc657600080fd5b612fd286828701612bf1565b909790965060209590950135949350505050565b600082601f830112612ff757600080fd5b81356001600160401b0381111561301057613010612e94565b613023601f8201601f1916602001612eaa565b81815284602083860101111561303857600080fd5b816020850160208301376000918101602001919091529392505050565b80358015158114611fc357600080fd5b803561ffff81168114611fc357600080fd5b6000806000806000806000806000806101208b8d03121561309757600080fd5b8a356001600160401b03808211156130ae57600080fd5b6130ba8e838f01612fe6565b9b5060208d013591506130cc82612bdc565b90995060408c0135985060608c0135975060808c0135906130ec82612bdc565b90965060a08c0135908082111561310257600080fd5b5061310f8d828e01612ca4565b9096509450613122905060c08c01613055565b925061313060e08c01613065565b915061313f6101008c01613055565b90509295989b9194979a5092959850565b6000806020838503121561316357600080fd5b82356001600160401b0381111561317957600080fd5b61318585828601612ca4565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156131e657603f198886030184526131d4858351612dc3565b945092850192908501906001016131b8565b5092979650505050505050565b60008060008060008060008060a0898b03121561320f57600080fd5b883561321a81612bdc565b9750602089013561322a81612bdc565b965060408901356001600160401b038082111561324657600080fd5b6132528c838d01612ca4565b909850965060608b013591508082111561326b57600080fd5b6132778c838d01612ca4565b909650945060808b013591508082111561329057600080fd5b5061329d8b828c01612bf1565b999c989b5096995094979396929594505050565b6000806000606084860312156132c657600080fd5b83356132d181612bdc565b925060208401356132e181612bdc565b915060408401356132f181612bdc565b809150509250925092565b60008060008060008060008060008060006101208c8e03121561331e57600080fd5b6001600160401b03808d35111561333457600080fd5b6133418e8e358f01612bf1565b909c509a5061335360208e0135612bdc565b60208d0135995060408d0135985060608d0135975061337560808e0135612bdc565b60808d013596508060a08e0135111561338d57600080fd5b5061339e8d60a08e01358e01612ca4565b90955093506133af60c08d01613055565b92506133bd60e08d01613065565b91506133cc6101008d01613055565b90509295989b509295989b9093969950565b60008060008060008060a087890312156133f757600080fd5b863561340281612bdc565b9550602087013561341281612bdc565b9450604087013593506060870135925060808701356001600160401b0381111561343b57600080fd5b61344789828a01612bf1565b979a9699509497509295939492505050565b60008060006060848603121561346e57600080fd5b833561347981612bdc565b9250602084013561348981612bdc565b915060408401356001600160401b038111156134a457600080fd5b6134b086828701612fe6565b9150509250925092565b6080815260006134cd6080830187612dc3565b6001600160a01b03958616602084015261ffff949094166040830152509216606090920191909152919050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120590830184612dc3565b6020808252818101527f4d696e746572526f6c653a2043414c4c45525f49535f4e4f545f4d494e544552604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016135a0576135a0613578565b5060010190565b6001600160a01b03868116825285811660208084019190915260a0604084018190528301859052600091906001600160fb1b038611156135e657600080fd5b8560051b9150818760c086013760c09184018481038301606086015285519281018390528582019260009160e001905b808310156136365784518252938301936001929092019190830190613616565b50858103608087015260008152602081019b9a5050505050505050505050565b6000808335601e1984360301811261366d57600080fd5b8301803591506001600160401b0382111561368757600080fd5b602001915036819003821315612abe57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006136d960408301858761369c565b9050826020830152949350505050565b6000604082840312156136fb57600080fd5b604051604081018181106001600160401b038211171561371d5761371d612e94565b604052825181526020928301519281019290925250919050565b8082018082111561082c5761082c613578565b81835260006020808501808196508560051b810191508460005b878110156137ce5782840389528135601e1988360301811261378557600080fd5b870185810190356001600160401b038111156137a057600080fd5b8036038213156137af57600080fd5b6137ba86828461369c565b9a87019a9550505090840190600101613764565b5091979650505050505050565b60006101008083526137ef8184018d612dc3565b6001600160a01b038c81166020860152604085018c9052606085018b90528916608085015283810360a0850152905061382981878961374a565b94151560c0840152505061ffff9190911660e090910152979650505050505050565b60006020828403121561385d57600080fd5b5051919050565b60006080823603121561387657600080fd5b604051608081016001600160401b03828210818311171561389957613899612e94565b81604052843591506138aa82612bdc565b818352602085013560208401526040850135604084015260608501359150808211156138d557600080fd5b506138e236828601612fe6565b60608301525092915050565b60006138fc612f4584612eda565b80848252602080830192508560051b85013681111561391a57600080fd5b855b818110156139555780356001600160401b0381111561393b5760008081fd5b61394736828a01612fe6565b86525093820193820161391c565b50919695505050505050565b60008251613973818460208701612d9f565b9190910192915050565b60008261399a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156139c757600080fd5b8151610c1681612bdc565b600084516139e4818460208901612d9f565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000610100808352613a718184018d8f61369c565b6001600160a01b038c81166020860152604085018c9052606085018b90528916608085015283810360a08501529050613aab81878961374a565b94151560c0840152505061ffff9190911660e09091015298975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613b06816017850160208801612d9f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613b37816028840160208801612d9f565b01602801949350505050565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061135c6040830184612dc3565b808202811582820484141761082c5761082c613578565b600081613b9857613b98613578565b50600019019056fe0a8885dd093a12d378a27df09bde33e3caca641a3d6970e06805fde8e847cb46412386de53449251cbf7ce1f4c6a038bf9c0746e62d331b08ef0c3fa7d0ab672416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660793a5062d506d35cc8f1beda67ee5028c16bfcd9c923d5bfc439c04bd929b1a164736f6c6343000811000a",
  "deployedBytecode": "0x60806040526004361061024a5760003560e01c806383e7f6ff11610139578063ac9650d8116100b6578063d53913931161007a578063d539139314610719578063d547741f1461073b578063f14fcbc81461075b578063f23a6e611461077b578063f2fde38b1461079b578063ffa1ad74146107bb57600080fd5b8063ac9650d81461066c578063acf1a84114610699578063bc197c81146106b9578063c0c53b8b146106d9578063cf015853146106f957600080fd5b8063a0e3aef1116100fd578063a0e3aef1146105c0578063a217fddf146105e0578063a3f4df7e146105f5578063a42474001461062c578063aa271e1a1461064c57600080fd5b806383e7f6ff1461052d5780638da5cb5b1461054d57806391d148541461056b578063983b2d561461058b57806398650275146105ab57600080fd5b806351cff8d9116101c75780636a8be89e1161018b5780636a8be89e146104a55780636ccbae5f146104c5578063715018a6146104e557806371e2a657146104fa57806381c81d351461051a57600080fd5b806351cff8d9146103f1578063572b6c05146104115780635fc1964f1461043a578063634486da1461045a5780636352211e1461046d57600080fd5b80632f2ff15d1161020e5780632f2ff15d146103515780633092afd51461037157806336568abe146103915780633e7ba166146103b1578063423f6cef146103d157600080fd5b806301ffc9a714610256578063150b7a021461028b5780631ab93e86146102c45780631bf7e13e146102e6578063248a9ca31461031357600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004612bb2565b6107ec565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a6366004612c32565b610832565b6040516001600160e01b03199091168152602001610282565b3480156102d057600080fd5b506102e46102df366004612ce8565b610984565b005b3480156102f257600080fd5b50610306610301366004612d3c565b610b51565b6040516102829190612def565b34801561031f57600080fd5b5061034361032e366004612e02565b600090815260fb602052604090206001015490565b604051908152602001610282565b34801561035d57600080fd5b506102e461036c366004612e1b565b610c1d565b34801561037d57600080fd5b506102e461038c366004612e4b565b610c47565b34801561039d57600080fd5b506102e46103ac366004612e1b565b610c5b565b3480156103bd57600080fd5b506102e46103cc366004612e68565b610ce9565b3480156103dd57600080fd5b506102e46103ec366004612e68565b610d59565b3480156103fd57600080fd5b506102e461040c366004612e4b565b610e35565b34801561041d57600080fd5b5061027661042c366004612e4b565b6001600160a01b0316301490565b34801561044657600080fd5b506102e4610455366004612efd565b610eee565b6102e4610468366004612e4b565b610f36565b34801561047957600080fd5b5061048d610488366004612e02565b610ff9565b6040516001600160a01b039091168152602001610282565b3480156104b157600080fd5b506102e46104c0366004612e4b565b611004565b3480156104d157600080fd5b506103436104e0366004612e02565b61104d565b3480156104f157600080fd5b506102e4611093565b34801561050657600080fd5b506102e4610515366004612efd565b6110a7565b6102e4610528366004612e4b565b6110ef565b34801561053957600080fd5b50610343610548366004612f9b565b61116c565b34801561055957600080fd5b506097546001600160a01b031661048d565b34801561057757600080fd5b50610276610586366004612e1b565b61120f565b34801561059757600080fd5b506102e46105a6366004612e4b565b61123a565b3480156105b757600080fd5b506102e461124b565b3480156105cc57600080fd5b506103436105db366004613077565b611265565b3480156105ec57600080fd5b50610343600081565b34801561060157600080fd5b506103066040518060400160405280600b81526020016a454e5320437573746f647960a81b81525081565b34801561063857600080fd5b50610276610647366004612d3c565b611311565b34801561065857600080fd5b50610276610667366004612e4b565b611364565b34801561067857600080fd5b5061068c610687366004613150565b61137e565b6040516102829190613191565b3480156106a557600080fd5b506102e46106b4366004612f9b565b61145a565b3480156106c557600080fd5b506102ab6106d43660046131f3565b611613565b3480156106e557600080fd5b506102e46106f43660046132b1565b6116cc565b34801561070557600080fd5b506102e46107143660046132fc565b61186e565b34801561072557600080fd5b50610343600080516020613c0883398151915281565b34801561074757600080fd5b506102e4610756366004612e1b565b61197b565b34801561076757600080fd5b506102e4610776366004612e02565b6119a0565b34801561078757600080fd5b506102ab6107963660046133de565b611a14565b3480156107a757600080fd5b506102e46107b6366004612e4b565b611aa5565b3480156107c757600080fd5b5061030660405180604001604052806005815260200164181718971b60d91b81525081565b60006001600160e01b03198216630a85bd0160e11b148061081d57506001600160e01b03198216630271189760e51b145b8061082c575061082c82611ac1565b92915050565b7ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c5004546000906001600160a01b031680610869611af6565b6001600160a01b031603610962576000808061088786880188613459565b92509250925061089683611b05565b6001600160a01b03841663b88d4fde30600080516020613c28833981519152546040516001600160a01b03909116908c906108dc90879030906000908b906020016134ba565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161090a94939291906134fa565b600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b5050505061094e61094882611b37565b84611bbc565b50630a85bd0160e11b935061097b92505050565b6040516344e7d94960e01b815260040160405180910390fd5b95945050505050565b61098f610667611af6565b6109b45760405162461bcd60e51b81526004016109ab9061352d565b60405180910390fd5b60005b81811015610a4f576000610a1f600080516020613ba18339815191528585858181106109e5576109e5613562565b90506020020135604051602001610a06929190918252602082015260400190565b6040516020818303038152906040528051906020012090565b80546001600160a01b0319166001600160a01b039290921691909117905580610a478161358e565b9150506109b7565b506000816001600160401b03811115610a6a57610a6a612e94565b604051908082528060200260200182016040528015610a93578160200160208202803683370190505b50905060005b8151811015610ad3576001828281518110610ab657610ab6613562565b602090810291909101015280610acb8161358e565b915050610a99565b50600080516020613c2883398151915254604051631759616b60e11b81526001600160a01b0390911690632eb2c2d690610b1990309088908890889088906004016135a7565b600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b5050505050505050565b606060005a9050610b63858585611311565b610b8057604051638baa579f60e01b815260040160405180910390fd5b610c12610b906020870187612e4b565b30604088013584610ba460608b018b613656565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250611c3592505050565b9150505b9392505050565b600082815260fb6020526040902060010154610c3881611d16565b610c428383611d27565b505050565b610c4f611dae565b610c5881611e27565b50565b610c63611af6565b6001600160a01b0316816001600160a01b031614610cdb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016109ab565b610ce58282611e3f565b5050565b80610cf2611af6565b6001600160a01b0316610d0482611ec4565b6001600160a01b031614610d465780610d1b611af6565b604051637ea58b1160e01b815260048101929092526001600160a01b031660248201526044016109ab565b610d4f82611fc8565b610c428284611bbc565b80610d62611af6565b6001600160a01b0316610d7482611ec4565b6001600160a01b031614610d8b5780610d1b611af6565b610d9482611fc8565b60408051600080516020613ba18339815191526020820152908101839052600090610dc190606001610a06565b80546001600160a01b0319166001600160a01b03928316179055600080516020613c2883398151915254604051637921219560e11b81523060048201528583166024820152604481018590526001606482015260a06084820152600060a4820152911690819063f242432a9060c401610b19565b610e40610667611af6565b610e5c5760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610e6f57600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ea7573d6000803e3d6000fd5b50604080516001600160a01b0384168152602081018390527f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65910160405180910390a15050565b610ef6611dae565b60005b8151811015610ce557610f24828281518110610f1757610f17613562565b6020026020010151611e27565b80610f2e8161358e565b915050610ef9565b610f41610667611af6565b610f5d5760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610fb35760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d50545900000060448201526064016109ab565b610fbc81611fe1565b610fc461124b565b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610ce5573d6000803e3d6000fd5b600061082c82611ec4565b61100c611dae565b7ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c500480546001600160a01b0319166001600160a01b0392909216919091179055565b604080517f1ee5d87a048b728f67073f282321992c260e5be4fa651d08665c5b4ee7a83815602082015290810182905260009061108c90606001610a06565b5492915050565b61109b611dae565b6110a56000611ff9565b565b6110af611dae565b60005b8151811015610ce5576110dd8282815181106110d0576110d0613562565b6020026020010151611fe1565b806110e78161358e565b9150506110b2565b6110fa610667611af6565b6111165760405162461bcd60e51b81526004016109ab9061352d565b6001600160a01b038116610fbc5760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d50545900000060448201526064016109ab565b600080516020613bc1833981519152546040516383e7f6ff60e01b81526000916001600160a01b031690829082906383e7f6ff906111b2908990899089906004016136c5565b6040805180830381865afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136e9565b6020810151815191925061120591613737565b9695505050505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611242611dae565b610c5881611fe1565b6110a5600080516020613c088339815191526103ac611af6565b600080516020613bc1833981519152546000906001600160a01b0316806365a69dcf8d856112935730611295565b8d5b8d8d8d8d8d8d8d6040518a63ffffffff1660e01b81526004016112c0999897969594939291906137db565b602060405180830381865afa1580156112dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611301919061384b565b9c9b505050505050505050505050565b600061135c61131f85613864565b3085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204b92505050565b949350505050565b600061082c600080516020613c088339815191528361120f565b6060600061138c83856138ee565b90503033036114515760005b8381101561144f5761141f6113ab611af6565b6113b361218a565b8787858181106113c5576113c5613562565b90506020028101906113d79190613656565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925061219e915050565b82828151811061143157611431613562565b602002602001018190525080806114479061358e565b915050611398565b505b61135c816121ce565b611465610667611af6565b6114815760405162461bcd60e51b81526004016109ab9061352d565b6002603354036114d35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109ab565b6002603355600080516020613bc1833981519152546040516383e7f6ff60e01b81526001600160a01b039091169060009082906383e7f6ff9061151e908890889088906004016136c5565b6040805180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e91906136e9565b6020810151815191925061157191613737565b4710156115915760405163050205f960e01b815260040160405180910390fd5b816001600160a01b031663acf1a841826020015183600001516115b49190613737565b8787876040518563ffffffff1660e01b81526004016115d5939291906136c5565b6000604051808303818588803b1580156115ee57600080fd5b505af1158015611602573d6000803e3d6000fd5b505060016033555050505050505050565b6000600080516020613c28833981519152546001600160a01b0316611636611af6565b6001600160a01b03161461165d576040516344e7d94960e01b815260040160405180910390fd5b600061166b83850185612e4b565b905061167681611b05565b60005b878110156116b5576116a389898381811061169657611696613562565b9050602002013583611bbc565b806116ad8161358e565b915050611679565b5063bc197c8160e01b9a9950505050505050505050565b600054610100900460ff16158080156116ec5750600054600160ff909116105b806117065750303b158015611706575060005460ff166001145b6117695760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ab565b6000805460ff19166001179055801561178c576000805461ff0019166101001790555b600080516020613bc183398151915280546001600160a01b038087166001600160a01b031992831617909255600080516020613c2883398151915280548684169083161790557ff851d5f4fccb32d2a48561b7acc01b5d4d46b7e138d49f887026f203b08c500480549285169290911691909117905561180a6122ff565b61181261232e565b61181a612365565b61182261238c565b8015611868576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b611879610667611af6565b6118955760405162461bcd60e51b81526004016109ab9061352d565b6002603354036118e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016109ab565b600260338190555060006119308c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b3792505050565b905061193b81611fc8565b6119598c8c8461194b573061194d565b8c5b8c8c8c8c8c8c8c6123cb565b8161196857611968818b611bbc565b5050600160335550505050505050505050565b600082815260fb602052604090206001015461199681611d16565b610c428383611e3f565b6000600080516020613bc183398151915254604051631e29f97960e31b8152600481018490526001600160a01b039091169150819063f14fcbc890602401600060405180830381600087803b1580156119f857600080fd5b505af1158015611a0c573d6000803e3d6000fd5b505050505050565b6000600080516020613c28833981519152546001600160a01b0316611a37611af6565b6001600160a01b031614611a5e576040516344e7d94960e01b815260040160405180910390fd5b6001600160a01b03861615611a92576000611a7b83850185612e4b565b9050611a8681611b05565b611a908682611bbc565b505b5063f23a6e6160e01b9695505050505050565b611aad611dae565b611ab681612516565b610c5860008261258c565b60006001600160e01b03198216637965db0b60e01b148061082c57506301ffc9a760e01b6001600160e01b031983161461082c565b6000611b00612596565b905090565b6001600160a01b038116610c585760405163b20f76e360e01b81526001600160a01b03821660048201526024016109ab565b60007f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae60001b82604051602001611b6e9190613961565b60405160208183030381529060405280519060200120604051602001611b9e929190918252602082015260400190565b60408051601f19818403018152919052805160209091012092915050565b60408051600080516020613ba183398151915260208201529081018390528190611be890606001610a06565b80546001600160a01b0319166001600160a01b039283161790556040519082169083907f45aa97e368889fb3527c1db60c59c2ae91e82f21778613449e46d4208c1c4b1290600090a35050565b6060611c40856125b1565b600080876001600160a01b031686611c5a8b8a898961219e565b604051611c679190613961565b60006040518083038160008787f1925050503d8060008114611ca5576040519150601f19603f3d011682016040523d82523d6000602084013e611caa565b606091505b509092509050611cbb603f8761397d565b5a11611cc957611cc961399f565b611d0982826040518060400160405280601a81526020017f42617365466f727761726465723a2043414c4c5f4641494c4544000000000000815250612617565b9998505050505050505050565b610c5881611d22611af6565b612650565b611d31828261120f565b610ce557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611d6a611af6565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611db6611af6565b6001600160a01b0316611dd16097546001600160a01b031690565b6001600160a01b0316146110a55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109ab565b610c58600080516020613c088339815191528261197b565b611e49828261120f565b15610ce557600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff19169055611e80611af6565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60408051600080516020613ba18339815191526020820152908101829052600090611ef190606001610a06565b546001600160a01b0316905080611f1e5760405163124bad6360e31b8152600481018390526024016109ab565b30600080516020613c28833981519152546040516331a9108f60e11b8152600481018590526001600160a01b0390911690636352211e90602401602060405180830381865afa158015611f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9991906139b5565b6001600160a01b031614611fc3576040516303b673fd60e21b8152600481018390526024016109ab565b919050565b303303611fd857610c58816126b4565b610c58816125b1565b610c58600080516020613c088339815191528261258c565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040838101519051636ccbae5f60e01b8152600481019190915260009081903090636ccbae5f90602401602060405180830381865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b6919061384b565b905060006121648660600151805190602001208688602001516040516020016121049392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b905081866020015114801561120557508551611205906001600160a01b031682866126de565b600030330361219b5750601f193601355b90565b60608285856040516020016121b5939291906139d2565b6040516020818303038152906040529050949350505050565b606081516001600160401b038111156121e9576121e9612e94565b60405190808252806020026020018201604052801561221c57816020015b60608152602001906001900390816122075790505b50905060005b82518110156122f957600080306001600160a01b031685848151811061224a5761224a613562565b602002602001015160405161225f9190613961565b600060405180830381855af49150503d806000811461229a576040519150601f19603f3d011682016040523d82523d6000602084013e61229f565b606091505b50915091506122c78282604051806060016040528060278152602001613be160279139612617565b8484815181106122d9576122d9613562565b6020026020010181905250505080806122f19061358e565b915050612222565b50919050565b600054610100900460ff166123265760405162461bcd60e51b81526004016109ab90613a11565b6110a5612820565b600054610100900460ff166123555760405162461bcd60e51b81526004016109ab90613a11565b61235d61284e565b6110a561284e565b600054610100900460ff1661235d5760405162461bcd60e51b81526004016109ab90613a11565b600054610100900460ff166123b35760405162461bcd60e51b81526004016109ab90613a11565b6123bb612875565b6123c361284e565b6110a56128ac565b600080516020613bc1833981519152546040516383e7f6ff60e01b81526001600160a01b039091169060009082906383e7f6ff90612411908f908f908e906004016136c5565b6040805180830381865afa15801561242d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245191906136e9565b6020810151815191925061246491613737565b4710156124845760405163050205f960e01b815260040160405180910390fd5b816001600160a01b03166374694a2b826020015183600001516124a79190613737565b8e8e8e8e8e8e8e8e8e8e6040518c63ffffffff1660e01b81526004016124d69a99989796959493929190613a5c565b6000604051808303818588803b1580156124ef57600080fd5b505af1158015612503573d6000803e3d6000fd5b5050505050505050505050505050505050565b61251e611dae565b6001600160a01b0381166125835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ab565b610c5881611ff9565b610ce58282611d27565b60003033036125ac575060331936013560601c90565b503390565b604080517f1ee5d87a048b728f67073f282321992c260e5be4fa651d08665c5b4ee7a8381560208201529081018290526000906060016040516020818303038152906040528051906020012090506126068190565b54612612906001613737565b905550565b60608315612626575081610c16565b8251156126365782518084602001fd5b8160405162461bcd60e51b81526004016109ab9190612def565b61265a828261120f565b610ce557612672816001600160a01b031660146128e5565b61267d8360206128e5565b60405160200161268e929190613ace565b60408051601f198184030181529082905262461bcd60e51b82526109ab91600401612def565b6126bc61218a565b8114610c5857604051635637b6af60e11b8152600481018290526024016109ab565b60008060006126ed8585612a80565b9092509050600081600481111561270657612706613b43565b1480156127245750856001600160a01b0316826001600160a01b0316145b1561273457600192505050610c16565b600080876001600160a01b0316631626ba7e60e01b888860405160240161275c929190613b59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161279a9190613961565b600060405180830381855afa9150503d80600081146127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50915091508180156127ed575080516020145b801561281457508051630b135d3f60e11b90612812908301602090810190840161384b565b145b98975050505050505050565b600054610100900460ff166128475760405162461bcd60e51b81526004016109ab90613a11565b6001603355565b600054610100900460ff166110a55760405162461bcd60e51b81526004016109ab90613a11565b600054610100900460ff1661289c5760405162461bcd60e51b81526004016109ab90613a11565b6110a56128a7611af6565b611ff9565b600054610100900460ff166128d35760405162461bcd60e51b81526004016109ab90613a11565b6110a560006128e0611af6565b61258c565b606060006128f4836002613b72565b6128ff906002613737565b6001600160401b0381111561291657612916612e94565b6040519080825280601f01601f191660200182016040528015612940576020820181803683370190505b509050600360fc1b8160008151811061295b5761295b613562565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061298a5761298a613562565b60200101906001600160f81b031916908160001a90535060006129ae846002613b72565b6129b9906001613737565b90505b6001811115612a31576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106129ed576129ed613562565b1a60f81b828281518110612a0357612a03613562565b60200101906001600160f81b031916908160001a90535060049490941c93612a2a81613b89565b90506129bc565b508315610c165760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109ab565b6000808251604103612ab65760208301516040840151606085015160001a612aaa87828585612ac5565b94509450505050612abe565b506000905060025b9250929050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612afc5750600090506003612ba9565b8460ff16601b14158015612b1457508460ff16601c14155b15612b255750600090506004612ba9565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612b79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612ba257600060019250925050612ba9565b9150600090505b94509492505050565b600060208284031215612bc457600080fd5b81356001600160e01b031981168114610c1657600080fd5b6001600160a01b0381168114610c5857600080fd5b60008083601f840112612c0357600080fd5b5081356001600160401b03811115612c1a57600080fd5b602083019150836020828501011115612abe57600080fd5b600080600080600060808688031215612c4a57600080fd5b8535612c5581612bdc565b94506020860135612c6581612bdc565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b612c9388828901612bf1565b969995985093965092949392505050565b60008083601f840112612cb657600080fd5b5081356001600160401b03811115612ccd57600080fd5b6020830191508360208260051b8501011115612abe57600080fd5b600080600060408486031215612cfd57600080fd5b8335612d0881612bdc565b925060208401356001600160401b03811115612d2357600080fd5b612d2f86828701612ca4565b9497909650939450505050565b600080600060408486031215612d5157600080fd5b83356001600160401b0380821115612d6857600080fd5b9085019060808288031215612d7c57600080fd5b90935060208501359080821115612d9257600080fd5b50612d2f86828701612bf1565b60005b83811015612dba578181015183820152602001612da2565b50506000910152565b60008151808452612ddb816020860160208601612d9f565b601f01601f19169290920160200192915050565b602081526000610c166020830184612dc3565b600060208284031215612e1457600080fd5b5035919050565b60008060408385031215612e2e57600080fd5b823591506020830135612e4081612bdc565b809150509250929050565b600060208284031215612e5d57600080fd5b8135610c1681612bdc565b60008060408385031215612e7b57600080fd5b8235612e8681612bdc565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612ed257612ed2612e94565b604052919050565b60006001600160401b03821115612ef357612ef3612e94565b5060051b60200190565b60006020808385031215612f1057600080fd5b82356001600160401b03811115612f2657600080fd5b8301601f81018513612f3757600080fd5b8035612f4a612f4582612eda565b612eaa565b81815260059190911b82018301908381019087831115612f6957600080fd5b928401925b82841015612f90578335612f8181612bdc565b82529284019290840190612f6e565b979650505050505050565b600080600060408486031215612fb057600080fd5b83356001600160401b03811115612fc657600080fd5b612fd286828701612bf1565b909790965060209590950135949350505050565b600082601f830112612ff757600080fd5b81356001600160401b0381111561301057613010612e94565b613023601f8201601f1916602001612eaa565b81815284602083860101111561303857600080fd5b816020850160208301376000918101602001919091529392505050565b80358015158114611fc357600080fd5b803561ffff81168114611fc357600080fd5b6000806000806000806000806000806101208b8d03121561309757600080fd5b8a356001600160401b03808211156130ae57600080fd5b6130ba8e838f01612fe6565b9b5060208d013591506130cc82612bdc565b90995060408c0135985060608c0135975060808c0135906130ec82612bdc565b90965060a08c0135908082111561310257600080fd5b5061310f8d828e01612ca4565b9096509450613122905060c08c01613055565b925061313060e08c01613065565b915061313f6101008c01613055565b90509295989b9194979a5092959850565b6000806020838503121561316357600080fd5b82356001600160401b0381111561317957600080fd5b61318585828601612ca4565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156131e657603f198886030184526131d4858351612dc3565b945092850192908501906001016131b8565b5092979650505050505050565b60008060008060008060008060a0898b03121561320f57600080fd5b883561321a81612bdc565b9750602089013561322a81612bdc565b965060408901356001600160401b038082111561324657600080fd5b6132528c838d01612ca4565b909850965060608b013591508082111561326b57600080fd5b6132778c838d01612ca4565b909650945060808b013591508082111561329057600080fd5b5061329d8b828c01612bf1565b999c989b5096995094979396929594505050565b6000806000606084860312156132c657600080fd5b83356132d181612bdc565b925060208401356132e181612bdc565b915060408401356132f181612bdc565b809150509250925092565b60008060008060008060008060008060006101208c8e03121561331e57600080fd5b6001600160401b03808d35111561333457600080fd5b6133418e8e358f01612bf1565b909c509a5061335360208e0135612bdc565b60208d0135995060408d0135985060608d0135975061337560808e0135612bdc565b60808d013596508060a08e0135111561338d57600080fd5b5061339e8d60a08e01358e01612ca4565b90955093506133af60c08d01613055565b92506133bd60e08d01613065565b91506133cc6101008d01613055565b90509295989b509295989b9093969950565b60008060008060008060a087890312156133f757600080fd5b863561340281612bdc565b9550602087013561341281612bdc565b9450604087013593506060870135925060808701356001600160401b0381111561343b57600080fd5b61344789828a01612bf1565b979a9699509497509295939492505050565b60008060006060848603121561346e57600080fd5b833561347981612bdc565b9250602084013561348981612bdc565b915060408401356001600160401b038111156134a457600080fd5b6134b086828701612fe6565b9150509250925092565b6080815260006134cd6080830187612dc3565b6001600160a01b03958616602084015261ffff949094166040830152509216606090920191909152919050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061120590830184612dc3565b6020808252818101527f4d696e746572526f6c653a2043414c4c45525f49535f4e4f545f4d494e544552604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016135a0576135a0613578565b5060010190565b6001600160a01b03868116825285811660208084019190915260a0604084018190528301859052600091906001600160fb1b038611156135e657600080fd5b8560051b9150818760c086013760c09184018481038301606086015285519281018390528582019260009160e001905b808310156136365784518252938301936001929092019190830190613616565b50858103608087015260008152602081019b9a5050505050505050505050565b6000808335601e1984360301811261366d57600080fd5b8301803591506001600160401b0382111561368757600080fd5b602001915036819003821315612abe57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006136d960408301858761369c565b9050826020830152949350505050565b6000604082840312156136fb57600080fd5b604051604081018181106001600160401b038211171561371d5761371d612e94565b604052825181526020928301519281019290925250919050565b8082018082111561082c5761082c613578565b81835260006020808501808196508560051b810191508460005b878110156137ce5782840389528135601e1988360301811261378557600080fd5b870185810190356001600160401b038111156137a057600080fd5b8036038213156137af57600080fd5b6137ba86828461369c565b9a87019a9550505090840190600101613764565b5091979650505050505050565b60006101008083526137ef8184018d612dc3565b6001600160a01b038c81166020860152604085018c9052606085018b90528916608085015283810360a0850152905061382981878961374a565b94151560c0840152505061ffff9190911660e090910152979650505050505050565b60006020828403121561385d57600080fd5b5051919050565b60006080823603121561387657600080fd5b604051608081016001600160401b03828210818311171561389957613899612e94565b81604052843591506138aa82612bdc565b818352602085013560208401526040850135604084015260608501359150808211156138d557600080fd5b506138e236828601612fe6565b60608301525092915050565b60006138fc612f4584612eda565b80848252602080830192508560051b85013681111561391a57600080fd5b855b818110156139555780356001600160401b0381111561393b5760008081fd5b61394736828a01612fe6565b86525093820193820161391c565b50919695505050505050565b60008251613973818460208701612d9f565b9190910192915050565b60008261399a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156139c757600080fd5b8151610c1681612bdc565b600084516139e4818460208901612d9f565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000610100808352613a718184018d8f61369c565b6001600160a01b038c81166020860152604085018c9052606085018b90528916608085015283810360a08501529050613aab81878961374a565b94151560c0840152505061ffff9190911660e09091015298975050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613b06816017850160208801612d9f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613b37816028840160208801612d9f565b01602801949350505050565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061135c6040830184612dc3565b808202811582820484141761082c5761082c613578565b600081613b9857613b98613578565b50600019019056fe0a8885dd093a12d378a27df09bde33e3caca641a3d6970e06805fde8e847cb46412386de53449251cbf7ce1f4c6a038bf9c0746e62d331b08ef0c3fa7d0ab672416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660793a5062d506d35cc8f1beda67ee5028c16bfcd9c923d5bfc439c04bd929b1a164736f6c6343000811000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
