/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { TrancheMaster } from "../TrancheMaster"; export class TrancheMaster__factory extends ContractFactory { constructor(signer?: Signer) { super(_abi, _bytecode, signer); } deploy( _tFactory: string, overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy(_tFactory, overrides || {}) as Promise; } getDeployTransaction( _tFactory: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction(_tFactory, overrides || {}); } attach(address: string): TrancheMaster { return super.attach(address) as TrancheMaster; } connect(signer: Signer): TrancheMaster__factory { return super.connect(signer) as TrancheMaster__factory; } static connect( address: string, signerOrProvider: Signer | Provider ): TrancheMaster { return new Contract(address, _abi, signerOrProvider) as TrancheMaster; } } const _abi = [ { inputs: [ { internalType: "contract TrancheFactory", name: "_tFactory", type: "address", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [ { internalType: "bool", name: "toJunior", type: "bool", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "uint256", name: "priceLimit", type: "uint256", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "_swapFromInstrument", outputs: [ { internalType: "uint256", name: "amountIn", type: "uint256", }, { internalType: "uint256", name: "amountOut", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "toJunior", type: "bool", }, { internalType: "int256", name: "amount", type: "int256", }, { internalType: "uint256", name: "priceLimit", type: "uint256", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "_swapFromTranche", outputs: [ { internalType: "uint256", name: "amountIn", type: "uint256", }, { internalType: "uint256", name: "amountOut", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "senior", type: "bool", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "arbByPairRedeem", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "freshTrancheNewOrder", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "vaultId", type: "uint256", }, ], name: "getAMM", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "pjs", type: "uint256", }, ], name: "getDorc", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "p1", type: "uint256", }, { internalType: "uint256", name: "p2", type: "uint256", }, ], name: "getFee", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "pjs", type: "uint256", }, { internalType: "bool", name: "isSenior", type: "bool", }, { internalType: "uint256", name: "junior_weight", type: "uint256", }, ], name: "getPTV", outputs: [ { internalType: "uint256", name: "pTv", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "vaultId", type: "uint256", }, { internalType: "address", name: "who", type: "address", }, { internalType: "bool", name: "isSenior", type: "bool", }, { internalType: "uint256", name: "pjs", type: "uint256", }, ], name: "getdVaultBal", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "leverageSwap", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "uint256", name: "pjs", type: "uint256", }, { internalType: "bool", name: "isSenior", type: "bool", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, ], name: "redeemByDebtVault", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "dVaultAmount", type: "uint256", }, { internalType: "uint256", name: "pjs", type: "uint256", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, { internalType: "bool", name: "isSenior", type: "bool", }, ], name: "redeemFromDebtVault", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bool", name: "isSenior", type: "bool", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, ], name: "redeemToDebtVault", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "routeOptimalTrade", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "swapFromInstrument", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "swapFromTranche", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "wantSenior", type: "bool", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, { internalType: "uint256", name: "priceLimit", type: "uint256", }, ], name: "swapFromUnderlying", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "swapToRatio", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "swapToUnderlying", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "uint256", name: "pjs", type: "uint256", }, { internalType: "bool", name: "isSenior", type: "bool", }, { internalType: "uint256", name: "vaultId", type: "uint256", }, ], name: "unRedeemDebtVault", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x60806040523480156200001157600080fd5b50604051620034983803806200349883398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b6133fc806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80639bfcbd11116100ad578063bba6a25811610071578063bba6a25814610247578063bcf5da3a1461026f578063c462544214610282578063d250185c14610295578063e6225deb1461013057600080fd5b80639bfcbd11146101e3578063a0cd8eb0146101f6578063a647542f14610209578063a99636651461021c578063b2daf8451461013057600080fd5b80634aa583c5116100f45780634aa583c5146101305780634f1effa6146101ab5780636114ffde146101bd578063674ce8991461013057806378359b36146101d057600080fd5b8062d3fb36146101305780630a433de4146101325780631be1d8a114610130578063256d7a9f1461018a578063310b318214610130575b600080fd5b005b610165610140366004612b94565b6000908152600160208181526040808420805493015460029092529092205490928190565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b61019d610198366004612bbb565b6102a8565b604051908152602001610181565b6101306101b9366004612bfc565b5050565b61019d6101cb366004612c28565b61091a565b61019d6101de366004612c75565b6109e2565b61019d6101f1366004612cbd565b610a2e565b61019d610204366004612c28565b610ee7565b610130610217366004612cec565b611467565b61022f61022a366004612b94565b611a03565b6040516001600160a01b039091168152602001610181565b61025a610255366004612d70565b611a7f565b60408051928352602083019190915201610181565b61013061027d366004612cbd565b611eda565b61025a610290366004612d70565b612403565b61019d6102a3366004612de3565b612950565b60006102b2612a7a565b6000805460405163439e23fd60e01b8152600481018790526001600160a01b039091169063439e23fd90602401600060405180830381865afa1580156102fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610324919081019061304f565b6020808201516001600160a01b03168482018190526040805163638566c560e11b81529051939450909263c70acd8a926004808401939192918290030181865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190613122565b60c0830152836103ca5760c08201516103c5906103bf81670de0b6b3a7640000613151565b9061296e565b6103f0565b6103f08260c00151670de0b6b3a76400006103e59190613151565b60c08401519061296e565b606083015280516001600160a01b0316604083015283156106a2576000868152600160208181526040928390208351808501909452805480855292015490830181905260608501516104429190612983565b61044c9190613151565b6101c084018190526060840151610463919061296e565b6101e0840152606083015161048090670de0b6b3a7640000612998565b61049290670de0b6b3a7640000613168565b61024084015260608301516104de906104c09089906104ba90670de0b6b3a764000090612998565b90612998565b6104d290670de0b6b3a7640000613168565b6102408501519061296e565b60e084018190526101e08401516104ff916104f99190612998565b896129ad565b610200840181905260e0840151610516919061296e565b60008881526001602081905260408220018054909190610537908490613151565b92505081905550826102000151600360008833898c60405160200161055f9493929190613180565b60405160208183030381529060405280519060200120815260200190815260200160002060008282546105929190613151565b9250508190555082602001516001600160a01b03166386a17ff56001306105cb8760e0015188610200015161296e90919063ffffffff16565b6040518463ffffffff1660e01b81526004016105e9939291906131b2565b600060405180830381600087803b15801561060357600080fd5b505af1158015610617573d6000803e3d6000fd5b5050505082604001516001600160a01b03166323b872dd8460200151338661020001516040518463ffffffff1660e01b8152600401610658939291906131d3565b6020604051808303816000875af1158015610677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069b91906131f7565b505061090b565b6000868152600260209081526040918290208251808401909352805480845260019091015491830182905260608501516106dc9190612998565b6106e69190613151565b6101c0840181905260608401516106fd919061296e565b6101e0840152606083015161071a90670de0b6b3a7640000612998565b61072c90670de0b6b3a7640000613168565b6102408401526060830151610754906104c09089906103bf90670de0b6b3a764000090612998565b60e084018190526101e084015161076f916104f99190612998565b610200840181905260e0840151610786919061296e565b600088815260026020526040812080549091906107a4908490613151565b92505081905550826102000151600360008833898c6040516020016107cc9493929190613180565b60405160208183030381529060405280519060200120815260200190815260200160002060008282546107ff9190613151565b9250508190555082602001516001600160a01b03166386a17ff56000306108388760e0015188610200015161296e90919063ffffffff16565b6040518463ffffffff1660e01b8152600401610856939291906131b2565b600060405180830381600087803b15801561087057600080fd5b505af1158015610884573d6000803e3d6000fd5b5050505082604001516001600160a01b03166323b872dd8460200151338661020001516040518463ffffffff1660e01b81526004016108c5939291906131d3565b6020604051808303816000875af11580156108e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090891906131f7565b50505b50610200015195945050505050565b6000808361093d57610938836103bf81670de0b6b3a7640000613151565b610959565b61095961095284670de0b6b3a7640000613151565b849061296e565b9050600061096f82670de0b6b3a7640000612998565b61098190670de0b6b3a7640000613168565b9050846109bf576109ba6109a1876103bf670de0b6b3a764000086612998565b6109b390670de0b6b3a7640000613168565b829061296e565b6109d8565b6109d86109a1876104ba670de0b6b3a764000086612998565b9695505050505050565b600060036000868686866040516020016109ff9493929190613180565b604051602081830303815290604052805190602001208152602001908152602001600020549050949350505050565b6000610a38612a7a565b6000805460405163439e23fd60e01b8152600481018690526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015610a82573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aaa919081019061304f565b6020808201516001600160a01b039081168583018190528351909116604080870191909152805163638566c560e11b81529051939450909263c70acd8a926004808401939192918290030181865afa158015610b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2e9190613122565b60c083015284610b585760c0820151610b53906103bf81670de0b6b3a7640000613151565b610b73565b610b738260c00151670de0b6b3a76400006103e59190613151565b606083015284610d36576060820151610b8d908890612998565b6102208301819052610b9f9088613168565b610240830152610220820151610bcf90610bb9908861296e565b610bc39089613168565b6102408401519061296e565b60e08301819052610be1908890612998565b610260830152600086815260016020526040902054871115610c335760405162461bcd60e51b81526020600482015260066024820152653634b8a2a92960d11b60448201526064015b60405180910390fd5b600086815260016020908152604080832080548b900390559084015190516386a17ff560e01b81526001600160a01b03909116916386a17ff591610c7e919033908c906004016131b2565b600060405180830381600087803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b5050505081604001516001600160a01b03166323b872dd8360200151338561026001516040518463ffffffff1660e01b8152600401610ced939291906131d3565b6020604051808303816000875af1158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3091906131f7565b50610ed8565b6060820151610d46908890612998565b6102208301819052610d589088613168565b610240830152610220820151610d7290610bb99088612998565b60e08301819052610d84908890612998565b610260830152600086815260026020526040902060010154871115610dd45760405162461bcd60e51b81526020600482015260066024820152653634b8a2a92960d11b6044820152606401610c2a565b600086815260026020908152604091829020600190810180548b900390559084015191516386a17ff560e01b81526001600160a01b03909216916386a17ff591610e249133908c906004016131b2565b600060405180830381600087803b158015610e3e57600080fd5b505af1158015610e52573d6000803e3d6000fd5b5050505081604001516001600160a01b03166323b872dd8360200151338561026001516040518463ffffffff1660e01b8152600401610e93939291906131d3565b6020604051808303816000875af1158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed691906131f7565b505b50610260015195945050505050565b6000610ef1612a7a565b6000805460405163439e23fd60e01b8152600481018690526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015610f3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f63919081019061304f565b6040808201516001600160a01b039081168552602080840151909116818601819052825163638566c560e11b815292519394509263c70acd8a9260048082019392918290030181865afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190613122565b60c08301528461100c5760c0820151611007906103bf81670de0b6b3a7640000613151565b611027565b6110278260c00151670de0b6b3a76400006103e59190613151565b82606001818152505081602001516001600160a01b031663e9c52e586040518163ffffffff1660e01b81526004016040805180830381865afa158015611071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110959190613214565b6001600160a01b03908116608085015290811660a08401526020830151604080516381e9b59360e01b8152905191909216916381e9b59391600480830192606092919082900301816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611117919061324e565b61014085015261012084015261010083015260208083015160408051636f307dc360e01b815290516001600160a01b0390921692636f307dc3926004808401938290030181865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611194919061327c565b6001600160a01b031663e6dbd1c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f59190613122565b6101608301528461121a576101608201516101008301516112159161296e565b61122f565b61016082015161012083015161122f9161296e565b60e083018190526112409087612998565b610180830181905261014083015160405160039160009161126991899133918c91602001613180565b60405160208183030381529060405280519060200120815260200190815260200160002081905550841561137a5760608201516112a69087612983565b610140830151600090815260016020526040812080549091906112ca908490613168565b9091555050610140820151600090815260016020819052604082200180548892906112f6908490613168565b909155505060808201516040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061133190339030908b906004016131d3565b6020604051808303816000875af1158015611350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137491906131f7565b50611459565b60608201516113899087612983565b610140830151600090815260026020526040812060010180549091906113b0908490613168565b9091555050610140820151600090815260026020526040812080548892906113d9908490613168565b909155505060a08201516040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061141490339030908b906004016131d3565b6020604051808303816000875af1158015611433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145791906131f7565b505b506101800151949350505050565b61146f612b40565b6000805460405163439e23fd60e01b815260048101869052606092916001600160a01b03169063439e23fd90602401600060405180830381865afa1580156114bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114e3919081019061304f565b6040808201516001600160a01b039081168652825181168683015260208084015182166060880181905260c085015151909216908701528151631d38a5cb60e31b81528251939450909263e9c52e58926004808401939192918290030181865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190613214565b6001600160a01b03908116608086015290811660a085015260208401516040516323b872dd60e01b81529116906323b872dd906115be90339030908b906004016131d3565b6020604051808303816000875af11580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160191906131f7565b5082602001516001600160a01b031663095ea7b38460400151886040518363ffffffff1660e01b8152600401611638929190613299565b6020604051808303816000875af1158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b91906131f7565b5060408084015190516363737ac960e11b8152600481018890526000916001600160a01b03169063c6e6f59290602401602060405180830381865afa1580156116c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ec9190613122565b60408086015190516394bf804d60e01b8152600481018390523060248201529192506001600160a01b0316906394bf804d906044016020604051808303816000875af1158015611740573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117649190613122565b5083604001516001600160a01b031663095ea7b38560600151836040518363ffffffff1660e01b815260040161179b929190613299565b6020604051808303816000875af11580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117de91906131f7565b5060008085606001516001600160a01b031663dbceb005846040518263ffffffff1660e01b815260040161181491815260200190565b60408051808303816000875af1158015611832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185691906132b2565b9150915060008a6118675781611869565b825b9050600087600001516001600160a01b0316633df0fec0308e15858d8c6040518663ffffffff1660e01b81526004016118a69594939291906132d6565b60408051808303816000875af11580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e891906132b2565b9150508b156119755760808801516001600160a01b031663a9059cbb3361190f8685613168565b6040518363ffffffff1660e01b815260040161192c929190613299565b6020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f91906131f7565b506119f5565b60a08801516001600160a01b031663a9059cbb336119938785613168565b6040518363ffffffff1660e01b81526004016119b0929190613299565b6020604051808303816000875af11580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f391906131f7565b505b505050505050505050505050565b6000805460405163439e23fd60e01b8152600481018490526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015611a4d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a75919081019061304f565b6040015192915050565b600080611a8a612b40565b6000805460405163439e23fd60e01b8152600481018990526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061304f565b6040808201516001600160a01b039081168552602083015116606085018190528151631d38a5cb60e31b81528251939450909263e9c52e58926004808401939192918290030181865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b9190613214565b6001600160a01b0390811660808501521660a0830152611b9a896129c4565b815160405162f7c3fb60e61b81526001600160a01b0390911690633df0fec090611bd29033908e908e908e908d908d90600401613352565b60408051808303816000875af1158015611bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1491906132b2565b809450819550505060008083606001516001600160a01b03166381e9b5936040518163ffffffff1660e01b81526004016060604051808303816000875af1158015611c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c87919061324e565b509150915060008085606001516001600160a01b0316635235c8bb87600001516001600160a01b03166311e715d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d089190613122565b6040518263ffffffff1660e01b8152600401611d2691815260200190565b6040805180830381865afa158015611d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6691906132b2565b915091508d8015611d86575082611d84662386f26fc1000083613168565b105b15611e1b576000611d978483612950565b90508660a001516001600160a01b03166323b872dd338960600151846040518463ffffffff1660e01b8152600401611dd1939291906131d3565b6020604051808303816000875af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1491906131f7565b5050611ec9565b8d158015611e385750611e35662386f26fc1000084613168565b81115b15611ec9576000611e498584612950565b905086608001516001600160a01b03166323b872dd338960600151846040518463ffffffff1660e01b8152600401611e83939291906131d3565b6020604051808303816000875af1158015611ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec691906131f7565b50505b505050505050965096945050505050565b611ee2612a7a565b6000805460405163439e23fd60e01b8152600481018590526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015611f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f54919081019061304f565b6020808201516001600160a01b03168482018190526040805163638566c560e11b81529051939450909263c70acd8a926004808401939192918290030181865afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca9190613122565b60c083015283611ff45760c0820151611fef906103bf81670de0b6b3a7640000613151565b61200f565b61200f8260c00151670de0b6b3a76400006103e59190613151565b82606001818152505081602001516001600160a01b031663e9c52e586040518163ffffffff1660e01b81526004016040805180830381865afa158015612059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207d9190613214565b6001600160a01b0390811660808501521660a083015283156122555760608201516120b090670de0b6b3a7640000612998565b6120c290670de0b6b3a7640000613168565b61024083015260608201516120fc906120ea9087906104ba90670de0b6b3a764000090612998565b610bc390670de0b6b3a7640000613168565b60e0830181905261210e90879061296e565b6101c08301819052606083015161212491612998565b60008681526001602052604081208054909190612142908490613151565b909155505060e082015161215790879061296e565b60008681526001602081905260408220018054909190612178908490613151565b9250508190555085600360008533888a60405160200161219b9493929190613180565b60405160208183030381529060405280519060200120815260200190815260200160002060008282546121ce9190613151565b909155505060808201516101c083015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161220c91339190600401613299565b6020604051808303816000875af115801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f91906131f7565b506123fb565b606082015161226c90670de0b6b3a7640000612998565b61227e90670de0b6b3a7640000613168565b61024083015260608201516122a6906120ea9087906103bf90670de0b6b3a764000090612998565b60e083018190526122b890879061296e565b6101c0830181905260608301516122ce91612998565b600086815260026020526040812060010180549091906122ef908490613151565b909155505060e082015161230490879061296e565b60008681526002602052604081208054909190612322908490613151565b9250508190555085600360008533888a6040516020016123459493929190613180565b60405160208183030381529060405280519060200120815260200190815260200160002060008282546123789190613151565b909155505060a08201516101c083015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916123b691339190600401613299565b6020604051808303816000875af11580156123d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f991906131f7565b505b505050505050565b60008061240e612b40565b6000805460405163439e23fd60e01b8152600481018990526001600160a01b039091169063439e23fd90602401600060405180830381865afa158015612458573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612480919081019061304f565b6040808201516001600160a01b03908116855260208301518116606086018190528351909116858301528151631d38a5cb60e31b81528251939450909263e9c52e58926004808401939192918290030181865afa1580156124e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125099190613214565b6001600160a01b03908116608085015290811660a084015260408084015190516323b872dd60e01b81529116906323b872dd9061254e90339030908e906004016131d3565b6020604051808303816000875af115801561256d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259191906131f7565b5081604001516001600160a01b031663095ea7b383606001518b6040518363ffffffff1660e01b81526004016125c8929190613299565b6020604051808303816000875af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906131f7565b50606082015160405163dbceb00560e01b8152600481018b90526001600160a01b039091169063dbceb0059060240160408051808303816000875af1158015612658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267c91906132b2565b610120840152610100830152896126985781610100015161269f565b8161012001515b60c0830152891561272c576080820151825160c084015160405163095ea7b360e01b81526001600160a01b039093169263095ea7b3926126e3929091600401613299565b6020604051808303816000875af1158015612702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272691906131f7565b506127aa565b60a0820151825160c084015160405163095ea7b360e01b81526001600160a01b039093169263095ea7b392612765929091600401613299565b6020604051808303816000875af1158015612784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a891906131f7565b505b815160c083015160405162f7c3fb60e61b81526001600160a01b0390921691633df0fec0916127e59130918f918e908d908d90600401613352565b60408051808303816000875af1158015612803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282791906132b2565b9094509250896128bc5781608001516001600160a01b031663a9059cbb33846101200151866128569190613168565b6040518363ffffffff1660e01b8152600401612873929190613299565b6020604051808303816000875af1158015612892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b691906131f7565b50612943565b8160a001516001600160a01b031663a9059cbb33846101000151866128e19190613168565b6040518363ffffffff1660e01b81526004016128fe929190613299565b6020604051808303816000875af115801561291d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294191906131f7565b505b5050965096945050505050565b600061295c8284613151565b6129679060006133a7565b9392505050565b600061296783670de0b6b3a764000084612a0c565b60006129678383670de0b6b3a7640000612a2b565b60006129678383670de0b6b3a7640000612a0c565b6000818311156129bd5781612967565b5090919050565b612a09816040516024016129da91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052612a59565b50565b828202811515841585830485141716612a2457600080fd5b0492915050565b828202811515841585830485141716612a4357600080fd5b6001826001830304018115150290509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60405180610280016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915290565b600060208284031215612ba657600080fd5b5035919050565b8015158114612a0957600080fd5b60008060008060808587031215612bd157600080fd5b8435935060208501359250604085013591506060850135612bf181612bad565b939692955090935050565b60008060408385031215612c0f57600080fd5b8235612c1a81612bad565b946020939093013593505050565b600080600060608486031215612c3d57600080fd5b833592506020840135612c4f81612bad565b929592945050506040919091013590565b6001600160a01b0381168114612a0957600080fd5b60008060008060808587031215612c8b57600080fd5b843593506020850135612c9d81612c60565b92506040850135612cad81612bad565b9396929550929360600135925050565b60008060008060808587031215612cd357600080fd5b84359350602085013592506040850135612cad81612bad565b60008060008060808587031215612d0257600080fd5b8435612d0d81612bad565b966020860135965060408601359560600135945092505050565b60008083601f840112612d3957600080fd5b50813567ffffffffffffffff811115612d5157600080fd5b602083019150836020828501011115612d6957600080fd5b9250929050565b60008060008060008060a08789031215612d8957600080fd5b8635612d9481612bad565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff811115612dc557600080fd5b612dd189828a01612d27565b979a9699509497509295939492505050565b60008060408385031215612df657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715612e3f57612e3f612e05565b60405290565b60405160e0810167ffffffffffffffff81118282101715612e3f57612e3f612e05565b604051601f8201601f1916810167ffffffffffffffff81118282101715612e9157612e91612e05565b604052919050565b8051612ea481612c60565b919050565b600067ffffffffffffffff821115612ec357612ec3612e05565b5060051b60200190565b600082601f830112612ede57600080fd5b81516020612ef3612eee83612ea9565b612e68565b82815260059290921b84018101918181019086841115612f1257600080fd5b8286015b84811015612f36578051612f2981612c60565b8352918301918301612f16565b509695505050505050565b600082601f830112612f5257600080fd5b81516020612f62612eee83612ea9565b82815260059290921b84018101918181019086841115612f8157600080fd5b8286015b84811015612f365780518352918301918301612f85565b60006101008284031215612faf57600080fd5b612fb7612e1b565b9050612fc282612e99565b8152602082015167ffffffffffffffff80821115612fdf57600080fd5b612feb85838601612ecd565b6020840152604084015191508082111561300457600080fd5b5061301184828501612f41565b604083015250606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015292915050565b60006020828403121561306157600080fd5b815167ffffffffffffffff8082111561307957600080fd5b9083019060e0828603121561308d57600080fd5b613095612e45565b61309e83612e99565b81526130ac60208401612e99565b60208201526130bd60408401612e99565b60408201526130ce60608401612e99565b60608201526130df60808401612e99565b60808201526130f060a08401612e99565b60a082015260c08301518281111561310757600080fd5b61311387828601612f9c565b60c08301525095945050505050565b60006020828403121561313457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156131635761316361313b565b500390565b6000821982111561317b5761317b61313b565b500190565b93845260609290921b6bffffffffffffffffffffffff19166020840152151560f81b6034830152603582015260550190565b92151583526001600160a01b03919091166020830152604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561320957600080fd5b815161296781612bad565b6000806040838503121561322757600080fd5b825161323281612c60565b602084015190925061324381612c60565b809150509250929050565b60008060006060848603121561326357600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561328e57600080fd5b815161296781612c60565b6001600160a01b03929092168252602082015260400190565b600080604083850312156132c557600080fd5b505080516020909101519092909150565b60018060a01b0386168152600060208615158184015285604084015284606084015260a0608084015283518060a085015260005b818110156133265785810183015185820160c00152820161330a565b8181111561333857600060c083870101525b50601f01601f19169290920160c001979650505050505050565b60018060a01b0387168152851515602082015284604082015283606082015260a060808201528160a0820152818360c0830137600081830160c090810191909152601f909201601f1916010195945050505050565b60008160001904831182151516156133c1576133c161313b565b50029056fea26469706673582212204270dfb643d1e5c0d9578f585644efeabeca7dc50e551be5b9c09a689b25ae6c64736f6c634300080a0033";