{
  "_format": "hh-sol-artifact-1",
  "contractName": "OwnedResolver",
  "sourceName": "contracts/resolvers/OwnedResolver.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "contentType",
          "type": "uint256"
        }
      ],
      "name": "ABIChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "a",
          "type": "address"
        }
      ],
      "name": "AddrChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "newAddress",
          "type": "bytes"
        }
      ],
      "name": "AddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "ContenthashChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "record",
          "type": "bytes"
        }
      ],
      "name": "DNSRecordChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "DNSRecordDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "lastzonehash",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "zonehash",
          "type": "bytes"
        }
      ],
      "name": "DNSZonehashChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "implementer",
          "type": "address"
        }
      ],
      "name": "InterfaceChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "NameChanged",
      "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": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "PubkeyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "indexedKey",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "name": "TextChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "newVersion",
          "type": "uint64"
        }
      ],
      "name": "VersionChanged",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "contentTypes",
          "type": "uint256"
        }
      ],
      "name": "ABI",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "clearRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "contenthash",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        },
        {
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "dnsRecord",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        }
      ],
      "name": "hasDNSRecords",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "interfaceImplementer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "pubkey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "recordVersions",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "contentType",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setABI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "coinType",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "a",
          "type": "bytes"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "a",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "setContenthash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setDNSRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "implementer",
          "type": "address"
        }
      ],
      "name": "setInterface",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "newName",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "x",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "setPubkey",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setText",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "hash",
          "type": "bytes"
        }
      ],
      "name": "setZonehash",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "string",
          "name": "key",
          "type": "string"
        }
      ],
      "name": "text",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "zonehash",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612c60806200007f6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c8063691f3431116100f9578063c869023311610097578063d700ff3311610071578063d700ff331461044c578063e59d895d1461048f578063f1cb7e06146104a2578063f2fde38b146104b557600080fd5b8063c8690233146103cc578063ce3decdc14610426578063d5fa2b001461043957600080fd5b80638b95dd71116100d35780638b95dd71146103755780638da5cb5b14610388578063a8fa5682146103a6578063bc1c58d1146103b957600080fd5b8063691f343114610347578063715018a61461035a578063773722131461036257600080fd5b8063304e6ade116101665780634cbf6ba4116101405780634cbf6ba4146102b357806359d1d43c146103015780635c98042b14610321578063623195b01461033457600080fd5b8063304e6ade1461027a5780633603d7581461028d5780633b3b57de146102a057600080fd5b8063124a319c11610197578063124a319c1461020e5780632203ab561461024657806329cd62ea1461026757600080fd5b806301ffc9a7146101be5780630af179d7146101e657806310f13a8c146101fb575b600080fd5b6101d16101cc366004612382565b6104c8565b60405190151581526020015b60405180910390f35b6101f96101f43660046123df565b6104d9565b005b6101f961020936600461242b565b6106f8565b61022161021c3660046124a5565b6107da565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6102596102543660046124d1565b610b37565b6040516101dd929190612543565b6101f961027536600461255c565b610c6f565b6101f96102883660046123df565b610d24565b6101f961029b366004612588565b610db5565b6102216102ae366004612588565b610e6d565b6101d16102c13660046124d1565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61031461030f3660046123df565b610e9f565b6040516101dd91906125a1565b61031461032f366004612588565b610f81565b6101f96103423660046125b4565b611042565b610314610355366004612588565b6110f4565b6101f9611130565b6101f96103703660046123df565b6111c2565b6101f9610383366004612636565b611253565b60005473ffffffffffffffffffffffffffffffffffffffff16610221565b6103146103b43660046126fa565b611355565b6103146103c7366004612588565b6113a5565b6104116103da366004612588565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101dd565b6101f96104343660046123df565b6113e1565b6101f961044736600461275e565b611539565b61047661045a366004612588565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101dd565b6101f961049d366004612781565b611573565b6103146104b03660046124d1565b61166c565b6101f96104c33660046127bd565b611736565b60006104d382611866565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146104ff57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105679183918d908d908190840183828082843760009201919091525092939250506118bc9050565b90505b80515160208201511015610691578661ffff166000036105cf57806040015196506105948161191d565b9450846040516020016105a791906127d8565b6040516020818303038152906040528051906020012092506105c88161193e565b9350610683565b60006105da8261191d565b9050816040015161ffff168861ffff161415806105fe57506105fc868261195a565b155b156106815761065a8c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d9150610651908290612823565b8b51158a611978565b81604001519750816020015196508095508580519060200120935061067e8261193e565b94505b505b61068c81611be5565b61056a565b508351156106ec576106ec8a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506106e391508290508f612823565b89511588611978565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461071e57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b8252808320898452909152908190209051849184916107609089908990612836565b9081526020016040518091039020918261077b9291906128e7565b50848460405161078c929190612836565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107ca94939291906129d2565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff1680156108555790506104d3565b600061086085610e6d565b905073ffffffffffffffffffffffffffffffffffffffff8116610888576000925050506104d3565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161093491906127d8565b600060405180830381855afa9150503d806000811461096f576040519150601f19603f3d011682016040523d82523d6000602084013e610974565b606091505b5091509150811580610987575060208151105b806109c9575080601f815181106109a0576109a0612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156109db5760009450505050506104d3565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a8491906127d8565b600060405180830381855afa9150503d8060008114610abf576040519150601f19603f3d011682016040523d82523d6000602084013e610ac4565b606091505b509092509050811580610ad8575060208151105b80610b1a575080601f81518110610af157610af1612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b2c5760009450505050506104d3565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b848111610c4f5780851615801590610b98575060008181526020839052604081208054610b9490612846565b9050115b15610c475780826000838152602001908152602001600020808054610bbc90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890612846565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b50505050509050935093505050610c68565b60011b610b68565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c9557600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d169086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d4a57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610d828385836128e7565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d16929190612a33565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610ddb57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610dff83612a47565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e7b83603c61166c565b90508051600003610e8f5750600092915050565b610e9881611ccd565b9392505050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610ee19085908590612836565b90815260200160405180910390208054610efa90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2690612846565b8015610f735780601f10610f4857610100808354040283529160200191610f73565b820191906000526020600020905b815481529060010190602001808311610f5657829003601f168201915b505050505090509392505050565b60008181526001602090815260408083205467ffffffffffffffff168352600582528083208484529091529020805460609190610fbd90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe990612846565b80156110365780601f1061100b57610100808354040283529160200191611036565b820191906000526020600020905b81548152906001019060200180831161101957829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461106857600080fd5b83611074600182612823565b161561107f57600080fd5b60008581526001602090815260408083205467ffffffffffffffff16835260028252808320888452825280832087845290915290206110bf8385836128e7565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff168352600982528083208484529091529020805460609190610fbd90612846565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6111c06000611cf5565b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146111e857600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526009825280832087845290915290206112208385836128e7565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d16929190612a33565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461127957600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516112ab929190612543565b60405180910390a2603c830361130f57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26112e684611ccd565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff168352600382528083208784528252808320868452909152902061134e8382612a6e565b5050505050565b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610efa90612846565b60008181526001602090815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fbd90612846565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461140757600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161144390612846565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612846565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506114f490508587836128e7565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161152993929190612b2e565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461155f57600080fd5b61156e83603c61038385611d6a565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461159957600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915290208054606091906116b090612846565b80601f01602080910402602001604051908101604052809291908181526020018280546116dc90612846565b80156117295780601f106116fe57610100808354040283529160200191611729565b820191906000526020600020905b81548152906001019060200180831161170c57829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111ad565b73ffffffffffffffffffffffffffffffffffffffff811661185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016111ad565b61186381611cf5565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806104d357506104d382611da3565b61190a6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526104d381611be5565b602081015181516060916104d3916119359082611df9565b84519190611e5b565b60a081015160c08201516060916104d391611935908290612823565b600081518351148015610e985750610e988360008460008751611ed2565b86516020880120600061198c878787611e5b565b90508315611ab65767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c168452909152902080546119d790612846565b159050611a365767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611a1a83612b5e565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611a77916122ff565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611aa9929190612b7c565b60405180910390a26106ec565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611af990612846565b9050600003611b5a5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611b3e83612ba2565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611b9c8282612a6e565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611bd193929190612bb9565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611bfc5750565b6000611c1082600001518360200151611df9565b8260200151611c1f9190612be8565b8251909150611c2e9082611ef5565b61ffff166040830152611c42600282612be8565b8251909150611c519082611ef5565b61ffff166060830152611c65600282612be8565b8251909150611c749082611f1d565b63ffffffff166080830152611c8a600482612be8565b8251909150600090611c9c9083611ef5565b61ffff169050611cad600283612be8565b60a084018190529150611cc08183612be8565b60c0909301929092525050565b60008151601414611cdd57600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc86902330000000000000000000000000000000000000000000000000000000014806104d357506104d382611f47565b6000815b83518110611e0d57611e0d612bfb565b6000611e198583611f9d565b60ff169050611e29816001612be8565b611e339083612be8565b915080600003611e435750611e49565b50611dfd565b611e538382612823565b949350505050565b8251606090611e6a8385612be8565b1115611e7557600080fd5b60008267ffffffffffffffff811115611e9057611e90612607565b6040519080825280601f01601f191660200182016040528015611eba576020820181803683370190505b50905060208082019086860101610b2c828287611fc1565b6000611edf848484612017565b611eea878785612017565b149695505050505050565b8151600090611f05836002612be8565b1115611f1057600080fd5b50016002015161ffff1690565b8151600090611f2d836004612be8565b1115611f3857600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f34310000000000000000000000000000000000000000000000000000000014806104d357506104d38261203b565b6000828281518110611fb157611fb1612a04565b016020015160f81c905092915050565b60208110611ff95781518352611fd8602084612be8565b9250611fe5602083612be8565b9150611ff2602082612823565b9050611fc1565b905182516020929092036101000a6000190180199091169116179052565b82516000906120268385612be8565b111561203157600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c0000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061211f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d10000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061220d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab560000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff330000000000000000000000000000000000000000000000000000000014806104d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104d3565b50805461230b90612846565b6000825580601f1061231b575050565b601f01602090049060005260206000209081019061186391905b808211156123495760008155600101612335565b5090565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461237d57600080fd5b919050565b60006020828403121561239457600080fd5b610e988261234d565b60008083601f8401126123af57600080fd5b50813567ffffffffffffffff8111156123c757600080fd5b602083019150836020828501011115610c6857600080fd5b6000806000604084860312156123f457600080fd5b83359250602084013567ffffffffffffffff81111561241257600080fd5b61241e8682870161239d565b9497909650939450505050565b60008060008060006060868803121561244357600080fd5b85359450602086013567ffffffffffffffff8082111561246257600080fd5b61246e89838a0161239d565b9096509450604088013591508082111561248757600080fd5b506124948882890161239d565b969995985093965092949392505050565b600080604083850312156124b857600080fd5b823591506124c86020840161234d565b90509250929050565b600080604083850312156124e457600080fd5b50508035926020909101359150565b60005b8381101561250e5781810151838201526020016124f6565b50506000910152565b6000815180845261252f8160208601602086016124f3565b601f01601f19169290920160200192915050565b828152604060208201526000611e536040830184612517565b60008060006060848603121561257157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561259a57600080fd5b5035919050565b602081526000610e986020830184612517565b600080600080606085870312156125ca57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156125ef57600080fd5b6125fb8782880161239d565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561264b57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561267157600080fd5b818601915086601f83011261268557600080fd5b81358181111561269757612697612607565b604051601f8201601f19908116603f011681019083821181831017156126bf576126bf612607565b816040528281528960208487010111156126d857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561270f57600080fd5b8335925060208401359150604084013561ffff8116811461272f57600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461237d57600080fd5b6000806040838503121561277157600080fd5b823591506124c86020840161273a565b60008060006060848603121561279657600080fd5b833592506127a66020850161234d565b91506127b46040850161273a565b90509250925092565b6000602082840312156127cf57600080fd5b610e988261273a565b600082516127ea8184602087016124f3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d3576104d36127f4565b8183823760009101908152919050565b600181811c9082168061285a57607f821691505b602082108103612893577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561156e57600081815260208120601f850160051c810160208610156128c05750805b601f850160051c820191505b818110156128df578281556001016128cc565b505050505050565b67ffffffffffffffff8311156128ff576128ff612607565b6129138361290d8354612846565b83612899565b6000601f841160018114612947576000851561292f5750838201355b600019600387901b1c1916600186901b17835561134e565b600083815260209020601f19861690835b828110156129785786850135825560209485019460019092019101612958565b50868210156129955760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006129e66040830186886129a7565b82810360208401526129f98185876129a7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000611e536020830184866129a7565b600067ffffffffffffffff808316818103612a6457612a646127f4565b6001019392505050565b815167ffffffffffffffff811115612a8857612a88612607565b612a9c81612a968454612846565b84612899565b602080601f831160018114612ad15760008415612ab95750858301515b600019600386901b1c1916600185901b1785556128df565b600085815260208120601f198616915b82811015612b0057888601518255948401946001909101908401612ae1565b5085821015612b1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612b416040830186612517565b8281036020840152612b548185876129a7565b9695505050505050565b600061ffff821680612b7257612b726127f4565b6000190192915050565b604081526000612b8f6040830185612517565b905061ffff831660208301529392505050565b600061ffff808316818103612a6457612a646127f4565b606081526000612bcc6060830186612517565b61ffff851660208401528281036040840152612b548185612517565b808201808211156104d3576104d36127f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea264697066735822122077fd1eaea1e9f2eae2e4c087dcf5d04bfe704aef62b57897cf9faf23fe0fdbce64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101b95760003560e01c8063691f3431116100f9578063c869023311610097578063d700ff3311610071578063d700ff331461044c578063e59d895d1461048f578063f1cb7e06146104a2578063f2fde38b146104b557600080fd5b8063c8690233146103cc578063ce3decdc14610426578063d5fa2b001461043957600080fd5b80638b95dd71116100d35780638b95dd71146103755780638da5cb5b14610388578063a8fa5682146103a6578063bc1c58d1146103b957600080fd5b8063691f343114610347578063715018a61461035a578063773722131461036257600080fd5b8063304e6ade116101665780634cbf6ba4116101405780634cbf6ba4146102b357806359d1d43c146103015780635c98042b14610321578063623195b01461033457600080fd5b8063304e6ade1461027a5780633603d7581461028d5780633b3b57de146102a057600080fd5b8063124a319c11610197578063124a319c1461020e5780632203ab561461024657806329cd62ea1461026757600080fd5b806301ffc9a7146101be5780630af179d7146101e657806310f13a8c146101fb575b600080fd5b6101d16101cc366004612382565b6104c8565b60405190151581526020015b60405180910390f35b6101f96101f43660046123df565b6104d9565b005b6101f961020936600461242b565b6106f8565b61022161021c3660046124a5565b6107da565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b6102596102543660046124d1565b610b37565b6040516101dd929190612543565b6101f961027536600461255c565b610c6f565b6101f96102883660046123df565b610d24565b6101f961029b366004612588565b610db5565b6102216102ae366004612588565b610e6d565b6101d16102c13660046124d1565b60008281526001602090815260408083205467ffffffffffffffff1683526007825280832094835293815283822092825291909152205461ffff16151590565b61031461030f3660046123df565b610e9f565b6040516101dd91906125a1565b61031461032f366004612588565b610f81565b6101f96103423660046125b4565b611042565b610314610355366004612588565b6110f4565b6101f9611130565b6101f96103703660046123df565b6111c2565b6101f9610383366004612636565b611253565b60005473ffffffffffffffffffffffffffffffffffffffff16610221565b6103146103b43660046126fa565b611355565b6103146103c7366004612588565b6113a5565b6104116103da366004612588565b60008181526001602081815260408084205467ffffffffffffffff168452600a825280842094845293905291902080549101549091565b604080519283526020830191909152016101dd565b6101f96104343660046123df565b6113e1565b6101f961044736600461275e565b611539565b61047661045a366004612588565b60016020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101dd565b6101f961049d366004612781565b611573565b6103146104b03660046124d1565b61166c565b6101f96104c33660046127bd565b611736565b60006104d382611866565b92915050565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146104ff57600080fd5b6000848152600160209081526040808320548151601f870184900484028101840190925285825283926060928392859267ffffffffffffffff9091169183916105679183918d908d908190840183828082843760009201919091525092939250506118bc9050565b90505b80515160208201511015610691578661ffff166000036105cf57806040015196506105948161191d565b9450846040516020016105a791906127d8565b6040516020818303038152906040528051906020012092506105c88161193e565b9350610683565b60006105da8261191d565b9050816040015161ffff168861ffff161415806105fe57506105fc868261195a565b155b156106815761065a8c878a8e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208801518d9150610651908290612823565b8b51158a611978565b81604001519750816020015196508095508580519060200120935061067e8261193e565b94505b505b61068c81611be5565b61056a565b508351156106ec576106ec8a85888c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506106e391508290508f612823565b89511588611978565b50505050505050505050565b600054859073ffffffffffffffffffffffffffffffffffffffff16331461071e57600080fd5b60008681526001602090815260408083205467ffffffffffffffff168352600b8252808320898452909152908190209051849184916107609089908990612836565b9081526020016040518091039020918261077b9291906128e7565b50848460405161078c929190612836565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516107ca94939291906129d2565b60405180910390a3505050505050565b60008281526001602090815260408083205467ffffffffffffffff1683526008825280832085845282528083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205473ffffffffffffffffffffffffffffffffffffffff1680156108555790506104d3565b600061086085610e6d565b905073ffffffffffffffffffffffffffffffffffffffff8116610888576000925050506104d3565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000006024820152600090819073ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790525161093491906127d8565b600060405180830381855afa9150503d806000811461096f576040519150601f19603f3d011682016040523d82523d6000602084013e610974565b606091505b5091509150811580610987575060208151105b806109c9575080601f815181106109a0576109a0612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156109db5760009450505050506104d3565b6040517fffffffff000000000000000000000000000000000000000000000000000000008716602482015273ffffffffffffffffffffffffffffffffffffffff84169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a70000000000000000000000000000000000000000000000000000000017905251610a8491906127d8565b600060405180830381855afa9150503d8060008114610abf576040519150601f19603f3d011682016040523d82523d6000602084013e610ac4565b606091505b509092509050811580610ad8575060208151105b80610b1a575080601f81518110610af157610af1612a04565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b15610b2c5760009450505050506104d3565b509095945050505050565b60008281526001602081815260408084205467ffffffffffffffff1684526002825280842086855290915282206060915b848111610c4f5780851615801590610b98575060008181526020839052604081208054610b9490612846565b9050115b15610c475780826000838152602001908152602001600020808054610bbc90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890612846565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b50505050509050935093505050610c68565b60011b610b68565b5060006040518060200160405280600081525092509250505b9250929050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610c9557600080fd5b6040805180820182528481526020808201858152600088815260018084528582205467ffffffffffffffff168252600a84528582208a835290935284902092518355519101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610d169086908690918252602082015260400190565b60405180910390a250505050565b600054839073ffffffffffffffffffffffffffffffffffffffff163314610d4a57600080fd5b60008481526001602090815260408083205467ffffffffffffffff168352600482528083208784529091529020610d828385836128e7565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610d16929190612a33565b600054819073ffffffffffffffffffffffffffffffffffffffff163314610ddb57600080fd5b6000828152600160205260408120805467ffffffffffffffff1691610dff83612a47565b82546101009290920a67ffffffffffffffff8181021990931691831602179091556000848152600160209081526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610e7b83603c61166c565b90508051600003610e8f5750600092915050565b610e9881611ccd565b9392505050565b60008381526001602090815260408083205467ffffffffffffffff168352600b825280832086845290915290819020905160609190610ee19085908590612836565b90815260200160405180910390208054610efa90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2690612846565b8015610f735780601f10610f4857610100808354040283529160200191610f73565b820191906000526020600020905b815481529060010190602001808311610f5657829003601f168201915b505050505090509392505050565b60008181526001602090815260408083205467ffffffffffffffff168352600582528083208484529091529020805460609190610fbd90612846565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe990612846565b80156110365780601f1061100b57610100808354040283529160200191611036565b820191906000526020600020905b81548152906001019060200180831161101957829003601f168201915b50505050509050919050565b600054849073ffffffffffffffffffffffffffffffffffffffff16331461106857600080fd5b83611074600182612823565b161561107f57600080fd5b60008581526001602090815260408083205467ffffffffffffffff16835260028252808320888452825280832087845290915290206110bf8385836128e7565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526001602090815260408083205467ffffffffffffffff168352600982528083208484529091529020805460609190610fbd90612846565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6111c06000611cf5565b565b600054839073ffffffffffffffffffffffffffffffffffffffff1633146111e857600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526009825280832087845290915290206112208385836128e7565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610d16929190612a33565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461127957600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af75284846040516112ab929190612543565b60405180910390a2603c830361130f57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd26112e684611ccd565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a25b60008481526001602090815260408083205467ffffffffffffffff168352600382528083208784528252808320868452909152902061134e8382612a6e565b5050505050565b60008381526001602090815260408083205467ffffffffffffffff168352600682528083208684528252808320858452825280832061ffff851684529091529020805460609190610efa90612846565b60008181526001602090815260408083205467ffffffffffffffff168352600482528083208484529091529020805460609190610fbd90612846565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461140757600080fd5b60008481526001602090815260408083205467ffffffffffffffff16808452600583528184208885529092528220805491929161144390612846565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612846565b80156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505067ffffffffffffffff841660009081526005602090815260408083208b845290915290209192506114f490508587836128e7565b50857f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f8582878760405161152993929190612b2e565b60405180910390a2505050505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331461155f57600080fd5b61156e83603c61038385611d6a565b505050565b600054839073ffffffffffffffffffffffffffffffffffffffff16331461159957600080fd5b60008481526001602090815260408083205467ffffffffffffffff1683526008825280832087845282528083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b60008281526001602090815260408083205467ffffffffffffffff16835260038252808320858452825280832084845290915290208054606091906116b090612846565b80601f01602080910402602001604051908101604052809291908181526020018280546116dc90612846565b80156117295780601f106116fe57610100808354040283529160200191611729565b820191906000526020600020905b81548152906001019060200180831161170c57829003601f168201915b5050505050905092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146117b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016111ad565b73ffffffffffffffffffffffffffffffffffffffff811661185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016111ad565b61186381611cf5565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c0000000000000000000000000000000000000000000000000000000014806104d357506104d382611da3565b61190a6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b82815260c081018290526104d381611be5565b602081015181516060916104d3916119359082611df9565b84519190611e5b565b60a081015160c08201516060916104d391611935908290612823565b600081518351148015610e985750610e988360008460008751611ed2565b86516020880120600061198c878787611e5b565b90508315611ab65767ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c168452909152902080546119d790612846565b159050611a365767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611a1a83612b5e565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091528120611a77916122ff565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a604051611aa9929190612b7c565b60405180910390a26106ec565b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c16845290915290208054611af990612846565b9050600003611b5a5767ffffffffffffffff831660009081526007602090815260408083208d845282528083208584529091528120805461ffff1691611b3e83612ba2565b91906101000a81548161ffff021916908361ffff160217905550505b67ffffffffffffffff831660009081526006602090815260408083208d84528252808320858452825280832061ffff8c1684529091529020611b9c8282612a6e565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a84604051611bd193929190612bb9565b60405180910390a250505050505050505050565b60c08101516020820181905281515111611bfc5750565b6000611c1082600001518360200151611df9565b8260200151611c1f9190612be8565b8251909150611c2e9082611ef5565b61ffff166040830152611c42600282612be8565b8251909150611c519082611ef5565b61ffff166060830152611c65600282612be8565b8251909150611c749082611f1d565b63ffffffff166080830152611c8a600482612be8565b8251909150600090611c9c9083611ef5565b61ffff169050611cad600283612be8565b60a084018190529150611cc08183612be8565b60c0909301929092525050565b60008151601414611cdd57600080fd5b50602001516c01000000000000000000000000900490565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc86902330000000000000000000000000000000000000000000000000000000014806104d357506104d382611f47565b6000815b83518110611e0d57611e0d612bfb565b6000611e198583611f9d565b60ff169050611e29816001612be8565b611e339083612be8565b915080600003611e435750611e49565b50611dfd565b611e538382612823565b949350505050565b8251606090611e6a8385612be8565b1115611e7557600080fd5b60008267ffffffffffffffff811115611e9057611e90612607565b6040519080825280601f01601f191660200182016040528015611eba576020820181803683370190505b50905060208082019086860101610b2c828287611fc1565b6000611edf848484612017565b611eea878785612017565b149695505050505050565b8151600090611f05836002612be8565b1115611f1057600080fd5b50016002015161ffff1690565b8151600090611f2d836004612be8565b1115611f3857600080fd5b50016004015163ffffffff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f691f34310000000000000000000000000000000000000000000000000000000014806104d357506104d38261203b565b6000828281518110611fb157611fb1612a04565b016020015160f81c905092915050565b60208110611ff95781518352611fd8602084612be8565b9250611fe5602083612be8565b9150611ff2602082612823565b9050611fc1565b905182516020929092036101000a6000190180199091169116179052565b82516000906120268385612be8565b111561203157600080fd5b5091016020012090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f124a319c0000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fa8fa568200000000000000000000000000000000000000000000000000000000148061211f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5c98042b00000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fbc1c58d10000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061220d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab560000000000000000000000000000000000000000000000000000000014806104d357506104d38260007fffffffff0000000000000000000000000000000000000000000000000000000082167fd700ff330000000000000000000000000000000000000000000000000000000014806104d357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104d3565b50805461230b90612846565b6000825580601f1061231b575050565b601f01602090049060005260206000209081019061186391905b808211156123495760008155600101612335565b5090565b80357fffffffff000000000000000000000000000000000000000000000000000000008116811461237d57600080fd5b919050565b60006020828403121561239457600080fd5b610e988261234d565b60008083601f8401126123af57600080fd5b50813567ffffffffffffffff8111156123c757600080fd5b602083019150836020828501011115610c6857600080fd5b6000806000604084860312156123f457600080fd5b83359250602084013567ffffffffffffffff81111561241257600080fd5b61241e8682870161239d565b9497909650939450505050565b60008060008060006060868803121561244357600080fd5b85359450602086013567ffffffffffffffff8082111561246257600080fd5b61246e89838a0161239d565b9096509450604088013591508082111561248757600080fd5b506124948882890161239d565b969995985093965092949392505050565b600080604083850312156124b857600080fd5b823591506124c86020840161234d565b90509250929050565b600080604083850312156124e457600080fd5b50508035926020909101359150565b60005b8381101561250e5781810151838201526020016124f6565b50506000910152565b6000815180845261252f8160208601602086016124f3565b601f01601f19169290920160200192915050565b828152604060208201526000611e536040830184612517565b60008060006060848603121561257157600080fd5b505081359360208301359350604090920135919050565b60006020828403121561259a57600080fd5b5035919050565b602081526000610e986020830184612517565b600080600080606085870312156125ca57600080fd5b8435935060208501359250604085013567ffffffffffffffff8111156125ef57600080fd5b6125fb8782880161239d565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561264b57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561267157600080fd5b818601915086601f83011261268557600080fd5b81358181111561269757612697612607565b604051601f8201601f19908116603f011681019083821181831017156126bf576126bf612607565b816040528281528960208487010111156126d857600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561270f57600080fd5b8335925060208401359150604084013561ffff8116811461272f57600080fd5b809150509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461237d57600080fd5b6000806040838503121561277157600080fd5b823591506124c86020840161273a565b60008060006060848603121561279657600080fd5b833592506127a66020850161234d565b91506127b46040850161273a565b90509250925092565b6000602082840312156127cf57600080fd5b610e988261273a565b600082516127ea8184602087016124f3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156104d3576104d36127f4565b8183823760009101908152919050565b600181811c9082168061285a57607f821691505b602082108103612893577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561156e57600081815260208120601f850160051c810160208610156128c05750805b601f850160051c820191505b818110156128df578281556001016128cc565b505050505050565b67ffffffffffffffff8311156128ff576128ff612607565b6129138361290d8354612846565b83612899565b6000601f841160018114612947576000851561292f5750838201355b600019600387901b1c1916600186901b17835561134e565b600083815260209020601f19861690835b828110156129785786850135825560209485019460019092019101612958565b50868210156129955760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6040815260006129e66040830186886129a7565b82810360208401526129f98185876129a7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602081526000611e536020830184866129a7565b600067ffffffffffffffff808316818103612a6457612a646127f4565b6001019392505050565b815167ffffffffffffffff811115612a8857612a88612607565b612a9c81612a968454612846565b84612899565b602080601f831160018114612ad15760008415612ab95750858301515b600019600386901b1c1916600185901b1785556128df565b600085815260208120601f198616915b82811015612b0057888601518255948401946001909101908401612ae1565b5085821015612b1e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000612b416040830186612517565b8281036020840152612b548185876129a7565b9695505050505050565b600061ffff821680612b7257612b726127f4565b6000190192915050565b604081526000612b8f6040830185612517565b905061ffff831660208301529392505050565b600061ffff808316818103612a6457612a646127f4565b606081526000612bcc6060830186612517565b61ffff851660208401528281036040840152612b548185612517565b808201808211156104d3576104d36127f4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea264697066735822122077fd1eaea1e9f2eae2e4c087dcf5d04bfe704aef62b57897cf9faf23fe0fdbce64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
