solc-0.8.36-memorymasking-07 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 optimized-low-runs

10101 bytes

5f1960805260a0604052348015610014575f5ffd5b50600436106101c5575f3560e01c806301ffc9a7146101c957806302c37ddc146101f157806306fdde0314610206578063081812fc1461021b578063095ea7b314610241578063127a529814610254578063166c4b05146102825780631785f53c1461029557806318160ddd146102a857806323b872dd146102b057806324d7806c146102c3578063278d9c41146102d657806328db38b4146102e95780632f745c59146102fc5780633f4ba83a1461030f57806342842e0e1461031757806342966c681461032a5780634f6ccce71461033d57806355f804b3146103505780635c975abb146103635780636352211e1461036f57806367e971ce1461038257806370480275146103aa57806370a08231146103bd5780638129fc1c146103d05780638456cb59146103d85780638bad0c0a146103e05780638d232094146103e857806395d89b41146103fb5780639cd3cad614610403578063a140ae2314610416578063a22cb46514610429578063b88d4fde1461043c578063c4d66de81461044f578063c87b56dd14610462578063d890c8e214610475578063e985e9c514610488578063f980f3dc1461049b575b5f5ffd5b6101dc6101d7366004611f1a565b6104ae565b60405190151581526020015b60405180910390f35b6102046101ff366004611f35565b6104cc565b005b61020e6104d9565b6040516101e89190611f7a565b61022e610229366004611f35565b61056a565b60405160745190911681526020016101e8565b61020461024f366004611fa3565b610592565b610274610262366004611f35565b5f90815261013d602052604090205490565b6040519081526020016101e8565b610204610290366004611fcb565b6105cd565b6102046102a3366004611fec565b6105fc565b609e54610274565b6102046102be366004612005565b61062a565b6101dc6102d1366004611fec565b61065e565b6101dc6102e436600461210d565b610670565b6101dc6102f7366004611fcb565b610732565b61027461030a366004611fa3565b610760565b6102046107a9565b610204610325366004612005565b61085f565b610204610338366004611f35565b61088e565b61027461034b366004611f35565b6108fc565b61020461035e3660046121bd565b610933565b6101065460ff166101dc565b61022e61037d366004611f35565b610989565b610395610390366004611fa3565b6109a4565b604080519283526020830191909152016101e8565b6102046103b8366004611fec565b6109cc565b6102746103cb366004611fec565b6109fa565b610204610a20565b610204610acb565b610204610b56565b6102046103f63660046121e9565b610b61565b61020e610c64565b610204610411366004611fcb565b610c74565b6101dc610424366004611fcb565b610ca5565b61020461043736600461228a565b610d22565b61020461044a3660046122c3565b610d50565b61020461045d366004611fec565b610d86565b61020e610470366004611f35565b610e0b565b6101dc61048336600461232a565b610eec565b6101dc61049636600461235c565b610f4d565b6101dc6104a9366004612384565b610f75565b6001600160e01b0319165f9081526033602052604090205460ff1690565b6104d68133611034565b50565b606061013980546104e990612418565b80601f016020809104026020016040519081016040528092919081815260200182805461051590612418565b80156105605780601f1061053757610100808354040283529160200191610560565b820191905f5260205f20905b81548152906001019060200180831161054357829003601f168201915b5050505050905090565b5f6105748261107f565b61057c575f5ffd5b505f908152606760205260409020546074511690565b6101065460ff16156105bf5760405162461bcd60e51b81526004016105b690612450565b60405180910390fd5b6105c98282611096565b5050565b6105d63361065e565b6105f25760405162461bcd60e51b81526004016105b69061247c565b6105c98282611034565b6106053361065e565b6106215760405162461bcd60e51b81526004016105b69061247c565b6104d68161112a565b6101065460ff161561064e5760405162461bcd60e51b81526004016105b690612450565b610659838383611166565b505050565b5f61066a60d283611183565b92915050565b610106545f9060ff16156106965760405162461bcd60e51b81526004016105b690612450565b826106a18133610732565b6106bd5760405162461bcd60e51b81526004016105b6906124a9565b5f5b835181101561070f57610706858261013c5460016106dd91906124f1565b6106e791906124f1565b8684815181106106f9576106f9612504565b60200260200101516111ab565b506001016106bf565b50825161013c5f82825461072391906124f1565b90915550600195945050505050565b5f61073c8261065e565b8061075957505f83815260d3602052604090206107599083611183565b9392505050565b5f61076a836109fa565b8210610774575f5ffd5b60745183165f908152609c6020526040902080548390811061079857610798612504565b905f5260205f200154905092915050565b6107b23361065e565b6107ce5760405162461bcd60e51b81526004016105b69061247c565b6101065460ff1661081a5760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd0814185d5cd95960521b60448201526064016105b6565b610106805460ff19169055604051607451331681527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6101065460ff16156108835760405162461bcd60e51b81526004016105b690612450565b61065983838361120b565b6108983382611225565b806108a757506108a73361065e565b6108f35760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e000060448201526064016105b6565b6104d681611267565b5f610906609e5490565b8210610910575f5ffd5b609e828154811061092357610923612504565b905f5260205f2001549050919050565b61093c3361065e565b6109585760405162461bcd60e51b81526004016105b69061247c565b6101065460ff161561097c5760405162461bcd60e51b81526004016105b690612450565b61013b6105c9828261256e565b5f81815260666020526040812054607451168061066a575f5ffd5b5f5f6109b08484610760565b5f81815261013d60205260409020549092505b90509250929050565b6109d53361065e565b6109f15760405162461bcd60e51b81526004016105b69061247c565b6104d681611279565b5f6074518216610a08575f5ffd5b60745182165f9081526068602052604090205461066a565b5f54610100900460ff1680610a345750303b155b80610a4157505f5460ff16155b610a5d5760405162461bcd60e51b81526004016105b690612627565b5f805461ffff1981166101011790915560405162461bcd60e51b815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c696044820152623d32b960e91b606482015261010090910460ff16906084016105b6565b610ad43361065e565b610af05760405162461bcd60e51b81526004016105b69061247c565b6101065460ff1615610b145760405162461bcd60e51b81526004016105b690612450565b610106805460ff19166001179055604051607451331681527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610855565b610b5f3361112a565b565b5f54610100900460ff1680610b755750303b155b80610b8257505f5460ff16155b610b9e5760405162461bcd60e51b81526004016105b690612627565b5f805461ffff19811661010117909155610100900460ff16610bbe6112b5565b610bc661133b565b610bcf33610d86565b610bd76113b0565b5f5b8251811015610c0c57610c04838281518110610bf757610bf7612504565b6020026020010151611279565b600101610bd9565b50610139610c1a868261256e565b5061013a610c28858261256e565b5061013b610c36848261256e565b50610c47635b5e139f60e01b611418565b5f80549115156101000261ff001990921691909117905550505050565b606061013a80546104e990612418565b81610c7f8133610732565b610c9b5760405162461bcd60e51b81526004016105b6906124a9565b6106598383611452565b610106545f9060ff1615610ccb5760405162461bcd60e51b81526004016105b690612450565b82610cd68133610732565b610cf25760405162461bcd60e51b81526004016105b6906124a9565b600161013c5f828254610d0591906124f1565b92505081905550610d1a8461013c54856111ab565b949350505050565b6101065460ff1615610d465760405162461bcd60e51b81526004016105b690612450565b6105c9828261149d565b6101065460ff1615610d745760405162461bcd60e51b81526004016105b690612450565b610d8084848484611512565b50505050565b5f54610100900460ff1680610d9a5750303b155b80610da757505f5460ff16155b610dc35760405162461bcd60e51b81526004016105b690612627565b5f805461ffff19811661010117909155610100900460ff16610de48261065e565b610df157610df182611279565b5f80549115156101000261ff001990921691909117905550565b5f81815261013d602052604090205461013b80546060929161075991610e3090612418565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5c90612418565b8015610ea75780601f10610e7e57610100808354040283529160200191610ea7565b820191905f5260205f20905b815481529060010190602001808311610e8a57829003601f168201915b5050505050610eb583611531565b604051806040016040528060018152602001602f60f81b815250610ed887611531565b60405180602001604052805f815250611638565b610106545f9060ff1615610f125760405162461bcd60e51b81526004016105b690612450565b83610f1d8133610732565b610f395760405162461bcd60e51b81526004016105b6906124a9565b610f448585856111ab565b95945050505050565b6074519182165f90815260696020908152604080832093909416825291909152205460ff1690565b610106545f9060ff1615610f9b5760405162461bcd60e51b81526004016105b690612450565b610fa43361065e565b610fc05760405162461bcd60e51b81526004016105b69061247c565b5f5b835181101561101257611009848281518110610fe057610fe0612504565b60200260200101518261013c546001610ff991906124f1565b61100391906124f1565b856111ab565b50600101610fc2565b50825161013c5f82825461102691906124f1565b909155506001949350505050565b5f82815260d36020526040902061104b90826118c1565b60405160745182169083907fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c905f90a35050565b5f9081526066602052604090205460745116151590565b5f6110a082610989565b905080607451168360745116036110b5575f5ffd5b33607451821614806110cc57506110cc8133610f4d565b6110d4575f5ffd5b5f8281526067602052604080822080546001600160a01b03191660745187811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61113560d2826118c1565b6040516074518216907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a250565b6111703382611225565b611178575f5ffd5b6106598383836118fc565b5f6074518216611191575f5ffd5b50607451165f908152602091909152604090205460ff1690565b5f6111b6828461191b565b5f83815261013d602090815260409182902086905581518681529081018590527f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e34910160405180910390a15060019392505050565b61065983838360405180602001604052805f815250610d50565b5f5f61123083610989565b9050806074511684607451161480611257575083607451166112518461056a565b60745116145b80610d1a5750610d1a8185610f4d565b6104d661127382610989565b82611976565b61128460d282611992565b6040516074518216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339905f90a250565b5f54610100900460ff16806112c95750303b155b806112d657505f5460ff16155b6112f25760405162461bcd60e51b81526004016105b690612627565b5f805461ffff19811661010117909155610100900460ff166113126119d1565b6113226380ac58cd60e01b611418565b5f80549115156101000261ff0019909216919091179055565b5f54610100900460ff168061134f5750303b155b8061135c57505f5460ff16155b6113785760405162461bcd60e51b81526004016105b690612627565b5f805461ffff19811661010117909155610100900460ff16611398611a36565b6113a0575f5ffd5b61132263780e9d6360e01b611418565b5f54610100900460ff16806113c45750303b155b806113d157505f5460ff16155b6113ed5760405162461bcd60e51b81526004016105b690612627565b5f8054610106805460ff1916905561ffff1981166101009182900460ff161515909102176001179055565b6001600160e01b0319808216900361142e575f5ffd5b6001600160e01b0319165f908152603360205260409020805460ff19166001179055565b5f82815260d3602052604090206114699082611992565b60405160745182169083907fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e7391905f90a35050565b336074518316036114ac575f5ffd5b335f818152606960209081526040808320607451871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61151d84848461062a565b61152984848484611a4c565b610d80575f5ffd5b6060815f036115575750506040805180820190915260018152600360fc1b602082015290565b815f5b8115611580578061156a81612675565b91506115799050600a836126a1565b915061155a565b5f816068518111156115945761159461203f565b6040519080825280601f01601f1916602001820160405280156115be576020820181803683370190505b5090505f6115cd6001846126b4565b90505b851561162f576115e1600a876126c7565b6115ec9060306124f1565b60f81b82826115fa816126da565b93508151811061160c5761160c612504565b6020010190607f51191690815f1a905350611628600a876126a1565b95506115d0565b50949350505050565b805182518451865188516060948a948a948a948a948a945f9490939092909161166191906124f1565b61166b91906124f1565b61167591906124f1565b61167f91906124f1565b6068518111156116915761169161203f565b6040519080825280601f01601f1916602001820160405280156116bb576020820181803683370190505b509050805f805b8851811015611722578881815181106116dd576116dd612504565b01602001516001600160f81b03191683836116f781612675565b94508151811061170957611709612504565b6020010190607f51191690815f1a9053506001016116c2565b505f5b87518110156117855787818151811061174057611740612504565b01602001516001600160f81b031916838361175a81612675565b94508151811061176c5761176c612504565b6020010190607f51191690815f1a905350600101611725565b505f5b86518110156117e8578681815181106117a3576117a3612504565b01602001516001600160f81b03191683836117bd81612675565b9450815181106117cf576117cf612504565b6020010190607f51191690815f1a905350600101611788565b505f5b855181101561184b5785818151811061180657611806612504565b01602001516001600160f81b031916838361182081612675565b94508151811061183257611832612504565b6020010190607f51191690815f1a9053506001016117eb565b505f5b84518110156118ae5784818151811061186957611869612504565b01602001516001600160f81b031916838361188381612675565b94508151811061189557611895612504565b6020010190607f51191690815f1a90535060010161184e565b50909d9c50505050505050505050505050565b60745181166118ce575f5ffd5b6118d88282611183565b6118e0575f5ffd5b607451165f90815260209190915260409020805460ff19169055565b611907838383611aec565b6119118382611b96565b6106598282611c7f565b6119258282611cb7565b61192f8282611c7f565b6105c981609e80545f838152609f60205260408120829055600182018355919091527fcfe2a20ff701a1f3e14f63bd70d6c6bc6fba8172ec6d5a505cdab3927c0a9de60155565b6119808282611d32565b5f90815261013d602052604081205550565b607451811661199f575f5ffd5b6119a98282611183565b156119b2575f5ffd5b607451165f90815260209190915260409020805460ff19166001179055565b5f54610100900460ff16806119e55750303b155b806119f257505f5460ff16155b611a0e5760405162461bcd60e51b81526004016105b690612627565b5f805461ffff19811661010117909155610100900460ff166113226301ffc9a760e01b611418565b5f611a476380ac58cd60e01b6104ae565b905090565b5f60745184163b611a5f57506001610d1a565b604051630a85bd0160e11b81525f9060745186169063150b7a0290611a8e9033908a90899089906004016126ef565b6020604051808303815f875af1158015611aaa573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ace9190612725565b6001600160e01b031916630a85bd0160e11b14915050949350505050565b8260745116611afa82610989565b6074511614611b07575f5ffd5b6074518216611b14575f5ffd5b611b1d81611d5d565b60745183165f908152606860205260409020611b3890611d91565b60745182165f908152606860205260409020611b5390611da2565b5f8181526066602052604080822080546001600160a01b03191660745186811691821790925591518493918716915f5160206127555f395f51905f5291a4505050565b60745182165f908152609c6020526040812054611bb4906001611dbd565b5f838152609d6020526040902054909150808214611c455760745184165f908152609c60205260408120805484908110611bf057611bf0612504565b905f5260205f200154905080609c5f87607451166074511681526020019081526020015f208381548110611c2657611c26612504565b5f918252602080832090910192909255918252609d9052604090208190555b60745184165f908152609c60205260409020805480611c6657611c66612740565b600190038181905f5260205f20015f9055905550505050565b6074519091165f908152609c602081815260408084208054868652609d84529185208290559282526001810183559183529091200155565b6074518216611cc4575f5ffd5b611ccd8161107f565b15611cd6575f5ffd5b5f81815260666020908152604080832080546001600160a01b0319166074518716908117909155835260689091529020611d0f90611da2565b60405181906074518416905f905f5160206127555f395f51905f52908290a45050565b611d3c8282611dd5565b611d468282611b96565b5f818152609d60205260408120556105c981611e50565b5f8181526067602052604090205460745116156104d6575f90815260676020526040902080546001600160a01b0319169055565b8054611d9e906001611dbd565b9055565b6001815f015f828254611db591906124f1565b909155505050565b5f82821115611dca575f5ffd5b5f610d1a83856126b4565b8160745116611de382610989565b6074511614611df0575f5ffd5b611df981611d5d565b60745182165f908152606860205260409020611e1490611d91565b5f8181526066602052604080822080546001600160a01b0319169055518291906074518516905f5160206127555f395f51905f52908390a45050565b609e545f90611e60906001611dbd565b5f838152609f6020526040812054609e8054939450909284908110611e8757611e87612504565b905f5260205f200154905080609e8381548110611ea657611ea6612504565b5f918252602080832090910192909255828152609f90915260409020829055609e805480611ed657611ed6612740565b600190038181905f5260205f20015f905590555f609f5f8681526020019081526020015f208190555050505050565b6001600160e01b0319811681146104d6575f5ffd5b5f60208284031215611f2a575f5ffd5b813561075981611f05565b5f60208284031215611f45575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107596020830184611f4c565b60745181359081168114611f9e575f5ffd5b919050565b5f5f60408385031215611fb4575f5ffd5b611fbd83611f8c565b946020939093013593505050565b5f5f60408385031215611fdc575f5ffd5b823591506109c360208401611f8c565b5f60208284031215611ffc575f5ffd5b61075982611f8c565b5f5f5f60608486031215612017575f5ffd5b61202084611f8c565b925061202e60208501611f8c565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051606851601f8301601f1916820190811182821017156120775761207761203f565b604052919050565b5f6068518211156120925761209261203f565b5060051b60200190565b5f82601f8301126120ab575f5ffd5b81356120be6120b98261207f565b612053565b8082825260208201915060208360051b8601019250858311156120df575f5ffd5b602085015b83811015612103576120f581611f8c565b8352602092830192016120e4565b5095945050505050565b5f5f6040838503121561211e575f5ffd5b60685183359250602084013590811115612136575f5ffd5b6121428582860161209c565b9150509250929050565b5f5f6068518411156121605761216061203f565b50601f8301601f191660200161217581612053565b915050828152838383011115612189575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126121ae575f5ffd5b6107598383356020850161214c565b5f602082840312156121cd575f5ffd5b81356068518111156121dd575f5ffd5b610d1a8482850161219f565b5f5f5f5f608085870312156121fc575f5ffd5b843560685181111561220c575f5ffd5b6122188782880161219f565b945050602085013560685181111561222e575f5ffd5b61223a8782880161219f565b9350506040850135606851811115612250575f5ffd5b61225c8782880161219f565b9250506060850135606851811115612272575f5ffd5b61227e8782880161209c565b91505092959194509250565b5f5f6040838503121561229b575f5ffd5b6122a483611f8c565b9150602083013580151581146122b8575f5ffd5b809150509250929050565b5f5f5f5f608085870312156122d6575f5ffd5b6122df85611f8c565b93506122ed60208601611f8c565b6068519093506040860135925060608601359081111561230b575f5ffd5b8501601f8101871361231b575f5ffd5b61227e8782356020840161214c565b5f5f5f6060848603121561233c575f5ffd5b833592506020840135915061235360408501611f8c565b90509250925092565b5f5f6040838503121561236d575f5ffd5b61237683611f8c565b91506109c360208401611f8c565b5f5f60408385031215612395575f5ffd5b82356068518111156123a5575f5ffd5b8301601f810185136123b5575f5ffd5b80356123c36120b98261207f565b8082825260208201915060208360051b8501019250878311156123e4575f5ffd5b6020840193505b828410156124065783358252602093840193909101906123eb565b94506109c39250505060208401611f8c565b600181811c9082168061242c57607f821691505b60208210810361244a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc814185d5cd95960721b604082015260600190565b60208082526013908201527229b2b73232b91034b9903737ba1020b236b4b760691b604082015260600190565b6020808252601a908201527929b2b73232b91034b9903737ba1022bb32b73a1026b4b73a32b960311b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561066a5761066a6124dd565b634e487b7160e01b5f52603260045260245ffd5b601f821115610659578282111561065957805f5260205f20601f840160051c602085101561254357505f5b90810190601f840160051c035f5b81811015612566575f83820155600101612551565b505050505050565b81516068518111156125825761258261203f565b612596816125908454612418565b84612518565b6020601f8211600181146125c8575f83156125b15750848201515b5f19600385901b1c1916600184901b178455612620565b5f84815260208120601f198516915b828110156125f757878501518255602094850194600190920191016125d7565b508482101561261457868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b5f60018201612686576126866124dd565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826126af576126af61268d565b500490565b8181038181111561066a5761066a6124dd565b5f826126d5576126d561268d565b500690565b5f816126e8576126e86124dd565b505f190190565b6074518516815260745184166020820152826040820152608060608201525f61271b6080830184611f4c565b9695505050505050565b5f60208284031215612735575f5ffd5b815161075981611f05565b634e487b7160e01b5f52603160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef