solc-0.8.36-memorymasking-07 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d optimized
9554 bytes
5f1960805260a060405260043610610217575f3560e01c80636c0360eb11610123578063b0f67427116100ad578063e36d649811610072578063e36d6498146105ab578063e985e9c5146105c0578063e986655014610602578063eb8d244414610616578063f2fde38b1461062f575f5ffd5b8063b0f674271461052f578063b88d4fde14610543578063bb8a16bd14610562578063c87b56dd14610577578063cb774d4714610596575f5ffd5b80637d17fcbe116100f35780637d17fcbe146104bd5780638da5cb5b146104d157806395d89b41146104e9578063a22cb465146104fd578063a723533e1461051c575f5ffd5b80636c0360eb1461045b57806370a082311461046f578063715018a61461048e5780637a3f451e146104a2575f5ffd5b80632f745c59116101a45780634f6ccce7116101745780634f6ccce7146103d657806355f804b3146103f5578063571dff3b14610414578063607e20e3146104285780636352211e1461043c575f5ffd5b80632f745c591461037057806334918dfd1461038f5780633ccfd60b146103a357806342842e0e146103b7575f5ffd5b8063095ea7b3116101ea578063095ea7b3146102dc57806310969523146102fb57806318160ddd1461031a57806318e20a381461033c57806323b872dd14610351575f5ffd5b8063018a2c371461021b57806301ffc9a71461023c57806306fdde0314610289578063081812fc146102aa575b5f5ffd5b348015610226575f5ffd5b5061023a610235366004611ebe565b61064e565b005b348015610247575f5ffd5b50610274610256366004611eea565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b348015610294575f5ffd5b5061029d610681565b6040516102809190611f33565b3480156102b5575f5ffd5b506102c96102c4366004611ebe565b610711565b6040516074519091168152602001610280565b3480156102e7575f5ffd5b5061023a6102f6366004611f5c565b610792565b348015610306575f5ffd5b5061023a610315366004612003565b610897565b348015610325575f5ffd5b5061032e6108cc565b604051908152602001610280565b348015610347575f5ffd5b5061032e60105481565b34801561035c575f5ffd5b5061023a61036b366004612042565b6108dc565b34801561037b575f5ffd5b5061032e61038a366004611f5c565b61090d565b34801561039a575f5ffd5b5061023a610932565b3480156103ae575f5ffd5b5061023a61096b565b3480156103c2575f5ffd5b5061023a6103d1366004612042565b6109bc565b3480156103e1575f5ffd5b5061032e6103f0366004611ebe565b6109d6565b348015610400575f5ffd5b5061023a61040f366004612003565b6109eb565b34801561041f575f5ffd5b5061032e601481565b348015610433575f5ffd5b5061029d610a1c565b348015610447575f5ffd5b506102c9610456366004611ebe565b610aa8565b348015610466575f5ffd5b5061029d610acf565b34801561047a575f5ffd5b5061032e61048936600461207c565b610ade565b348015610499575f5ffd5b5061023a610b5e565b3480156104ad575f5ffd5b5061032e67011c37937e08000081565b3480156104c8575f5ffd5b5061023a610bc7565b3480156104dc575f5ffd5b50600a54607451166102c9565b3480156104f4575f5ffd5b5061029d610c42565b348015610508575f5ffd5b5061023a610517366004612095565b610c51565b61023a61052a366004611ebe565b610d0a565b34801561053a575f5ffd5b5061023a610ef6565b34801561054e575f5ffd5b5061023a61055d3660046120ce565b610f4c565b34801561056d575f5ffd5b5061032e600e5481565b348015610582575f5ffd5b5061029d610591366004611ebe565b610f84565b3480156105a1575f5ffd5b5061032e600d5481565b3480156105b6575f5ffd5b5061032e600c5481565b3480156105cb575f5ffd5b506102746105da36600461213f565b6074519182165f90815260056020908152604080832093909416825291909152205460ff1690565b34801561060d575f5ffd5b5061023a6110f0565b348015610621575f5ffd5b50600f546102749060ff1681565b34801561063a575f5ffd5b5061023a61064936600461207c565b6111f6565b600a5460745116331461067c5760405162461bcd60e51b815260040161067390612170565b60405180910390fd5b601055565b606060068054610690906121a5565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc906121a5565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f61071b826112cc565b61077c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610673565b505f908152600460205260409020546074511690565b5f61079c82610aa8565b905080607451168360745116036107ff5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610673565b3360745182161480610816575061081681336105da565b6108885760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610673565b61089283836112d8565b505050565b600a546074511633146108bc5760405162461bcd60e51b815260040161067390612170565b600b6108c88282612233565b5050565b5f6108d7600261133b565b905090565b6108e63382611344565b6109025760405162461bcd60e51b8152600401610673906122ec565b610892838383611412565b60745182165f908152600160205260408120610929908361156d565b90505b92915050565b600a546074511633146109575760405162461bcd60e51b815260040161067390612170565b600f805460ff19811660ff90911615179055565b600a546074511633146109905760405162461bcd60e51b815260040161067390612170565b6040514790339082156108fc029083905f818181858888f193505050501580156108c8573d5f5f3e3d5ffd5b61089283838360405180602001604052805f815250610f4c565b5f806109e3600284611578565b509392505050565b600a54607451163314610a105760405162461bcd60e51b815260040161067390612170565b610a1981611593565b50565b600b8054610a29906121a5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a55906121a5565b8015610aa05780601f10610a7757610100808354040283529160200191610aa0565b820191905f5260205f20905b815481529060010190602001808311610a8357829003601f168201915b505050505081565b5f61092c82604051806060016040528060298152602001612529602991396002919061159f565b606060098054610690906121a5565b5f6074518216610b435760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610673565b60745182165f90815260016020526040902061092c9061133b565b600a54607451163314610b835760405162461bcd60e51b815260040161067390612170565b600a546040515f9160745116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a54607451163314610bec5760405162461bcd60e51b815260040161067390612170565b600d5415610c3c5760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610673565b43600c55565b606060078054610690906121a5565b33607451831603610ca45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610673565b335f818152600560209081526040808320607451871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600f5460ff16610d5c5760405162461bcd60e51b815260206004820152601f60248201527f53616c65206d7573742062652061637469766520746f206d696e7420417065006044820152606401610673565b6014811115610db75760405162461bcd60e51b815260206004820152602160248201527f43616e206f6e6c79206d696e7420323020746f6b656e7320617420612074696d6044820152606560f81b6064820152608401610673565b600e54610dcc82610dc66108cc565b906115b5565b1115610e2b5760405162461bcd60e51b815260206004820152602860248201527f507572636861736520776f756c6420657863656564206d617820737570706c79604482015267206f66204170657360c01b6064820152608401610673565b34610e3e67011c37937e08000083611613565b1115610e8c5760405162461bcd60e51b815260206004820152601f60248201527f45746865722076616c75652073656e74206973206e6f7420636f7272656374006044820152606401610673565b5f5b81811015610ec5575f610e9f6108cc565b9050600e54610eac6108cc565b1015610ebc57610ebc3382611691565b50600101610e8e565b50600c54158015610eea5750600e54610edc6108cc565b1480610eea57506010544210155b15610a195743600c5550565b600a54607451163314610f1b5760405162461bcd60e51b815260040161067390612170565b5f610f246108cc565b90505f5b601e8110156108c857610f4433610f3f8385612351565b611691565b600101610f28565b610f563383611344565b610f725760405162461bcd60e51b8152600401610673906122ec565b610f7e848484846116aa565b50505050565b6060610f8f826112cc565b610ff35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610673565b5f828152600860205260408120805461100b906121a5565b80601f0160208091040260200160405190810160405280929190818152602001828054611037906121a5565b80156110825780601f1061105957610100808354040283529160200191611082565b820191905f5260205f20905b81548152906001019060200180831161106557829003601f168201915b505050505090505f611092610acf565b905080515f036110a3575092915050565b8151156110d55780826040516020016110bd92919061237b565b60405160208183030381529060405292505050919050565b806110df856116dd565b6040516020016110bd92919061237b565b600d54156111405760405162461bcd60e51b815260206004820152601d60248201527f5374617274696e6720696e64657820697320616c7265616479207365740000006044820152606401610673565b600c545f036111915760405162461bcd60e51b815260206004820181905260248201527f5374617274696e6720696e64657820626c6f636b206d757374206265207365746044820152606401610673565b600e54600c546111a29190406123a3565b600d55600c5460ff906111b69043906117e7565b11156111d957600e546111ca6001436123b6565b6111d59190406123a3565b600d555b600d545f036111f457600d546111f09060016115b5565b600d555b565b600a5460745116331461121b5760405162461bcd60e51b815260040161067390612170565b607451811661127b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610673565b600a546040516074518084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600a80546001600160a01b03191660745192909216919091179055565b5f61092c600283611842565b5f81815260046020526040902080546001600160a01b0319166074518416908117909155819061130782610aa8565b607451167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f61092c825490565b5f61134e826112cc565b6113af5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610673565b5f6113b983610aa8565b90508060745116846074511614806113e0575083607451166113da84610711565b60745116145b8061140a57506074518082165f9081526005602090815260408083209388168352929052205460ff165b949350505050565b826074511661142082610aa8565b60745116146114835760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610673565b60745182166114e05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610673565b6114ea5f826112d8565b60745183165f9081526001602052604090206115069082611859565b5060745182165f9081526001602052604090206115239082611864565b506115306002828461186f565b5080826074511684607451167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b5f610929838361187f565b5f8080806115868686611901565b9097909650945050505050565b60096108c88282612233565b5f6115ab848484611998565b90505b9392505050565b5f806115c18385612351565b9050838110156109295760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610673565b5f825f0361162257505f61092c565b5f61162d83856123c9565b90508261163a85836123e0565b146109295760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610673565b6108c8828260405180602001604052805f8152506119fe565b6116b5848484611412565b6116c184848484611a30565b610f7e5760405162461bcd60e51b8152600401610673906123f3565b6060815f036117035750506040805180820190915260018152600360fc1b602082015290565b815f5b811561172c578061171681612445565b91506117259050600a836123e0565b9150611706565b5f8160685181111561174057611740611f84565b6040519080825280601f01601f19166020018201604052801561176a576020820181803683370190505b5090505f6117796001846123b6565b90508593505b83156117de57611790600a856123a3565b61179b906030612351565b60f81b82826117a98161245d565b9350815181106117bb576117bb612472565b6020010190607f51191690815f1a9053506117d7600a856123e0565b935061177f565b50949350505050565b5f828211156118385760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610673565b61092982846123b6565b5f8181526001830160205260408120541515610929565b5f6109298383611aea565b5f6109298383611bcc565b5f6115ab84846074518516611c18565b81545f9082106118dc5760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610673565b825f0182815481106118f0576118f0612472565b905f5260205f200154905092915050565b81545f90819083106119605760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610673565b5f845f01848154811061197557611975612472565b905f5260205f2090600202019050805f0154816001015492509250509250929050565b5f82815260018401602052604081205482816119c75760405162461bcd60e51b81526004016106739190611f33565b50846119d46001836123b6565b815481106119e4576119e4612472565b905f5260205f209060020201600101549150509392505050565b611a088383611cb6565b611a145f848484611a30565b6108925760405162461bcd60e51b8152600401610673906123f3565b5f60745184163b611a435750600161140a565b5f611ab4630a85bd0160e11b33888787604051602401611a669493929190612486565b60405160208183030381529060405290607c511916602082018051607c5183818316178352505050506040518060600160405280603281526020016124f76032913960745188169190611dbd565b90505f81806020019051810190611acb91906124bc565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b5f8181526001830160205260408120548015611bc3575f611b0c6001836123b6565b85549091505f90611b1f906001906123b6565b90505f865f018281548110611b3657611b36612472565b905f5260205f200154905080875f018481548110611b5657611b56612472565b5f91825260209091200155611b6c836001612351565b5f8281526001890160205260409020558654879080611b8d57611b8d6124d7565b600190038181905f5260205f20015f90559055866001015f8781526020019081526020015f205f9055600194505050505061092c565b5f91505061092c565b5f818152600183016020526040812054611c1157508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561092c565b505f61092c565b5f828152600184016020526040812054808203611c7d57505060408051808201825283815260208082018481528654600181810189555f89815284812095516002909302909501918255915190820155865486845281880190925292909120556115ae565b8285611c8a6001846123b6565b81548110611c9a57611c9a612472565b905f5260205f209060020201600101819055505f9150506115ae565b6074518216611d075760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610673565b611d10816112cc565b15611d5d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610673565b60745182165f908152600160205260409020611d799082611864565b50611d866002828461186f565b5060405181906074518416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60606115ab84845f8585843b611e155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610673565b5f5f86607451168587604051611e2b91906124eb565b5f6040518083038185875af1925050503d805f8114611e65576040519150601f19603f3d011682016040523d82523d5f602084013e611e6a565b606091505b5091509150611e7a828286611e85565b979650505050505050565b60608315611e945750816115ae565b825115611ea45782518084602001fd5b8160405162461bcd60e51b81526004016106739190611f33565b5f60208284031215611ece575f5ffd5b5035919050565b6001600160e01b031981168114610a19575f5ffd5b5f60208284031215611efa575f5ffd5b813561092981611ed5565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109296020830184611f05565b60745181359081168114611f57575f5ffd5b919050565b5f5f60408385031215611f6d575f5ffd5b611f7683611f45565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f606851841115611fac57611fac611f84565b50604051601f19601f85018116603f0116810181811060685182111715611fd557611fd5611f84565b604052838152905080828401851015611fec575f5ffd5b838360208301375f60208583010152509392505050565b5f60208284031215612013575f5ffd5b8135606851811115612023575f5ffd5b8201601f81018413612033575f5ffd5b61140a84823560208401611f98565b5f5f5f60608486031215612054575f5ffd5b61205d84611f45565b925061206b60208501611f45565b929592945050506040919091013590565b5f6020828403121561208c575f5ffd5b61092982611f45565b5f5f604083850312156120a6575f5ffd5b6120af83611f45565b9150602083013580151581146120c3575f5ffd5b809150509250929050565b5f5f5f5f608085870312156120e1575f5ffd5b6120ea85611f45565b93506120f860208601611f45565b9250604085013591506060850135606851811115612114575f5ffd5b8501601f81018713612124575f5ffd5b61213387823560208401611f98565b91505092959194509250565b5f5f60408385031215612150575f5ffd5b61215983611f45565b915061216760208401611f45565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806121b957607f821691505b6020821081036121d757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610892578282111561089257805f5260205f20601f840160051c602085101561220857505f5b90810190601f840160051c035f5b8181101561222b575f83820155600101612216565b505050505050565b815160685181111561224757612247611f84565b61225b8161225584546121a5565b846121dd565b6020601f82116001811461228d575f83156122765750848201515b5f19600385901b1c1916600184901b1784556122e5565b5f84815260208120601f198516915b828110156122bc578785015182556020948501946001909201910161229c565b50848210156122d957868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561092c5761092c61233d565b5f81518060208401855e5f93019283525090919050565b5f6115ab6123898386612364565b84612364565b634e487b7160e01b5f52601260045260245ffd5b5f826123b1576123b161238f565b500690565b8181038181111561092c5761092c61233d565b808202811582820484141761092c5761092c61233d565b5f826123ee576123ee61238f565b500490565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b5f600182016124565761245661233d565b5060010190565b5f8161246b5761246b61233d565b505f190190565b634e487b7160e01b5f52603260045260245ffd5b6074518516815260745184166020820152826040820152608060608201525f6124b26080830184611f05565b9695505050505050565b5f602082840312156124cc575f5ffd5b815161092981611ed5565b634e487b7160e01b5f52603160045260245ffd5b5f610929828461236456fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e