[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "uri_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "collectionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "bytes32", "name": "hash", "type": "bytes32" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_tokenIdToHashMap", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_artist", "type": "address" }, { "internalType": "uint256", "name": "_artistPercentage", "type": "uint256" }, { "internalType": "uint256", "name": "_price", "type": "uint256" }, { "internalType": "uint256", "name": "_maxInvocations", "type": "uint256" }, { "internalType": "uint256", "name": "_tier", "type": "uint256" }, { "internalType": "string", "name": "_script", "type": "string" } ], "name": "createGenCollection", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_groupId", "type": "uint256" }, { "internalType": "uint256", "name": "_tier", "type": "uint256" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "createGenCollectionGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_collectionId", "type": "uint256" } ], "name": "getCollectionInfo", "outputs": [ { "internalType": "uint256", "name": "invocations", "type": "uint256" }, { "internalType": "uint256", "name": "maxInvocations", "type": "uint256" }, { "internalType": "string", "name": "script", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "artist", "type": "address" }, { "internalType": "uint256", "name": "artistPercentage", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getTokenInfo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "getTokensByOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_collectionId", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_collectionId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mintMany", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "resetTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintCollectionId_", "type": "uint256" } ], "name": "setMintCollectionID", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_collectionId", "type": "uint256" }, { "internalType": "address", "name": "_artist", "type": "address" } ], "name": "updateArtistAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_collectionId", "type": "uint256" }, { "internalType": "uint256", "name": "_maxInvocations", "type": "uint256" } ], "name": "updateMaxInvocations", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_collectionId", "type": "uint256" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "updatePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_collectionId", "type": "uint256" }, { "internalType": "string", "name": "_script", "type": "string" } ], "name": "updateScript", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620064b0380380620064b0833981810160405281019062000037919062000324565b620000576200004b620000ad60201b60201c565b620000b560201b60201c565b826009908162000068919062000628565b5081600a90816200007a919062000628565b5080600b90816200008c919062000628565b50620000a460086200017b60201b620023991760201c565b5050506200070f565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001816000016000828254019250508190555050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001fa82620001af565b810181811067ffffffffffffffff821117156200021c576200021b620001c0565b5b80604052505050565b60006200023162000191565b90506200023f8282620001ef565b919050565b600067ffffffffffffffff821115620002625762000261620001c0565b5b6200026d82620001af565b9050602081019050919050565b60005b838110156200029a5780820151818401526020810190506200027d565b60008484015250505050565b6000620002bd620002b78462000244565b62000225565b905082815260208101848484011115620002dc57620002db620001aa565b5b620002e98482856200027a565b509392505050565b600082601f830112620003095762000308620001a5565b5b81516200031b848260208601620002a6565b91505092915050565b60008060006060848603121562000340576200033f6200019b565b5b600084015167ffffffffffffffff811115620003615762000360620001a0565b5b6200036f86828701620002f1565b935050602084015167ffffffffffffffff811115620003935762000392620001a0565b5b620003a186828701620002f1565b925050604084015167ffffffffffffffff811115620003c557620003c4620001a0565b5b620003d386828701620002f1565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043057607f821691505b602082108103620004465762000445620003e8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000471565b620004bc868362000471565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200050962000503620004fd84620004d4565b620004de565b620004d4565b9050919050565b6000819050919050565b6200052583620004e8565b6200053d620005348262000510565b8484546200047e565b825550505050565b600090565b6200055462000545565b620005618184846200051a565b505050565b5b8181101562000589576200057d6000826200054a565b60018101905062000567565b5050565b601f821115620005d857620005a2816200044c565b620005ad8462000461565b81016020851015620005bd578190505b620005d5620005cc8562000461565b83018262000566565b50505b505050565b600082821c905092915050565b6000620005fd60001984600802620005dd565b1980831691505092915050565b6000620006188383620005ea565b9150826002028217905092915050565b6200063382620003dd565b67ffffffffffffffff8111156200064f576200064e620001c0565b5b6200065b825462000417565b620006688282856200058d565b600060209050601f831160018114620006a057600084156200068b578287015190505b6200069785826200060a565b86555062000707565b601f198416620006b0866200044c565b60005b82811015620006da57848901518255600182019150602085019450602081019050620006b3565b86831015620006fa5784890151620006f6601f891682620005ea565b8355505b6001600288020188555050505b505050505050565b615d91806200071f6000396000f3fe6080604052600436106102255760003560e01c8063661ebae511610123578063a0712d68116100ab578063c87b56dd1161006f578063c87b56dd14610820578063d4e4d3dd1461085d578063e985e9c51461089f578063f2fde38b146108dc578063f48d11541461090557610225565b8063a0712d6814610760578063a22cb4651461077c578063b155d57e146107a5578063b88d4fde146107ce578063c86e7a19146107f757610225565b80638354b48c116100f25780638354b48c146106785780638a616bc0146106a15780638c7a63ae146106ca5780638da5cb5b1461070a57806395d89b411461073557610225565b8063661ebae5146105ac57806370a08231146105d5578063758cf8181461061257806382367b2d1461064f57610225565b80632a55205a116101b157806342842e0e1161017557806342842e0e146104b757806342966c68146104e05780634f6ccce71461050957806355f804b3146105465780636352211e1461056f57610225565b80632a55205a146103ba5780632e1a7d4d146103f85780632f745c591461042157806340398d671461045e57806340c10f191461049b57610225565b8063095ea7b3116101f8578063095ea7b3146102f857806318160ddd14610321578063218af46f1461034c57806323b872dd1461037557806328dadb8f1461039e57610225565b806301ffc9a71461022a57806304634d8d1461026757806306fdde0314610290578063081812fc146102bb575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190613bdd565b61092e565b60405161025e9190613c25565b60405180910390f35b34801561027357600080fd5b5061028e60048036038101906102899190613ce2565b610ae0565b005b34801561029c57600080fd5b506102a5610c3f565b6040516102b29190613db2565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd9190613e0a565b610cd1565b6040516102ef9190613e46565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190613e61565b610d56565b005b34801561032d57600080fd5b50610336610e6d565b6040516103439190613eb0565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e9190614000565b610e7a565b005b34801561038157600080fd5b5061039c600480360381019061039791906140a9565b611006565b005b6103b860048036038101906103b391906140fc565b611066565b005b3480156103c657600080fd5b506103e160048036038101906103dc919061414f565b61108f565b6040516103ef92919061418f565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190613e0a565b611279565b005b34801561042d57600080fd5b5061044860048036038101906104439190613e61565b61134c565b6040516104559190613eb0565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906141b8565b6113f1565b60405161049291906142a3565b60405180910390f35b6104b560048036038101906104b09190613e61565b61149f565b005b3480156104c357600080fd5b506104de60048036038101906104d991906140a9565b6114c6565b005b3480156104ec57600080fd5b5061050760048036038101906105029190613e0a565b6114e6565b005b34801561051557600080fd5b50610530600480360381019061052b9190613e0a565b6114f2565b60405161053d9190613eb0565b60405180910390f35b34801561055257600080fd5b5061056d600480360381019061056891906142c5565b611563565b005b34801561057b57600080fd5b5061059660048036038101906105919190613e0a565b6115f2565b6040516105a39190613e46565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061430e565b6116a3565b005b3480156105e157600080fd5b506105fc60048036038101906105f791906141b8565b611789565b6040516106099190613eb0565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613e0a565b611840565b604051610646919061437a565b60405180910390f35b34801561065b57600080fd5b506106766004803603810190610671919061414f565b611858565b005b34801561068457600080fd5b5061069f600480360381019061069a9190613e0a565b6118f3565b005b3480156106ad57600080fd5b506106c860048036038101906106c39190613e0a565b611979565b005b3480156106d657600080fd5b506106f160048036038101906106ec9190613e0a565b611a01565b6040516107019493929190614395565b60405180910390f35b34801561071657600080fd5b5061071f611a64565b60405161072c9190613e46565b60405180910390f35b34801561074157600080fd5b5061074a611a8e565b6040516107579190613db2565b60405180910390f35b61077a60048036038101906107759190613e0a565b611b20565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614406565b611b94565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190614446565b611d14565b005b3480156107da57600080fd5b506107f560048036038101906107f09190614543565b611db8565b005b34801561080357600080fd5b5061081e600480360381019061081991906145c6565b611e1a565b005b34801561082c57600080fd5b5061084760048036038101906108429190613e0a565b611f20565b6040516108549190613db2565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f9190613e0a565b611fc7565b60405161089696959493929190614606565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c1919061466e565b612173565b6040516108d39190613c25565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe91906141b8565b612207565b005b34801561091157600080fd5b5061092c6004803603810190610927919061414f565b6122fe565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6157507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ac957507f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610ad95750610ad8826123af565b5b9050919050565b610ae8612429565b73ffffffffffffffffffffffffffffffffffffffff16610b06611a64565b73ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b53906146fa565b60405180910390fd5b610b64612431565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb990614766565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c28906147d2565b60405180910390fd5b610c3b828261243b565b5050565b606060098054610c4e90614821565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90614821565b8015610cc75780601f10610c9c57610100808354040283529160200191610cc7565b820191906000526020600020905b815481529060010190602001808311610caa57829003601f168201915b5050505050905090565b6000610cdc826125cf565b610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d12906148c4565b60405180910390fd5b600f600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d61826115f2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890614956565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610df0612429565b73ffffffffffffffffffffffffffffffffffffffff161480610e1f5750610e1e81610e19612429565b612173565b5b610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e55906149e8565b60405180910390fd5b610e68838361263b565b505050565b6000601380549050905090565b610e82612429565b73ffffffffffffffffffffffffffffffffffffffff16610ea0611a64565b73ffffffffffffffffffffffffffffffffffffffff1614610ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eed906146fa565b60405180910390fd5b6000610f0260086126f4565b90506040518060e00160405280848152602001600081526020018581526020018381526020018681526020018781526020018873ffffffffffffffffffffffffffffffffffffffff16815250600360008381526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003019081610f949190614bb4565b506080820151816004015560a0820151816005015560c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610ffd6008612399565b50505050505050565b611017611011612429565b82612702565b611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90614cf8565b60405180910390fd5b6110618383836127e0565b505050565b6110738234836001612a3b565b61107e838383612b7a565b61108a82826001612ba8565b505050565b6000806000600160008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036112245760006040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b600061122e612431565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff168661125a9190614d47565b6112649190614db8565b90508160000151819350935050509250929050565b611281612429565b73ffffffffffffffffffffffffffffffffffffffff1661129f611a64565b73ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec906146fa565b60405180910390fd5b60006112ff611a64565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611347573d6000803e3d6000fd5b505050565b600061135783611789565b8210611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90614e5b565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b606060006113fe83611789565b905060008167ffffffffffffffff81111561141c5761141b613ed5565b5b60405190808252806020026020018201604052801561144a5781602001602082028036833780820191505090505b50905060005b8281101561149457611462858261134c565b82828151811061147557611474614e7b565b5b602002602001018181525050808061148c90614eaa565b915050611450565b508092505050919050565b6114ac8134600180612a3b565b6114b68282612c92565b6114c281600180612ba8565b5050565b6114e183838360405180602001604052806000815250611db8565b505050565b6114ef81612da1565b50565b60006114fc610e6d565b821061153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490614f64565b60405180910390fd5b6013828154811061155157611550614e7b565b5b90600052602060002001549050919050565b61156b612429565b73ffffffffffffffffffffffffffffffffffffffff16611589611a64565b73ffffffffffffffffffffffffffffffffffffffff16146115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d6906146fa565b60405180910390fd5b80600b90816115ee9190614bb4565b5050565b600080600d600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190614ff6565b60405180910390fd5b80915050919050565b6116ab612429565b73ffffffffffffffffffffffffffffffffffffffff166116c9611a64565b73ffffffffffffffffffffffffffffffffffffffff161461171f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611716906146fa565b60405180910390fd5b6060604051806060016040528084815260200183815260200182815250600460008681526020019081526020016000206000820151816000015560208201518160010155604082015181600201908051906020019061177f929190613b07565b5090505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f090615088565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60066020528060005260406000206000915090505481565b611860612429565b73ffffffffffffffffffffffffffffffffffffffff1661187e611a64565b73ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb906146fa565b60405180910390fd5b8060036000848152602001908152602001600020600401819055505050565b6118fb612429565b73ffffffffffffffffffffffffffffffffffffffff16611919611a64565b73ffffffffffffffffffffffffffffffffffffffff161461196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906146fa565b60405180910390fd5b80600c8190555050565b611981612429565b73ffffffffffffffffffffffffffffffffffffffff1661199f611a64565b73ffffffffffffffffffffffffffffffffffffffff16146119f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ec906146fa565b60405180910390fd5b6119fe81612f27565b50565b600080600080611a10856125cf565b506000600660008781526020019081526020016000205490506000600760008881526020019081526020016000205490506000611a4c886115f2565b90508782828596509650965096505050509193509193565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054611a9d90614821565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac990614821565b8015611b165780601f10611aeb57610100808354040283529160200191611b16565b820191906000526020600020905b815481529060010190602001808311611af957829003601f168201915b5050505050905090565b6000600c5403611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061511a565b60405180910390fd5b6000600c549050611b798134600180612a3b565b611b84338284612b7a565b611b9081836001612ba8565b5050565b611b9c612429565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090615186565b60405180910390fd5b8060106000611c16612429565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611cc3612429565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d089190613c25565b60405180910390a35050565b611d1c612429565b73ffffffffffffffffffffffffffffffffffffffff16611d3a611a64565b73ffffffffffffffffffffffffffffffffffffffff1614611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d87906146fa565b60405180910390fd5b80600360008481526020019081526020016000206003019081611db39190614bb4565b505050565b611dc9611dc3612429565b83612702565b611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90614cf8565b60405180910390fd5b611e1484848484612f86565b50505050565b81611e23612429565b73ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd90615218565b60405180910390fd5b816003600085815260200190815260200160002060060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6060611f2b826125cf565b611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f61906152aa565b60405180910390fd5b6000611f74612fe2565b90506000815111611f945760405180602001604052806000815250611fbf565b80611f9e84613074565b604051602001611faf929190615306565b6040516020818303038152906040525b915050919050565b6000806060600080600080600360008981526020019081526020016000206000015403612029576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120209061539c565b60405180910390fd5b60036000888152602001908152602001600020600101546003600089815260200190815260200160002060020154600360008a8152602001908152602001600020600301600360008b815260200190815260200160002060040154600360008c815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008d8152602001908152602001600020600501548380546120de90614821565b80601f016020809104026020016040519081016040528092919081815260200182805461210a90614821565b80156121575780601f1061212c57610100808354040283529160200191612157565b820191906000526020600020905b81548152906001019060200180831161213a57829003601f168201915b5050505050935095509550955095509550955091939550919395565b6000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61220f612429565b73ffffffffffffffffffffffffffffffffffffffff1661222d611a64565b73ffffffffffffffffffffffffffffffffffffffff1614612283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227a906146fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e99061542e565b60405180910390fd5b6122fb816131d4565b50565b612306612429565b73ffffffffffffffffffffffffffffffffffffffff16612324611a64565b73ffffffffffffffffffffffffffffffffffffffff161461237a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612371906146fa565b60405180910390fd5b8060036000848152602001908152602001600020600201819055505050565b6001816000016000828254019250508190555050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061242257506124218261329a565b5b9050919050565b600033905090565b6000612710905090565b612443612431565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156124a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612498906154c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612510576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125079061552c565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff168152506000808201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600d600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b81600f600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126ae836115f2565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600061270d826125cf565b61274c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612743906155be565b60405180910390fd5b6000612757836115f2565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127c657508373ffffffffffffffffffffffffffffffffffffffff166127ae84610cd1565b73ffffffffffffffffffffffffffffffffffffffff16145b806127d757506127d68185612173565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612800826115f2565b73ffffffffffffffffffffffffffffffffffffffff1614612856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284d90615650565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc906156e2565b60405180910390fd5b6128d0838383613304565b6128db60008261263b565b6001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461292b9190615702565b925050819055506001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129829190615736565b9250508190555081600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600360008681526020019081526020016000206000015403612a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8b906157dc565b60405180910390fd5b6003600085815260200190815260200160002060020154600360008681526020019081526020016000206001015410612b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af99061586e565b60405180910390fd5b8015612b745782612b3283600360008881526020019081526020016000206004015461340b90919063ffffffff16565b1115612b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6a90615900565b60405180910390fd5b5b50505050565b60005b81811015612ba257612b8f8484612c92565b8080612b9a90614eaa565b915050612b7d565b50505050565b6000612bd383600360008781526020019081526020016000206004015461340b90919063ffffffff16565b905060006064600360008781526020019081526020016000206005015483612bfb9190614d47565b612c059190614db8565b90508215612c8b576003600086815260200190815260200160002060060160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c89573d6000803e3d6000fd5b505b5050505050565b600060016003600084815260200190815260200160002060010154612cb79190615736565b9050600081620186a084612ccb9190614d47565b612cd59190615736565b9050816003600085815260200190815260200160002060010181905550600082434487604051602001612d0b9493929190615989565b604051602081830303815290604052805190602001209050806006600084815260200190815260200160002081905550836007600084815260200190815260200160002081905550612d5d8583613421565b7fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d85858484604051612d9294939291906159d7565b60405180910390a15050505050565b6000612dac826115f2565b90508073ffffffffffffffffffffffffffffffffffffffff16612dcd612429565b73ffffffffffffffffffffffffffffffffffffffff1614612e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1a90615a8e565b60405180910390fd5b612e2f81600084613304565b612e3a60008361263b565b6001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e8a9190615702565b92505081905550600d600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60016000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505050565b612f918484846127e0565b612f9d8484848461343f565b612fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fd390615b20565b60405180910390fd5b50505050565b6060600b8054612ff190614821565b80601f016020809104026020016040519081016040528092919081815260200182805461301d90614821565b801561306a5780601f1061303f5761010080835404028352916020019161306a565b820191906000526020600020905b81548152906001019060200180831161304d57829003601f168201915b5050505050905090565b6060600082036130bb576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506131cf565b600082905060005b600082146130ed5780806130d690614eaa565b915050600a826130e69190614db8565b91506130c3565b60008167ffffffffffffffff81111561310957613108613ed5565b5b6040519080825280601f01601f19166020018201604052801561313b5781602001600182028036833780820191505090505b5090505b600085146131c8576001826131549190615702565b9150600a856131639190615b40565b603061316f9190615736565b60f81b81838151811061318557613184614e7b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131c19190614db8565b945061313f565b8093505050505b919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361334657613341816135c6565b613385565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461338457613383838261360f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133c7576133c28161377c565b613406565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461340557613404828261384d565b5b5b505050565b600081836134199190614d47565b905092915050565b61343b8282604051806020016040528060008152506138cc565b5050565b60006134608473ffffffffffffffffffffffffffffffffffffffff16613927565b156135b9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613489612429565b8786866040518563ffffffff1660e01b81526004016134ab9493929190615bc6565b6020604051808303816000875af19250505080156134e757506040513d601f19601f820116820180604052508101906134e49190615c27565b60015b613569573d8060008114613517576040519150601f19603f3d011682016040523d82523d6000602084013e61351c565b606091505b506000815103613561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355890615b20565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506135be565b600190505b949350505050565b6013805490506014600083815260200190815260200160002081905550601381908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161361c84611789565b6136269190615702565b905060006012600084815260200190815260200160002054905081811461370b576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816012600083815260200190815260200160002081905550505b6012600084815260200190815260200160002060009055601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016013805490506137909190615702565b90506000601460008481526020019081526020016000205490506000601383815481106137c0576137bf614e7b565b5b9060005260206000200154905080601383815481106137e2576137e1614e7b565b5b90600052602060002001819055508160146000838152602001908152602001600020819055506014600085815260200190815260200160002060009055601380548061383157613830615c54565b5b6001900381819060005260206000200160009055905550505050565b600061385883611789565b905081601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806012600084815260200190815260200160002081905550505050565b6138d6838361393a565b6138e3600084848461343f565b613922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391990615b20565b60405180910390fd5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139a090615ccf565b60405180910390fd5b6139b2816125cf565b156139f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e990615d3b565b60405180910390fd5b6139fe60008383613304565b6001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a4e9190615736565b9250508190555081600d600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054828255906000526020600020908101928215613b43579160200282015b82811115613b42578251825591602001919060010190613b27565b5b509050613b509190613b54565b5090565b5b80821115613b6d576000816000905550600101613b55565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613bba81613b85565b8114613bc557600080fd5b50565b600081359050613bd781613bb1565b92915050565b600060208284031215613bf357613bf2613b7b565b5b6000613c0184828501613bc8565b91505092915050565b60008115159050919050565b613c1f81613c0a565b82525050565b6000602082019050613c3a6000830184613c16565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6b82613c40565b9050919050565b613c7b81613c60565b8114613c8657600080fd5b50565b600081359050613c9881613c72565b92915050565b60006bffffffffffffffffffffffff82169050919050565b613cbf81613c9e565b8114613cca57600080fd5b50565b600081359050613cdc81613cb6565b92915050565b60008060408385031215613cf957613cf8613b7b565b5b6000613d0785828601613c89565b9250506020613d1885828601613ccd565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d5c578082015181840152602081019050613d41565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d8482613d22565b613d8e8185613d2d565b9350613d9e818560208601613d3e565b613da781613d68565b840191505092915050565b60006020820190508181036000830152613dcc8184613d79565b905092915050565b6000819050919050565b613de781613dd4565b8114613df257600080fd5b50565b600081359050613e0481613dde565b92915050565b600060208284031215613e2057613e1f613b7b565b5b6000613e2e84828501613df5565b91505092915050565b613e4081613c60565b82525050565b6000602082019050613e5b6000830184613e37565b92915050565b60008060408385031215613e7857613e77613b7b565b5b6000613e8685828601613c89565b9250506020613e9785828601613df5565b9150509250929050565b613eaa81613dd4565b82525050565b6000602082019050613ec56000830184613ea1565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613f0d82613d68565b810181811067ffffffffffffffff82111715613f2c57613f2b613ed5565b5b80604052505050565b6000613f3f613b71565b9050613f4b8282613f04565b919050565b600067ffffffffffffffff821115613f6b57613f6a613ed5565b5b613f7482613d68565b9050602081019050919050565b82818337600083830152505050565b6000613fa3613f9e84613f50565b613f35565b905082815260208101848484011115613fbf57613fbe613ed0565b5b613fca848285613f81565b509392505050565b600082601f830112613fe757613fe6613ecb565b5b8135613ff7848260208601613f90565b91505092915050565b60008060008060008060c0878903121561401d5761401c613b7b565b5b600061402b89828a01613c89565b965050602061403c89828a01613df5565b955050604061404d89828a01613df5565b945050606061405e89828a01613df5565b935050608061406f89828a01613df5565b92505060a087013567ffffffffffffffff8111156140905761408f613b80565b5b61409c89828a01613fd2565b9150509295509295509295565b6000806000606084860312156140c2576140c1613b7b565b5b60006140d086828701613c89565b93505060206140e186828701613c89565b92505060406140f286828701613df5565b9150509250925092565b60008060006060848603121561411557614114613b7b565b5b600061412386828701613c89565b935050602061413486828701613df5565b925050604061414586828701613df5565b9150509250925092565b6000806040838503121561416657614165613b7b565b5b600061417485828601613df5565b925050602061418585828601613df5565b9150509250929050565b60006040820190506141a46000830185613e37565b6141b16020830184613ea1565b9392505050565b6000602082840312156141ce576141cd613b7b565b5b60006141dc84828501613c89565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61421a81613dd4565b82525050565b600061422c8383614211565b60208301905092915050565b6000602082019050919050565b6000614250826141e5565b61425a81856141f0565b935061426583614201565b8060005b8381101561429657815161427d8882614220565b975061428883614238565b925050600181019050614269565b5085935050505092915050565b600060208201905081810360008301526142bd8184614245565b905092915050565b6000602082840312156142db576142da613b7b565b5b600082013567ffffffffffffffff8111156142f9576142f8613b80565b5b61430584828501613fd2565b91505092915050565b60008060006060848603121561432757614326613b7b565b5b600061433586828701613df5565b935050602061434686828701613df5565b925050604061435786828701613df5565b9150509250925092565b6000819050919050565b61437481614361565b82525050565b600060208201905061438f600083018461436b565b92915050565b60006080820190506143aa6000830187613ea1565b6143b76020830186613ea1565b6143c46040830185613e37565b6143d1606083018461436b565b95945050505050565b6143e381613c0a565b81146143ee57600080fd5b50565b600081359050614400816143da565b92915050565b6000806040838503121561441d5761441c613b7b565b5b600061442b85828601613c89565b925050602061443c858286016143f1565b9150509250929050565b6000806040838503121561445d5761445c613b7b565b5b600061446b85828601613df5565b925050602083013567ffffffffffffffff81111561448c5761448b613b80565b5b61449885828601613fd2565b9150509250929050565b600067ffffffffffffffff8211156144bd576144bc613ed5565b5b6144c682613d68565b9050602081019050919050565b60006144e66144e1846144a2565b613f35565b90508281526020810184848401111561450257614501613ed0565b5b61450d848285613f81565b509392505050565b600082601f83011261452a57614529613ecb565b5b813561453a8482602086016144d3565b91505092915050565b6000806000806080858703121561455d5761455c613b7b565b5b600061456b87828801613c89565b945050602061457c87828801613c89565b935050604061458d87828801613df5565b925050606085013567ffffffffffffffff8111156145ae576145ad613b80565b5b6145ba87828801614515565b91505092959194509250565b600080604083850312156145dd576145dc613b7b565b5b60006145eb85828601613df5565b92505060206145fc85828601613c89565b9150509250929050565b600060c08201905061461b6000830189613ea1565b6146286020830188613ea1565b818103604083015261463a8187613d79565b90506146496060830186613ea1565b6146566080830185613e37565b61466360a0830184613ea1565b979650505050505050565b6000806040838503121561468557614684613b7b565b5b600061469385828601613c89565b92505060206146a485828601613c89565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146e4602083613d2d565b91506146ef826146ae565b602082019050919050565b60006020820190508181036000830152614713816146d7565b9050919050565b7f526f79616c7479206665652077696c6c20657863656564206c696d6974730000600082015250565b6000614750601e83613d2d565b915061475b8261471a565b602082019050919050565b6000602082019050818103600083015261477f81614743565b9050919050565b7f496e76616c696420726563656976657220616464726573730000000000000000600082015250565b60006147bc601883613d2d565b91506147c782614786565b602082019050919050565b600060208201905081810360008301526147eb816147af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061483957607f821691505b60208210810361484c5761484b6147f2565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006148ae602c83613d2d565b91506148b982614852565b604082019050919050565b600060208201905081810360008301526148dd816148a1565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614940602183613d2d565b915061494b826148e4565b604082019050919050565b6000602082019050818103600083015261496f81614933565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006149d2603883613d2d565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a2d565b614a748683614a2d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000614ab1614aac614aa784613dd4565b614a8c565b613dd4565b9050919050565b6000819050919050565b614acb83614a96565b614adf614ad782614ab8565b848454614a3a565b825550505050565b600090565b614af4614ae7565b614aff818484614ac2565b505050565b5b81811015614b2357614b18600082614aec565b600181019050614b05565b5050565b601f821115614b6857614b3981614a08565b614b4284614a1d565b81016020851015614b51578190505b614b65614b5d85614a1d565b830182614b04565b50505b505050565b600082821c905092915050565b6000614b8b60001984600802614b6d565b1980831691505092915050565b6000614ba48383614b7a565b9150826002028217905092915050565b614bbd82613d22565b67ffffffffffffffff811115614bd657614bd5613ed5565b5b614be08254614821565b614beb828285614b27565b600060209050601f831160018114614c1e5760008415614c0c578287015190505b614c168582614b98565b865550614c7e565b601f198416614c2c86614a08565b60005b82811015614c5457848901518255600182019150602085019450602081019050614c2f565b86831015614c715784890151614c6d601f891682614b7a565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614ce2603183613d2d565b9150614ced82614c86565b604082019050919050565b60006020820190508181036000830152614d1181614cd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614d5282613dd4565b9150614d5d83613dd4565b9250828202614d6b81613dd4565b91508282048414831517614d8257614d81614d18565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614dc382613dd4565b9150614dce83613dd4565b925082614dde57614ddd614d89565b5b828204905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614e45602b83613d2d565b9150614e5082614de9565b604082019050919050565b60006020820190508181036000830152614e7481614e38565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614eb582613dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ee757614ee6614d18565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614f4e602c83613d2d565b9150614f5982614ef2565b604082019050919050565b60006020820190508181036000830152614f7d81614f41565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614fe0602983613d2d565b9150614feb82614f84565b604082019050919050565b6000602082019050818103600083015261500f81614fd3565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000615072602a83613d2d565b915061507d82615016565b604082019050919050565b600060208201905081810360008301526150a181615065565b9050919050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a206d696e7420636f6c60008201527f6c656374696f6e2069736e277420736574000000000000000000000000000000602082015250565b6000615104603183613d2d565b915061510f826150a8565b604082019050919050565b60006020820190508181036000830152615133816150f7565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615170601983613d2d565b915061517b8261513a565b602082019050919050565b6000602082019050818103600083015261519f81615163565b9050919050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a206f6e6c792061727460008201527f6973742063616e2063616c6c20746869732066756e6374696f6e000000000000602082015250565b6000615202603a83613d2d565b915061520d826151a6565b604082019050919050565b60006020820190508181036000830152615231816151f5565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000615294602f83613d2d565b915061529f82615238565b604082019050919050565b600060208201905081810360008301526152c381615287565b9050919050565b600081905092915050565b60006152e082613d22565b6152ea81856152ca565b93506152fa818560208601613d3e565b80840191505092915050565b600061531282856152d5565b915061531e82846152d5565b91508190509392505050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a20696e76616c69642060008201527f636f6c6c656374696f6e20696400000000000000000000000000000000000000602082015250565b6000615386602d83613d2d565b91506153918261532a565b604082019050919050565b600060208201905081810360008301526153b581615379565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615418602683613d2d565b9150615423826153bc565b604082019050919050565b600060208201905081810360008301526154478161540b565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b60006154aa602a83613d2d565b91506154b58261544e565b604082019050919050565b600060208201905081810360008301526154d98161549d565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6000615516601983613d2d565b9150615521826154e0565b602082019050919050565b6000602082019050818103600083015261554581615509565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006155a8602c83613d2d565b91506155b38261554c565b604082019050919050565b600060208201905081810360008301526155d78161559b565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b600061563a602983613d2d565b9150615645826155de565b604082019050919050565b600060208201905081810360008301526156698161562d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156cc602483613d2d565b91506156d782615670565b604082019050919050565b600060208201905081810360008301526156fb816156bf565b9050919050565b600061570d82613dd4565b915061571883613dd4565b92508282039050818111156157305761572f614d18565b5b92915050565b600061574182613dd4565b915061574c83613dd4565b925082820190508082111561576457615763614d18565b5b92915050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a20696e636f7272656360008201527f7420636f6c6c656374696f6e2069640000000000000000000000000000000000602082015250565b60006157c6602f83613d2d565b91506157d18261576a565b604082019050919050565b600060208201905081810360008301526157f5816157b9565b9050919050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a206d617820696e766f60008201527f636174696f6e7320776173207265616368656400000000000000000000000000602082015250565b6000615858603383613d2d565b9150615863826157fc565b604082019050919050565b600060208201905081810360008301526158878161584b565b9050919050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a20696e636f7272656360008201527f7420616d6f756e742073656e7400000000000000000000000000000000000000602082015250565b60006158ea602d83613d2d565b91506158f58261588e565b604082019050919050565b60006020820190508181036000830152615919816158dd565b9050919050565b6000819050919050565b61593b61593682613dd4565b615920565b82525050565b60008160601b9050919050565b600061595982615941565b9050919050565b600061596b8261594e565b9050919050565b61598361597e82613c60565b615960565b82525050565b6000615995828761592a565b6020820191506159a5828661592a565b6020820191506159b5828561592a565b6020820191506159c58284615972565b60148201915081905095945050505050565b60006080820190506159ec6000830187613e37565b6159f96020830186613ea1565b615a066040830185613ea1565b615a13606083018461436b565b95945050505050565b7f4379636c65736f664c696665436f6c6c656374696f6e3a206f6e6c7920746f6b60008201527f656e206f776e65722063616e206275726e000000000000000000000000000000602082015250565b6000615a78603183613d2d565b9150615a8382615a1c565b604082019050919050565b60006020820190508181036000830152615aa781615a6b565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615b0a603283613d2d565b9150615b1582615aae565b604082019050919050565b60006020820190508181036000830152615b3981615afd565b9050919050565b6000615b4b82613dd4565b9150615b5683613dd4565b925082615b6657615b65614d89565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000615b9882615b71565b615ba28185615b7c565b9350615bb2818560208601613d3e565b615bbb81613d68565b840191505092915050565b6000608082019050615bdb6000830187613e37565b615be86020830186613e37565b615bf56040830185613ea1565b8181036060830152615c078184615b8d565b905095945050505050565b600081519050615c2181613bb1565b92915050565b600060208284031215615c3d57615c3c613b7b565b5b6000615c4b84828501615c12565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615cb9602083613d2d565b9150615cc482615c83565b602082019050919050565b60006020820190508181036000830152615ce881615cac565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615d25601c83613d2d565b9150615d3082615cef565b602082019050919050565b60006020820190508181036000830152615d5481615d18565b905091905056fea2646970667358221220aaccc04bda9ccce6c5fa8ff3c0d568cbe6408ac46871bcca101cf4c495ffabc764736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000e4379636c6573206f66204c696665000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4379636c6573206f66204c696665000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f6379636c65732e726974686d2e6172742f6d657461646174612f000000000000000000000000000000000000000000000000000000000000