{
  "_format": "hh-sol-artifact-1",
  "contractName": "LSP7MintableInit",
  "sourceName": "@lukso/lsp7-contracts/contracts/presets/LSP7MintableInit.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ERC725Y_DataKeysValuesEmptyArray",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC725Y_DataKeysValuesLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC725Y_MsgValueDisallowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "storedData",
          "type": "bytes"
        }
      ],
      "name": "InvalidExtensionAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "InvalidFunctionSelector",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenNameNotEditable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenSymbolNotEditable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP4TokenTypeNotEditable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "authorizedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LSP7AmountExceedsAuthorizedAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LSP7AmountExceedsBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "callIndex",
          "type": "uint256"
        }
      ],
      "name": "LSP7BatchCallFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7CannotSendWithAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7CannotUseAddressZeroAsOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "LSP7DecreaseAllowanceNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7DecreasedAllowanceBelowZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7InvalidTransferBatch",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenReceiver",
          "type": "address"
        }
      ],
      "name": "LSP7NotifyTokenReceiverContractMissingLSP1Interface",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenReceiver",
          "type": "address"
        }
      ],
      "name": "LSP7NotifyTokenReceiverIsEOA",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "LSP7RevokeOperatorNotAuthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7TokenContractCannotHoldValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LSP7TokenOwnerCannotBeOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "functionSelector",
          "type": "bytes4"
        }
      ],
      "name": "NoExtensionFoundForFunctionSelector",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "OperatorAllowanceCannotBeIncreasedFromZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OwnableCannotSetZeroAddressAsOwner",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "DataChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "OperatorAuthorizationChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "notified",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "OperatorRevoked",
      "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": "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": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "authorizeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "name": "authorizedAmountFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "batchCalls",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        }
      ],
      "name": "getData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        }
      ],
      "name": "getDataBatch",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ],
      "name": "getOperatorsOf",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedAmount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "newOwner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "lsp4TokenType_",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isNonDivisible_",
          "type": "bool"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "notify",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "operatorNotificationData",
          "type": "bytes"
        }
      ],
      "name": "revokeOperator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "dataKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "dataValue",
          "type": "bytes"
        }
      ],
      "name": "setData",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "dataKeys",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes[]",
          "name": "dataValues",
          "type": "bytes[]"
        }
      ],
      "name": "setDataBatch",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "from",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "to",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amount",
          "type": "uint256[]"
        },
        {
          "internalType": "bool[]",
          "name": "force",
          "type": "bool[]"
        },
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "transferBatch",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612e5c80620000f36000396000f3fe6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104be578063dedff9c6146104eb578063f2fde38b1461050b576101ed565b80638da5cb5b14610463578063979024211461048b578063b49506fd1461049e576101ed565b8063760d9bba116100b0578063760d9bba1461041057806378381670146104305780637f23690c14610450576101ed565b8063715018a6146103db5780637580d920146103f0576101ed565b806330d0dc371161012d57806365aeaa951161010757806365aeaa95146103585780636963d4381461037857806370a08231146103a5576101ed565b806330d0dc37146102e4578063313ce5671461030457806354f6127f1461032b576101ed565b806318160ddd1161015e57806318160ddd146102855780632bc1da82146102a45780632d7667c9146102c4576101ed565b806301ffc9a71461022e57806304689a8114610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190612149565b610222838361052b565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004612178565b61063a565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b5061028361027e366004612293565b610687565b005b34801561029157600080fd5b506099545b60405190815260200161025a565b3480156102b057600080fd5b506102836102bf366004612322565b6107b1565b3480156102d057600080fd5b506102836102df366004612547565b610852565b3480156102f057600080fd5b506102836102ff366004612619565b61095a565b34801561031057600080fd5b50610319610a1b565b60405160ff909116815260200161025a565b34801561033757600080fd5b5061034b610346366004612688565b610a34565b60405161025a91906126f1565b34801561036457600080fd5b50610296610373366004612704565b610a3f565b34801561038457600080fd5b50610398610393366004612737565b610aa5565b60405161025a91906127ac565b3480156103b157600080fd5b506102966103c036600461280e565b6001600160a01b03166000908152609a602052604090205490565b3480156103e757600080fd5b50610283610bf5565b3480156103fc57600080fd5b5061028361040b366004612829565b610c09565b34801561041c57600080fd5b5061028361042b36600461285d565b610c1d565b34801561043c57600080fd5b5061028361044b3660046128c9565b610c45565b61028361045e366004612919565b610d42565b34801561046f57600080fd5b506033546040516001600160a01b03909116815260200161025a565b610283610499366004612960565b610d77565b3480156104aa57600080fd5b506102836104b9366004612322565b610da8565b3480156104ca57600080fd5b506104de6104d936600461280e565b610de8565b60405161025a91906129ba565b3480156104f757600080fd5b50610398610506366004612a07565b610e0c565b34801561051757600080fd5b5061028361052636600461280e565b610eb7565b606060006105446000356001600160e01b031916610f47565b5090506001600160a01b038116610595576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105ba9493929190612a3c565b60408051601f19818403018152908290526105d491612a6c565b60006040518083038185875af1925050503d8060008114610611576040519150601f19603f3d011682016040523d82523d6000602084013e610616565b606091505b5091509150811561062b579250610634915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610678575061067882610ff1565b8061063457506106348261103f565b600054610100900460ff16158080156106a75750600054600160ff909116105b806106c15750303b1580156106c1575060005460ff166001145b6107335760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b2565b6000805460ff191660011790558015610756576000805461ff0019166101001790555b610763868686868661107d565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60006107bd8433610a3f565b905080600003610804576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006108108483612a9e565b90506108203386836001876110f5565b600033828560405160200161083793929190612ab1565b60405160208183030381529060405290506107a9868261129a565b8451845181141580610865575083518114155b80610871575082518114155b8061087d575081518114155b156108b4576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610951576109498782815181106108d4576108d4612ae2565b60200260200101518783815181106108ee576108ee612ae2565b602002602001015187848151811061090857610908612ae2565b602002602001015187858151811061092257610922612ae2565b602002602001015187868151811061093c5761093c612ae2565b6020026020010151610c1d565b6001016108b7565b50505050505050565b336001600160a01b0384161480159061097c5750336001600160a01b03851614155b156109cc576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6109da8385600085856110f5565b8115610a15576000836000836040516020016109f893929190612af8565b6040516020818303038152906040529050610a13858261129a565b505b50505050565b60985460009060ff16610a2e5750601290565b50600090565b6060610634826112c5565b6000826001600160a01b0316826001600160a01b031603610a7957506001600160a01b0381166000908152609a6020526040902054610634565b506001600160a01b038082166000908152609c6020908152604080832093861683529290522054610634565b60608167ffffffffffffffff811115610ac057610ac06121a2565b604051908082528060200260200182016040528015610af357816020015b6060815260200190600190039081610ade5790505b50905060005b82811015610bee5760008030868685818110610b1757610b17612ae2565b9050602002810190610b299190612b23565b604051610b37929190612b71565b600060405180830381855af49150503d8060008114610b72576040519150601f19603f3d011682016040523d82523d6000602084013e610b77565b606091505b509150915081610bc657805115610b915780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610bd957610bd9612ae2565b60209081029190910101525050600101610af9565b5092915050565b610bfd611367565b610c0760006113c1565b565b610c11611367565b610a158484848461142b565b336001600160a01b03861614610c3857610c38338685611536565b610a1385858585856115e6565b336001600160a01b03841614801590610c675750336001600160a01b03851614155b15610cb7576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6000610cc38585610a3f565b905082811015610cff576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610d108587836001876110f5565b6000858285604051602001610d2793929190612ab1565b6040516020818303038152906040529050610951878261129a565b610d4a611367565b3415610d695760405163f36ba73760e01b815260040160405180910390fd5b610d738282611689565b5050565b610d7f611367565b3415610d9e5760405163f36ba73760e01b815260040160405180910390fd5b610d7382826117e9565b610db63384846001856110f5565b6000338383604051602001610dcd93929190612ab1565b6040516020818303038152906040529050610a15848261129a565b6001600160a01b0381166000908152609b60205260409020606090610634906118b4565b6060815167ffffffffffffffff811115610e2857610e286121a2565b604051908082528060200260200182016040528015610e5b57816020015b6060815260200190600190039081610e465790505b50905060005b8251811015610eb157610e8c838281518110610e7f57610e7f612ae2565b60200260200101516112c5565b828281518110610e9e57610e9e612ae2565b6020908102919091010152600101610e61565b50919050565b610ebf611367565b6001600160a01b038116610f3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101b2565b610f44816113c1565b50565b60008080610f7f7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b031986166118c1565b90506000610f8c826112c5565b90508051601414158015610fa05750805115155b15610fd957806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b291906126f1565b610fe281612b81565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061063457506301ffc9a760e01b6001600160e01b0319831614610634565b6000806110526301ffc9a760e01b610f47565b5090506001600160a01b03811661106c5750600092915050565b6110768184611932565b9392505050565b600054610100900460ff166110e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b610a1385858585856119d0565b6001600160a01b038416611135576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611180576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038086166000908152609c602090815260408083209388168352929052208390558215611222576001600160a01b0385166000908152609b602052604090206111d09085611a5e565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d8460405161121591906126f1565b60405180910390a4610a13565b6001600160a01b0385166000908152609b602052604090206112449085611a73565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161128b91906126f1565b60405180910390a45050505050565b610d73827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611a88565b60008181526097602052604090208054606091906112e290612bbd565b80601f016020809104026020016040519081016040528092919081815260200182805461130e90612bbd565b801561135b5780601f106113305761010080835404028352916020019161135b565b820191906000526020600020905b81548152906001019060200180831161133e57829003601f168201915b50505050509050919050565b6033546001600160a01b03163314610c075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101b2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03841661145257604051630d2d5ec360e41b815260040160405180910390fd5b611460600085858585610a13565b82609960008282546114729190612a9e565b90915550506001600160a01b0384166000908152609a60205260408120805485929061149f908490612a9e565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6906114e890889088908890612bf1565b60405180910390a46114fe600085858585610a13565b600033600086868560405160200161151a959493929190612c12565b6040516020818303038152906040529050610a13858483611b1c565b6001600160a01b038083166000908152609c602090815260408083209387168352929052205480158061156857508082115b156115c0576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b610a1583856115cf8585612c4c565b6000604051806020016040528060008152506110f5565b6001600160a01b038516158061160357506001600160a01b038416155b1561162157604051630d2d5ec360e41b815260040160405180910390fd5b61162e8585858585610a13565b61163b8585858585611c0f565b6116488585858585610a13565b60003386868685604051602001611663959493929190612c12565b604051602081830303815290604052905061167e8682611d66565b6107a9858483611b1c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016116e2576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161173b576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611794576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526097602052604090206117ac8282612ca5565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516117dd91906126f1565b60405180910390a25050565b8051825114611824576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160000361185f576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156118af576118a783828151811061188057611880612ae2565b602002602001015183838151811061189a5761189a612ae2565b6020026020010151611689565b600101611862565b505050565b6060600061107683611d91565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061192a90612d65565b949350505050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119b9575060208210155b80156119c55750600081115b979650505050505050565b600054610100900460ff16611a3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b611a4785858585611dec565b6098805460ff191691151591909117905550505050565b6000611076836001600160a01b038416611f5c565b6000611076836001600160a01b038416611fab565b611aa26001600160a01b038416631aed5a8560e21b611932565b156118af57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611ad59085908590600401612d89565b6000604051808303816000875af1158015611af4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a159190810190612da2565b611b2d83631aed5a8560e21b611932565b15611b8057604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611ad5907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401612d89565b816118af576001600160a01b0383163b15611bd2576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6001600160a01b038516611c3a578260996000828254611c2f9190612a9e565b90915550611cc59050565b6001600160a01b0385166000908152609a602052604090205483811015611ca6576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6001600160a01b0386166000908152609a602052604090209084900390555b6001600160a01b038416611ce157609980548490039055611d00565b6001600160a01b0384166000908152609a602052604090208054840190555b836001600160a01b0316856001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6868686604051611d5193929190612bf1565b60405180910390a46116488585858585610a13565b610d73827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611a88565b60608160000180548060200260200160405190810160405280929190818152602001828054801561135b57602002820191906000526020600020905b815481526020019060010190808311611dcd5750505050509050919050565b600054610100900460ff16611e575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b611e608261209e565b611ec27feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c60001b6040518060400160405280600481526020017fa4d9662400000000000000000000000000000000000000000000000000000000815250611794565b611eec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af185611794565b611f167f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275684611794565b6040805160208101839052610a15917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb39101604051602081830303815290604052611794565b6000818152600183016020526040812054611fa357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610634565b506000610634565b60008181526001830160205260408120548015612094576000611fcf600183612c4c565b8554909150600090611fe390600190612c4c565b905081811461204857600086600001828154811061200357612003612ae2565b906000526020600020015490508087600001848154811061202657612026612ae2565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061205957612059612e10565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610634565b6000915050610634565b600054610100900460ff166121095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b6001600160a01b038116610f3b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561218a57600080fd5b81356001600160e01b03198116811461107657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121e1576121e16121a2565b604052919050565b600067ffffffffffffffff821115612203576122036121a2565b50601f01601f191660200190565b600082601f83011261222257600080fd5b8135612235612230826121e9565b6121b8565b81815284602083860101111561224a57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b038116811461227e57600080fd5b919050565b8035801515811461227e57600080fd5b600080600080600060a086880312156122ab57600080fd5b853567ffffffffffffffff808211156122c357600080fd5b6122cf89838a01612211565b965060208801359150808211156122e557600080fd5b506122f288828901612211565b94505061230160408701612267565b92506060860135915061231660808701612283565b90509295509295909350565b60008060006060848603121561233757600080fd5b61234084612267565b925060208401359150604084013567ffffffffffffffff81111561236357600080fd5b61236f86828701612211565b9150509250925092565b600067ffffffffffffffff821115612393576123936121a2565b5060051b60200190565b600082601f8301126123ae57600080fd5b813560206123be61223083612379565b82815260059290921b840181019181810190868411156123dd57600080fd5b8286015b848110156123ff576123f281612267565b83529183019183016123e1565b509695505050505050565b600082601f83011261241b57600080fd5b8135602061242b61223083612379565b82815260059290921b8401810191818101908684111561244a57600080fd5b8286015b848110156123ff578035835291830191830161244e565b600082601f83011261247657600080fd5b8135602061248661223083612379565b82815260059290921b840181019181810190868411156124a557600080fd5b8286015b848110156123ff576124ba81612283565b83529183019183016124a9565b600082601f8301126124d857600080fd5b813560206124e861223083612379565b82815260059290921b8401810191818101908684111561250757600080fd5b8286015b848110156123ff57803567ffffffffffffffff81111561252b5760008081fd5b6125398986838b0101612211565b84525091830191830161250b565b600080600080600060a0868803121561255f57600080fd5b853567ffffffffffffffff8082111561257757600080fd5b61258389838a0161239d565b9650602088013591508082111561259957600080fd5b6125a589838a0161239d565b955060408801359150808211156125bb57600080fd5b6125c789838a0161240a565b945060608801359150808211156125dd57600080fd5b6125e989838a01612465565b935060808801359150808211156125ff57600080fd5b5061260c888289016124c7565b9150509295509295909350565b6000806000806080858703121561262f57600080fd5b61263885612267565b935061264660208601612267565b925061265460408601612283565b9150606085013567ffffffffffffffff81111561267057600080fd5b61267c87828801612211565b91505092959194509250565b60006020828403121561269a57600080fd5b5035919050565b60005b838110156126bc5781810151838201526020016126a4565b50506000910152565b600081518084526126dd8160208601602086016126a1565b601f01601f19169290920160200192915050565b60208152600061107660208301846126c5565b6000806040838503121561271757600080fd5b61272083612267565b915061272e60208401612267565b90509250929050565b6000806020838503121561274a57600080fd5b823567ffffffffffffffff8082111561276257600080fd5b818501915085601f83011261277657600080fd5b81358181111561278557600080fd5b8660208260051b850101111561279a57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561280157603f198886030184526127ef8583516126c5565b945092850192908501906001016127d3565b5092979650505050505050565b60006020828403121561282057600080fd5b61107682612267565b6000806000806080858703121561283f57600080fd5b61284885612267565b93506020850135925061265460408601612283565b600080600080600060a0868803121561287557600080fd5b61287e86612267565b945061288c60208701612267565b9350604086013592506128a160608701612283565b9150608086013567ffffffffffffffff8111156128bd57600080fd5b61260c88828901612211565b600080600080608085870312156128df57600080fd5b6128e885612267565b93506128f660208601612267565b925060408501359150606085013567ffffffffffffffff81111561267057600080fd5b6000806040838503121561292c57600080fd5b82359150602083013567ffffffffffffffff81111561294a57600080fd5b61295685828601612211565b9150509250929050565b6000806040838503121561297357600080fd5b823567ffffffffffffffff8082111561298b57600080fd5b6129978683870161240a565b935060208501359150808211156129ad57600080fd5b50612956858286016124c7565b6020808252825182820181905260009190848201906040850190845b818110156129fb5783516001600160a01b0316835292840192918401916001016129d6565b50909695505050505050565b600060208284031215612a1957600080fd5b813567ffffffffffffffff811115612a3057600080fd5b61192a8482850161240a565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612a7e8184602087016126a1565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063457610634612a88565b6001600160a01b0384168152826020820152606060408201526000612ad960608301846126c5565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612ad960608301846126c5565b6000808335601e19843603018112612b3a57600080fd5b83018035915067ffffffffffffffff821115612b5557600080fd5b602001915036819003821315612b6a57600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612bb55780818460140360031b1b83161693505b505050919050565b600181811c90821680612bd157607f821691505b602082108103610eb157634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612ad960608301846126c5565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526119c560a08301846126c5565b8181038181111561063457610634612a88565b601f8211156118af57600081815260208120601f850160051c81016020861015612c865750805b601f850160051c820191505b818110156107a957828155600101612c92565b815167ffffffffffffffff811115612cbf57612cbf6121a2565b612cd381612ccd8454612bbd565b84612c5f565b602080601f831160018114612d085760008415612cf05750858301515b600019600386901b1c1916600185901b1785556107a9565b600085815260208120601f198616915b82811015612d3757888601518255948401946001909101908401612d18565b5085821015612d555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516020808301519190811015610eb15760001960209190910360031b1b16919050565b82815260406020820152600061192a60408301846126c5565b600060208284031215612db457600080fd5b815167ffffffffffffffff811115612dcb57600080fd5b8201601f81018413612ddc57600080fd5b8051612dea612230826121e9565b818152856020838501011115612dff57600080fd5b612ad98260208301602086016126a1565b634e487b7160e01b600052603160045260246000fdfea264697066735822122096c5cb5d24e14c39cc271754dbb77a8ddea11ac964732051ac982e599b8a773464736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104be578063dedff9c6146104eb578063f2fde38b1461050b576101ed565b80638da5cb5b14610463578063979024211461048b578063b49506fd1461049e576101ed565b8063760d9bba116100b0578063760d9bba1461041057806378381670146104305780637f23690c14610450576101ed565b8063715018a6146103db5780637580d920146103f0576101ed565b806330d0dc371161012d57806365aeaa951161010757806365aeaa95146103585780636963d4381461037857806370a08231146103a5576101ed565b806330d0dc37146102e4578063313ce5671461030457806354f6127f1461032b576101ed565b806318160ddd1161015e57806318160ddd146102855780632bc1da82146102a45780632d7667c9146102c4576101ed565b806301ffc9a71461022e57806304689a8114610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190612149565b610222838361052b565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004612178565b61063a565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b5061028361027e366004612293565b610687565b005b34801561029157600080fd5b506099545b60405190815260200161025a565b3480156102b057600080fd5b506102836102bf366004612322565b6107b1565b3480156102d057600080fd5b506102836102df366004612547565b610852565b3480156102f057600080fd5b506102836102ff366004612619565b61095a565b34801561031057600080fd5b50610319610a1b565b60405160ff909116815260200161025a565b34801561033757600080fd5b5061034b610346366004612688565b610a34565b60405161025a91906126f1565b34801561036457600080fd5b50610296610373366004612704565b610a3f565b34801561038457600080fd5b50610398610393366004612737565b610aa5565b60405161025a91906127ac565b3480156103b157600080fd5b506102966103c036600461280e565b6001600160a01b03166000908152609a602052604090205490565b3480156103e757600080fd5b50610283610bf5565b3480156103fc57600080fd5b5061028361040b366004612829565b610c09565b34801561041c57600080fd5b5061028361042b36600461285d565b610c1d565b34801561043c57600080fd5b5061028361044b3660046128c9565b610c45565b61028361045e366004612919565b610d42565b34801561046f57600080fd5b506033546040516001600160a01b03909116815260200161025a565b610283610499366004612960565b610d77565b3480156104aa57600080fd5b506102836104b9366004612322565b610da8565b3480156104ca57600080fd5b506104de6104d936600461280e565b610de8565b60405161025a91906129ba565b3480156104f757600080fd5b50610398610506366004612a07565b610e0c565b34801561051757600080fd5b5061028361052636600461280e565b610eb7565b606060006105446000356001600160e01b031916610f47565b5090506001600160a01b038116610595576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105ba9493929190612a3c565b60408051601f19818403018152908290526105d491612a6c565b60006040518083038185875af1925050503d8060008114610611576040519150601f19603f3d011682016040523d82523d6000602084013e610616565b606091505b5091509150811561062b579250610634915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610678575061067882610ff1565b8061063457506106348261103f565b600054610100900460ff16158080156106a75750600054600160ff909116105b806106c15750303b1580156106c1575060005460ff166001145b6107335760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b2565b6000805460ff191660011790558015610756576000805461ff0019166101001790555b610763868686868661107d565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60006107bd8433610a3f565b905080600003610804576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006108108483612a9e565b90506108203386836001876110f5565b600033828560405160200161083793929190612ab1565b60405160208183030381529060405290506107a9868261129a565b8451845181141580610865575083518114155b80610871575082518114155b8061087d575081518114155b156108b4576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610951576109498782815181106108d4576108d4612ae2565b60200260200101518783815181106108ee576108ee612ae2565b602002602001015187848151811061090857610908612ae2565b602002602001015187858151811061092257610922612ae2565b602002602001015187868151811061093c5761093c612ae2565b6020026020010151610c1d565b6001016108b7565b50505050505050565b336001600160a01b0384161480159061097c5750336001600160a01b03851614155b156109cc576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6109da8385600085856110f5565b8115610a15576000836000836040516020016109f893929190612af8565b6040516020818303038152906040529050610a13858261129a565b505b50505050565b60985460009060ff16610a2e5750601290565b50600090565b6060610634826112c5565b6000826001600160a01b0316826001600160a01b031603610a7957506001600160a01b0381166000908152609a6020526040902054610634565b506001600160a01b038082166000908152609c6020908152604080832093861683529290522054610634565b60608167ffffffffffffffff811115610ac057610ac06121a2565b604051908082528060200260200182016040528015610af357816020015b6060815260200190600190039081610ade5790505b50905060005b82811015610bee5760008030868685818110610b1757610b17612ae2565b9050602002810190610b299190612b23565b604051610b37929190612b71565b600060405180830381855af49150503d8060008114610b72576040519150601f19603f3d011682016040523d82523d6000602084013e610b77565b606091505b509150915081610bc657805115610b915780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610bd957610bd9612ae2565b60209081029190910101525050600101610af9565b5092915050565b610bfd611367565b610c0760006113c1565b565b610c11611367565b610a158484848461142b565b336001600160a01b03861614610c3857610c38338685611536565b610a1385858585856115e6565b336001600160a01b03841614801590610c675750336001600160a01b03851614155b15610cb7576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6000610cc38585610a3f565b905082811015610cff576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610d108587836001876110f5565b6000858285604051602001610d2793929190612ab1565b6040516020818303038152906040529050610951878261129a565b610d4a611367565b3415610d695760405163f36ba73760e01b815260040160405180910390fd5b610d738282611689565b5050565b610d7f611367565b3415610d9e5760405163f36ba73760e01b815260040160405180910390fd5b610d7382826117e9565b610db63384846001856110f5565b6000338383604051602001610dcd93929190612ab1565b6040516020818303038152906040529050610a15848261129a565b6001600160a01b0381166000908152609b60205260409020606090610634906118b4565b6060815167ffffffffffffffff811115610e2857610e286121a2565b604051908082528060200260200182016040528015610e5b57816020015b6060815260200190600190039081610e465790505b50905060005b8251811015610eb157610e8c838281518110610e7f57610e7f612ae2565b60200260200101516112c5565b828281518110610e9e57610e9e612ae2565b6020908102919091010152600101610e61565b50919050565b610ebf611367565b6001600160a01b038116610f3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101b2565b610f44816113c1565b50565b60008080610f7f7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b031986166118c1565b90506000610f8c826112c5565b90508051601414158015610fa05750805115155b15610fd957806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b291906126f1565b610fe281612b81565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061063457506301ffc9a760e01b6001600160e01b0319831614610634565b6000806110526301ffc9a760e01b610f47565b5090506001600160a01b03811661106c5750600092915050565b6110768184611932565b9392505050565b600054610100900460ff166110e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b610a1385858585856119d0565b6001600160a01b038416611135576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611180576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038086166000908152609c602090815260408083209388168352929052208390558215611222576001600160a01b0385166000908152609b602052604090206111d09085611a5e565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d8460405161121591906126f1565b60405180910390a4610a13565b6001600160a01b0385166000908152609b602052604090206112449085611a73565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161128b91906126f1565b60405180910390a45050505050565b610d73827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611a88565b60008181526097602052604090208054606091906112e290612bbd565b80601f016020809104026020016040519081016040528092919081815260200182805461130e90612bbd565b801561135b5780601f106113305761010080835404028352916020019161135b565b820191906000526020600020905b81548152906001019060200180831161133e57829003601f168201915b50505050509050919050565b6033546001600160a01b03163314610c075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101b2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03841661145257604051630d2d5ec360e41b815260040160405180910390fd5b611460600085858585610a13565b82609960008282546114729190612a9e565b90915550506001600160a01b0384166000908152609a60205260408120805485929061149f908490612a9e565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6906114e890889088908890612bf1565b60405180910390a46114fe600085858585610a13565b600033600086868560405160200161151a959493929190612c12565b6040516020818303038152906040529050610a13858483611b1c565b6001600160a01b038083166000908152609c602090815260408083209387168352929052205480158061156857508082115b156115c0576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b610a1583856115cf8585612c4c565b6000604051806020016040528060008152506110f5565b6001600160a01b038516158061160357506001600160a01b038416155b1561162157604051630d2d5ec360e41b815260040160405180910390fd5b61162e8585858585610a13565b61163b8585858585611c0f565b6116488585858585610a13565b60003386868685604051602001611663959493929190612c12565b604051602081830303815290604052905061167e8682611d66565b6107a9858483611b1c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016116e2576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161173b576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611794576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526097602052604090206117ac8282612ca5565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516117dd91906126f1565b60405180910390a25050565b8051825114611824576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160000361185f576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156118af576118a783828151811061188057611880612ae2565b602002602001015183838151811061189a5761189a612ae2565b6020026020010151611689565b600101611862565b505050565b6060600061107683611d91565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061192a90612d65565b949350505050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156119b9575060208210155b80156119c55750600081115b979650505050505050565b600054610100900460ff16611a3b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b611a4785858585611dec565b6098805460ff191691151591909117905550505050565b6000611076836001600160a01b038416611f5c565b6000611076836001600160a01b038416611fab565b611aa26001600160a01b038416631aed5a8560e21b611932565b156118af57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611ad59085908590600401612d89565b6000604051808303816000875af1158015611af4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a159190810190612da2565b611b2d83631aed5a8560e21b611932565b15611b8057604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611ad5907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401612d89565b816118af576001600160a01b0383163b15611bd2576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6001600160a01b038516611c3a578260996000828254611c2f9190612a9e565b90915550611cc59050565b6001600160a01b0385166000908152609a602052604090205483811015611ca6576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6001600160a01b0386166000908152609a602052604090209084900390555b6001600160a01b038416611ce157609980548490039055611d00565b6001600160a01b0384166000908152609a602052604090208054840190555b836001600160a01b0316856001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6868686604051611d5193929190612bf1565b60405180910390a46116488585858585610a13565b610d73827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611a88565b60608160000180548060200260200160405190810160405280929190818152602001828054801561135b57602002820191906000526020600020905b815481526020019060010190808311611dcd5750505050509050919050565b600054610100900460ff16611e575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b611e608261209e565b611ec27feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c60001b6040518060400160405280600481526020017fa4d9662400000000000000000000000000000000000000000000000000000000815250611794565b611eec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af185611794565b611f167f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db93275684611794565b6040805160208101839052610a15917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb39101604051602081830303815290604052611794565b6000818152600183016020526040812054611fa357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610634565b506000610634565b60008181526001830160205260408120548015612094576000611fcf600183612c4c565b8554909150600090611fe390600190612c4c565b905081811461204857600086600001828154811061200357612003612ae2565b906000526020600020015490508087600001848154811061202657612026612ae2565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061205957612059612e10565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610634565b6000915050610634565b600054610100900460ff166121095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101b2565b6001600160a01b038116610f3b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561218a57600080fd5b81356001600160e01b03198116811461107657600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121e1576121e16121a2565b604052919050565b600067ffffffffffffffff821115612203576122036121a2565b50601f01601f191660200190565b600082601f83011261222257600080fd5b8135612235612230826121e9565b6121b8565b81815284602083860101111561224a57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b038116811461227e57600080fd5b919050565b8035801515811461227e57600080fd5b600080600080600060a086880312156122ab57600080fd5b853567ffffffffffffffff808211156122c357600080fd5b6122cf89838a01612211565b965060208801359150808211156122e557600080fd5b506122f288828901612211565b94505061230160408701612267565b92506060860135915061231660808701612283565b90509295509295909350565b60008060006060848603121561233757600080fd5b61234084612267565b925060208401359150604084013567ffffffffffffffff81111561236357600080fd5b61236f86828701612211565b9150509250925092565b600067ffffffffffffffff821115612393576123936121a2565b5060051b60200190565b600082601f8301126123ae57600080fd5b813560206123be61223083612379565b82815260059290921b840181019181810190868411156123dd57600080fd5b8286015b848110156123ff576123f281612267565b83529183019183016123e1565b509695505050505050565b600082601f83011261241b57600080fd5b8135602061242b61223083612379565b82815260059290921b8401810191818101908684111561244a57600080fd5b8286015b848110156123ff578035835291830191830161244e565b600082601f83011261247657600080fd5b8135602061248661223083612379565b82815260059290921b840181019181810190868411156124a557600080fd5b8286015b848110156123ff576124ba81612283565b83529183019183016124a9565b600082601f8301126124d857600080fd5b813560206124e861223083612379565b82815260059290921b8401810191818101908684111561250757600080fd5b8286015b848110156123ff57803567ffffffffffffffff81111561252b5760008081fd5b6125398986838b0101612211565b84525091830191830161250b565b600080600080600060a0868803121561255f57600080fd5b853567ffffffffffffffff8082111561257757600080fd5b61258389838a0161239d565b9650602088013591508082111561259957600080fd5b6125a589838a0161239d565b955060408801359150808211156125bb57600080fd5b6125c789838a0161240a565b945060608801359150808211156125dd57600080fd5b6125e989838a01612465565b935060808801359150808211156125ff57600080fd5b5061260c888289016124c7565b9150509295509295909350565b6000806000806080858703121561262f57600080fd5b61263885612267565b935061264660208601612267565b925061265460408601612283565b9150606085013567ffffffffffffffff81111561267057600080fd5b61267c87828801612211565b91505092959194509250565b60006020828403121561269a57600080fd5b5035919050565b60005b838110156126bc5781810151838201526020016126a4565b50506000910152565b600081518084526126dd8160208601602086016126a1565b601f01601f19169290920160200192915050565b60208152600061107660208301846126c5565b6000806040838503121561271757600080fd5b61272083612267565b915061272e60208401612267565b90509250929050565b6000806020838503121561274a57600080fd5b823567ffffffffffffffff8082111561276257600080fd5b818501915085601f83011261277657600080fd5b81358181111561278557600080fd5b8660208260051b850101111561279a57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561280157603f198886030184526127ef8583516126c5565b945092850192908501906001016127d3565b5092979650505050505050565b60006020828403121561282057600080fd5b61107682612267565b6000806000806080858703121561283f57600080fd5b61284885612267565b93506020850135925061265460408601612283565b600080600080600060a0868803121561287557600080fd5b61287e86612267565b945061288c60208701612267565b9350604086013592506128a160608701612283565b9150608086013567ffffffffffffffff8111156128bd57600080fd5b61260c88828901612211565b600080600080608085870312156128df57600080fd5b6128e885612267565b93506128f660208601612267565b925060408501359150606085013567ffffffffffffffff81111561267057600080fd5b6000806040838503121561292c57600080fd5b82359150602083013567ffffffffffffffff81111561294a57600080fd5b61295685828601612211565b9150509250929050565b6000806040838503121561297357600080fd5b823567ffffffffffffffff8082111561298b57600080fd5b6129978683870161240a565b935060208501359150808211156129ad57600080fd5b50612956858286016124c7565b6020808252825182820181905260009190848201906040850190845b818110156129fb5783516001600160a01b0316835292840192918401916001016129d6565b50909695505050505050565b600060208284031215612a1957600080fd5b813567ffffffffffffffff811115612a3057600080fd5b61192a8482850161240a565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612a7e8184602087016126a1565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561063457610634612a88565b6001600160a01b0384168152826020820152606060408201526000612ad960608301846126c5565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612ad960608301846126c5565b6000808335601e19843603018112612b3a57600080fd5b83018035915067ffffffffffffffff821115612b5557600080fd5b602001915036819003821315612b6a57600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612bb55780818460140360031b1b83161693505b505050919050565b600181811c90821680612bd157607f821691505b602082108103610eb157634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612ad960608301846126c5565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526119c560a08301846126c5565b8181038181111561063457610634612a88565b601f8211156118af57600081815260208120601f850160051c81016020861015612c865750805b601f850160051c820191505b818110156107a957828155600101612c92565b815167ffffffffffffffff811115612cbf57612cbf6121a2565b612cd381612ccd8454612bbd565b84612c5f565b602080601f831160018114612d085760008415612cf05750858301515b600019600386901b1c1916600185901b1785556107a9565b600085815260208120601f198616915b82811015612d3757888601518255948401946001909101908401612d18565b5085821015612d555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516020808301519190811015610eb15760001960209190910360031b1b16919050565b82815260406020820152600061192a60408301846126c5565b600060208284031215612db457600080fd5b815167ffffffffffffffff811115612dcb57600080fd5b8201601f81018413612ddc57600080fd5b8051612dea612230826121e9565b818152856020838501011115612dff57600080fd5b612ad98260208301602086016126a1565b634e487b7160e01b600052603160045260246000fdfea264697066735822122096c5cb5d24e14c39cc271754dbb77a8ddea11ac964732051ac982e599b8a773464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
