ocean-subgraph/abis/FactoryRouter.json

1144 lines
76 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "FactoryRouter",
"sourceName": "contracts/pools/FactoryRouter.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_routerOwner",
"type": "address"
},
{
"internalType": "address",
"name": "_oceanToken",
"type": "address"
},
{
"internalType": "address",
"name": "_bpoolTemplate",
"type": "address"
},
{
"internalType": "address",
"name": "_opfCollector",
"type": "address"
},
{
"internalType": "address[]",
"name": "_preCreatedPools",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newBPoolAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "registeredBy",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "datatokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "basetokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "bpoolTemplateAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "ssAddress",
"type": "address"
}
],
"name": "BPoolCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "DispenserContractAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "DispenserContractRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "FactoryContractChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "FixedRateContractAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "FixedRateContractRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "instance",
"type": "address"
}
],
"name": "InstanceDeployed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "poolAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isOcean",
"type": "bool"
}
],
"name": "NewPool",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newFee",
"type": "uint256"
}
],
"name": "OPFFeeChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "PoolTemplateAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "PoolTemplateRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newRouter",
"type": "address"
}
],
"name": "RouterChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "SSContractAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "SSContractRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "TokenRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "minVestingPeriodInBlocks",
"type": "uint256"
}
],
"name": "VestingPeriodChanges",
"type": "event"
},
{
"inputs": [],
"name": "BONE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BPOW_PRECISION",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXIT_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INIT_POOL_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_BOUND_TOKENS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_BPOW_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_IN_RATIO",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_OUT_RATIO",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_TOTAL_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BALANCE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BOUND_TOKENS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_BPOW_BASE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_FEE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_WEIGHT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_dispenser",
"type": "address"
}
],
"name": "addDispenserContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_factory",
"type": "address"
}
],
"name": "addFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_fixedRate",
"type": "address"
}
],
"name": "addFixedRateContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oceanTokenAddress",
"type": "address"
}
],
"name": "addOceanToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolTemplate",
"type": "address"
}
],
"name": "addPoolTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_ssContract",
"type": "address"
}
],
"name": "addSSContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "exchangeIds",
"type": "bytes32"
},
{
"internalType": "address",
"name": "source",
"type": "address"
},
{
"internalType": "enum FactoryRouter.operationType",
"name": "operation",
"type": "uint8"
},
{
"internalType": "address",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountsIn",
"type": "uint256"
},
{
"internalType": "address",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountsOut",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "swapMarketFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "marketFeeAddress",
"type": "address"
}
],
"internalType": "struct FactoryRouter.Operations[]",
"name": "_operations",
"type": "tuple[]"
}
],
"name": "buyDTBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_routerOwner",
"type": "address"
}
],
"name": "changeRouterOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_dispenser",
"type": "address"
},
{
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"internalType": "uint256",
"name": "maxTokens",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBalance",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"name": "deployDispenser",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fixedPriceAddress",
"type": "address"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
}
],
"name": "deployFixedRate",
"outputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[2]",
"name": "tokens",
"type": "address[2]"
},
{
"internalType": "uint256[]",
"name": "ssParams",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "swapFees",
"type": "uint256[]"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
}
],
"name": "deployPool",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "dispenser",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "fixedPrice",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fixedRate",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinVestingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "baseToken",
"type": "address"
}
],
"name": "getOPFFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolTemplate",
"type": "address"
}
],
"name": "isPoolTemplate",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minVestingPeriodInBlocks",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "oceanTokens",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "opfCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_dispenser",
"type": "address"
}
],
"name": "removeDispenserContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_fixedRate",
"type": "address"
}
],
"name": "removeFixedRateContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oceanTokenAddress",
"type": "address"
}
],
"name": "removeOceanToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "poolTemplate",
"type": "address"
}
],
"name": "removePoolTemplate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_ssContract",
"type": "address"
}
],
"name": "removeSSContract",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "routerOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "ssContracts",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "swapOceanFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newPeriod",
"type": "uint256"
}
],
"name": "updateMinVestingPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newSwapOceanFee",
"type": "uint256"
}
],
"name": "updateOPFFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040526225049060055566038d7ea4c680006006553480156200002357600080fd5b5060405162003748380380620037488339810160408190526200004691620003c3565b8282826001600160a01b038316620000bb5760405162461bcd60e51b815260206004820152602d60248201527f42466163746f72793a20696e76616c69642062706f6f6c2074656d706c61746560448201526c207a65726f206164647265737360981b60648201526084015b60405180910390fd5b6001600160a01b038216620001135760405162461bcd60e51b815260206004820152601660248201527f42466163746f72793a207a65726f2061646472657373000000000000000000006044820152606401620000b2565b600080546001600160a01b0319166001600160a01b0384161790556200015a836001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b805115620002095760005b8151811015620002075760006001600160a01b0316336001600160a01b0316838381518110620001995762000199620004e3565b602090810291909101810151604080516000808252938101849052908101929092526001600160a01b0316907fbb6121447d29a04cc37bfd93cdf6a9dd08229f2d941116c1528f04698c4e790e9060600160405180910390a480620001fe81620004f9565b91505062000165565b505b5050506001600160a01b038516620002705760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c696420726f75746572206f776044820152623732b960e91b6064820152608401620000b2565b6001600160a01b038216620002d45760405162461bcd60e51b815260206004820152602360248201527f466163746f7279526f757465723a20496e76616c6964206f7066436f6c6c65636044820152623a37b960e91b6064820152608401620000b2565b6001600160a01b0384166200033f5760405162461bcd60e51b815260206004820152602a60248201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604482015269656e206164647265737360b01b6064820152608401620000b2565b50600280546001600160a01b03199081166001600160a01b039687161790915560008054909116918516919091178155919092168152600760205260409020805460ff191660011790555062000523565b80516001600160a01b0381168114620003a857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a08688031215620003dc57600080fd5b620003e78662000390565b94506020620003f881880162000390565b9450620004086040880162000390565b9350620004186060880162000390565b60808801519093506001600160401b03808211156200043657600080fd5b818901915089601f8301126200044b57600080fd5b815181811115620004605762000460620003ad565b8060051b604051601f19603f83011681018181108582111715620004885762000488620003ad565b60405291825284820192508381018501918c831115620004a757600080fd5b938501935b82851015620004d057620004c08562000390565b84529385019392850192620004ac565b8096505050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b60006000198214156200051c57634e487b7160e01b600052601160045260246000fd5b5060010190565b61321580620005336000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063a28f78f111610167578063d629a00a116100ce578063e525f99c11610087578063e525f99c14610556578063ec09302114610569578063ecdda58814610571578063ee3bc63514610584578063ee661f6714610597578063f8154aee146105ba57600080fd5b8063d629a00a146104f1578063d86850cc14610504578063de9a95a714610527578063e183fb3f1461053a578063e193faad14610543578063e4a28a52146102af57600080fd5b8063bc694ea211610120578063bc694ea21461048f578063c07c00fe14610497578063c1c436a5146104c3578063c36596a6146102f8578063c45a0155146104d6578063c6580d12146104e957600080fd5b8063a28f78f114610451578063b0e0d13614610464578063b19aaac61461046c578063b7b800a414610464578063ba019dab1461047f578063bc063e1a1461048757600080fd5b80637521aff91161020b578063867378c5116101c4578063867378c5146103f05780639381cd2b146103f8578063992e2a92146104005780639cdfa6ad146104085780639f2c010a1461041b5780639f587d4d1461042e57600080fd5b80637521aff91461035157806376c7a3c71461036457806379463a0e1461036c578063802d14221461039f57806382449375146103ca5780638552730a146103dd57600080fd5b8063218b53821161025d578063218b5382146102f857806329ce1ec514610307578063475030c01461031a57806347e1409414610323578063510f3465146103365780636c9fb6121461033e57600080fd5b80630318ad661461029a57806309a3bbe4146102af57806316592614146102ca57806316d9cb3d146102dd578063189d00ca146102f0575b600080fd5b6102ad6102a83660046128eb565b6105cd565b005b6102b7610673565b6040519081526020015b60405180910390f35b6102ad6102d83660046128eb565b610689565b6102ad6102eb3660046128eb565b610723565b6102b76107c0565b6102b7670de0b6b3a764000081565b6102ad6103153660046128eb565b6107d7565b6102b760055481565b6102ad6103313660046128eb565b610902565b6005546102b7565b6102ad61034c3660046128eb565b61099c565b6102ad61035f366004612908565b610a39565b6102b7610aa1565b61038f61037a3660046128eb565b60076020526000908152604090205460ff1681565b60405190151581526020016102c1565b6004546103b2906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b6102b76103d836600461296d565b610ab6565b6002546103b2906001600160a01b031681565b6102b7610c3b565b6102b7610c52565b6102b7610c65565b6102ad6104163660046128eb565b610c83565b6102ad6104293660046128eb565b610d1d565b61038f61043c3660046128eb565b60096020526000908152604090205460ff1681565b6000546103b2906001600160a01b031681565b6102b7600281565b6102ad61047a3660046128eb565b610db7565b6102b7600181565b6102b7610e45565b6102b7610e58565b61038f6104a53660046128eb565b6001600160a01b031660009081526001602052604090205460ff1690565b6102ad6104d1366004612908565b610e77565b6003546103b2906001600160a01b031681565b6102b7600081565b6102ad6104ff3660046129f0565b610ed8565b61038f6105123660046128eb565b600a6020526000908152604090205460ff1681565b6102ad6105353660046128eb565b61105b565b6102b760065481565b6102ad6105513660046128eb565b6110f8565b6102ad6105643660046128eb565b611180565b6102b761124c565b6102ad61057f366004612a60565b61125f565b6103b2610592366004612ad6565b611d6b565b61038f6105a53660046128eb565b60086020526000908152604090205460ff1681565b6102b76105c83660046128eb565b612163565b6002546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612b86565b60405180910390fd5b6001600160a01b0381166106265760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610686670de0b6b3a76400006032612c16565b81565b6002546001600160a01b031633146106b35760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166106d95760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166107735760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106866402540be400670de0b6b3a7640000612cc7565b6002546001600160a01b031633146108015760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166108675760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105f7565b6003546001600160a01b0316156108b65760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105f7565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b0316331461092c5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109525760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109c65760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109ec5760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b6002546001600160a01b03163314610a635760405162461bcd60e51b81526004016105f790612b86565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a475906020015b60405180910390a250565b610686620f4240670de0b6b3a7640000612cc7565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190612d43565b610b3f5760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b03861660009081526009602052604090205460ff16610bba5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105f7565b60405163012c327560e01b81526001600160a01b0387169063012c327590610bee9033908990899089908990600401612da9565b6020604051808303816000875af1158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c319190612e38565b9695505050505050565b61068664e8d4a51000670de0b6b3a7640000612cc7565b610686670de0b6b3a76400006064612c16565b610c786003670de0b6b3a7640000612cc7565b610686906001612e51565b6002546001600160a01b03163314610cad5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610cd35760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610d475760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610d6d5760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610de15760405162461bcd60e51b81526004016105f790612b86565b610e0c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610686600a670de0b6b3a7640000612cc7565b6001610e6d670de0b6b3a76400006002612c16565b6106869190612e69565b6002546001600160a01b03163314610ea15760405162461bcd60e51b81526004016105f790612b86565b600681905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc873890602001610a96565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190612d43565b610f605760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b0386166000908152600a602052604090205460ff16610fda5760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105f7565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b031633146110855760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166110ab5760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b031633146111225760405162461bcd60e51b81526004016105f790612b86565b611147816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111aa5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166112005760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105f7565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106866002670de0b6b3a7640000612cc7565b60328111156112bb5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105f7565b60005b81811015611d6657600060405180606001604052808585858181106112e5576112e5612e80565b9050610140020160600160208101906112fe91906128eb565b6001600160a01b0316815260200185858581811061131e5761131e612e80565b9050610140020160a001602081019061133791906128eb565b6001600160a01b0316815260200185858581811061135757611357612e80565b9050610140020161012001602081019061137191906128eb565b6001600160a01b03166001600160a01b03168152509050600060405180608001604052808686868181106113a7576113a7612e80565b905061014002016080013581526020018686868181106113c9576113c9612e80565b9050610140020160c0013581526020018686868181106113eb576113eb612e80565b9050610140020160e00135815260200186868681811061140d5761140d612e80565b90506101400201610100013581525090506000600381111561143157611431612e96565b85858581811061144357611443612e80565b90506101400201604001602081019061145c9190612eac565b600381111561146d5761146d612e96565b141561163c576114d1333087878781811061148a5761148a612e80565b90506101400201608001358888888181106114a7576114a7612e80565b9050610140020160600160208101906114c091906128eb565b6001600160a01b0316929190612199565b6115578585858181106114e6576114e6612e80565b9050610140020160200160208101906114ff91906128eb565b86868681811061151157611511612e80565b905061014002016080013587878781811061152e5761152e612e80565b90506101400201606001602081019061154791906128eb565b6001600160a01b0316919061220a565b600085858581811061156b5761156b612e80565b90506101400201602001602081019061158491906128eb565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b81526004016115b1929190612ecd565b60408051808303816000875af11580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f39190612f32565b509050611636338288888881811061160d5761160d612e80565b9050610140020160a001602081019061162691906128eb565b6001600160a01b031691906122bc565b50611d51565b600185858581811061165057611650612e80565b9050610140020160400160208101906116699190612eac565b600381111561167a5761167a612e96565b14156118f557600085858581811061169457611694612e80565b9050610140020160200160208101906116ad91906128eb565b6001600160a01b031663caa011488787878181106116cd576116cd612e80565b9050610140020160600160208101906116e691906128eb565b8888888181106116f8576116f8612e80565b9050610140020160a001602081019061171191906128eb565b89898981811061172357611723612e80565b9050610140020160c001358a8a8a81811061174057611740612e80565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190612e38565b90506117e53330838989898181106114a7576114a7612e80565b6118268686868181106117fa576117fa612e80565b90506101400201602001602081019061181391906128eb565b8288888881811061152e5761152e612e80565b85858581811061183857611838612e80565b90506101400201602001602081019061185191906128eb565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161187e929190612ecd565b60408051808303816000875af115801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612f32565b5050611636338787878181106118d8576118d8612e80565b9050610140020160c0013588888881811061160d5761160d612e80565b600285858581811061190957611909612e80565b9050610140020160400160208101906119229190612eac565b600381111561193357611933612e96565b1415611c6857600085858581811061194d5761194d612e80565b90506101400201602001602081019061196691906128eb565b6001600160a01b0316634c87087d87878781811061198657611986612e80565b90506101400201600001356040518263ffffffff1660e01b81526004016119af91815260200190565b61018060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612f56565b505050505050505050509150506000868686818110611a1257611a12612e80565b905061014002016020016020810190611a2b91906128eb565b6001600160a01b031663c99733a7888888818110611a4b57611a4b612e80565b9050610140020160000135898989818110611a6857611a68612e80565b9050610140020160c001356040518363ffffffff1660e01b8152600401611a99929190918252602082015260400190565b608060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada919061300a565b5050509050611af73330838a8a8a8181106114a7576114a7612e80565b611b38878787818110611b0c57611b0c612e80565b905061014002016020016020810190611b2591906128eb565b8289898981811061152e5761152e612e80565b868686818110611b4a57611b4a612e80565b905061014002016020016020810190611b6391906128eb565b6001600160a01b031663825b5cd6888888818110611b8357611b83612e80565b9050610140020160000135898989818110611ba057611ba0612e80565b9050610140020160c001358a8a8a818110611bbd57611bbd612e80565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b50505050611c6133888888818110611c3d57611c3d612e80565b9050610140020160c00135846001600160a01b03166122bc9092919063ffffffff16565b5050611d51565b848484818110611c7a57611c7a612e80565b905061014002016020016020810190611c9391906128eb565b6001600160a01b0316631d746d83868686818110611cb357611cb3612e80565b9050610140020160a0016020810190611ccc91906128eb565b878787818110611cde57611cde612e80565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505050505b50508080611d5e90613040565b9150506112be565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd89190612d43565b611df45760405162461bcd60e51b81526004016105f790612d5e565b6008600084846000818110611e0b57611e0b612e80565b9050602002016020810190611e2091906128eb565b6001600160a01b0316815260208101919091526040016000205460ff16611e945760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105f7565b600087876001818110611ea957611ea9612e80565b9050602002013511611eee5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105f7565b6000611f0060408a0160208b016128eb565b9050611f8984846002818110611f1857611f18612e80565b9050602002016020810190611f2d91906128eb565b85856000818110611f4057611f40612e80565b9050602002016020810190611f5591906128eb565b8a8a6004818110611f6857611f68612e80565b90506020020135846001600160a01b0316612199909392919063ffffffff16565b60408051808201825260009161204c91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506122ec92505050565b90506001600160a01b03811661209c5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105f7565b600760006120b060408d0160208e016128eb565b6001600160a01b0316815260208101919091526040016000205460ff161561211657604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612156565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526007602052604081205460ff161561218c57506000919050565b505060065490565b919050565b6040516001600160a01b03808516602483015283166044820152606481018290526122049085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f7565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190612e38565b6122899190612e51565b6040516001600160a01b03851660248201526044810182905290915061220490859063095ea7b360e01b906064016121cd565b6040516001600160a01b038316602482015260448101829052611d6690849063a9059cbb60e01b906064016121cd565b6000600160008360058151811061230557612305612e80565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166123785760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105f7565b600060405180604001604052808460048151811061239857612398612e80565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506123e190849060059081106123d4576123d4612e80565b60200260200101516126c9565b91506001600160a01b0382166124455760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6000829050806001600160a01b031663c070a6d88560008151811061246c5761246c612e80565b602002602001015130886000808d896040518863ffffffff1660e01b815260040161249d97969594939291906130c2565b6020604051808303816000875af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612d43565b6125235760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105f7565b8360008151811061253657612536612e80565b60200260200101516001600160a01b03166353f0c3b48860006002811061255f5761255f612e80565b60200201518960016020020151868860038151811061258057612580612e80565b60200260200101518b6040518663ffffffff1660e01b81526004016125a9959493929190613128565b6020604051808303816000875af11580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec9190612d43565b505050949350505050565b600061264c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127599092919063ffffffff16565b805190915015611d66578080602001905181019061266a9190612d43565b611d665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f7565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606127688484600085612772565b90505b9392505050565b6060824710156127d35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f7565b843b6128215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f7565b600080866001600160a01b0316858760405161283d9190613190565b60006040518083038185875af1925050503d806000811461287a576040519150601f19603f3d011682016040523d82523d6000602084013e61287f565b606091505b509150915061288f82828661289a565b979650505050505050565b606083156128a957508161276b565b8251156128b95782518084602001fd5b8160405162461bcd60e51b81526004016105f791906131ac565b6001600160a01b03811681146128e857600080fd5b50565b6000602082840312156128fd57600080fd5b813561276b816128d3565b60006020828403121561291a57600080fd5b5035919050565b60008083601f84011261293357600080fd5b50813567ffffffffffffffff81111561294b57600080fd5b6020830191508360208260051b850101111561296657600080fd5b9250929050565b60008060008060006060868803121561298557600080fd5b8535612990816128d3565b9450602086013567ffffffffffffffff808211156129ad57600080fd5b6129b989838a01612921565b909650945060408801359150808211156129d257600080fd5b506129df88828901612921565b969995985093965092949392505050565b60008060008060008060c08789031215612a0957600080fd5b8635612a14816128d3565b95506020870135612a24816128d3565b945060408701359350606087013592506080870135612a42816128d3565b915060a0870135612a52816128d3565b809150509295509295509295565b60008060208385031215612a7357600080fd5b823567ffffffffffffffff80821115612a8b57600080fd5b818501915085601f830112612a9f57600080fd5b813581811115612aae57600080fd5b86602061014083028501011115612ac457600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612af157600080fd5b6040880189811115612b0257600080fd5b8897503567ffffffffffffffff80821115612b1c57600080fd5b612b288b838c01612921565b909850965060608a0135915080821115612b4157600080fd5b612b4d8b838c01612921565b909650945060808a0135915080821115612b6657600080fd5b50612b738a828b01612921565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612c3057612c30612c00565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612ce457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b8051801515811461219457600080fd5b600060208284031215612d5557600080fd5b61276b82612d33565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612df8578435612de4816128d3565b841682529382019390820190600101612dd1565b5085810360408701528681526001600160fb1b03871115612e1857600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612e4a57600080fd5b5051919050565b60008219821115612e6457612e64612c00565b500190565b600082821015612e7b57612e7b612c00565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebe57600080fd5b81356004811061276b57600080fd5b60e08101818460005b6003811015612efe5781516001600160a01b0316835260209283019290910190600101612ed6565b505050606082018360005b6004811015612f28578151835260209283019290910190600101612f09565b5050509392505050565b60008060408385031215612f4557600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612f7957600080fd5b8c51612f84816128d3565b60208e0151909c50612f95816128d3565b60408e015160608f0151919c509a50612fad816128d3565b60808e015160a08f0151919a5098509650612fca60c08e01612d33565b955060e08d015194506101008d015193506101208d015192506101408d01519150612ff86101608e01612d33565b90509295989b509295989b509295989b565b6000806000806080858703121561302057600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060001982141561305457613054612c00565b5060010190565b600081518084526020808501945080840160005b8381101561308b5781518752958201959082019060010161306f565b509495945050505050565b8060005b60028110156122045781516001600160a01b031684526020938401939091019060010161309a565b6001600160a01b03888116825287166020820152610120604082018190526000906130ef8382018961305b565b9150508515156060830152841515608083015261310f60a0830185613096565b61311c60e0830184613096565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061288f9083018461305b565b60005b8381101561317f578181015183820152602001613167565b838111156122045750506000910152565b600082516131a2818460208701613164565b9190910192915050565b60208152600082518060208401526131cb816040850160208701613164565b601f01601f1916919091016040019291505056fea26469706673582212204ed3215981a25442d023b00f2a49cd2833bd47ec36633dcaa9f7d5dcb9dee20564736f6c634300080a0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102955760003560e01c8063a28f78f111610167578063d629a00a116100ce578063e525f99c11610087578063e525f99c14610556578063ec09302114610569578063ecdda58814610571578063ee3bc63514610584578063ee661f6714610597578063f8154aee146105ba57600080fd5b8063d629a00a146104f1578063d86850cc14610504578063de9a95a714610527578063e183fb3f1461053a578063e193faad14610543578063e4a28a52146102af57600080fd5b8063bc694ea211610120578063bc694ea21461048f578063c07c00fe14610497578063c1c436a5146104c3578063c36596a6146102f8578063c45a0155146104d6578063c6580d12146104e957600080fd5b8063a28f78f114610451578063b0e0d13614610464578063b19aaac61461046c578063b7b800a414610464578063ba019dab1461047f578063bc063e1a1461048757600080fd5b80637521aff91161020b578063867378c5116101c4578063867378c5146103f05780639381cd2b146103f8578063992e2a92146104005780639cdfa6ad146104085780639f2c010a1461041b5780639f587d4d1461042e57600080fd5b80637521aff91461035157806376c7a3c71461036457806379463a0e1461036c578063802d14221461039f57806382449375146103ca5780638552730a146103dd57600080fd5b8063218b53821161025d578063218b5382146102f857806329ce1ec514610307578063475030c01461031a57806347e1409414610323578063510f3465146103365780636c9fb6121461033e57600080fd5b80630318ad661461029a57806309a3bbe4146102af57806316592614146102ca57806316d9cb3d146102dd578063189d00ca146102f0575b600080fd5b6102ad6102a83660046128eb565b6105cd565b005b6102b7610673565b6040519081526020015b60405180910390f35b6102ad6102d83660046128eb565b610689565b6102ad6102eb3660046128eb565b610723565b6102b76107c0565b6102b7670de0b6b3a764000081565b6102ad6103153660046128eb565b6107d7565b6102b760055481565b6102ad6103313660046128eb565b610902565b6005546102b7565b6102ad61034c3660046128eb565b61099c565b6102ad61035f366004612908565b610a39565b6102b7610aa1565b61038f61037a3660046128eb565b60076020526000908152604090205460ff1681565b60405190151581526020016102c1565b6004546103b2906001600160a01b031681565b6040516001600160a01b0390911681526020016102c1565b6102b76103d836600461296d565b610ab6565b6002546103b2906001600160a01b031681565b6102b7610c3b565b6102b7610c52565b6102b7610c65565b6102ad6104163660046128eb565b610c83565b6102ad6104293660046128eb565b610d1d565b61038f61043c3660046128eb565b60096020526000908152604090205460ff1681565b6000546103b2906001600160a01b031681565b6102b7600281565b6102ad61047a3660046128eb565b610db7565b6102b7600181565b6102b7610e45565b6102b7610e58565b61038f6104a53660046128eb565b6001600160a01b031660009081526001602052604090205460ff1690565b6102ad6104d1366004612908565b610e77565b6003546103b2906001600160a01b031681565b6102b7600081565b6102ad6104ff3660046129f0565b610ed8565b61038f6105123660046128eb565b600a6020526000908152604090205460ff1681565b6102ad6105353660046128eb565b61105b565b6102b760065481565b6102ad6105513660046128eb565b6110f8565b6102ad6105643660046128eb565b611180565b6102b761124c565b6102ad61057f366004612a60565b61125f565b6103b2610592366004612ad6565b611d6b565b61038f6105a53660046128eb565b60086020526000908152604090205460ff1681565b6102b76105c83660046128eb565b612163565b6002546001600160a01b031633146106005760405162461bcd60e51b81526004016105f790612b86565b60405180910390fd5b6001600160a01b0381166106265760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191660011790555133917fdffbd9ded1c09446f09377de547142dcce7dc541c8b0b028142b1eba7026b9e791a350565b610686670de0b6b3a76400006032612c16565b81565b6002546001600160a01b031633146106b35760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166106d95760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191690555133917f63fe522dcdc5f006279afe8840a87398bb3d0dbb906b848866195859621908b391a350565b6002546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166107735760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191660011790555133917f45ccb9b9d6b112eb7a38daf6a23bda8b4c8449d5cf64a034975a5beb8cdd37b391a350565b6106866402540be400670de0b6b3a7640000612cc7565b6002546001600160a01b031633146108015760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166108675760405162461bcd60e51b815260206004820152602760248201527f466163746f7279526f757465723a20496e76616c6964205f666163746f7279206044820152666164647265737360c81b60648201526084016105f7565b6003546001600160a01b0316156108b65760405162461bcd60e51b8152602060048201526013602482015272119050d513d49648105314915051164814d155606a1b60448201526064016105f7565b600380546001600160a01b0319166001600160a01b03831690811790915560405133907f1f869f1ddaa0e2e3652252b3394c05c805f54a0d5f7fb6975f785ae4f91e587190600090a350565b6002546001600160a01b0316331461092c5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109525760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191690555133917f7df5d17d768be6563796784637c80bc9204e2af0bc4ba8630f5aa2fed96ea48791a350565b6002546001600160a01b031633146109c65760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166109ec5760405162461bcd60e51b81526004016105f790612ce9565b6001600160a01b038116600081815260086020526040808220805460ff191660011790555133917fcef3ce01f85c030161b431114e41e463297b68f169c1013c526b1cbc5747e54491a350565b6002546001600160a01b03163314610a635760405162461bcd60e51b81526004016105f790612b86565b600581905560405181815233907f5ee73342e684c0b848562c301fa2dc6b0146b266cfa12d4219fb04b316f7a475906020015b60405180910390a250565b610686620f4240670de0b6b3a7640000612cc7565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190612d43565b610b3f5760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b03861660009081526009602052604090205460ff16610bba5760405162461bcd60e51b815260206004820152602a60248201527f464143544f525920524f555445523a20496e76616c696420466978656450726960448201526918d950dbdb9d1c9858dd60b21b60648201526084016105f7565b60405163012c327560e01b81526001600160a01b0387169063012c327590610bee9033908990899089908990600401612da9565b6020604051808303816000875af1158015610c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c319190612e38565b9695505050505050565b61068664e8d4a51000670de0b6b3a7640000612cc7565b610686670de0b6b3a76400006064612c16565b610c786003670de0b6b3a7640000612cc7565b610686906001612e51565b6002546001600160a01b03163314610cad5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610cd35760405162461bcd60e51b81526004016105f790612bb6565b6001600160a01b038116600081815260076020526040808220805460ff191690555133917fbbe55b1ff108e23e5ff1a6f5d36946eec15ec0ca0ded2bfed4cdcf697ca9046091a350565b6002546001600160a01b03163314610d475760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b038116610d6d5760405162461bcd60e51b81526004016105f790612c7e565b6001600160a01b038116600081815260096020526040808220805460ff191690555133917ff1ec0697329a2e8de8cf055335547acc40fbace8712fc77aeea1ea2afbcf7e3b91a350565b6002546001600160a01b03163314610de15760405162461bcd60e51b81526004016105f790612b86565b610e0c816001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6040516001600160a01b0382169033907fc3674c32cbec94fe266aab7ef71f65b9bf77e1ed501d4f2bece8752f5352e9ac90600090a350565b610686600a670de0b6b3a7640000612cc7565b6001610e6d670de0b6b3a76400006002612c16565b6106869190612e69565b6002546001600160a01b03163314610ea15760405162461bcd60e51b81526004016105f790612b86565b600681905560405181815233907faacba7241fc949e401522d9591e2686bc54ecd5c340c571e85c45fdb57dc873890602001610a96565b60035460405163226e761560e01b81523360048201526001600160a01b039091169063226e761590602401602060405180830381865afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f449190612d43565b610f605760405162461bcd60e51b81526004016105f790612d5e565b6001600160a01b0386166000908152600a602052604090205460ff16610fda5760405162461bcd60e51b815260206004820152602960248201527f464143544f525920524f555445523a20496e76616c69642044697370656e73656044820152681c90dbdb9d1c9858dd60ba1b60648201526084016105f7565b6040516324ce291760e01b81526001600160a01b0386811660048301526024820186905260448201859052838116606483015282811660848301528716906324ce29179060a401600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b50505050505050505050565b6002546001600160a01b031633146110855760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166110ab5760405162461bcd60e51b81526004016105f790612c35565b6001600160a01b0381166000818152600a6020526040808220805460ff191660011790555133917f78be9d87a7b2c8707b044dbf5b04c3f747b692c55ec34dcd1d7357736478789c91a350565b6002546001600160a01b031633146111225760405162461bcd60e51b81526004016105f790612b86565b611147816001600160a01b03166000908152600160205260409020805460ff19169055565b6040516001600160a01b0382169033907fc73fd5d40669565e257cbcd153784617ef26acfcc9fead31e68c0dce3ce82fb290600090a350565b6002546001600160a01b031633146111aa5760405162461bcd60e51b81526004016105f790612b86565b6001600160a01b0381166112005760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206e657720726f75746572206f776e6572000000000000000060448201526064016105f7565b600280546001600160a01b0319166001600160a01b03831690811790915560405133907fc736654a613824c69968e0ec25ac1a428ccd49e15c28e97b5dfd2c6059757e2a90600090a350565b6106866002670de0b6b3a7640000612cc7565b60328111156112bb5760405162461bcd60e51b815260206004820152602260248201527f466163746f7279526f757465723a20546f6f204d616e79204f7065726174696f6044820152616e7360f01b60648201526084016105f7565b60005b81811015611d6657600060405180606001604052808585858181106112e5576112e5612e80565b9050610140020160600160208101906112fe91906128eb565b6001600160a01b0316815260200185858581811061131e5761131e612e80565b9050610140020160a001602081019061133791906128eb565b6001600160a01b0316815260200185858581811061135757611357612e80565b9050610140020161012001602081019061137191906128eb565b6001600160a01b03166001600160a01b03168152509050600060405180608001604052808686868181106113a7576113a7612e80565b905061014002016080013581526020018686868181106113c9576113c9612e80565b9050610140020160c0013581526020018686868181106113eb576113eb612e80565b9050610140020160e00135815260200186868681811061140d5761140d612e80565b90506101400201610100013581525090506000600381111561143157611431612e96565b85858581811061144357611443612e80565b90506101400201604001602081019061145c9190612eac565b600381111561146d5761146d612e96565b141561163c576114d1333087878781811061148a5761148a612e80565b90506101400201608001358888888181106114a7576114a7612e80565b9050610140020160600160208101906114c091906128eb565b6001600160a01b0316929190612199565b6115578585858181106114e6576114e6612e80565b9050610140020160200160208101906114ff91906128eb565b86868681811061151157611511612e80565b905061014002016080013587878781811061152e5761152e612e80565b90506101400201606001602081019061154791906128eb565b6001600160a01b0316919061220a565b600085858581811061156b5761156b612e80565b90506101400201602001602081019061158491906128eb565b6001600160a01b031663c421a3fc84846040518363ffffffff1660e01b81526004016115b1929190612ecd565b60408051808303816000875af11580156115cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f39190612f32565b509050611636338288888881811061160d5761160d612e80565b9050610140020160a001602081019061162691906128eb565b6001600160a01b031691906122bc565b50611d51565b600185858581811061165057611650612e80565b9050610140020160400160208101906116699190612eac565b600381111561167a5761167a612e96565b14156118f557600085858581811061169457611694612e80565b9050610140020160200160208101906116ad91906128eb565b6001600160a01b031663caa011488787878181106116cd576116cd612e80565b9050610140020160600160208101906116e691906128eb565b8888888181106116f8576116f8612e80565b9050610140020160a001602081019061171191906128eb565b89898981811061172357611723612e80565b9050610140020160c001358a8a8a81811061174057611740612e80565b6040516001600160e01b031960e089901b1681526001600160a01b0396871660048201529590941660248601525060448401919091526101006101409092020101356064820152608401602060405180830381865afa1580156117a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cb9190612e38565b90506117e53330838989898181106114a7576114a7612e80565b6118268686868181106117fa576117fa612e80565b90506101400201602001602081019061181391906128eb565b8288888881811061152e5761152e612e80565b85858581811061183857611838612e80565b90506101400201602001602081019061185191906128eb565b6001600160a01b031663c98a59cf84846040518363ffffffff1660e01b815260040161187e929190612ecd565b60408051808303816000875af115801561189c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c09190612f32565b5050611636338787878181106118d8576118d8612e80565b9050610140020160c0013588888881811061160d5761160d612e80565b600285858581811061190957611909612e80565b9050610140020160400160208101906119229190612eac565b600381111561193357611933612e96565b1415611c6857600085858581811061194d5761194d612e80565b90506101400201602001602081019061196691906128eb565b6001600160a01b0316634c87087d87878781811061198657611986612e80565b90506101400201600001356040518263ffffffff1660e01b81526004016119af91815260200190565b61018060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612f56565b505050505050505050509150506000868686818110611a1257611a12612e80565b905061014002016020016020810190611a2b91906128eb565b6001600160a01b031663c99733a7888888818110611a4b57611a4b612e80565b9050610140020160000135898989818110611a6857611a68612e80565b9050610140020160c001356040518363ffffffff1660e01b8152600401611a99929190918252602082015260400190565b608060405180830381865afa158015611ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ada919061300a565b5050509050611af73330838a8a8a8181106114a7576114a7612e80565b611b38878787818110611b0c57611b0c612e80565b905061014002016020016020810190611b2591906128eb565b8289898981811061152e5761152e612e80565b868686818110611b4a57611b4a612e80565b905061014002016020016020810190611b6391906128eb565b6001600160a01b031663825b5cd6888888818110611b8357611b83612e80565b9050610140020160000135898989818110611ba057611ba0612e80565b9050610140020160c001358a8a8a818110611bbd57611bbd612e80565b6040516001600160e01b031960e088901b168152600481019590955260248501939093525060806101409092020101356044820152606401600060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b50505050611c6133888888818110611c3d57611c3d612e80565b9050610140020160c00135846001600160a01b03166122bc9092919063ffffffff16565b5050611d51565b848484818110611c7a57611c7a612e80565b905061014002016020016020810190611c9391906128eb565b6001600160a01b0316631d746d83868686818110611cb357611cb3612e80565b9050610140020160a0016020810190611ccc91906128eb565b878787818110611cde57611cde612e80565b60405160e086901b6001600160e01b03191681526001600160a01b03949094166004850152610140029190910160c00135602483015250336044820152606401600060405180830381600087803b158015611d3857600080fd5b505af1158015611d4c573d6000803e3d6000fd5b505050505b50508080611d5e90613040565b9150506112be565b505050565b60035460405163226e761560e01b81523360048201526000916001600160a01b03169063226e761590602401602060405180830381865afa158015611db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd89190612d43565b611df45760405162461bcd60e51b81526004016105f790612d5e565b6008600084846000818110611e0b57611e0b612e80565b9050602002016020810190611e2091906128eb565b6001600160a01b0316815260208101919091526040016000205460ff16611e945760405162461bcd60e51b815260206004820152602260248201527f464143544f525920524f555445523a20696e76616c6964207373436f6e74726160448201526118dd60f21b60648201526084016105f7565b600087876001818110611ea957611ea9612e80565b9050602002013511611eee5760405162461bcd60e51b815260206004820152600e60248201526d57726f6e6720646563696d616c7360901b60448201526064016105f7565b6000611f0060408a0160208b016128eb565b9050611f8984846002818110611f1857611f18612e80565b9050602002016020810190611f2d91906128eb565b85856000818110611f4057611f40612e80565b9050602002016020810190611f5591906128eb565b8a8a6004818110611f6857611f68612e80565b90506020020135846001600160a01b0316612199909392919063ffffffff16565b60408051808201825260009161204c91908c90600290839083908082843760009201919091525050604080516020808e0282810182019093528d82529092508d918d9182919085019084908082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506122ec92505050565b90506001600160a01b03811661209c5760405162461bcd60e51b8152602060048201526015602482015274119052531151081513c81111541313d6481413d3d3605a1b60448201526064016105f7565b600760006120b060408d0160208e016128eb565b6001600160a01b0316815260208101919091526040016000205460ff161561211657604051600181526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a2612156565b604051600081526001600160a01b038216907f90279d7790471e260411db76079630dfaa838fc987d29ae7aa7dc1bcd773ef2e9060200160405180910390a25b9998505050505050505050565b6001600160a01b03811660009081526007602052604081205460ff161561218c57506000919050565b505060065490565b919050565b6040516001600160a01b03808516602483015283166044820152606481018290526122049085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526125f7565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190612e38565b6122899190612e51565b6040516001600160a01b03851660248201526044810182905290915061220490859063095ea7b360e01b906064016121cd565b6040516001600160a01b038316602482015260448101829052611d6690849063a9059cbb60e01b906064016121cd565b6000600160008360058151811061230557612305612e80565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166123785760405162461bcd60e51b815260206004820152601d60248201527f42466163746f72793a2057726f6e6720506f6f6c2054656d706c61746500000060448201526064016105f7565b600060405180604001604052808460048151811061239857612398612e80565b6020908102919091018101516001600160a01b0390811683526000541691015283519091506123e190849060059081106123d4576123d4612e80565b60200260200101516126c9565b91506001600160a01b0382166124455760405162461bcd60e51b8152602060048201526024808201527f42466163746f72793a20696e76616c69642062706f6f6c207a65726f206164646044820152637265737360e01b60648201526084016105f7565b6000829050806001600160a01b031663c070a6d88560008151811061246c5761246c612e80565b602002602001015130886000808d896040518863ffffffff1660e01b815260040161249d97969594939291906130c2565b6020604051808303816000875af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e09190612d43565b6125235760405162461bcd60e51b815260206004820152601460248201527311549497d253925512505312569157d09413d3d360621b60448201526064016105f7565b8360008151811061253657612536612e80565b60200260200101516001600160a01b03166353f0c3b48860006002811061255f5761255f612e80565b60200201518960016020020151868860038151811061258057612580612e80565b60200260200101518b6040518663ffffffff1660e01b81526004016125a9959493929190613128565b6020604051808303816000875af11580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec9190612d43565b505050949350505050565b600061264c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127599092919063ffffffff16565b805190915015611d66578080602001905181019061266a9190612d43565b611d665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105f7565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f06040516001600160a01b03821681529093507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c915060200160405180910390a150919050565b60606127688484600085612772565b90505b9392505050565b6060824710156127d35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105f7565b843b6128215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105f7565b600080866001600160a01b0316858760405161283d9190613190565b60006040518083038185875af1925050503d806000811461287a576040519150601f19603f3d011682016040523d82523d6000602084013e61287f565b606091505b509150915061288f82828661289a565b979650505050505050565b606083156128a957508161276b565b8251156128b95782518084602001fd5b8160405162461bcd60e51b81526004016105f791906131ac565b6001600160a01b03811681146128e857600080fd5b50565b6000602082840312156128fd57600080fd5b813561276b816128d3565b60006020828403121561291a57600080fd5b5035919050565b60008083601f84011261293357600080fd5b50813567ffffffffffffffff81111561294b57600080fd5b6020830191508360208260051b850101111561296657600080fd5b9250929050565b60008060008060006060868803121561298557600080fd5b8535612990816128d3565b9450602086013567ffffffffffffffff808211156129ad57600080fd5b6129b989838a01612921565b909650945060408801359150808211156129d257600080fd5b506129df88828901612921565b969995985093965092949392505050565b60008060008060008060c08789031215612a0957600080fd5b8635612a14816128d3565b95506020870135612a24816128d3565b945060408701359350606087013592506080870135612a42816128d3565b915060a0870135612a52816128d3565b809150509295509295509295565b60008060208385031215612a7357600080fd5b823567ffffffffffffffff80821115612a8b57600080fd5b818501915085601f830112612a9f57600080fd5b813581811115612aae57600080fd5b86602061014083028501011115612ac457600080fd5b60209290920196919550909350505050565b600080600080600080600060a0888a031215612af157600080fd5b6040880189811115612b0257600080fd5b8897503567ffffffffffffffff80821115612b1c57600080fd5b612b288b838c01612921565b909850965060608a0135915080821115612b4157600080fd5b612b4d8b838c01612921565b909650945060808a0135915080821115612b6657600080fd5b50612b738a828b01612921565b989b979a50959850939692959293505050565b60208082526016908201527527b1b2b0b72937baba32b91d102727aa1027aba722a960511b604082015260600190565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964204f6365616e20546f6b604082015269656e206164647265737360b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612c3057612c30612c00565b500290565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f64697370656e736560408201526872206164647265737360b81b606082015260800190565b60208082526029908201527f466163746f7279526f757465723a20496e76616c6964205f666978656452617460408201526865206164647265737360b81b606082015260800190565b600082612ce457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602a908201527f466163746f7279526f757465723a20496e76616c6964205f7373436f6e7472616040820152696374206164647265737360b01b606082015260800190565b8051801515811461219457600080fd5b600060208284031215612d5557600080fd5b61276b82612d33565b6020808252602b908201527f464143544f525920524f555445523a204e4f54204f524947494e414c2045524360408201526a32302054454d504c41544560a81b606082015260800190565b6001600160a01b03868116825260606020808401829052908301869052600091879160808501845b89811015612df8578435612de4816128d3565b841682529382019390820190600101612dd1565b5085810360408701528681526001600160fb1b03871115612e1857600080fd5b8660051b9350838883830137600093010191825250979650505050505050565b600060208284031215612e4a57600080fd5b5051919050565b60008219821115612e6457612e64612c00565b500190565b600082821015612e7b57612e7b612c00565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebe57600080fd5b81356004811061276b57600080fd5b60e08101818460005b6003811015612efe5781516001600160a01b0316835260209283019290910190600101612ed6565b505050606082018360005b6004811015612f28578151835260209283019290910190600101612f09565b5050509392505050565b60008060408385031215612f4557600080fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f031215612f7957600080fd5b8c51612f84816128d3565b60208e0151909c50612f95816128d3565b60408e015160608f0151919c509a50612fad816128d3565b60808e015160a08f0151919a5098509650612fca60c08e01612d33565b955060e08d015194506101008d015193506101208d015192506101408d01519150612ff86101608e01612d33565b90509295989b509295989b509295989b565b6000806000806080858703121561302057600080fd5b505082516020840151604085015160609095015191969095509092509050565b600060001982141561305457613054612c00565b5060010190565b600081518084526020808501945080840160005b8381101561308b5781518752958201959082019060010161306f565b509495945050505050565b8060005b60028110156122045781516001600160a01b031684526020938401939091019060010161309a565b6001600160a01b03888116825287166020820152610120604082018190526000906130ef8382018961305b565b9150508515156060830152841515608083015261310f60a0830185613096565b61311c60e0830184613096565b98975050505050505050565b6001600160a01b038681168252858116602083015284811660408301528316606082015260a06080820181905260009061288f9083018461305b565b60005b8381101561317f578181015183820152602001613167565b838111156122045750506000910152565b600082516131a2818460208701613164565b9190910192915050565b60208152600082518060208401526131cb816040850160208701613164565b601f01601f1916919091016040019291505056fea26469706673582212204ed3215981a25442d023b00f2a49cd2833bd47ec36633dcaa9f7d5dcb9dee20564736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}