{"matchId":"30342871","creationMatch":"match","runtimeMatch":"match","verifiedAt":"2026-06-02T13:41:37Z","creationBytecode":{"onchainBytecode":"0x60c060408190526006805460ff1916905562001607388190039081908339810160408190526200002f9162000469565b60408051808201909152600b81526a0436f6d6d6f6e42455032360ac1b60208201528190833387898c8c620000643362000178565b6004620000728382620005ca565b506005620000818282620005ca565b50505060ff1660805280620000dd5760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a206361702069732030000000000000000000000060448201526064015b60405180910390fd5b60a05260405163346386e160e01b81526001600160a01b0385169063346386e19034906200011490879087908790600401620006c4565b6000604051808303818588803b1580156200012e57600080fd5b505af115801562000143573d6000803e3d6000fd5b50505050505050505062000167620001606200017460201b60201c565b84620001c8565b505050505050506200072e565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001d2620001e2565b620001de828262000240565b5050565b6000546001600160a01b031633146200023e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000d4565b565b60a051816200024e60035490565b6200025a919062000706565b1115620002aa5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401620000d4565b620001de82826001600160a01b038216620003085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000d4565b80600360008282546200031c919062000706565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001de600083835b505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b257818101518382015260200162000398565b50506000910152565b600082601f830112620003cd57600080fd5b81516001600160401b0380821115620003ea57620003ea6200037f565b604051601f8301601f19908116603f011681019082821181831017156200041557620004156200037f565b816040528381528660208588010111156200042f57600080fd5b6200044284602083016020890162000395565b9695505050505050565b80516001600160a01b03811681146200046457600080fd5b919050565b600080600080600080600060e0888a0312156200048557600080fd5b87516001600160401b03808211156200049d57600080fd5b620004ab8b838c01620003bb565b985060208a0151915080821115620004c257600080fd5b620004d08b838c01620003bb565b975060408a0151915060ff82168214620004e957600080fd5b60608a015160808b015160a08c01519398509096509450808211156200050e57600080fd5b506200051d8a828b01620003bb565b9250506200052e60c089016200044c565b905092959891949750929550565b600181811c908216806200055157607f821691505b6020821081036200057257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620005a15750805b601f850160051c820191505b81811015620005c257828155600101620005ad565b505050505050565b81516001600160401b03811115620005e657620005e66200037f565b620005fe81620005f784546200053c565b8462000578565b602080601f8311600181146200063657600084156200061d5750858301515b600019600386901b1c1916600185901b178555620005c2565b600085815260208120601f198616915b82811015620006675788860151825594840194600190910190840162000646565b5085821015620006865787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452620006b081602086016020860162000395565b601f01601f19169290920160200192915050565b606081526000620006d9606083018662000696565b8281036020840152620006ed818662000696565b91505060018060a01b0383166040830152949350505050565b808201808211156200072857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051610eac6200075b600039600081816101d80152610b17015260006101ac0152610eac6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014f565b7f0000000000000000000000000000000000000000000000000000000000000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000000000000000000000000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea2646970667358221220b26ac8d62caaa7e9249f573433d87fd4e25988b754c1937e714603ec5bab7ed264736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000115eec47f6cf7e35000000000000000000000000000000000000000000000000034f086f3b33b684000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000075eee167d2e5cc675f5b07f95d6a93e7088d6c3400000000000000000000000000000000000000000000000000000000000000064e4f4e4b5943000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e4b594300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101a444589bef2c627837cda09311f1ca688a5962fd1e89d267eeb4993d645e2868ec1922b2c0ec2f374a7ad2f1fb2ace27eb4b04ddb9967ca1c5b6b9e51329011b00000000000000000000000000000000000000000000000000000000000000","recompiledBytecode":"0x60c060408190526006805460ff1916905562001607388190039081908339810160408190526200002f9162000469565b60408051808201909152600b81526a0436f6d6d6f6e42455032360ac1b60208201528190833387898c8c620000643362000178565b6004620000728382620005ca565b506005620000818282620005ca565b50505060ff1660805280620000dd5760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a206361702069732030000000000000000000000060448201526064015b60405180910390fd5b60a05260405163346386e160e01b81526001600160a01b0385169063346386e19034906200011490879087908790600401620006c4565b6000604051808303818588803b1580156200012e57600080fd5b505af115801562000143573d6000803e3d6000fd5b50505050505050505062000167620001606200017460201b60201c565b84620001c8565b505050505050506200072e565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001d2620001e2565b620001de828262000240565b5050565b6000546001600160a01b031633146200023e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000d4565b565b60a051816200024e60035490565b6200025a919062000706565b1115620002aa5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401620000d4565b620001de82826001600160a01b038216620003085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000d4565b80600360008282546200031c919062000706565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001de600083835b505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b257818101518382015260200162000398565b50506000910152565b600082601f830112620003cd57600080fd5b81516001600160401b0380821115620003ea57620003ea6200037f565b604051601f8301601f19908116603f011681019082821181831017156200041557620004156200037f565b816040528381528660208588010111156200042f57600080fd5b6200044284602083016020890162000395565b9695505050505050565b80516001600160a01b03811681146200046457600080fd5b919050565b600080600080600080600060e0888a0312156200048557600080fd5b87516001600160401b03808211156200049d57600080fd5b620004ab8b838c01620003bb565b985060208a0151915080821115620004c257600080fd5b620004d08b838c01620003bb565b975060408a0151915060ff82168214620004e957600080fd5b60608a015160808b015160a08c01519398509096509450808211156200050e57600080fd5b506200051d8a828b01620003bb565b9250506200052e60c089016200044c565b905092959891949750929550565b600181811c908216806200055157607f821691505b6020821081036200057257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620005a15750805b601f850160051c820191505b81811015620005c257828155600101620005ad565b505050505050565b81516001600160401b03811115620005e657620005e66200037f565b620005fe81620005f784546200053c565b8462000578565b602080601f8311600181146200063657600084156200061d5750858301515b600019600386901b1c1916600185901b178555620005c2565b600085815260208120601f198616915b82811015620006675788860151825594840194600190910190840162000646565b5085821015620006865787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452620006b081602086016020860162000395565b601f01601f19169290920160200192915050565b606081526000620006d9606083018662000696565b8281036020840152620006ed818662000696565b91505060018060a01b0383166040830152949350505050565b808201808211156200072857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051610eac6200075b600039600081816101d80152610b17015260006101ac0152610eac6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014f565b7f0000000000000000000000000000000000000000000000000000000000000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000000000000000000000000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","sourceMap":"26417:1413:0:-:0;;;;;24325:37;;;-1:-1:-1;;24325:37:0;;;26526:483;;;;;;;;26417:1413;26526:483;;;;;;;;;;:::i;:::-;26039:204;;;;;;;;;;;;-1:-1:-1;;;26039:204:0;;;;26894:12;;26923:10;794;26866:4;26834:9;26795:5;26802:7;1882:32;794:10;1882:18;:32::i;:::-;9261:5;:13;9269:5;9261;:13;:::i;:::-;-1:-1:-1;9285:7:0;:17;9295:7;9285;:17;:::i;:::-;-1:-1:-1;;;23902:21:0;;;;21098:8;21090:42;;;;-1:-1:-1;;;21090:42:0;;5233:2:1;21090:42:0;;;5215:21:1;5272:2;5252:18;;;5245:30;5311:23;5291:18;;;5284:51;5352:18;;21090:42:0;;;;;;;;;21143:11;;26163:72;;-1:-1:-1;;;26163:72:0;;-1:-1:-1;;;;;26163:22:0;;;;;26193:9;;26163:72;;26204:11;;26217:9;;26228:6;;26163:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26039:204;;;;26965:36:::4;26971:12;:10;;;:12;;:::i;:::-;26985:15:::0;26965:5:::4;:36::i;:::-;26526:483:::0;;;;;;;26417:1413;;714:98;794:10;;714:98::o;3428:191::-;3502:16;3521:6;;-1:-1:-1;;;;;3538:17:0;;;-1:-1:-1;;;;;;3538:17:0;;;;;;3571:40;;3521:6;;;;;;;3571:40;;3502:16;3571:40;3491:128;3428:191;:::o;27422:143::-;2047:13;:11;:13::i;:::-;27529:28:::1;27541:7:::0;27550:6;27529:11:::1;:28::i;:::-;27422:143:::0;;:::o;2326:132::-;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;794:10;2390:23;2382:68;;;;-1:-1:-1;;;2382:68:0;;6342:2:1;2382:68:0;;;6324:21:1;;;6361:18;;;6354:30;6420:34;6400:18;;;6393:62;6472:18;;2382:68:0;6140:356:1;2382:68:0;2326:132::o;21387:207::-;21317:4;;21502:6;21480:19;10588:12;;;10500:108;21480:19;:28;;;;:::i;:::-;:37;;21472:75;;;;-1:-1:-1;;;21472:75:0;;6930:2:1;21472:75:0;;;6912:21:1;6969:2;6949:18;;;6942:30;7008:27;6988:18;;;6981:55;7053:18;;21472:75:0;6728:349:1;21472:75:0;21558:28;21570:7;21579:6;-1:-1:-1;;;;;16074:21:0;;16066:65;;;;-1:-1:-1;;;16066:65:0;;7284:2:1;16066:65:0;;;7266:21:1;7323:2;7303:18;;;7296:30;7362:33;7342:18;;;7335:61;7413:18;;16066:65:0;7082:355:1;16066:65:0;16222:6;16206:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16377:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;16432:37;7588:25:1;;;16432:37:0;;7561:18:1;16432:37:0;;;;;;;16482:48;16510:1;16514:7;16523:6;19708:125;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:1;370:16;;363:27;146:250::o;401:699::-;455:5;508:3;501:4;493:6;489:17;485:27;475:55;;526:1;523;516:12;475:55;549:13;;-1:-1:-1;;;;;611:10:1;;;608:36;;;624:18;;:::i;:::-;699:2;693:9;667:2;753:13;;-1:-1:-1;;749:22:1;;;773:2;745:31;741:40;729:53;;;797:18;;;817:22;;;794:46;791:72;;;843:18;;:::i;:::-;883:10;879:2;872:22;918:2;910:6;903:18;964:3;957:4;952:2;944:6;940:15;936:26;933:35;930:55;;;981:1;978;971:12;930:55;994:76;1067:2;1060:4;1052:6;1048:17;1041:4;1033:6;1029:17;994:76;:::i;:::-;1088:6;401:699;-1:-1:-1;;;;;;401:699:1:o;1105:185::-;1192:13;;-1:-1:-1;;;;;1234:31:1;;1224:42;;1214:70;;1280:1;1277;1270:12;1214:70;1105:185;;;:::o;1295:1142::-;1454:6;1462;1470;1478;1486;1494;1502;1555:3;1543:9;1534:7;1530:23;1526:33;1523:53;;;1572:1;1569;1562:12;1523:53;1599:16;;-1:-1:-1;;;;;1664:14:1;;;1661:34;;;1691:1;1688;1681:12;1661:34;1714:61;1767:7;1758:6;1747:9;1743:22;1714:61;:::i;:::-;1704:71;;1821:2;1810:9;1806:18;1800:25;1784:41;;1850:2;1840:8;1837:16;1834:36;;;1866:1;1863;1856:12;1834:36;1889:63;1944:7;1933:8;1922:9;1918:24;1889:63;:::i;:::-;1879:73;;1995:2;1984:9;1980:18;1974:25;1961:38;;2039:4;2032:5;2028:16;2021:5;2018:27;2008:55;;2059:1;2056;2049:12;2008:55;2127:2;2112:18;;2106:25;2171:3;2156:19;;2150:26;2222:3;2207:19;;2201:26;2082:5;;-1:-1:-1;2106:25:1;;-1:-1:-1;2150:26:1;-1:-1:-1;2239:16:1;;;2236:36;;;2268:1;2265;2258:12;2236:36;;2291:63;2346:7;2335:8;2324:9;2320:24;2291:63;:::i;:::-;2281:73;;;2373:58;2426:3;2415:9;2411:19;2373:58;:::i;:::-;2363:68;;1295:1142;;;;;;;;;;:::o;2442:380::-;2521:1;2517:12;;;;2564;;;2585:61;;2639:4;2631:6;2627:17;2617:27;;2585:61;2692:2;2684:6;2681:14;2661:18;2658:38;2655:161;;2738:10;2733:3;2729:20;2726:1;2719:31;2773:4;2770:1;2763:15;2801:4;2798:1;2791:15;2655:161;;2442:380;;;:::o;2953:545::-;3055:2;3050:3;3047:11;3044:448;;;3091:1;3116:5;3112:2;3105:17;3161:4;3157:2;3147:19;3231:2;3219:10;3215:19;3212:1;3208:27;3202:4;3198:38;3267:4;3255:10;3252:20;3249:47;;;-1:-1:-1;3290:4:1;3249:47;3345:2;3340:3;3336:12;3333:1;3329:20;3323:4;3319:31;3309:41;;3400:82;3418:2;3411:5;3408:13;3400:82;;;3463:17;;;3444:1;3433:13;3400:82;;;3404:3;;;2953:545;;;:::o;3674:1352::-;3794:10;;-1:-1:-1;;;;;3816:30:1;;3813:56;;;3849:18;;:::i;:::-;3878:97;3968:6;3928:38;3960:4;3954:11;3928:38;:::i;:::-;3922:4;3878:97;:::i;:::-;4030:4;;4094:2;4083:14;;4111:1;4106:663;;;;4813:1;4830:6;4827:89;;;-1:-1:-1;4882:19:1;;;4876:26;4827:89;-1:-1:-1;;3631:1:1;3627:11;;;3623:24;3619:29;3609:40;3655:1;3651:11;;;3606:57;4929:81;;4076:944;;4106:663;2900:1;2893:14;;;2937:4;2924:18;;-1:-1:-1;;4142:20:1;;;4260:236;4274:7;4271:1;4268:14;4260:236;;;4363:19;;;4357:26;4342:42;;4455:27;;;;4423:1;4411:14;;;;4290:19;;4260:236;;;4264:3;4524:6;4515:7;4512:19;4509:201;;;4585:19;;;4579:26;-1:-1:-1;;4668:1:1;4664:14;;;4680:3;4660:24;4656:37;4652:42;4637:58;4622:74;;4509:201;-1:-1:-1;;;;;4756:1:1;4740:14;;;4736:22;4723:36;;-1:-1:-1;3674:1352:1:o;5381:271::-;5423:3;5461:5;5455:12;5488:6;5483:3;5476:19;5504:76;5573:6;5566:4;5561:3;5557:14;5550:4;5543:5;5539:16;5504:76;:::i;:::-;5634:2;5613:15;-1:-1:-1;;5609:29:1;5600:39;;;;5641:4;5596:50;;5381:271;-1:-1:-1;;5381:271:1:o;5657:478::-;5880:2;5869:9;5862:21;5843:4;5906:45;5947:2;5936:9;5932:18;5924:6;5906:45;:::i;:::-;5999:9;5991:6;5987:22;5982:2;5971:9;5967:18;5960:50;6027:33;6053:6;6045;6027:33;:::i;:::-;6019:41;;;6125:1;6121;6116:3;6112:11;6108:19;6100:6;6096:32;6091:2;6080:9;6076:18;6069:60;5657:478;;;;;;:::o;6501:222::-;6566:9;;;6587:10;;;6584:133;;;6639:10;6634:3;6630:20;6627:1;6620:31;6674:4;6671:1;6664:15;6702:4;6699:1;6692:15;6584:133;6501:222;;;;:::o;7442:177::-;26417:1413:0;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","offset":5586}},"transformations":[{"id":"1","type":"replace","offset":5586,"reason":"cborAuxdata"},{"type":"insert","offset":5639,"reason":"constructorArguments"}],"transformationValues":{"cborAuxdata":{"1":"0xa2646970667358221220b26ac8d62caaa7e9249f573433d87fd4e25988b754c1937e714603ec5bab7ed264736f6c63430008130033"},"constructorArguments":"0x00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000115eec47f6cf7e35000000000000000000000000000000000000000000000000034f086f3b33b684000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000075eee167d2e5cc675f5b07f95d6a93e7088d6c3400000000000000000000000000000000000000000000000000000000000000064e4f4e4b5943000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e4b594300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101a444589bef2c627837cda09311f1ca688a5962fd1e89d267eeb4993d645e2868ec1922b2c0ec2f374a7ad2f1fb2ace27eb4b04ddb9967ca1c5b6b9e51329011b00000000000000000000000000000000000000000000000000000000000000"}},"runtimeBytecode":{"onchainBytecode":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000001216815260200161014f565b7f000000000000000000000000000000000000000000115eec47f6cf7e35000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000115eec47f6cf7e3500000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea2646970667358221220b26ac8d62caaa7e9249f573433d87fd4e25988b754c1937e714603ec5bab7ed264736f6c63430008130033","recompiledBytecode":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014f565b7f0000000000000000000000000000000000000000000000000000000000000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000000000000000000000000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","sourceMap":"26417:1413:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24730:98;24804:16;;;;24730:98;;;179:14:1;;172:22;154:41;;142:2;127:18;24730:98:0;;;;;;;;9380:100;;;:::i;:::-;;;;;;;:::i;11731:201::-;;;;;;:::i;:::-;;:::i;10500:108::-;10588:12;;10500:108;;;1342:25:1;;;1330:2;1315:18;10500:108:0;1196:177:1;12512:295:0;;;;;;:::i;:::-;;:::i;27017:129::-;;;1883:4:1;24022:9:0;1871:17:1;1853:36;;1841:2;1826:18;27017:129:0;1711:184:1;21246:83:0;21317:4;21246:83;;13216:238;;;;;;:::i;:::-;;:::i;25140:105::-;;;;;;:::i;:::-;;:::i;:::-;;22182:91;;;;;;:::i;:::-;;:::i;10671:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10772:18:0;10745:7;10772:18;;;:9;:18;;;;;;;10671:127;2809:103;;;:::i;22592:164::-;;;;;;:::i;:::-;;:::i;25438:77::-;;;:::i;23330:100::-;23388:7;2234:6;-1:-1:-1;;;;;2234:6:0;23330:100;;;-1:-1:-1;;;;;2440:32:1;;;2422:51;;2410:2;2395:18;23330:100:0;2276:203:1;2161:87:0;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;2161:87;;9599:104;;;:::i;13957:436::-;;;;;;:::i;:::-;;:::i;11004:193::-;;;;;;:::i;:::-;;:::i;11260:151::-;;;;;;:::i;:::-;;:::i;3067:201::-;;;;;;:::i;:::-;;:::i;9380:100::-;9434:13;9467:5;9460:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9380:100;:::o;11731:201::-;11814:4;794:10;11870:32;794:10;11886:7;11895:6;11870:8;:32::i;:::-;11920:4;11913:11;;;11731:201;;;;;:::o;12512:295::-;12643:4;794:10;12701:38;12717:4;794:10;12732:6;12701:15;:38::i;:::-;12750:27;12760:4;12766:2;12770:6;12750:9;:27::i;:::-;-1:-1:-1;12795:4:0;;12512:295;-1:-1:-1;;;;12512:295:0:o;13216:238::-;13304:4;794:10;13360:64;794:10;13376:7;13413:10;13385:25;794:10;13376:7;13385:9;:25::i;:::-;:38;;;;:::i;:::-;13360:8;:64::i;25140:105::-;24582:16;;;;24581:17;24573:64;;;;-1:-1:-1;;;24573:64:0;;;;;;;:::i;:::-;;;;;;;;;25215:22:::1;25221:7;25230:6;25215:5;:22::i;:::-;25140:105:::0;;:::o;22182:91::-;22238:27;794:10;22258:6;22238:5;:27::i;:::-;22182:91;:::o;2809:103::-;2047:13;:11;:13::i;:::-;2874:30:::1;2901:1;2874:18;:30::i;:::-;2809:103::o:0;22592:164::-;22669:46;22685:7;794:10;22708:6;22669:15;:46::i;:::-;22726:22;22732:7;22741:6;22726:5;:22::i;25438:77::-;24582:16;;;;24581:17;24573:64;;;;-1:-1:-1;;;24573:64:0;;;;;;;:::i;:::-;25491:16:::1;:14;:16::i;9599:104::-:0;9655:13;9688:7;9681:14;;;;;:::i;13957:436::-;14050:4;794:10;14050:4;14133:25;794:10;14150:7;14133:9;:25::i;:::-;14106:52;;14197:15;14177:16;:35;;14169:85;;;;-1:-1:-1;;;14169:85:0;;3966:2:1;14169:85:0;;;3948:21:1;4005:2;3985:18;;;3978:30;4044:34;4024:18;;;4017:62;-1:-1:-1;;;4095:18:1;;;4088:35;4140:19;;14169:85:0;3764:401:1;14169:85:0;14290:60;14299:5;14306:7;14334:15;14315:16;:34;14290:8;:60::i;11004:193::-;11083:4;794:10;11139:28;794:10;11156:2;11160:6;11139:9;:28::i;11260:151::-;-1:-1:-1;;;;;11376:18:0;;;11349:7;11376:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11260:151::o;3067:201::-;2047:13;:11;:13::i;:::-;-1:-1:-1;;;;;3156:22:0;::::1;3148:73;;;::::0;-1:-1:-1;;;3148:73:0;;4372:2:1;3148:73:0::1;::::0;::::1;4354:21:1::0;4411:2;4391:18;;;4384:30;4450:34;4430:18;;;4423:62;-1:-1:-1;;;4501:18:1;;;4494:36;4547:19;;3148:73:0::1;4170:402:1::0;3148:73:0::1;3232:28;3251:8;3232:18;:28::i;17984:380::-:0;-1:-1:-1;;;;;18120:19:0;;18112:68;;;;-1:-1:-1;;;18112:68:0;;4779:2:1;18112:68:0;;;4761:21:1;4818:2;4798:18;;;4791:30;4857:34;4837:18;;;4830:62;-1:-1:-1;;;4908:18:1;;;4901:34;4952:19;;18112:68:0;4577:400:1;18112:68:0;-1:-1:-1;;;;;18199:21:0;;18191:68;;;;-1:-1:-1;;;18191:68:0;;5184:2:1;18191:68:0;;;5166:21:1;5223:2;5203:18;;;5196:30;5262:34;5242:18;;;5235:62;-1:-1:-1;;;5313:18:1;;;5306:32;5355:19;;18191:68:0;4982:398:1;18191:68:0;-1:-1:-1;;;;;18272:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18324:32;;1342:25:1;;;18324:32:0;;1315:18:1;18324:32:0;;;;;;;;17984:380;;;:::o;18655:453::-;18790:24;18817:25;18827:5;18834:7;18817:9;:25::i;:::-;18790:52;;-1:-1:-1;;18857:16:0;:37;18853:248;;18939:6;18919:16;:26;;18911:68;;;;-1:-1:-1;;;18911:68:0;;5587:2:1;18911:68:0;;;5569:21:1;5626:2;5606:18;;;5599:30;5665:31;5645:18;;;5638:59;5714:18;;18911:68:0;5385:353:1;18911:68:0;19023:51;19032:5;19039:7;19067:6;19048:16;:25;19023:8;:51::i;:::-;18779:329;18655:453;;;:::o;14863:840::-;-1:-1:-1;;;;;14994:18:0;;14986:68;;;;-1:-1:-1;;;14986:68:0;;5945:2:1;14986:68:0;;;5927:21:1;5984:2;5964:18;;;5957:30;6023:34;6003:18;;;5996:62;-1:-1:-1;;;6074:18:1;;;6067:35;6119:19;;14986:68:0;5743:401:1;14986:68:0;-1:-1:-1;;;;;15073:16:0;;15065:64;;;;-1:-1:-1;;;15065:64:0;;6351:2:1;15065:64:0;;;6333:21:1;6390:2;6370:18;;;6363:30;6429:34;6409:18;;;6402:62;-1:-1:-1;;;6480:18:1;;;6473:33;6523:19;;15065:64:0;6149:399:1;15065:64:0;-1:-1:-1;;;;;15215:15:0;;15193:19;15215:15;;;:9;:15;;;;;;15249:21;;;;15241:72;;;;-1:-1:-1;;;15241:72:0;;6755:2:1;15241:72:0;;;6737:21:1;6794:2;6774:18;;;6767:30;6833:34;6813:18;;;6806:62;-1:-1:-1;;;6884:18:1;;;6877:36;6930:19;;15241:72:0;6553:402:1;15241:72:0;-1:-1:-1;;;;;15349:15:0;;;;;;;:9;:15;;;;;;15367:20;;;15349:38;;15567:13;;;;;;;;;;:23;;;;;;15619:26;;;;;;15381:6;1342:25:1;;1330:2;1315:18;;1196:177;15619:26:0;;;;;;;;15658:37;16871:675;27422:143;2047:13;:11;:13::i;:::-;27529:28:::1;27541:7;27550:6;27529:11;:28::i;16871:675::-:0;-1:-1:-1;;;;;16955:21:0;;16947:67;;;;-1:-1:-1;;;16947:67:0;;7162:2:1;16947:67:0;;;7144:21:1;7201:2;7181:18;;;7174:30;7240:34;7220:18;;;7213:62;-1:-1:-1;;;7291:18:1;;;7284:31;7332:19;;16947:67:0;6960:397:1;16947:67:0;-1:-1:-1;;;;;17114:18:0;;17089:22;17114:18;;;:9;:18;;;;;;17151:24;;;;17143:71;;;;-1:-1:-1;;;17143:71:0;;7564:2:1;17143:71:0;;;7546:21:1;7603:2;7583:18;;;7576:30;7642:34;7622:18;;;7615:62;-1:-1:-1;;;7693:18:1;;;7686:32;7735:19;;17143:71:0;7362:398:1;17143:71:0;-1:-1:-1;;;;;17250:18:0;;;;;;:9;:18;;;;;;;;17271:23;;;17250:44;;17389:12;:22;;;;;;;17440:37;1342:25:1;;;17250:18:0;;;17440:37;;1315:18:1;17440:37:0;1196:177:1;2326:132:0;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;794:10;2390:23;2382:68;;;;-1:-1:-1;;;2382:68:0;;7967:2:1;2382:68:0;;;7949:21:1;;;7986:18;;;7979:30;8045:34;8025:18;;;8018:62;8097:18;;2382:68:0;7765:356:1;3428:191:0;3502:16;3521:6;;-1:-1:-1;;;;;3538:17:0;;;-1:-1:-1;;;;;;3538:17:0;;;;;;3571:40;;3521:6;;;;;;;3571:40;;3502:16;3571:40;3491:128;3428:191;:::o;27732:95::-;2047:13;:11;:13::i;:::-;27797:22:::1;:20;:22::i;21387:207::-:0;21317:4;21502:6;21480:19;10588:12;;;10500:108;21480:19;:28;;;;:::i;:::-;:37;;21472:75;;;;-1:-1:-1;;;21472:75:0;;8328:2:1;21472:75:0;;;8310:21:1;8367:2;8347:18;;;8340:30;8406:27;8386:18;;;8379:55;8451:18;;21472:75:0;8126:349:1;21472:75:0;21558:28;21570:7;21579:6;21558:11;:28::i;25591:117::-;25645:16;:23;;-1:-1:-1;;25645:23:0;25664:4;25645:23;;;25686:14;;;;25645:16;;25686:14;25591:117::o;15990:548::-;-1:-1:-1;;;;;16074:21:0;;16066:65;;;;-1:-1:-1;;;16066:65:0;;8682:2:1;16066:65:0;;;8664:21:1;8721:2;8701:18;;;8694:30;8760:33;8740:18;;;8733:61;8811:18;;16066:65:0;8480:355:1;16066:65:0;16222:6;16206:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16377:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;16432:37;1342:25:1;;;16432:37:0;;1315:18:1;16432:37:0;;;;;;;25140:105;;:::o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:173::-;827:20;;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;856:70;759:173;;;:::o;937:254::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1105:29;1124:9;1105:29;:::i;:::-;1095:39;1181:2;1166:18;;;;1153:32;;-1:-1:-1;;;937:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:1:o;2484:260::-;2552:6;2560;2613:2;2601:9;2592:7;2588:23;2584:32;2581:52;;;2629:1;2626;2619:12;2581:52;2652:29;2671:9;2652:29;:::i;:::-;2642:39;;2700:38;2734:2;2723:9;2719:18;2700:38;:::i;:::-;2690:48;;2484:260;;;;;:::o;2749:380::-;2828:1;2824:12;;;;2871;;;2892:61;;2946:4;2938:6;2934:17;2924:27;;2892:61;2999:2;2991:6;2988:14;2968:18;2965:38;2962:161;;3045:10;3040:3;3036:20;3033:1;3026:31;3080:4;3077:1;3070:15;3108:4;3105:1;3098:15;2962:161;;2749:380;;;:::o;3134:222::-;3199:9;;;3220:10;;;3217:133;;;3272:10;3267:3;3263:20;3260:1;3253:31;3307:4;3304:1;3297:15;3335:4;3332:1;3325:15;3361:398;3563:2;3545:21;;;3602:2;3582:18;;;3575:30;3641:34;3636:2;3621:18;;3614:62;-1:-1:-1;;;3707:2:1;3692:18;;3685:32;3749:3;3734:19;;3361:398::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","offset":3703}},"immutableReferences":{"821":[{"start":472,"length":32},{"start":2839,"length":32}],"956":[{"start":428,"length":32}]},"transformations":[{"id":"821","type":"replace","offset":472,"reason":"immutable"},{"id":"821","type":"replace","offset":2839,"reason":"immutable"},{"id":"956","type":"replace","offset":428,"reason":"immutable"},{"id":"1","type":"replace","offset":3703,"reason":"cborAuxdata"}],"transformationValues":{"immutables":{"821":"0x000000000000000000000000000000000000000000115eec47f6cf7e35000000","956":"0x0000000000000000000000000000000000000000000000000000000000000012"},"cborAuxdata":{"1":"0xa2646970667358221220b26ac8d62caaa7e9249f573433d87fd4e25988b754c1937e714603ec5bab7ed264736f6c63430008130033"}}},"deployment":{"transactionHash":"0xdeb4c3ec2d27a06e6279b8f3dfdd5dde3fe062ba1bf21a45f1b643c4e118f4aa","blockNumber":"27064364","transactionIndex":"21","deployer":"0x469387715Ca2889846Fc0C4Bb1603053E387D09A"},"sources":{"CommonBEP20.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\n// File: @openzeppelin/contracts/utils/Context.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Provides information about the current execution context, including the\r\n * sender of the transaction and its data. While these are generally available\r\n * via msg.sender and msg.data, they should not be accessed in such a direct\r\n * manner, since when dealing with meta-transactions the account sending and\r\n * paying for execution may not be the actual sender (as far as an application\r\n * is concerned).\r\n *\r\n * This contract is only required for intermediate, library-like contracts.\r\n */\r\nabstract contract Context {\r\n    function _msgSender() internal view virtual returns (address) {\r\n        return msg.sender;\r\n    }\r\n\r\n    function _msgData() internal view virtual returns (bytes calldata) {\r\n        return msg.data;\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/access/Ownable.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Contract module which provides a basic access control mechanism, where\r\n * there is an account (an owner) that can be granted exclusive access to\r\n * specific functions.\r\n *\r\n * By default, the owner account will be the one that deploys the contract. This\r\n * can later be changed with {transferOwnership}.\r\n *\r\n * This module is used through inheritance. It will make available the modifier\r\n * `onlyOwner`, which can be applied to your functions to restrict their use to\r\n * the owner.\r\n */\r\nabstract contract Ownable is Context {\r\n    address private _owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Initializes the contract setting the deployer as the initial owner.\r\n     */\r\n    constructor() {\r\n        _transferOwnership(_msgSender());\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if called by any account other than the owner.\r\n     */\r\n    modifier onlyOwner() {\r\n        _checkOwner();\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the current owner.\r\n     */\r\n    function owner() public view virtual returns (address) {\r\n        return _owner;\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if the sender is not the owner.\r\n     */\r\n    function _checkOwner() internal view virtual {\r\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\r\n    }\r\n\r\n    /**\r\n     * @dev Leaves the contract without owner. It will not be possible to call\r\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\r\n     *\r\n     * NOTE: Renouncing ownership will leave the contract without an owner,\r\n     * thereby removing any functionality that is only available to the owner.\r\n     */\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        _transferOwnership(address(0));\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        _transferOwnership(newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Internal function without access restriction.\r\n     */\r\n    function _transferOwnership(address newOwner) internal virtual {\r\n        address oldOwner = _owner;\r\n        _owner = newOwner;\r\n        emit OwnershipTransferred(oldOwner, newOwner);\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/IERC20.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Interface of the ERC20 standard as defined in the EIP.\r\n */\r\ninterface IERC20 {\r\n    /**\r\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\r\n     * another (`to`).\r\n     *\r\n     * Note that `value` may be zero.\r\n     */\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n    /**\r\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\r\n     * a call to {approve}. `value` is the new allowance.\r\n     */\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens in existence.\r\n     */\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens owned by `account`.\r\n     */\r\n    function balanceOf(address account) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from the caller's account to `to`.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transfer(address to, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Returns the remaining number of tokens that `spender` will be\r\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\r\n     * zero by default.\r\n     *\r\n     * This value changes when {approve} or {transferFrom} are called.\r\n     */\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\r\n     * that someone may use both the old and the new allowance by unfortunate\r\n     * transaction ordering. One possible solution to mitigate this race\r\n     * condition is to first reduce the spender's allowance to 0 and set the\r\n     * desired value afterwards:\r\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\r\n     *\r\n     * Emits an {Approval} event.\r\n     */\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from `from` to `to` using the\r\n     * allowance mechanism. `amount` is then deducted from the caller's\r\n     * allowance.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transferFrom(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) external returns (bool);\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Interface for the optional metadata functions from the ERC20 standard.\r\n *\r\n * _Available since v4.1._\r\n */\r\ninterface IERC20Metadata is IERC20 {\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() external view returns (string memory);\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token.\r\n     */\r\n    function symbol() external view returns (string memory);\r\n\r\n    /**\r\n     * @dev Returns the decimals places of the token.\r\n     */\r\n    function decimals() external view returns (uint8);\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/ERC20.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n\r\n/**\r\n * @dev Implementation of the {IERC20} interface.\r\n *\r\n * This implementation is agnostic to the way tokens are created. This means\r\n * that a supply mechanism has to be added in a derived contract using {_mint}.\r\n * For a generic mechanism see {ERC20PresetMinterPauser}.\r\n *\r\n * TIP: For a detailed writeup see our guide\r\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\r\n * to implement supply mechanisms].\r\n *\r\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\r\n * instead returning `false` on failure. This behavior is nonetheless\r\n * conventional and does not conflict with the expectations of ERC20\r\n * applications.\r\n *\r\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\n * This allows applications to reconstruct the allowance for all accounts just\r\n * by listening to said events. Other implementations of the EIP may not emit\r\n * these events, as it isn't required by the specification.\r\n *\r\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\n * functions have been added to mitigate the well-known issues around setting\r\n * allowances. See {IERC20-approve}.\r\n */\r\ncontract ERC20 is Context, IERC20, IERC20Metadata {\r\n    mapping(address => uint256) private _balances;\r\n\r\n    mapping(address => mapping(address => uint256)) private _allowances;\r\n\r\n    uint256 private _totalSupply;\r\n\r\n    string private _name;\r\n    string private _symbol;\r\n\r\n    /**\r\n     * @dev Sets the values for {name} and {symbol}.\r\n     *\r\n     * The default value of {decimals} is 18. To select a different value for\r\n     * {decimals} you should overload it.\r\n     *\r\n     * All two of these values are immutable: they can only be set once during\r\n     * construction.\r\n     */\r\n    constructor(string memory name_, string memory symbol_) {\r\n        _name = name_;\r\n        _symbol = symbol_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() public view virtual override returns (string memory) {\r\n        return _name;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token, usually a shorter version of the\r\n     * name.\r\n     */\r\n    function symbol() public view virtual override returns (string memory) {\r\n        return _symbol;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of decimals used to get its user representation.\r\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\r\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n     *\r\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\r\n     * overridden;\r\n     *\r\n     * NOTE: This information is only used for _display_ purposes: it in\r\n     * no way affects any of the arithmetic of the contract, including\r\n     * {IERC20-balanceOf} and {IERC20-transfer}.\r\n     */\r\n    function decimals() public view virtual override returns (uint8) {\r\n        return 18;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-totalSupply}.\r\n     */\r\n    function totalSupply() public view virtual override returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-balanceOf}.\r\n     */\r\n    function balanceOf(address account) public view virtual override returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transfer}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `to` cannot be the zero address.\r\n     * - the caller must have a balance of at least `amount`.\r\n     */\r\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\r\n        address owner = _msgSender();\r\n        _transfer(owner, to, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-allowance}.\r\n     */\r\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\r\n        return _allowances[owner][spender];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-approve}.\r\n     *\r\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\r\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\r\n        address owner = _msgSender();\r\n        _approve(owner, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transferFrom}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\n     * required by the EIP. See the note at the beginning of {ERC20}.\r\n     *\r\n     * NOTE: Does not update the allowance if the current allowance\r\n     * is the maximum `uint256`.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `from` and `to` cannot be the zero address.\r\n     * - `from` must have a balance of at least `amount`.\r\n     * - the caller must have allowance for ``from``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function transferFrom(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) public virtual override returns (bool) {\r\n        address spender = _msgSender();\r\n        _spendAllowance(from, spender, amount);\r\n        _transfer(from, to, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\r\n        address owner = _msgSender();\r\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     * - `spender` must have allowance for the caller of at least\r\n     * `subtractedValue`.\r\n     */\r\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\r\n        address owner = _msgSender();\r\n        uint256 currentAllowance = allowance(owner, spender);\r\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\r\n        unchecked {\r\n            _approve(owner, spender, currentAllowance - subtractedValue);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Moves `amount` of tokens from `from` to `to`.\r\n     *\r\n     * This internal function is equivalent to {transfer}, and can be used to\r\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `from` cannot be the zero address.\r\n     * - `to` cannot be the zero address.\r\n     * - `from` must have a balance of at least `amount`.\r\n     */\r\n    function _transfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        require(from != address(0), \"ERC20: transfer from the zero address\");\r\n        require(to != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        _beforeTokenTransfer(from, to, amount);\r\n\r\n        uint256 fromBalance = _balances[from];\r\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\r\n        unchecked {\r\n            _balances[from] = fromBalance - amount;\r\n            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\r\n            // decrementing then incrementing.\r\n            _balances[to] += amount;\r\n        }\r\n\r\n        emit Transfer(from, to, amount);\r\n\r\n        _afterTokenTransfer(from, to, amount);\r\n    }\r\n\r\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\r\n     * the total supply.\r\n     *\r\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     */\r\n    function _mint(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: mint to the zero address\");\r\n\r\n        _beforeTokenTransfer(address(0), account, amount);\r\n\r\n        _totalSupply += amount;\r\n        unchecked {\r\n            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\r\n            _balances[account] += amount;\r\n        }\r\n        emit Transfer(address(0), account, amount);\r\n\r\n        _afterTokenTransfer(address(0), account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, reducing the\r\n     * total supply.\r\n     *\r\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     * - `account` must have at least `amount` tokens.\r\n     */\r\n    function _burn(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: burn from the zero address\");\r\n\r\n        _beforeTokenTransfer(account, address(0), amount);\r\n\r\n        uint256 accountBalance = _balances[account];\r\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\r\n        unchecked {\r\n            _balances[account] = accountBalance - amount;\r\n            // Overflow not possible: amount <= accountBalance <= totalSupply.\r\n            _totalSupply -= amount;\r\n        }\r\n\r\n        emit Transfer(account, address(0), amount);\r\n\r\n        _afterTokenTransfer(account, address(0), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\r\n     *\r\n     * This internal function is equivalent to `approve`, and can be used to\r\n     * e.g. set automatic allowances for certain subsystems, etc.\r\n     *\r\n     * Emits an {Approval} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `owner` cannot be the zero address.\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function _approve(\r\n        address owner,\r\n        address spender,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        require(owner != address(0), \"ERC20: approve from the zero address\");\r\n        require(spender != address(0), \"ERC20: approve to the zero address\");\r\n\r\n        _allowances[owner][spender] = amount;\r\n        emit Approval(owner, spender, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\r\n     *\r\n     * Does not update the allowance amount in case of infinite allowance.\r\n     * Revert if not enough allowance is available.\r\n     *\r\n     * Might emit an {Approval} event.\r\n     */\r\n    function _spendAllowance(\r\n        address owner,\r\n        address spender,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        uint256 currentAllowance = allowance(owner, spender);\r\n        if (currentAllowance != type(uint256).max) {\r\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\r\n            unchecked {\r\n                _approve(owner, spender, currentAllowance - amount);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Hook that is called before any transfer of tokens. This includes\r\n     * minting and burning.\r\n     *\r\n     * Calling conditions:\r\n     *\r\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\r\n     * will be transferred to `to`.\r\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\r\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\r\n     * - `from` and `to` are never both zero.\r\n     *\r\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\r\n     */\r\n    function _beforeTokenTransfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {}\r\n\r\n    /**\r\n     * @dev Hook that is called after any transfer of tokens. This includes\r\n     * minting and burning.\r\n     *\r\n     * Calling conditions:\r\n     *\r\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\r\n     * has been transferred to `to`.\r\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\r\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\r\n     * - `from` and `to` are never both zero.\r\n     *\r\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\r\n     */\r\n    function _afterTokenTransfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {}\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Capped.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Extension of {ERC20} that adds a cap to the supply of tokens.\r\n */\r\nabstract contract ERC20Capped is ERC20 {\r\n    uint256 private immutable _cap;\r\n\r\n    /**\r\n     * @dev Sets the value of the `cap`. This value is immutable, it can only be\r\n     * set once during construction.\r\n     */\r\n    constructor(uint256 cap_) {\r\n        require(cap_ > 0, \"ERC20Capped: cap is 0\");\r\n        _cap = cap_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the cap on the token's total supply.\r\n     */\r\n    function cap() public view virtual returns (uint256) {\r\n        return _cap;\r\n    }\r\n\r\n    /**\r\n     * @dev See {ERC20-_mint}.\r\n     */\r\n    function _mint(address account, uint256 amount) internal virtual override {\r\n        require(ERC20.totalSupply() + amount <= cap(), \"ERC20Capped: cap exceeded\");\r\n        super._mint(account, amount);\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n/**\r\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\r\n * tokens and those that they have an allowance for, in a way that can be\r\n * recognized off-chain (via event analysis).\r\n */\r\nabstract contract ERC20Burnable is Context, ERC20 {\r\n    /**\r\n     * @dev Destroys `amount` tokens from the caller.\r\n     *\r\n     * See {ERC20-_burn}.\r\n     */\r\n    function burn(uint256 amount) public virtual {\r\n        _burn(_msgSender(), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, deducting from the caller's\r\n     * allowance.\r\n     *\r\n     * See {ERC20-_burn} and {ERC20-allowance}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - the caller must have allowance for ``accounts``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function burnFrom(address account, uint256 amount) public virtual {\r\n        _spendAllowance(account, _msgSender(), amount);\r\n        _burn(account, amount);\r\n    }\r\n}\r\n\r\n// File: contracts/token/BEP20/lib/IBEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title IBEP20\r\n * @dev Interface of the BEP standard.\r\n */\r\ninterface IBEP20 is IERC20 {\r\n    /**\r\n     * @dev Returns the token owner.\r\n     */\r\n    function getOwner() external view returns (address);\r\n}\r\n\r\n// File: contracts/token/BEP20/lib/BEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n/**\r\n * @title BEP20\r\n * @dev Implementation of the {IBEP20} interface.\r\n */\r\nabstract contract BEP20 is Ownable, ERC20, IBEP20 {\r\n    /**\r\n     * @dev See {IBEP20-getOwner}.\r\n     */\r\n    function getOwner() public view virtual override returns (address) {\r\n        return owner();\r\n    }\r\n}\r\n\r\n// File: contracts/token/ERC20/extensions/ERC20Decimals.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title ERC20Decimals\r\n * @dev Extension of {ERC20} that adds decimals storage slot.\r\n */\r\nabstract contract ERC20Decimals is ERC20 {\r\n    uint8 private immutable _decimals;\r\n\r\n    /**\r\n     * @dev Sets the value of the `decimals`. This value is immutable, it can only be\r\n     * set once during construction.\r\n     */\r\n    constructor(uint8 decimals_) {\r\n        _decimals = decimals_;\r\n    }\r\n\r\n    function decimals() public view virtual override returns (uint8) {\r\n        return _decimals;\r\n    }\r\n}\r\n\r\n// File: contracts/token/ERC20/extensions/ERC20Mintable.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title ERC20Mintable\r\n * @dev Extension of {ERC20} that adds a minting behaviour.\r\n */\r\nabstract contract ERC20Mintable is ERC20 {\r\n    // indicates if minting is finished\r\n    bool private _mintingFinished = false;\r\n\r\n    /**\r\n     * @dev Emitted during finish minting\r\n     */\r\n    event MintFinished();\r\n\r\n    /**\r\n     * @dev Tokens can be minted only before minting finished.\r\n     */\r\n    modifier canMint() {\r\n        require(!_mintingFinished, \"ERC20Mintable: minting is finished\");\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @return if minting is finished or not.\r\n     */\r\n    function mintingFinished() external view returns (bool) {\r\n        return _mintingFinished;\r\n    }\r\n\r\n    /**\r\n     * @dev Function to mint tokens.\r\n     *\r\n     * WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts.\r\n     *\r\n     * @param account The address that will receive the minted tokens\r\n     * @param amount The amount of tokens to mint\r\n     */\r\n    function mint(address account, uint256 amount) external canMint {\r\n        _mint(account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     *\r\n     * WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts.\r\n     */\r\n    function finishMinting() external canMint {\r\n        _finishMinting();\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     */\r\n    function _finishMinting() internal virtual {\r\n        _mintingFinished = true;\r\n\r\n        emit MintFinished();\r\n    }\r\n}\r\n\r\n// File: contracts/service/ServicePayer.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\ninterface IPayable {\r\n    function pay(string memory serviceName, bytes memory signature, address wallet) external payable;\r\n}\r\n\r\n/**\r\n * @title ServicePayer\r\n * @dev Implementation of the ServicePayer\r\n */\r\nabstract contract ServicePayer {\r\n    constructor(address payable receiver, string memory serviceName, bytes memory signature, address wallet) payable {\r\n        IPayable(receiver).pay{value: msg.value}(serviceName, signature, wallet);\r\n    }\r\n}\r\n\r\n// File: contracts/token/BEP20/CommonBEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @title CommonBEP20\r\n * @dev Implementation of the CommonBEP20\r\n */\r\ncontract CommonBEP20 is BEP20, ERC20Decimals, ERC20Capped, ERC20Mintable, ERC20Burnable, ServicePayer {\r\n    constructor(\r\n        string memory name_,\r\n        string memory symbol_,\r\n        uint8 decimals_,\r\n        uint256 cap_,\r\n        uint256 initialBalance_,\r\n        bytes memory signature_,\r\n        address payable feeReceiver_\r\n    )\r\n        payable\r\n        ERC20(name_, symbol_)\r\n        ERC20Decimals(decimals_)\r\n        ERC20Capped(cap_)\r\n        ServicePayer(feeReceiver_, \"CommonBEP20\", signature_, _msgSender())\r\n    {\r\n        _mint(_msgSender(), initialBalance_);\r\n    }\r\n\r\n    function decimals() public view virtual override(ERC20, ERC20Decimals) returns (uint8) {\r\n        return super.decimals();\r\n    }\r\n\r\n    /**\r\n     * @dev Function to mint tokens.\r\n     *\r\n     * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.\r\n     *\r\n     * @param account The address that will receive the minted tokens\r\n     * @param amount The amount of tokens to mint\r\n     */\r\n    function _mint(address account, uint256 amount) internal override(ERC20, ERC20Capped) onlyOwner {\r\n        super._mint(account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     *\r\n     * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}.\r\n     */\r\n    function _finishMinting() internal override onlyOwner {\r\n        super._finishMinting();\r\n    }\r\n}\r\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.19+commit.7dd6d404","compilerSettings":{"libraries":{},"optimizer":{"runs":200,"enabled":true}},"name":"CommonBEP20","fullyQualifiedName":"CommonBEP20.sol:CommonBEP20"},"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"},{"name":"cap_","type":"uint256","internalType":"uint256"},{"name":"initialBalance_","type":"uint256","internalType":"uint256"},{"name":"signature_","type":"bytes","internalType":"bytes"},{"name":"feeReceiver_","type":"address","internalType":"address payable"}],"stateMutability":"payable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"MintFinished","type":"event","inputs":[],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"allowance","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"burn","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"burnFrom","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"cap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"decreaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"finishMinting","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"getOwner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"increaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"mint","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"mintingFinished","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"cap_","type":"uint256"},{"internalType":"uint256","name":"initialBalance_","type":"uint256"},{"internalType":"bytes","name":"signature_","type":"bytes"},{"internalType":"address payable","name":"feeReceiver_","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","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":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finishMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the CommonBEP20","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"MintFinished()":{"details":"Emitted during finish minting"},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys `amount` tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`."},"cap()":{"details":"Returns the cap on the token's total supply."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"finishMinting()":{"details":"Function to stop minting new tokens. WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts."},"getOwner()":{"details":"See {IBEP20-getOwner}."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"mint(address,uint256)":{"details":"Function to mint tokens. WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts.","params":{"account":"The address that will receive the minted tokens","amount":"The amount of tokens to mint"}},"mintingFinished()":{"returns":{"_0":"if minting is finished or not."}},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"CommonBEP20","version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CommonBEP20.sol":"CommonBEP20"},"evmVersion":"paris","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"CommonBEP20.sol":{"keccak256":"0x08b1a9191d5e637ecff2485779b525b7cb82cf037340c42dd7f33df05ab58535","license":"MIT","urls":["bzz-raw://306277cddf45b32b9105a48735de48bb50755a29f3f1ecf5e16327a6c718068d","dweb:/ipfs/QmQ831rnwXXjqneW5VNGCJgFqs4imrjiUFWC37vSYxe2X9"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_string_storage":{"label":"string","encoding":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":27,"label":"_owner","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"1","type":"t_mapping(t_address,t_uint256)","astId":244,"label":"_balances","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":250,"label":"_allowances","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"3","type":"t_uint256","astId":252,"label":"_totalSupply","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"4","type":"t_string_storage","astId":254,"label":"_name","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"5","type":"t_string_storage","astId":256,"label":"_symbol","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"6","type":"t_bool","astId":984,"label":"_mintingFinished","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","methods":{},"version":1},"devdoc":{"kind":"dev","title":"CommonBEP20","events":{"MintFinished()":{"details":"Emitted during finish minting"},"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"details":"Implementation of the CommonBEP20","methods":{"cap()":{"details":"Returns the cap on the token's total supply."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"getOwner()":{"details":"See {IBEP20-getOwner}."},"burn(uint256)":{"details":"Destroys `amount` tokens from the caller. See {ERC20-_burn}."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"finishMinting()":{"details":"Function to stop minting new tokens. WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts."},"mintingFinished()":{"returns":{"_0":"if minting is finished or not."}},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"mint(address,uint256)":{"params":{"amount":"The amount of tokens to mint","account":"The address that will receive the minted tokens"},"details":"Function to mint tokens. WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"burnFrom(address,uint256)":{"details":"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"sourceIds":{"CommonBEP20.sol":{"id":0}},"additionalInput":null,"stdJsonInput":{"sources":{"CommonBEP20.sol":{"content":"// SPDX-License-Identifier: MIT\r\n\r\n// File: @openzeppelin/contracts/utils/Context.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Provides information about the current execution context, including the\r\n * sender of the transaction and its data. While these are generally available\r\n * via msg.sender and msg.data, they should not be accessed in such a direct\r\n * manner, since when dealing with meta-transactions the account sending and\r\n * paying for execution may not be the actual sender (as far as an application\r\n * is concerned).\r\n *\r\n * This contract is only required for intermediate, library-like contracts.\r\n */\r\nabstract contract Context {\r\n    function _msgSender() internal view virtual returns (address) {\r\n        return msg.sender;\r\n    }\r\n\r\n    function _msgData() internal view virtual returns (bytes calldata) {\r\n        return msg.data;\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/access/Ownable.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Contract module which provides a basic access control mechanism, where\r\n * there is an account (an owner) that can be granted exclusive access to\r\n * specific functions.\r\n *\r\n * By default, the owner account will be the one that deploys the contract. This\r\n * can later be changed with {transferOwnership}.\r\n *\r\n * This module is used through inheritance. It will make available the modifier\r\n * `onlyOwner`, which can be applied to your functions to restrict their use to\r\n * the owner.\r\n */\r\nabstract contract Ownable is Context {\r\n    address private _owner;\r\n\r\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\r\n\r\n    /**\r\n     * @dev Initializes the contract setting the deployer as the initial owner.\r\n     */\r\n    constructor() {\r\n        _transferOwnership(_msgSender());\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if called by any account other than the owner.\r\n     */\r\n    modifier onlyOwner() {\r\n        _checkOwner();\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the address of the current owner.\r\n     */\r\n    function owner() public view virtual returns (address) {\r\n        return _owner;\r\n    }\r\n\r\n    /**\r\n     * @dev Throws if the sender is not the owner.\r\n     */\r\n    function _checkOwner() internal view virtual {\r\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\r\n    }\r\n\r\n    /**\r\n     * @dev Leaves the contract without owner. It will not be possible to call\r\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\r\n     *\r\n     * NOTE: Renouncing ownership will leave the contract without an owner,\r\n     * thereby removing any functionality that is only available to the owner.\r\n     */\r\n    function renounceOwnership() public virtual onlyOwner {\r\n        _transferOwnership(address(0));\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Can only be called by the current owner.\r\n     */\r\n    function transferOwnership(address newOwner) public virtual onlyOwner {\r\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\r\n        _transferOwnership(newOwner);\r\n    }\r\n\r\n    /**\r\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\r\n     * Internal function without access restriction.\r\n     */\r\n    function _transferOwnership(address newOwner) internal virtual {\r\n        address oldOwner = _owner;\r\n        _owner = newOwner;\r\n        emit OwnershipTransferred(oldOwner, newOwner);\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/IERC20.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Interface of the ERC20 standard as defined in the EIP.\r\n */\r\ninterface IERC20 {\r\n    /**\r\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\r\n     * another (`to`).\r\n     *\r\n     * Note that `value` may be zero.\r\n     */\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n\r\n    /**\r\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\r\n     * a call to {approve}. `value` is the new allowance.\r\n     */\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens in existence.\r\n     */\r\n    function totalSupply() external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Returns the amount of tokens owned by `account`.\r\n     */\r\n    function balanceOf(address account) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from the caller's account to `to`.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transfer(address to, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Returns the remaining number of tokens that `spender` will be\r\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\r\n     * zero by default.\r\n     *\r\n     * This value changes when {approve} or {transferFrom} are called.\r\n     */\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\r\n     * that someone may use both the old and the new allowance by unfortunate\r\n     * transaction ordering. One possible solution to mitigate this race\r\n     * condition is to first reduce the spender's allowance to 0 and set the\r\n     * desired value afterwards:\r\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\r\n     *\r\n     * Emits an {Approval} event.\r\n     */\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n\r\n    /**\r\n     * @dev Moves `amount` tokens from `from` to `to` using the\r\n     * allowance mechanism. `amount` is then deducted from the caller's\r\n     * allowance.\r\n     *\r\n     * Returns a boolean value indicating whether the operation succeeded.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     */\r\n    function transferFrom(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) external returns (bool);\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Interface for the optional metadata functions from the ERC20 standard.\r\n *\r\n * _Available since v4.1._\r\n */\r\ninterface IERC20Metadata is IERC20 {\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() external view returns (string memory);\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token.\r\n     */\r\n    function symbol() external view returns (string memory);\r\n\r\n    /**\r\n     * @dev Returns the decimals places of the token.\r\n     */\r\n    function decimals() external view returns (uint8);\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/ERC20.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n\r\n/**\r\n * @dev Implementation of the {IERC20} interface.\r\n *\r\n * This implementation is agnostic to the way tokens are created. This means\r\n * that a supply mechanism has to be added in a derived contract using {_mint}.\r\n * For a generic mechanism see {ERC20PresetMinterPauser}.\r\n *\r\n * TIP: For a detailed writeup see our guide\r\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\r\n * to implement supply mechanisms].\r\n *\r\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\r\n * instead returning `false` on failure. This behavior is nonetheless\r\n * conventional and does not conflict with the expectations of ERC20\r\n * applications.\r\n *\r\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\r\n * This allows applications to reconstruct the allowance for all accounts just\r\n * by listening to said events. Other implementations of the EIP may not emit\r\n * these events, as it isn't required by the specification.\r\n *\r\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\r\n * functions have been added to mitigate the well-known issues around setting\r\n * allowances. See {IERC20-approve}.\r\n */\r\ncontract ERC20 is Context, IERC20, IERC20Metadata {\r\n    mapping(address => uint256) private _balances;\r\n\r\n    mapping(address => mapping(address => uint256)) private _allowances;\r\n\r\n    uint256 private _totalSupply;\r\n\r\n    string private _name;\r\n    string private _symbol;\r\n\r\n    /**\r\n     * @dev Sets the values for {name} and {symbol}.\r\n     *\r\n     * The default value of {decimals} is 18. To select a different value for\r\n     * {decimals} you should overload it.\r\n     *\r\n     * All two of these values are immutable: they can only be set once during\r\n     * construction.\r\n     */\r\n    constructor(string memory name_, string memory symbol_) {\r\n        _name = name_;\r\n        _symbol = symbol_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the name of the token.\r\n     */\r\n    function name() public view virtual override returns (string memory) {\r\n        return _name;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the symbol of the token, usually a shorter version of the\r\n     * name.\r\n     */\r\n    function symbol() public view virtual override returns (string memory) {\r\n        return _symbol;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the number of decimals used to get its user representation.\r\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\r\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n     *\r\n     * Tokens usually opt for a value of 18, imitating the relationship between\r\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\r\n     * overridden;\r\n     *\r\n     * NOTE: This information is only used for _display_ purposes: it in\r\n     * no way affects any of the arithmetic of the contract, including\r\n     * {IERC20-balanceOf} and {IERC20-transfer}.\r\n     */\r\n    function decimals() public view virtual override returns (uint8) {\r\n        return 18;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-totalSupply}.\r\n     */\r\n    function totalSupply() public view virtual override returns (uint256) {\r\n        return _totalSupply;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-balanceOf}.\r\n     */\r\n    function balanceOf(address account) public view virtual override returns (uint256) {\r\n        return _balances[account];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transfer}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `to` cannot be the zero address.\r\n     * - the caller must have a balance of at least `amount`.\r\n     */\r\n    function transfer(address to, uint256 amount) public virtual override returns (bool) {\r\n        address owner = _msgSender();\r\n        _transfer(owner, to, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-allowance}.\r\n     */\r\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\r\n        return _allowances[owner][spender];\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-approve}.\r\n     *\r\n     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\r\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\r\n        address owner = _msgSender();\r\n        _approve(owner, spender, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev See {IERC20-transferFrom}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance. This is not\r\n     * required by the EIP. See the note at the beginning of {ERC20}.\r\n     *\r\n     * NOTE: Does not update the allowance if the current allowance\r\n     * is the maximum `uint256`.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `from` and `to` cannot be the zero address.\r\n     * - `from` must have a balance of at least `amount`.\r\n     * - the caller must have allowance for ``from``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function transferFrom(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) public virtual override returns (bool) {\r\n        address spender = _msgSender();\r\n        _spendAllowance(from, spender, amount);\r\n        _transfer(from, to, amount);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\r\n        address owner = _msgSender();\r\n        _approve(owner, spender, allowance(owner, spender) + addedValue);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\r\n     *\r\n     * This is an alternative to {approve} that can be used as a mitigation for\r\n     * problems described in {IERC20-approve}.\r\n     *\r\n     * Emits an {Approval} event indicating the updated allowance.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `spender` cannot be the zero address.\r\n     * - `spender` must have allowance for the caller of at least\r\n     * `subtractedValue`.\r\n     */\r\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\r\n        address owner = _msgSender();\r\n        uint256 currentAllowance = allowance(owner, spender);\r\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\r\n        unchecked {\r\n            _approve(owner, spender, currentAllowance - subtractedValue);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * @dev Moves `amount` of tokens from `from` to `to`.\r\n     *\r\n     * This internal function is equivalent to {transfer}, and can be used to\r\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\r\n     *\r\n     * Emits a {Transfer} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `from` cannot be the zero address.\r\n     * - `to` cannot be the zero address.\r\n     * - `from` must have a balance of at least `amount`.\r\n     */\r\n    function _transfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        require(from != address(0), \"ERC20: transfer from the zero address\");\r\n        require(to != address(0), \"ERC20: transfer to the zero address\");\r\n\r\n        _beforeTokenTransfer(from, to, amount);\r\n\r\n        uint256 fromBalance = _balances[from];\r\n        require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\r\n        unchecked {\r\n            _balances[from] = fromBalance - amount;\r\n            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\r\n            // decrementing then incrementing.\r\n            _balances[to] += amount;\r\n        }\r\n\r\n        emit Transfer(from, to, amount);\r\n\r\n        _afterTokenTransfer(from, to, amount);\r\n    }\r\n\r\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\r\n     * the total supply.\r\n     *\r\n     * Emits a {Transfer} event with `from` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     */\r\n    function _mint(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: mint to the zero address\");\r\n\r\n        _beforeTokenTransfer(address(0), account, amount);\r\n\r\n        _totalSupply += amount;\r\n        unchecked {\r\n            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\r\n            _balances[account] += amount;\r\n        }\r\n        emit Transfer(address(0), account, amount);\r\n\r\n        _afterTokenTransfer(address(0), account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, reducing the\r\n     * total supply.\r\n     *\r\n     * Emits a {Transfer} event with `to` set to the zero address.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `account` cannot be the zero address.\r\n     * - `account` must have at least `amount` tokens.\r\n     */\r\n    function _burn(address account, uint256 amount) internal virtual {\r\n        require(account != address(0), \"ERC20: burn from the zero address\");\r\n\r\n        _beforeTokenTransfer(account, address(0), amount);\r\n\r\n        uint256 accountBalance = _balances[account];\r\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\r\n        unchecked {\r\n            _balances[account] = accountBalance - amount;\r\n            // Overflow not possible: amount <= accountBalance <= totalSupply.\r\n            _totalSupply -= amount;\r\n        }\r\n\r\n        emit Transfer(account, address(0), amount);\r\n\r\n        _afterTokenTransfer(account, address(0), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\r\n     *\r\n     * This internal function is equivalent to `approve`, and can be used to\r\n     * e.g. set automatic allowances for certain subsystems, etc.\r\n     *\r\n     * Emits an {Approval} event.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - `owner` cannot be the zero address.\r\n     * - `spender` cannot be the zero address.\r\n     */\r\n    function _approve(\r\n        address owner,\r\n        address spender,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        require(owner != address(0), \"ERC20: approve from the zero address\");\r\n        require(spender != address(0), \"ERC20: approve to the zero address\");\r\n\r\n        _allowances[owner][spender] = amount;\r\n        emit Approval(owner, spender, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\r\n     *\r\n     * Does not update the allowance amount in case of infinite allowance.\r\n     * Revert if not enough allowance is available.\r\n     *\r\n     * Might emit an {Approval} event.\r\n     */\r\n    function _spendAllowance(\r\n        address owner,\r\n        address spender,\r\n        uint256 amount\r\n    ) internal virtual {\r\n        uint256 currentAllowance = allowance(owner, spender);\r\n        if (currentAllowance != type(uint256).max) {\r\n            require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\r\n            unchecked {\r\n                _approve(owner, spender, currentAllowance - amount);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Hook that is called before any transfer of tokens. This includes\r\n     * minting and burning.\r\n     *\r\n     * Calling conditions:\r\n     *\r\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\r\n     * will be transferred to `to`.\r\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\r\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\r\n     * - `from` and `to` are never both zero.\r\n     *\r\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\r\n     */\r\n    function _beforeTokenTransfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {}\r\n\r\n    /**\r\n     * @dev Hook that is called after any transfer of tokens. This includes\r\n     * minting and burning.\r\n     *\r\n     * Calling conditions:\r\n     *\r\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\r\n     * has been transferred to `to`.\r\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\r\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\r\n     * - `from` and `to` are never both zero.\r\n     *\r\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\r\n     */\r\n    function _afterTokenTransfer(\r\n        address from,\r\n        address to,\r\n        uint256 amount\r\n    ) internal virtual {}\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol\r\n\r\n\r\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Capped.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @dev Extension of {ERC20} that adds a cap to the supply of tokens.\r\n */\r\nabstract contract ERC20Capped is ERC20 {\r\n    uint256 private immutable _cap;\r\n\r\n    /**\r\n     * @dev Sets the value of the `cap`. This value is immutable, it can only be\r\n     * set once during construction.\r\n     */\r\n    constructor(uint256 cap_) {\r\n        require(cap_ > 0, \"ERC20Capped: cap is 0\");\r\n        _cap = cap_;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the cap on the token's total supply.\r\n     */\r\n    function cap() public view virtual returns (uint256) {\r\n        return _cap;\r\n    }\r\n\r\n    /**\r\n     * @dev See {ERC20-_mint}.\r\n     */\r\n    function _mint(address account, uint256 amount) internal virtual override {\r\n        require(ERC20.totalSupply() + amount <= cap(), \"ERC20Capped: cap exceeded\");\r\n        super._mint(account, amount);\r\n    }\r\n}\r\n\r\n// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\r\n\r\n\r\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n/**\r\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\r\n * tokens and those that they have an allowance for, in a way that can be\r\n * recognized off-chain (via event analysis).\r\n */\r\nabstract contract ERC20Burnable is Context, ERC20 {\r\n    /**\r\n     * @dev Destroys `amount` tokens from the caller.\r\n     *\r\n     * See {ERC20-_burn}.\r\n     */\r\n    function burn(uint256 amount) public virtual {\r\n        _burn(_msgSender(), amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Destroys `amount` tokens from `account`, deducting from the caller's\r\n     * allowance.\r\n     *\r\n     * See {ERC20-_burn} and {ERC20-allowance}.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - the caller must have allowance for ``accounts``'s tokens of at least\r\n     * `amount`.\r\n     */\r\n    function burnFrom(address account, uint256 amount) public virtual {\r\n        _spendAllowance(account, _msgSender(), amount);\r\n        _burn(account, amount);\r\n    }\r\n}\r\n\r\n// File: contracts/token/BEP20/lib/IBEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title IBEP20\r\n * @dev Interface of the BEP standard.\r\n */\r\ninterface IBEP20 is IERC20 {\r\n    /**\r\n     * @dev Returns the token owner.\r\n     */\r\n    function getOwner() external view returns (address);\r\n}\r\n\r\n// File: contracts/token/BEP20/lib/BEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n/**\r\n * @title BEP20\r\n * @dev Implementation of the {IBEP20} interface.\r\n */\r\nabstract contract BEP20 is Ownable, ERC20, IBEP20 {\r\n    /**\r\n     * @dev See {IBEP20-getOwner}.\r\n     */\r\n    function getOwner() public view virtual override returns (address) {\r\n        return owner();\r\n    }\r\n}\r\n\r\n// File: contracts/token/ERC20/extensions/ERC20Decimals.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title ERC20Decimals\r\n * @dev Extension of {ERC20} that adds decimals storage slot.\r\n */\r\nabstract contract ERC20Decimals is ERC20 {\r\n    uint8 private immutable _decimals;\r\n\r\n    /**\r\n     * @dev Sets the value of the `decimals`. This value is immutable, it can only be\r\n     * set once during construction.\r\n     */\r\n    constructor(uint8 decimals_) {\r\n        _decimals = decimals_;\r\n    }\r\n\r\n    function decimals() public view virtual override returns (uint8) {\r\n        return _decimals;\r\n    }\r\n}\r\n\r\n// File: contracts/token/ERC20/extensions/ERC20Mintable.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n/**\r\n * @title ERC20Mintable\r\n * @dev Extension of {ERC20} that adds a minting behaviour.\r\n */\r\nabstract contract ERC20Mintable is ERC20 {\r\n    // indicates if minting is finished\r\n    bool private _mintingFinished = false;\r\n\r\n    /**\r\n     * @dev Emitted during finish minting\r\n     */\r\n    event MintFinished();\r\n\r\n    /**\r\n     * @dev Tokens can be minted only before minting finished.\r\n     */\r\n    modifier canMint() {\r\n        require(!_mintingFinished, \"ERC20Mintable: minting is finished\");\r\n        _;\r\n    }\r\n\r\n    /**\r\n     * @return if minting is finished or not.\r\n     */\r\n    function mintingFinished() external view returns (bool) {\r\n        return _mintingFinished;\r\n    }\r\n\r\n    /**\r\n     * @dev Function to mint tokens.\r\n     *\r\n     * WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts.\r\n     *\r\n     * @param account The address that will receive the minted tokens\r\n     * @param amount The amount of tokens to mint\r\n     */\r\n    function mint(address account, uint256 amount) external canMint {\r\n        _mint(account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     *\r\n     * WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts.\r\n     */\r\n    function finishMinting() external canMint {\r\n        _finishMinting();\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     */\r\n    function _finishMinting() internal virtual {\r\n        _mintingFinished = true;\r\n\r\n        emit MintFinished();\r\n    }\r\n}\r\n\r\n// File: contracts/service/ServicePayer.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\ninterface IPayable {\r\n    function pay(string memory serviceName, bytes memory signature, address wallet) external payable;\r\n}\r\n\r\n/**\r\n * @title ServicePayer\r\n * @dev Implementation of the ServicePayer\r\n */\r\nabstract contract ServicePayer {\r\n    constructor(address payable receiver, string memory serviceName, bytes memory signature, address wallet) payable {\r\n        IPayable(receiver).pay{value: msg.value}(serviceName, signature, wallet);\r\n    }\r\n}\r\n\r\n// File: contracts/token/BEP20/CommonBEP20.sol\r\n\r\n\r\n\r\npragma solidity ^0.8.0;\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @title CommonBEP20\r\n * @dev Implementation of the CommonBEP20\r\n */\r\ncontract CommonBEP20 is BEP20, ERC20Decimals, ERC20Capped, ERC20Mintable, ERC20Burnable, ServicePayer {\r\n    constructor(\r\n        string memory name_,\r\n        string memory symbol_,\r\n        uint8 decimals_,\r\n        uint256 cap_,\r\n        uint256 initialBalance_,\r\n        bytes memory signature_,\r\n        address payable feeReceiver_\r\n    )\r\n        payable\r\n        ERC20(name_, symbol_)\r\n        ERC20Decimals(decimals_)\r\n        ERC20Capped(cap_)\r\n        ServicePayer(feeReceiver_, \"CommonBEP20\", signature_, _msgSender())\r\n    {\r\n        _mint(_msgSender(), initialBalance_);\r\n    }\r\n\r\n    function decimals() public view virtual override(ERC20, ERC20Decimals) returns (uint8) {\r\n        return super.decimals();\r\n    }\r\n\r\n    /**\r\n     * @dev Function to mint tokens.\r\n     *\r\n     * NOTE: restricting access to owner only. See {ERC20Mintable-mint}.\r\n     *\r\n     * @param account The address that will receive the minted tokens\r\n     * @param amount The amount of tokens to mint\r\n     */\r\n    function _mint(address account, uint256 amount) internal override(ERC20, ERC20Capped) onlyOwner {\r\n        super._mint(account, amount);\r\n    }\r\n\r\n    /**\r\n     * @dev Function to stop minting new tokens.\r\n     *\r\n     * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}.\r\n     */\r\n    function _finishMinting() internal override onlyOwner {\r\n        super._finishMinting();\r\n    }\r\n}\r\n"}},"language":"Solidity","settings":{"libraries":{},"optimizer":{"runs":200,"enabled":true}}},"stdJsonOutput":{"sources":{"CommonBEP20.sol":{"id":0}},"contracts":{"CommonBEP20.sol":{"CommonBEP20":{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"},{"name":"cap_","type":"uint256","internalType":"uint256"},{"name":"initialBalance_","type":"uint256","internalType":"uint256"},{"name":"signature_","type":"bytes","internalType":"bytes"},{"name":"feeReceiver_","type":"address","internalType":"address payable"}],"stateMutability":"payable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"MintFinished","type":"event","inputs":[],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"allowance","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"burn","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"burnFrom","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"cap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"decreaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"finishMinting","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"getOwner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"increaseAllowance","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"mint","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"mintingFinished","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"renounceOwnership","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferOwnership","type":"function","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"cap_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialBalance_\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature_\",\"type\":\"bytes\"},{\"internalType\":\"address payable\",\"name\":\"feeReceiver_\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MintFinished\",\"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\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the CommonBEP20\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"MintFinished()\":{\"details\":\"Emitted during finish minting\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"cap()\":{\"details\":\"Returns the cap on the token's total supply.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"finishMinting()\":{\"details\":\"Function to stop minting new tokens. WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts.\"},\"getOwner()\":{\"details\":\"See {IBEP20-getOwner}.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"mint(address,uint256)\":{\"details\":\"Function to mint tokens. WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts.\",\"params\":{\"account\":\"The address that will receive the minted tokens\",\"amount\":\"The amount of tokens to mint\"}},\"mintingFinished()\":{\"returns\":{\"_0\":\"if minting is finished or not.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"CommonBEP20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"CommonBEP20.sol\":\"CommonBEP20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"CommonBEP20.sol\":{\"keccak256\":\"0x08b1a9191d5e637ecff2485779b525b7cb82cf037340c42dd7f33df05ab58535\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://306277cddf45b32b9105a48735de48bb50755a29f3f1ecf5e16327a6c718068d\",\"dweb:/ipfs/QmQ831rnwXXjqneW5VNGCJgFqs4imrjiUFWC37vSYxe2X9\"]}},\"version\":1}","userdoc":{"kind":"user","methods":{},"version":1},"devdoc":{"kind":"dev","title":"CommonBEP20","events":{"MintFinished()":{"details":"Emitted during finish minting"},"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"details":"Implementation of the CommonBEP20","methods":{"cap()":{"details":"Returns the cap on the token's total supply."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"getOwner()":{"details":"See {IBEP20-getOwner}."},"burn(uint256)":{"details":"Destroys `amount` tokens from the caller. See {ERC20-_burn}."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"finishMinting()":{"details":"Function to stop minting new tokens. WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts."},"mintingFinished()":{"returns":{"_0":"if minting is finished or not."}},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"mint(address,uint256)":{"params":{"amount":"The amount of tokens to mint","account":"The address that will receive the minted tokens"},"details":"Function to mint tokens. WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"burnFrom(address,uint256)":{"details":"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_string_storage":{"label":"string","encoding":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"key":"t_address","label":"mapping(address => uint256)","value":"t_uint256","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"key":"t_address","label":"mapping(address => mapping(address => uint256))","value":"t_mapping(t_address,t_uint256)","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":27,"label":"_owner","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"1","type":"t_mapping(t_address,t_uint256)","astId":244,"label":"_balances","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))","astId":250,"label":"_allowances","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"3","type":"t_uint256","astId":252,"label":"_totalSupply","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"4","type":"t_string_storage","astId":254,"label":"_name","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"5","type":"t_string_storage","astId":256,"label":"_symbol","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"},{"slot":"6","type":"t_bool","astId":984,"label":"_mintingFinished","offset":0,"contract":"CommonBEP20.sol:CommonBEP20"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"60c060408190526006805460ff1916905562001607388190039081908339810160408190526200002f9162000469565b60408051808201909152600b81526a0436f6d6d6f6e42455032360ac1b60208201528190833387898c8c620000643362000178565b6004620000728382620005ca565b506005620000818282620005ca565b50505060ff1660805280620000dd5760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a206361702069732030000000000000000000000060448201526064015b60405180910390fd5b60a05260405163346386e160e01b81526001600160a01b0385169063346386e19034906200011490879087908790600401620006c4565b6000604051808303818588803b1580156200012e57600080fd5b505af115801562000143573d6000803e3d6000fd5b50505050505050505062000167620001606200017460201b60201c565b84620001c8565b505050505050506200072e565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001d2620001e2565b620001de828262000240565b5050565b6000546001600160a01b031633146200023e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000d4565b565b60a051816200024e60035490565b6200025a919062000706565b1115620002aa5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401620000d4565b620001de82826001600160a01b038216620003085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000d4565b80600360008282546200031c919062000706565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001de600083835b505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b257818101518382015260200162000398565b50506000910152565b600082601f830112620003cd57600080fd5b81516001600160401b0380821115620003ea57620003ea6200037f565b604051601f8301601f19908116603f011681019082821181831017156200041557620004156200037f565b816040528381528660208588010111156200042f57600080fd5b6200044284602083016020890162000395565b9695505050505050565b80516001600160a01b03811681146200046457600080fd5b919050565b600080600080600080600060e0888a0312156200048557600080fd5b87516001600160401b03808211156200049d57600080fd5b620004ab8b838c01620003bb565b985060208a0151915080821115620004c257600080fd5b620004d08b838c01620003bb565b975060408a0151915060ff82168214620004e957600080fd5b60608a015160808b015160a08c01519398509096509450808211156200050e57600080fd5b506200051d8a828b01620003bb565b9250506200052e60c089016200044c565b905092959891949750929550565b600181811c908216806200055157607f821691505b6020821081036200057257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037a57600081815260208120601f850160051c81016020861015620005a15750805b601f850160051c820191505b81811015620005c257828155600101620005ad565b505050505050565b81516001600160401b03811115620005e657620005e66200037f565b620005fe81620005f784546200053c565b8462000578565b602080601f8311600181146200063657600084156200061d5750858301515b600019600386901b1c1916600185901b178555620005c2565b600085815260208120601f198616915b82811015620006675788860151825594840194600190910190840162000646565b5085821015620006865787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008151808452620006b081602086016020860162000395565b601f01601f19169290920160200192915050565b606081526000620006d9606083018662000696565b8281036020840152620006ed818662000696565b91505060018060a01b0383166040830152949350505050565b808201808211156200072857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a051610eac6200075b600039600081816101d80152610b17015260006101ac0152610eac6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014f565b7f0000000000000000000000000000000000000000000000000000000000000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000000000000000000000000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","sourceMap":"26417:1413:0:-:0;;;;;24325:37;;;-1:-1:-1;;24325:37:0;;;26526:483;;;;;;;;26417:1413;26526:483;;;;;;;;;;:::i;:::-;26039:204;;;;;;;;;;;;-1:-1:-1;;;26039:204:0;;;;26894:12;;26923:10;794;26866:4;26834:9;26795:5;26802:7;1882:32;794:10;1882:18;:32::i;:::-;9261:5;:13;9269:5;9261;:13;:::i;:::-;-1:-1:-1;9285:7:0;:17;9295:7;9285;:17;:::i;:::-;-1:-1:-1;;;23902:21:0;;;;21098:8;21090:42;;;;-1:-1:-1;;;21090:42:0;;5233:2:1;21090:42:0;;;5215:21:1;5272:2;5252:18;;;5245:30;5311:23;5291:18;;;5284:51;5352:18;;21090:42:0;;;;;;;;;21143:11;;26163:72;;-1:-1:-1;;;26163:72:0;;-1:-1:-1;;;;;26163:22:0;;;;;26193:9;;26163:72;;26204:11;;26217:9;;26228:6;;26163:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26039:204;;;;26965:36:::4;26971:12;:10;;;:12;;:::i;:::-;26985:15:::0;26965:5:::4;:36::i;:::-;26526:483:::0;;;;;;;26417:1413;;714:98;794:10;;714:98::o;3428:191::-;3502:16;3521:6;;-1:-1:-1;;;;;3538:17:0;;;-1:-1:-1;;;;;;3538:17:0;;;;;;3571:40;;3521:6;;;;;;;3571:40;;3502:16;3571:40;3491:128;3428:191;:::o;27422:143::-;2047:13;:11;:13::i;:::-;27529:28:::1;27541:7:::0;27550:6;27529:11:::1;:28::i;:::-;27422:143:::0;;:::o;2326:132::-;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;794:10;2390:23;2382:68;;;;-1:-1:-1;;;2382:68:0;;6342:2:1;2382:68:0;;;6324:21:1;;;6361:18;;;6354:30;6420:34;6400:18;;;6393:62;6472:18;;2382:68:0;6140:356:1;2382:68:0;2326:132::o;21387:207::-;21317:4;;21502:6;21480:19;10588:12;;;10500:108;21480:19;:28;;;;:::i;:::-;:37;;21472:75;;;;-1:-1:-1;;;21472:75:0;;6930:2:1;21472:75:0;;;6912:21:1;6969:2;6949:18;;;6942:30;7008:27;6988:18;;;6981:55;7053:18;;21472:75:0;6728:349:1;21472:75:0;21558:28;21570:7;21579:6;-1:-1:-1;;;;;16074:21:0;;16066:65;;;;-1:-1:-1;;;16066:65:0;;7284:2:1;16066:65:0;;;7266:21:1;7323:2;7303:18;;;7296:30;7362:33;7342:18;;;7335:61;7413:18;;16066:65:0;7082:355:1;16066:65:0;16222:6;16206:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16377:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;16432:37;7588:25:1;;;16432:37:0;;7561:18:1;16432:37:0;;;;;;;16482:48;16510:1;16514:7;16523:6;19708:125;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:1;370:16;;363:27;146:250::o;401:699::-;455:5;508:3;501:4;493:6;489:17;485:27;475:55;;526:1;523;516:12;475:55;549:13;;-1:-1:-1;;;;;611:10:1;;;608:36;;;624:18;;:::i;:::-;699:2;693:9;667:2;753:13;;-1:-1:-1;;749:22:1;;;773:2;745:31;741:40;729:53;;;797:18;;;817:22;;;794:46;791:72;;;843:18;;:::i;:::-;883:10;879:2;872:22;918:2;910:6;903:18;964:3;957:4;952:2;944:6;940:15;936:26;933:35;930:55;;;981:1;978;971:12;930:55;994:76;1067:2;1060:4;1052:6;1048:17;1041:4;1033:6;1029:17;994:76;:::i;:::-;1088:6;401:699;-1:-1:-1;;;;;;401:699:1:o;1105:185::-;1192:13;;-1:-1:-1;;;;;1234:31:1;;1224:42;;1214:70;;1280:1;1277;1270:12;1214:70;1105:185;;;:::o;1295:1142::-;1454:6;1462;1470;1478;1486;1494;1502;1555:3;1543:9;1534:7;1530:23;1526:33;1523:53;;;1572:1;1569;1562:12;1523:53;1599:16;;-1:-1:-1;;;;;1664:14:1;;;1661:34;;;1691:1;1688;1681:12;1661:34;1714:61;1767:7;1758:6;1747:9;1743:22;1714:61;:::i;:::-;1704:71;;1821:2;1810:9;1806:18;1800:25;1784:41;;1850:2;1840:8;1837:16;1834:36;;;1866:1;1863;1856:12;1834:36;1889:63;1944:7;1933:8;1922:9;1918:24;1889:63;:::i;:::-;1879:73;;1995:2;1984:9;1980:18;1974:25;1961:38;;2039:4;2032:5;2028:16;2021:5;2018:27;2008:55;;2059:1;2056;2049:12;2008:55;2127:2;2112:18;;2106:25;2171:3;2156:19;;2150:26;2222:3;2207:19;;2201:26;2082:5;;-1:-1:-1;2106:25:1;;-1:-1:-1;2150:26:1;-1:-1:-1;2239:16:1;;;2236:36;;;2268:1;2265;2258:12;2236:36;;2291:63;2346:7;2335:8;2324:9;2320:24;2291:63;:::i;:::-;2281:73;;;2373:58;2426:3;2415:9;2411:19;2373:58;:::i;:::-;2363:68;;1295:1142;;;;;;;;;;:::o;2442:380::-;2521:1;2517:12;;;;2564;;;2585:61;;2639:4;2631:6;2627:17;2617:27;;2585:61;2692:2;2684:6;2681:14;2661:18;2658:38;2655:161;;2738:10;2733:3;2729:20;2726:1;2719:31;2773:4;2770:1;2763:15;2801:4;2798:1;2791:15;2655:161;;2442:380;;;:::o;2953:545::-;3055:2;3050:3;3047:11;3044:448;;;3091:1;3116:5;3112:2;3105:17;3161:4;3157:2;3147:19;3231:2;3219:10;3215:19;3212:1;3208:27;3202:4;3198:38;3267:4;3255:10;3252:20;3249:47;;;-1:-1:-1;3290:4:1;3249:47;3345:2;3340:3;3336:12;3333:1;3329:20;3323:4;3319:31;3309:41;;3400:82;3418:2;3411:5;3408:13;3400:82;;;3463:17;;;3444:1;3433:13;3400:82;;;3404:3;;;2953:545;;;:::o;3674:1352::-;3794:10;;-1:-1:-1;;;;;3816:30:1;;3813:56;;;3849:18;;:::i;:::-;3878:97;3968:6;3928:38;3960:4;3954:11;3928:38;:::i;:::-;3922:4;3878:97;:::i;:::-;4030:4;;4094:2;4083:14;;4111:1;4106:663;;;;4813:1;4830:6;4827:89;;;-1:-1:-1;4882:19:1;;;4876:26;4827:89;-1:-1:-1;;3631:1:1;3627:11;;;3623:24;3619:29;3609:40;3655:1;3651:11;;;3606:57;4929:81;;4076:944;;4106:663;2900:1;2893:14;;;2937:4;2924:18;;-1:-1:-1;;4142:20:1;;;4260:236;4274:7;4271:1;4268:14;4260:236;;;4363:19;;;4357:26;4342:42;;4455:27;;;;4423:1;4411:14;;;;4290:19;;4260:236;;;4264:3;4524:6;4515:7;4512:19;4509:201;;;4585:19;;;4579:26;-1:-1:-1;;4668:1:1;4664:14;;;4680:3;4660:24;4656:37;4652:42;4637:58;4622:74;;4509:201;-1:-1:-1;;;;;4756:1:1;4740:14;;;4736:22;4723:36;;-1:-1:-1;3674:1352:1:o;5381:271::-;5423:3;5461:5;5455:12;5488:6;5483:3;5476:19;5504:76;5573:6;5566:4;5561:3;5557:14;5550:4;5543:5;5539:16;5504:76;:::i;:::-;5634:2;5613:15;-1:-1:-1;;5609:29:1;5600:39;;;;5641:4;5596:50;;5381:271;-1:-1:-1;;5381:271:1:o;5657:478::-;5880:2;5869:9;5862:21;5843:4;5906:45;5947:2;5936:9;5932:18;5924:6;5906:45;:::i;:::-;5999:9;5991:6;5987:22;5982:2;5971:9;5967:18;5960:50;6027:33;6053:6;6045;6027:33;:::i;:::-;6019:41;;;6125:1;6121;6116:3;6112:11;6108:19;6100:6;6096:32;6091:2;6080:9;6076:18;6069:60;5657:478;;;;;;:::o;6501:222::-;6566:9;;;6587:10;;;6584:133;;;6639:10;6634:3;6630:20;6627:1;6620:31;6674:4;6671:1;6664:15;6702:4;6699:1;6692:15;6584:133;6501:222;;;;:::o;7442:177::-;26417:1413:0;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b85780638da5cb5b1161007c5780638da5cb5b146102a857806395d89b41146102b9578063a457c2d7146102c1578063a9059cbb146102d4578063dd62ed3e146102e7578063f2fde38b146102fa57600080fd5b806370a0823114610237578063715018a61461026057806379cc6790146102685780637d64bcb41461027b578063893d20e81461028357600080fd5b8063313ce567116100ff578063313ce567146101a5578063355274ea146101d657806339509351146101fc57806340c10f191461020f57806342966c681461022457600080fd5b806305d2035b1461013c57806306fdde0314610158578063095ea7b31461016d57806318160ddd1461018057806323b872dd14610192575b600080fd5b60065460ff165b60405190151581526020015b60405180910390f35b61016061030d565b60405161014f9190610c9b565b61014361017b366004610d05565b61039f565b6003545b60405190815260200161014f565b6101436101a0366004610d2f565b6103b9565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014f565b7f0000000000000000000000000000000000000000000000000000000000000000610184565b61014361020a366004610d05565b6103dd565b61022261021d366004610d05565b6103ff565b005b610222610232366004610d6b565b610439565b610184610245366004610d84565b6001600160a01b031660009081526001602052604090205490565b610222610446565b610222610276366004610d05565b61045a565b61022261046f565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161014f565b6000546001600160a01b0316610290565b61016061049a565b6101436102cf366004610d05565b6104a9565b6101436102e2366004610d05565b610524565b6101846102f5366004610da6565b610532565b610222610308366004610d84565b61055d565b60606004805461031c90610dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461034890610dd9565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000336103ad8185856105d3565b60019150505b92915050565b6000336103c78582856106f8565b6103d2858585610772565b506001949350505050565b6000336103ad8185856103f08383610532565b6103fa9190610e13565b6105d3565b60065460ff161561042b5760405162461bcd60e51b815260040161042290610e34565b60405180910390fd5b610435828261091d565b5050565b610443338261092f565b50565b61044e610a5b565b6104586000610ab5565b565b6104658233836106f8565b610435828261092f565b60065460ff16156104925760405162461bcd60e51b815260040161042290610e34565b610458610b05565b60606005805461031c90610dd9565b600033816104b78286610532565b9050838110156105175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610422565b6103d282868684036105d3565b6000336103ad818585610772565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610565610a5b565b6001600160a01b0381166105ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610422565b61044381610ab5565b6001600160a01b0383166106355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610422565b6001600160a01b0382166106965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610422565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006107048484610532565b9050600019811461076c578181101561075f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610422565b61076c84848484036105d3565b50505050565b6001600160a01b0383166107d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610422565b6001600160a01b0382166108385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610422565b6001600160a01b038316600090815260016020526040902054818110156108b05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610422565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109109086815260200190565b60405180910390a361076c565b610925610a5b565b6104358282610b15565b6001600160a01b03821661098f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610422565b6001600160a01b03821660009081526001602052604090205481811015610a035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610422565b6001600160a01b03831660008181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106eb565b6000546001600160a01b031633146104585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610422565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b0d610a5b565b610458610ba2565b7f000000000000000000000000000000000000000000000000000000000000000081610b4060035490565b610b4a9190610e13565b1115610b985760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401610422565b6104358282610bda565b6006805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a1565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610422565b8060036000828254610c429190610e13565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b81811015610cc857858101830151858201604001528201610cac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d0057600080fd5b919050565b60008060408385031215610d1857600080fd5b610d2183610ce9565b946020939093013593505050565b600080600060608486031215610d4457600080fd5b610d4d84610ce9565b9250610d5b60208501610ce9565b9150604084013590509250925092565b600060208284031215610d7d57600080fd5b5035919050565b600060208284031215610d9657600080fd5b610d9f82610ce9565b9392505050565b60008060408385031215610db957600080fd5b610dc283610ce9565b9150610dd060208401610ce9565b90509250929050565b600181811c90821680610ded57607f821691505b602082108103610e0d57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156103b357634e487b7160e01b600052601160045260246000fd5b60208082526022908201527f45524332304d696e7461626c653a206d696e74696e672069732066696e697368604082015261195960f21b60608201526080019056fea264697066735822122069d012013d02e23bdfbae272c8765c3c85c6c9372c68449b2ee3a06b3b7f84bb64736f6c63430008130033","sourceMap":"26417:1413:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24730:98;24804:16;;;;24730:98;;;179:14:1;;172:22;154:41;;142:2;127:18;24730:98:0;;;;;;;;9380:100;;;:::i;:::-;;;;;;;:::i;11731:201::-;;;;;;:::i;:::-;;:::i;10500:108::-;10588:12;;10500:108;;;1342:25:1;;;1330:2;1315:18;10500:108:0;1196:177:1;12512:295:0;;;;;;:::i;:::-;;:::i;27017:129::-;;;1883:4:1;24022:9:0;1871:17:1;1853:36;;1841:2;1826:18;27017:129:0;1711:184:1;21246:83:0;21317:4;21246:83;;13216:238;;;;;;:::i;:::-;;:::i;25140:105::-;;;;;;:::i;:::-;;:::i;:::-;;22182:91;;;;;;:::i;:::-;;:::i;10671:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10772:18:0;10745:7;10772:18;;;:9;:18;;;;;;;10671:127;2809:103;;;:::i;22592:164::-;;;;;;:::i;:::-;;:::i;25438:77::-;;;:::i;23330:100::-;23388:7;2234:6;-1:-1:-1;;;;;2234:6:0;23330:100;;;-1:-1:-1;;;;;2440:32:1;;;2422:51;;2410:2;2395:18;23330:100:0;2276:203:1;2161:87:0;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;2161:87;;9599:104;;;:::i;13957:436::-;;;;;;:::i;:::-;;:::i;11004:193::-;;;;;;:::i;:::-;;:::i;11260:151::-;;;;;;:::i;:::-;;:::i;3067:201::-;;;;;;:::i;:::-;;:::i;9380:100::-;9434:13;9467:5;9460:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9380:100;:::o;11731:201::-;11814:4;794:10;11870:32;794:10;11886:7;11895:6;11870:8;:32::i;:::-;11920:4;11913:11;;;11731:201;;;;;:::o;12512:295::-;12643:4;794:10;12701:38;12717:4;794:10;12732:6;12701:15;:38::i;:::-;12750:27;12760:4;12766:2;12770:6;12750:9;:27::i;:::-;-1:-1:-1;12795:4:0;;12512:295;-1:-1:-1;;;;12512:295:0:o;13216:238::-;13304:4;794:10;13360:64;794:10;13376:7;13413:10;13385:25;794:10;13376:7;13385:9;:25::i;:::-;:38;;;;:::i;:::-;13360:8;:64::i;25140:105::-;24582:16;;;;24581:17;24573:64;;;;-1:-1:-1;;;24573:64:0;;;;;;;:::i;:::-;;;;;;;;;25215:22:::1;25221:7;25230:6;25215:5;:22::i;:::-;25140:105:::0;;:::o;22182:91::-;22238:27;794:10;22258:6;22238:5;:27::i;:::-;22182:91;:::o;2809:103::-;2047:13;:11;:13::i;:::-;2874:30:::1;2901:1;2874:18;:30::i;:::-;2809:103::o:0;22592:164::-;22669:46;22685:7;794:10;22708:6;22669:15;:46::i;:::-;22726:22;22732:7;22741:6;22726:5;:22::i;25438:77::-;24582:16;;;;24581:17;24573:64;;;;-1:-1:-1;;;24573:64:0;;;;;;;:::i;:::-;25491:16:::1;:14;:16::i;9599:104::-:0;9655:13;9688:7;9681:14;;;;;:::i;13957:436::-;14050:4;794:10;14050:4;14133:25;794:10;14150:7;14133:9;:25::i;:::-;14106:52;;14197:15;14177:16;:35;;14169:85;;;;-1:-1:-1;;;14169:85:0;;3966:2:1;14169:85:0;;;3948:21:1;4005:2;3985:18;;;3978:30;4044:34;4024:18;;;4017:62;-1:-1:-1;;;4095:18:1;;;4088:35;4140:19;;14169:85:0;3764:401:1;14169:85:0;14290:60;14299:5;14306:7;14334:15;14315:16;:34;14290:8;:60::i;11004:193::-;11083:4;794:10;11139:28;794:10;11156:2;11160:6;11139:9;:28::i;11260:151::-;-1:-1:-1;;;;;11376:18:0;;;11349:7;11376:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11260:151::o;3067:201::-;2047:13;:11;:13::i;:::-;-1:-1:-1;;;;;3156:22:0;::::1;3148:73;;;::::0;-1:-1:-1;;;3148:73:0;;4372:2:1;3148:73:0::1;::::0;::::1;4354:21:1::0;4411:2;4391:18;;;4384:30;4450:34;4430:18;;;4423:62;-1:-1:-1;;;4501:18:1;;;4494:36;4547:19;;3148:73:0::1;4170:402:1::0;3148:73:0::1;3232:28;3251:8;3232:18;:28::i;17984:380::-:0;-1:-1:-1;;;;;18120:19:0;;18112:68;;;;-1:-1:-1;;;18112:68:0;;4779:2:1;18112:68:0;;;4761:21:1;4818:2;4798:18;;;4791:30;4857:34;4837:18;;;4830:62;-1:-1:-1;;;4908:18:1;;;4901:34;4952:19;;18112:68:0;4577:400:1;18112:68:0;-1:-1:-1;;;;;18199:21:0;;18191:68;;;;-1:-1:-1;;;18191:68:0;;5184:2:1;18191:68:0;;;5166:21:1;5223:2;5203:18;;;5196:30;5262:34;5242:18;;;5235:62;-1:-1:-1;;;5313:18:1;;;5306:32;5355:19;;18191:68:0;4982:398:1;18191:68:0;-1:-1:-1;;;;;18272:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18324:32;;1342:25:1;;;18324:32:0;;1315:18:1;18324:32:0;;;;;;;;17984:380;;;:::o;18655:453::-;18790:24;18817:25;18827:5;18834:7;18817:9;:25::i;:::-;18790:52;;-1:-1:-1;;18857:16:0;:37;18853:248;;18939:6;18919:16;:26;;18911:68;;;;-1:-1:-1;;;18911:68:0;;5587:2:1;18911:68:0;;;5569:21:1;5626:2;5606:18;;;5599:30;5665:31;5645:18;;;5638:59;5714:18;;18911:68:0;5385:353:1;18911:68:0;19023:51;19032:5;19039:7;19067:6;19048:16;:25;19023:8;:51::i;:::-;18779:329;18655:453;;;:::o;14863:840::-;-1:-1:-1;;;;;14994:18:0;;14986:68;;;;-1:-1:-1;;;14986:68:0;;5945:2:1;14986:68:0;;;5927:21:1;5984:2;5964:18;;;5957:30;6023:34;6003:18;;;5996:62;-1:-1:-1;;;6074:18:1;;;6067:35;6119:19;;14986:68:0;5743:401:1;14986:68:0;-1:-1:-1;;;;;15073:16:0;;15065:64;;;;-1:-1:-1;;;15065:64:0;;6351:2:1;15065:64:0;;;6333:21:1;6390:2;6370:18;;;6363:30;6429:34;6409:18;;;6402:62;-1:-1:-1;;;6480:18:1;;;6473:33;6523:19;;15065:64:0;6149:399:1;15065:64:0;-1:-1:-1;;;;;15215:15:0;;15193:19;15215:15;;;:9;:15;;;;;;15249:21;;;;15241:72;;;;-1:-1:-1;;;15241:72:0;;6755:2:1;15241:72:0;;;6737:21:1;6794:2;6774:18;;;6767:30;6833:34;6813:18;;;6806:62;-1:-1:-1;;;6884:18:1;;;6877:36;6930:19;;15241:72:0;6553:402:1;15241:72:0;-1:-1:-1;;;;;15349:15:0;;;;;;;:9;:15;;;;;;15367:20;;;15349:38;;15567:13;;;;;;;;;;:23;;;;;;15619:26;;;;;;15381:6;1342:25:1;;1330:2;1315:18;;1196:177;15619:26:0;;;;;;;;15658:37;16871:675;27422:143;2047:13;:11;:13::i;:::-;27529:28:::1;27541:7;27550:6;27529:11;:28::i;16871:675::-:0;-1:-1:-1;;;;;16955:21:0;;16947:67;;;;-1:-1:-1;;;16947:67:0;;7162:2:1;16947:67:0;;;7144:21:1;7201:2;7181:18;;;7174:30;7240:34;7220:18;;;7213:62;-1:-1:-1;;;7291:18:1;;;7284:31;7332:19;;16947:67:0;6960:397:1;16947:67:0;-1:-1:-1;;;;;17114:18:0;;17089:22;17114:18;;;:9;:18;;;;;;17151:24;;;;17143:71;;;;-1:-1:-1;;;17143:71:0;;7564:2:1;17143:71:0;;;7546:21:1;7603:2;7583:18;;;7576:30;7642:34;7622:18;;;7615:62;-1:-1:-1;;;7693:18:1;;;7686:32;7735:19;;17143:71:0;7362:398:1;17143:71:0;-1:-1:-1;;;;;17250:18:0;;;;;;:9;:18;;;;;;;;17271:23;;;17250:44;;17389:12;:22;;;;;;;17440:37;1342:25:1;;;17250:18:0;;;17440:37;;1315:18:1;17440:37:0;1196:177:1;2326:132:0;2207:7;2234:6;-1:-1:-1;;;;;2234:6:0;794:10;2390:23;2382:68;;;;-1:-1:-1;;;2382:68:0;;7967:2:1;2382:68:0;;;7949:21:1;;;7986:18;;;7979:30;8045:34;8025:18;;;8018:62;8097:18;;2382:68:0;7765:356:1;3428:191:0;3502:16;3521:6;;-1:-1:-1;;;;;3538:17:0;;;-1:-1:-1;;;;;;3538:17:0;;;;;;3571:40;;3521:6;;;;;;;3571:40;;3502:16;3571:40;3491:128;3428:191;:::o;27732:95::-;2047:13;:11;:13::i;:::-;27797:22:::1;:20;:22::i;21387:207::-:0;21317:4;21502:6;21480:19;10588:12;;;10500:108;21480:19;:28;;;;:::i;:::-;:37;;21472:75;;;;-1:-1:-1;;;21472:75:0;;8328:2:1;21472:75:0;;;8310:21:1;8367:2;8347:18;;;8340:30;8406:27;8386:18;;;8379:55;8451:18;;21472:75:0;8126:349:1;21472:75:0;21558:28;21570:7;21579:6;21558:11;:28::i;25591:117::-;25645:16;:23;;-1:-1:-1;;25645:23:0;25664:4;25645:23;;;25686:14;;;;25645:16;;25686:14;25591:117::o;15990:548::-;-1:-1:-1;;;;;16074:21:0;;16066:65;;;;-1:-1:-1;;;16066:65:0;;8682:2:1;16066:65:0;;;8664:21:1;8721:2;8701:18;;;8694:30;8760:33;8740:18;;;8733:61;8811:18;;16066:65:0;8480:355:1;16066:65:0;16222:6;16206:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16377:18:0;;;;;;:9;:18;;;;;;;;:28;;;;;;16432:37;1342:25:1;;;16432:37:0;;1315:18:1;16432:37:0;;;;;;;25140:105;;:::o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:173::-;827:20;;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;856:70;759:173;;;:::o;937:254::-;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1105:29;1124:9;1105:29;:::i;:::-;1095:39;1181:2;1166:18;;;;1153:32;;-1:-1:-1;;;937:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:1:o;2484:260::-;2552:6;2560;2613:2;2601:9;2592:7;2588:23;2584:32;2581:52;;;2629:1;2626;2619:12;2581:52;2652:29;2671:9;2652:29;:::i;:::-;2642:39;;2700:38;2734:2;2723:9;2719:18;2700:38;:::i;:::-;2690:48;;2484:260;;;;;:::o;2749:380::-;2828:1;2824:12;;;;2871;;;2892:61;;2946:4;2938:6;2934:17;2924:27;;2892:61;2999:2;2991:6;2988:14;2968:18;2965:38;2962:161;;3045:10;3040:3;3036:20;3033:1;3026:31;3080:4;3077:1;3070:15;3108:4;3105:1;3098:15;2962:161;;2749:380;;;:::o;3134:222::-;3199:9;;;3220:10;;;3217:133;;;3272:10;3267:3;3263:20;3260:1;3253:31;3307:4;3304:1;3297:15;3335:4;3332:1;3325:15;3361:398;3563:2;3545:21;;;3602:2;3582:18;;;3575:30;3641:34;3636:2;3621:18;;3614:62;-1:-1:-1;;;3707:2:1;3692:18;;3685:32;3749:3;3734:19;;3361:398::o","linkReferences":{},"immutableReferences":{"821":[{"start":472,"length":32},{"start":2839,"length":32}],"956":[{"start":428,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"allowance(address,address)","signatureHash4":"0xdd62ed3e","signatureHash32":"0xdd62ed3e90e97b3d417db9c0c7522647811bafca5afc6694f143588d255fdfb4"},{"signature":"approve(address,uint256)","signatureHash4":"0x095ea7b3","signatureHash32":"0x095ea7b334ae44009aa867bfb386f5c3b4b443ac6f0ee573fa91c4608fbadfba"},{"signature":"balanceOf(address)","signatureHash4":"0x70a08231","signatureHash32":"0x70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be"},{"signature":"burnFrom(address,uint256)","signatureHash4":"0x79cc6790","signatureHash32":"0x79cc679044ee9a2021f0a26c0fdec02ac39179cd005bb971a471b7f9f17c576c"},{"signature":"burn(uint256)","signatureHash4":"0x42966c68","signatureHash32":"0x42966c689b5afe9b9b3f8a7103b2a19980d59629bfd6a20a60972312ed41d836"},{"signature":"cap()","signatureHash4":"0x355274ea","signatureHash32":"0x355274ea4c5084069935a4456a1ac3001e99e7cb12c33ca22e251b993bb2c183"},{"signature":"decimals()","signatureHash4":"0x313ce567","signatureHash32":"0x313ce567add4d438edf58b94ff345d7d38c45b17dfc0f947988d7819dca364f9"},{"signature":"decreaseAllowance(address,uint256)","signatureHash4":"0xa457c2d7","signatureHash32":"0xa457c2d77307f80ff2f3ac810ec99eb18ae2cffee13b29c90c9324546e374be5"},{"signature":"finishMinting()","signatureHash4":"0x7d64bcb4","signatureHash32":"0x7d64bcb42228ba3d5743221f88cc16d950ab4522ecc9855eca22e840f57a538c"},{"signature":"getOwner()","signatureHash4":"0x893d20e8","signatureHash32":"0x893d20e82e7de4dc20ab2c04d17aa0699b89c86c9cd36ed761f937e212e0018a"},{"signature":"increaseAllowance(address,uint256)","signatureHash4":"0x39509351","signatureHash32":"0x39509351d3325647dde3fdd3c8b249adfe89ef4f16d76d83768e6df7a5cd81d6"},{"signature":"mint(address,uint256)","signatureHash4":"0x40c10f19","signatureHash32":"0x40c10f19c047ae7dfa66d6312b683d2ea3dfbcb4159e96b967c5f4b0a86f2842"},{"signature":"mintingFinished()","signatureHash4":"0x05d2035b","signatureHash32":"0x05d2035b235f5535984849de57d442443bfc2c68b3fc567f7a7220c639039311"},{"signature":"name()","signatureHash4":"0x06fdde03","signatureHash32":"0x06fdde0383f15d582d1a74511486c9ddf862a882fb7904b3d9fe9b8b8e58a796"},{"signature":"owner()","signatureHash4":"0x8da5cb5b","signatureHash32":"0x8da5cb5b36e7f68c1d2e56001220cdbdd3ba2616072f718acfda4a06441a807d"},{"signature":"renounceOwnership()","signatureHash4":"0x715018a6","signatureHash32":"0x715018a616b5f2044428f6fadb7deef4ce9ca76ef60ea57978964ad137bbe7ae"},{"signature":"symbol()","signatureHash4":"0x95d89b41","signatureHash32":"0x95d89b41e2f5f391a79ec54e9d87c79d6e777c63e32c28da95b4e9e4a79250ec"},{"signature":"totalSupply()","signatureHash4":"0x18160ddd","signatureHash32":"0x18160ddd7f15c72528c2f94fd8dfe3c8d5aa26e2c50c7d81f4bc7bee8d4b7932"},{"signature":"transfer(address,uint256)","signatureHash4":"0xa9059cbb","signatureHash32":"0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b"},{"signature":"transferFrom(address,address,uint256)","signatureHash4":"0x23b872dd","signatureHash32":"0x23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b"},{"signature":"transferOwnership(address)","signatureHash4":"0xf2fde38b","signatureHash32":"0xf2fde38b092330466c661fc723d5289b90272a3e580e3187d1d7ef788506c557"}],"event":[{"signature":"Approval(address,address,uint256)","signatureHash4":"0x8c5be1e5","signatureHash32":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"},{"signature":"MintFinished()","signatureHash4":"0xae5184fb","signatureHash32":"0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08"},{"signature":"OwnershipTransferred(address,address)","signatureHash4":"0x8be0079c","signatureHash32":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"},{"signature":"Transfer(address,address,uint256)","signatureHash4":"0xddf252ad","signatureHash32":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"}],"error":[]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"match","chainId":"56","address":"0x59769630b236398c2471EB26e6a529448030D94F"}