[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "beforeTokenTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
610160604052346200007057620000156200026d565b6200001f62000076565b61214d620012f7823960805181611347015260a0518161137e015260c0518161130d015260e05181611ab401526101005181611ad9015261012051816114d201526101405181611512015261214d90f35b6200007c565b60405190565b600080fd5b601f801991011690565b634e487b7160e01b600052604160045260246000fd5b90620000ad9062000081565b810190811060018060401b03821117620000c657604052565b6200008b565b90620000e3620000db62000076565b9283620000a1565b565b60018060401b03811162000104576200010060209162000081565b0190565b6200008b565b90620001206200011a83620000e5565b620000cc565b918252565b60007f4d7574616e7420426f797320436c756200000000000000000000000000000000910152565b6200015960106200010a565b90620001686020830162000125565b565b620001746200014d565b90565b60007f4d42430000000000000000000000000000000000000000000000000000000000910152565b620001ab60036200010a565b90620001ba6020830162000177565b565b620001c66200019f565b90565b90565b90565b60ff1690565b634e487b7160e01b600052601160045260246000fd5b620001f690620001cf565b604d81116200020557600a0a90565b620001d5565b90565b62000227620002216200022d926200020b565b620001cc565b620001c9565b90565b620002426200024991939293620001c9565b92620001c9565b9162000257838202620001c9565b9281840414901517156200026757565b620001d5565b620002a16200027b62000828565b620002856200016a565b6200028f6200016a565b906200029a620001bc565b9262000350565b620002db33620002d4633b9aca00620002ce620002c7620002c162000861565b620001eb565b916200020e565b62000230565b906200087b565b565b90565b60018060a01b031690565b62000304620002fe6200030a92620002dd565b620001cc565b620002e0565b90565b6200031890620002eb565b90565b6200032690620002e0565b90565b62000334906200031b565b9052565b91906200034e9060006020850194019062000329565b565b9290916200035e926200041a565b8062000380620003796200037360006200030d565b6200031b565b916200031b565b14620003935762000391906200098c565b565b620003c4620003a360006200030d565b620003ad62000076565b918291631e4fbdf760e01b83526004830162000338565b0390fd5b60007f3100000000000000000000000000000000000000000000000000000000000000910152565b620003fc60016200010a565b906200040b60208301620003c8565b565b62000417620003f0565b90565b906200043292916200042b6200040d565b9062000434565b565b906200044293929162000492565b565b90565b90565b60200190565b5190565b6200046d620004676200047392620002e0565b620001cc565b620002e0565b90565b620004819062000454565b90565b6200048f9062000476565b90565b620004a76200050594620004e5939462000541565b620004bf81620004b8600562000444565b9062000a68565b61012052620004db83620004d4600662000444565b9062000a68565b6101405262000447565b620004fb620004f48262000450565b916200044a565b2060e05262000447565b6200051b620005148262000450565b916200044a565b20610100524660a0526200052e62000b96565b6080526200053c3062000484565b60c052565b906200054d916200054f565b565b906200055b91620007fd565b565b5190565b634e487b7160e01b600052602260045260246000fd5b90600160028304921680156200059a575b60208310146200059457565b62000561565b91607f169162000588565b600052602060002090565b601f602091010490565b1b90565b91906008620005de910291620005d760001984620005ba565b92620005ba565b9181191691161790565b62000601620005fb6200060792620001c9565b620001cc565b620001c9565b90565b90565b919062000628620006226200063193620005e8565b6200060a565b908354620005be565b9055565b600090565b62000650916200064962000635565b916200060d565b565b5b8181106200065f575050565b806200066f60006001936200063a565b0162000653565b9190601f811162000687575b505050565b62000696620006c193620005a5565b906020620006a484620005b0565b83019310620006ca575b620006b990620005b0565b019062000652565b38808062000682565b9150620006b981929050620006ae565b1c90565b90620006f19060001990600802620006da565b191690565b816200070291620006de565b906002021790565b9062000716816200055d565b9060018060401b038211620007e9576200073d8262000736855462000577565b8562000676565b602090601f8311600114620007775791809162000765936000926200076a575b5050620006f6565b90555b565b909150015138806200075d565b601f198316916200078885620005a5565b9260005b818110620007d057509160029391856001969410620007b3575b5050500201905562000768565b620007c5910151601f841690620006de565b9055388080620007a6565b919360206001819287870151815501950192016200078c565b6200008b565b90620007fb916200070a565b565b906200080f62000817926003620007ef565b6004620007ef565b6200082162000c74565b565b600090565b6200083262000823565b503390565b600090565b90565b62000858620008526200085e926200083c565b620001cc565b620001cf565b90565b6200086b62000837565b506200087860126200083f565b90565b806200089d620008966200089060006200030d565b6200031b565b916200031b565b14620008bf57620008bd91620008b460006200030d565b91909162000e09565b565b620008f0620008cf60006200030d565b620008d962000076565b91829163ec442f0560e01b83526004830162000338565b0390fd5b60001c90565b60018060a01b031690565b620009146200091a91620008f4565b620008fa565b90565b62000929905462000905565b90565b60001b90565b906200094560018060a01b03916200092c565b9181191691161790565b6200095a9062000476565b90565b90565b906200097a6200097462000982926200094f565b6200095d565b825462000932565b9055565b60000190565b6200099860086200091d565b620009a582600862000960565b90620009dd620009d67f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936200094f565b916200094f565b91620009e862000076565b80620009f48162000986565b0390a3565b600090565b90565b62000a1a62000a1462000a2092620009fe565b620001cc565b620001c9565b90565b90565b90565b62000a4262000a3c62000a489262000a23565b6200092c565b62000a26565b90565b62000a5760ff62000a29565b90565b62000a659062000a26565b90565b9062000a73620009f9565b5062000a8962000a838362000447565b62000450565b62000aa062000a99602062000a01565b91620001c9565b1060001462000ab8575062000ab590620011b3565b90565b600062000aca62000ad1939262001081565b01620007ef565b62000ae562000adf62000a4b565b62000a5a565b90565b600090565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90565b62000b1d905162000a26565b90565b62000b2b9062000a26565b9052565b62000b3a90620001c9565b9052565b9095949262000b949462000b8162000b8c9262000b7660809662000b6b60a088019c600089019062000b20565b602087019062000b20565b604085019062000b20565b606083019062000b2f565b019062000329565b565b62000ba062000ae8565b5062000bab62000aed565b62000c0162000bbb60e062000b11565b9162000bf162000bcd61010062000b11565b4662000bd93062000484565b9162000be462000076565b9687956020870162000b3e565b60208201810382520382620000a1565b62000c1762000c108262000450565b916200044a565b2090565b9062000c27906200094f565b600052602052604060002090565b9062000c44600019916200092c565b9181191691161790565b9062000c6862000c6262000c7092620005e8565b6200060a565b825462000c35565b9055565b62000ca962000c826200127b565b62000ca3600062000c9c62000c96620012bb565b620012e8565b9062000c1b565b62000c4e565b565b62000cb69062000454565b90565b62000cc49062000cab565b90565b62000cd29062000476565b90565b600080fd5b60e01b90565b600080fd5b600091031262000cf157565b62000ce0565b60409062000d2662000d2e949695939662000d1b6060840198600085019062000329565b602083019062000329565b019062000b2f565b565b62000d3a62000076565b3d6000823e3d90fd5b90565b62000d5562000d5b91620008f4565b62000d43565b90565b62000d6a905462000d46565b90565b60409062000d9c62000da4949695939662000d916060840198600085019062000329565b602083019062000b2f565b019062000b2f565b565b9062000db39103620001c9565b90565b62000dc862000dcf91939293620001c9565b92620001c9565b820180921162000ddb57565b620001d5565b9062000dee9101620001c9565b90565b919062000e079060006020850194019062000b2f565b565b91909162000e3462000e2e62000e2862000e22620012bb565b620012e8565b62000cb9565b62000cc7565b637cbab1c78285928592813b156200107b57600062000e6a9162000e76829662000e5d62000076565b9889978896879562000cda565b85526004850162000cf7565b03925af18015620010755762001041575b508062000eaa62000ea362000e9d60006200030d565b6200031b565b916200031b565b1460001462000fb45762000ed662000ece8362000ec8600262000d5e565b62000db6565b600262000c4e565b5b8262000ef962000ef262000eec60006200030d565b6200031b565b916200031b565b1460001462000f7e5762000f2562000f1d8362000f17600262000d5e565b62000da6565b600262000c4e565b5b91909162000f7962000f6462000f5d7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef936200094f565b936200094f565b9362000f6f62000076565b9182918262000df1565b0390a3565b62000fae8262000fa762000f956000879062000c1b565b9162000fa18362000d5e565b62000de1565b9062000c4e565b62000f26565b62000fcc62000fc66000839062000c1b565b62000d5e565b8062000fe362000fdc85620001c9565b91620001c9565b10620010145762000ffa6200100e91849062000da6565b620010086000849062000c1b565b62000c4e565b62000ed7565b906200103d9091926200102662000076565b93849363391434e360e21b85526004850162000d6d565b0390fd5b620010669060003d81116200106d575b6200105d8183620000a1565b81019062000ce5565b3862000e87565b503d62001051565b62000d30565b62000cd5565b90565b90565b620010a06200109a620010a69262001084565b620001cc565b620001c9565b90565b60209181520190565b60005b838110620010c7575050906000910152565b806020918301518185015201620010b5565b620010fe620011086020936200110e93620010f4816200055d565b93848093620010a9565b95869101620010b2565b62000081565b0190565b6200112a9160208201916000818403910152620010d9565b90565b6200114d62001147620011408362000450565b926200044a565b62000b11565b90602081106200115c575b5090565b620011719060001990602003600802620005ba565b163862001158565b620011886200118e91620008f4565b620005e8565b90565b620011aa620011a4620011b092620001c9565b6200092c565b62000a26565b90565b620011bd620009f9565b50620011c98162000447565b90620011d58262000450565b620011ec620011e5601f62001087565b91620001c9565b116200122c575062001223816200121c620012156200120f62001229956200112d565b62001179565b9162000450565b1762001191565b62000a5a565b90565b62001252906200123b62000076565b91829163305a27a960e01b83526004830162001112565b0390fd5b90565b620012726200126c620012789262001256565b620001cc565b620001c9565b90565b6200128562000635565b506200129360001962001259565b90565b90565b620012b2620012ac620012b89262001296565b620001cc565b620001c9565b90565b620012c562000635565b50620012e573b8b23b99ddf02c9972525561ac14e552f9ea2cad62001299565b90565b620012f262000823565b509056fe60806040526004361015610013575b610911565b61001e60003561012d565b806306fdde0314610128578063095ea7b31461012357806318160ddd1461011e57806323b872dd14610119578063313ce567146101145780633644e5151461010f57806370a082311461010a578063715018a6146101055780637cbab1c7146101005780637ecebe00146100fb57806384b0196e146100f65780638da5cb5b146100f157806395d89b41146100ec578063a9059cbb146100e7578063d505accf146100e2578063dd62ed3e146100dd5763f2fde38b0361000e576108de565b6108a8565b610840565b610751565b61071c565b6106e7565b610695565b61053f565b61050b565b6104d8565b61049d565b610449565b6103ee565b61038f565b61031f565b6102c6565b6101d9565b60e01c90565b60405190565b600080fd5b600080fd5b600091031261014e57565b61013e565b5190565b60209181520190565b60005b838110610174575050906000910152565b806020918301518185015201610163565b601f801991011690565b6101ae6101b76020936101bc936101a581610153565b93848093610157565b95869101610160565b610185565b0190565b6101d6916020820191600081840391015261018f565b90565b34610209576101e9366004610143565b6102056101f4610a78565b6101fc610133565b918291826101c0565b0390f35b610139565b60018060a01b031690565b6102229061020e565b90565b61022e81610219565b0361023557565b600080fd5b9050359061024782610225565b565b90565b61025581610249565b0361025c57565b600080fd5b9050359061026e8261024c565b565b9190604083820312610299578061028d610296926000860161023a565b93602001610261565b90565b61013e565b151590565b6102ac9061029e565b9052565b91906102c4906000602085019401906102a3565b565b346102f7576102f36102e26102dc366004610270565b90610a93565b6102ea610133565b918291826102b0565b0390f35b610139565b61030590610249565b9052565b919061031d906000602085019401906102fc565b565b3461034f5761032f366004610143565b61034b61033a610ae4565b610342610133565b91829182610309565b0390f35b610139565b909160608284031261038a57610387610370846000850161023a565b9361037e816020860161023a565b93604001610261565b90565b61013e565b346103c0576103bc6103ab6103a5366004610354565b91610afa565b6103b3610133565b918291826102b0565b0390f35b610139565b60ff1690565b6103d4906103c5565b9052565b91906103ec906000602085019401906103cb565b565b3461041e576103fe366004610143565b61041a610409610b50565b610411610133565b918291826103d8565b0390f35b610139565b90565b61042f90610423565b9052565b919061044790600060208501940190610426565b565b3461047957610459366004610143565b610475610464610b6b565b61046c610133565b91829182610433565b0390f35b610139565b90602082820312610498576104959160000161023a565b90565b61013e565b346104cd576104c96104b86104b336600461047e565b610bcb565b6104c0610133565b91829182610309565b0390f35b610139565b60000190565b34610506576104e8366004610143565b6104f0610c3b565b6104f8610133565b80610502816104d2565b0390f35b610139565b3461053a5761052461051e366004610354565b91610c45565b61052c610133565b80610536816104d2565b0390f35b610139565b3461056f5761056b61055a61055536600461047e565b610cf7565b610562610133565b91829182610309565b0390f35b610139565b60ff60f81b1690565b61058690610574565b9052565b61059390610219565b9052565b5190565b60209181520190565b60200190565b6105b390610249565b9052565b906105c4816020936105aa565b0190565b60200190565b906105eb6105e56105de84610597565b809361059b565b926105a4565b9060005b8181106105fc5750505090565b90919261061561060f60019286516105b7565b946105c8565b91019190916105ef565b939591946106716106666106859561065861067b956106929c9a61064b60e08c019260008d019061057d565b8a820360208c015261018f565b9088820360408a015261018f565b9760608701906102fc565b608085019061058a565b60a0830190610426565b60c08184039101526105ce565b90565b346106cc576106a5366004610143565b6106c86106b0610de2565b936106bf979597939193610133565b9788978861061f565b0390f35b610139565b91906106e59060006020850194019061058a565b565b34610717576106f7366004610143565b610713610702610e9a565b61070a610133565b918291826106d1565b0390f35b610139565b3461074c5761072c366004610143565b610748610737610eb0565b61073f610133565b918291826101c0565b0390f35b610139565b346107825761077e61076d610767366004610270565b90610ec6565b610775610133565b918291826102b0565b0390f35b610139565b610790816103c5565b0361079757565b600080fd5b905035906107a982610787565b565b6107b481610423565b036107bb57565b600080fd5b905035906107cd826107ab565b565b60e08183031261083b576107e6826000830161023a565b926107f4836020840161023a565b926108028160408501610261565b926108108260608301610261565b92610838610821846080850161079c565b9361082f8160a086016107c0565b9360c0016107c0565b90565b61013e565b346108755761085f6108533660046107cf565b95949094939193610f96565b610867610133565b80610871816104d2565b0390f35b610139565b91906040838203126108a357806108976108a0926000860161023a565b9360200161023a565b90565b61013e565b346108d9576108d56108c46108be36600461087a565b906110b0565b6108cc610133565b91829182610309565b0390f35b610139565b3461090c576108f66108f136600461047e565b611146565b6108fe610133565b80610908816104d2565b0390f35b610139565b600080fd5b606090565b634e487b7160e01b600052602260045260246000fd5b9060016002830492168015610951575b602083101461094c57565b61091b565b91607f1691610941565b60209181520190565b600052602060002090565b906000929180549061098a61098383610931565b809461095b565b916001811690816000146109e357506001146109a6575b505050565b6109b39192939450610964565b916000925b8184106109cb57505001903880806109a1565b600181602092959395548486015201910192906109b8565b92949550505060ff19168252151560200201903880806109a1565b90610a089161096f565b90565b634e487b7160e01b600052604160045260246000fd5b90610a2b90610185565b810190811067ffffffffffffffff821117610a4557604052565b610a0b565b90610a6a610a6392610a5a610133565b938480926109fe565b0383610a21565b565b610a7590610a4a565b90565b610a80610916565b50610a8b6003610a6c565b90565b600090565b610ab091610a9f610a8e565b50610aa8611151565b91909161115e565b600190565b600090565b60001c90565b90565b610acf610ad491610aba565b610ac0565b90565b610ae19054610ac3565b90565b610aec610ab5565b50610af76002610ad7565b90565b91610b2492610b07610a8e565b50610b1c610b13611151565b829084916111af565b919091611244565b600190565b600090565b90565b90565b610b48610b43610b4d92610b2e565b610b31565b6103c5565b90565b610b58610b29565b50610b636012610b34565b90565b600090565b610b73610b66565b50610b7c6112f3565b90565b610b93610b8e610b989261020e565b610b31565b61020e565b90565b610ba490610b7f565b90565b610bb090610b9b565b90565b90610bbd90610ba7565b600052602052604060002090565b610be2610be791610bda610ab5565b506000610bb3565b610ad7565b90565b610bf26113ae565b610bfa610c27565b565b90565b610c13610c0e610c1892610bfc565b610b31565b61020e565b90565b610c2490610bff565b90565b610c39610c346000610c1b565b611441565b565b610c43610bea565b565b9182610c62610c5c610c576000610c1b565b610219565b91610219565b14600014610c9957610c95610c776000610c1b565b610c7f610133565b918291634b637e8f60e11b8352600483016106d1565b0390fd5b81610cb5610caf610caa6000610c1b565b610219565b91610219565b14610cc857610cc6929190916111af565b565b610cf3610cd56000610c1b565b610cdd610133565b91829163ec442f0560e01b8352600483016106d1565b0390fd5b610d0990610d03610ab5565b506114a2565b90565b600090565b600090565b606090565b610d2490610b9b565b90565b60001b90565b610d41610d3c610d4692610bfc565b610d27565b610423565b90565b610d5d610d58610d6292610bfc565b610b31565b610249565b90565b90610d78610d71610133565b9283610a21565b565b67ffffffffffffffff8111610d925760208091020190565b610a0b565b90610da9610da483610d7a565b610d65565b918252565b369037565b90610dd8610dc083610d97565b92602080610dce8693610d7a565b9201910390610dae565b565b600f60f81b90565b610dea610d0c565b50610df3610916565b50610dfc610916565b50610e05610ab5565b50610e0e610d11565b50610e17610b66565b50610e20610d16565b50610e296114c4565b90610e32611504565b904690610e3e30610d1b565b90610e496000610d2d565b90610e5c610e576000610d49565b610db3565b90610e65610dda565b96959493929190565b60018060a01b031690565b610e85610e8a91610aba565b610e6e565b90565b610e979054610e79565b90565b610ea2610d11565b50610ead6008610e8d565b90565b610eb8610916565b50610ec36004610a6c565b90565b610ee391610ed2610a8e565b50610edb611151565b919091611244565b600190565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c990565b9194610f55610f5f92989795610f4b60a096610f41610f669a610f3760c08a019e60008b0190610426565b602089019061058a565b604087019061058a565b60608501906102fc565b60808301906102fc565b01906102fc565b565b60200190565b5190565b916020610f94929493610f8d6040820196600083019061058a565b019061058a565b565b969591939294909442610fb1610fab83610249565b91610249565b11611072579061101a611023949392611002610fcb610ee8565b610ff38c80948c91610fdd8d916115a9565b9192610fe7610133565b97889660208801610f0c565b60208201810382520382610a21565b61101461100e82610f6e565b91610f68565b206115dc565b929091926115f9565b8061103661103087610219565b91610219565b0361104b5750611049929391909161115e565b565b849061106e611058610133565b9283926325c0072360e11b845260048401610f72565b0390fd5b6110949061107e610133565b91829163313c898160e11b835260048301610309565b0390fd5b906110a290610ba7565b600052602052604060002090565b6110d5916110cb6110d0926110c3610ab5565b506001611098565b610bb3565b610ad7565b90565b6110e9906110e46113ae565b6110eb565b565b806111076111016110fc6000610c1b565b610219565b91610219565b146111175761111590611441565b565b6111426111246000610c1b565b61112c610133565b918291631e4fbdf760e01b8352600483016106d1565b0390fd5b61114f906110d8565b565b611159610d11565b503390565b9161116c9291600192611620565b565b60409061119861119f949695939661118e6060840198600085019061058a565b60208301906102fc565b01906102fc565b565b906111ac9103610249565b90565b9291926111bd8183906110b0565b90816111d36111cd600019610249565b91610249565b036111e0575b5050509050565b816111f36111ed87610249565b91610249565b1061121a5761121193946112089193926111a1565b90600092611620565b803880806111d9565b506112408492919261122a610133565b938493637dc7a0d960e11b85526004850161116e565b0390fd5b918261126161125b6112566000610c1b565b610219565b91610219565b146112c4578161128261127c6112776000610c1b565b610219565b91610219565b14611295576112939291909161180d565b565b6112c06112a26000610c1b565b6112aa610133565b91829163ec442f0560e01b8352600483016106d1565b0390fd5b6112ef6112d16000610c1b565b6112d9610133565b918291634b637e8f60e11b8352600483016106d1565b0390fd5b6112fb610b66565b5061130530610d1b565b6113376113317f0000000000000000000000000000000000000000000000000000000000000000610219565b91610219565b1480611374575b600014611369577f000000000000000000000000000000000000000000000000000000000000000090565b611371611a9e565b90565b50466113a86113a27f0000000000000000000000000000000000000000000000000000000000000000610249565b91610249565b1461133e565b6113b6610e9a565b6113cf6113c96113c4611151565b610219565b91610219565b036113d657565b6113ff6113e1611151565b6113e9610133565b91829163118cdaa760e01b8352600483016106d1565b0390fd5b9061141460018060a01b0391610d27565b9181191691161790565b90565b9061143661143161143d92610ba7565b61141e565b8254611403565b9055565b61144b6008610e8d565b611456826008611421565b9061148a6114847f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610ba7565b91610ba7565b91611493610133565b8061149d816104d2565b0390a3565b6114b96114be916114b1610ab5565b506007610bb3565b610ad7565b90565b90565b6114cc610916565b506115017f00000000000000000000000000000000000000000000000000000000000000006114fb60056114c1565b90611c49565b90565b61150c610916565b506115417f000000000000000000000000000000000000000000000000000000000000000061153b60066114c1565b90611c49565b90565b60016115509101610249565b90565b9061156060001991610d27565b9181191691161790565b61157e61157961158392610249565b610b31565b610249565b90565b90565b9061159e6115996115a59261156a565b611586565b8254611553565b9055565b6115bd906115b5610ab5565b506007610bb3565b6115d96115c982610ad7565b916115d383611544565b90611589565b90565b6115f6906115e8610b66565b506115f16112f3565b611c98565b90565b926116149261161d9461160a610d11565b5092909192611d50565b90929192611e85565b90565b90928161163e6116386116336000610c1b565b610219565b91610219565b14611712578361165f6116596116546000610c1b565b610219565b91610219565b146116e3576116838361167e61167760018690611098565b8790610bb3565b611589565b61168d575b505050565b9190916116d86116c66116c07f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610ba7565b93610ba7565b936116cf610133565b91829182610309565b0390a3388080611688565b61170e6116f06000610c1b565b6116f8610133565b918291634a1406b160e11b8352600483016106d1565b0390fd5b61173d61171f6000610c1b565b611727610133565b91829163e602df0560e01b8352600483016106d1565b0390fd5b61174a90610b7f565b90565b61175690611741565b90565b61176290610b9b565b90565b600080fd5b60e01b90565b600091031261177b57565b61013e565b6040906117aa6117b194969593966117a06060840198600085019061058a565b602083019061058a565b01906102fc565b565b6117bb610133565b3d6000823e3d90fd5b634e487b7160e01b600052601160045260246000fd5b6117e96117ef91939293610249565b92610249565b82018092116117fa57565b6117c4565b9061180a9101610249565b90565b91909161183061182b611826611821611f8e565b611fb7565b61174d565b611759565b637cbab1c78285928592813b15611a275760006118609161186b8296611854610133565b9889978896879561176a565b855260048501611780565b03925af18015611a22576119f5575b508061189761189161188c6000610c1b565b610219565b91610219565b1460001461197c576118bc6118b5836118b06002610ad7565b6117da565b6002611589565b5b826118d96118d36118ce6000610c1b565b610219565b91610219565b1460001461194f576118fe6118f7836118f26002610ad7565b6111a1565b6002611589565b5b91909161194a6119386119327fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610ba7565b93610ba7565b93611941610133565b91829182610309565b0390a3565b6119778261197161196260008790610bb3565b9161196c83610ad7565b6117ff565b90611589565b6118ff565b61199061198b60008390610bb3565b610ad7565b806119a361199d85610249565b91610249565b106119cc576119b66119c79184906111a1565b6119c260008490610bb3565b611589565b6118bd565b906119f19091926119db610133565b93849363391434e360e21b85526004850161116e565b0390fd5b611a159060003d8111611a1b575b611a0d8183610a21565b810190611770565b3861187a565b503d611a03565b6117b3565b611765565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90565b90959492611a9c94611a8b611a9592611a81608096611a7760a088019c6000890190610426565b6020870190610426565b6040850190610426565b60608301906102fc565b019061058a565b565b611aa6610b66565b50611aaf611a2c565b611b267f000000000000000000000000000000000000000000000000000000000000000091611b177f000000000000000000000000000000000000000000000000000000000000000046611b0230610d1b565b91611b0b610133565b96879560208701611a50565b60208201810382520382610a21565b611b38611b3282610f6e565b91610f68565b2090565b611b4590610423565b90565b90565b611b5f611b5a611b6492611b48565b610d27565b610423565b90565b611b7160ff611b4b565b90565b600052602060002090565b9060009291805490611b9a611b9383610931565b809461095b565b91600181169081600014611bf35750600114611bb6575b505050565b611bc39192939450611b74565b916000925b818410611bdb5750500190388080611bb1565b60018160209295939554848601520191019290611bc8565b92949550505060ff1916825215156020020190388080611bb1565b90611c1891611b7f565b90565b90611c3b611c3492611c2b610133565b93848092611c0e565b0383610a21565b565b611c4690611c1b565b90565b90611c52610916565b50611c5c82611b3c565b611c75611c6f611c6a611b67565b610423565b91610423565b1415600014611c8b5750611c8890612048565b90565b611c959150611c3d565b90565b604291611ca3610b66565b50604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b600090565b611cea611cef91610aba565b61156a565b90565b90565b611d09611d04611d0e92611cf2565b610b31565b610249565b90565b611d47611d4e94611d3d606094989795611d33608086019a6000870190610426565b60208501906103cb565b6040830190610426565b0190610426565b565b939293611d5b610d11565b50611d64611cd9565b50611d6d610b66565b50611d7785611cde565b611da9611da37f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0611cf5565b91610249565b11611e3d5790611dcd60209495600094939293611dc4610133565b94859485611d11565b838052039060015afa15611e3857611de6600051610d27565b80611e02611dfc611df76000610c1b565b610219565b91610219565b14611e1a57600091611e146000610d2d565b91929190565b50611e256000610c1b565b600191611e326000610d2d565b91929190565b6117b3565b505050611e4a6000610c1b565b9060039291929190565b634e487b7160e01b600052602160045260246000fd5b60041115611e7457565b611e54565b90611e8382611e6a565b565b80611e99611e936000611e79565b91611e79565b14600014611ea5575050565b80611eb9611eb36001611e79565b91611e79565b14600014611ee457611ec9610133565b63f645eedf60e01b815280611ee0600482016104d2565b0390fd5b80611ef8611ef26002611e79565b91611e79565b14600014611f2e57611f2a611f0c83611cde565b611f14610133565b91829163fce698f760e01b835260048301610309565b0390fd5b611f41611f3b6003611e79565b91611e79565b14611f495750565b611f6b90611f55610133565b9182916335e2f38360e21b835260048301610433565b0390fd5b90565b611f86611f81611f8b92611f6f565b610b31565b610249565b90565b611f96610ab5565b50611fb473b8b23b99ddf02c9972525561ac14e552f9ea2cad611f72565b90565b611fbf610d11565b5090565b90565b611fda611fd5611fdf92611fc3565b610b31565b610249565b90565b67ffffffffffffffff811161200057611ffc602091610185565b0190565b610a0b565b9061201761201283611fe2565b610d65565b918252565b369037565b9061204661202e83612005565b9260208061203c8693611fe2565b920191039061201c565b565b612050610916565b5061205a816120b3565b9061206d6120686020611fc6565b612021565b918252602082015290565b61208c61208761209192611b48565b610b31565b610249565b90565b90565b6120ab6120a66120b092612094565b610b31565b610249565b90565b6120c86120cd916120c2610ab5565b50611b3c565b611cde565b6120d760ff612078565b16806120ec6120e6601f612097565b91610249565b116120f45790565b6120fc610133565b632cd44ac360e21b815280612113600482016104d2565b0390fdfea2646970667358221220a50f4d90c09a905319ecc37dc63f4a06104f60a1296910b5d7732227d2be072064736f6c63430008180033