LibAcc: 0.7526=73/97, ProjAcc: 1.0000=0/0, Missing: 218


Module: util/crypto

const 𝓟49{crypto}: [miss]𝓛[ty]8642{Object} = {};

Module: util/artifacts

function 𝓟50{CONSTRUCTOR} (𝓟51{artifacts}: [OOV]any): (𝓟[ty]55{Artifacts})
{
const 𝓟[ty]55{Artifacts};
const 𝓟[ty]55{Artifacts};
𝓟[ty]55{Artifacts}.TokenRegistry𝓟51{artifacts}.require(𝓛8743{String});
𝓟[ty]55{Artifacts}.RinghashRegistry𝓟51{artifacts}.require(𝓛8743{String});
𝓟[ty]55{Artifacts}.LoopringProtocolImpl𝓟51{artifacts}.require(𝓛8743{String});
𝓟[ty]55{Artifacts}.TokenTransferDelegate𝓟51{artifacts}.require(𝓛8743{String});
𝓟[ty]55{Artifacts}.NameRegistry𝓟51{artifacts}.require(𝓛8743{String});
𝓟[ty]55{Artifacts}.DummyToken𝓟51{artifacts}.require(𝓛8743{String});
}
class 𝓟[ty]55{Artifacts}{
𝓟57{TokenRegistry}: [OOV]any;
𝓟58{DummyToken}: [OOV]any;
𝓟59{RinghashRegistry}: [OOV]any;
𝓟60{LoopringProtocolImpl}: [OOV]any;
𝓟61{TokenTransferDelegate}: [OOV]any;
𝓟62{NameRegistry}: [OOV]any;
}

Module: util/protocol_simulator

function 𝓟63{CONSTRUCTOR} (𝓟64{ring}: [OOV]𝓟[ty]349{Ring},𝓟65{lrcAddress}: 𝓛[ty]10051{String},𝓟66{feeSelectionList}: (𝓛[ty]8696{Function} ≠ 𝓛[ty]8670{Array})): (𝓟[ty]70{ProtocolSimulator})
{
const 𝓟[ty]70{ProtocolSimulator};
const 𝓟[ty]70{ProtocolSimulator};
𝓟[ty]70{ProtocolSimulator}.ring𝓟64{ring};
𝓟[ty]70{ProtocolSimulator}.lrcAddress𝓟65{lrcAddress};
𝓟[ty]70{ProtocolSimulator}.feeSelectionList𝓟66{feeSelectionList};
}
class 𝓟[ty]70{ProtocolSimulator}{
𝓟72{orderCancelled}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]8670{Array});
𝓟73{availableAmountSList}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]8670{Array});
𝓟74{feeSelectionList}: (𝓛[ty]10051{String} ≠ 𝓛[ty]8670{Array});
𝓟75{ring}: [OOV]𝓟[ty]349{Ring};
𝓟76{orderFilled}: 𝓛[ty]8670{Array};
𝓟77{lrcAddress}: 𝓛[ty]10051{String};
𝓟78{spendableLrcFeeList}: (𝓛[ty]8666{Boolean} ≠ 𝓛[ty]8670{Array});
function 𝓟97{scaleRing} (): (𝓟98: [miss]𝓛[ty]10033{Void})
{
const 𝓟99{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
{
let 𝓟100{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟100{i}.FirstBinaryOperator(𝓟99{size}))
{
{
const 𝓟101{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟100{i});
const 𝓟102{amountS} = 𝓟101{order}.params.amountS.toNumber();
const 𝓟103{amountB} = 𝓟101{order}.params.amountB.toNumber();
const 𝓟104{lrcFee} = 𝓟101{order}.params.lrcFee.toNumber();
let 𝓟105{availableAmountS} = 𝓟102{amountS};
let 𝓟106{availableAmountB} = 𝓟103{amountB};
if (𝓟101{order}.params.buyNoMoreThanAmountB)
{
if (𝓟[ty]70{ProtocolSimulator}.orderFilled.AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.orderFilled.access(𝓟100{i})))
{
𝓟106{availableAmountB}.MinusEqualsToken(𝓟[ty]70{ProtocolSimulator}.orderFilled.access(𝓟100{i}))
}
if (𝓟[ty]70{ProtocolSimulator}.orderCancelled.AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.orderCancelled.access(𝓟100{i})))
{
𝓟106{availableAmountB}.MinusEqualsToken(𝓟[ty]70{ProtocolSimulator}.orderCancelled.access(𝓟100{i}))
}
𝓟105{availableAmountS}𝓟106{availableAmountB}.AsteriskToken(𝓟102{amountS}).SlashToken(𝓟103{amountB});
}
else
{
if (𝓟[ty]70{ProtocolSimulator}.orderFilled.AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.orderFilled.access(𝓟100{i})))
{
𝓟105{availableAmountS}.MinusEqualsToken(𝓟[ty]70{ProtocolSimulator}.orderFilled.access(𝓟100{i}))
}
if (𝓟[ty]70{ProtocolSimulator}.orderCancelled.AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.orderCancelled.access(𝓟100{i})))
{
𝓟105{availableAmountS}.MinusEqualsToken(𝓟[ty]70{ProtocolSimulator}.orderCancelled.access(𝓟100{i}))
}
𝓟106{availableAmountB}𝓟105{availableAmountS}.AsteriskToken(𝓟103{amountB}).SlashToken(𝓟102{amountS});
}
if (𝓟[ty]70{ProtocolSimulator}.availableAmountSList.AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.availableAmountSList.access(𝓟100{i})).AmpersandAmpersandToken(𝓟[ty]70{ProtocolSimulator}.availableAmountSList.access(𝓟100{i}).FirstBinaryOperator(𝓟105{availableAmountS})))
{
𝓟105{availableAmountS}𝓟[ty]70{ProtocolSimulator}.availableAmountSList.access(𝓟100{i});
𝓟106{availableAmountB}𝓟105{availableAmountS}.AsteriskToken(𝓟103{amountB}).SlashToken(𝓟102{amountS});
}
if (𝓟105{availableAmountS}.LessThanEqualsToken(𝓛8745{Number}).BarBarToken(𝓟106{availableAmountB}.LessThanEqualsToken(𝓛8745{Number})))
{
𝓛8749{Error}.CONSTRUCTOR(𝓛8743{String})
}
𝓟101{order}.params.scaledAmountS𝓟105{availableAmountS};
𝓟101{order}.params.scaledAmountB𝓟106{availableAmountB};
𝓟101{order}.params.lrcFee𝓟472{BigNumber}.CONSTRUCTOR(𝓟104{lrcFee}.toPrecision(𝓛8745{Number}));
}
𝓛12546{POST_PlusPlusToken}(𝓟100{i})
}
}
}
function 𝓟167{caculateTraderTokenBalances} (𝓟168{fees}: 𝓛[ty]8670{Array},𝓟169{fillAmountSList}: 𝓛[ty]8670{Array}): (𝓟170: [miss]𝓛[ty]8670{Array})
{
const 𝓟171{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
const 𝓟172{balances}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
{
let 𝓟173{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟173{i}.FirstBinaryOperator(𝓟171{size}))
{
{
const 𝓟174{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟173{i});
const 𝓟175{nextInd}: [miss]𝓛[ty]8655{Number} = 𝓟173{i}.PlusToken(𝓛8745{Number}).PercentToken(𝓟171{size});
let 𝓟176{balanceSBefore} = 𝓟174{order}.params.amountS.toNumber();
if (𝓟[ty]70{ProtocolSimulator}.availableAmountSList)
{
𝓟176{balanceSBefore}𝓟[ty]70{ProtocolSimulator}.availableAmountSList.access(𝓟173{i});
}
const 𝓟177{balanceItem}: [OOV]𝓟[ty]1969{BalanceItem} = {balanceB: 𝓟169{fillAmountSList}.access(𝓟175{nextInd}).MinusToken(𝓟168{fees}.access(𝓟173{i}).feeB),balanceS: 𝓟176{balanceSBefore}.MinusToken(𝓟169{fillAmountSList}.access(𝓟173{i})).MinusToken(𝓟168{fees}.access(𝓟173{i}).feeS)};
if (𝓟174{order}.params.tokenS.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.lrcAddress).AmpersandAmpersandToken(𝓛8745{Number}.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟173{i}))))
{
𝓟177{balanceItem}.balanceS.MinusEqualsToken(𝓟168{fees}.access(𝓟173{i}).feeLrc)
}
if (𝓟174{order}.params.tokenB.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.lrcAddress).AmpersandAmpersandToken(𝓛8745{Number}.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟173{i}))))
{
𝓟177{balanceItem}.balanceB.MinusEqualsToken(𝓟168{fees}.access(𝓟173{i}).feeLrc)
}
𝓟172{balances}.push(𝓟177{balanceItem})
}
𝓛12546{POST_PlusPlusToken}(𝓟173{i})
}
}
return 𝓟170 = 𝓟172{balances}
}
function 𝓟137{sumFees} (𝓟138{fees}: 𝓛[ty]8670{Array},𝓟139{balances}: 𝓛[ty]8670{Array}): (𝓟140: [OOV]any)
{
const 𝓟141{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
const 𝓟142{feeTotals}: [OOV]any = {};
{
let 𝓟143{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟143{i}.FirstBinaryOperator(𝓟141{size}))
{
{
const 𝓟144{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟143{i});
const 𝓟145{feeItem}: [OOV]𝓟[ty]1970{FeeItem} = 𝓟138{fees}.access(𝓟143{i});
const 𝓟146{balanceItem}: [OOV]𝓟[ty]1969{BalanceItem} = 𝓟139{balances}.access(𝓟143{i});
const 𝓟147{tokenS}: [miss]𝓛[ty]10051{String} = 𝓟144{order}.params.tokenS;
const 𝓟148{tokenB}: [miss]𝓛[ty]10051{String} = 𝓟144{order}.params.tokenB;
𝓟142{feeTotals}.access(𝓟[ty]70{ProtocolSimulator}.lrcAddress)𝓟[ty]70{ProtocolSimulator}.sumFeeItem(𝓟142{feeTotals},𝓟[ty]70{ProtocolSimulator}.lrcAddress,𝓟145{feeItem}.feeLrc);
𝓟142{feeTotals}.access(𝓟[ty]70{ProtocolSimulator}.lrcAddress)𝓟[ty]70{ProtocolSimulator}.sumFeeItem(𝓟142{feeTotals},𝓟[ty]70{ProtocolSimulator}.lrcAddress,𝓛12557{MinusToken}(𝓟145{feeItem}.lrcReward));
𝓟142{feeTotals}.access(𝓟147{tokenS})𝓟[ty]70{ProtocolSimulator}.sumFeeItem(𝓟142{feeTotals},𝓟147{tokenS},𝓟145{feeItem}.feeS);
𝓟142{feeTotals}.access(𝓟148{tokenB})𝓟[ty]70{ProtocolSimulator}.sumFeeItem(𝓟142{feeTotals},𝓟148{tokenB},𝓟145{feeItem}.feeB);
}
𝓛12546{POST_PlusPlusToken}(𝓟143{i})
}
}
𝓟142{feeTotals}.access(𝓟[ty]70{ProtocolSimulator}.lrcAddress)𝓟[ty]70{ProtocolSimulator}.sumFeeItem(𝓟142{feeTotals},𝓟[ty]70{ProtocolSimulator}.lrcAddress,𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟141{size}));
return 𝓟140 = 𝓟142{feeTotals}
}
function 𝓟149{sumFeeItem} (𝓟150{feeTotals}: [OOV]any,𝓟151{tokenAddress}: 𝓛[ty]10051{String},𝓟152{itemAmount}: (𝓛[ty]10051{String} ≠ 𝓛[ty]8655{Number})): (𝓟153: [OOV]any)
{
if (𝓟150{feeTotals}.access(𝓟151{tokenAddress}))
{
return 𝓟153 = 𝓟150{feeTotals}.access(𝓟151{tokenAddress}).PlusToken(𝓟152{itemAmount})
}
else
{
return 𝓟153 = 𝓟152{itemAmount}
}
}
function 𝓟89{caculateRingFeesAndBalances} (): (𝓟90: [OOV]any)
{
𝓟[ty]70{ProtocolSimulator}.scaleRing()
const 𝓟91{rateAmountSList}: [miss]𝓛[ty]8670{Array} = 𝓟[ty]70{ProtocolSimulator}.caculateRateAmountS();
const 𝓟92{fillAmountSList}: [miss]𝓛[ty]8670{Array} = 𝓟[ty]70{ProtocolSimulator}.caculateFillAmountS(𝓟91{rateAmountSList});
const 𝓟93{fees}: [miss]𝓛[ty]8670{Array} = 𝓟[ty]70{ProtocolSimulator}.caculateOrderFees(𝓟92{fillAmountSList},𝓟91{rateAmountSList});
const 𝓟94{balances}: [miss]𝓛[ty]8670{Array} = 𝓟[ty]70{ProtocolSimulator}.caculateTraderTokenBalances(𝓟93{fees},𝓟92{fillAmountSList});
const 𝓟95{totalFees} = 𝓟[ty]70{ProtocolSimulator}.sumFees(𝓟93{fees},𝓟94{balances});
const 𝓟96{result}: [OOV]any = {};
𝓟96{result}.fees𝓟93{fees};
𝓟96{result}.balances𝓟94{balances};
𝓟96{result}.totalFees𝓟95{totalFees};
return 𝓟90 = 𝓟96{result}
}
function 𝓟107{caculateFillAmountS} (𝓟108{rateAmountSList}: 𝓛[ty]8670{Array}): (𝓟109: [miss]𝓛[ty]8670{Array})
{
const 𝓟110{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
const 𝓟111{fillAmountSList}: 𝓛[ty]8670{Array} = 𝓟108{rateAmountSList}.slice();
{
let 𝓟112{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟112{i}.FirstBinaryOperator(𝓟110{size}))
{
{
const 𝓟113{nextIndex}: [miss]𝓛[ty]8655{Number} = 𝓟112{i}.PlusToken(𝓛8745{Number}).PercentToken(𝓟110{size});
const 𝓟114{currentOrder}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟112{i});
const 𝓟115{currentFillAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟111{fillAmountSList}.access(𝓟112{i});
const 𝓟116{currentRateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟108{rateAmountSList}.access(𝓟112{i});
const 𝓟117{nextOrder}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟113{nextIndex});
const 𝓟118{nextRateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟108{rateAmountSList}.access(𝓟113{nextIndex});
const 𝓟119{nextFillAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.caculateNextFillAmountS(𝓟114{currentOrder},𝓟116{currentRateAmountS},𝓟115{currentFillAmountS},𝓟117{nextOrder},𝓟118{nextRateAmountS});
𝓟111{fillAmountSList}.access(𝓟113{nextIndex})𝓟119{nextFillAmountS};
}
𝓛12546{POST_PlusPlusToken}(𝓟112{i})
}
}
{
let 𝓟120{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟120{i}.FirstBinaryOperator(𝓟110{size}))
{
{
const 𝓟121{nextIndex}: [miss]𝓛[ty]8655{Number} = 𝓟120{i}.PlusToken(𝓛8745{Number}).PercentToken(𝓟110{size});
const 𝓟122{currentOrder}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟120{i});
const 𝓟123{currentFillAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟111{fillAmountSList}.access(𝓟120{i});
const 𝓟124{currentRateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟108{rateAmountSList}.access(𝓟120{i});
const 𝓟125{nextOrder}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟121{nextIndex});
const 𝓟126{nextRateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟108{rateAmountSList}.access(𝓟121{nextIndex});
const 𝓟127{nextFillAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.caculateNextFillAmountS(𝓟122{currentOrder},𝓟124{currentRateAmountS},𝓟123{currentFillAmountS},𝓟125{nextOrder},𝓟126{nextRateAmountS});
𝓟111{fillAmountSList}.access(𝓟121{nextIndex})𝓟127{nextFillAmountS};
}
𝓛12546{POST_PlusPlusToken}(𝓟120{i})
}
}
return 𝓟109 = 𝓟111{fillAmountSList}
}
function 𝓟79{caculateRateAmountS} (): (𝓟80: [miss]𝓛[ty]8670{Array})
{
let 𝓟81{rate}: 𝓛[ty]8655{Number} = 𝓛8745{Number};
const 𝓟82{result}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟83{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
{
let 𝓟84{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟84{i}.FirstBinaryOperator(𝓟83{size}))
{
{
const 𝓟85{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟84{i});
𝓟81{rate}𝓟81{rate}.AsteriskToken(𝓟85{order}.params.amountS.toNumber()).SlashToken(𝓟85{order}.params.amountB.toNumber());
}
𝓛12546{POST_PlusPlusToken}(𝓟84{i})
}
}
𝓟81{rate}𝓛8746{Math}.pow(𝓟81{rate},𝓛12557{MinusToken}(𝓛8745{Number}).SlashToken(𝓟83{size}));
{
let 𝓟86{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟86{i}.FirstBinaryOperator(𝓟83{size}))
{
{
const 𝓟87{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟86{i});
const 𝓟88{rateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟87{order}.params.scaledAmountS.AsteriskToken(𝓟81{rate});
𝓟87{order}.params.rateAmountS𝓟88{rateAmountS};
𝓟87{order}.params.rateAmountB𝓟87{order}.params.scaledAmountB;
𝓟82{result}.push(𝓟88{rateAmountS})
}
𝓛12546{POST_PlusPlusToken}(𝓟86{i})
}
}
return 𝓟80 = 𝓟82{result}
}
function 𝓟154{caculateOrderFees} (𝓟155{fillAmountSList}: 𝓛[ty]8670{Array},𝓟156{rateAmountSList}: 𝓛[ty]8670{Array}): (𝓟157: [miss]𝓛[ty]8670{Array})
{
const 𝓟158{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.length;
const 𝓟159{fees}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
let 𝓟160{minerSpendableLrc}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟158{size});
{
let 𝓟161{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟161{i}.FirstBinaryOperator(𝓟158{size}))
{
{
const 𝓟162{nextInd}: [miss]𝓛[ty]8655{Number} = 𝓟161{i}.PlusToken(𝓛8745{Number}).PercentToken(𝓟158{size});
const 𝓟163{order}: [OOV]𝓟[ty]315{Order} = 𝓟[ty]70{ProtocolSimulator}.ring.orders.access(𝓟161{i});
const 𝓟164{feeItem}: [OOV]𝓟[ty]1970{FeeItem} = {feeB: 𝓛8745{Number},fillAmountS: 𝓟155{fillAmountSList}.access(𝓟161{i}),lrcReward: 𝓛8745{Number},feeS: 𝓛8745{Number},feeLrc: 𝓛8745{Number}};
if (𝓟163{order}.params.lrcFee.toNumber().EqualsEqualsEqualsToken(𝓛8745{Number}))
{
𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟161{i})𝓛8745{Number};
𝓟163{order}.params.marginSplitPercentage𝓛8745{Number};
}
if (𝓟163{order}.params.tokenB.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.lrcAddress))
{
𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟161{i}).FirstCompoundAssignment(𝓟155{fillAmountSList}.access(𝓟162{nextInd}))
}
if (𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟161{i}).EqualsEqualsEqualsToken(𝓛8745{Number}))
{
𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟161{i})𝓛8745{Number};
𝓟163{order}.params.marginSplitPercentage𝓛8745{Number};
}
let 𝓟165{feeLrcToPay}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
if (𝓟163{order}.params.buyNoMoreThanAmountB)
{
const 𝓟166{fillAmountB}: [miss]𝓛[ty]8655{Number} = 𝓟155{fillAmountSList}.access(𝓟161{i}).AsteriskToken(𝓟163{order}.params.rateAmountB).SlashToken(𝓟163{order}.params.rateAmountS);
𝓟165{feeLrcToPay}𝓟163{order}.params.lrcFee.toNumber().AsteriskToken(𝓟166{fillAmountB}).SlashToken(𝓟163{order}.params.amountB.toNumber());
}
else
{
𝓟165{feeLrcToPay}𝓟163{order}.params.lrcFee.toNumber().AsteriskToken(𝓟155{fillAmountSList}.access(𝓟161{i})).SlashToken(𝓟163{order}.params.amountS.toNumber());
}
if (𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟161{i}).FirstBinaryOperator(𝓟165{feeLrcToPay}))
{
𝓟165{feeLrcToPay}𝓟[ty]70{ProtocolSimulator}.spendableLrcFeeList.access(𝓟161{i});
𝓟163{order}.params.marginSplitPercentage𝓛8745{Number};
}
if (𝓛8745{Number}.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟161{i})))
{
𝓟164{feeItem}.feeLrc𝓟165{feeLrcToPay};
}
else
{
if (𝓛8745{Number}.EqualsEqualsEqualsToken(𝓟[ty]70{ProtocolSimulator}.feeSelectionList.access(𝓟161{i})))
{
if (𝓟160{minerSpendableLrc}.GreaterThanEqualsToken(𝓟165{feeLrcToPay}))
{
if (𝓟163{order}.params.buyNoMoreThanAmountB)
{
𝓟164{feeItem}.feeS𝓟155{fillAmountSList}.access(𝓟161{i}).AsteriskToken(𝓟163{order}.params.scaledAmountS).SlashToken(𝓟156{rateAmountSList}.access(𝓟161{i})).MinusToken(𝓟155{fillAmountSList}.access(𝓟161{i}));
𝓟164{feeItem}.feeS𝓟164{feeItem}.feeS.AsteriskToken(𝓟163{order}.params.marginSplitPercentage).SlashToken(𝓛8745{Number});
}
else
{
𝓟164{feeItem}.feeB𝓟155{fillAmountSList}.access(𝓟162{nextInd}).MinusToken(𝓟155{fillAmountSList}.access(𝓟161{i}).AsteriskToken(𝓟163{order}.params.amountB.toNumber()).SlashToken(𝓟163{order}.params.amountS.toNumber()));
𝓟164{feeItem}.feeB𝓟164{feeItem}.feeB.AsteriskToken(𝓟163{order}.params.marginSplitPercentage).SlashToken(𝓛8745{Number});
}
if (𝓟164{feeItem}.feeS.GreaterThanToken(𝓛8745{Number}).BarBarToken(𝓟164{feeItem}.feeB.GreaterThanToken(𝓛8745{Number})))
{
𝓟160{minerSpendableLrc}.MinusEqualsToken(𝓟165{feeLrcToPay})
𝓟164{feeItem}.lrcReward𝓟165{feeLrcToPay};
}
𝓟164{feeItem}.feeLrc𝓛8745{Number};
}
}
else
{
𝓛8749{Error}.CONSTRUCTOR(𝓛8743{String})
}
}
𝓟159{fees}.push(𝓟164{feeItem})
}
𝓛12546{POST_PlusPlusToken}(𝓟161{i})
}
}
return 𝓟157 = 𝓟159{fees}
}
function 𝓟128{caculateNextFillAmountS} (𝓟129{currentOrder}: [OOV]𝓟[ty]315{Order},𝓟130{currentRateAmountS}: 𝓛[ty]8655{Number},𝓟131{currentFillAmountS}: 𝓛[ty]8655{Number},𝓟132{nextOrder}: [OOV]𝓟[ty]315{Order},𝓟133{nextRateAmountS}: 𝓛[ty]8655{Number}): (𝓟134: [miss]𝓛[ty]8655{Number})
{
const 𝓟135{currentFillAmountB}: [miss]𝓛[ty]8655{Number} = 𝓟131{currentFillAmountS}.AsteriskToken(𝓟129{currentOrder}.params.scaledAmountB).SlashToken(𝓟130{currentRateAmountS});
let 𝓟136{nextFillAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟133{nextRateAmountS};
if (𝓛12548{ExclamationToken}(𝓟132{nextOrder}.params.buyNoMoreThanAmountB))
{
𝓟136{nextFillAmountS}𝓟132{nextOrder}.params.scaledAmountS;
}
if (𝓟135{currentFillAmountB}.LessThanEqualsToken(𝓟136{nextFillAmountS}))
{
return 𝓟134 = 𝓟135{currentFillAmountB}
}
else
{
return 𝓟134 = 𝓟136{nextFillAmountS}
}
}
}

Module: util/ring_factory

function 𝓟178{CONSTRUCTOR} (𝓟179{loopringProtocolAddr}: (𝓛[ty]8666{Boolean} ≠ 𝓛[ty]10051{String}),𝓟180{eosAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String}),𝓟181{neoAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String}),𝓟182{lrcAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String}),𝓟183{qtumAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String}),𝓟184{currBlockTimeStamp}: 𝓛[ty]8655{Number}): (𝓟[ty]188{RingFactory})
{
const 𝓟[ty]188{RingFactory};
const 𝓟[ty]188{RingFactory};
𝓟[ty]188{RingFactory}.loopringProtocolAddr𝓟179{loopringProtocolAddr};
𝓟[ty]188{RingFactory}.eosAddress𝓟180{eosAddress};
𝓟[ty]188{RingFactory}.neoAddress𝓟181{neoAddress};
𝓟[ty]188{RingFactory}.lrcAddress𝓟182{lrcAddress};
𝓟[ty]188{RingFactory}.qtumAddress𝓟183{qtumAddress};
𝓟[ty]188{RingFactory}.currBlockTimeStamp𝓟184{currBlockTimeStamp};
}
class 𝓟[ty]188{RingFactory}{
𝓟190{loopringProtocolAddr}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
𝓟191{eosAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
𝓟192{lrcAddress}: 𝓛[ty]10051{String};
𝓟193{neoAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
𝓟194{currBlockTimeStamp}: 𝓛[ty]8655{Number};
𝓟195{qtumAddress}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
function 𝓟263{$Async_generateSize3Ring03} (𝓟264{order1Owner}: 𝓛[ty]10051{String},𝓟265{order2Owner}: 𝓛[ty]10051{String},𝓟266{order3Owner}: 𝓛[ty]10051{String},𝓟267{ringOwner}: 𝓛[ty]10051{String},𝓟268{salt}: (𝓛[ty]10051{String} ≠ 𝓛[ty]8655{Number})): (𝓟269: [miss]𝓛[ty]8654{Promise})
{
const 𝓟270{orderPrams1}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.lrcAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟268{salt}))};
const 𝓟271{orderPrams2}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.lrcAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟268{salt}))};
const 𝓟272{orderPrams3}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟268{salt}))};
const 𝓟273{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟264{order1Owner},𝓟270{orderPrams1});
const 𝓟274{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟265{order2Owner},𝓟271{orderPrams2});
const 𝓟275{order3}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟266{order3Owner},𝓟272{orderPrams3});
𝓛12547{$Await}(𝓟273{order1}.signAsync())
𝓛12547{$Await}(𝓟274{order2}.signAsync())
𝓛12547{$Await}(𝓟275{order3}.signAsync())
const 𝓟276{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟267{ringOwner},𝓛8757{Array}(𝓟273{order1},𝓟274{order2},𝓟275{order3}));
𝓛12547{$Await}(𝓟276{ring}.signAsync())
return 𝓟269 = 𝓟276{ring}
}
function 𝓟236{$Async_generateSize3Ring01} (𝓟237{order1Owner}: 𝓛[ty]10051{String},𝓟238{order2Owner}: 𝓛[ty]10051{String},𝓟239{order3Owner}: 𝓛[ty]10051{String},𝓟240{ringOwner}: 𝓛[ty]10051{String}): (𝓟241: [miss]𝓛[ty]8654{Promise})
{
const 𝓟242{orderPrams1}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟243{orderPrams2}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.qtumAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟244{orderPrams3}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.qtumAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟245{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟237{order1Owner},𝓟242{orderPrams1});
const 𝓟246{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟238{order2Owner},𝓟243{orderPrams2});
const 𝓟247{order3}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟239{order3Owner},𝓟244{orderPrams3});
𝓛12547{$Await}(𝓟245{order1}.signAsync())
𝓛12547{$Await}(𝓟246{order2}.signAsync())
𝓛12547{$Await}(𝓟247{order3}.signAsync())
const 𝓟248{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟240{ringOwner},𝓛8757{Array}(𝓟245{order1},𝓟246{order2},𝓟247{order3}));
𝓛12547{$Await}(𝓟248{ring}.signAsync())
return 𝓟241 = 𝓟248{ring}
}
function 𝓟226{$Async_generateSize2Ring03} (𝓟227{order1Owner}: 𝓛[ty]10051{String},𝓟228{order2Owner}: 𝓛[ty]10051{String},𝓟229{ringOwner}: 𝓛[ty]10051{String}): (𝓟230: [miss]𝓛[ty]8654{Promise})
{
const 𝓟231{orderPrams1}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟232{orderPrams2}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟233{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟227{order1Owner},𝓟231{orderPrams1});
const 𝓟234{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟228{order2Owner},𝓟232{orderPrams2});
𝓛12547{$Await}(𝓟233{order1}.signAsync())
𝓛12547{$Await}(𝓟234{order2}.signAsync())
const 𝓟235{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟229{ringOwner},𝓛8757{Array}(𝓟233{order1},𝓟234{order2}));
𝓛12547{$Await}(𝓟235{ring}.signAsync())
return 𝓟230 = 𝓟235{ring}
}
function 𝓟289{ringToSubmitableParams} (𝓟290{ring}: [OOV]𝓟[ty]349{Ring},𝓟291{feeSelectionList}: 𝓛[ty]8670{Array},𝓟292{feeRecepient}: 𝓛[ty]10051{String}): (𝓟293: [miss]𝓛[ty]8642{Object})
{
const 𝓟294{ringSize}: [miss]𝓛[ty]8655{Number} = 𝓟290{ring}.orders.length;
const 𝓟295{addressList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟296{uintArgsList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟297{uint8ArgsList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟298{buyNoMoreThanAmountBList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟299{vList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟300{rList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟301{sList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟302{rateAmountSList}: [miss]𝓛[ty]8670{Array} = 𝓟[ty]188{RingFactory}.caculateRateAmountS(𝓟290{ring});
{
let 𝓟303{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟303{i}.FirstBinaryOperator(𝓟294{ringSize}))
{
{
const 𝓟304{order}: [OOV]𝓟[ty]315{Order} = 𝓟290{ring}.orders.access(𝓟303{i});
const 𝓟305{addressListItem}: [miss]𝓛[ty]8670{Array} = 𝓛8757{Array}(𝓟304{order}.owner,𝓟304{order}.params.tokenS);
𝓟295{addressList}.push(𝓟305{addressListItem})
const 𝓟306{uintArgsListItem}: [miss]𝓛[ty]8670{Array} = 𝓛8757{Array}(𝓟304{order}.params.amountS,𝓟304{order}.params.amountB,𝓟304{order}.params.validSince,𝓟304{order}.params.validUntil,𝓟304{order}.params.lrcFee,𝓟302{rateAmountSList}.access(𝓟303{i}));
𝓟296{uintArgsList}.push(𝓟306{uintArgsListItem})
const 𝓟307{uint8ArgsListItem}: [miss]𝓛[ty]8670{Array} = 𝓛8757{Array}(𝓟304{order}.params.marginSplitPercentage,𝓟291{feeSelectionList}.access(𝓟303{i}));
𝓟297{uint8ArgsList}.push(𝓟307{uint8ArgsListItem})
𝓟298{buyNoMoreThanAmountBList}.push(𝓟304{order}.params.buyNoMoreThanAmountB)
𝓟299{vList}.push(𝓟304{order}.params.v)
𝓟300{rList}.push(𝓟304{order}.params.r)
𝓟301{sList}.push(𝓟304{order}.params.s)
}
𝓛12546{POST_PlusPlusToken}(𝓟303{i})
}
}
𝓟299{vList}.push(𝓟290{ring}.v)
𝓟300{rList}.push(𝓟290{ring}.r)
𝓟301{sList}.push(𝓟290{ring}.s)
const 𝓟308{submitParams}: [miss]𝓛[ty]8642{Object} = {uint8ArgsList: 𝓟297{uint8ArgsList},ringOwner: 𝓟290{ring}.owner,feeRecepient: 𝓟292{feeRecepient},rList: 𝓟300{rList},buyNoMoreThanAmountBList: 𝓟298{buyNoMoreThanAmountBList},addressList: 𝓟295{addressList},sList: 𝓟301{sList},vList: 𝓟299{vList},uintArgsList: 𝓟296{uintArgsList}};
return 𝓟293 = 𝓟308{submitParams}
}
function 𝓟249{$Async_generateSize3Ring02} (𝓟250{order1Owner}: 𝓛[ty]10051{String},𝓟251{order2Owner}: 𝓛[ty]10051{String},𝓟252{order3Owner}: 𝓛[ty]10051{String},𝓟253{ringOwner}: 𝓛[ty]10051{String},𝓟254{salt}: (𝓛[ty]10051{String} ≠ 𝓛[ty]8655{Number})): (𝓟255: [miss]𝓛[ty]8654{Promise})
{
const 𝓟256{orderPrams1}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟254{salt}))};
const 𝓟257{orderPrams2}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.qtumAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟254{salt}))};
const 𝓟258{orderPrams3}: [OOV]𝓟[ty]1971{OrderParams} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.qtumAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}).PlusToken(𝓟254{salt}))};
const 𝓟259{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟250{order1Owner},𝓟256{orderPrams1});
const 𝓟260{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟251{order2Owner},𝓟257{orderPrams2});
const 𝓟261{order3}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟252{order3Owner},𝓟258{orderPrams3});
𝓛12547{$Await}(𝓟259{order1}.signAsync())
𝓛12547{$Await}(𝓟260{order2}.signAsync())
𝓛12547{$Await}(𝓟261{order3}.signAsync())
const 𝓟262{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟253{ringOwner},𝓛8757{Array}(𝓟259{order1},𝓟260{order2},𝓟261{order3}));
𝓛12547{$Await}(𝓟262{ring}.signAsync())
return 𝓟255 = 𝓟262{ring}
}
function 𝓟196{$Async_generateRingForCancel} (𝓟197{order1Owner}: 𝓛[ty]10051{String},𝓟198{order2Owner}: 𝓛[ty]10051{String},𝓟199{ringOwner}: 𝓛[ty]10051{String}): (𝓟200: [miss]𝓛[ty]8654{Promise})
{
const 𝓟201{orderPrams1}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟202{orderPrams2}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟203{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟197{order1Owner},𝓟201{orderPrams1});
const 𝓟204{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟198{order2Owner},𝓟202{orderPrams2});
𝓛12547{$Await}(𝓟203{order1}.signAsync())
𝓛12547{$Await}(𝓟204{order2}.signAsync())
const 𝓟205{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟199{ringOwner},𝓛8757{Array}(𝓟203{order1},𝓟204{order2}));
𝓛12547{$Await}(𝓟205{ring}.signAsync())
return 𝓟200 = 𝓟205{ring}
}
function 𝓟216{$Async_generateSize2Ring02} (𝓟217{order1Owner}: 𝓛[ty]10051{String},𝓟218{order2Owner}: 𝓛[ty]10051{String},𝓟219{ringOwner}: 𝓛[ty]10051{String}): (𝓟220: [miss]𝓛[ty]8654{Promise})
{
const 𝓟221{orderPrams1}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟222{orderPrams2}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟223{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟217{order1Owner},𝓟221{orderPrams1});
const 𝓟224{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟218{order2Owner},𝓟222{orderPrams2});
𝓛12547{$Await}(𝓟223{order1}.signAsync())
𝓛12547{$Await}(𝓟224{order2}.signAsync())
const 𝓟225{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟219{ringOwner},𝓛8757{Array}(𝓟223{order1},𝓟224{order2}));
𝓛12547{$Await}(𝓟225{ring}.signAsync())
return 𝓟220 = 𝓟225{ring}
}
function 𝓟277{caculateRateAmountS} (𝓟278{ring}: [OOV]𝓟[ty]349{Ring}): (𝓟279: [miss]𝓛[ty]8670{Array})
{
let 𝓟280{rate}: 𝓛[ty]8655{Number} = 𝓛8745{Number};
const 𝓟281{result}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟282{size}: [miss]𝓛[ty]8655{Number} = 𝓟278{ring}.orders.length;
{
let 𝓟283{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟283{i}.FirstBinaryOperator(𝓟282{size}))
{
{
const 𝓟284{order}: [OOV]𝓟[ty]315{Order} = 𝓟278{ring}.orders.access(𝓟283{i});
𝓟280{rate}𝓟280{rate}.AsteriskToken(𝓟284{order}.params.amountS.toNumber()).SlashToken(𝓟284{order}.params.amountB.toNumber());
}
𝓛12546{POST_PlusPlusToken}(𝓟283{i})
}
}
𝓟280{rate}𝓛8746{Math}.pow(𝓟280{rate},𝓛12557{MinusToken}(𝓛8745{Number}).SlashToken(𝓟282{size}));
{
let 𝓟285{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟285{i}.FirstBinaryOperator(𝓟282{size}))
{
{
const 𝓟286{order}: [OOV]𝓟[ty]315{Order} = 𝓟278{ring}.orders.access(𝓟285{i});
const 𝓟287{rateAmountS}: [miss]𝓛[ty]8655{Number} = 𝓟286{order}.params.amountS.toNumber().AsteriskToken(𝓟280{rate});
const 𝓟288{rateSBigNumber} = 𝓟472{BigNumber}.CONSTRUCTOR(𝓟287{rateAmountS}.toPrecision(𝓛8745{Number}));
𝓟281{result}.push(𝓟288{rateSBigNumber})
}
𝓛12546{POST_PlusPlusToken}(𝓟285{i})
}
}
return 𝓟279 = 𝓟281{result}
}
function 𝓟206{$Async_generateSize2Ring01} (𝓟207{order1Owner}: 𝓛[ty]10051{String},𝓟208{order2Owner}: 𝓛[ty]10051{String},𝓟209{ringOwner}: 𝓛[ty]10051{String}): (𝓟210: [miss]𝓛[ty]8654{Promise})
{
const 𝓟211{orderPrams1}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.neoAddress,tokenS: 𝓟[ty]188{RingFactory}.eosAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟212{orderPrams2}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟[ty]188{RingFactory}.loopringProtocolAddr,validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number}).PlusToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟[ty]188{RingFactory}.eosAddress,tokenS: 𝓟[ty]188{RingFactory}.neoAddress,validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓟[ty]188{RingFactory}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟213{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟207{order1Owner},𝓟211{orderPrams1});
const 𝓟214{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟208{order2Owner},𝓟212{orderPrams2});
𝓛12547{$Await}(𝓟213{order1}.signAsync())
𝓛12547{$Await}(𝓟214{order2}.signAsync())
const 𝓟215{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟209{ringOwner},𝓛8757{Array}(𝓟213{order1},𝓟214{order2}));
𝓛12547{$Await}(𝓟215{ring}.signAsync())
return 𝓟210 = 𝓟215{ring}
}
}

Module: util/order

function 𝓟309{CONSTRUCTOR} (𝓟310{owner}: 𝓛[ty]10051{String},𝓟311{params}: [OOV]𝓟[ty]1971{OrderParams}): (𝓟[ty]315{Order})
{
const 𝓟[ty]315{Order};
const 𝓟[ty]315{Order};
𝓟[ty]315{Order}.owner𝓟310{owner};
𝓟[ty]315{Order}.params𝓟311{params};
{
if (𝓟1{web3})
{
𝓟[ty]315{Order}.web3Instance𝓟1{web3};
}
}
}
class 𝓟[ty]315{Order}{
𝓟317{owner}: 𝓛[ty]10051{String};
𝓟318{params}: [OOV]𝓟[ty]1971{OrderParams};
𝓟319{web3Instance}: [OOV]𝓛[ty]2{<UNKNOWN>};
function 𝓟320{isValidSignature} (): (𝓟321: [miss]𝓛[ty]8666{Boolean})
{
const 𝓟322{v}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]315{Order}.params.v;
const 𝓟323{r}: [miss]𝓛[ty]10051{String} = 𝓟[ty]315{Order}.params.r;
const 𝓟324{s}: [miss]𝓛[ty]10051{String} = 𝓟[ty]315{Order}.params.s;
if (𝓛1{<UNKNOWN>}(𝓟322{v}).BarBarToken(𝓛1{<UNKNOWN>}(𝓟323{r})).BarBarToken(𝓛1{<UNKNOWN>}(𝓟324{s})))
{
𝓛8749{Error}.CONSTRUCTOR(𝓛8743{String})
}
const 𝓟325{orderHash} = 𝓟[ty]315{Order}.getOrderHash();
const 𝓟326{msgHash} = 𝓟475{ethUtil}.hashPersonalMessage(𝓟325{orderHash});
{
const 𝓟327{pubKey} = 𝓟475{ethUtil}.ecrecover(𝓟326{msgHash},𝓟322{v},𝓟475{ethUtil}.toBuffer(𝓟323{r}),𝓟475{ethUtil}.toBuffer(𝓟324{s}));
const 𝓟328{recoveredAddress}: [miss]𝓛[ty]10051{String} = 𝓟475{ethUtil}.bufferToHex(𝓟475{ethUtil}.pubToAddress(𝓟327{pubKey}));
return 𝓟321 = 𝓟328{recoveredAddress}.EqualsEqualsEqualsToken(𝓟[ty]315{Order}.owner)
}
}
function 𝓟329{$Async_signAsync} (): (𝓟330: [miss]𝓛[ty]8654{Promise})
{
const 𝓟331{orderHash} = 𝓟[ty]315{Order}.getOrderHash();
const 𝓟332{signature} = 𝓛12547{$Await}(𝓟477{promisify}(𝓟[ty]315{Order}.web3Instance.eth.sign)(𝓟[ty]315{Order}.owner,𝓟475{ethUtil}.bufferToHex(𝓟331{orderHash})));
const 𝓟333{v}: [miss]𝓛[ty]8655{Number} = 𝓟475{ethUtil}.fromRpcSig(𝓟332{signature}).v;
const 𝓟334{r} = 𝓟475{ethUtil}.fromRpcSig(𝓟332{signature}).r;
const 𝓟335{s} = 𝓟475{ethUtil}.fromRpcSig(𝓟332{signature}).s;
𝓟[ty]315{Order}.params𝓛1{<UNKNOWN>}(𝓟[ty]315{Order}.params,{orderHashHex: 𝓟475{ethUtil}.bufferToHex(𝓟331{orderHash}),r: 𝓟475{ethUtil}.bufferToHex(𝓟334{r}),s: 𝓟475{ethUtil}.bufferToHex(𝓟335{s}),v: 𝓟333{v}});
}
function 𝓟336{getOrderHash} (): (𝓟337: [OOV]any)
{
const 𝓟338{orderHash} = 𝓛1{<UNKNOWN>}(𝓛8757{Array}(𝓟[ty]315{Order}.params.loopringProtocol,𝓟[ty]315{Order}.owner,𝓟[ty]315{Order}.params.tokenS,𝓟[ty]315{Order}.params.tokenB,𝓟[ty]315{Order}.params.amountS,𝓟[ty]315{Order}.params.amountB,𝓟[ty]315{Order}.params.validSince,𝓟[ty]315{Order}.params.validUntil,𝓟[ty]315{Order}.params.lrcFee,𝓟[ty]315{Order}.params.buyNoMoreThanAmountB,𝓟[ty]315{Order}.params.marginSplitPercentage));
return 𝓟337 = 𝓟338{orderHash}
}
}

Module: util/types

type 𝓟[ty]1969{BalanceItem} = {balanceS: 𝓛[ty]8655{Number}, balanceB: 𝓛[ty]8655{Number}}
type 𝓟[ty]1970{FeeItem} = {feeB: 𝓛[ty]8655{Number}, fillAmountS: 𝓛[ty]8655{Number}, lrcReward: 𝓛[ty]8655{Number}, feeS: 𝓛[ty]8655{Number}, feeLrc: 𝓛[ty]8655{Number}}
type 𝓟[ty]1968{LoopringSubmitParams} = {uint8ArgsList: 𝓛[ty]8670{Array}, ringOwner: 𝓛[ty]10051{String}, feeRecepient: 𝓛[ty]10051{String}, rList: 𝓛[ty]8670{Array}, buyNoMoreThanAmountBList: 𝓛[ty]8670{Array}, addressList: 𝓛[ty]8670{Array}, sList: 𝓛[ty]8670{Array}, vList: 𝓛[ty]8670{Array}, uintArgsList: 𝓛[ty]8670{Array}}
type 𝓟[ty]1971{OrderParams} = {s: 𝓛[ty]10051{String}, amountB: 𝓛[ty]2{<UNKNOWN>}, scaledAmountS: 𝓛[ty]8655{Number}, amountS: 𝓛[ty]2{<UNKNOWN>}, loopringProtocol: 𝓛[ty]10051{String}, fillAmountS: 𝓛[ty]8655{Number}, rateAmountB: 𝓛[ty]8655{Number}, validUntil: 𝓛[ty]2{<UNKNOWN>}, v: 𝓛[ty]8655{Number}, buyNoMoreThanAmountB: 𝓛[ty]8666{Boolean}, orderHashHex: 𝓛[ty]10051{String}, scaledAmountB: 𝓛[ty]8655{Number}, lrcFee: 𝓛[ty]2{<UNKNOWN>}, rateAmountS: 𝓛[ty]8655{Number}, marginSplitPercentage: 𝓛[ty]8655{Number}, tokenB: 𝓛[ty]10051{String}, tokenS: 𝓛[ty]10051{String}, r: 𝓛[ty]10051{String}, validSince: 𝓛[ty]2{<UNKNOWN>}}

Module: util/ring

function 𝓟343{CONSTRUCTOR} (𝓟344{owner}: 𝓛[ty]10051{String},𝓟345{orders}: (𝓛[ty]8666{Boolean} ≠ 𝓛[ty]8670{Array})): (𝓟[ty]349{Ring})
{
const 𝓟[ty]349{Ring};
const 𝓟[ty]349{Ring};
𝓟[ty]349{Ring}.owner𝓟344{owner};
𝓟[ty]349{Ring}.orders𝓟345{orders};
{
if (𝓟1{web3})
{
𝓟[ty]349{Ring}.web3Instance𝓟1{web3};
}
}
}
class 𝓟[ty]349{Ring}{
𝓟351{s}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
𝓟352{web3Instance}: [OOV]𝓛[ty]2{<UNKNOWN>};
𝓟353{v}: 𝓛[ty]8655{Number};
𝓟354{orders}: (𝓛[ty]8666{Boolean} ≠ 𝓛[ty]8670{Array});
𝓟355{owner}: (𝓛[ty]8666{Boolean} ≠ 𝓛[ty]10051{String});
𝓟356{r}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String});
function 𝓟378{getRingHashHex} (): (𝓟379: [miss]𝓛[ty]10051{String})
{
const 𝓟380{ringHash} = 𝓟[ty]349{Ring}.getRingHash();
const 𝓟381{ringHashHex}: [miss]𝓛[ty]10051{String} = 𝓟475{ethUtil}.bufferToHex(𝓟380{ringHash});
return 𝓟379 = 𝓟381{ringHashHex}
}
function 𝓟382{xorReduce} (𝓟383{numberArr}: 𝓛[ty]8670{Array}): (𝓟384: [miss]𝓛[ty]8655{Number})
{
const 𝓟385{n0}: [miss]𝓛[ty]8655{Number} = 𝓟383{numberArr}.access(𝓛8745{Number});
const 𝓟386{tail}: [miss]𝓛[ty]8670{Array} = 𝓟383{numberArr}.slice(𝓛8745{Number});
function 𝓟387{$Lambda0} (𝓟388{n1}: 𝓛[ty]8655{Number},𝓟389{n2}: 𝓛[ty]8655{Number}): (𝓟390: [miss]𝓛[ty]8655{Number})
{
return 𝓟390 = 𝓟388{n1}.CaretToken(𝓟389{n2})
}
const 𝓟391{intRes}: [miss]𝓛[ty]8655{Number} = 𝓟386{tail}.reduce(𝓟387{$Lambda0},𝓟385{n0});
return 𝓟384 = 𝓟391{intRes}
}
function 𝓟370{getRingHash} (): (𝓟371: [OOV]any)
{
const 𝓟372{size}: [miss]𝓛[ty]8655{Number} = 𝓟[ty]349{Ring}.orders.length;
const 𝓟373{vList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟374{rList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
const 𝓟375{sList}: 𝓛[ty]8670{Array} = 𝓛8757{Array}();
{
let 𝓟376{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟376{i}.FirstBinaryOperator(𝓟372{size}))
{
{
𝓟373{vList}.access(𝓟376{i})𝓟[ty]349{Ring}.orders.access(𝓟376{i}).params.v;
𝓟374{rList}.access(𝓟376{i})𝓟[ty]349{Ring}.orders.access(𝓟376{i}).params.r;
𝓟375{sList}.access(𝓟376{i})𝓟[ty]349{Ring}.orders.access(𝓟376{i}).params.s;
}
𝓛12546{POST_PlusPlusToken}(𝓟376{i})
}
}
const 𝓟377{ringHash} = 𝓛1{<UNKNOWN>}(𝓛8757{Array}(𝓟[ty]349{Ring}.xorReduce(𝓟373{vList}),𝓟[ty]349{Ring}.xorReduceStr(𝓟374{rList}),𝓟[ty]349{Ring}.xorReduceStr(𝓟375{sList})));
return 𝓟371 = 𝓟377{ringHash}
}
function 𝓟357{isValidSignature} (): (𝓟358: [miss]𝓛[ty]8666{Boolean})
{
if (𝓛1{<UNKNOWN>}(𝓟[ty]349{Ring}.v).BarBarToken(𝓛1{<UNKNOWN>}(𝓟[ty]349{Ring}.r)).BarBarToken(𝓛1{<UNKNOWN>}(𝓟[ty]349{Ring}.s)))
{
𝓛8749{Error}.CONSTRUCTOR(𝓛8743{String})
}
const 𝓟359{ringHash} = 𝓟[ty]349{Ring}.getRingHash();
const 𝓟360{msgHash} = 𝓟475{ethUtil}.hashPersonalMessage(𝓟359{ringHash});
{
const 𝓟361{pubKey} = 𝓟475{ethUtil}.ecrecover(𝓟360{msgHash},𝓟[ty]349{Ring}.v,𝓟475{ethUtil}.toBuffer(𝓟[ty]349{Ring}.r),𝓟475{ethUtil}.toBuffer(𝓟[ty]349{Ring}.s));
const 𝓟362{recoveredAddress}: [miss]𝓛[ty]10051{String} = 𝓟475{ethUtil}.bufferToHex(𝓟475{ethUtil}.pubToAddress(𝓟361{pubKey}));
return 𝓟358 = 𝓟362{recoveredAddress}.EqualsEqualsEqualsToken(𝓟[ty]349{Ring}.owner)
}
}
function 𝓟392{xorReduceStr} (𝓟393{strArr}: 𝓛[ty]8670{Array}): (𝓟394: [OOV]any)
{
const 𝓟395{s0}: [miss]𝓛[ty]10051{String} = 𝓟393{strArr}.access(𝓛8745{Number});
const 𝓟396{tail}: [miss]𝓛[ty]8670{Array} = 𝓟393{strArr}.slice(𝓛8745{Number});
function 𝓟397{$Lambda1} (𝓟398{s1}: (𝓛[ty]8655{Number} ≠ 𝓛[ty]10051{String}),𝓟399{s2}: 𝓛[ty]10051{String}): (𝓟400: [miss]𝓛[ty]10051{String})
{
const 𝓟401{buf1} = 𝓛10100{Buffer}.from(𝓟398{s1}.slice(𝓛8745{Number}),𝓛8743{String});
const 𝓟402{buf2} = 𝓛10100{Buffer}.from(𝓟399{s2}.slice(𝓛8745{Number}),𝓛8743{String});
const 𝓟403{res} = 𝓛10100{Buffer}.alloc(𝓛8745{Number});
{
let 𝓟404{i}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
while (𝓟404{i}.FirstBinaryOperator(𝓛8745{Number}))
{
{
𝓟403{res}.access(𝓟404{i})𝓟401{buf1}.access(𝓟404{i}).CaretToken(𝓟402{buf2}.access(𝓟404{i}));
}
𝓛12546{POST_PlusPlusToken}(𝓟404{i})
}
}
const 𝓟405{strRes}: [miss]𝓛[ty]10051{String} = 𝓟475{ethUtil}.bufferToHex(𝓟403{res});
return 𝓟400 = 𝓟405{strRes}
}
const 𝓟406{strXor}: [miss]𝓛[ty]8696{Function} = 𝓟397{$Lambda1};
function 𝓟407{$Lambda2} (𝓟408{a},𝓟409{b}): (𝓟410: [miss]𝓛[ty]10051{String})
{
return 𝓟410 = 𝓟406{strXor}(𝓟408{a},𝓟409{b})
}
const 𝓟411{reduceRes}: [miss]𝓛[ty]10051{String} = 𝓟396{tail}.reduce(𝓟407{$Lambda2},𝓟395{s0});
return 𝓟394 = 𝓛10100{Buffer}.from(𝓟411{reduceRes}.slice(𝓛8745{Number}),𝓛8743{String})
}
function 𝓟363{$Async_signAsync} (): (𝓟364: [miss]𝓛[ty]8654{Promise})
{
const 𝓟365{ringHash} = 𝓟[ty]349{Ring}.getRingHash();
const 𝓟366{signature} = 𝓛12547{$Await}(𝓟477{promisify}(𝓟[ty]349{Ring}.web3Instance.eth.sign)(𝓟[ty]349{Ring}.owner,𝓟475{ethUtil}.bufferToHex(𝓟365{ringHash})));
const 𝓟367{v}: [miss]𝓛[ty]8655{Number} = 𝓟475{ethUtil}.fromRpcSig(𝓟366{signature}).v;
const 𝓟368{r} = 𝓟475{ethUtil}.fromRpcSig(𝓟366{signature}).r;
const 𝓟369{s} = 𝓟475{ethUtil}.fromRpcSig(𝓟366{signature}).s;
𝓟[ty]349{Ring}.v𝓟367{v};
𝓟[ty]349{Ring}.r𝓟475{ethUtil}.bufferToHex(𝓟368{r});
𝓟[ty]349{Ring}.s𝓟475{ethUtil}.bufferToHex(𝓟369{s});
}
}

Module: util/bignumber_config

const 𝓟412{bigNumberConfigs}: [miss]𝓛[ty]8642{Object} = {};

Module: util/bn_util

type 𝓛[ty]0{ANY} = any
𝓟412{bigNumberConfigs}.configure()
const 𝓟414{BNUtil}: [miss]𝓛[ty]8642{Object} = {};

Module: util/submit_rings

let 𝓟415{Web3} = 𝓛10097{require}(𝓛8743{String});
const 𝓟416{web3} = 𝓟415{Web3}.CONSTRUCTOR(𝓟415{Web3}.providers.HttpProvider.CONSTRUCTOR(𝓛8743{String}));
const 𝓟417{abi}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟418{erc20ABI}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟419{ProtocolContract} = 𝓟416{web3}.eth.contract(𝓛8756{JSON}.parse(𝓟417{abi}));
const 𝓟420{Erc20Contract} = 𝓟416{web3}.eth.contract(𝓛8756{JSON}.parse(𝓟418{erc20ABI}));
const 𝓟421{mainnetLoopringAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟422{delegateAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟423{blockTimestamp}: [miss]𝓛[ty]8655{Number} = 𝓛8745{Number};
const 𝓟424{order1Owner}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟425{order2Owner}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟426{order3Owner}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟427{ringOwner}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟428{mainnetEosAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟429{mainnetZrxAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟430{mainnetBnbAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
const 𝓟431{mainnetLrcAddr}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
function 𝓟432{$Async_erc20Approve} (𝓟433{tokenAddr}: 𝓛[ty]10051{String},𝓟434{tokenOwner}: 𝓛[ty]10051{String},𝓟435{spender}: 𝓛[ty]10051{String},𝓟436{amount}: 𝓛[ty]8655{Number},𝓟437{decimals}: (𝓛[ty]10051{String} ≠ 𝓛[ty]8655{Number})): (𝓟438: [miss]𝓛[ty]8654{Promise})
{
const 𝓟439{erc20Token} = 𝓟420{Erc20Contract}.at(𝓟433{tokenAddr});
const 𝓟440{realAmount}: [miss]𝓛[ty]8655{Number} = 𝓟436{amount}.AsteriskToken(𝓛8746{Math}.pow(𝓛8745{Number},𝓟437{decimals}));
𝓛12547{$Await}(𝓟439{erc20Token}.approve(𝓟435{spender},𝓟440{realAmount},{from: 𝓟434{tokenOwner}}))
}
function 𝓟441{$Async_size2Ring01} (): (𝓟442: [miss]𝓛[ty]8654{Promise})
{
const 𝓟443{orderPrams1}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟421{mainnetLoopringAddr},validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟429{mainnetZrxAddr},tokenS: 𝓟428{mainnetEosAddr},validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟444{orderPrams2}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟421{mainnetLoopringAddr},validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟428{mainnetEosAddr},tokenS: 𝓟429{mainnetZrxAddr},validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟445{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟424{order1Owner},𝓟443{orderPrams1});
const 𝓟446{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟425{order2Owner},𝓟444{orderPrams2});
𝓟445{order1}.web3Instance𝓟416{web3};
𝓟446{order2}.web3Instance𝓟416{web3};
𝓛12547{$Await}(𝓟445{order1}.signAsync())
𝓛12547{$Await}(𝓟446{order2}.signAsync())
const 𝓟447{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟427{ringOwner},𝓛8757{Array}(𝓟445{order1},𝓟446{order2}));
𝓟447{ring}.web3Instance𝓟416{web3};
𝓛12547{$Await}(𝓟447{ring}.signAsync())
return 𝓟442 = 𝓟447{ring}
}
function 𝓟448{$Async_size3Ring01} (): (𝓟449: [miss]𝓛[ty]8654{Promise})
{
const 𝓟450{orderPrams1}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟421{mainnetLoopringAddr},validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟429{mainnetZrxAddr},tokenS: 𝓟428{mainnetEosAddr},validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟451{orderPrams2}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟421{mainnetLoopringAddr},validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟430{mainnetBnbAddr},tokenS: 𝓟429{mainnetZrxAddr},validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟452{orderPrams3}: [miss]𝓛[ty]8642{Object} = {amountB: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),amountS: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),loopringProtocol: 𝓟421{mainnetLoopringAddr},validUntil: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.PlusToken(𝓛8745{Number}).AsteriskToken(𝓛8745{Number})),buyNoMoreThanAmountB: 𝓛8744{Boolean},lrcFee: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛8745{Number}),marginSplitPercentage: 𝓛8745{Number},tokenB: 𝓟428{mainnetEosAddr},tokenS: 𝓟430{mainnetBnbAddr},validSince: 𝓟472{BigNumber}.CONSTRUCTOR(𝓛12545{this}.currBlockTimeStamp.AsteriskToken(𝓛8745{Number}))};
const 𝓟453{order1}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟424{order1Owner},𝓟450{orderPrams1});
const 𝓟454{order2}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟425{order2Owner},𝓟451{orderPrams2});
const 𝓟455{order3}: [OOV]𝓟[ty]315{Order} = 𝓟309{CONSTRUCTOR}(𝓟426{order3Owner},𝓟452{orderPrams3});
𝓟453{order1}.web3Instance𝓟416{web3};
𝓟454{order2}.web3Instance𝓟416{web3};
𝓟455{order3}.web3Instance𝓟416{web3};
𝓛12547{$Await}(𝓟453{order1}.signAsync())
𝓛12547{$Await}(𝓟454{order2}.signAsync())
𝓛12547{$Await}(𝓟455{order3}.signAsync())
const 𝓟456{ring}: [OOV]𝓟[ty]349{Ring} = 𝓟343{CONSTRUCTOR}(𝓟427{ringOwner},𝓛8757{Array}(𝓟453{order1},𝓟454{order2},𝓟455{order3}));
𝓟456{ring}.web3Instance𝓟416{web3};
𝓛12547{$Await}(𝓟456{ring}.signAsync())
return 𝓟449 = 𝓟456{ring}
}
function 𝓟457{$Async_submit} (𝓟458{p}: [OOV]𝓟[ty]1968{LoopringSubmitParams}): (𝓟459: [miss]𝓛[ty]8654{Promise})
{
const 𝓟460{contractInstance} = 𝓟419{ProtocolContract}.at(𝓟421{mainnetLoopringAddr});
const 𝓟461{tx} = 𝓛12547{$Await}(𝓟460{contractInstance}.submitRing(𝓟458{p}.addressList,𝓟458{p}.uintArgsList,𝓟458{p}.uint8ArgsList,𝓟458{p}.buyNoMoreThanAmountBList,𝓟458{p}.vList,𝓟458{p}.rList,𝓟458{p}.sList,𝓟458{p}.ringOwner,𝓟458{p}.feeRecepient,{from: 𝓟458{p}.ringOwner,gas: 𝓛8745{Number},gasPrice: 𝓛8745{Number}}));
𝓛1{<UNKNOWN>}(𝓛8743{String},𝓟461{tx})
}
function 𝓟462{$Async_approve} (): (𝓟463: [miss]𝓛[ty]8654{Promise})
{
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟428{mainnetEosAddr},𝓟424{order1Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟429{mainnetZrxAddr},𝓟425{order2Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟430{mainnetBnbAddr},𝓟426{order3Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟431{mainnetLrcAddr},𝓟424{order1Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟431{mainnetLrcAddr},𝓟425{order2Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟431{mainnetLrcAddr},𝓟426{order3Owner},𝓟422{delegateAddr},𝓛8745{Number},𝓛8745{Number}))
}
function 𝓟464{$Async_main} (): (𝓟465: [miss]𝓛[ty]8654{Promise})
{
const 𝓟466{ring}: [OOV]𝓟[ty]349{Ring} = 𝓛12547{$Await}(𝓛1{<UNKNOWN>}());
const 𝓟467{feeSelectionList}: [miss]𝓛[ty]8670{Array} = 𝓛8757{Array}(𝓛8745{Number},𝓛8745{Number},𝓛8745{Number});
const 𝓟468{ringFactory}: [OOV]𝓟[ty]188{RingFactory} = 𝓟178{CONSTRUCTOR}(𝓛8743{String},𝓛8743{String},𝓛8743{String},𝓛8743{String},𝓛8743{String},𝓛8745{Number});
const 𝓟469{params}: [miss]𝓛[ty]8642{Object} = 𝓟468{ringFactory}.ringToSubmitableParams(𝓟466{ring},𝓟467{feeSelectionList},𝓟466{ring}.owner);
const 𝓟470{json}: [miss]𝓛[ty]10051{String} = 𝓛8756{JSON}.stringify(𝓟469{params});
const 𝓟471{outFile}: [miss]𝓛[ty]10051{String} = 𝓛8743{String};
𝓛7919{writeFileSync}(𝓟471{outFile},𝓟470{json})
𝓛12547{$Await}(𝓛1{<UNKNOWN>}(𝓟469{params}))
}
𝓛1{<UNKNOWN>}()