[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AuthorizationExpired", "type": "error" }, { "inputs": [], "name": "AuthorizationNotYetValid", "type": "error" }, { "inputs": [], "name": "AuthorizationUsedOrInsufficient", "type": "error" }, { "inputs": [], "name": "CancelAuthorizationFailed", "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": [], "name": "InsufficientDeposit", "type": "error" }, { "inputs": [], "name": "InsufficientFunds", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "Matured", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "PrematureRedeem", "type": "error" }, { "inputs": [], "name": "UnauthorizedCaller", "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": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "authorizer", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "AuthorizationUsed", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } ], "name": "authorizationState", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "owner", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "authorizer", "type": "address" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "cancelAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "depositor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [ { "internalType": "bytes32", "name": "structHash", "type": "bytes32" } ], "name": "hashTypedDataV4", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint8", "name": "__decimals", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "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": [ { "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": "bytes", "name": "signature", "type": "bytes" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "receiveWithAuthorization", "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": "from", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "transferFromWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "validAfter", "type": "uint256" }, { "internalType": "uint256", "name": "validBefore", "type": "uint256" }, { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "transferWithAuthorization", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080806040523460b4577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c1660a557506001600160401b036002600160401b0319828216016061575b604051612b1390816100b98239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806052565b63f92ee8a960e01b8152600490fd5b5f80fdfe60806040908082526004361015610014575f80fd5b60e05f35811c91826306fdde0314611e7057508163095ea7b314611e295781631624f6c61461138c57816318160ddd1461133157816323b872dd1461113b578163313ce567146110fa5781633644e515146110c057816340c10f1914610f4b5781634980f28814610f0357816370a0823114610e825781637ecebe0014610e0157816384b0196e14610c4e57816388b7ab6314610b0757816395d89b41146109bd5781639dc29fac146108145781639fd5a6cf14610799578163a9059cbb1461074b578163b7b7289914610592578163c7c4ff4614610541578163cf0929951461031757508063dd62ed3e14610268578063e69ee1d2146101905763e94a01021461011d575f80fd5b3461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760209073ffffffffffffffffffffffffffffffffffffffff61016b611fa1565b165f5260018252805f206024355f52825260ff815f20541690519015158152f35b5f80fd5b503461018c5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576101c8611fa1565b6101d0611fc4565b906044359073ffffffffffffffffffffffffffffffffffffffff808316830361018c576064359360a43567ffffffffffffffff811161018c57610217903690600401611fe7565b969092339083160361023f5750946102389161023d968660843591866124e6565b612387565b005b600490517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b503461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576020906102a2611fa1565b73ffffffffffffffffffffffffffffffffffffffff6103066102c2611fc4565b9273ffffffffffffffffffffffffffffffffffffffff165f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160205260405f2090565b91165f528252805f20549051908152f35b90503461018c5761032736612015565b9284989192959897969742111561051857804210156104ef5773ffffffffffffffffffffffffffffffffffffffff9485881695865f5260016020528b5f20885f5260205260ff8c5f2054166104c657896104289461042f979694610420948f948f908651958d60208801987f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a22678a52880152166060860152608085015260a084015260c0830152898183015281526103dd816120f3565b5190206103e86128e4565b604291604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b923691612351565b9085612616565b1561049d5761023d95815f526001602052805f20835f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a55f80a3612387565b600486517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b60048c517faba01284000000000000000000000000000000000000000000000000000000008152fd5b60048a517f0f05f5bf000000000000000000000000000000000000000000000000000000008152fd5b60048a517fdf8e4372000000000000000000000000000000000000000000000000000000008152fd5b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760209073ffffffffffffffffffffffffffffffffffffffff5f54169051908152f35b823461018c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576105ca611fa1565b6024359167ffffffffffffffff60443581811161018c576105ef903690600401611fe7565b73ffffffffffffffffffffffffffffffffffffffff8592951694855f526001602052845f20875f5260205260ff855f2054166107225784519060208201947f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742986528787840152886060840152606083526080830190838210908211176106f55761068e95610688936104209289525190206103e86128e4565b91612616565b1561023f57815f526001602052805f20835f526020525f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d815f80a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600485517fa0861e64000000000000000000000000000000000000000000000000000000008152fd5b823461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57602090610792610788611fa1565b6024359033612387565b5160018152f35b3461018c5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576107d0611fa1565b6107d8611fc4565b604435906084359267ffffffffffffffff841161018c5761080f61080361023d953690600401611fe7565b906064358686866124e6565b612784565b823461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5761084b611fa1565b6024359173ffffffffffffffffffffffffffffffffffffffff805f5416330361099457821691821561096557825f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0080602052825f20549185831061090d5750937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92816020935f97878952855203818720557f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0282815403905551908152a3005b83517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015260248101929092525060448101849052606490fd5b602482517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152fd5b600482517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c578051905f90827f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace04928354610a1f816120a2565b90818452602095600191876001821691825f14610ac2575050600114610a66575b505050610a629291610a53910385612110565b51928284938452830190611f5e565b0390f35b5f90815286935091907f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa5b828410610aaa5750505082010181610a53610a62610a40565b8054848a018601528895508794909301928101610a91565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168782015293151560051b86019093019350849250610a539150610a629050610a40565b90503461018c57610b1736612015565b929091949773ffffffffffffffffffffffffffffffffffffffff9796979182891692833303610c255786421115610bfc5781421015610bd357881695865f5260016020528b5f20885f5260205260ff8c5f2054166104c6576104289361042f969593610420938e938e8551948c60208701977fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de889528701526060860152608085015260a084015260c0830152898183015281526103dd816120f3565b60048c517f0f05f5bf000000000000000000000000000000000000000000000000000000008152fd5b60048c517fdf8e4372000000000000000000000000000000000000000000000000000000008152fd5b60048c517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610dd8575b15610d7b57610cb3612151565b610cbb612258565b90825191602091602084019484861067ffffffffffffffff8711176106f557808695936020939897610d3093525f8552610d238251998a997f0f000000000000000000000000000000000000000000000000000000000000008b5280878c01528a0190611f5e565b9188830390890152611f5e565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b828110610d6457505050500390f35b835185528695509381019392810192600101610d55565b606490517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610ca6565b823461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760209073ffffffffffffffffffffffffffffffffffffffff610e51611fa1565b165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb008252805f20549051908152f35b823461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760209073ffffffffffffffffffffffffffffffffffffffff610ed2611fa1565b165f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace008252805f20549051908152f35b823461018c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57602090610f446004356103e86128e4565b9051908152f35b823461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57610f82611fa1565b906024359173ffffffffffffffffffffffffffffffffffffffff90815f541633036110975716918215611068577f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0280549180830180931161103b575f937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93602093558585527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00835280852082815401905551908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b602482517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152fd5b600483517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57602090610f446128e4565b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760209060ff5f5460a01c169051908152f35b823461018c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57611173611fa1565b9061117c611fc4565b604435926111c78173ffffffffffffffffffffffffffffffffffffffff165f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160205260405f2090565b335f52602052825f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103611207575b509261079291602094612387565b8481106112f25773ffffffffffffffffffffffffffffffffffffffff8216156112c357331561129457918185610792946112816020989573ffffffffffffffffffffffffffffffffffffffff165f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160205260405f2090565b335f52885203855f2055919450916111f9565b602484517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152fd5b602484517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152fd5b83517ffb8f41b2000000000000000000000000000000000000000000000000000000008152336004820152602481019190915260448101859052606490fd5b823461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c576020907f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02549051908152f35b823461018c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c5760043567ffffffffffffffff811161018c576113dc903690600401611fe7565b919060243567ffffffffffffffff811161018c576113fe903690600401611fe7565b916044359460ff8616860361018c577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009384549367ffffffffffffffff851680159081611e1b575b6001149081611e11575b159081611e08575b50611ddf576114a09060017fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000871617875560ff86891c1615611daa575b610420368587612351565b906114a961288b565b6114b161288b565b80519067ffffffffffffffff82116106f55781906114ef7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03546120a2565b601f8111611d1d575b50602090601f8311600114611bfd575f92611bf2575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03555b805167ffffffffffffffff81116106f5577f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049161159d83546120a2565b601f8111611b90575b50602090601f8311600114611acc576115fe95949392915f9183611ac1575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b3691612351565b9383519484860186811067ffffffffffffffff8211176106f5578552600186527f3100000000000000000000000000000000000000000000000000000000000000602087015261164c61288b565b61165461288b565b805167ffffffffffffffff81116106f557807fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029261169284546120a2565b601f8111611a54575b50602090601f8311600114611998575f9261198d575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b845167ffffffffffffffff81116106f5577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1039061172082546120a2565b601f811161192b575b506020601f821160011461186a57819060ff9697985f9261185f575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100555f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101555f547fffffffffffffffffffffff00000000000000000000000000000000000000000074ff0000000000000000000000000000000000000000339360a01b16911617175f55831c161561180c57005b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291817fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff602093541690555160018152a1005b015190508880611745565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821697835f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75985f5b81811061191357509160ff979899918460019594106118dc575b505050811b019055611777565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558880806118cf565b838301518b556001909a0199602093840193016118b5565b825f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c81019160208410611983575b601f0160051c01905b8181106119785750611729565b5f815560010161196b565b9091508190611962565b0151905088806116b1565b5f8581527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016905b818110611a3c5750908460019594939210611a05575b505050811b0190556116e3565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558880806119f8565b929360206001819287860151815501950193016119e2565b909150835f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f840160051c81019160208510611ab7575b90601f859493920160051c01905b818110611aa9575061169b565b5f8155849350600101611a9c565b9091508190611a8e565b015190508a806115c5565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691845f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa925f5b818110611b7857509160019391856115fe999897969410611b41575b505050811b0190556115f7565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558a8080611b34565b92936020600181928786015181550195019301611b18565b835f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f840160051c81019160208510611be8575b601f0160051c01905b818110611bdd57506115a6565b5f8155600101611bd0565b9091508190611bc7565b01519050898061150e565b92507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace035f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0905f935b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084168510611d025760019450837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0811610611ccb575b505050811b017f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0355611560565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055898080611c9e565b81810151835560209485019460019093019290910190611c47565b9091507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace035f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f840160051c81019160208510611da0575b90601f859493920160051c01905b818110611d9257506114f8565b5f8155849350600101611d85565b9091508190611d77565b680100000000000000017fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000008716178755611495565b600487517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501589611458565b303b159150611450565b86891c60ff16159150611446565b823461018c57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c57602090610792611e66611fa1565b6024359033612784565b833461018c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018c575f90827f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03928354611ecf816120a2565b90818452602095600191876001821691825f14610ac2575050600114611f0257505050610a629291610a53910385612110565b5f90815286935091907f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab05b828410611f465750505082010181610a53610a62610a40565b8054848a018601528895508794909301928101611f2d565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361018c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361018c57565b9181601f8401121561018c5782359167ffffffffffffffff831161018c576020838186019501011161018c57565b60e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261018c5773ffffffffffffffffffffffffffffffffffffffff91600435838116810361018c5792602435908116810361018c579160443591606435916084359160a4359160c4359067ffffffffffffffff821161018c5761209e91600401611fe7565b9091565b90600182811c921680156120e9575b60208310146120bc57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916120b1565b610100810190811067ffffffffffffffff8211176106f557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106f557604052565b604051905f827fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10291825492612185846120a2565b8084529360209160019182811690811561221357506001146121b3575b5050506121b192500383612110565b565b5f9081527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d9590935091905b8284106121fb57506121b19450505081016020015f80806121a2565b855488850183015294850194879450928101926121df565b915050602093506121b19592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80806121a2565b604051905f827fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1039182549261228c846120a2565b8084529360209160019182811690811561221357506001146122b7575050506121b192500383612110565b5f9081527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b759590935091905b8284106122ff57506121b19450505081016020015f80806121a2565b855488850183015294850194879450928101926122e3565b67ffffffffffffffff81116106f557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261235d82612317565b9161236b6040519384612110565b82948184528183011161018c578281602093845f960137010152565b9173ffffffffffffffffffffffffffffffffffffffff8084169283156124b6571692831561248657825f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace008060205260405f20549183831061242d575091806020927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94865f5284520360405f2055845f5260405f20818154019055604051908152a3565b6040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015260248101929092525060448101829052606490fd5b60246040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152fd5b60246040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152fd5b93909194928042116125ec5773ffffffffffffffffffffffffffffffffffffffff80861696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20918254926001840190556040519560208701997f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98b526040880152166060860152608085015260a084015260c083015260c0825260e0820182811067ffffffffffffffff8211176106f5576125bb9561068893610420926040525190206103e86128e4565b156125c257565b60046040517f5c427cd9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f0f05f5bf000000000000000000000000000000000000000000000000000000008152fd5b612620838361295a565b50600481959295101561275757159384612734575b508315612643575b50505090565b5f9293509082916040516126c08161269460208201947f1626ba7e00000000000000000000000000000000000000000000000000000000998a87526024840152604060448401526064830190611f5e565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612110565b51915afa903d1561272d573d6126d581612317565b906126e36040519283612110565b81523d5f602083013e5b8261271f575b82612703575b50505f808061263d565b90915060208180518101031261018c5760200151145f806126f9565b9150602082511015916126f3565b60606126ed565b73ffffffffffffffffffffffffffffffffffffffff83811691161493505f612635565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9173ffffffffffffffffffffffffffffffffffffffff80841692831561285b571692831561282b577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161281760209273ffffffffffffffffffffffffffffffffffffffff165f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160205260405f2090565b855f5282528060405f2055604051908152a3565b60246040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152fd5b60246040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156128ba57565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fd5b6128ec612994565b6128f46129fe565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176106f55760405251902090565b815191906041830361298a576129839250602082015190606060408401519301515f1a90612a43565b9192909190565b50505f9160029190565b61299c612151565b80519081156129ac576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156129d95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612a06612258565b8051908115612a16576020012090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156129d95790565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612ad2579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15612ac7575f5173ffffffffffffffffffffffffffffffffffffffff811615612abd57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122094f0728f4ec8458924e22b43baf7b50d3877b2992a8e3eee033602984fef658564736f6c63430008190033