{"abi":[{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BeaconUpgraded","inputs":[{"name":"beacon","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidBeacon","inputs":[{"name":"beacon","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]}],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"426:6273:255:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;426:6273:255;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"426:6273:255:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/L1/libraries/Address.sol\":{\"keccak256\":\"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3\",\"dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol\":{\"keccak256\":\"0xa2fa39ddac02eecd313cddb1353698256a9cbeab1fcd2047d92285bf4519a23a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3ac2962400411740195781a6f4df2646b0475fc007ae741b3c5946c1b394bc\",\"dweb:/ipfs/QmWr1if5nFDoUN8xpz5V21Lqcy2hXghbqui1aoZUEgqpY3\"]},\"src/tokamak-contracts/USDC/L1/libraries/IBeacon.sol\":{\"keccak256\":\"0x716e742ed4bfcb97311d7d9d388bdc490cec880d9a4f52665d86ade99fca3b47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24a0fd4d5e3d505f19d8e7023048d7b312eff22d264247c03af42eb15d480656\",\"dweb:/ipfs/QmczJSWDXryDzppqPHZ4mLELen6z3M3vJmN5p3QTB8Y6EM\"]},\"src/tokamak-contracts/USDC/L1/libraries/StorageSlot.sol\":{\"keccak256\":\"0x787e1146303d8c96198e87b7af989cbebd915244bee4020d9f159de952e98b4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49f31c7732b2b886b9b6718745627936007aa23e8d6d309c316f8a60b936131a\",\"dweb:/ipfs/QmXVu5oFjH7eTM4oKrsiHAW5BrEk5d86RvZ2xMWBZvdw4G\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"type":"error","name":"ERC1967InvalidBeacon"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"beacon","type":"address","indexed":true}],"type":"event","name":"BeaconUpgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol":"ERC1967Utils"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/L1/libraries/Address.sol":{"keccak256":"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060","urls":["bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3","dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol":{"keccak256":"0xa2fa39ddac02eecd313cddb1353698256a9cbeab1fcd2047d92285bf4519a23a","urls":["bzz-raw://bb3ac2962400411740195781a6f4df2646b0475fc007ae741b3c5946c1b394bc","dweb:/ipfs/QmWr1if5nFDoUN8xpz5V21Lqcy2hXghbqui1aoZUEgqpY3"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IBeacon.sol":{"keccak256":"0x716e742ed4bfcb97311d7d9d388bdc490cec880d9a4f52665d86ade99fca3b47","urls":["bzz-raw://24a0fd4d5e3d505f19d8e7023048d7b312eff22d264247c03af42eb15d480656","dweb:/ipfs/QmczJSWDXryDzppqPHZ4mLELen6z3M3vJmN5p3QTB8Y6EM"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/StorageSlot.sol":{"keccak256":"0x787e1146303d8c96198e87b7af989cbebd915244bee4020d9f159de952e98b4f","urls":["bzz-raw://49f31c7732b2b886b9b6718745627936007aa23e8d6d309c316f8a60b936131a","dweb:/ipfs/QmXVu5oFjH7eTM4oKrsiHAW5BrEk5d86RvZ2xMWBZvdw4G"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.","events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"BeaconUpgraded(address)":{"details":"Emitted when the beacon is changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"errors":{"ERC1967InvalidAdmin(address)":[{"details":"The `admin` of the proxy is invalid."}],"ERC1967InvalidBeacon(address)":[{"details":"The `beacon` of the proxy is invalid."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}]}},"ast":{"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol","id":119789,"exportedSymbols":{"Address":[119447],"ERC1967Utils":[119788],"IBeacon":[119798],"StorageSlot":[120348]},"nodeType":"SourceUnit","src":"114:6586:255","nodes":[{"id":119487,"nodeType":"PragmaDirective","src":"114:23:255","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":119489,"nodeType":"ImportDirective","src":"139:40:255","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/IBeacon.sol","file":"./IBeacon.sol","nameLocation":"-1:-1:-1","scope":119789,"sourceUnit":119799,"symbolAliases":[{"foreign":{"id":119488,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119798,"src":"148:7:255","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":119491,"nodeType":"ImportDirective","src":"180:40:255","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/Address.sol","file":"./Address.sol","nameLocation":"-1:-1:-1","scope":119789,"sourceUnit":119448,"symbolAliases":[{"foreign":{"id":119490,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119447,"src":"189:7:255","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":119493,"nodeType":"ImportDirective","src":"221:48:255","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/StorageSlot.sol","file":"./StorageSlot.sol","nameLocation":"-1:-1:-1","scope":119789,"sourceUnit":120349,"symbolAliases":[{"foreign":{"id":119492,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"230:11:255","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":119788,"nodeType":"ContractDefinition","src":"426:6273:255","nodes":[{"id":119499,"nodeType":"EventDefinition","src":"710:47:255","nodes":[],"anonymous":false,"documentation":{"id":119495,"nodeType":"StructuredDocumentation","src":"637:68:255","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","name":"Upgraded","nameLocation":"716:8:255","parameters":{"id":119498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119497,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"741:14:255","nodeType":"VariableDeclaration","scope":119499,"src":"725:30:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119496,"name":"address","nodeType":"ElementaryTypeName","src":"725:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"724:32:255"}},{"id":119506,"nodeType":"EventDefinition","src":"835:60:255","nodes":[],"anonymous":false,"documentation":{"id":119500,"nodeType":"StructuredDocumentation","src":"763:67:255","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","name":"AdminChanged","nameLocation":"841:12:255","parameters":{"id":119505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119502,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"862:13:255","nodeType":"VariableDeclaration","scope":119506,"src":"854:21:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119501,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":119504,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"885:8:255","nodeType":"VariableDeclaration","scope":119506,"src":"877:16:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119503,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"853:41:255"}},{"id":119511,"nodeType":"EventDefinition","src":"965:45:255","nodes":[],"anonymous":false,"documentation":{"id":119507,"nodeType":"StructuredDocumentation","src":"901:59:255","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","name":"BeaconUpgraded","nameLocation":"971:14:255","parameters":{"id":119510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119509,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1002:6:255","nodeType":"VariableDeclaration","scope":119511,"src":"986:22:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119508,"name":"address","nodeType":"ElementaryTypeName","src":"986:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"985:24:255"}},{"id":119515,"nodeType":"VariableDeclaration","src":"1256:114:255","nodes":[],"constant":true,"documentation":{"id":119512,"nodeType":"StructuredDocumentation","src":"1016:170:255","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1282:19:255","scope":119788,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":119513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1256:7:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":119514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:66:255","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"id":119520,"nodeType":"ErrorDefinition","src":"1451:59:255","nodes":[],"documentation":{"id":119516,"nodeType":"StructuredDocumentation","src":"1377:69:255","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","name":"ERC1967InvalidImplementation","nameLocation":"1457:28:255","parameters":{"id":119519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119518,"mutability":"mutable","name":"implementation","nameLocation":"1494:14:255","nodeType":"VariableDeclaration","scope":119520,"src":"1486:22:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119517,"name":"address","nodeType":"ElementaryTypeName","src":"1486:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1485:24:255"}},{"id":119525,"nodeType":"ErrorDefinition","src":"1581:41:255","nodes":[],"documentation":{"id":119521,"nodeType":"StructuredDocumentation","src":"1516:60:255","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","name":"ERC1967InvalidAdmin","nameLocation":"1587:19:255","parameters":{"id":119524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119523,"mutability":"mutable","name":"admin","nameLocation":"1615:5:255","nodeType":"VariableDeclaration","scope":119525,"src":"1607:13:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119522,"name":"address","nodeType":"ElementaryTypeName","src":"1607:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1606:15:255"}},{"id":119530,"nodeType":"ErrorDefinition","src":"1694:43:255","nodes":[],"documentation":{"id":119526,"nodeType":"StructuredDocumentation","src":"1628:61:255","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","name":"ERC1967InvalidBeacon","nameLocation":"1700:20:255","parameters":{"id":119529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119528,"mutability":"mutable","name":"beacon","nameLocation":"1729:6:255","nodeType":"VariableDeclaration","scope":119530,"src":"1721:14:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119527,"name":"address","nodeType":"ElementaryTypeName","src":"1721:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1720:16:255"}},{"id":119533,"nodeType":"ErrorDefinition","src":"1830:26:255","nodes":[],"documentation":{"id":119531,"nodeType":"StructuredDocumentation","src":"1743:82:255","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","name":"ERC1967NonPayable","nameLocation":"1836:17:255","parameters":{"id":119532,"nodeType":"ParameterList","parameters":[],"src":"1853:2:255"}},{"id":119546,"nodeType":"FunctionDefinition","src":"1934:138:255","nodes":[],"body":{"id":119545,"nodeType":"Block","src":"1995:77:255","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":119541,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119515,"src":"2039:19:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119539,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"2012:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"2012:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2012:47:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"2012:53:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":119538,"id":119544,"nodeType":"Return","src":"2005:60:255"}]},"documentation":{"id":119534,"nodeType":"StructuredDocumentation","src":"1862:67:255","text":" @dev Returns the current implementation address."},"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1943:17:255","parameters":{"id":119535,"nodeType":"ParameterList","parameters":[],"src":"1960:2:255"},"returnParameters":{"id":119538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":119546,"src":"1986:7:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119536,"name":"address","nodeType":"ElementaryTypeName","src":"1986:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1985:9:255"},"scope":119788,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":119573,"nodeType":"FunctionDefinition","src":"2163:281:255","nodes":[],"body":{"id":119572,"nodeType":"Block","src":"2226:218:255","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":119552,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119549,"src":"2240:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"2240:22:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2240:29:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":119555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2273:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2240:34:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119562,"nodeType":"IfStatement","src":"2236:119:255","trueBody":{"id":119561,"nodeType":"Block","src":"2276:79:255","statements":[{"errorCall":{"arguments":[{"id":119558,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119549,"src":"2326:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119557,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119520,"src":"2297:28:255","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":119559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2297:47:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119560,"nodeType":"RevertStatement","src":"2290:54:255"}]}},{"expression":{"id":119570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":119566,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119515,"src":"2391:19:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119563,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"2364:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"2364:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2364:47:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"2364:53:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":119569,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119549,"src":"2420:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2364:73:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119571,"nodeType":"ExpressionStatement","src":"2364:73:255"}]},"documentation":{"id":119547,"nodeType":"StructuredDocumentation","src":"2078:80:255","text":" @dev Stores a new address in the EIP1967 implementation slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2172:18:255","parameters":{"id":119550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119549,"mutability":"mutable","name":"newImplementation","nameLocation":"2199:17:255","nodeType":"VariableDeclaration","scope":119573,"src":"2191:25:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119548,"name":"address","nodeType":"ElementaryTypeName","src":"2191:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2190:27:255"},"returnParameters":{"id":119551,"nodeType":"ParameterList","parameters":[],"src":"2226:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":119607,"nodeType":"FunctionDefinition","src":"2756:335:255","nodes":[],"body":{"id":119606,"nodeType":"Block","src":"2837:254:255","nodes":[],"statements":[{"expression":{"arguments":[{"id":119582,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119576,"src":"2866:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119581,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119573,"src":"2847:18:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":119583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2847:37:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119584,"nodeType":"ExpressionStatement","src":"2847:37:255"},{"eventCall":{"arguments":[{"id":119586,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119576,"src":"2908:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119585,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119499,"src":"2899:8:255","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":119587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2899:27:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119588,"nodeType":"EmitStatement","src":"2894:32:255"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":119589,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119578,"src":"2941:4:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2941:11:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":119591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2941:15:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":119604,"nodeType":"Block","src":"3042:43:255","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":119601,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119787,"src":"3056:16:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":119602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3056:18:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119603,"nodeType":"ExpressionStatement","src":"3056:18:255"}]},"id":119605,"nodeType":"IfStatement","src":"2937:148:255","trueBody":{"id":119600,"nodeType":"Block","src":"2958:78:255","statements":[{"expression":{"arguments":[{"id":119596,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119576,"src":"3001:17:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":119597,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119578,"src":"3020:4:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":119593,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119447,"src":"2972:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$119447_$","typeString":"type(library Address)"}},"id":119595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":119366,"src":"2972:28:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":119598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2972:53:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119599,"nodeType":"ExpressionStatement","src":"2972:53:255"}]}}]},"documentation":{"id":119574,"nodeType":"StructuredDocumentation","src":"2450:301:255","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2765:16:255","parameters":{"id":119579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119576,"mutability":"mutable","name":"newImplementation","nameLocation":"2790:17:255","nodeType":"VariableDeclaration","scope":119607,"src":"2782:25:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119575,"name":"address","nodeType":"ElementaryTypeName","src":"2782:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":119578,"mutability":"mutable","name":"data","nameLocation":"2822:4:255","nodeType":"VariableDeclaration","scope":119607,"src":"2809:17:255","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119577,"name":"bytes","nodeType":"ElementaryTypeName","src":"2809:5:255","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2781:46:255"},"returnParameters":{"id":119580,"nodeType":"ParameterList","parameters":[],"src":"2837:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":119611,"nodeType":"VariableDeclaration","src":"3312:105:255","nodes":[],"constant":true,"documentation":{"id":119608,"nodeType":"StructuredDocumentation","src":"3097:145:255","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3338:10:255","scope":119788,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":119609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3312:7:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":119610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3351:66:255","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"id":119624,"nodeType":"FunctionDefinition","src":"3769:120:255","nodes":[],"body":{"id":119623,"nodeType":"Block","src":"3821:68:255","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":119619,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119611,"src":"3865:10:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119617,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"3838:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"3838:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3838:38:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"3838:44:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":119616,"id":119622,"nodeType":"Return","src":"3831:51:255"}]},"documentation":{"id":119612,"nodeType":"StructuredDocumentation","src":"3424:340:255","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3778:8:255","parameters":{"id":119613,"nodeType":"ParameterList","parameters":[],"src":"3786:2:255"},"returnParameters":{"id":119616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119615,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":119624,"src":"3812:7:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119614,"name":"address","nodeType":"ElementaryTypeName","src":"3812:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3811:9:255"},"scope":119788,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":119655,"nodeType":"FunctionDefinition","src":"3971:217:255","nodes":[],"body":{"id":119654,"nodeType":"Block","src":"4016:172:255","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":119635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":119630,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119627,"src":"4030:8:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":119633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4050:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4042:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":119631,"name":"address","nodeType":"ElementaryTypeName","src":"4042:7:255","typeDescriptions":{}}},"id":119634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4042:10:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4030:22:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119644,"nodeType":"IfStatement","src":"4026:91:255","trueBody":{"id":119643,"nodeType":"Block","src":"4054:63:255","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":119639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":119638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4095:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":119637,"name":"address","nodeType":"ElementaryTypeName","src":"4095:7:255","typeDescriptions":{}}},"id":119640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4095:10:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119636,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119525,"src":"4075:19:255","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":119641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4075:31:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119642,"nodeType":"RevertStatement","src":"4068:38:255"}]}},{"expression":{"id":119652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":119648,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119611,"src":"4153:10:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119645,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"4126:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"4126:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4126:38:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"4126:44:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":119651,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119627,"src":"4173:8:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4126:55:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119653,"nodeType":"ExpressionStatement","src":"4126:55:255"}]},"documentation":{"id":119625,"nodeType":"StructuredDocumentation","src":"3895:71:255","text":" @dev Stores a new address in the EIP1967 admin slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3980:9:255","parameters":{"id":119628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119627,"mutability":"mutable","name":"newAdmin","nameLocation":"3998:8:255","nodeType":"VariableDeclaration","scope":119655,"src":"3990:16:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119626,"name":"address","nodeType":"ElementaryTypeName","src":"3990:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3989:18:255"},"returnParameters":{"id":119629,"nodeType":"ParameterList","parameters":[],"src":"4016:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":119672,"nodeType":"FunctionDefinition","src":"4308:133:255","nodes":[],"body":{"id":119671,"nodeType":"Block","src":"4356:85:255","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":119662,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119624,"src":"4384:8:255","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":119663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4384:10:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":119664,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119658,"src":"4396:8:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":119661,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119506,"src":"4371:12:255","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":119665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4371:34:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119666,"nodeType":"EmitStatement","src":"4366:39:255"},{"expression":{"arguments":[{"id":119668,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119658,"src":"4425:8:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119667,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119655,"src":"4415:9:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":119669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4415:19:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119670,"nodeType":"ExpressionStatement","src":"4415:19:255"}]},"documentation":{"id":119656,"nodeType":"StructuredDocumentation","src":"4194:109:255","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4317:11:255","parameters":{"id":119659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119658,"mutability":"mutable","name":"newAdmin","nameLocation":"4337:8:255","nodeType":"VariableDeclaration","scope":119672,"src":"4329:16:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119657,"name":"address","nodeType":"ElementaryTypeName","src":"4329:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4328:18:255"},"returnParameters":{"id":119660,"nodeType":"ParameterList","parameters":[],"src":"4356:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":119676,"nodeType":"VariableDeclaration","src":"4718:106:255","nodes":[],"constant":true,"documentation":{"id":119673,"nodeType":"StructuredDocumentation","src":"4447:201:255","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4744:11:255","scope":119788,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":119674,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4718:7:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":119675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4758:66:255","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"id":119689,"nodeType":"FunctionDefinition","src":"4887:122:255","nodes":[],"body":{"id":119688,"nodeType":"Block","src":"4940:69:255","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":119684,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119676,"src":"4984:11:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119682,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"4957:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"4957:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4957:39:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"4957:45:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":119681,"id":119687,"nodeType":"Return","src":"4950:52:255"}]},"documentation":{"id":119677,"nodeType":"StructuredDocumentation","src":"4831:51:255","text":" @dev Returns the current beacon."},"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4896:9:255","parameters":{"id":119678,"nodeType":"ParameterList","parameters":[],"src":"4905:2:255"},"returnParameters":{"id":119681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":119689,"src":"4931:7:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119679,"name":"address","nodeType":"ElementaryTypeName","src":"4931:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4930:9:255"},"scope":119788,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":119735,"nodeType":"FunctionDefinition","src":"5091:437:255","nodes":[],"body":{"id":119734,"nodeType":"Block","src":"5138:390:255","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":119695,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119692,"src":"5152:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"5152:14:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5152:21:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":119698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5177:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5152:26:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119705,"nodeType":"IfStatement","src":"5148:95:255","trueBody":{"id":119704,"nodeType":"Block","src":"5180:63:255","statements":[{"errorCall":{"arguments":[{"id":119701,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119692,"src":"5222:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119700,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119530,"src":"5201:20:255","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":119702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5201:31:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119703,"nodeType":"RevertStatement","src":"5194:38:255"}]}},{"expression":{"id":119713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":119709,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119676,"src":"5280:11:255","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":119706,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120348,"src":"5253:11:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$120348_$","typeString":"type(library StorageSlot)"}},"id":119708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":120270,"src":"5253:26:255","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$120244_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":119710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5253:39:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$120244_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":119711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":120243,"src":"5253:45:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":119712,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119692,"src":"5301:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5253:57:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119714,"nodeType":"ExpressionStatement","src":"5253:57:255"},{"assignments":[119716],"declarations":[{"constant":false,"id":119716,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5329:20:255","nodeType":"VariableDeclaration","scope":119734,"src":"5321:28:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119715,"name":"address","nodeType":"ElementaryTypeName","src":"5321:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":119722,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":119718,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119692,"src":"5360:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119717,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119798,"src":"5352:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$119798_$","typeString":"type(contract IBeacon)"}},"id":119719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5352:18:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$119798","typeString":"contract IBeacon"}},"id":119720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":119797,"src":"5352:33:255","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":119721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5352:35:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5321:66:255"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":119723,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119716,"src":"5401:20:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":119724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"5401:25:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5401:32:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":119726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5437:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5401:37:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119733,"nodeType":"IfStatement","src":"5397:125:255","trueBody":{"id":119732,"nodeType":"Block","src":"5440:82:255","statements":[{"errorCall":{"arguments":[{"id":119729,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119716,"src":"5490:20:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119728,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119520,"src":"5461:28:255","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":119730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5461:50:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119731,"nodeType":"RevertStatement","src":"5454:57:255"}]}}]},"documentation":{"id":119690,"nodeType":"StructuredDocumentation","src":"5015:71:255","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5100:10:255","parameters":{"id":119693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119692,"mutability":"mutable","name":"newBeacon","nameLocation":"5119:9:255","nodeType":"VariableDeclaration","scope":119735,"src":"5111:17:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119691,"name":"address","nodeType":"ElementaryTypeName","src":"5111:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5110:19:255"},"returnParameters":{"id":119694,"nodeType":"ParameterList","parameters":[],"src":"5138:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":119773,"nodeType":"FunctionDefinition","src":"6053:333:255","nodes":[],"body":{"id":119772,"nodeType":"Block","src":"6132:254:255","nodes":[],"statements":[{"expression":{"arguments":[{"id":119744,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119738,"src":"6153:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119743,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119735,"src":"6142:10:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":119745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6142:21:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119746,"nodeType":"ExpressionStatement","src":"6142:21:255"},{"eventCall":{"arguments":[{"id":119748,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119738,"src":"6193:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119747,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119511,"src":"6178:14:255","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":119749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6178:25:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119750,"nodeType":"EmitStatement","src":"6173:30:255"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":119751,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119740,"src":"6218:4:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6218:11:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":119753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6232:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6218:15:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":119770,"nodeType":"Block","src":"6337:43:255","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":119767,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119787,"src":"6351:16:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":119768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6351:18:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119769,"nodeType":"ExpressionStatement","src":"6351:18:255"}]},"id":119771,"nodeType":"IfStatement","src":"6214:166:255","trueBody":{"id":119766,"nodeType":"Block","src":"6235:96:255","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":119759,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119738,"src":"6286:9:255","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":119758,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119798,"src":"6278:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$119798_$","typeString":"type(contract IBeacon)"}},"id":119760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6278:18:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$119798","typeString":"contract IBeacon"}},"id":119761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":119797,"src":"6278:33:255","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":119762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6278:35:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":119763,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119740,"src":"6315:4:255","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":119755,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119447,"src":"6249:7:255","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$119447_$","typeString":"type(library Address)"}},"id":119757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":119366,"src":"6249:28:255","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":119764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6249:71:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":119765,"nodeType":"ExpressionStatement","src":"6249:71:255"}]}}]},"documentation":{"id":119736,"nodeType":"StructuredDocumentation","src":"5534:514:255","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6062:22:255","parameters":{"id":119741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119738,"mutability":"mutable","name":"newBeacon","nameLocation":"6093:9:255","nodeType":"VariableDeclaration","scope":119773,"src":"6085:17:255","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119737,"name":"address","nodeType":"ElementaryTypeName","src":"6085:7:255","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":119740,"mutability":"mutable","name":"data","nameLocation":"6117:4:255","nodeType":"VariableDeclaration","scope":119773,"src":"6104:17:255","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119739,"name":"bytes","nodeType":"ElementaryTypeName","src":"6104:5:255","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6084:38:255"},"returnParameters":{"id":119742,"nodeType":"ParameterList","parameters":[],"src":"6132:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":119787,"nodeType":"FunctionDefinition","src":"6575:122:255","nodes":[],"body":{"id":119786,"nodeType":"Block","src":"6611:86:255","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":119777,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6625:3:255","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":119778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"6625:9:255","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":119779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6637:1:255","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6625:13:255","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119785,"nodeType":"IfStatement","src":"6621:70:255","trueBody":{"id":119784,"nodeType":"Block","src":"6640:51:255","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":119781,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119533,"src":"6661:17:255","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":119782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6661:19:255","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":119783,"nodeType":"RevertStatement","src":"6654:26:255"}]}}]},"documentation":{"id":119774,"nodeType":"StructuredDocumentation","src":"6392:178:255","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6584:16:255","parameters":{"id":119775,"nodeType":"ParameterList","parameters":[],"src":"6600:2:255"},"returnParameters":{"id":119776,"nodeType":"ParameterList","parameters":[],"src":"6611:0:255"},"scope":119788,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":119494,"nodeType":"StructuredDocumentation","src":"271:154:255","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"linearizedBaseContracts":[119788],"name":"ERC1967Utils","nameLocation":"434:12:255","scope":119789,"usedErrors":[119520,119525,119530,119533]}],"license":"MIT"},"id":255}