[ { "inputs": [ { "internalType": "contract IPool", "name": "_pool", "type": "address" }, { "internalType": "uint128[]", "name": "_binIds", "type": "uint128[]" }, { "internalType": "uint128[]", "name": "_ratios", "type": "uint128[]" }, { "internalType": "uint256", "name": "factoryCount", "type": "uint256" }, { "internalType": "bool", "name": "_isStatic", "type": "bool" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BinIsMerged", "type": "error" }, { "inputs": [ { "internalType": "uint128[]", "name": "binIds", "type": "uint128[]" } ], "name": "InvalidBinIds", "type": "error" }, { "inputs": [], "name": "InvalidRatio", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "InvalidTokenId", "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": false, "internalType": "uint128", "name": "oldBinId", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "newBinId", "type": "uint128" } ], "name": "MigrateBinLiquidity", "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": "allBinIds", "outputs": [ { "internalType": "uint128[]", "name": "", "type": "uint128[]" } ], "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": "uint256", "name": "", "type": "uint256" } ], "name": "binIds", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "binZeroLpAddAmount", "type": "uint128" } ], "name": "binLpAddAmountRequirement", "outputs": [ { "components": [ { "internalType": "uint128", "name": "binId", "type": "uint128" }, { "internalType": "uint128", "name": "amount", "type": "uint128" } ], "internalType": "struct IPool.RemoveLiquidityParams[]", "name": "params", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "lpAmountToUnStake", "type": "uint256" } ], "name": "burnFromToAddressAsReserves", "outputs": [ { "internalType": "uint256", "name": "amountA", "type": "uint256" }, { "internalType": "uint256", "name": "amountB", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "lpAmountToUnStake", "type": "uint256" } ], "name": "burnFromToTokenIdAsBinLiquidity", "outputs": [ { "components": [ { "internalType": "uint128", "name": "binId", "type": "uint128" }, { "internalType": "uint128", "name": "amount", "type": "uint128" } ], "internalType": "struct IPool.RemoveLiquidityParams[]", "name": "params", "type": "tuple[]" } ], "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": "getReserves", "outputs": [ { "internalType": "uint256", "name": "reserveA", "type": "uint256" }, { "internalType": "uint256", "name": "reserveB", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "isStatic", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migrateBinLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "internalType": "uint128", "name": "binZeroLpAddAmount", "type": "uint128" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "amountMinted", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "contract IPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "ratios", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ]
6101206040523480156200001257600080fd5b50604051620043fe380380620043fe833981016040819052620000359162000aa5565b6200004e858360016200054160201b620012221760201c565b62000067868460006200054160201b620012221760201c565b600362000075838262000bd8565b50600462000084828262000bd8565b50506001600555508351801580620000a7575081158015620000a7575080600114155b80620000b4575083518114155b15620000df578460405162637c7360e31b8152600401620000d6919062000ca4565b60405180910390fd5b670de0b6b3a764000084600081518110620000fe57620000fe62000cf3565b60200260200101516001600160801b0316146200012e5760405163648564d360e01b815260040160405180910390fd5b6001600160a01b03861660805283516200015090600790602087019062000894565b5084516200016690600690602088019062000894565b50856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000d09565b6001600160a01b03166309218e916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200020a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000230919062000d09565b6040516335313c2160e11b81523060048201526001600160a01b039190911690636a627842906024016020604051808303816000875af115801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062000d30565b6101005281151560a0526080516040805162fc63d160e41b815290516001600160a01b0390921691630fc63d10916004808201926020929091908290030181865afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000319919062000d09565b6001600160a01b031660c0816001600160a01b0316815250506080516001600160a01b0316635f64b55b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000373573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000399919062000d09565b6001600160a01b031660e0908152604080519182018152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c082018190529060005b8381101562000532576080516001600160a01b03166344a185bb89838151811062000411576200041162000cf3565b60200260200101516040518263ffffffff1660e01b81526004016200044591906001600160801b0391909116815260200190565b60e060405180830381865afa15801562000463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000489919062000d5d565b915060a0518015620004a1575060a082015160ff1615155b80620004db5750826001600160801b0316888281518110620004c757620004c762000cf3565b60200260200101516001600160801b031611155b15620004fd578760405162637c7360e31b8152600401620000d6919062000ca4565b87818151811062000512576200051262000cf3565b602002602001015192508080620005299062000e1d565b915050620003e2565b50505050505050505062000fea565b6060816200056b57604051806040016040528060038152602001624d502d60e81b81525062000597565b604051806040016040528060128152602001714d6176657269636b20506f736974696f6e2d60701b8152505b846001600160a01b0316630fc63d106040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fc919062000d09565b6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200063a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000664919081019062000e5f565b856001600160a01b0316635f64b55b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c9919062000d09565b6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000707573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000731919081019062000e5f565b62000747866200077460201b620014cd1760201c565b6040516020016200075c949392919062000efd565b60405160208183030381529060405290509392505050565b6060816000036200079c5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620007cc5780620007b38162000e1d565b9150620007c49050600a8362000f8a565b9150620007a0565b6000816001600160401b03811115620007e957620007e962000983565b6040519080825280601f01601f19166020018201604052801562000814576020820181803683370190505b5090505b84156200088c576200082c60018362000fa1565b91506200083b600a8662000fbd565b6200084890603062000fd4565b60f81b81838151811062000860576200086062000cf3565b60200101906001600160f81b031916908160001a90535062000884600a8662000f8a565b945062000818565b949350505050565b82805482825590600052602060002090600101600290048101928215620009415791602002820160005b838211156200090a57835183826101000a8154816001600160801b0302191690836001600160801b031602179055509260200192601001602081600f01049283019260010302620008be565b80156200093f5782816101000a8154906001600160801b030219169055601001602081600f010492830192600103026200090a565b505b506200094f92915062000953565b5090565b5b808211156200094f576000815560010162000954565b6001600160a01b03811681146200098057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715620009be57620009be62000983565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620009ef57620009ef62000983565b604052919050565b80516001600160801b038116811462000a0f57600080fd5b919050565b600082601f83011262000a2657600080fd5b815160206001600160401b0382111562000a445762000a4462000983565b8160051b62000a55828201620009c4565b928352848101820192828101908785111562000a7057600080fd5b83870192505b8483101562000a9a5762000a8a83620009f7565b8252918301919083019062000a76565b979650505050505050565b600080600080600060a0868803121562000abe57600080fd5b855162000acb816200096a565b60208701519095506001600160401b038082111562000ae957600080fd5b62000af789838a0162000a14565b9550604088015191508082111562000b0e57600080fd5b5062000b1d8882890162000a14565b935050606086015191506080860151801515811462000b3b57600080fd5b809150509295509295909350565b600181811c9082168062000b5e57607f821691505b60208210810362000b7f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000bd357600081815260208120601f850160051c8101602086101562000bae5750805b601f850160051c820191505b8181101562000bcf5782815560010162000bba565b5050505b505050565b81516001600160401b0381111562000bf45762000bf462000983565b62000c0c8162000c05845462000b49565b8462000b85565b602080601f83116001811462000c44576000841562000c2b5750858301515b600019600386901b1c1916600185901b17855562000bcf565b600085815260208120601f198616915b8281101562000c755788860151825594840194600190910190840162000c54565b508582101562000c945787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252825182820181905260009190848201906040850190845b8181101562000ce75783516001600160801b03168352928401929184019160010162000cc0565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121562000d1c57600080fd5b815162000d29816200096a565b9392505050565b60006020828403121562000d4357600080fd5b5051919050565b8051600381900b811462000a0f57600080fd5b600060e0828403121562000d7057600080fd5b62000d7a62000999565b62000d8583620009f7565b815262000d9560208401620009f7565b602082015262000da860408401620009f7565b604082015262000dbb60608401620009f7565b606082015262000dce60808401620009f7565b608082015260a083015160ff8116811462000de857600080fd5b60a082015262000dfb60c0840162000d4a565b60c08201529392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820162000e325762000e3262000e07565b5060010190565b60005b8381101562000e5657818101518382015260200162000e3c565b50506000910152565b60006020828403121562000e7257600080fd5b81516001600160401b038082111562000e8a57600080fd5b818401915084601f83011262000e9f57600080fd5b81518181111562000eb45762000eb462000983565b62000ec9601f8201601f1916602001620009c4565b915080825285602082850101111562000ee157600080fd5b62000ef481602084016020860162000e39565b50949350505050565b6000855162000f11818460208a0162000e39565b85519083019062000f27818360208a0162000e39565b602d60f81b9101818152855190919062000f49816001850160208a0162000e39565b6001920191820152835162000f6681600284016020880162000e39565b016002019695505050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000f9c5762000f9c62000f74565b500490565b8181038181111562000fb75762000fb762000e07565b92915050565b60008262000fcf5762000fcf62000f74565b500690565b8082018082111562000fb75762000fb762000e07565b60805160a05160c05160e0516101005161332d620010d160003960008181610261015281816105b70152818161079801528181610a7b01528181610b3c01528181610ce501528181610f5e01526118440152600050506000505060008181610414015281816106270152818161090c015281816110ad0152818161160e0152611a180152600081816102150152818161058a015281816106500152818161093501528181610b0001528181610ca801528181610f2f015281816110d6015281816116370152818161180801528181611a41015281816128330152612903015261332d6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063499d1081116100e3578063a796f7111161008c578063dd62ed3e11610066578063dd62ed3e146103b6578063e0da8d4a146103fc578063ef0def6a1461040f57600080fd5b8063a796f7111461037b578063a9059cbb1461038e578063b15a3bc6146103a157600080fd5b8063771dc86a116100bd578063771dc86a1461034d57806395d89b4114610360578063a457c2d71461036857600080fd5b8063499d10811461030257806370a08231146103155780637279f5931461034b57600080fd5b806317d70f7c1161014557806323b872dd1161011f57806323b872dd146102cd578063313ce567146102e057806339509351146102ef57600080fd5b806317d70f7c1461025c57806318160ddd146102915780631f2fce961461029957600080fd5b80630902f1ac116101765780630902f1ac146101d0578063095ea7b3146101ed57806316f0115b1461021057600080fd5b806306fdde0314610192578063088da5f6146101b0575b600080fd5b61019a610436565b6040516101a79190612a1d565b60405180910390f35b6101c36101be366004612a93565b6104c8565b6040516101a79190612b24565b6101d8610622565b604080519283526020830191909152016101a7565b6102006101fb366004612b37565b6107c5565b60405190151581526020016101a7565b6102377f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a7565b6102837f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016101a7565b600254610283565b6102ac6102a7366004612b63565b6107df565b6040516fffffffffffffffffffffffffffffffff90911681526020016101a7565b6102006102db366004612b7c565b610825565b604051601281526020016101a7565b6102006102fd366004612b37565b61084b565b610283610310366004612bdb565b610897565b610283610323366004612c1d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b005b6102ac61035b366004612b63565b610d74565b61019a610d84565b610200610376366004612b37565b610d93565b6101d8610389366004612b7c565b610e6f565b61020061039c366004612b37565b611000565b6103a961100e565b6040516101a79190612c3a565b6102836103c4366004612c90565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101c361040a366004612cc9565b6110a9565b6102007f000000000000000000000000000000000000000000000000000000000000000081565b60606003805461044590612ce6565b80601f016020809104026020016040519081016040528092919081815260200182805461047190612ce6565b80156104be5780601f10610493576101008083540402835291602001916104be565b820191906000526020600020905b8154815290600101906020018083116104a157829003601f168201915b5050505050905090565b606060026005540361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260055561054a848361160a565b6040517fd279735f00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d279735f906105e3907f00000000000000000000000000000000000000000000000000000000000000009087908690600401612d39565b600060405180830381600087803b1580156105fd57600080fd5b505af1158015610611573d6000803e3d6000fd5b505060016005555090949350505050565b6000807f000000000000000000000000000000000000000000000000000000000000000015801561075c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166344a185bb600660008154811061069e5761069e612d61565b6000918252602090912060028204015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260019092166010026101000a90046fffffffffffffffffffffffffffffffff16600482015260240160e060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190612e6a565b606001516fffffffffffffffffffffffffffffffff1615155b15610793576040517f3fecff8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc7f0000000000000000000000000000000000000000000000000000000000000000611a13565b90939092509050565b6000336107d3818585611bd9565b60019150505b92915050565b600681815481106107ef57600080fd5b9060005260206000209060029182820401919006601002915054906101000a90046fffffffffffffffffffffffffffffffff1681565b600033610833858285611d8d565b61083e858585611e64565b60019150505b9392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906107d39082908690610892908790612f51565b611bd9565b6000600260055403610905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610532565b60026005557f0000000000000000000000000000000000000000000000000000000000000000158015610a4157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166344a185bb600660008154811061098357610983612d61565b6000918252602090912060028204015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260019092166010026101000a90046fffffffffffffffffffffffffffffffff16600482015260240160e060405180830381865afa158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190612e6a565b606001516fffffffffffffffffffffffffffffffff1615155b15610a78576040517f3fecff8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b827f000000000000000000000000000000000000000000000000000000000000000003610ad4576040517fed15e6cf00000000000000000000000000000000000000000000000000000000815260048101849052602401610532565b6000610adf60025490565b90508015610c2657610c21836fffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636da3bf8b7f00000000000000000000000000000000000000000000000000000000000000006006600081548110610b6f57610b6f612d61565b6000918252602090912060028204015460405160e085901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019390935260019091166010026101000a90046fffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190612f64565b612117565b610c3a565b826fffffffffffffffffffffffffffffffff165b915081600003610ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f50503a207a65726f206d696e74000000000000000000000000000000000000006044820152606401610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d279735f857f0000000000000000000000000000000000000000000000000000000000000000610d0d876121e4565b6040518463ffffffff1660e01b8152600401610d2b93929190612d39565b600060405180830381600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b50505050610d67858361240f565b5060016005559392505050565b600781815481106107ef57600080fd5b60606004805461044590612ce6565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610e57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610532565b610e648286868403611bd9565b506001949350505050565b600080600260055403610ede576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610532565b60026005556000610eef868561160a565b6040517f57c8c7b000000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906357c8c7b090610f889088907f0000000000000000000000000000000000000000000000000000000000000000908690600401612f7d565b6000604051808303816000875af1158015610fa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fed9190810190612fb2565b5060016005559097909650945050505050565b6000336107d3818585611e64565b606060068054806020026020016040519081016040528092919081815260200182805480156104be57602002820191906000526020600020906000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f0104928301926001038202915080841161104b5790505050505050905090565b60607f00000000000000000000000000000000000000000000000000000000000000001580156111e257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166344a185bb600660008154811061112457611124612d61565b6000918252602090912060028204015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260019092166010026101000a90046fffffffffffffffffffffffffffffffff16600482015260240160e060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190612e6a565b606001516fffffffffffffffffffffffffffffffff1615155b15611219576040517f3fecff8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107d9826121e4565b606081611264576040518060400160405280600381526020017f4d502d000000000000000000000000000000000000000000000000000000000081525061129b565b6040518060400160405280601281526020017f4d6176657269636b20506f736974696f6e2d00000000000000000000000000008152505b8473ffffffffffffffffffffffffffffffffffffffff16630fc63d106040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a91906130fb565b73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611354573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261139a9190810190613118565b8573ffffffffffffffffffffffffffffffffffffffff16635f64b55b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140991906130fb565b73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611453573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114999190810190613118565b6114a2866114cd565b6040516020016114b594939291906131ca565b60405160208183030381529060405290509392505050565b60608160000361151057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561153a578061152481613255565b91506115339050600a836132bc565b9150611514565b60008167ffffffffffffffff81111561155557611555612d90565b6040519080825280601f01601f19166020018201604052801561157f576020820181803683370190505b5090505b8415611602576115946001836132d0565b91506115a1600a866132e3565b6115ac906030612f51565b60f81b8183815181106115c1576115c1612d61565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506115fb600a866132bc565b9450611583565b949350505050565b60607f000000000000000000000000000000000000000000000000000000000000000015801561174357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166344a185bb600660008154811061168557611685612d61565b6000918252602090912060028204015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260019092166010026101000a90046fffffffffffffffffffffffffffffffff16600482015260240160e060405180830381865afa158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190612e6a565b606001516fffffffffffffffffffffffffffffffff1615155b1561177a576040517f3fecff8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611792670de0b6b3a764000084610c1c60025490565b6006549091508067ffffffffffffffff8111156117b1576117b1612d90565b6040519080825280602002602001820160405280156117f657816020015b60408051808201909152600080825260208201528152602001906001900390816117cf5790505b50925060005b818110156119d85760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636da3bf8b7f00000000000000000000000000000000000000000000000000000000000000006006858154811061187657611876612d61565b6000918252602090912060028204015460405160e085901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019390935260019091166010026101000a90046fffffffffffffffffffffffffffffffff166024820152604401602060405180830381865afa1580156118ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119239190612f64565b905060405180604001604052806006848154811061194357611943612d61565b600091825260209182902060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff1682520161199261198d8488670de0b6b3a7640000612117565b61252f565b6fffffffffffffffffffffffffffffffff168152508583815181106119b9576119b9612d61565b60200260200101819052505080806119d090613255565b9150506117fc565b5073ffffffffffffffffffffffffffffffffffffffff85163314611a0157611a01853386611d8d565b611a0b85856125d5565b505092915050565b6000807f0000000000000000000000000000000000000000000000000000000000000000158015611b4d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166344a185bb6006600081548110611a8f57611a8f612d61565b6000918252602090912060028204015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260019092166010026101000a90046fffffffffffffffffffffffffffffffff16600482015260240160e060405180830381865afa158015611b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b349190612e6a565b606001516fffffffffffffffffffffffffffffffff1615155b15611b84576040517f3fecff8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065460005b81811015611bd257600080611b9f87846127ba565b509092509050611baf8287612f51565b9550611bbb8186612f51565b945050508080611bca90613255565b915050611b8a565b5050915091565b73ffffffffffffffffffffffffffffffffffffffff8316611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff8216611d1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e5e5781811015611e51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610532565b611e5e8484848403611bd9565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611f07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff8216611faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906120a4908490612f51565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161210a91815260200190565b60405180910390a3611e5e565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060000361216f578382816121655761216561328d565b0492505050610844565b80841161217b57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6006546060908067ffffffffffffffff81111561220357612203612d90565b60405190808252806020026020018201604052801561224857816020015b60408051808201909152600080825260208201528152602001906001900390816122215790505b5091506040518060400160405280600660008154811061226a5761226a612d61565b90600052602060002090600291828204019190066010029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001846fffffffffffffffffffffffffffffffff16815250826000815181106122dc576122dc612d61565b602090810291909101015260015b818110156124085760405180604001604052806006838154811061231057612310612d61565b90600052602060002090600291828204019190066010029054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016123c361198d876fffffffffffffffffffffffffffffffff166007868154811061238557612385612d61565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff16670de0b6b3a7640000612117565b6fffffffffffffffffffffffffffffffff168152508382815181106123ea576123ea612d61565b6020026020010181905250808061240090613255565b9150506122ea565b5050919050565b73ffffffffffffffffffffffffffffffffffffffff821661248c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610532565b806002600082825461249e9190612f51565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906124d8908490612f51565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006fffffffffffffffffffffffffffffffff8211156125d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610532565b5090565b73ffffffffffffffffffffffffffffffffffffffff8216612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610532565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061276a9084906132d0565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611d80565b600080600080600685815481106127d3576127d3612d61565b6000918252602082206002820401546040517f44a185bb00000000000000000000000000000000000000000000000000000000815260019092166010026101000a90046fffffffffffffffffffffffffffffffff166004820181905292507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906344a185bb9060240160e060405180830381865afa15801561288f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b39190612e6a565b60808101516040517f6da3bf8b000000000000000000000000000000000000000000000000000000008152600481018a90526fffffffffffffffffffffffffffffffff85166024820152919250907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636da3bf8b90604401602060405180830381865afa15801561295f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129839190612f64565b93506129b882600001516fffffffffffffffffffffffffffffffff1685836fffffffffffffffffffffffffffffffff16612117565b95506129ed82602001516fffffffffffffffffffffffffffffffff1685836fffffffffffffffffffffffffffffffff16612117565b94505050509250925092565b60005b83811015612a145781810151838201526020016129fc565b50506000910152565b6020815260008251806020840152612a3c8160408501602087016129f9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114612a9057600080fd5b50565b600080600060608486031215612aa857600080fd5b8335612ab381612a6e565b95602085013595506040909401359392505050565b600081518084526020808501945080840160005b83811015612b1957815180516fffffffffffffffffffffffffffffffff908116895290840151168388015260409096019590820190600101612adc565b509495945050505050565b6020815260006108446020830184612ac8565b60008060408385031215612b4a57600080fd5b8235612b5581612a6e565b946020939093013593505050565b600060208284031215612b7557600080fd5b5035919050565b600080600060608486031215612b9157600080fd5b8335612b9c81612a6e565b92506020840135612bac81612a6e565b929592945050506040919091013590565b6fffffffffffffffffffffffffffffffff81168114612a9057600080fd5b600080600060608486031215612bf057600080fd5b8335612bfb81612a6e565b9250602084013591506040840135612c1281612bbd565b809150509250925092565b600060208284031215612c2f57600080fd5b813561084481612a6e565b6020808252825182820181905260009190848201906040850190845b81811015612c845783516fffffffffffffffffffffffffffffffff1683529284019291840191600101612c56565b50909695505050505050565b60008060408385031215612ca357600080fd5b8235612cae81612a6e565b91506020830135612cbe81612a6e565b809150509250929050565b600060208284031215612cdb57600080fd5b813561084481612bbd565b600181811c90821680612cfa57607f821691505b602082108103612d33577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b838152826020820152606060408201526000612d586060830184612ac8565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612de257612de2612d90565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2f57612e2f612d90565b604052919050565b8051612e4281612bbd565b919050565b805160ff81168114612e4257600080fd5b8051600381900b8114612e4257600080fd5b600060e08284031215612e7c57600080fd5b60405160e0810181811067ffffffffffffffff82111715612e9f57612e9f612d90565b6040528251612ead81612bbd565b81526020830151612ebd81612bbd565b60208201526040830151612ed081612bbd565b60408201526060830151612ee381612bbd565b6060820152612ef460808401612e37565b6080820152612f0560a08401612e47565b60a0820152612f1660c08401612e58565b60c08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156107d9576107d9612f22565b600060208284031215612f7657600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612d586060830184612ac8565b60008060006060808587031215612fc857600080fd5b84519350602080860151935060408087015167ffffffffffffffff80821115612ff057600080fd5b818901915089601f83011261300457600080fd5b81518181111561301657613016612d90565b613024858260051b01612de8565b818152858101925060e091820284018601918c83111561304357600080fd5b938601935b828510156130e95780858e0312156130605760008081fd5b613068612dbf565b855161307381612bbd565b81528588015161308281612bbd565b8189015285870151878201528886015161309b81612bbd565b818a015260806130ac878201612e47565b9082015260a06130bd878201612e58565b9082015260c08681015180151581146130d65760008081fd5b9082015284529384019392860192613048565b50809750505050505050509250925092565b60006020828403121561310d57600080fd5b815161084481612a6e565b60006020828403121561312a57600080fd5b815167ffffffffffffffff8082111561314257600080fd5b818401915084601f83011261315657600080fd5b81518181111561316857613168612d90565b61319960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612de8565b91508082528560208285010111156131b057600080fd5b6131c18160208401602086016129f9565b50949350505050565b600085516131dc818460208a016129f9565b8551908301906131f0818360208a016129f9565b7f2d000000000000000000000000000000000000000000000000000000000000009101818152855190919061322c816001850160208a016129f9565b600192019182015283516132478160028401602088016129f9565b016002019695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328657613286612f22565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826132cb576132cb61328d565b500490565b818103818111156107d9576107d9612f22565b6000826132f2576132f261328d565b50069056fea2646970667358221220da07e8ff7a533f4b76119eb27302f45e4efdf5eba8155b6a780622a410eb2fc764736f6c63430008110033000000000000000000000000b0ba344cdf607dd952c6cbf70b21caed77c3d20000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000019aa4fa51f6f0139000000000000000000000000000000000000000000000000246b1a00d9fc2dcc0000000000000000000000000000000000000000000000002c502d01f3065abe000000000000000000000000000000000000000000000000316aade2bf6864dc000000000000000000000000000000000000000000000000360eb132bc3ddd380000000000000000000000000000000000000000000000004383c0bb2d0133a10000000000000000000000000000000000000000000000004719f8fbcf8afaad