{
    "_format": "hh-sol-artifact-1",
    "contractName": "MockUnsafeERC20Permit",
    "sourceName": "contracts/test/MockUnsafeERC20Permit.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DOMAIN_SEPARATOR",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "nonces",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "deadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "v",
                    "type": "uint8"
                },
                {
                    "internalType": "bytes32",
                    "name": "r",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "s",
                    "type": "bytes32"
                }
            ],
            "name": "permit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b506125fb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c55760003560e01c806306fdde03146100ca578063095ea7b3146100e857806318160ddd1461011857806323b872dd14610136578063313ce567146101665780633644e5151461018457806339509351146101a257806370a08231146101d25780637ecebe00146102025780638129fc1c1461023257806395d89b411461023c578063a457c2d71461025a578063a9059cbb1461028a578063d505accf146102ba578063dd62ed3e146102d6575b600080fd5b6100d2610306565b6040516100df919061155b565b60405180910390f35b61010260048036038101906100fd9190611616565b610398565b60405161010f9190611671565b60405180910390f35b6101206103bb565b60405161012d919061169b565b60405180910390f35b610150600480360381019061014b91906116b6565b6103c5565b60405161015d9190611671565b60405180910390f35b61016e6103ce565b60405161017b9190611725565b60405180910390f35b61018c6103d7565b6040516101999190611759565b60405180910390f35b6101bc60048036038101906101b79190611616565b6103e6565b6040516101c99190611671565b60405180910390f35b6101ec60048036038101906101e79190611774565b61041d565b6040516101f9919061169b565b60405180910390f35b61021c60048036038101906102179190611774565b610466565b604051610229919061169b565b60405180910390f35b61023a6104b6565b005b6102446106b9565b604051610251919061155b565b60405180910390f35b610274600480360381019061026f9190611616565b61074b565b6040516102819190611671565b60405180910390f35b6102a4600480360381019061029f9190611616565b6107c2565b6040516102b19190611671565b60405180910390f35b6102d460048036038101906102cf91906117f9565b6107e5565b005b6102f060048036038101906102eb919061189b565b610927565b6040516102fd919061169b565b60405180910390f35b6060603680546103159061190a565b80601f01602080910402602001604051908101604052809291908181526020018280546103419061190a565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b6000806103a36109ae565b90506103b08185856109b6565b600191505092915050565b6000603554905090565b60009392505050565b60006012905090565b60006103e1610b7f565b905090565b6000806103f16109ae565b90506104128185856104038589610927565b61040d919061196a565b6109b6565b600191505092915050565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006104af609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610bbf565b9050919050565b60008060019054906101000a900460ff161590508080156104e75750600160008054906101000a900460ff1660ff16105b8061051457506104f630610bcd565b1580156105135750600160008054906101000a900460ff1660ff16145b5b610553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054a90611a10565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610590576001600060016101000a81548160ff0219169083151502179055505b6105ce6040518060400160405280601581526020017f4d6f636b556e7361666545524332305065726d69740000000000000000000000815250610bf0565b6106426040518060400160405280601581526020017f4d6f636b556e7361666545524332305065726d697400000000000000000000008152506040518060400160405280600681526020017f4d45524332300000000000000000000000000000000000000000000000000000815250610c81565b61065d61064d6109ae565b69d3c21bcecceda1000000610cf4565b80156106b65760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106ad9190611a75565b60405180910390a15b50565b6060603780546106c89061190a565b80601f01602080910402602001604051908101604052809291908181526020018280546106f49061190a565b80156107415780601f1061071657610100808354040283529160200191610741565b820191906000526020600020905b81548152906001019060200180831161072457829003601f168201915b5050505050905090565b6000806107566109ae565b905060006107648286610927565b9050838110156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090611b02565b60405180910390fd5b6107b682868684036109b6565b60019250505092915050565b6000806107cd6109ae565b90506107da818585610e4b565b600191505092915050565b83421115610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f90611b6e565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108578c6110c4565b8960405160200161086d96959493929190611b9d565b604051602081830303815290604052805190602001209050600061089082611122565b905060006108a08287878761113c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090790611c4a565b60405180910390fd5b61091b8a8a8a6109b6565b50505050505050505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90611cdc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90611d6e565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b72919061169b565b60405180910390a3505050565b6000610bba7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610bad611167565b610bb5611171565b61117b565b905090565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690611e00565b60405180910390fd5b610c7e816040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506111b5565b50565b600060019054906101000a900460ff16610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790611e00565b60405180910390fd5b8160369081610cdf9190611ff1565b508060379081610cef9190611ff1565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a9061210f565b60405180910390fd5b610d6f60008383611230565b8060356000828254610d81919061196a565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e33919061169b565b60405180910390a3610e4760008383611235565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906121a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090612233565b60405180910390fd5b610f34838383611230565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906122c5565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110ab919061169b565b60405180910390a36110be848484611235565b50505050565b600080609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061111181610bbf565b915061111c8161123a565b50919050565b600061113561112f610b7f565b83611250565b9050919050565b600080600061114d87878787611283565b9150915061115a81611365565b8192505050949350505050565b6000606554905090565b6000606654905090565b600083838346306040516020016111969594939291906122e5565b6040516020818303038152906040528051906020012090509392505050565b600060019054906101000a900460ff16611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90611e00565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b505050565b505050565b6001816000016000828254019250508190555050565b600082826040516020016112659291906123b0565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156112be57600060039150915061135c565b6000600187878787604051600081526020016040526040516112e394939291906123e7565b6020604051602081039080840390855afa158015611305573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113535760006001925092505061135c565b80600092509250505b94509492505050565b600060048111156113795761137861242c565b5b81600481111561138c5761138b61242c565b5b03156114c857600160048111156113a6576113a561242c565b5b8160048111156113b9576113b861242c565b5b036113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f0906124a7565b60405180910390fd5b6002600481111561140d5761140c61242c565b5b8160048111156114205761141f61242c565b5b03611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145790612513565b60405180910390fd5b600360048111156114745761147361242c565b5b8160048111156114875761148661242c565b5b036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be906125a5565b60405180910390fd5b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156115055780820151818401526020810190506114ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061152d826114cb565b61153781856114d6565b93506115478185602086016114e7565b61155081611511565b840191505092915050565b600060208201905081810360008301526115758184611522565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ad82611582565b9050919050565b6115bd816115a2565b81146115c857600080fd5b50565b6000813590506115da816115b4565b92915050565b6000819050919050565b6115f3816115e0565b81146115fe57600080fd5b50565b600081359050611610816115ea565b92915050565b6000806040838503121561162d5761162c61157d565b5b600061163b858286016115cb565b925050602061164c85828601611601565b9150509250929050565b60008115159050919050565b61166b81611656565b82525050565b60006020820190506116866000830184611662565b92915050565b611695816115e0565b82525050565b60006020820190506116b0600083018461168c565b92915050565b6000806000606084860312156116cf576116ce61157d565b5b60006116dd868287016115cb565b93505060206116ee868287016115cb565b92505060406116ff86828701611601565b9150509250925092565b600060ff82169050919050565b61171f81611709565b82525050565b600060208201905061173a6000830184611716565b92915050565b6000819050919050565b61175381611740565b82525050565b600060208201905061176e600083018461174a565b92915050565b60006020828403121561178a5761178961157d565b5b6000611798848285016115cb565b91505092915050565b6117aa81611709565b81146117b557600080fd5b50565b6000813590506117c7816117a1565b92915050565b6117d681611740565b81146117e157600080fd5b50565b6000813590506117f3816117cd565b92915050565b600080600080600080600060e0888a0312156118185761181761157d565b5b60006118268a828b016115cb565b97505060206118378a828b016115cb565b96505060406118488a828b01611601565b95505060606118598a828b01611601565b945050608061186a8a828b016117b8565b93505060a061187b8a828b016117e4565b92505060c061188c8a828b016117e4565b91505092959891949750929550565b600080604083850312156118b2576118b161157d565b5b60006118c0858286016115cb565b92505060206118d1858286016115cb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061192257607f821691505b602082108103611935576119346118db565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611975826115e0565b9150611980836115e0565b92508282019050808211156119985761199761193b565b5b92915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006119fa602e836114d6565b9150611a058261199e565b604082019050919050565b60006020820190508181036000830152611a29816119ed565b9050919050565b6000819050919050565b6000819050919050565b6000611a5f611a5a611a5584611a30565b611a3a565b611709565b9050919050565b611a6f81611a44565b82525050565b6000602082019050611a8a6000830184611a66565b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611aec6025836114d6565b9150611af782611a90565b604082019050919050565b60006020820190508181036000830152611b1b81611adf565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000611b58601d836114d6565b9150611b6382611b22565b602082019050919050565b60006020820190508181036000830152611b8781611b4b565b9050919050565b611b97816115a2565b82525050565b600060c082019050611bb2600083018961174a565b611bbf6020830188611b8e565b611bcc6040830187611b8e565b611bd9606083018661168c565b611be6608083018561168c565b611bf360a083018461168c565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000611c34601e836114d6565b9150611c3f82611bfe565b602082019050919050565b60006020820190508181036000830152611c6381611c27565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cc66024836114d6565b9150611cd182611c6a565b604082019050919050565b60006020820190508181036000830152611cf581611cb9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d586022836114d6565b9150611d6382611cfc565b604082019050919050565b60006020820190508181036000830152611d8781611d4b565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000611dea602b836114d6565b9150611df582611d8e565b604082019050919050565b60006020820190508181036000830152611e1981611ddd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611eb17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611e74565b611ebb8683611e74565b95508019841693508086168417925050509392505050565b6000611eee611ee9611ee4846115e0565b611a3a565b6115e0565b9050919050565b6000819050919050565b611f0883611ed3565b611f1c611f1482611ef5565b848454611e81565b825550505050565b600090565b611f31611f24565b611f3c818484611eff565b505050565b5b81811015611f6057611f55600082611f29565b600181019050611f42565b5050565b601f821115611fa557611f7681611e4f565b611f7f84611e64565b81016020851015611f8e578190505b611fa2611f9a85611e64565b830182611f41565b50505b505050565b600082821c905092915050565b6000611fc860001984600802611faa565b1980831691505092915050565b6000611fe18383611fb7565b9150826002028217905092915050565b611ffa826114cb565b67ffffffffffffffff81111561201357612012611e20565b5b61201d825461190a565b612028828285611f64565b600060209050601f83116001811461205b5760008415612049578287015190505b6120538582611fd5565b8655506120bb565b601f19841661206986611e4f565b60005b828110156120915784890151825560018201915060208501945060208101905061206c565b868310156120ae57848901516120aa601f891682611fb7565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006120f9601f836114d6565b9150612104826120c3565b602082019050919050565b60006020820190508181036000830152612128816120ec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061218b6025836114d6565b91506121968261212f565b604082019050919050565b600060208201905081810360008301526121ba8161217e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061221d6023836114d6565b9150612228826121c1565b604082019050919050565b6000602082019050818103600083015261224c81612210565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122af6026836114d6565b91506122ba82612253565b604082019050919050565b600060208201905081810360008301526122de816122a2565b9050919050565b600060a0820190506122fa600083018861174a565b612307602083018761174a565b612314604083018661174a565b612321606083018561168c565b61232e6080830184611b8e565b9695505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000612379600283612338565b915061238482612343565b600282019050919050565b6000819050919050565b6123aa6123a582611740565b61238f565b82525050565b60006123bb8261236c565b91506123c78285612399565b6020820191506123d78284612399565b6020820191508190509392505050565b60006080820190506123fc600083018761174a565b6124096020830186611716565b612416604083018561174a565b612423606083018461174a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006124916018836114d6565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006124fd601f836114d6565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061258f6022836114d6565b915061259a82612533565b604082019050919050565b600060208201905081810360008301526125be81612582565b905091905056fea2646970667358221220f1f548269c3c3557aa1dd511504b398feffd06fff98c5453ba8df0562466e76564736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c55760003560e01c806306fdde03146100ca578063095ea7b3146100e857806318160ddd1461011857806323b872dd14610136578063313ce567146101665780633644e5151461018457806339509351146101a257806370a08231146101d25780637ecebe00146102025780638129fc1c1461023257806395d89b411461023c578063a457c2d71461025a578063a9059cbb1461028a578063d505accf146102ba578063dd62ed3e146102d6575b600080fd5b6100d2610306565b6040516100df919061155b565b60405180910390f35b61010260048036038101906100fd9190611616565b610398565b60405161010f9190611671565b60405180910390f35b6101206103bb565b60405161012d919061169b565b60405180910390f35b610150600480360381019061014b91906116b6565b6103c5565b60405161015d9190611671565b60405180910390f35b61016e6103ce565b60405161017b9190611725565b60405180910390f35b61018c6103d7565b6040516101999190611759565b60405180910390f35b6101bc60048036038101906101b79190611616565b6103e6565b6040516101c99190611671565b60405180910390f35b6101ec60048036038101906101e79190611774565b61041d565b6040516101f9919061169b565b60405180910390f35b61021c60048036038101906102179190611774565b610466565b604051610229919061169b565b60405180910390f35b61023a6104b6565b005b6102446106b9565b604051610251919061155b565b60405180910390f35b610274600480360381019061026f9190611616565b61074b565b6040516102819190611671565b60405180910390f35b6102a4600480360381019061029f9190611616565b6107c2565b6040516102b19190611671565b60405180910390f35b6102d460048036038101906102cf91906117f9565b6107e5565b005b6102f060048036038101906102eb919061189b565b610927565b6040516102fd919061169b565b60405180910390f35b6060603680546103159061190a565b80601f01602080910402602001604051908101604052809291908181526020018280546103419061190a565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b6000806103a36109ae565b90506103b08185856109b6565b600191505092915050565b6000603554905090565b60009392505050565b60006012905090565b60006103e1610b7f565b905090565b6000806103f16109ae565b90506104128185856104038589610927565b61040d919061196a565b6109b6565b600191505092915050565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006104af609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610bbf565b9050919050565b60008060019054906101000a900460ff161590508080156104e75750600160008054906101000a900460ff1660ff16105b8061051457506104f630610bcd565b1580156105135750600160008054906101000a900460ff1660ff16145b5b610553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054a90611a10565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610590576001600060016101000a81548160ff0219169083151502179055505b6105ce6040518060400160405280601581526020017f4d6f636b556e7361666545524332305065726d69740000000000000000000000815250610bf0565b6106426040518060400160405280601581526020017f4d6f636b556e7361666545524332305065726d697400000000000000000000008152506040518060400160405280600681526020017f4d45524332300000000000000000000000000000000000000000000000000000815250610c81565b61065d61064d6109ae565b69d3c21bcecceda1000000610cf4565b80156106b65760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106ad9190611a75565b60405180910390a15b50565b6060603780546106c89061190a565b80601f01602080910402602001604051908101604052809291908181526020018280546106f49061190a565b80156107415780601f1061071657610100808354040283529160200191610741565b820191906000526020600020905b81548152906001019060200180831161072457829003601f168201915b5050505050905090565b6000806107566109ae565b905060006107648286610927565b9050838110156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090611b02565b60405180910390fd5b6107b682868684036109b6565b60019250505092915050565b6000806107cd6109ae565b90506107da818585610e4b565b600191505092915050565b83421115610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f90611b6e565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108578c6110c4565b8960405160200161086d96959493929190611b9d565b604051602081830303815290604052805190602001209050600061089082611122565b905060006108a08287878761113c565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610910576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090790611c4a565b60405180910390fd5b61091b8a8a8a6109b6565b50505050505050505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90611cdc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90611d6e565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b72919061169b565b60405180910390a3505050565b6000610bba7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610bad611167565b610bb5611171565b61117b565b905090565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690611e00565b60405180910390fd5b610c7e816040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506111b5565b50565b600060019054906101000a900460ff16610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790611e00565b60405180910390fd5b8160369081610cdf9190611ff1565b508060379081610cef9190611ff1565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a9061210f565b60405180910390fd5b610d6f60008383611230565b8060356000828254610d81919061196a565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e33919061169b565b60405180910390a3610e4760008383611235565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906121a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2090612233565b60405180910390fd5b610f34838383611230565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb2906122c5565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110ab919061169b565b60405180910390a36110be848484611235565b50505050565b600080609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061111181610bbf565b915061111c8161123a565b50919050565b600061113561112f610b7f565b83611250565b9050919050565b600080600061114d87878787611283565b9150915061115a81611365565b8192505050949350505050565b6000606554905090565b6000606654905090565b600083838346306040516020016111969594939291906122e5565b6040516020818303038152906040528051906020012090509392505050565b600060019054906101000a900460ff16611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb90611e00565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b505050565b505050565b6001816000016000828254019250508190555050565b600082826040516020016112659291906123b0565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156112be57600060039150915061135c565b6000600187878787604051600081526020016040526040516112e394939291906123e7565b6020604051602081039080840390855afa158015611305573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113535760006001925092505061135c565b80600092509250505b94509492505050565b600060048111156113795761137861242c565b5b81600481111561138c5761138b61242c565b5b03156114c857600160048111156113a6576113a561242c565b5b8160048111156113b9576113b861242c565b5b036113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f0906124a7565b60405180910390fd5b6002600481111561140d5761140c61242c565b5b8160048111156114205761141f61242c565b5b03611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145790612513565b60405180910390fd5b600360048111156114745761147361242c565b5b8160048111156114875761148661242c565b5b036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be906125a5565b60405180910390fd5b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156115055780820151818401526020810190506114ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061152d826114cb565b61153781856114d6565b93506115478185602086016114e7565b61155081611511565b840191505092915050565b600060208201905081810360008301526115758184611522565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ad82611582565b9050919050565b6115bd816115a2565b81146115c857600080fd5b50565b6000813590506115da816115b4565b92915050565b6000819050919050565b6115f3816115e0565b81146115fe57600080fd5b50565b600081359050611610816115ea565b92915050565b6000806040838503121561162d5761162c61157d565b5b600061163b858286016115cb565b925050602061164c85828601611601565b9150509250929050565b60008115159050919050565b61166b81611656565b82525050565b60006020820190506116866000830184611662565b92915050565b611695816115e0565b82525050565b60006020820190506116b0600083018461168c565b92915050565b6000806000606084860312156116cf576116ce61157d565b5b60006116dd868287016115cb565b93505060206116ee868287016115cb565b92505060406116ff86828701611601565b9150509250925092565b600060ff82169050919050565b61171f81611709565b82525050565b600060208201905061173a6000830184611716565b92915050565b6000819050919050565b61175381611740565b82525050565b600060208201905061176e600083018461174a565b92915050565b60006020828403121561178a5761178961157d565b5b6000611798848285016115cb565b91505092915050565b6117aa81611709565b81146117b557600080fd5b50565b6000813590506117c7816117a1565b92915050565b6117d681611740565b81146117e157600080fd5b50565b6000813590506117f3816117cd565b92915050565b600080600080600080600060e0888a0312156118185761181761157d565b5b60006118268a828b016115cb565b97505060206118378a828b016115cb565b96505060406118488a828b01611601565b95505060606118598a828b01611601565b945050608061186a8a828b016117b8565b93505060a061187b8a828b016117e4565b92505060c061188c8a828b016117e4565b91505092959891949750929550565b600080604083850312156118b2576118b161157d565b5b60006118c0858286016115cb565b92505060206118d1858286016115cb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061192257607f821691505b602082108103611935576119346118db565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611975826115e0565b9150611980836115e0565b92508282019050808211156119985761199761193b565b5b92915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b60006119fa602e836114d6565b9150611a058261199e565b604082019050919050565b60006020820190508181036000830152611a29816119ed565b9050919050565b6000819050919050565b6000819050919050565b6000611a5f611a5a611a5584611a30565b611a3a565b611709565b9050919050565b611a6f81611a44565b82525050565b6000602082019050611a8a6000830184611a66565b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611aec6025836114d6565b9150611af782611a90565b604082019050919050565b60006020820190508181036000830152611b1b81611adf565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000611b58601d836114d6565b9150611b6382611b22565b602082019050919050565b60006020820190508181036000830152611b8781611b4b565b9050919050565b611b97816115a2565b82525050565b600060c082019050611bb2600083018961174a565b611bbf6020830188611b8e565b611bcc6040830187611b8e565b611bd9606083018661168c565b611be6608083018561168c565b611bf360a083018461168c565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000611c34601e836114d6565b9150611c3f82611bfe565b602082019050919050565b60006020820190508181036000830152611c6381611c27565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cc66024836114d6565b9150611cd182611c6a565b604082019050919050565b60006020820190508181036000830152611cf581611cb9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d586022836114d6565b9150611d6382611cfc565b604082019050919050565b60006020820190508181036000830152611d8781611d4b565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000611dea602b836114d6565b9150611df582611d8e565b604082019050919050565b60006020820190508181036000830152611e1981611ddd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611eb17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611e74565b611ebb8683611e74565b95508019841693508086168417925050509392505050565b6000611eee611ee9611ee4846115e0565b611a3a565b6115e0565b9050919050565b6000819050919050565b611f0883611ed3565b611f1c611f1482611ef5565b848454611e81565b825550505050565b600090565b611f31611f24565b611f3c818484611eff565b505050565b5b81811015611f6057611f55600082611f29565b600181019050611f42565b5050565b601f821115611fa557611f7681611e4f565b611f7f84611e64565b81016020851015611f8e578190505b611fa2611f9a85611e64565b830182611f41565b50505b505050565b600082821c905092915050565b6000611fc860001984600802611faa565b1980831691505092915050565b6000611fe18383611fb7565b9150826002028217905092915050565b611ffa826114cb565b67ffffffffffffffff81111561201357612012611e20565b5b61201d825461190a565b612028828285611f64565b600060209050601f83116001811461205b5760008415612049578287015190505b6120538582611fd5565b8655506120bb565b601f19841661206986611e4f565b60005b828110156120915784890151825560018201915060208501945060208101905061206c565b868310156120ae57848901516120aa601f891682611fb7565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006120f9601f836114d6565b9150612104826120c3565b602082019050919050565b60006020820190508181036000830152612128816120ec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061218b6025836114d6565b91506121968261212f565b604082019050919050565b600060208201905081810360008301526121ba8161217e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061221d6023836114d6565b9150612228826121c1565b604082019050919050565b6000602082019050818103600083015261224c81612210565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122af6026836114d6565b91506122ba82612253565b604082019050919050565b600060208201905081810360008301526122de816122a2565b9050919050565b600060a0820190506122fa600083018861174a565b612307602083018761174a565b612314604083018661174a565b612321606083018561168c565b61232e6080830184611b8e565b9695505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000612379600283612338565b915061238482612343565b600282019050919050565b6000819050919050565b6123aa6123a582611740565b61238f565b82525050565b60006123bb8261236c565b91506123c78285612399565b6020820191506123d78284612399565b6020820191508190509392505050565b60006080820190506123fc600083018761174a565b6124096020830186611716565b612416604083018561174a565b612423606083018461174a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006124916018836114d6565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006124fd601f836114d6565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061258f6022836114d6565b915061259a82612533565b604082019050919050565b600060208201905081810360008301526125be81612582565b905091905056fea2646970667358221220f1f548269c3c3557aa1dd511504b398feffd06fff98c5453ba8df0562466e76564736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
