{
  "_format": "hh-sol-artifact-1",
  "contractName": "Verifier",
  "sourceName": "contracts/verifiers/Verifier.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "ClaimTopicAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "ClaimTopicRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "ClaimTopicsUpdated",
      "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": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "TrustedIssuerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        }
      ],
      "name": "TrustedIssuerRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "addClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "addTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "claimTopicsToTrustedIssuers",
      "outputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        }
      ],
      "name": "getTrustedIssuerClaimTopics",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTrustedIssuers",
      "outputs": [
        {
          "internalType": "contract IClaimIssuer[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "getTrustedIssuersForClaimTopic",
      "outputs": [
        {
          "internalType": "contract IClaimIssuer[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "hasClaimTopic",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "isClaimTopicRequired",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "issuer",
          "type": "address"
        }
      ],
      "name": "isTrustedIssuer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "claimTopic",
          "type": "uint256"
        }
      ],
      "name": "removeClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        }
      ],
      "name": "removeTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "requiredClaimTopics",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "trustedIssuerClaimTopics",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "trustedIssuers",
      "outputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "newClaimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "updateIssuerClaimTopics",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "verify",
      "outputs": [
        {
          "internalType": "bool",
          "name": "isVerified",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000104565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61334c80620001146000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063b5fa8693116100ad578063c7b2255111610071578063c7b225511461033e578063c801dd401461035a578063d9dd24c51461038a578063ef2ed1a4146103a8578063f2fde38b146103d857610121565b8063b5fa869314610262578063b93d28eb14610292578063ba64c341146102ae578063be36359f146102de578063c28fb2781461030e57610121565b806363a9c3d7116100f457806363a9c3d7146101be578063715018a6146101ee5780638da5cb5b146101f857806393e9f801146102165780639f63ea981461024657610121565b806304bc7e8414610126578063082978461461014257806334a899871461015e57806352c111d11461018e575b600080fd5b610140600480360381019061013b919061216b565b6103f4565b005b61015c60048036038101906101579190612201565b610975565b005b6101786004803603810190610173919061225a565b610a75565b60405161018591906122b5565b60405180910390f35b6101a860048036038101906101a39190612201565b610b67565b6040516101b591906123de565b60405180910390f35b6101d860048036038101906101d39190612400565b610c08565b6040516101e591906122b5565b60405180910390f35b6101f6611028565b005b61020061103c565b60405161020d919061243c565b60405180910390f35b610230600480360381019061022b9190612457565b611065565b60405161023d91906124a6565b60405180910390f35b610260600480360381019061025b919061216b565b6110b3565b005b61027c60048036038101906102779190612201565b61143a565b60405161028991906124d0565b60405180910390f35b6102ac60048036038101906102a791906124eb565b61145e565b005b6102c860048036038101906102c3919061225a565b611a1e565b6040516102d591906124d0565b60405180910390f35b6102f860048036038101906102f39190612201565b611a4f565b60405161030591906122b5565b60405180910390f35b610328600480360381019061032391906124eb565b611ab4565b60405161033591906125d6565b60405180910390f35b61035860048036038101906103539190612201565b611bd0565b005b610374600480360381019061036f9190612201565b611cfe565b60405161038191906124a6565b60405180910390f35b610392611d3d565b60405161039f91906123de565b60405180910390f35b6103c260048036038101906103bd9190612400565b611dcb565b6040516103cf91906122b5565b60405180910390f35b6103f260048036038101906103ed9190612400565b611e2a565b005b6103fc611ead565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361046b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046290612655565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050036104f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e7906126c1565b60405180910390fd5b600f828290501115610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052e90612753565b60405180910390fd5b6000828290501161057d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610574906127bf565b60405180910390fd5b60005b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610821576000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061061d5761061c6127df565b5b9060005260206000200154905060006004600083815260200190815260200160002080549050905060005b8181101561080b578673ffffffffffffffffffffffffffffffffffffffff1660046000858152602001908152602001600020828154811061068c5761068b6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107f857600460008481526020019081526020016000206001836106f2919061283d565b81548110610703576107026127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008581526020019081526020016000208281548110610753576107526127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008481526020019081526020016000208054806107be576107bd612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561080b565b8080610803906128a0565b915050610648565b5050508080610819906128a0565b915050610580565b508181600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190610870929190611ff7565b5060005b8282905081101561091f5760046000848484818110610896576108956127df565b5b905060200201358152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080610917906128a0565b915050610874565b508273ffffffffffffffffffffffffffffffffffffffff167fec753cfc52044f61676f18a11e500093a9f2b1cd5e4942bc476f2b0438159bcf8383604051610968929190612952565b60405180910390a2505050565b61097d611ead565b6000600180549050905060005b81811015610a705782600182815481106109a7576109a66127df565b5b906000526020600020015403610a5d57600180836109c5919061283d565b815481106109d6576109d56127df565b5b9060005260206000200154600182815481106109f5576109f46127df565b5b90600052602060002001819055506001805480610a1557610a14612871565b5b60019003818190600052602060002001600090559055827f0b1381093c776453c1bbe54fd68be1b235c65db61d099cb50d194b2991e0eec560405160405180910390a2610a70565b8080610a68906128a0565b91505061098a565b505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610b0157602002820191906000526020600020905b815481526020019060010190808311610aed575b5050505050905060008151905060005b81811015610b595784838281518110610b2d57610b2c6127df565b5b602002602001015103610b465760019350505050610b61565b8080610b51906128a0565b915050610b11565b506000925050505b92915050565b606060046000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610bfc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bb2575b50505050509050919050565b60008060018054905003610c1f5760019050611023565b600080600060608060005b6001805490508110156110185760003073ffffffffffffffffffffffffffffffffffffffff166352c111d160018481548110610c6957610c686127df565b5b90600052602060002001546040518263ffffffff1660e01b8152600401610c9091906124d0565b600060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cd69190612ada565b90506000815103610cf1576000975050505050505050611023565b6000815167ffffffffffffffff811115610d0e57610d0d612987565b5b604051908082528060200260200182016040528015610d3c5781602001602082028036833780820191505090505b50905060005b8251811015610dde57828181518110610d5e57610d5d6127df565b5b602002602001015160018581548110610d7a57610d796127df565b5b9060005260206000200154604051602001610d96929190612b23565b60405160208183030381529060405280519060200120828281518110610dbf57610dbe6127df565b5b6020026020010181815250508080610dd6906128a0565b915050610d42565b5060005b8151811015611002578a73ffffffffffffffffffffffffffffffffffffffff1663c9100bcb838381518110610e1a57610e196127df565b5b60200260200101516040518263ffffffff1660e01b8152600401610e3e9190612b65565b600060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e849190612d1b565b50809950819a50829b50839c50849d50505050505060018481548110610ead57610eac6127df565b5b90600052602060002001548903610fc8578673ffffffffffffffffffffffffffffffffffffffff1663c0969a6e8c60018781548110610eef57610eee6127df565b5b906000526020600020015489896040518563ffffffff1660e01b8152600401610f1b9493929190612e72565b602060405180830381865afa925050508015610f5557506040513d601f19601f82011682018060405250810190610f529190612ef1565b60015b610f845760018251610f67919061283d565b8103610f7f5760009950505050505050505050611023565b610fc3565b8015610f8f57825191505b80158015610fa9575060018351610fa6919061283d565b82145b15610fc15760009a5050505050505050505050611023565b505b610fef565b60018251610fd6919061283d565b8103610fee5760009950505050505050505050611023565b5b8080610ffa906128a0565b915050610de2565b5050508080611010906128a0565b915050610c2a565b600196505050505050505b919050565b611030611ead565b61103a6000611f2b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6004602052816000526040600020818154811061108157600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110bb611ead565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190612655565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612f6a565b60405180910390fd5b600082829050116111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612ffc565b60405180910390fd5b600f82829050111561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390612753565b60405180910390fd5b603260028054905010611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b9061308e565b60405180910390fd5b6002839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190611335929190611ff7565b5060005b828290508110156113e4576004600084848481811061135b5761135a6127df565b5b905060200201358152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806113dc906128a0565b915050611339565b508273ffffffffffffffffffffffffffffffffffffffff167ffedc33fd34859594822c0ff6f3f4f9fc279cc6d5cae53068f706a088e4500872838360405161142d929190612952565b60405180910390a2505050565b6001818154811061144a57600080fd5b906000526020600020016000915090505481565b611466611ead565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612655565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500361155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906126c1565b60405180910390fd5b6000600280549050905060005b818110156116e6578273ffffffffffffffffffffffffffffffffffffffff166002828154811061159a576115996127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d35760026001836115ef919061283d565b81548110611600576115ff6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061163f5761163e6127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600280548061169957611698612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556116e6565b80806116de906128a0565b915050611567565b5060005b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561198b576000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611787576117866127df565b5b9060005260206000200154905060006004600083815260200190815260200160002080549050905060005b81811015611975578573ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002082815481106117f6576117f56127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611962576004600084815260200190815260200160002060018361185c919061283d565b8154811061186d5761186c6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002082815481106118bd576118bc6127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600084815260200190815260200160002080548061192857611927612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611975565b808061196d906128a0565b9150506117b2565b5050508080611983906128a0565b9150506116ea565b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006119d79190612044565b8173ffffffffffffffffffffffffffffffffffffffff167f2214ded40113cc3fb63fc206cafee88270b0a903dac7245d54efdde30ebb032160405160405180910390a25050565b60036020528160005260406000208181548110611a3a57600080fd5b90600052602060002001600091509150505481565b600080600180549050905060005b81811015611aa8578360018281548110611a7a57611a796127df565b5b906000526020600020015403611a9557600192505050611aaf565b8080611aa0906128a0565b915050611a5d565b5060009150505b919050565b60606000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906130fa565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611bc457602002820191906000526020600020905b815481526020019060010190808311611bb0575b50505050509050919050565b611bd8611ead565b60006001805490509050600f8110611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c9061318c565b60405180910390fd5b60005b81811015611ca3578260018281548110611c4557611c446127df565b5b906000526020600020015403611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c87906131f8565b60405180910390fd5b8080611c9b906128a0565b915050611c28565b506001829080600181540180825580915050600190039060005260206000200160009091909190915055817f01c928b7f7ade2949e92366aa9454dbef3a416b731cf6ec786ba9595bbd814d660405160405180910390a25050565b60028181548110611d0e57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015611dc157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d77575b5050505050905090565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501115611e205760019050611e25565b600090505b919050565b611e32611ead565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e989061328a565b60405180910390fd5b611eaa81611f2b565b50565b611eb5611fef565b73ffffffffffffffffffffffffffffffffffffffff16611ed361103c565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f20906132f6565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b828054828255906000526020600020908101928215612033579160200282015b82811115612032578235825591602001919060010190612017565b5b5090506120409190612065565b5090565b50805460008255906000526020600020908101906120629190612065565b50565b5b8082111561207e576000816000905550600101612066565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120c182612096565b9050919050565b60006120d3826120b6565b9050919050565b6120e3816120c8565b81146120ee57600080fd5b50565b600081359050612100816120da565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261212b5761212a612106565b5b8235905067ffffffffffffffff8111156121485761214761210b565b5b60208301915083602082028301111561216457612163612110565b5b9250929050565b6000806000604084860312156121845761218361208c565b5b6000612192868287016120f1565b935050602084013567ffffffffffffffff8111156121b3576121b2612091565b5b6121bf86828701612115565b92509250509250925092565b6000819050919050565b6121de816121cb565b81146121e957600080fd5b50565b6000813590506121fb816121d5565b92915050565b6000602082840312156122175761221661208c565b5b6000612225848285016121ec565b91505092915050565b612237816120b6565b811461224257600080fd5b50565b6000813590506122548161222e565b92915050565b600080604083850312156122715761227061208c565b5b600061227f85828601612245565b9250506020612290858286016121ec565b9150509250929050565b60008115159050919050565b6122af8161229a565b82525050565b60006020820190506122ca60008301846122a6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b600061232161231c61231784612096565b6122fc565b612096565b9050919050565b600061233382612306565b9050919050565b600061234582612328565b9050919050565b6123558161233a565b82525050565b6000612367838361234c565b60208301905092915050565b6000602082019050919050565b600061238b826122d0565b61239581856122db565b93506123a0836122ec565b8060005b838110156123d15781516123b8888261235b565b97506123c383612373565b9250506001810190506123a4565b5085935050505092915050565b600060208201905081810360008301526123f88184612380565b905092915050565b6000602082840312156124165761241561208c565b5b600061242484828501612245565b91505092915050565b612436816120b6565b82525050565b6000602082019050612451600083018461242d565b92915050565b6000806040838503121561246e5761246d61208c565b5b600061247c858286016121ec565b925050602061248d858286016121ec565b9150509250929050565b6124a08161233a565b82525050565b60006020820190506124bb6000830184612497565b92915050565b6124ca816121cb565b82525050565b60006020820190506124e560008301846124c1565b92915050565b6000602082840312156125015761250061208c565b5b600061250f848285016120f1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61254d816121cb565b82525050565b600061255f8383612544565b60208301905092915050565b6000602082019050919050565b600061258382612518565b61258d8185612523565b935061259883612534565b8060005b838110156125c95781516125b08882612553565b97506125bb8361256b565b92505060018101905061259c565b5085935050505092915050565b600060208201905081810360008301526125f08184612578565b905092915050565b600082825260208201905092915050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b600061263f601f836125f8565b915061264a82612609565b602082019050919050565b6000602082019050818103600083015261266e81612632565b9050919050565b7f4e4f542061207472757374656420697373756572000000000000000000000000600082015250565b60006126ab6014836125f8565b91506126b682612675565b602082019050919050565b600060208201905081810360008301526126da8161269e565b9050919050565b7f63616e6e6f742068617665206d6f7265207468616e20313520636c61696d207460008201527f6f70696373000000000000000000000000000000000000000000000000000000602082015250565b600061273d6025836125f8565b9150612748826126e1565b604082019050919050565b6000602082019050818103600083015261276c81612730565b9050919050565b7f636c61696d20746f706963732063616e6e6f7420626520656d70747900000000600082015250565b60006127a9601c836125f8565b91506127b482612773565b602082019050919050565b600060208201905081810360008301526127d88161279c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612848826121cb565b9150612853836121cb565b925082820390508181111561286b5761286a61280e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006128ab826121cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128dd576128dc61280e565b5b600182019050919050565b600080fd5b82818337505050565b60006129028385612523565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612935576129346128e8565b5b6020830292506129468385846128ed565b82840190509392505050565b6000602082019050818103600083015261296d8184866128f6565b90509392505050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129bf82612976565b810181811067ffffffffffffffff821117156129de576129dd612987565b5b80604052505050565b60006129f1612082565b90506129fd82826129b6565b919050565b600067ffffffffffffffff821115612a1d57612a1c612987565b5b602082029050602081019050919050565b600081519050612a3d816120da565b92915050565b6000612a56612a5184612a02565b6129e7565b90508083825260208201905060208402830185811115612a7957612a78612110565b5b835b81811015612aa25780612a8e8882612a2e565b845260208401935050602081019050612a7b565b5050509392505050565b600082601f830112612ac157612ac0612106565b5b8151612ad1848260208601612a43565b91505092915050565b600060208284031215612af057612aef61208c565b5b600082015167ffffffffffffffff811115612b0e57612b0d612091565b5b612b1a84828501612aac565b91505092915050565b6000604082019050612b386000830185612497565b612b4560208301846124c1565b9392505050565b6000819050919050565b612b5f81612b4c565b82525050565b6000602082019050612b7a6000830184612b56565b92915050565b600081519050612b8f816121d5565b92915050565b600081519050612ba48161222e565b92915050565b600080fd5b600067ffffffffffffffff821115612bca57612bc9612987565b5b612bd382612976565b9050602081019050919050565b60005b83811015612bfe578082015181840152602081019050612be3565b60008484015250505050565b6000612c1d612c1884612baf565b6129e7565b905082815260208101848484011115612c3957612c38612baa565b5b612c44848285612be0565b509392505050565b600082601f830112612c6157612c60612106565b5b8151612c71848260208601612c0a565b91505092915050565b600067ffffffffffffffff821115612c9557612c94612987565b5b612c9e82612976565b9050602081019050919050565b6000612cbe612cb984612c7a565b6129e7565b905082815260208101848484011115612cda57612cd9612baa565b5b612ce5848285612be0565b509392505050565b600082601f830112612d0257612d01612106565b5b8151612d12848260208601612cab565b91505092915050565b60008060008060008060c08789031215612d3857612d3761208c565b5b6000612d4689828a01612b80565b9650506020612d5789828a01612b80565b9550506040612d6889828a01612b95565b945050606087015167ffffffffffffffff811115612d8957612d88612091565b5b612d9589828a01612c4c565b935050608087015167ffffffffffffffff811115612db657612db5612091565b5b612dc289828a01612c4c565b92505060a087015167ffffffffffffffff811115612de357612de2612091565b5b612def89828a01612ced565b9150509295509295509295565b6000612e0782612328565b9050919050565b612e1781612dfc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612e4482612e1d565b612e4e8185612e28565b9350612e5e818560208601612be0565b612e6781612976565b840191505092915050565b6000608082019050612e876000830187612e0e565b612e9460208301866124c1565b8181036040830152612ea68185612e39565b90508181036060830152612eba8184612e39565b905095945050505050565b612ece8161229a565b8114612ed957600080fd5b50565b600081519050612eeb81612ec5565b92915050565b600060208284031215612f0757612f0661208c565b5b6000612f1584828501612edc565b91505092915050565b7f747275737465642049737375657220616c726561647920657869737473000000600082015250565b6000612f54601d836125f8565b9150612f5f82612f1e565b602082019050919050565b60006020820190508181036000830152612f8381612f47565b9050919050565b7f7472757374656420636c61696d20746f706963732063616e6e6f74206265206560008201527f6d70747900000000000000000000000000000000000000000000000000000000602082015250565b6000612fe66024836125f8565b9150612ff182612f8a565b604082019050919050565b6000602082019050818103600083015261301581612fd9565b9050919050565b7f63616e6e6f742068617665206d6f7265207468616e203530207472757374656460008201527f2069737375657273000000000000000000000000000000000000000000000000602082015250565b60006130786028836125f8565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f747275737465642049737375657220646f65736e277420657869737400000000600082015250565b60006130e4601c836125f8565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f63616e6e6f742072657175697265206d6f7265207468616e20313520746f706960008201527f6373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131766022836125f8565b91506131818261311a565b604082019050919050565b600060208201905081810360008301526131a581613169565b9050919050565b7f636c61696d546f70696320616c72656164792065786973747300000000000000600082015250565b60006131e26019836125f8565b91506131ed826131ac565b602082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132746026836125f8565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e06020836125f8565b91506132eb826132aa565b602082019050919050565b6000602082019050818103600083015261330f816132d3565b905091905056fea2646970667358221220217eaeec344e35cec8469c47800f42a1fbb35774bf3488aa9aad53a0eb8c418a64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063b5fa8693116100ad578063c7b2255111610071578063c7b225511461033e578063c801dd401461035a578063d9dd24c51461038a578063ef2ed1a4146103a8578063f2fde38b146103d857610121565b8063b5fa869314610262578063b93d28eb14610292578063ba64c341146102ae578063be36359f146102de578063c28fb2781461030e57610121565b806363a9c3d7116100f457806363a9c3d7146101be578063715018a6146101ee5780638da5cb5b146101f857806393e9f801146102165780639f63ea981461024657610121565b806304bc7e8414610126578063082978461461014257806334a899871461015e57806352c111d11461018e575b600080fd5b610140600480360381019061013b919061216b565b6103f4565b005b61015c60048036038101906101579190612201565b610975565b005b6101786004803603810190610173919061225a565b610a75565b60405161018591906122b5565b60405180910390f35b6101a860048036038101906101a39190612201565b610b67565b6040516101b591906123de565b60405180910390f35b6101d860048036038101906101d39190612400565b610c08565b6040516101e591906122b5565b60405180910390f35b6101f6611028565b005b61020061103c565b60405161020d919061243c565b60405180910390f35b610230600480360381019061022b9190612457565b611065565b60405161023d91906124a6565b60405180910390f35b610260600480360381019061025b919061216b565b6110b3565b005b61027c60048036038101906102779190612201565b61143a565b60405161028991906124d0565b60405180910390f35b6102ac60048036038101906102a791906124eb565b61145e565b005b6102c860048036038101906102c3919061225a565b611a1e565b6040516102d591906124d0565b60405180910390f35b6102f860048036038101906102f39190612201565b611a4f565b60405161030591906122b5565b60405180910390f35b610328600480360381019061032391906124eb565b611ab4565b60405161033591906125d6565b60405180910390f35b61035860048036038101906103539190612201565b611bd0565b005b610374600480360381019061036f9190612201565b611cfe565b60405161038191906124a6565b60405180910390f35b610392611d3d565b60405161039f91906123de565b60405180910390f35b6103c260048036038101906103bd9190612400565b611dcb565b6040516103cf91906122b5565b60405180910390f35b6103f260048036038101906103ed9190612400565b611e2a565b005b6103fc611ead565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361046b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046290612655565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050036104f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e7906126c1565b60405180910390fd5b600f828290501115610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052e90612753565b60405180910390fd5b6000828290501161057d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610574906127bf565b60405180910390fd5b60005b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610821576000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061061d5761061c6127df565b5b9060005260206000200154905060006004600083815260200190815260200160002080549050905060005b8181101561080b578673ffffffffffffffffffffffffffffffffffffffff1660046000858152602001908152602001600020828154811061068c5761068b6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107f857600460008481526020019081526020016000206001836106f2919061283d565b81548110610703576107026127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008581526020019081526020016000208281548110610753576107526127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008481526020019081526020016000208054806107be576107bd612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561080b565b8080610803906128a0565b915050610648565b5050508080610819906128a0565b915050610580565b508181600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190610870929190611ff7565b5060005b8282905081101561091f5760046000848484818110610896576108956127df565b5b905060200201358152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080610917906128a0565b915050610874565b508273ffffffffffffffffffffffffffffffffffffffff167fec753cfc52044f61676f18a11e500093a9f2b1cd5e4942bc476f2b0438159bcf8383604051610968929190612952565b60405180910390a2505050565b61097d611ead565b6000600180549050905060005b81811015610a705782600182815481106109a7576109a66127df565b5b906000526020600020015403610a5d57600180836109c5919061283d565b815481106109d6576109d56127df565b5b9060005260206000200154600182815481106109f5576109f46127df565b5b90600052602060002001819055506001805480610a1557610a14612871565b5b60019003818190600052602060002001600090559055827f0b1381093c776453c1bbe54fd68be1b235c65db61d099cb50d194b2991e0eec560405160405180910390a2610a70565b8080610a68906128a0565b91505061098a565b505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610b0157602002820191906000526020600020905b815481526020019060010190808311610aed575b5050505050905060008151905060005b81811015610b595784838281518110610b2d57610b2c6127df565b5b602002602001015103610b465760019350505050610b61565b8080610b51906128a0565b915050610b11565b506000925050505b92915050565b606060046000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610bfc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bb2575b50505050509050919050565b60008060018054905003610c1f5760019050611023565b600080600060608060005b6001805490508110156110185760003073ffffffffffffffffffffffffffffffffffffffff166352c111d160018481548110610c6957610c686127df565b5b90600052602060002001546040518263ffffffff1660e01b8152600401610c9091906124d0565b600060405180830381865afa158015610cad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cd69190612ada565b90506000815103610cf1576000975050505050505050611023565b6000815167ffffffffffffffff811115610d0e57610d0d612987565b5b604051908082528060200260200182016040528015610d3c5781602001602082028036833780820191505090505b50905060005b8251811015610dde57828181518110610d5e57610d5d6127df565b5b602002602001015160018581548110610d7a57610d796127df565b5b9060005260206000200154604051602001610d96929190612b23565b60405160208183030381529060405280519060200120828281518110610dbf57610dbe6127df565b5b6020026020010181815250508080610dd6906128a0565b915050610d42565b5060005b8151811015611002578a73ffffffffffffffffffffffffffffffffffffffff1663c9100bcb838381518110610e1a57610e196127df565b5b60200260200101516040518263ffffffff1660e01b8152600401610e3e9190612b65565b600060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e849190612d1b565b50809950819a50829b50839c50849d50505050505060018481548110610ead57610eac6127df565b5b90600052602060002001548903610fc8578673ffffffffffffffffffffffffffffffffffffffff1663c0969a6e8c60018781548110610eef57610eee6127df565b5b906000526020600020015489896040518563ffffffff1660e01b8152600401610f1b9493929190612e72565b602060405180830381865afa925050508015610f5557506040513d601f19601f82011682018060405250810190610f529190612ef1565b60015b610f845760018251610f67919061283d565b8103610f7f5760009950505050505050505050611023565b610fc3565b8015610f8f57825191505b80158015610fa9575060018351610fa6919061283d565b82145b15610fc15760009a5050505050505050505050611023565b505b610fef565b60018251610fd6919061283d565b8103610fee5760009950505050505050505050611023565b5b8080610ffa906128a0565b915050610de2565b5050508080611010906128a0565b915050610c2a565b600196505050505050505b919050565b611030611ead565b61103a6000611f2b565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6004602052816000526040600020818154811061108157600080fd5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110bb611ead565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361112a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112190612655565b60405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a690612f6a565b60405180910390fd5b600082829050116111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90612ffc565b60405180910390fd5b600f82829050111561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390612753565b60405180910390fd5b603260028054905010611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b9061308e565b60405180910390fd5b6002839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190611335929190611ff7565b5060005b828290508110156113e4576004600084848481811061135b5761135a6127df565b5b905060200201358152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080806113dc906128a0565b915050611339565b508273ffffffffffffffffffffffffffffffffffffffff167ffedc33fd34859594822c0ff6f3f4f9fc279cc6d5cae53068f706a088e4500872838360405161142d929190612952565b60405180910390a2505050565b6001818154811061144a57600080fd5b906000526020600020016000915090505481565b611466611ead565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612655565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500361155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906126c1565b60405180910390fd5b6000600280549050905060005b818110156116e6578273ffffffffffffffffffffffffffffffffffffffff166002828154811061159a576115996127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d35760026001836115ef919061283d565b81548110611600576115ff6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061163f5761163e6127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600280548061169957611698612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556116e6565b80806116de906128a0565b915050611567565b5060005b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561198b576000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611787576117866127df565b5b9060005260206000200154905060006004600083815260200190815260200160002080549050905060005b81811015611975578573ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002082815481106117f6576117f56127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611962576004600084815260200190815260200160002060018361185c919061283d565b8154811061186d5761186c6127df565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002082815481106118bd576118bc6127df565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600084815260200190815260200160002080548061192857611927612871565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611975565b808061196d906128a0565b9150506117b2565b5050508080611983906128a0565b9150506116ea565b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006119d79190612044565b8173ffffffffffffffffffffffffffffffffffffffff167f2214ded40113cc3fb63fc206cafee88270b0a903dac7245d54efdde30ebb032160405160405180910390a25050565b60036020528160005260406000208181548110611a3a57600080fd5b90600052602060002001600091509150505481565b600080600180549050905060005b81811015611aa8578360018281548110611a7a57611a796127df565b5b906000526020600020015403611a9557600192505050611aaf565b8080611aa0906128a0565b915050611a5d565b5060009150505b919050565b60606000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905003611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906130fa565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611bc457602002820191906000526020600020905b815481526020019060010190808311611bb0575b50505050509050919050565b611bd8611ead565b60006001805490509050600f8110611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c9061318c565b60405180910390fd5b60005b81811015611ca3578260018281548110611c4557611c446127df565b5b906000526020600020015403611c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c87906131f8565b60405180910390fd5b8080611c9b906128a0565b915050611c28565b506001829080600181540180825580915050600190039060005260206000200160009091909190915055817f01c928b7f7ade2949e92366aa9454dbef3a416b731cf6ec786ba9595bbd814d660405160405180910390a25050565b60028181548110611d0e57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015611dc157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d77575b5050505050905090565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501115611e205760019050611e25565b600090505b919050565b611e32611ead565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e989061328a565b60405180910390fd5b611eaa81611f2b565b50565b611eb5611fef565b73ffffffffffffffffffffffffffffffffffffffff16611ed361103c565b73ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f20906132f6565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b828054828255906000526020600020908101928215612033579160200282015b82811115612032578235825591602001919060010190612017565b5b5090506120409190612065565b5090565b50805460008255906000526020600020908101906120629190612065565b50565b5b8082111561207e576000816000905550600101612066565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120c182612096565b9050919050565b60006120d3826120b6565b9050919050565b6120e3816120c8565b81146120ee57600080fd5b50565b600081359050612100816120da565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261212b5761212a612106565b5b8235905067ffffffffffffffff8111156121485761214761210b565b5b60208301915083602082028301111561216457612163612110565b5b9250929050565b6000806000604084860312156121845761218361208c565b5b6000612192868287016120f1565b935050602084013567ffffffffffffffff8111156121b3576121b2612091565b5b6121bf86828701612115565b92509250509250925092565b6000819050919050565b6121de816121cb565b81146121e957600080fd5b50565b6000813590506121fb816121d5565b92915050565b6000602082840312156122175761221661208c565b5b6000612225848285016121ec565b91505092915050565b612237816120b6565b811461224257600080fd5b50565b6000813590506122548161222e565b92915050565b600080604083850312156122715761227061208c565b5b600061227f85828601612245565b9250506020612290858286016121ec565b9150509250929050565b60008115159050919050565b6122af8161229a565b82525050565b60006020820190506122ca60008301846122a6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b600061232161231c61231784612096565b6122fc565b612096565b9050919050565b600061233382612306565b9050919050565b600061234582612328565b9050919050565b6123558161233a565b82525050565b6000612367838361234c565b60208301905092915050565b6000602082019050919050565b600061238b826122d0565b61239581856122db565b93506123a0836122ec565b8060005b838110156123d15781516123b8888261235b565b97506123c383612373565b9250506001810190506123a4565b5085935050505092915050565b600060208201905081810360008301526123f88184612380565b905092915050565b6000602082840312156124165761241561208c565b5b600061242484828501612245565b91505092915050565b612436816120b6565b82525050565b6000602082019050612451600083018461242d565b92915050565b6000806040838503121561246e5761246d61208c565b5b600061247c858286016121ec565b925050602061248d858286016121ec565b9150509250929050565b6124a08161233a565b82525050565b60006020820190506124bb6000830184612497565b92915050565b6124ca816121cb565b82525050565b60006020820190506124e560008301846124c1565b92915050565b6000602082840312156125015761250061208c565b5b600061250f848285016120f1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61254d816121cb565b82525050565b600061255f8383612544565b60208301905092915050565b6000602082019050919050565b600061258382612518565b61258d8185612523565b935061259883612534565b8060005b838110156125c95781516125b08882612553565b97506125bb8361256b565b92505060018101905061259c565b5085935050505092915050565b600060208201905081810360008301526125f08184612578565b905092915050565b600082825260208201905092915050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b600061263f601f836125f8565b915061264a82612609565b602082019050919050565b6000602082019050818103600083015261266e81612632565b9050919050565b7f4e4f542061207472757374656420697373756572000000000000000000000000600082015250565b60006126ab6014836125f8565b91506126b682612675565b602082019050919050565b600060208201905081810360008301526126da8161269e565b9050919050565b7f63616e6e6f742068617665206d6f7265207468616e20313520636c61696d207460008201527f6f70696373000000000000000000000000000000000000000000000000000000602082015250565b600061273d6025836125f8565b9150612748826126e1565b604082019050919050565b6000602082019050818103600083015261276c81612730565b9050919050565b7f636c61696d20746f706963732063616e6e6f7420626520656d70747900000000600082015250565b60006127a9601c836125f8565b91506127b482612773565b602082019050919050565b600060208201905081810360008301526127d88161279c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612848826121cb565b9150612853836121cb565b925082820390508181111561286b5761286a61280e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006128ab826121cb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128dd576128dc61280e565b5b600182019050919050565b600080fd5b82818337505050565b60006129028385612523565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612935576129346128e8565b5b6020830292506129468385846128ed565b82840190509392505050565b6000602082019050818103600083015261296d8184866128f6565b90509392505050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129bf82612976565b810181811067ffffffffffffffff821117156129de576129dd612987565b5b80604052505050565b60006129f1612082565b90506129fd82826129b6565b919050565b600067ffffffffffffffff821115612a1d57612a1c612987565b5b602082029050602081019050919050565b600081519050612a3d816120da565b92915050565b6000612a56612a5184612a02565b6129e7565b90508083825260208201905060208402830185811115612a7957612a78612110565b5b835b81811015612aa25780612a8e8882612a2e565b845260208401935050602081019050612a7b565b5050509392505050565b600082601f830112612ac157612ac0612106565b5b8151612ad1848260208601612a43565b91505092915050565b600060208284031215612af057612aef61208c565b5b600082015167ffffffffffffffff811115612b0e57612b0d612091565b5b612b1a84828501612aac565b91505092915050565b6000604082019050612b386000830185612497565b612b4560208301846124c1565b9392505050565b6000819050919050565b612b5f81612b4c565b82525050565b6000602082019050612b7a6000830184612b56565b92915050565b600081519050612b8f816121d5565b92915050565b600081519050612ba48161222e565b92915050565b600080fd5b600067ffffffffffffffff821115612bca57612bc9612987565b5b612bd382612976565b9050602081019050919050565b60005b83811015612bfe578082015181840152602081019050612be3565b60008484015250505050565b6000612c1d612c1884612baf565b6129e7565b905082815260208101848484011115612c3957612c38612baa565b5b612c44848285612be0565b509392505050565b600082601f830112612c6157612c60612106565b5b8151612c71848260208601612c0a565b91505092915050565b600067ffffffffffffffff821115612c9557612c94612987565b5b612c9e82612976565b9050602081019050919050565b6000612cbe612cb984612c7a565b6129e7565b905082815260208101848484011115612cda57612cd9612baa565b5b612ce5848285612be0565b509392505050565b600082601f830112612d0257612d01612106565b5b8151612d12848260208601612cab565b91505092915050565b60008060008060008060c08789031215612d3857612d3761208c565b5b6000612d4689828a01612b80565b9650506020612d5789828a01612b80565b9550506040612d6889828a01612b95565b945050606087015167ffffffffffffffff811115612d8957612d88612091565b5b612d9589828a01612c4c565b935050608087015167ffffffffffffffff811115612db657612db5612091565b5b612dc289828a01612c4c565b92505060a087015167ffffffffffffffff811115612de357612de2612091565b5b612def89828a01612ced565b9150509295509295509295565b6000612e0782612328565b9050919050565b612e1781612dfc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612e4482612e1d565b612e4e8185612e28565b9350612e5e818560208601612be0565b612e6781612976565b840191505092915050565b6000608082019050612e876000830187612e0e565b612e9460208301866124c1565b8181036040830152612ea68185612e39565b90508181036060830152612eba8184612e39565b905095945050505050565b612ece8161229a565b8114612ed957600080fd5b50565b600081519050612eeb81612ec5565b92915050565b600060208284031215612f0757612f0661208c565b5b6000612f1584828501612edc565b91505092915050565b7f747275737465642049737375657220616c726561647920657869737473000000600082015250565b6000612f54601d836125f8565b9150612f5f82612f1e565b602082019050919050565b60006020820190508181036000830152612f8381612f47565b9050919050565b7f7472757374656420636c61696d20746f706963732063616e6e6f74206265206560008201527f6d70747900000000000000000000000000000000000000000000000000000000602082015250565b6000612fe66024836125f8565b9150612ff182612f8a565b604082019050919050565b6000602082019050818103600083015261301581612fd9565b9050919050565b7f63616e6e6f742068617665206d6f7265207468616e203530207472757374656460008201527f2069737375657273000000000000000000000000000000000000000000000000602082015250565b60006130786028836125f8565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f747275737465642049737375657220646f65736e277420657869737400000000600082015250565b60006130e4601c836125f8565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f63616e6e6f742072657175697265206d6f7265207468616e20313520746f706960008201527f6373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131766022836125f8565b91506131818261311a565b604082019050919050565b600060208201905081810360008301526131a581613169565b9050919050565b7f636c61696d546f70696320616c72656164792065786973747300000000000000600082015250565b60006131e26019836125f8565b91506131ed826131ac565b602082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132746026836125f8565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132e06020836125f8565b91506132eb826132aa565b602082019050919050565b6000602082019050818103600083015261330f816132d3565b905091905056fea2646970667358221220217eaeec344e35cec8469c47800f42a1fbb35774bf3488aa9aad53a0eb8c418a64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
