aave-protocol-v2/types/LendingPoolFactory.ts
2020-06-03 12:23:21 +02:00

1056 lines
77 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import { TransactionOverrides } from ".";
import { LendingPool } from "./LendingPool";
export class LendingPoolFactory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(overrides?: TransactionOverrides): Promise<LendingPool> {
return super.deploy(overrides) as Promise<LendingPool>;
}
getDeployTransaction(overrides?: TransactionOverrides): UnsignedTransaction {
return super.getDeployTransaction(overrides);
}
attach(address: string): LendingPool {
return super.attach(address) as LendingPool;
}
connect(signer: Signer): LendingPoolFactory {
return super.connect(signer) as LendingPoolFactory;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): LendingPool {
return new Contract(address, _abi, signerOrProvider) as LendingPool;
}
}
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRateMode",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRate",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_originationFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowBalanceIncrease",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Borrow",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Deposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_target",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_totalFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_protocolFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "FlashLoan",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_accruedBorrowInterest",
type: "uint256"
},
{
indexed: false,
internalType: "address",
name: "_liquidator",
type: "address"
},
{
indexed: false,
internalType: "bool",
name: "_receiveAToken",
type: "bool"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "LiquidationCall",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_feeLiquidated",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralForFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "OriginationFeeLiquidated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_newStableRate",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "RebalanceStableBorrowRate",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "RedeemUnderlying",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_repayer",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amountMinusFees",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fees",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Repay",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralDisabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralEnabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_newRateMode",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_newRate",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Swap",
type: "event"
},
{
inputs: [],
name: "LENDINGPOOL_REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "UINT_MAX_VALUE",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "addressesProvider",
outputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_interestRateMode",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "borrow",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "core",
outputs: [
{
internalType: "contract LendingPoolCore",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "dataProvider",
outputs: [
{
internalType: "contract LendingPoolDataProvider",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "deposit",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_receiver",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "bytes",
name: "_params",
type: "bytes"
}
],
name: "flashLoan",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveConfigurationData",
outputs: [
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationBonus",
type: "uint256"
},
{
internalType: "address",
name: "interestRateStrategyAddress",
type: "address"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
},
{
internalType: "bool",
name: "borrowingEnabled",
type: "bool"
},
{
internalType: "bool",
name: "stableBorrowRateEnabled",
type: "bool"
},
{
internalType: "bool",
name: "isActive",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveData",
outputs: [
{
internalType: "uint256",
name: "totalLiquidity",
type: "uint256"
},
{
internalType: "uint256",
name: "availableLiquidity",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsStable",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsVariable",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "stableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "averageStableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "utilizationRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityIndex",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "address",
name: "aTokenAddress",
type: "address"
},
{
internalType: "uint40",
name: "lastUpdateTimestamp",
type: "uint40"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "getReserves",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserAccountData",
outputs: [
{
internalType: "uint256",
name: "totalLiquidityETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalCollateralETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalFeesETH",
type: "uint256"
},
{
internalType: "uint256",
name: "availableBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "currentLiquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "healthFactor",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserReserveData",
outputs: [
{
internalType: "uint256",
name: "currentATokenBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "currentBorrowBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "principalBorrowBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "borrowRateMode",
type: "uint256"
},
{
internalType: "uint256",
name: "borrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "originationFee",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "uint256",
name: "lastUpdateTimestamp",
type: "uint256"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "_addressesProvider",
type: "address"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_collateral",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
internalType: "bool",
name: "_receiveAToken",
type: "bool"
}
],
name: "liquidationCall",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [],
name: "parametersProvider",
outputs: [
{
internalType: "contract LendingPoolParametersProvider",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "rebalanceStableBorrowRate",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address payable",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_aTokenBalanceAfterRedeem",
type: "uint256"
}
],
name: "redeemUnderlying",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "address payable",
name: "_onBehalfOf",
type: "address"
}
],
name: "repay",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_useAsCollateral",
type: "bool"
}
],
name: "setUserUseReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "swapBorrowRateMode",
outputs: [],
stateMutability: "nonpayable",
type: "function"
}
];
const _bytecode =
"0x6080604052600060015534801561001557600080fd5b5060016000806101000a81548160ff02191690831515021790555061715580620000406000396000f3fe6080604052600436106101295760003560e01c80638afaff02116100ab578063c72c4d101161006f578063c72c4d1014610934578063c858f5f91461098b578063cd112382146109fe578063d0fc81d214610a6f578063d2d0e06614610a9a578063f2f4eb2614610af657610129565b80638afaff02146107465780639895e3d814610771578063b334ed86146107f6578063bf92857c1461084d578063c4d66de8146108e357610129565b806348ca1300116100f257806348ca1300146104c157806358707e06146105125780635a3b74b9146105695780635ceae9c4146105c65780635cffe9de1461063457610129565b8062a718a91461012e5780630902f1ac146101c857806328dd2d011461023457806335ea6a75146102fc5780633e150141146103ef575b600080fd5b6101c6600480360360a081101561014457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050610b4d565b005b3480156101d457600080fd5b506101dd611149565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610220578082015181840152602081019050610205565b505050509050019250505060405180910390f35b34801561024057600080fd5b506102a36004803603604081101561025757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128d565b604051808b81526020018a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019a505050505050505050505060405180910390f35b34801561030857600080fd5b5061034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611429565b604051808e81526020018d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018264ffffffffff1664ffffffffff1681526020019d505050505050505050505050505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bc565b604051808981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001851515151581526020018415151515815260200183151515158152602001821515151581526020019850505050505050505060405180910390f35b3480156104cd57600080fd5b50610510600480360360208110156104e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611705565b005b34801561051e57600080fd5b50610527611dd1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057557600080fd5b506105c46004803603604081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611df7565b005b610632600480360360608110156105dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612355565b005b34801561064057600080fd5b506107446004803603608081101561065757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106be57600080fd5b8201836020820111156106d057600080fd5b803590602001918460018302840111640100000000831117156106f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613156565b005b34801561075257600080fd5b5061075b613a83565b6040518082815260200191505060405180910390f35b34801561077d57600080fd5b506107f46004803603608081101561079457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613a88565b005b34801561080257600080fd5b5061080b614056565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085957600080fd5b5061089c6004803603602081101561087057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061407c565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b3480156108ef57600080fd5b506109326004803603602081101561090657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506141c5565b005b34801561094057600080fd5b50610949614683565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099757600080fd5b506109fc600480360360808110156109ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803561ffff1690602001909291905050506146a9565b005b348015610a0a57600080fd5b50610a6d60048036036040811015610a2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061555b565b005b348015610a7b57600080fd5b50610a84615ebe565b6040518082815260200191505060405180910390f35b610af460048036036060811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050615ee2565b005b348015610b0257600080fd5b50610b0b616463565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900460ff16610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555083610bf281616489565b85610bfc81616489565b6000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635834eb9a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d6020811015610c9057600080fd5b81019080805190602001909291905050509050600060608273ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a604051602401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001955050505050506040516020818303038152906040527ea718a9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610e265780518252602082019150602081019050602083039250610e03565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e86576040519150601f19603f3d011682016040523d82523d6000602084013e610e8b565b606091505b509150915081610f03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c69717569646174696f6e2063616c6c206661696c656400000000000000000081525060200191505060405180910390fd5b60006060828060200190516040811015610f1c57600080fd5b810190808051906020019092919080516040519392919084640100000000821115610f4657600080fd5b83820191506020820185811115610f5c57600080fd5b8251866001820283011164010000000082111715610f7957600080fd5b8083526020830192505050908051906020019080838360005b83811015610fad578082015181840152602081019050610f92565b50505050905090810190601f168015610fda5780820380516001836020036101000a031916815260200191505b506040525050509150915060008214611121578060405160200180807f4c69717569646174696f6e206661696c65643a2000000000000000000000000081525060140182805190602001908083835b6020831061104c5780518252602082019150602081019050602083039250611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110e65780820151818401526020810190506110cb565b50505050905090810190601f1680156111135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050505060016000806101000a81548160ff0219169083151502179055505050505050565b6060603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156111f157600080fd5b810190808051604051939291908464010000000082111561121157600080fd5b8382019150602082018581111561122757600080fd5b825186602082028301116401000000008211171561124457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561127b578082015181840152602081019050611260565b50505050905001604052505050905090565b600080600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328dd2d018d8d6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d61014081101561139b57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505099509950995099509950995099509950995099509295989b9194979a5092959850565b6000806000806000806000806000806000806000603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166335ea6a758f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101a06040518083038186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d6101a081101561150857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509c509c509c509c509c509c509c509c509c509c509c509c509c5091939597999b9d90929496989a9c50565b600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e1501418a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561166857600080fd5b505afa15801561167c573d6000803e3d6000fd5b505050506040513d61010081101561169357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505097509750975097509750975097509750919395975091939597565b6000809054906101000a900460ff16611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550806117aa81616489565b816117b4816165bb565b6000806000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd87336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b15801561188c57600080fd5b505afa1580156118a0573d6000803e3d6000fd5b505050506040513d60608110156118b657600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925092506000821161193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180616e536037913960400191505060405180910390fd5b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ca19f1988336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611a0f57600080fd5b505afa158015611a23573d6000803e3d6000fd5b505050506040513d6020811015611a3957600080fd5b81019080805190602001909291905050509050600280811115611a5857fe5b816002811115611a6457fe5b1415611bd657603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2174d868833866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d6020811015611b6f57600080fd5b8101908080519060200190929190505050611bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806170886030913960400191505060405180910390fd5b5b600080603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f61483118a33898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001826002811115611cb257fe5b60ff16815260200196505050505050506040805180830381600087803b158015611cdb57600080fd5b505af1158015611cef573d6000803e3d6000fd5b505050506040513d6040811015611d0557600080fd5b810190808051906020019092919080519060200190929190505050915091503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fb3e2773606abfd36b5bd91394b3a54d1398336c65005baf7bf7a05efeffaf75b846002811115611d7f57fe5b8488426040518085815260200184815260200183815260200182815260200194505050505060405180910390a3505050505050505060016000806101000a81548160ff02191690831515021790555050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff16611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555081611e9c81616489565b82611ea6816165bb565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318a4dbca86336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611f7b57600080fd5b505afa158015611f8f573d6000803e3d6000fd5b505050506040513d6020811015611fa557600080fd5b8101908080519060200190929190505050905060008111612011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616ff9602a913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e9d6158633846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d602081101561211657600080fd5b810190808051906020019092919050505061217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180616cf06030913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa51854c8633876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019350505050600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b5050505083156122d9573373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3612334565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b50505060016000806101000a81548160ff0219169083151502179055505050565b6000809054906101000a900460ff166123d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550826123fa81616489565b82612404816166ee565b61240c616b3c565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd87866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b1580156124df57600080fd5b505afa1580156124f3573d6000803e3d6000fd5b505050506040513d606081101561250957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050836000018460200185604001838152508381525083815250505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feab31ac87866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d602081101561264657600080fd5b81019080805190602001909291905050508160e00181815250508573ffffffffffffffffffffffffffffffffffffffff1661267f616767565b73ffffffffffffffffffffffffffffffffffffffff16148160600190151590811515815250506000816020015111612702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061705f6029913960400191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8514158061275c57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6127b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001806170b86044913960600191505060405180910390fd5b6127cc8160e00151826020015161678390919063ffffffff16565b8160800181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85141580156128085750806080015185105b1561281857848160800181815250505b8060600151158061282d575080608001513410155b612882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180616da96028913960400191505060405180910390fd5b8060e00151816080015111612c3457603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da12d96f878660008560800151866040015160006040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001821515151581526020019650505050505050600060405180830381600087803b15801561299457600080fd5b505af11580156129a8573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7d1423782606001516129fa576000612a00565b82608001515b88878560800151603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015612a6f57600080fd5b505afa158015612a83573d6000803e3d6000fd5b505050506040513d6020811015612a9957600080fd5b81019080805190602001909291905050506040518663ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019450505050506000604051808303818588803b158015612b7857600080fd5b505af1158015612b8c573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d600085608001518660400151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a450613135565b612c4f8160e00151826080015161680b90919063ffffffff16565b8160a0018181525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da12d96f87868460a001518560e0015186604001518760a001518860200151146040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001821515151581526020019650505050505050600060405180830381600087803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b5050505060008160e001511115612f7257603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7d142378260600151612dda576000612de0565b8260e001515b88878560e00151603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015612e4f57600080fd5b505afa158015612e63573d6000803e3d6000fd5b505050506040513d6020811015612e7957600080fd5b81019080805190602001909291905050506040518663ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019450505050506000604051808303818588803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b50505050505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fcf4d38260600151612fc0576000612fd8565b612fd78360e001513461680b90919063ffffffff16565b5b88338560a001516040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303818588803b15801561307a57600080fd5b505af115801561308e573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d8460a001518560e001518660400151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a4505b505060016000806101000a81548160ff021916908315150217905550505050565b6000809054906101000a900460ff166131d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550826131fb81616489565b82613205816166ee565b600061320f616767565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613320578573ffffffffffffffffffffffffffffffffffffffff166370a08231603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156132e057600080fd5b505afa1580156132f4573d6000803e3d6000fd5b505050506040513d602081101561330a57600080fd5b810190808051906020019092919050505061335b565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315b9050848110156133b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616c4d6031913960400191505060405180910390fd5b600080603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561342057600080fd5b505afa158015613434573d6000803e3d6000fd5b505050506040513d604081101561344a57600080fd5b810190808051906020019092919080519060200190929190505050915091506000613492612710613484858b61685590919063ffffffff16565b6168db90919063ffffffff16565b905060006134bd6127106134af858561685590919063ffffffff16565b6168db90919063ffffffff16565b90506000821180156134cf5750600081115b613524576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180616f606032913960400191505060405180910390fd5b60008b905060008c9050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a58d838e6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561360b57600080fd5b505af115801561361f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ee8725588d8d878e6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136d05780820151818401526020810190506136b5565b50505050905090810190601f1680156136fd5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561371f57600080fd5b505af1158015613733573d6000803e3d6000fd5b505050506000613741616767565b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614613852578c73ffffffffffffffffffffffffffffffffffffffff166370a08231603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561381257600080fd5b505afa158015613826573d6000803e3d6000fd5b505050506040513d602081101561383c57600080fd5b810190808051906020019092919050505061388d565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315b90506138a2858961678390919063ffffffff16565b81146138f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180616e216032913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ac29538e8a61394c888a61680b90919063ffffffff16565b886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b1580156139c457600080fd5b505af11580156139d8573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558e8888426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050505050505060016000806101000a81548160ff02191690831515021790555050505050565b600281565b6000809054906101000a900460ff16613b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555083603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613bc357600080fd5b505afa158015613bd7573d6000803e3d6000fd5b505050506040513d6020811015613bed57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b815260200180616ebe604b913960600191505060405180910390fd5b84613c8b81616489565b83613c95816166ee565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2403019896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613d3657600080fd5b505afa158015613d4a573d6000803e3d6000fd5b505050506040513d6020811015613d6057600080fd5b8101908080519060200190929190505050905085811015613dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616d446031913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afcdbea389898960008a146040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613eb857600080fd5b505af1158015613ecc573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a58989896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68842604051808381526020018281526020019250505060405180910390a35050505060016000806101000a81548160ff02191690831515021790555050505050565b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf92857c8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561412857600080fd5b505afa15801561413c573d6000803e3d6000fd5b505050506040513d61010081101561415357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505097509750975097509750975097509750919395975091939597565b60006141cf616925565b9050600260009054906101000a900460ff16806141f057506141ef61692e565b5b806141fc575060015481115b614251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616f92602e913960400191505060405180910390fd5b6000600260009054906101000a900460ff16159050801561428f576001600260006101000a81548160ff021916908315150217905550816001819055505b82603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561433857600080fd5b505afa15801561434c573d6000803e3d6000fd5b505050506040513d602081101561436257600080fd5b8101908080519060200190929190505050603660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f58b80d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561441b57600080fd5b505afa15801561442f573d6000803e3d6000fd5b505050506040513d602081101561444557600080fd5b8101908080519060200190929190505050603760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156144fe57600080fd5b505afa158015614512573d6000803e3d6000fd5b505050506040513d602081101561452857600080fd5b8101908080519060200190929190505050603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbeefc3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156145e157600080fd5b505afa1580156145f5573d6000803e3d6000fd5b505050506040513d602081101561460b57600080fd5b8101908080519060200190929190505050603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561467e576000600260006101000a81548160ff0219169083151502179055505b505050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff1661472a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055508361474e81616489565b84614758816165bb565b84614762816166ee565b61476a616b83565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cf2e656896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561480957600080fd5b505afa15801561481d573d6000803e3d6000fd5b505050506040513d602081101561483357600080fd5b8101908080519060200190929190505050614899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180616d206024913960400191505060405180910390fd5b856002808111156148a657fe5b14806148bd575085600160028111156148bb57fe5b145b614912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616c7e6023913960400191505060405180910390fd5b85600281111561491e57fe5b816101c00190600281111561492f57fe5b9081600281111561493c57fe5b81525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2403019896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156149df57600080fd5b505afa1580156149f3573d6000803e3d6000fd5b505050506040513d6020811015614a0957600080fd5b810190808051906020019092919050505081610160018181525050868161016001511015614a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616f2a6036913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c6d0e9b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b158015614b2257600080fd5b505afa158015614b36573d6000803e3d6000fd5b505050506040513d610100811015614b4d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495965090508660c0018760e0018861010001896020018a6040018b6101e0018615151515815250868152508681525086815250868152508681525050505050505060008160c0015111614c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f6c6c61746572616c2062616c616e63652069732030000000000081525060200191505060405180910390fd5b806101e0015115614cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180616c0e603f913960400191505060405180910390fd5b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e563a7d033896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015614d6757600080fd5b505afa158015614d7b573d6000803e3d6000fd5b505050506040513d6020811015614d9157600080fd5b81019080805190602001909291905050508160600181815250506000816060015111614e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616ca16021913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312737c33898984606001518560e0015186610100015187602001516040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060206040518083038186803b158015614ee057600080fd5b505afa158015614ef4573d6000803e3d6000fd5b505050506040513d6020811015614f0a57600080fd5b81019080805190602001909291905050508160a00181815250508060c001518160a001511115614f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180616e8a6034913960400191505060405180910390fd5b60016002811115614f9257fe5b816101c001516002811115614fa357fe5b141561524657603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2174d8689338a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561508457600080fd5b505afa158015615098573d6000803e3d6000fd5b505050506040513d60208110156150ae57600080fd5b8101908080519060200190929190505050615114576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180616fc06039913960400191505060405180910390fd5b6000603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6b725ac6040518163ffffffff1660e01b815260040160206040518083038186803b15801561517e57600080fd5b505afa158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b8101908080519060200190929190505050905060006151e860646151da8486610160015161685590919063ffffffff16565b6168db90919063ffffffff16565b905080891115615243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180617023603c913960400191505060405180910390fd5b50505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337ac6fe489338a8560600151866101c001516040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600281111561532157fe5b60ff168152602001955050505050506040805180830381600087803b15801561534957600080fd5b505af115801561535d573d6000803e3d6000fd5b505050506040513d604081101561537357600080fd5b810190808051906020019092919080519060200190929190505050826101a001836101200182815250828152505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a589338a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561547f57600080fd5b505af1158015615493573d6000803e3d6000fd5b505050508461ffff163373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f1e77446728e5558aa1b7e81e0cdab9cc1b075ba893b740600c76a315c2caa5538a8a866101a0015187606001518861012001514260405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a45050505060016000806101000a81548160ff02191690831515021790555050505050565b6000809054906101000a900460ff166155dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055508161560081616489565b600080603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b1580156156d657600080fd5b505afa1580156156ea573d6000803e3d6000fd5b505050506040513d606081101561570057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050925092505060008211615783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616cc2602e913960400191505060405180910390fd5b6001600281111561579057fe5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ca19f1987876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561586357600080fd5b505afa158015615877573d6000803e3d6000fd5b505050506040513d602081101561588d57600080fd5b810190808051906020019092919050505060028111156158a957fe5b146158ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180616d756034913960400191505060405180910390fd5b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fffab0c87876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156159d457600080fd5b505afa1580156159e8573d6000803e3d6000fd5b505050506040513d60208110156159fe57600080fd5b810190808051906020019092919050505090506000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c540148e886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615ab257600080fd5b505afa158015615ac6573d6000803e3d6000fd5b505050506040513d6020811015615adc57600080fd5b810190808051906020019092919050505090506000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388079d88896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615b9057600080fd5b505afa158015615ba4573d6000803e3d6000fd5b505050506040513d6020811015615bba57600080fd5b810190808051906020019092919050505090506000615c9d615c8e603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346f4f8d16040518163ffffffff1660e01b815260040160206040518083038186803b158015615c3d57600080fd5b505afa158015615c51573d6000803e3d6000fd5b505050506040513d6020811015615c6757600080fd5b8101908080519060200190929190505050615c8061693f565b61678390919063ffffffff16565b8361695390919063ffffffff16565b905082841080615cac57508084115b15615e4e576000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af825b078b8b896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015615d9057600080fd5b505af1158015615da4573d6000803e3d6000fd5b505050506040513d6020811015615dba57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f5050ad184862424ee0852d1838d355ad65bed1e5e6da67ac9a2dac1922677f6083894260405180848152602001838152602001828152602001935050505060405180910390a350505050505050615e9f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616df2602f913960400191505060405180910390fd5b5060016000806101000a81548160ff0219169083151502179055505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6000809054906101000a900460ff16615f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555082615f8781616489565b83615f91816165bb565b83615f9b816166ee565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561603c57600080fd5b505afa158015616050573d6000803e3d6000fd5b505050506040513d602081101561606657600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156160f957600080fd5b505afa15801561610d573d6000803e3d6000fd5b505050506040513d602081101561612357600080fd5b8101908080519060200190929190505050149050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bcd6ffa489338a856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561622057600080fd5b505af1158015616234573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166394362e8b33896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156162bf57600080fd5b505af11580156162d3573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fcf4d3348a338b6040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303818588803b1580156163b457600080fd5b505af11580156163c8573d6000803e3d6000fd5b50505050508561ffff163373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c828a42604051808381526020018281526020019250505060405180910390a4505050505060016000806101000a81548160ff021916908315150217905550505050565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305075d6e826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561652857600080fd5b505afa15801561653c573d6000803e3d6000fd5b505050506040513d602081101561655257600080fd5b81019080805190602001909291905050506165b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd16021913960400191505060405180910390fd5b50565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a08accb826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561665a57600080fd5b505afa15801561666e573d6000803e3d6000fd5b505050506040513d602081101561668457600080fd5b8101908080519060200190929190505050156166eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806170fc6024913960400191505060405180910390fd5b50565b60008111616764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416d6f756e74206d7573742062652067726561746572207468616e203000000081525060200191505060405180910390fd5b50565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600080828401905083811015616801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061684d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506169b6565b905092915050565b60008083141561686857600090506168d5565b600082840290508284828161687957fe5b04146168d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616f096021913960400191505060405180910390fd5b809150505b92915050565b600061691d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616a76565b905092915050565b60006002905090565b600080303b90506000811491505090565b60006b033b2e3c9fd0803ce8000000905090565b60006169ae6b033b2e3c9fd0803ce80000006169a061697b858761685590919063ffffffff16565b60026b033b2e3c9fd0803ce80000008161699157fe5b0461678390919063ffffffff16565b6168db90919063ffffffff16565b905092915050565b6000838311158290616a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015616a28578082015181840152602081019050616a0d565b50505050905090810190601f168015616a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290616b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015616ae7578082015181840152602081019050616acc565b50505050905090810190601f168015616b145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581616b2e57fe5b049050809150509392505050565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006002811115616bfe57fe5b8152602001600015158152509056fe54686520626f72726f7765722063616e20616c7265616479206265206c69717569646174656420736f2068652063616e6e6f7420626f72726f77206d6f72655468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f77496e76616c696420696e7465726573742072617465206d6f64652073656c656374656454686520616d6f756e7420746f20626f72726f7720697320746f6f20736d616c6c5573657220646f6573206e6f74206861766520616e7920626f72726f7720666f722074686973207265736572766555736572206465706f73697420697320616c7265616479206265696e67207573656420617320636f6c6c61746572616c52657365727665206973206e6f7420656e61626c656420666f7220626f72726f77696e675468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f2072656465656d546865207573657220626f72726f77206973207661726961626c6520616e642063616e6e6f7420626520726562616c616e636564496e76616c6964206d73672e76616c75652073656e7420666f72207468652072657061796d656e74416374696f6e20726571756972657320616e206163746976652072657365727665496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745573657220646f6573206e6f742068617665206120626f72726f7720696e2070726f6772657373206f6e207468697320726573657276655468657265206973206e6f7420656e6f75676820636f6c6c61746572616c20746f20636f7665722061206e657720626f72726f775468652063616c6c6572206f6620746869732066756e6374696f6e2063616e206f6e6c79206265207468652061546f6b656e20636f6e7472616374206f6620746869732072657365727665536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520696e2074686520726573657276655468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120666c6173684c6f616e2e436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e742077697468206120737461626c6520726174655573657220646f6573206e6f74206861766520616e79206c6971756964697479206465706f73697465645573657220697320747279696e6720746f20626f72726f7720746f6f206d756368206c6971756964697479206174206120737461626c652072617465546865207573657220646f6573206e6f74206861766520616e7920626f72726f772070656e64696e67557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e7420617420737461626c65546f207265706179206f6e20626568616c66206f6620616e207573657220616e206578706c6963697420616d6f756e7420746f207265706179206973206e65656465642e416374696f6e20726571756972657320616e20756e667265657a65642072657365727665a26469706673582212209fd961d9726ec23b368b87d654abc826d007d87dcdd6a7441a1440c8780804e664736f6c63430006080033";