[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "amount0", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "amount1", "type": "int256" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reserve0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "reserve1", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fictiveReserve0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fictiveReserve1", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "priceAverage0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "priceAverage1", "type": "uint256" } ], "name": "Sync", "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": "amount", "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": "_to", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0_", "type": "uint256" }, { "internalType": "uint256", "name": "amount1_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFees", "outputs": [ { "internalType": "uint256", "name": "fees0_", "type": "uint256" }, { "internalType": "uint256", "name": "fees1_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFictiveReserves", "outputs": [ { "internalType": "uint256", "name": "fictiveReserve0_", "type": "uint256" }, { "internalType": "uint256", "name": "fictiveReserve1_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPriceAverage", "outputs": [ { "internalType": "uint256", "name": "priceAverage0_", "type": "uint256" }, { "internalType": "uint256", "name": "priceAverage1_", "type": "uint256" }, { "internalType": "uint256", "name": "priceAverageLastTimestamp_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint256", "name": "reserve0_", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fictiveReserveIn", "type": "uint256" }, { "internalType": "uint256", "name": "_fictiveReserveOut", "type": "uint256" }, { "internalType": "uint256", "name": "_priceAverageLastTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "_priceAverageIn", "type": "uint256" }, { "internalType": "uint256", "name": "_priceAverageOut", "type": "uint256" }, { "internalType": "uint256", "name": "_currentTimestamp", "type": "uint256" } ], "name": "getUpdatedPriceAverage", "outputs": [ { "internalType": "uint256", "name": "priceAverageIn_", "type": "uint256" }, { "internalType": "uint256", "name": "priceAverageOut_", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token0", "type": "address" }, { "internalType": "address", "name": "_token1", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount0", "type": "uint256" }, { "internalType": "uint256", "name": "_amount1", "type": "uint256" }, { "internalType": "address", "name": "_payer", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "liquidity_", "type": "uint256" } ], "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": "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": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "bool", "name": "_zeroForOne", "type": "bool" }, { "internalType": "int256", "name": "_amountSpecified", "type": "int256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "swap", "outputs": [ { "internalType": "int256", "name": "amount0_", "type": "int256" }, { "internalType": "int256", "name": "amount1_", "type": "int256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
610140604052600c80546001600160f81b0316600160f81b1790553480156200002757600080fd5b506040518060400160405280601081526020016f29b6b0b92232bc10262816aa37b5b2b760811b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280601081526020016f29b6b0b92232bc10262816aa37b5b2b760811b815250604051806040016040528060078152602001660534445582d4c560cc1b8152508160039081620000c6919062000228565b506004620000d5828262000228565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c052610120525050600780546001600160a01b0319163317905550620002f4915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001ae57607f821691505b602082108103620001cf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022357600081815260208120601f850160051c81016020861015620001fe5750805b601f850160051c820191505b818110156200021f578281556001016200020a565b5050505b505050565b81516001600160401b0381111562000244576200024462000183565b6200025c8162000255845462000199565b84620001d5565b602080601f8311600181146200029457600084156200027b5750858301515b600019600386901b1c1916600185901b1785556200021f565b600085815260208120601f198616915b82811015620002c557888601518255948401946001909101908401620002a4565b5085821015620002e45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051615265620003446000396000612ce401526000612d3301526000612d0e01526000612c6701526000612c9101526000612cbb01526152656000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806389afcb44116100ee578063d21220a711610097578063dd62ed3e11610071578063dd62ed3e14610415578063ee2046c71461045b578063f74bfe8e146104ad578063fb753b69146104c057600080fd5b8063d21220a7146103a9578063d505accf146103c9578063db8d55f1146103dc57600080fd5b8063a457c2d7116100c8578063a457c2d714610363578063a9059cbb14610376578063c45a01551461038957600080fd5b806389afcb441461031657806395d89b41146103295780639a20767b1461033157600080fd5b806323b872dd1161015b578063395093511161013557806339509351146102a5578063485cc955146102b857806370a08231146102cd5780637ecebe001461030357600080fd5b806323b872dd1461027b578063313ce5671461028e5780633644e5151461029d57600080fd5b80630dfe16811161018c5780630dfe16811461021157806318160ddd146102565780631f18b3711461026857600080fd5b806306fdde03146101b35780630902f1ac146101d1578063095ea7b3146101ee575b600080fd5b6101bb6104d3565b6040516101c89190614bc1565b60405180910390f35b6101d9610565565b604080519283526020830191909152016101c8565b6102016101fc366004614c34565b6106f2565b60405190151581526020016101c8565b6008546102319073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b6002545b6040519081526020016101c8565b6101d9610276366004614c6e565b61070c565b610201610289366004614d0d565b611735565b604051601281526020016101c8565b61025a611759565b6102016102b3366004614c34565b611768565b6102cb6102c6366004614d4e565b6117b4565b005b61025a6102db366004614d87565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61025a610311366004614d87565b611888565b6101d9610324366004614d87565b6118b3565b6101bb6118d1565b600a546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101d9565b610201610371366004614c34565b6118e0565b610201610384366004614c34565b6119b1565b6007546102319073ffffffffffffffffffffffffffffffffffffffff1681565b6009546102319073ffffffffffffffffffffffffffffffffffffffff1681565b6102cb6103d7366004614da4565b6119bf565b600c546cffffffffffffffffffffffffff65010000000000820481169172010000000000000000000000000000000000009004166101d9565b61025a610423366004614d4e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600b54600c54604080516fffffffffffffffffffffffffffffffff8085168252700100000000000000000000000000000000909404909316602084015264ffffffffff909116908201526060016101c8565b61025a6104bb366004614e1b565b611b7e565b6101d96104ce366004614e65565b611b9e565b6060600380546104e290614ea8565b80601f016020809104026020016040519081016040528092919081815260200182805461050e90614ea8565b801561055b5780601f106105305761010080835404028352916020019161055b565b820191906000526020600020905b81548152906001019060200180831161053e57829003601f168201915b5050505050905090565b600c546008546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000928392650100000000009091046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190614ef5565b6106239190614f3d565b600c546009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292945072010000000000000000000000000000000000009091046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e29190614ef5565b6106ec9190614f3d565b90509091565b600033610700818585611bbe565b60019150505b92915050565b600c5460009081907f0100000000000000000000000000000000000000000000000000000000000000900460ff166001146107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f536d61724465783a204c4f434b4544000000000000000000000000000000000060448201526064015b60405180910390fd5b600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0200000000000000000000000000000000000000000000000000000000000000179055600085900361085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f536d61724465783a205a45524f5f414d4f554e54000000000000000000000000604482015260640161079f565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260085473ffffffffffffffffffffffffffffffffffffffff90811660a08301526009541660c082015260e0810182905261010081019190915286610a8657600c5460c08201516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015272010000000000000000000000000000000000009092046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190614ef5565b61098d9190614f3d565b600c5460a08301516040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152650100000000009092046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3e9190614ef5565b610a489190614f3d565b600a54600b546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000080840482169382169290810482169116610c46565b600c5460a08201516040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152650100000000009092046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610b13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b379190614ef5565b610b419190614f3d565b600c5460c08301516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015272010000000000000000000000000000000000009092046cffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190614ef5565b610c099190614f3d565b600a54600b546fffffffffffffffffffffffffffffffff808316927001000000000000000000000000000000009081900482169280831692919004165b6fffffffffffffffffffffffffffffffff90811660808801819052918116606088018190529281166040880181905293166020870181905261010087019490945260e0860194909452600c54610ca79464ffffffffff909116919042611d71565b6080830152606082015286610cd657610cc38160800151611e7a565b610cd08260600151611e7a565b42610cf2565b610ce38160600151611e7a565b610cf08260800151611e7a565b425b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff929092169190911790557fffffffffffffffffffffffffffffffff000000000000000000000000000000007001000000000000000000000000000000006fffffffffffffffffffffffffffffffff9283160216911617600b556000861315610dd3576000610db2610d8e88611f20565b8360e001518461010001518560200151866040015187606001518860800151611f8c565b6040870152602086015250909150610dcb9050816121fd565b825250610e2a565b6000610e0d610de9610de489614f50565b611f20565b8360e0015184610100015185602001518660400151876060015188608001516122af565b6040870152602086015250909150610e269050816121fd565b8252505b86610e515760008613610e405780518690610e6e565b8051610e4b90614f50565b86610e6e565b60008613610e6157805186610e6e565b80518690610e6e90614f50565b60a0830151919450925073ffffffffffffffffffffffffffffffffffffffff898116911614801590610ed057508060c0015173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f536d61724465783a20494e56414c49445f544f00000000000000000000000000604482015260640161079f565b86156111d3576000821215610f5d57610f5d8160c001518984610f5890614f50565b6124bc565b6040517fa1dab4eb000000000000000000000000000000000000000000000000000000008152339063a1dab4eb90610f9f90869086908a908a90600401614f88565b600060405180830381600087803b158015610fb957600080fd5b505af1158015610fcd573d6000803e3d6000fd5b5050505060e08101516008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190614ef5565b60e0830181905261107885611f20565b600c5461109d906501000000000090046cffffffffffffffffffffffffff1684614fe3565b6110a79190614fe3565b1115611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f536d61724465783a20494e53554646494349454e545f544f4b454e305f494e5060448201527f55545f414d4f554e540000000000000000000000000000000000000000000000606482015260840161079f565b6009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156111a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c79190614ef5565b6101008301525061146e565b60008312156111ef576111ef8160a001518985610f5890614f50565b6040517fa1dab4eb000000000000000000000000000000000000000000000000000000008152339063a1dab4eb9061123190869086908a908a90600401614f88565b600060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b5050505060e08101516009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156112d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fa9190614ef5565b60e0830181905261130a84611f20565b600c5461133c90720100000000000000000000000000000000000090046cffffffffffffffffffffffffff1684614fe3565b6113469190614fe3565b11156113d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f536d61724465783a20494e53554646494349454e545f544f4b454e315f494e5060448201527f55545f414d4f554e540000000000000000000000000000000000000000000000606482015260840161079f565b6008546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114669190614ef5565b610100830152505b60008073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190614ff6565b73ffffffffffffffffffffffffffffffffffffffff161415905087156115e55780156115b95761155e61271061154f600287615013565b6115599190615059565b612652565b600c80546005906115889084906501000000000090046cffffffffffffffffffffffffff16615094565b92506101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055505b6115e08260e0015183610100015184602001518560400151866060015187608001516126f1565b61168b565b8015611664576115fc61271061154f600286615013565b600c8054601290611633908490720100000000000000000000000000000000000090046cffffffffffffffffffffffffff16615094565b92506101000a8154816cffffffffffffffffffffffffff02191690836cffffffffffffffffffffffffff1602179055505b61168b8261010001518360e0015184604001518560200151866080015187606001516126f1565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8b169133917fa4228e1eb11eb9b31069d9ed20e7af9a010ca1a02d4855cee54e08e188fcc32c910160405180910390a35050600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017905590969095509350505050565b600033611743858285612907565b61174e8585856129de565b506001949350505050565b6000611763612c4d565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061070090829086906117af908790614fe3565b611bbe565b60075473ffffffffffffffffffffffffffffffffffffffff163314611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f536d61724465783a20464f5242494444454e0000000000000000000000000000604482015260640161079f565b6008805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560098054929093169116179055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812054610706565b6000806118bf83612d81565b90925090506118cc613319565b915091565b6060600480546104e290614ea8565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161079f565b61174e8286868403611bbe565b6000336107008185856129de565b83421115611a29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161079f565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611a588c6134ba565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611ac0826134ef565b90506000611ad082878787613558565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161079f565b611b728a8a8a611bbe565b50505050505050505050565b6000611b8c85858585613580565b9050611b96613319565b949350505050565b600080611baf888888888888611d71565b90999098509650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff8216611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008085831015611dde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536d6172646578506169723a20494e56414c49445f54494d455354414d500000604482015260640161079f565b85600003611df0575086905085611e6f565b828603611e01575083905082611e6f565b6000611e18611e108886614f3d565b61012c613d1e565b899350905061012c611e2a8983615013565b878588611e398661012c614f3d565b611e439190615013565b611e4d9190615013565b611e579190615059565b611e619190614fe3565b611e6b9190615059565b9150505b965096945050505050565b60006fffffffffffffffffffffffffffffffff821115611f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161079f565b5090565b600080821215611f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161079f565b6000806000806000808c11612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f536d61724465784c6962726172793a20494e53554646494349454e545f494e5060448201527f55545f414d4f554e540000000000000000000000000000000000000000000000606482015260840161079f565b60008b118015612033575060008a115b801561203f5750600089115b801561204b5750600088115b6120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f536d61724465784c6962726172793a20494e53554646494349454e545f4c495160448201527f5549444954590000000000000000000000000000000000000000000000000000606482015260840161079f565b60006127106120e860026005614fe3565b6120f490612710614f3d565b6120fe908f615013565b6121089190615059565b90506000612119828c8c8c8c613d36565b9050818114801561213157506121318b8b8b8b613e98565b15612148576121428d8d8d8d613eb6565b909b5099505b600061215660026005614fe3565b61216290612710614f3d565b61216e61271084615013565b6121789190615059565b9050612187818f8f8f8f613f9f565b809850819950829a50839b50849c505050505050808f6121a79190614f3d565b9e5050818110156121ec576121be86868686613eb6565b909450925060006121d28f88888888613f9f565b929a509098509650945090506121e88189614fe3565b9750505b505097509750975097509792505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e74323536000000000000000000000000000000000000000000000000606482015260840161079f565b6000806000806000808c11612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f536d61724465784c6962726172793a20494e53554646494349454e545f4f555460448201527f5055545f414d4f554e5400000000000000000000000000000000000000000000606482015260840161079f565b878c108015612355575060008b115b8015612361575060008a115b801561236d5750600089115b80156123795750600088115b612405576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f536d61724465784c6962726172793a20494e53554646494349454e545f4c495160448201527f5549444954590000000000000000000000000000000000000000000000000000606482015260840161079f565b60006124148d8b8b8b8b614068565b90508c8114801561242c575061242c8a8a8a8a613e98565b156124435761243d8c8c8c8c613eb6565b909a5098505b612450818d8d8d8d6141bb565b9399509197509550935091508c8110156124ac5761247085858585613eb6565b80935081945050506000612492828f6124899190614f3d565b878787876141bb565b9299509097509550935090506124a88188614fe3565b9650505b5097509750975097509792505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161255391906150c1565b6000604051808303816000865af19150503d8060008114612590576040519150601f19603f3d011682016040523d82523d6000602084013e612595565b606091505b50915091508180156125bf5750805115806125bf5750808060200190518101906125bf91906150dd565b61264b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161079f565b5050505050565b60006cffffffffffffffffffffffffff821115611f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3034206269747300000000000000000000000000000000000000000000000000606482015260840161079f565b6000841180156127015750600083115b61278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536d61724465783a20464943544956455f52455345525645535f544f4f5f4c4f60448201527f5700000000000000000000000000000000000000000000000000000000000000606482015260840161079f565b6fffffffffffffffffffffffffffffffff84118015906127bd57506fffffffffffffffffffffffffffffffff8311155b612823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f536d61724465783a204f564552464c4f57000000000000000000000000000000604482015260640161079f565b6fffffffffffffffffffffffffffffffff8381167001000000000000000000000000000000000290851617600a55600c547f2a368c7f33bb86e2d999940a3989d849031aff29b750f67947e6b8e8c3d2ffd690612899906cffffffffffffffffffffffffff650100000000009091041688614f3d565b600c546128cb90720100000000000000000000000000000000000090046cffffffffffffffffffffffffff1688614f3d565b6040805192835260208301919091528101869052606081018590526080810184905260a0810183905260c00160405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146129d857818110156129cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161079f565b6129d88484848403611bbe565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316612a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff8216612b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015612bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36129d8565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612cb357507f000000000000000000000000000000000000000000000000000000000000000046145b15612cdd57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600c5460009081907f0100000000000000000000000000000000000000000000000000000000000000900460ff16600114612e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f536d61724465783a204c4f434b45440000000000000000000000000000000000604482015260640161079f565b600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0200000000000000000000000000000000000000000000000000000000000000179055612e696142a0565b506008546009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff928316929091169060009083906370a0823190602401602060405180830381865afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190614ef5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015612f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9c9190614ef5565b306000908152602081905260409020546002549192509080612fbe8584615013565b612fc89190615059565b975080612fd58484615013565b612fdf9190615059565b9650600088118015612ff15750600087115b61307d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f536d61724465783a20494e53554646494349454e545f4c49515549444954595f60448201527f4255524e45440000000000000000000000000000000000000000000000000000606482015260840161079f565b600a546fffffffffffffffffffffffffffffffff80821691700100000000000000000000000000000000900416826130b58584615013565b6130bf9190615059565b6130c99083614f3d565b9150826130d68583615013565b6130e09190615059565b6130ea9082614f3d565b90506130f63085614463565b613101888c8c6124bc565b61310c878c8b6124bc565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015613176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319a9190614ef5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290965073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015613207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322b9190614ef5565b600b5490955061326c9087908790859085906fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166126f1565b604080518b8152602081018b905273ffffffffffffffffffffffffffffffffffffffff8d169133917f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa2910160405180910390a35050600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017905550959794965093945050505050565b600754604080517f017e7e58000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163017e7e589160048083019260209291908290030181865afa158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad9190614ff6565b604080518082018252601c81527f65786563757465576f726b28616464726573732c616464726573732900000000602091820152600854600954835173ffffffffffffffffffffffffffffffffffffffff9283166024820152908216604480830191909152845180830390910181526064909101845291820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3048c0290000000000000000000000000000000000000000000000000000000017905291519293509083169161347d91906150c1565b6000604051808303816000865af19150503d80600081146129d8576040519150601f19603f3d011682016040523d82523d6000602084013e6129d8565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b60006107066134fc612c4d565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061356987878787614627565b9150915061357681614716565b5095945050505050565b600c546000907f0100000000000000000000000000000000000000000000000000000000000000900460ff16600114613615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f536d61724465783a204c4f434b45440000000000000000000000000000000000604482015260640161079f565b600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001790556136666142a0565b506008546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000918291829173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156136da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fe9190614ef5565b6009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137969190614ef5565b905060006137a360025490565b6040805160a08101825260085473ffffffffffffffffffffffffffffffffffffffff90811682526009548116602083019081528284018e8152606084018e81528d84166080860190815295517f797c4a1300000000000000000000000000000000000000000000000000000000815294518416600486015291518316602485015251604484015251606483015291519091166084820152909150339063797c4a139060a401600060405180830381600087803b15801561386257600080fd5b505af1158015613876573d6000803e3d6000fd5b50506008546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401602060405180830381865afa1580156138eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390f9190614ef5565b6009546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a79190614ef5565b90506139b38b86614fe3565b821015613a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536d61724465783a20494e53554646494349454e545f414d4f554e545f300000604482015260640161079f565b613a268a85614fe3565b811015613a8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536d61724465783a20494e53554646494349454e545f414d4f554e545f310000604482015260640161079f565b82600003613ae5576103e8613aac613aa78c8e615013565b6148cc565b613ab69190614f3d565b9750613ac661dead6103e86149b4565b613ad1600283615059565b9650613ade600282615059565b9550613b9a565b613b1785613af3858e615013565b613afd9190615059565b85613b08868e615013565b613b129190615059565b613d1e565b975082613b248982614fe3565b600a54613b4391906fffffffffffffffffffffffffffffffff16615013565b613b4d9190615059565b965082613b5a8982614fe3565b600a54613b8d919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16615013565b613b979190615059565b95505b60008811613c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f536d61724465783a20494e53554646494349454e545f4c49515549444954595f60448201527f4d494e5445440000000000000000000000000000000000000000000000000000606482015260840161079f565b613c348c896149b4565b600b54613c7290839083908a908a906fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166126f1565b604080518c8152602081018c905273ffffffffffffffffffffffffffffffffffffffff8e169133917f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee910160405180910390a35050600c80547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000179055509398975050505050505050565b6000818310613d2d5781613d2f565b825b9392505050565b84613d418286615013565b613d4b8486615013565b1115613e8f5760006002613d60816005614fe3565b613d6c90612710614f3d565b613d7890612710614fe3565b613d829190614f3d565b613d8c9087615013565b9050600060016005613d9f600282614fe3565b613dab90612710614f3d565b613db59190614fe3565b901b90506000613dc6600580615013565b613dd08980615013565b613dda9190615013565b613de76002612710614f3d565b613df360026005614fe3565b613dff90612710614f3d565b613e099190615013565b87876002613e178c8e615013565b613e2292911b615059565b613e2c9190615013565b613e369190615013565b613e409190614fe3565b90506002613e4e838b615013565b613e589085614fe3565b613e62919061521a565b811015613e8b578183613e74836148cc565b613e7e9190614f3d565b613e889190615059565b93505b5050505b95945050505050565b6000613e8f613ea78387615013565b613eb18587615013565b614aa7565b600080613ec38387615013565b613ecd8587615013565b1015613f4a576000868585613ee28980615013565b613eec9190615059565b613ef69190615013565b613f009190615059565b905083613f0d8688615013565b613f179190615059565b84613f228784615013565b613f2c9190615059565b613f369190614fe3565b9250613f428187614fe3565b915050613f8f565b8583613f568787615013565b613f609190615059565b613f6a9190614fe3565b91508484613f788589615013565b613f829190615059565b613f8c9190614fe3565b90505b600291821c96911c945092505050565b60008080808080613fb260026005614fe3565b613fbe90612710614f3d565b613fc8908c615013565b90506000613fd68883615013565b9050600082613fe76127108c615013565b613ff19190614fe3565b9050613ffd8183615059565b9750600061271060058f6140119190615013565b61401b9086614fe3565b6140259190615059565b9050614031818e614fe3565b975061403d818c614fe3565b9550614049898d614f3d565b9650614055898b614f3d565b9450505050509550955095509550959050565b846140738286615013565b61407d8486615013565b1115613e8f5760008383614092600589615013565b61409c9190615013565b6140a69190615059565b905060008160016140b960026005614fe3565b6140c590612710614f3d565b6140cf9089615013565b6140da92911b614fe3565b9050600060016140ec60026005614fe3565b6140f890612710614f3d565b901b905060006141088480615013565b60056141176002612710614f3d565b61412360026005614fe3565b61412f90612710614f3d565b6141399190615013565b6002614145888d615013565b61415092911b615013565b61415a9190615059565b6141649190614fe3565b90506002614172838c615013565b61417c9085614f3d565b614186919061521a565b8111156141ae5781614197826148cc565b6141a19085614f3d565b6141ab9190615059565b94505b5050505095945050505050565b600080808080806127106141cf8c8a615013565b6141d99190615013565b905060006141e960026005614fe3565b6141f590612710614f3d565b6141ff8d8a614f3d565b6142099190615013565b90506142158183615059565b614220906001614fe3565b965060006127106005614234600282614fe3565b61424090612710614f3d565b61424a9190614fe3565b614254908a615013565b61425e9190615059565b905061426a818d614fe3565b9650614276818b614fe3565b94506142828d8c614f3d565b955061428e8d8a614f3d565b93505050509550955095509550959050565b600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015614310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143349190614ff6565b73ffffffffffffffffffffffffffffffffffffffff8116158015935090915061443757600c546cffffffffffffffffffffffffff650100000000008204811691720100000000000000000000000000000000000090041681156143de576008546143b59073ffffffffffffffffffffffffffffffffffffffff1684846124bc565b600c80547fffffffffffffffffffffffffffff00000000000000000000000000ffffffffff1690555b8015614431576009546144089073ffffffffffffffffffffffffffffffffffffffff1684836124bc565b600c80547fff00000000000000000000000000ffffffffffffffffffffffffffffffffffff1690555b50505090565b600c80547fff0000000000000000000000000000000000000000000000000000ffffffffff1690555090565b73ffffffffffffffffffffffffffffffffffffffff8216614506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156145bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161079f565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561465e575060009050600361470d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156146b2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166147065760006001925092505061470d565b9150600090505b94509492505050565b600081600481111561472a5761472a615229565b036147325750565b600181600481111561474657614746615229565b036147ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161079f565b60028160048111156147c1576147c1615229565b03614828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161079f565b600381600481111561483c5761483c615229565b036148c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161079f565b50565b6000816000036148de57506000919050565b600060016148eb84614b09565b901c6001901b905060018184816149045761490461502a565b048201901c9050600181848161491c5761491c61502a565b048201901c905060018184816149345761493461502a565b048201901c9050600181848161494c5761494c61502a565b048201901c905060018184816149645761496461502a565b048201901c9050600181848161497c5761497c61502a565b048201901c905060018184816149945761499461502a565b048201901c9050613d2f818285816149ae576149ae61502a565b04613d1e565b73ffffffffffffffffffffffffffffffffffffffff8216614a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161079f565b8060026000828254614a439190614fe3565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600081831115614add57620f4240614ac0600184615013565b614aca9190615059565b614ad49083614fe3565b83109050610706565b620f4240614aec600185615013565b614af69190615059565b614b009084614fe3565b82109050610706565b600080608083901c15614b1e57608092831c92015b604083901c15614b3057604092831c92015b602083901c15614b4257602092831c92015b601083901c15614b5457601092831c92015b600883901c15614b6657600892831c92015b600483901c15614b7857600492831c92015b600283901c15614b8a57600292831c92015b600183901c156107065760010192915050565b60005b83811015614bb8578181015183820152602001614ba0565b50506000910152565b6020815260008251806020840152614be0816040850160208701614b9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146148c957600080fd5b60008060408385031215614c4757600080fd5b8235614c5281614c12565b946020939093013593505050565b80151581146148c957600080fd5b600080600080600060808688031215614c8657600080fd5b8535614c9181614c12565b94506020860135614ca181614c60565b935060408601359250606086013567ffffffffffffffff80821115614cc557600080fd5b818801915088601f830112614cd957600080fd5b813581811115614ce857600080fd5b896020828501011115614cfa57600080fd5b9699959850939650602001949392505050565b600080600060608486031215614d2257600080fd5b8335614d2d81614c12565b92506020840135614d3d81614c12565b929592945050506040919091013590565b60008060408385031215614d6157600080fd5b8235614d6c81614c12565b91506020830135614d7c81614c12565b809150509250929050565b600060208284031215614d9957600080fd5b8135613d2f81614c12565b600080600080600080600060e0888a031215614dbf57600080fd5b8735614dca81614c12565b96506020880135614dda81614c12565b95506040880135945060608801359350608088013560ff81168114614dfe57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060008060808587031215614e3157600080fd5b8435614e3c81614c12565b935060208501359250604085013591506060850135614e5a81614c12565b939692955090935050565b60008060008060008060c08789031215614e7e57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600181811c90821680614ebc57607f821691505b6020821081036134e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215614f0757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561070657610706614f0e565b60007f80000000000000000000000000000000000000000000000000000000000000008203614f8157614f81614f0e565b5060000390565b84815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b8082018082111561070657610706614f0e565b60006020828403121561500857600080fd5b8151613d2f81614c12565b808202811582820484141761070657610706614f0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261508f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6cffffffffffffffffffffffffff8181168382160190808211156150ba576150ba614f0e565b5092915050565b600082516150d3818460208701614b9d565b9190910192915050565b6000602082840312156150ef57600080fd5b8151613d2f81614c60565b600181815b8085111561515357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561513957615139614f0e565b8085161561514657918102915b93841c93908002906150ff565b509250929050565b60008261516a57506001610706565b8161517757506000610706565b816001811461518d5760028114615197576151b3565b6001915050610706565b60ff8411156151a8576151a8614f0e565b50506001821b610706565b5060208310610133831016604e8410600b84101617156151d6575081810a610706565b6151e083836150fa565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561521257615212614f0e565b029392505050565b6000613d2f60ff84168361515b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000811000a