solc-0.8.36-fakeopcode 0x4e90495f66fb04a5fba401967abd607e2ea0ab46 optimized-low-runs

10448 bytes

608060405234801561000f575f5ffd5b50600436106101c0575f3560e01c806301ffc9a7146101c457806302c37ddc146101ec57806306fdde0314610201578063081812fc14610216578063095ea7b314610236578063127a529814610249578063166c4b05146102775780631785f53c1461028a57806318160ddd1461029d57806323b872dd146102a557806324d7806c146102b8578063278d9c41146102cb57806328db38b4146102de5780632f745c59146102f15780633f4ba83a1461030457806342842e0e1461030c57806342966c681461031f5780634f6ccce71461033257806355f804b3146103455780635c975abb146103585780636352211e1461036457806367e971ce14610377578063704802751461039f57806370a08231146103b25780638129fc1c146103c55780638456cb59146103cd5780638bad0c0a146103d55780638d232094146103dd57806395d89b41146103f05780639cd3cad6146103f8578063a140ae231461040b578063a22cb4651461041e578063b88d4fde14610431578063c4d66de814610444578063c87b56dd14610457578063d890c8e21461046a578063e985e9c51461047d578063f980f3dc14610490575b5f5ffd5b6101d76101d2366004612022565b6104a3565b60405190151581526020015b60405180910390f35b6101ff6101fa36600461203d565b6104c1565b005b6102096104ce565b6040516101e39190612082565b61022961022436600461203d565b61055f565b6040516101e39190612094565b6101ff6102443660046120c2565b61058c565b61026961025736600461203d565b5f90815261013d602052604090205490565b6040519081526020016101e3565b6101ff6102853660046120ea565b6105c7565b6101ff61029836600461210b565b6105f6565b609e54610269565b6101ff6102b3366004612124565b610624565b6101d76102c636600461210b565b610658565b6101d76102d9366004612235565b61066a565b6101d76102ec3660046120ea565b61072c565b6102696102ff3660046120c2565b61075a565b6101ff6107a8565b6101ff61031a366004612124565b61085e565b6101ff61032d36600461203d565b61088d565b61026961034036600461203d565b6108fb565b6101ff6103533660046122ee565b610932565b6101065460ff166101d7565b61022961037236600461203d565b610988565b61038a6103853660046120c2565b6109a8565b604080519283526020830191909152016101e3565b6101ff6103ad36600461210b565b6109d0565b6102696103c036600461210b565b6109fe565b6101ff610a2e565b6101ff610ad9565b6101ff610b60565b6101ff6103eb36600461231f565b610b6b565b610209610c6e565b6101ff6104063660046120ea565b610c7e565b6101d76104193660046120ea565b610caf565b6101ff61042c3660046123d4565b610d2c565b6101ff61043f36600461240d565b610d5a565b6101ff61045236600461210b565b610d90565b61020961046536600461203d565b610e15565b6101d7610478366004612477565b610ef6565b6101d761048b3660046124a9565b610f57565b6101d761049e3660046124d1565b610f84565b6001600160e01b0319165f9081526033602052604090205460ff1690565b6104cb8133611043565b50565b606061013980546104de9061256a565b80601f016020809104026020016040519081016040528092919081815260200182805461050a9061256a565b80156105555780601f1061052c57610100808354040283529160200191610555565b820191905f5260205f20905b81548152906001019060200180831161053857829003601f168201915b5050505050905090565b5f61056982611093565b610571575f5ffd5b505f908152606760205260409020546001600160a01b031690565b6101065460ff16156105b95760405162461bcd60e51b81526004016105b0906125a2565b60405180910390fd5b6105c382826110af565b5050565b6105d033610658565b6105ec5760405162461bcd60e51b81526004016105b0906125ce565b6105c38282611043565b6105ff33610658565b61061b5760405162461bcd60e51b81526004016105b0906125ce565b6104cb81611151565b6101065460ff16156106485760405162461bcd60e51b81526004016105b0906125a2565b610653838383611192565b505050565b5f61066460d2836111af565b92915050565b610106545f9060ff16156106905760405162461bcd60e51b81526004016105b0906125a2565b8261069b813361072c565b6106b75760405162461bcd60e51b81526004016105b0906125fb565b5f5b835181101561070957610700858261013c5460016106d79190612643565b6106e19190612643565b8684815181106106f3576106f3612656565b60200260200101516111e1565b506001016106b9565b50825161013c5f82825461071d9190612643565b90915550600195945050505050565b5f61073682610658565b8061075357505f83815260d36020526040902061075390836111af565b9392505050565b5f610764836109fe565b821061076e575f5ffd5b6001600160a01b0383165f908152609c6020526040902080548390811061079757610797612656565b905f5260205f200154905092915050565b6107b133610658565b6107cd5760405162461bcd60e51b81526004016105b0906125ce565b6101065460ff166108195760405162461bcd60e51b815260206004820152601660248201527510dbdb9d1c9858dd081a5cc81b9bdd0814185d5cd95960521b60448201526064016105b0565b610106805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90610854903390612094565b60405180910390a1565b6101065460ff16156108825760405162461bcd60e51b81526004016105b0906125a2565b610653838383611241565b610897338261125b565b806108a657506108a633610658565b6108f25760405162461bcd60e51b815260206004820152601e60248201527f53656e64657220646f65736e27742068617665207065726d697373696f6e000060448201526064016105b0565b6104cb816112ab565b5f610905609e5490565b821061090f575f5ffd5b609e828154811061092257610922612656565b905f5260205f2001549050919050565b61093b33610658565b6109575760405162461bcd60e51b81526004016105b0906125ce565b6101065460ff161561097b5760405162461bcd60e51b81526004016105b0906125a2565b61013b6105c382826126c0565b5f818152606660205260408120546001600160a01b031680610664575f5ffd5b5f5f6109b4848461075a565b5f81815261013d60205260409020549092505b90509250929050565b6109d933610658565b6109f55760405162461bcd60e51b81526004016105b0906125ce565b6104cb816112bd565b5f6001600160a01b038216610a11575f5ffd5b6001600160a01b0382165f90815260686020526040902054610664565b5f54610100900460ff1680610a425750303b155b80610a4f57505f5460ff16155b610a6b5760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff1981166101011790915560405162461bcd60e51b815260206004820152602360248201527f506f61703a2075736520706172616d65746572697a656420696e697469616c696044820152623d32b960e91b606482015261010090910460ff16906084016105b0565b610ae233610658565b610afe5760405162461bcd60e51b81526004016105b0906125ce565b6101065460ff1615610b225760405162461bcd60e51b81526004016105b0906125a2565b610106805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890610854903390612094565b610b6933611151565b565b5f54610100900460ff1680610b7f5750303b155b80610b8c57505f5460ff16155b610ba85760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff19811661010117909155610100900460ff16610bc86112fe565b610bd0611384565b610bd933610d90565b610be16113f9565b5f5b8251811015610c1657610c0e838281518110610c0157610c01612656565b60200260200101516112bd565b600101610be3565b50610139610c2486826126c0565b5061013a610c3285826126c0565b5061013b610c4084826126c0565b50610c51635b5e139f60e01b611461565b5f80549115156101000261ff001990921691909117905550505050565b606061013a80546104de9061256a565b81610c89813361072c565b610ca55760405162461bcd60e51b81526004016105b0906125fb565b610653838361149b565b610106545f9060ff1615610cd55760405162461bcd60e51b81526004016105b0906125a2565b82610ce0813361072c565b610cfc5760405162461bcd60e51b81526004016105b0906125fb565b600161013c5f828254610d0f9190612643565b92505081905550610d248461013c54856111e1565b949350505050565b6101065460ff1615610d505760405162461bcd60e51b81526004016105b0906125a2565b6105c382826114eb565b6101065460ff1615610d7e5760405162461bcd60e51b81526004016105b0906125a2565b610d8a8484848461156a565b50505050565b5f54610100900460ff1680610da45750303b155b80610db157505f5460ff16155b610dcd5760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff19811661010117909155610100900460ff16610dee82610658565b610dfb57610dfb826112bd565b5f80549115156101000261ff001990921691909117905550565b5f81815261013d602052604090205461013b80546060929161075391610e3a9061256a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e669061256a565b8015610eb15780601f10610e8857610100808354040283529160200191610eb1565b820191905f5260205f20905b815481529060010190602001808311610e9457829003601f168201915b5050505050610ebf83611589565b604051806040016040528060018152602001602f60f81b815250610ee287611589565b60405180602001604052805f81525061169c565b610106545f9060ff1615610f1c5760405162461bcd60e51b81526004016105b0906125a2565b83610f27813361072c565b610f435760405162461bcd60e51b81526004016105b0906125fb565b610f4e8585856111e1565b95945050505050565b6001600160a01b039182165f90815260696020908152604080832093909416825291909152205460ff1690565b610106545f9060ff1615610faa5760405162461bcd60e51b81526004016105b0906125a2565b610fb333610658565b610fcf5760405162461bcd60e51b81526004016105b0906125ce565b5f5b835181101561102157611018848281518110610fef57610fef612656565b60200260200101518261013c5460016110089190612643565b6110129190612643565b856111e1565b50600101610fd1565b50825161013c5f8282546110359190612643565b909155506001949350505050565b5f82815260d36020526040902061105a908261194d565b6040516001600160a01b0382169083907fb6882c4d609d560f6d57e78e73dd96027f0d9852739b0b922537a6dd3c8e944c905f90a35050565b5f908152606660205260409020546001600160a01b0316151590565b5f6110b982610988565b90506001600160a01b03808216908416036110d2575f5ffd5b336001600160a01b03821614806110ee57506110ee8133610f57565b6110f6575f5ffd5b5f8281526067602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61115c60d28261194d565b6040516001600160a01b038216907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f905f90a250565b61119c338261125b565b6111a4575f5ffd5b610653838383611992565b5f6001600160a01b0382166111c2575f5ffd5b506001600160a01b03165f908152602091909152604090205460ff1690565b5f6111ec82846119b1565b5f83815261013d602090815260409182902086905581518681529081018590527f4b3711cd7ece062b0828c1b6e08d814a72d4c003383a016c833cbb1b45956e34910160405180910390a15060019392505050565b61065383838360405180602001604052805f815250610d5a565b5f5f61126683610988565b90506001600160a01b03848116908216148061129b57506001600160a01b0384166112908461055f565b6001600160a01b0316145b80610d245750610d248185610f57565b6104cb6112b782610988565b82611a0c565b6112c860d282611a28565b6040516001600160a01b038216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339905f90a250565b5f54610100900460ff16806113125750303b155b8061131f57505f5460ff16155b61133b5760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff19811661010117909155610100900460ff1661135b611a71565b61136b6380ac58cd60e01b611461565b5f80549115156101000261ff0019909216919091179055565b5f54610100900460ff16806113985750303b155b806113a557505f5460ff16155b6113c15760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff19811661010117909155610100900460ff166113e1611ad6565b6113e9575f5ffd5b61136b63780e9d6360e01b611461565b5f54610100900460ff168061140d5750303b155b8061141a57505f5460ff16155b6114365760405162461bcd60e51b81526004016105b09061277e565b5f8054610106805460ff1916905561ffff1981166101009182900460ff161515909102176001179055565b6001600160e01b03198082169003611477575f5ffd5b6001600160e01b0319165f908152603360205260409020805460ff19166001179055565b5f82815260d3602052604090206114b29082611a28565b6040516001600160a01b0382169083907fe1bd660d9f7c60e6fb12dd6479fdde12d21fc96385dc7b9b022c0b2f319e7391905f90a35050565b336001600160a01b038316036114ff575f5ffd5b335f8181526069602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611575848484610624565b61158184848484611aec565b610d8a575f5ffd5b6060815f036115af5750506040805180820190915260018152600360fc1b602082015290565b815f5b81156115d857806115c2816127cc565b91506115d19050600a836127f8565b91506115b2565b5f816001600160401b038111156115f1576115f161215e565b6040519080825280601f01601f19166020018201604052801561161b576020820181803683370190505b5090505f61162a60018461280b565b90505b85156116935761163e600a8761281e565b611649906030612643565b60f81b828261165781612831565b93508151811061166957611669612656565b6001600160f81b0319909216915f83901a9101602001535061168c600a876127f8565b955061162d565b50949350505050565b805182518451865188516060948a948a948a948a948a945f949093909290916116c59190612643565b6116cf9190612643565b6116d99190612643565b6116e39190612643565b6001600160401b038111156116fa576116fa61215e565b6040519080825280601f01601f191660200182016040528015611724576020820181803683370190505b509050805f805b88518110156117925788818151811061174657611746612656565b01602001516001600160f81b0319168383611760816127cc565b94508151811061177257611772612656565b6001600160f81b0319909216915f83901a9101602001535060010161172b565b505f5b87518110156117fc578781815181106117b0576117b0612656565b01602001516001600160f81b03191683836117ca816127cc565b9450815181106117dc576117dc612656565b6001600160f81b0319909216915f83901a91016020015350600101611795565b505f5b86518110156118665786818151811061181a5761181a612656565b01602001516001600160f81b0319168383611834816127cc565b94508151811061184657611846612656565b6001600160f81b0319909216915f83901a910160200153506001016117ff565b505f5b85518110156118d05785818151811061188457611884612656565b01602001516001600160f81b031916838361189e816127cc565b9450815181106118b0576118b0612656565b6001600160f81b0319909216915f83901a91016020015350600101611869565b505f5b845181101561193a578481815181106118ee576118ee612656565b01602001516001600160f81b0319168383611908816127cc565b94508151811061191a5761191a612656565b6001600160f81b0319909216915f83901a910160200153506001016118d3565b50909d9c50505050505050505050505050565b6001600160a01b03811661195f575f5ffd5b61196982826111af565b611971575f5ffd5b6001600160a01b03165f90815260209190915260409020805460ff19169055565b61199d838383611b96565b6119a78382611c5e565b6106538282611d5a565b6119bb8282611d97565b6119c58282611d5a565b6105c381609e80545f838152609f60205260408120829055600182018355919091527fcfe2a20ff701a1f3e14f63bd70d6c6bc6fba8172ec6d5a505cdab3927c0a9de60155565b611a168282611e21565b5f90815261013d602052604081205550565b6001600160a01b038116611a3a575f5ffd5b611a4482826111af565b15611a4d575f5ffd5b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f54610100900460ff1680611a855750303b155b80611a9257505f5460ff16155b611aae5760405162461bcd60e51b81526004016105b09061277e565b5f805461ffff19811661010117909155610100900460ff1661136b6301ffc9a760e01b611461565b5f611ae76380ac58cd60e01b6104a3565b905090565b5f6001600160a01b0384163b611b0457506001610d24565b604051630a85bd0160e11b81525f906001600160a01b0386169063150b7a0290611b389033908a9089908990600401612846565b6020604051808303815f875af1158015611b54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b789190612880565b6001600160e01b031916630a85bd0160e11b14915050949350505050565b6001600160a01b038316611ba982610988565b6001600160a01b031614611bbb575f5ffd5b6001600160a01b038216611bcd575f5ffd5b611bd681611e4c565b6001600160a01b0383165f908152606860205260409020611bf690611e85565b6001600160a01b0382165f908152606860205260409020611c1690611e96565b5f8181526066602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716915f5160206128b05f395f51905f5291a4505050565b6001600160a01b0382165f908152609c6020526040812054611c81906001611eb1565b5f838152609d6020526040902054909150808214611d1b576001600160a01b0384165f908152609c60205260408120805484908110611cc257611cc2612656565b5f9182526020808320909101546001600160a01b0388168352609c90915260409091208054919250829184908110611cfc57611cfc612656565b5f918252602080832090910192909255918252609d9052604090208190555b6001600160a01b0384165f908152609c60205260409020805480611d4157611d4161289b565b600190038181905f5260205f20015f9055905550505050565b6001600160a01b039091165f908152609c602081815260408084208054868652609d84529185208290559282526001810183559183529091200155565b6001600160a01b038216611da9575f5ffd5b611db281611093565b15611dbb575f5ffd5b5f81815260666020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260689091529020611df990611e96565b60405181906001600160a01b038416905f905f5160206128b05f395f51905f52908290a45050565b611e2b8282611ec9565b611e358282611c5e565b5f818152609d60205260408120556105c381611f58565b5f818152606760205260409020546001600160a01b0316156104cb575f90815260676020526040902080546001600160a01b0319169055565b8054611e92906001611eb1565b9055565b6001815f015f828254611ea99190612643565b909155505050565b5f82821115611ebe575f5ffd5b5f610d24838561280b565b6001600160a01b038216611edc82610988565b6001600160a01b031614611eee575f5ffd5b611ef781611e4c565b6001600160a01b0382165f908152606860205260409020611f1790611e85565b5f8181526066602052604080822080546001600160a01b0319169055518291906001600160a01b038516905f5160206128b05f395f51905f52908390a45050565b609e545f90611f68906001611eb1565b5f838152609f6020526040812054609e8054939450909284908110611f8f57611f8f612656565b905f5260205f200154905080609e8381548110611fae57611fae612656565b5f918252602080832090910192909255828152609f90915260409020829055609e805480611fde57611fde61289b565b600190038181905f5260205f20015f905590555f609f5f8681526020019081526020015f208190555050505050565b6001600160e01b0319811681146104cb575f5ffd5b5f60208284031215612032575f5ffd5b81356107538161200d565b5f6020828403121561204d575f5ffd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107536020830184612054565b6001600160a01b03909116815260200190565b80356001600160a01b03811681146120bd575f5ffd5b919050565b5f5f604083850312156120d3575f5ffd5b6120dc836120a7565b946020939093013593505050565b5f5f604083850312156120fb575f5ffd5b823591506109c7602084016120a7565b5f6020828403121561211b575f5ffd5b610753826120a7565b5f5f5f60608486031215612136575f5ffd5b61213f846120a7565b925061214d602085016120a7565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561219a5761219a61215e565b604052919050565b5f6001600160401b038211156121ba576121ba61215e565b5060051b60200190565b5f82601f8301126121d3575f5ffd5b81356121e66121e1826121a2565b612172565b8082825260208201915060208360051b860101925085831115612207575f5ffd5b602085015b8381101561222b5761221d816120a7565b83526020928301920161220c565b5095945050505050565b5f5f60408385031215612246575f5ffd5b8235915060208301356001600160401b03811115612262575f5ffd5b61226e858286016121c4565b9150509250929050565b5f806001600160401b038411156122915761229161215e565b50601f8301601f19166020016122a681612172565b9150508281528383830111156122ba575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126122df575f5ffd5b61075383833560208501612278565b5f602082840312156122fe575f5ffd5b81356001600160401b03811115612313575f5ffd5b610d24848285016122d0565b5f5f5f5f60808587031215612332575f5ffd5b84356001600160401b03811115612347575f5ffd5b612353878288016122d0565b94505060208501356001600160401b0381111561236e575f5ffd5b61237a878288016122d0565b93505060408501356001600160401b03811115612395575f5ffd5b6123a1878288016122d0565b92505060608501356001600160401b038111156123bc575f5ffd5b6123c8878288016121c4565b91505092959194509250565b5f5f604083850312156123e5575f5ffd5b6123ee836120a7565b915060208301358015158114612402575f5ffd5b809150509250929050565b5f5f5f5f60808587031215612420575f5ffd5b612429856120a7565b9350612437602086016120a7565b92506040850135915060608501356001600160401b03811115612458575f5ffd5b8501601f81018713612468575f5ffd5b6123c887823560208401612278565b5f5f5f60608486031215612489575f5ffd5b83359250602084013591506124a0604085016120a7565b90509250925092565b5f5f604083850312156124ba575f5ffd5b6124c3836120a7565b91506109c7602084016120a7565b5f5f604083850312156124e2575f5ffd5b82356001600160401b038111156124f7575f5ffd5b8301601f81018513612507575f5ffd5b80356125156121e1826121a2565b8082825260208201915060208360051b850101925087831115612536575f5ffd5b6020840193505b8284101561255857833582526020938401939091019061253d565b94506109c792505050602084016120a7565b600181811c9082168061257e57607f821691505b60208210810361259c57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526012908201527110dbdb9d1c9858dd081a5cc814185d5cd95960721b604082015260600190565b60208082526013908201527229b2b73232b91034b9903737ba1020b236b4b760691b604082015260600190565b6020808252601a908201527929b2b73232b91034b9903737ba1022bb32b73a1026b4b73a32b960311b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106645761066461262f565b634e487b7160e01b5f52603260045260245ffd5b601f821115610653578282111561065357805f5260205f20601f840160051c602085101561269557505f5b90810190601f840160051c035f5b818110156126b8575f838201556001016126a3565b505050505050565b81516001600160401b038111156126d9576126d961215e565b6126ed816126e7845461256a565b8461266a565b6020601f82116001811461271f575f83156127085750848201515b5f19600385901b1c1916600184901b178455612777565b5f84815260208120601f198516915b8281101561274e578785015182556020948501946001909201910161272e565b508482101561276b57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b5f600182016127dd576127dd61262f565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82612806576128066127e4565b500490565b818103818111156106645761066461262f565b5f8261282c5761282c6127e4565b500690565b5f8161283f5761283f61262f565b505f190190565b8460601b60601c81528360601b60601c6020820152826040820152608060608201525f6128766080830184612054565b9695505050505050565b5f60208284031215612890575f5ffd5b81516107538161200d565b634e487b7160e01b5f52603160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef