solc-0.8.35 0xdac17f958d2ee523a2206206994597c13d831ec7 via-ir

4870 bytes

60806040526004361015610011575f80fd5b5f5f3560e01c806306fdde0314610faf5780630753c30c14610f33578063095ea7b314610dfd5780630e136b1914610dd75780630ecb93c014610d5f57806318160ddd14610d4457806323b872dd14610b0857806326976e3f14610adf57806327e235e314610aa6578063313ce56714610a885780633539071414610a6a5780633eaaf86b14610a4c5780633f4ba83a146109ed57806359bf1abe1461030a5780635c6581651461099a5780635c975abb1461097557806370a08231146109515780638456cb59146108ed578063893d20e8146108c65780638da5cb5b146108c657806395d89b41146107bd578063a9059cbb14610596578063c0324c77146104f2578063cc872b6614610438578063db006a751461039c578063dd62ed3e14610367578063dd644f7214610349578063e47d60601461030a578063e4997dc514610295578063e5b5019a14610279578063f2fde38b146102265763f3bdc2281461017a575f80fd5b3461022357602036600319011261022357610193611103565b81546001600160a01b03163303610221576001600160a01b0381168083526006602052604083205490919060ff161561021d577f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c6916101f36040926111ca565b8185526002602052848381205561020c81600154611233565b60015582519182526020820152a180f35b8280fd5b505b80fd5b503461022357602036600319011261022357610240611103565b8154906001600160a01b038216330361021d576001600160a01b03169081610266578280f35b6001600160a01b0319161781555f808280f35b503461022357806003193601126102235760206040515f198152f35b5034610223576020366003190112610223576102af611103565b81546001600160a01b03163303610221576001600160a01b0316808252600660209081526040808420805460ff19169055519182527fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c91a180f35b50346102235760203660031901126102235760209060ff906040906001600160a01b03610335611103565b168152600684522054166040519015158152f35b50346102235780600319360112610223576020600354604051908152f35b5034610223576040366003190112610223576020610394610386611103565b61038e611119565b90611240565b604051908152f35b50346102235760203660031901126102235780546001600160a01b03166004353382900361021d576001549080821061043457828452600260205280604085205410610434577f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a449261041082602094611233565b60015584526002825260408420610428828254611233565b9055604051908152a180f35b8380fd5b5034610223576020366003190112610223578054600435906001600160a01b03163381900361021d5760015461046e838261112f565b111561021d57808352600260205261048a82604085205461112f565b81845260026020526040842054101561021d577fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a91602091845260028252604084206104d782825461112f565b90556104e58160015461112f565b600155604051908152a180f35b503461022357604036600319011261022357805460043590602435906001600160a01b0316330361021d57601482101561021d57603281101561021d5781600355600954604d811161058257916105706040927fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e94600a0a906112de565b8060045582519182526020820152a180f35b634e487b7160e01b84526011600452602484fd5b503461022357604036600319011261022357806105b1611103565b6024359060ff835460a01c166107b957338352600660205260ff6040842054166107b957600a5460a01c60ff161561065e57600a546001600160a01b031691823b156106595760405163370c4c0560e11b81523360048201526001600160a01b0392909216602483015260448201529082908290606490829084905af1801561064e5761063d57505080f35b81610647916110a3565b6102235780f35b6040513d84823e3d90fd5b505050fd5b91506044361061021d57612710610677600354836112de565b04916004548084116107b1575b50610691828411156112c3565b6106bd61069e8484611233565b92338652600260205260408620546106b8818311156112c3565b611233565b3385526002602052604085205560018060a01b031691828452600260205260408420546106f66106ed848361112f565b918210156112c3565b8385526002602052604085205580610739575b506040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a380f35b83546001600160a01b0316808552600260205260408520549061076861075f848461112f565b928310156112c3565b85526002602052604085205560018060a01b03845416906040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a35f610709565b92505f610684565b5050fd5b50346102235780600319360112610223576040519080600854908160011c916001811680156108bc575b6020841081146108a8578386529081156108815750600114610824575b61082084610814818603826110a3565b604051918291826110d9565b0390f35b600881527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3939250905b8082106108675750909150810160200161081482610804565b91926001816020925483858801015201910190929161084e565b60ff191660208087019190915292151560051b850190920192506108149150839050610804565b634e487b7160e01b83526022600452602483fd5b92607f16926107e7565b5034610223578060031936011261022357546040516001600160a01b039091168152602090f35b503461022357806003193601126102235780546001600160a01b03811633036102215760ff8160a01c166102215760ff60a01b1916600160a01b1781557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6258180a180f35b5034610223576020366003190112610223576020610394610970611103565b6111ca565b503461022357806003193601126102235760ff6020915460a01c166040519015158152f35b50346102235760403660031901126102235760406109b6611103565b916109bf611119565b9260018060a01b031681526005602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461022357806003193601126102235780546001600160a01b03811633036102215760ff8160a01c16156102215760ff60a01b191681557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b338180a180f35b50346102235780600319360112610223576020600154604051908152f35b50346102235780600319360112610223576020600454604051908152f35b50346102235780600319360112610223576020600954604051908152f35b5034610223576020366003190112610223576020906040906001600160a01b03610ace611103565b168152600283522054604051908152f35b5034610223578060031936011261022357600a546040516001600160a01b039091168152602090f35b50346102235760603660031901126102235780610b23611103565b610b2b611119565b6044359160ff845460a01c16610659576001600160a01b03168084526006602052604084205490919060ff1661065957600a5460a01c60ff1615610bc657600a546001600160a01b0316803b15610bc2578492836084926040519687958694638b477adb60e01b8652336004870152602486015260018060a01b0316604485015260648401525af1801561064e5761063d57505080f35b8480fd5b925090606436106104345781845260056020526040842060018060a01b0333165f5260205260405f205492612710610c00600354846112de565b0493600454808611610d3b575b50916020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93825f198210610d07575b610c4b91508711156112c3565b610c71610c588784611233565b928689526002855260408920546106b8818311156112c3565b85885260028452604088205560018060a01b031694858752600283526040872054610c9f6106ed848361112f565b86885260028452604088205580610cbc575b50604051908152a380f35b86546001600160a01b031680885260028452604088205490610ce161075f848461112f565b885260028452604088205584848460018060a01b038a541693604051908152a35f610cb1565b816106b8610d17938311156112c3565b858852600584526040882060018060a01b0333165f52845260405f20555f82610c3e565b94506020610c0d565b50346102235780600319360112610223576020610394611150565b503461022357602036600319011261022357610d79611103565b81546001600160a01b03163303610221576001600160a01b0316808252600660209081526040808420805460ff19166001179055519182527f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc91a180f35b5034610223578060031936011261022357602060ff600a5460a01c166040519015158152f35b5034610ea3576040366003190112610ea357610e17611103565b6024359060443610610ea357600a5460a01c60ff1615610ea757600a546001600160a01b031691823b15610ea35760405163aee92d3360e01b81523360048201526001600160a01b039290921660248301526044820152905f908290606490829084905af18015610e9857610e8a575080f35b610e9691505f906110a3565b005b6040513d5f823e3d90fd5b5f80fd5b81151580610f0c575b610ea357335f52600560205260405f2060018060a01b0382165f526020528160405f205560405191825260018060a01b0316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a380f35b50335f52600560205260405f2060018060a01b0382165f5260205260405f20541515610eb0565b34610ea3576020366003190112610ea357610f4c611103565b5f546001600160a01b03163303610ea357600a80546001600160a81b0319166001600160a01b03909216918217600160a01b1790556040519081527fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e90602090a1005b34610ea3575f366003190112610ea3576040515f6007548060011c90600181168015611099575b602083108114611085578285529081156110615750600114611003575b61082083610814818503826110a3565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b80821061104757509091508101602001610814610ff3565b91926001816020925483858801015201910190929161102f565b60ff191660208086019190915291151560051b840190910191506108149050610ff3565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610fd6565b90601f8019910116810190811067ffffffffffffffff8211176110c557604052565b634e487b7160e01b5f52604160045260245ffd5b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b0382168203610ea357565b602435906001600160a01b0382168203610ea357565b9190820180921161113c57565b634e487b7160e01b5f52601160045260245ffd5b600a5460ff8160a01c165f146111c3576040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa908115610e98575f91611194575090565b90506020813d6020116111bb575b816111af602093836110a3565b81010312610ea3575190565b3d91506111a2565b5060015490565b600a549060ff8260a01c165f14611217576040516370a0823160e01b81526001600160a01b0391821660048201529160209183916024918391165afa908115610e98575f91611194575090565b6001600160a01b03165f90815260026020526040902054919050565b9190820391821161113c57565b90600a549160ff8360a01c165f1461129757604051636eb1769f60e11b81526001600160a01b0391821660048201529181166024830152909160209183916044918391165afa908115610e98575f91611194575090565b6001600160a01b039081165f908152600560209081526040808320939094168252919091522054919050565b156112ca57565b634e487b7160e01b5f52600160045260245ffd5b908115611300578082029182049081810361113c576112fd91146112c3565b90565b50505f9056