non-fungible-apps/deployments/mumbai/FleekERC721.json

1345 lines
88 KiB
JSON

{
"timestamp": "1/17/2023, 12:39:20 PM",
"address": "0x21d7fBe220958A0F0f7cAE58780fe812EbcB3cd8",
"transactionHash": "0x715976ee8931f6e220c1e8d03c4aea779e3393def1342c2ff99867fe47125961",
"gasPrice": 1500000016,
"abi": [
{
"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": true,
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"indexed": true,
"internalType": "address",
"name": "toAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "byAddress",
"type": "address"
}
],
"name": "CollectionRoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"indexed": true,
"internalType": "address",
"name": "toAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "byAddress",
"type": "address"
}
],
"name": "CollectionRoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "commitHash",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewBuild",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "description",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewTokenDescription",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "ENS",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewTokenENS",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "externalURL",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewTokenExternalURL",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "image",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewTokenImage",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "token",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "name",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "triggeredBy",
"type": "address"
}
],
"name": "NewTokenName",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"indexed": true,
"internalType": "address",
"name": "toAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "byAddress",
"type": "address"
}
],
"name": "TokenRoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"indexed": true,
"internalType": "address",
"name": "toAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "byAddress",
"type": "address"
}
],
"name": "TokenRoleRevoked",
"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": "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": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
}
],
"name": "getCollectionRoleMembers",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
}
],
"name": "getTokenRoleMembers",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantCollectionRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantTokenRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasCollectionRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasTokenRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"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": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "description",
"type": "string"
},
{
"internalType": "string",
"name": "externalURL",
"type": "string"
},
{
"internalType": "string",
"name": "ENS",
"type": "string"
},
{
"internalType": "string",
"name": "commitHash",
"type": "string"
},
{
"internalType": "string",
"name": "gitRepository",
"type": "string"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeCollectionRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "enum FleekAccessControl.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeTokenRole",
"outputs": [],
"stateMutability": "nonpayable",
"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": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_commitHash",
"type": "string"
},
{
"internalType": "string",
"name": "_gitRepository",
"type": "string"
}
],
"name": "setTokenBuild",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_tokenDescription",
"type": "string"
}
],
"name": "setTokenDescription",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_tokenENS",
"type": "string"
}
],
"name": "setTokenENS",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_tokenExternalURL",
"type": "string"
}
],
"name": "setTokenExternalURL",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_tokenName",
"type": "string"
}
],
"name": "setTokenName",
"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": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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"
}
],
"bytecode": "0x608060405234801561001057600080fd5b506141ea806100206000396000f3fe6080604052600436106101c25760003560e01c80636352211e116100f7578063aba8112511610095578063cdb0e89e11610064578063cdb0e89e14610510578063e944725014610530578063e985e9c514610550578063f93151771461059957600080fd5b8063aba811251461049d578063b42dbe38146104b0578063b88d4fde146104d0578063c87b56dd146104f057600080fd5b80638c3c0a44116100d15780638c3c0a441461042857806395d89b4114610448578063a22cb4651461045d578063a27d0b271461047d57600080fd5b80636352211e146103bb57806370a08231146103db57806378278cca1461040857600080fd5b80632d957aad116101645780633806f1521161013e5780633806f1521461033b57806342842e0e1461035b57806342966c681461037b5780634cd88b761461039b57600080fd5b80632d957aad146102ce5780632f1e8f0a146102ee578063353b07a41461031b57600080fd5b8063081812fc116101a0578063081812fc14610241578063095ea7b31461026e57806323b872dd1461028e578063246a908b146102ae57600080fd5b806301468deb146101c757806301ffc9a7146101e957806306fdde031461021f575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612aa9565b6105b9565b005b3480156101f557600080fd5b5061020961020436600461296a565b610610565b6040516102169190613de4565b60405180910390f35b34801561022b57600080fd5b50610234610621565b6040516102169190613e00565b34801561024d57600080fd5b5061026161025c366004612a55565b6106b3565b6040516102169190613d81565b34801561027a57600080fd5b506101e7610289366004612937565b6106da565b34801561029a57600080fd5b506101e76102a93660046126fb565b610760565b3480156102ba57600080fd5b506101e76102c9366004612aef565b610791565b3480156102da57600080fd5b506101e76102e93660046129cd565b610844565b3480156102fa57600080fd5b5061030e610309366004612a76565b610887565b6040516102169190613dd3565b34801561032757600080fd5b5061030e6103363660046129ac565b610941565b34801561034757600080fd5b506101e7610356366004612b11565b6109f4565b34801561036757600080fd5b506101e76103763660046126fb565b610b03565b34801561038757600080fd5b506101e7610396366004612a55565b610b1e565b3480156103a757600080fd5b506101e76103b63660046129ef565b610bd8565b3480156103c757600080fd5b506102616103d6366004612a55565b610cb2565b3480156103e757600080fd5b506103fb6103f636600461269d565b610ce7565b6040516102169190613f11565b34801561041457600080fd5b506101e7610423366004612aef565b610d2b565b34801561043457600080fd5b506101e76104433660046129cd565b610dde565b34801561045457600080fd5b50610234610e21565b34801561046957600080fd5b506101e76104783660046127c9565b610e30565b34801561048957600080fd5b506101e7610498366004612aa9565b610e3f565b6103fb6104ab3660046127fc565b610e86565b3480156104bc57600080fd5b506102096104cb366004612aa9565b610fb5565b3480156104dc57600080fd5b506101e76104eb36600461274b565b61102d565b3480156104fc57600080fd5b5061023461050b366004612a55565b611065565b34801561051c57600080fd5b506101e761052b366004612aef565b61127d565b34801561053c57600080fd5b5061020961054b3660046129cd565b61132a565b34801561055c57600080fd5b5061020961056b3660046126be565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156105a557600080fd5b506101e76105b4366004612aef565b61139c565b8260006105c7828233610fb5565b806105d957506105d982600033610fb5565b6105fe5760405162461bcd60e51b81526004016105f590613f01565b60405180910390fd5b61060985858561144f565b5050505050565b600061061b82611508565b92915050565b60606065805461063090614032565b80601f016020809104026020016040519081016040528092919081815260200182805461065c90614032565b80156106a95780601f1061067e576101008083540402835291602001916106a9565b820191906000526020600020905b81548152906001019060200180831161068c57829003601f168201915b5050505050905090565b60006106be82611558565b506000908152606960205260409020546001600160a01b031690565b60006106e582610cb2565b9050806001600160a01b0316836001600160a01b031614156107195760405162461bcd60e51b81526004016105f590613ed1565b336001600160a01b03821614806107355750610735813361056b565b6107515760405162461bcd60e51b81526004016105f590613ee1565b61075b838361158f565b505050565b61076a33826115fd565b6107865760405162461bcd60e51b81526004016105f590613e21565b61075b83838361167c565b81600161079f828233610fb5565b806107b157506107b182600033610fb5565b6107cd5760405162461bcd60e51b81526004016105f590613f01565b6107d684611558565b6000848152609c6020908152604090912084516107fb9260019092019186019061252f565b50604051339061080c908590613282565b6040519081900381209086907fd771eaa1c1382b0a9867125fcd921fdeddd211538b5381353a877abfbe3b50a490600090a450505050565b6000610850813361132a565b80610861575061086160003361132a565b61087d5760405162461bcd60e51b81526004016105f590613e61565b61075b83836117b1565b600082815260996020908152604080832054609a835281842081855290925282206060928460018111156108bd576108bd6140c7565b60018111156108ce576108ce6140c7565b815260200190815260200160002060010180548060200260200160405190810160405280929190818152602001828054801561093357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610915575b505050505091505092915050565b6060600061094e60975490565b6000818152609860205260408120919250846001811115610971576109716140c7565b6001811115610982576109826140c7565b81526020019081526020016000206001018054806020026020016040519081016040528092919081815260200182805480156109e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109c9575b5050505050915050919050565b826001610a02828233610fb5565b80610a145750610a1482600033610fb5565b610a305760405162461bcd60e51b81526004016105f590613f01565b610a3985611558565b60408051808201825285815260208082018690526000888152609c90915291822060048101805492936005909201928290610a739061408b565b91829055508152602080820192909252604001600020825180519192610a9e9284929091019061252f565b506020828101518051610ab7926001850192019061252f565b5050604051339150610aca908690613282565b6040519081900381209087907f73b929bf4db6be678cdbc6d41a5fe0a2cbb84ca95572062c4a978d8bd80a41b190600090a45050505050565b61075b8383836040518060200160405280600081525061102d565b806000610b2c828233610fb5565b80610b3e5750610b3e82600033610fb5565b610b5a5760405162461bcd60e51b81526004016105f590613f01565b610b6383611861565b6000838152609c602052604090206002018054610b7f90614032565b15905061075b576000838152609c6020526040812090610b9f82826125b3565b610bad6001830160006125b3565b610bbb6002830160006125b3565b610bc96003830160006125b3565b60048201600090555050505050565b600054610100900460ff1615808015610bf85750600054600160ff909116105b80610c125750303b158015610c12575060005460ff166001145b610c2e5760405162461bcd60e51b81526004016105f590613ea1565b6000805460ff191660011790558015610c51576000805461ff0019166101001790555b610c5b8383611904565b610c63611935565b801561075b576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610ca590600190613df2565b60405180910390a1505050565b6000818152606760205260408120546001600160a01b03168061061b5760405162461bcd60e51b81526004016105f590613ec1565b60006001600160a01b038216610d0f5760405162461bcd60e51b81526004016105f590613e91565b506001600160a01b031660009081526068602052604090205490565b816001610d39828233610fb5565b80610d4b5750610d4b82600033610fb5565b610d675760405162461bcd60e51b81526004016105f590613f01565b610d7084611558565b6000848152609c602090815260409091208451610d959260039092019186019061252f565b506040513390610da6908590613282565b6040519081900381209086907f91ce7fcd4462481791c3fe849f7049373c5b43ef44aed48e7f1ecce781586e1590600090a450505050565b6000610dea813361132a565b80610dfb5750610dfb60003361132a565b610e175760405162461bcd60e51b81526004016105f590613e61565b61075b8383611969565b60606066805461063090614032565b610e3b3383836119e7565b5050565b826000610e4d828233610fb5565b80610e5f5750610e5f82600033610fb5565b610e7b5760405162461bcd60e51b81526004016105f590613f01565b610609858585611a7d565b600080610e93813361132a565b80610ea45750610ea460003361132a565b610ec05760405162461bcd60e51b81526004016105f590613e61565b6000610ecb609b5490565b9050610ed78a82611b03565b610ee5609b80546001019055565b6000818152609c602090815260409091208a519091610f089183918d019061252f565b508851610f1e90600183019060208c019061252f565b508751610f3490600283019060208b019061252f565b508651610f4a90600383019060208a019061252f565b50600060048201819055604080518082018252888152602080820189905283805260058501815291909220825180519192610f8a9284929091019061252f565b506020828101518051610fa3926001850192019061252f565b50929c9b505050505050505050505050565b600083815260996020908152604080832054609a8352818420818552909252822082856001811115610fe957610fe96140c7565b6001811115610ffa57610ffa6140c7565b8152602080820192909252604090810160009081206001600160a01b038716825290925290205415159150509392505050565b61103733836115fd565b6110535760405162461bcd60e51b81526004016105f590613e21565b61105f84848484611c0c565b50505050565b606061107082611558565b600061107b83610cb2565b6000848152609c6020526040812091925081600181016110a56001600160a01b0386166014611c3f565b846002016111cb8660000180546110bb90614032565b80601f01602080910402602001604051908101604052809291908181526020018280546110e790614032565b80156111345780601f1061110957610100808354040283529160200191611134565b820191906000526020600020905b81548152906001019060200180831161111757829003601f168201915b505050505087600301805461114890614032565b80601f016020809104026020016040519081016040528092919081815260200182805461117490614032565b80156111c15780601f10611196576101008083540402835291602001916111c1565b820191906000526020600020905b8154815290600101906020018083116111a457829003601f168201915b5050505050611db1565b600487015460008181526005890160205260409020600389019160018201906111f390611e3f565b60405160200161120b99989796959493929190613b66565b60408051601f19818403018152828201909152601d82527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020830152915061125382611edb565b60405160200161126492919061328e565b6040516020818303038152906040529350505050919050565b81600161128b828233610fb5565b8061129d575061129d82600033610fb5565b6112b95760405162461bcd60e51b81526004016105f590613f01565b6112c284611558565b6000848152609c6020908152604090912084516112e19286019061252f565b5060405133906112f2908590613282565b6040519081900381209086907ffbbfca16a2770c7ca6e7063ab1a7eea5fe441ffef818325db51752066a6b128a90600090a450505050565b60008061133660975490565b6000818152609860205260408120919250856001811115611359576113596140c7565b600181111561136a5761136a6140c7565b8152602080820192909252604090810160009081206001600160a01b0387168252909252902054151591505092915050565b8160016113aa828233610fb5565b806113bc57506113bc82600033610fb5565b6113d85760405162461bcd60e51b81526004016105f590613f01565b6113e184611558565b6000848152609c6020908152604090912084516114069260029092019186019061252f565b506040513390611417908590613282565b6040519081900381209086907fedbf1209b3baa7c1b5c43052ce5c511e243b3241d9f67733141d14f1da88cba190600090a450505050565b600083815260996020908152604080832054609a8352818420818552909252822090916114ae9190856001811115611489576114896140c7565b600181111561149a5761149a6140c7565b81526020019081526020016000208361202e565b816001600160a01b03168360018111156114ca576114ca6140c7565b857fe52d746e4c78c98c6bfa291b273406905c3e8550b7d911a6bea686368c2dc79d336040516114fa9190613d81565b60405180910390a450505050565b60006001600160e01b031982166380ac58cd60e01b148061153957506001600160e01b03198216635b5e139f60e01b145b8061061b57506301ffc9a760e01b6001600160e01b031983161461061b565b6000818152606760205260409020546001600160a01b031661158c5760405162461bcd60e51b81526004016105f590613ec1565b50565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906115c482610cb2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061160983610cb2565b9050806001600160a01b0316846001600160a01b0316148061165057506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806116745750836001600160a01b0316611669846106b3565b6001600160a01b0316145b949350505050565b826001600160a01b031661168f82610cb2565b6001600160a01b0316146116b55760405162461bcd60e51b81526004016105f590613e41565b6001600160a01b0382166116db5760405162461bcd60e51b81526004016105f590613e71565b6116e88383836001612172565b826001600160a01b03166116fb82610cb2565b6001600160a01b0316146117215760405162461bcd60e51b81526004016105f590613e41565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006117bc60975490565b600081815260986020526040812091925061180991908560018111156117e4576117e46140c7565b60018111156117f5576117f56140c7565b8152602001908152602001600020836121f0565b816001600160a01b0316836001811115611825576118256140c7565b7fcf081ed2b728e3115904be00eb8927b2375ff3401839b37f7accfa1bb2bee15c336040516118549190613d81565b60405180910390a3505050565b600061186c82610cb2565b905061187c816000846001612172565b61188582610cb2565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600054610100900460ff1661192b5760405162461bcd60e51b81526004016105f590613ef1565b610e3b8282612253565b600054610100900460ff1661195c5760405162461bcd60e51b81526004016105f590613ef1565b6119676000336117b1565b565b600061197460975490565b600081815260986020526040812091925061199c9190856001811115611489576114896140c7565b816001600160a01b03168360018111156119b8576119b86140c7565b7faeff57f0f5e4d3d10a37d4a70fde8ed67a95e67b251d5c512c0ea98c380d2f95336040516118549190613d81565b816001600160a01b0316836001600160a01b03161415611a195760405162461bcd60e51b81526004016105f590613e81565b6001600160a01b038381166000818152606a602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611854908590613de4565b600083815260996020908152604080832054609a835281842081855290925282209091611ab791908560018111156117e4576117e46140c7565b816001600160a01b0316836001811115611ad357611ad36140c7565b857f0bf5a13b362503fcc74b8b9b1598aba2f3a9af85d05ba7978f7e9f447f22c239336040516114fa9190613d81565b6001600160a01b038216611b295760405162461bcd60e51b81526004016105f590613eb1565b6000818152606760205260409020546001600160a01b031615611b5e5760405162461bcd60e51b81526004016105f590613e51565b611b6c600083836001612172565b6000818152606760205260409020546001600160a01b031615611ba15760405162461bcd60e51b81526004016105f590613e51565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611c1784848461167c565b611c23848484846122a1565b61105f5760405162461bcd60e51b81526004016105f590613e31565b60606000611c4e836002613f91565b611c59906002613f65565b6001600160401b03811115611c7057611c7061411f565b6040519080825280601f01601f191660200182016040528015611c9a576020820181803683370190505b509050600360fc1b81600081518110611cb557611cb5614109565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ce457611ce4614109565b60200101906001600160f81b031916908160001a9053506000611d08846002613f91565b611d13906001613f65565b90505b6001811115611d8b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611d4757611d47614109565b1a60f81b828281518110611d5d57611d5d614109565b60200101906001600160f81b031916908160001a90535060049490941c93611d848161401b565b9050611d16565b508315611daa5760405162461bcd60e51b81526004016105f590613e11565b9392505050565b6060611ded60408051808201909152601d81527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000602082015290565b611e178484604051602001611e039291906132a6565b604051602081830303815290604052611edb565b604051602001611e2892919061328e565b604051602081830303815290604052905092915050565b60606000611e4c836123ae565b60010190506000816001600160401b03811115611e6b57611e6b61411f565b6040519080825280601f01601f191660200182016040528015611e95576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611ece57611ed3565b611e9f565b509392505050565b6060815160001415611efb57505060408051602081019091526000815290565b60006040518060600160405280604081526020016141756040913990506000600384516002611f2a9190613f65565b611f349190613f7d565b611f3f906004613f91565b6001600160401b03811115611f5657611f5661411f565b6040519080825280601f01601f191660200182016040528015611f80576020820181803683370190505b509050600182016020820185865187015b80821015611fec576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845360018401935050611f91565b5050600386510660018114612008576002811461201b57612023565b603d6001830353603d6002830353612023565b603d60018303535b509195945050505050565b6001600160a01b03811660009081526020839052604090205415610e3b576001600160a01b03811660009081526020839052604081205461207190600190613fb0565b6001848101549192506000916120879190613fb0565b905060008460010182815481106120a0576120a0614109565b6000918252602090912001546001860180546001600160a01b0390921692508291859081106120d1576120d1614109565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055612105836001613f65565b6001600160a01b03821660009081526020879052604090205560018501805480612131576121316140f3565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038616825286905260408120555050505050565b6001600160a01b0384161580159061219257506001600160a01b03831615155b156121a6576121a18284612486565b6121e4565b6001600160a01b0384166121c0576121a182600085611a7d565b6001600160a01b0383166121e4576000828152609960205260409020805460010190555b61105f848484846124a7565b6001600160a01b038116600090815260208390526040902054610e3b576001828101805491820181556000818152602080822090930180546001600160a01b0319166001600160a01b039590951694851790559054928152929052604090912055565b600054610100900460ff1661227a5760405162461bcd60e51b81526004016105f590613ef1565b815161228d90606590602085019061252f565b50805161075b90606690602084019061252f565b60006001600160a01b0384163b156123a357604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906122e5903390899088908890600401613d8f565b602060405180830381600087803b1580156122ff57600080fd5b505af192505050801561232f575060408051601f3d908101601f1916820190925261232c9181019061298b565b60015b612389573d80801561235d576040519150601f19603f3d011682016040523d82523d6000602084013e612362565b606091505b5080516123815760405162461bcd60e51b81526004016105f590613e31565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611674565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106123ed5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612419576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061243757662386f26fc10000830492506010015b6305f5e100831061244f576305f5e100830492506008015b612710831061246357612710830492506004015b60648310612475576064830492506002015b600a831061061b5760010192915050565b600082815260996020526040902080546001019055610e3b82600083611a7d565b600181111561105f576001600160a01b038416156124ed576001600160a01b038416600090815260686020526040812080548392906124e7908490613fb0565b90915550505b6001600160a01b0383161561105f576001600160a01b03831660009081526068602052604081208054839290612524908490613f65565b909155505050505050565b82805461253b90614032565b90600052602060002090601f01602090048101928261255d57600085556125a3565b82601f1061257657805160ff19168380011785556125a3565b828001600101855582156125a3579182015b828111156125a3578251825591602001919060010190612588565b506125af9291506125e9565b5090565b5080546125bf90614032565b6000825580601f106125cf575050565b601f01602090049060005260206000209081019061158c91905b5b808211156125af57600081556001016125ea565b600061261161260c84613f3b565b613f1f565b90508281526020810184848401111561262c5761262c600080fd5b611ed3848285613fe3565b803561061b81614135565b803561061b81614149565b803561061b81614151565b805161061b81614151565b600082601f83011261267757612677600080fd5b81356116748482602086016125fe565b803561061b81614161565b803561061b8161416e565b6000602082840312156126b2576126b2600080fd5b60006116748484612637565b600080604083850312156126d4576126d4600080fd5b60006126e08585612637565b92505060206126f185828601612637565b9150509250929050565b60008060006060848603121561271357612713600080fd5b600061271f8686612637565b935050602061273086828701612637565b925050604061274186828701612692565b9150509250925092565b6000806000806080858703121561276457612764600080fd5b60006127708787612637565b945050602061278187828801612637565b935050604061279287828801612692565b92505060608501356001600160401b038111156127b1576127b1600080fd5b6127bd87828801612663565b91505092959194509250565b600080604083850312156127df576127df600080fd5b60006127eb8585612637565b92505060206126f185828601612642565b600080600080600080600060e0888a03121561281a5761281a600080fd5b60006128268a8a612637565b97505060208801356001600160401b0381111561284557612845600080fd5b6128518a828b01612663565b96505060408801356001600160401b0381111561287057612870600080fd5b61287c8a828b01612663565b95505060608801356001600160401b0381111561289b5761289b600080fd5b6128a78a828b01612663565b94505060808801356001600160401b038111156128c6576128c6600080fd5b6128d28a828b01612663565b93505060a08801356001600160401b038111156128f1576128f1600080fd5b6128fd8a828b01612663565b92505060c08801356001600160401b0381111561291c5761291c600080fd5b6129288a828b01612663565b91505092959891949750929550565b6000806040838503121561294d5761294d600080fd5b60006129598585612637565b92505060206126f185828601612692565b60006020828403121561297f5761297f600080fd5b6000611674848461264d565b6000602082840312156129a0576129a0600080fd5b60006116748484612658565b6000602082840312156129c1576129c1600080fd5b60006116748484612687565b600080604083850312156129e3576129e3600080fd5b60006126e08585612687565b60008060408385031215612a0557612a05600080fd5b82356001600160401b03811115612a1e57612a1e600080fd5b612a2a85828601612663565b92505060208301356001600160401b03811115612a4957612a49600080fd5b6126f185828601612663565b600060208284031215612a6a57612a6a600080fd5b60006116748484612692565b60008060408385031215612a8c57612a8c600080fd5b6000612a988585612692565b92505060206126f185828601612687565b600080600060608486031215612ac157612ac1600080fd5b6000612acd8686612692565b9350506020612ade86828701612687565b925050604061274186828701612637565b60008060408385031215612b0557612b05600080fd5b6000612a2a8585612692565b600080600060608486031215612b2957612b29600080fd5b6000612b358686612692565b93505060208401356001600160401b03811115612b5457612b54600080fd5b612b6086828701612663565b92505060408401356001600160401b03811115612b7f57612b7f600080fd5b61274186828701612663565b6000612b978383612b9f565b505060200190565b612ba881613fc7565b82525050565b6000612bb8825190565b80845260209384019383018060005b83811015612bec578151612bdb8882612b8b565b975060208301925050600101612bc7565b509495945050505050565b801515612ba8565b6000612c09825190565b808452602084019350612c20818560208601613fef565b601f01601f19169290920192915050565b612ba881613fd8565b6000612c44825190565b612c52818560208601613fef565b9290920192915050565b60008154612c6981614032565b600182168015612c805760018114612c9157612cc1565b60ff19831686528186019350612cc1565b60008581526020902060005b83811015612cb957815488820152600190910190602001612c9d565b838801955050505b50505092915050565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e74910190815260005b5060200190565b602d81526000602082017f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6581526c1c881bdc88185c1c1c9bdd9959609a1b602082015291505b5060400190565b6e1e17ba39b830b71f1e17ba32bc3a1f60891b815260005b50600f0190565b603281526000602082017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60208201529150612d45565b6e113232b9b1b934b83a34b7b7111d1160891b81526000612d64565b61088b60f21b815260005b5060020190565b602581526000602082017f4552433732313a207472616e736665722066726f6d20696e636f72726563742081526437bbb732b960d91b60208201529150612d45565b601c81526000602082017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529150612cf8565b602d81526000602082017f466c65656b416363657373436f6e74726f6c3a206d757374206861766520636f81526c6c6c656374696f6e20726f6c6560981b60208201529150612d45565b602481526000602082017f4552433732313a207472616e7366657220746f20746865207a65726f206164648152637265737360e01b60208201529150612d45565b601981526000602082017f4552433732313a20617070726f766520746f2063616c6c65720000000000000081529150612cf8565b602981526000602082017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b60208201529150612d45565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150612d45565b681134b6b0b3b2911d1160b91b815260005b5060090190565b61227d60f01b81526000612de1565b60208082527f4552433732313a206d696e7420746f20746865207a65726f206164647265737391019081526000612cf8565b607d60f81b815260005b5060010190565b607b60f81b81526000613012565b6e2261747472696275746573223a205b60881b81526000612d64565b681137bbb732b9111d1160b91b81526000612fc0565b601881526000602082017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529150612cf8565b605d60f81b81526000613012565b602181526000602082017f4552433732313a20617070726f76616c20746f2063757272656e74206f776e658152603960f91b60208201529150612d45565b7f3c67207472616e73666f726d3d226d617472697828312030203020312033303281527410191b18971a1b94911039ba3cb6329e911110101f60591b602082015260005b5060350190565b603d81526000602082017f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f81527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060208201529150612d45565b651e3232b3399f60d11b815260005b5060060190565b7f3c67207472616e73666f726d3d226d617472697828332e34322030203020332e8152741a1910199818171c9c10191a99171c9c149110101f60591b6020820152600061311d565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150612d45565b602881526000602082017f466c65656b416363657373436f6e74726f6c3a206d757374206861766520746f8152676b656e20726f6c6560c01b60208201529150612d45565b651e17b9bb339f60d11b8152600061318d565b80612ba8565b6000611daa8284612c3a565b600061329a8285612c3a565b91506116748284612c3a565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f7376672220786d6c6e733a786c696e6b3d22687474703a2f2f7777772e60208201527f77332e6f72672f313939392f786c696e6b222076657273696f6e3d22312e312260408201527f2077696474683d2236343022206865696768743d22343830222076696577426f60608201527f783d2230203020363430203438302220786d6c3a73706163653d227072657365608082015264393b32911f60d91b60a082015260a501600061337d8261317e565b661e17b232b3399f60c91b8152600701915061339882613194565b7f3c706f6c79676f6e207374796c653d227374726f6b653a2072676228302c302c81527f30293b207374726f6b652d77696474683a20383b207374726f6b652d6461736860208201527f61727261793a206e6f6e653b207374726f6b652d6c696e656361703a2062757460408201527f743b207374726f6b652d646173686f66667365743a20303b207374726f6b652d60608201527f6c696e656a6f696e3a206d697465723b207374726f6b652d6d697465726c696d60808201527f69743a20343b2066696c6c3a20726762283135322c3135322c313833293b206660a08201527f696c6c2d72756c653a206e6f6e7a65726f3b206f7061636974793a20313b222060c08201527f766563746f722d6566666563743d226e6f6e2d7363616c696e672d7374726f6b60e08201527f65222020706f696e74733d222d35302c2d3530202d35302c35302035302c35306101008201526b101a9816169a98101110179f60a11b610120820152631e17b39f60e11b61012c82018190527f3c67207472616e73666f726d3d226d61747269782831203020302031203330336101308301527f2e35203131352e36372922207374796c653d222220203e0000000000000000006101508301527f3c7465787420786d6c3a73706163653d2270726573657276652220666f6e742d6101678301527f66616d696c793d224f70656e2053616e732220666f6e742d73697a653d2232346101878301527f2220666f6e742d7374796c653d226e6f726d616c2220666f6e742d77656967686101a78301527f743d226e6f726d616c22207374796c653d227374726f6b653a206e6f6e653b206101c78301527f7374726f6b652d77696474683a20313b207374726f6b652d64617368617272616101e78301527f793a206e6f6e653b207374726f6b652d6c696e656361703a20627574743b20736102078301527f74726f6b652d646173686f66667365743a20303b207374726f6b652d6c696e656102278301527f6a6f696e3a206d697465723b207374726f6b652d6d697465726c696d69743a206102478301527f343b2066696c6c3a2072676228302c302c30293b2066696c6c2d72756c653a206102678301527f6e6f6e7a65726f3b206f7061636974793a20313b2077686974652d73706163656102878301527f3a207072653b22203e3c747370616e20783d222d34352e372220793d22352e366102a78301527f3522207374796c653d227374726f6b652d77696474683a20313b20666f6e742d6102c78301527f66616d696c793a20224f70656e2053616e73222c2073616e732d73657269663b6102e78301527f20666f6e742d73697a653a20313870783b20666f6e742d7374796c653a206e6f6103078301527f726d616c3b20666f6e742d7765696768743a206e6f726d616c3b2066696c6c3a6103278301527f2072676228302c302c30293b20223e466c65656b204e4641733c2f747370616e610347830152671f1e17ba32bc3a1f60c11b61036783015261036f8201526103730191506137f7826130d9565b7f3c7465787420786d6c3a73706163653d2270726573657276652220666f6e742d81527f66616d696c793d224f70656e2053616e732220666f6e742d73697a653d22323860208201527f2220666f6e742d7374796c653d226e6f726d616c2220666f6e742d776569676860408201527f743d226e6f726d616c22207374796c653d227374726f6b653a206e6f6e653b2060608201527f7374726f6b652d77696474683a20313b207374726f6b652d646173686172726160808201527f793a206e6f6e653b207374726f6b652d6c696e656361703a20627574743b207360a08201527f74726f6b652d646173686f66667365743a20303b207374726f6b652d6c696e6560c08201527f6a6f696e3a206d697465723b207374726f6b652d6d697465726c696d69743a2060e08201527f343b2066696c6c3a2072676228302c302c30293b2066696c6c2d72756c653a206101008201527f6e6f6e7a65726f3b206f7061636974793a20313b2077686974652d73706163656101208201527f3a207072653b22203e3c747370616e20783d222d34342e32362220793d222d366101408201527f2e313422207374796c653d227374726f6b652d77696474683a20313b20666f6e6101608201527f742d66616d696c793a20224f70656e2053616e73222c2073616e732d736572696101808201527f663b20666f6e742d73697a653a20313870783b20666f6e742d7374796c653a206101a08201527f6e6f726d616c3b20666f6e742d7765696768743a206e6f726d616c3b2066696c6101c082015270361d103933b1141816181618149d90111f60791b6101e08201526101f1019150613a608285612c3a565b7f3c2f747370616e3e3c747370616e20783d222d33372e31342220793d2231372e81527f343522207374796c653d227374726f6b652d77696474683a20313b20666f6e7460208201527f2d66616d696c793a20224f70656e2053616e73222c2073616e732d736572696660408201527f3b20666f6e742d73697a653a20313870783b20666f6e742d7374796c653a206e60608201527f6f726d616c3b20666f6e742d7765696768743a206e6f726d616c3b2066696c6c60808201526f1d103933b1141816181618149d90111f60811b60a082015260b0019150613b438284612c3a565b9150613b4e82612d4c565b631e17b39f60e11b8152600401915061167482613269565b6000613b7182613019565b67113730b6b2911d1160c11b81526008019150613b8e828c612c5c565b9150613b9982612dd6565b9150613ba482612dba565b9150613bb0828b612c5c565b9150613bbb82612dd6565b9150613bc682613043565b9150613bd2828a612c3a565b9150613bdd82612dd6565b6f1132bc3a32b93730b62fbab936111d1160811b81526010019150613c028289612c5c565b9150613c0d82612dd6565b9150613c1882612fae565b9150613c248288612c3a565b9150613c2f82612dd6565b9150613c3a82613027565b7f7b2274726169745f74797065223a2022454e53222c202276616c7565223a22008152601f019150613c6c8287612c5c565b62089f4b60ea1b81527f7b2274726169745f74797065223a2022436f6d6d69742048617368222c20227660038201526630b63ab2911d1160c91b6023820152602a019150613cba8286612c5c565b62089f4b60ea1b81527f7b2274726169745f74797065223a20225265706f7369746f7279222c20227661600382015265363ab2911d1160d11b60238201526029019150613d078285612c5c565b62089f4b60ea1b81527f7b2274726169745f74797065223a202256657273696f6e222c202276616c7565600382015262111d1160e91b60238201526026019150613d518284612c3a565b9150613d5c82612fc7565b9150613d678261308d565b9150613d7282613008565b9b9a5050505050505050505050565b6020810161061b8284612b9f565b60808101613d9d8287612b9f565b613daa6020830186612b9f565b613db7604083018561327c565b8181036060830152613dc98184612bff565b9695505050505050565b60208082528101611daa8184612bae565b6020810161061b8284612bf7565b6020810161061b8284612c31565b60208082528101611daa8184612bff565b6020808252810161061b81612cca565b6020808252810161061b81612cff565b6020808252810161061b81612d6b565b6020808252810161061b81612de8565b6020808252810161061b81612e2a565b6020808252810161061b81612e5e565b6020808252810161061b81612ea8565b6020808252810161061b81612ee9565b6020808252810161061b81612f1d565b6020808252810161061b81612f63565b6020808252810161061b81612fd6565b6020808252810161061b81613059565b6020808252810161061b8161309b565b6020808252810161061b81613124565b6020808252810161061b816131dc565b6020808252810161061b81613224565b6020810161061b828461327c565b6000613f2a60405190565b9050613f36828261405f565b919050565b60006001600160401b03821115613f5457613f5461411f565b601f19601f83011660200192915050565b60008219821115613f7857613f7861409b565b500190565b600082613f8c57613f8c6140b1565b500490565b6000816000190483118215151615613fab57613fab61409b565b500290565b600082821015613fc257613fc261409b565b500390565b60006001600160a01b03821661061b565b600060ff821661061b565b82818337506000910152565b60005b8381101561400a578181015183820152602001613ff2565b8381111561105f5750506000910152565b60008161402a5761402a61409b565b506000190190565b60028104600182168061404657607f821691505b60208210811415614059576140596140dd565b50919050565b601f19601f83011681018181106001600160401b03821117156140845761408461411f565b6040525050565b6000600019821415613012576130125b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61413e81613fc7565b811461158c57600080fd5b80151561413e565b6001600160e01b0319811661413e565b6002811061158c57600080fd5b8061413e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220b134b709d6db06d03e23b6b163ce704738e195c692f6b8aaf48a6a6471fc951164736f6c63430008070033",
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":true,\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"CollectionRoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"CollectionRoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewBuild\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewTokenDescription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"ENS\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewTokenENS\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewTokenExternalURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewTokenImage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"}],\"name\":\"NewTokenName\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"byAddress\",\"type\":\"address\"}],\"name\":\"TokenRoleRevoked\",\"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\":\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"getCollectionRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"}],\"name\":\"getTokenRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasCollectionRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasTokenRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"externalURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"ENS\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"gitRepository\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeCollectionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum FleekAccessControl.Roles\",\"name\":\"role\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeTokenRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_commitHash\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_gitRepository\",\"type\":\"string\"}],\"name\":\"setTokenBuild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenDescription\",\"type\":\"string\"}],\"name\":\"setTokenDescription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenENS\",\"type\":\"string\"}],\"name\":\"setTokenENS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenExternalURL\",\"type\":\"string\"}],\"name\":\"setTokenExternalURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenName\",\"type\":\"string\"}],\"name\":\"setTokenName\",\"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\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns a previously minted `tokenId`. May emit a {Transfer} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenOwner` role.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getCollectionRoleMembers(uint8)\":{\"details\":\"Returns an array of addresses that all have the collection role.\"},\"getTokenRoleMembers(uint256,uint8)\":{\"details\":\"Returns an array of addresses that all have the same token role for a certain tokenId.\"},\"grantCollectionRole(uint8,address)\":{\"details\":\"Grants the collection role to an address. Requirements: - the caller should have the collection role.\"},\"grantTokenRole(uint256,uint8,address)\":{\"details\":\"Grants the token role to an address. Requirements: - the caller should have the token role.\"},\"hasCollectionRole(uint8,address)\":{\"details\":\"Returns `True` if a certain address has the collection role.\"},\"hasTokenRole(uint256,uint8,address)\":{\"details\":\"Returns `True` if a certain address has the token role.\"},\"initialize(string,string)\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mint(address,string,string,string,string,string,string)\":{\"details\":\"Mints a token and returns a tokenId. If the `tokenId` has not been minted before, and the `to` address is not zero, emits a {Transfer} event. Requirements: - the caller must have ``collectionOwner``'s admin role.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"revokeCollectionRole(uint8,address)\":{\"details\":\"Revokes the collection role of an address. Requirements: - the caller should have the collection role.\"},\"revokeTokenRole(uint256,uint8,address)\":{\"details\":\"Revokes the token role of an address. Requirements: - the caller should have the token role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenBuild(uint256,string,string)\":{\"details\":\"Adds a new build to a minted `tokenId`'s builds mapping. May emit a {NewBuild} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenDescription(uint256,string)\":{\"details\":\"Updates the `description` metadata field of a minted `tokenId`. May emit a {NewTokenDescription} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenENS(uint256,string)\":{\"details\":\"Updates the `ENS` metadata field of a minted `tokenId`. May emit a {NewTokenENS} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenExternalURL(uint256,string)\":{\"details\":\"Updates the `externalURL` metadata field of a minted `tokenId`. May emit a {NewTokenExternalURL} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"setTokenName(uint256,string)\":{\"details\":\"Updates the `name` metadata field of a minted `tokenId`. May emit a {NewTokenName} event. Requirements: - the tokenId must be minted and valid. - the sender must have the `tokenController` role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the token metadata associated with the `tokenId`. Returns a based64 encoded string value of the URI. Requirements: - the tokenId must be minted and valid.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FleekERC721.sol\":\"FleekERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"@openzeppelin/contracts/utils/Base64.sol\":{\"keccak256\":\"0x5f3461639fe20794cfb4db4a6d8477388a15b2e70a018043084b7c4bedfa8136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77e5309e2cc4cdc3395214edb0ff43ff5a5f7373f5a425383e540f6fab530f96\",\"dweb:/ipfs/QmTV8DZ9knJDa3b5NPBFQqjvTzodyZVjRUg5mx5A99JPLJ\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/FleekAccessControl.sol\":{\"keccak256\":\"0x99b148a767f42ff1bfcee7ff68d8b11ece6aa78a96a5637c9b5e1ddc1cca7b34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff6dd367c0f3894c2c3fcd28cd02ccce384bea6dc23baa7b03041be237cc64ae\",\"dweb:/ipfs/QmWGtcukpo1ApXiVxkAfMJ3u8Be9quLXBzExcXr6KJ4gmL\"]},\"contracts/FleekERC721.sol\":{\"keccak256\":\"0x34e2da162e73cedb56c5fedc413604a79446535c2a16c2212b562c78a911241c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d184d08e7803189d6f8091135d3550d1d528cadad0c6f52c973cc45a0260bc0\",\"dweb:/ipfs/Qma3FAvNVf6EQUqV1fdEZ126ZUQRttSSMEX3m9o4jqfHVW\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 6,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_initialized",
"offset": 0,
"slot": "0",
"type": "t_uint8"
},
{
"astId": 9,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_initializing",
"offset": 1,
"slot": "0",
"type": "t_bool"
},
{
"astId": 1624,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "__gap",
"offset": 0,
"slot": "1",
"type": "t_array(t_uint256)50_storage"
},
{
"astId": 1843,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "__gap",
"offset": 0,
"slot": "51",
"type": "t_array(t_uint256)50_storage"
},
{
"astId": 197,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_name",
"offset": 0,
"slot": "101",
"type": "t_string_storage"
},
{
"astId": 199,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_symbol",
"offset": 0,
"slot": "102",
"type": "t_string_storage"
},
{
"astId": 203,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_owners",
"offset": 0,
"slot": "103",
"type": "t_mapping(t_uint256,t_address)"
},
{
"astId": 207,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_balances",
"offset": 0,
"slot": "104",
"type": "t_mapping(t_address,t_uint256)"
},
{
"astId": 211,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_tokenApprovals",
"offset": 0,
"slot": "105",
"type": "t_mapping(t_uint256,t_address)"
},
{
"astId": 217,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_operatorApprovals",
"offset": 0,
"slot": "106",
"type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
},
{
"astId": 1137,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "__gap",
"offset": 0,
"slot": "107",
"type": "t_array(t_uint256)44_storage"
},
{
"astId": 3946,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_collectionRolesVersion",
"offset": 0,
"slot": "151",
"type": "t_struct(Counter)2774_storage"
},
{
"astId": 3954,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_collectionRoles",
"offset": 0,
"slot": "152",
"type": "t_mapping(t_uint256,t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage))"
},
{
"astId": 3959,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_tokenRolesVersion",
"offset": 0,
"slot": "153",
"type": "t_mapping(t_uint256,t_struct(Counter)2774_storage)"
},
{
"astId": 3969,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_tokenRoles",
"offset": 0,
"slot": "154",
"type": "t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage)))"
},
{
"astId": 4614,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_tokenIds",
"offset": 0,
"slot": "155",
"type": "t_struct(Counter)2774_storage"
},
{
"astId": 4619,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_apps",
"offset": 0,
"slot": "156",
"type": "t_mapping(t_uint256,t_struct(App)4606_storage)"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_array(t_address)dyn_storage": {
"base": "t_address",
"encoding": "dynamic_array",
"label": "address[]",
"numberOfBytes": "32"
},
"t_array(t_uint256)44_storage": {
"base": "t_uint256",
"encoding": "inplace",
"label": "uint256[44]",
"numberOfBytes": "1408"
},
"t_array(t_uint256)50_storage": {
"base": "t_uint256",
"encoding": "inplace",
"label": "uint256[50]",
"numberOfBytes": "1600"
},
"t_bool": {
"encoding": "inplace",
"label": "bool",
"numberOfBytes": "1"
},
"t_enum(Roles)3895": {
"encoding": "inplace",
"label": "enum FleekAccessControl.Roles",
"numberOfBytes": "1"
},
"t_mapping(t_address,t_bool)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => bool)",
"numberOfBytes": "32",
"value": "t_bool"
},
"t_mapping(t_address,t_mapping(t_address,t_bool))": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => mapping(address => bool))",
"numberOfBytes": "32",
"value": "t_mapping(t_address,t_bool)"
},
"t_mapping(t_address,t_uint256)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage)": {
"encoding": "mapping",
"key": "t_enum(Roles)3895",
"label": "mapping(enum FleekAccessControl.Roles => struct FleekAccessControl.Role)",
"numberOfBytes": "32",
"value": "t_struct(Role)3943_storage"
},
"t_mapping(t_uint256,t_address)": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => address)",
"numberOfBytes": "32",
"value": "t_address"
},
"t_mapping(t_uint256,t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage))": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => mapping(enum FleekAccessControl.Roles => struct FleekAccessControl.Role))",
"numberOfBytes": "32",
"value": "t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage)"
},
"t_mapping(t_uint256,t_mapping(t_uint256,t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage)))": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => mapping(uint256 => mapping(enum FleekAccessControl.Roles => struct FleekAccessControl.Role)))",
"numberOfBytes": "32",
"value": "t_mapping(t_uint256,t_mapping(t_enum(Roles)3895,t_struct(Role)3943_storage))"
},
"t_mapping(t_uint256,t_struct(App)4606_storage)": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => struct FleekERC721.App)",
"numberOfBytes": "32",
"value": "t_struct(App)4606_storage"
},
"t_mapping(t_uint256,t_struct(Build)4611_storage)": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => struct FleekERC721.Build)",
"numberOfBytes": "32",
"value": "t_struct(Build)4611_storage"
},
"t_mapping(t_uint256,t_struct(Counter)2774_storage)": {
"encoding": "mapping",
"key": "t_uint256",
"label": "mapping(uint256 => struct Counters.Counter)",
"numberOfBytes": "32",
"value": "t_struct(Counter)2774_storage"
},
"t_string_storage": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
},
"t_struct(App)4606_storage": {
"encoding": "inplace",
"label": "struct FleekERC721.App",
"members": [
{
"astId": 4592,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "name",
"offset": 0,
"slot": "0",
"type": "t_string_storage"
},
{
"astId": 4594,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "description",
"offset": 0,
"slot": "1",
"type": "t_string_storage"
},
{
"astId": 4596,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "externalURL",
"offset": 0,
"slot": "2",
"type": "t_string_storage"
},
{
"astId": 4598,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "ENS",
"offset": 0,
"slot": "3",
"type": "t_string_storage"
},
{
"astId": 4600,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "currentBuild",
"offset": 0,
"slot": "4",
"type": "t_uint256"
},
{
"astId": 4605,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "builds",
"offset": 0,
"slot": "5",
"type": "t_mapping(t_uint256,t_struct(Build)4611_storage)"
}
],
"numberOfBytes": "192"
},
"t_struct(Build)4611_storage": {
"encoding": "inplace",
"label": "struct FleekERC721.Build",
"members": [
{
"astId": 4608,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "commitHash",
"offset": 0,
"slot": "0",
"type": "t_string_storage"
},
{
"astId": 4610,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "gitRepository",
"offset": 0,
"slot": "1",
"type": "t_string_storage"
}
],
"numberOfBytes": "64"
},
"t_struct(Counter)2774_storage": {
"encoding": "inplace",
"label": "struct Counters.Counter",
"members": [
{
"astId": 2773,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "_value",
"offset": 0,
"slot": "0",
"type": "t_uint256"
}
],
"numberOfBytes": "32"
},
"t_struct(Role)3943_storage": {
"encoding": "inplace",
"label": "struct FleekAccessControl.Role",
"members": [
{
"astId": 3939,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "indexes",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_address,t_uint256)"
},
{
"astId": 3942,
"contract": "contracts/FleekERC721.sol:FleekERC721",
"label": "members",
"offset": 0,
"slot": "1",
"type": "t_array(t_address)dyn_storage"
}
],
"numberOfBytes": "64"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
},
"t_uint8": {
"encoding": "inplace",
"label": "uint8",
"numberOfBytes": "1"
}
}
}
}