aiia-vault-sdk 1.1.28 → 1.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TradingVault.d.ts +29 -0
- package/dist/TradingVault.js +1 -1
- package/dist/abis/TradingVault.json +46 -2
- package/dist/contracts/TradingVault.d.ts +31 -4
- package/dist/contracts.json +2 -1
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
package/dist/TradingVault.d.ts
CHANGED
@@ -48,6 +48,35 @@ export declare class TradingVaultSDK {
|
|
48
48
|
buildBorrowCurrencyTx(amount: number): Promise<ethers.ContractTransaction>;
|
49
49
|
buildRepayCurrencyTx(amount: number): Promise<ethers.ContractTransaction>;
|
50
50
|
buildSetPriceTx(newPrice: number): Promise<ethers.ContractTransaction>;
|
51
|
+
/**
|
52
|
+
* Builds a transaction to batch emit price updated events
|
53
|
+
*
|
54
|
+
* @param priceDataArray - Array of price data objects with price and timestamp
|
55
|
+
* @returns Populated transaction
|
56
|
+
*
|
57
|
+
* @example
|
58
|
+
* ```typescript
|
59
|
+
* const priceData = [
|
60
|
+
* { price: 110, timestamp: Math.floor(Date.now() / 1000) },
|
61
|
+
* { price: 120, timestamp: Math.floor(Date.now() / 1000) + 60 }
|
62
|
+
* ];
|
63
|
+
* const tx = await sdk.buildBatchEmitPriceUpdatedTx(priceData);
|
64
|
+
* ```
|
65
|
+
*/
|
66
|
+
buildBatchEmitPriceUpdatedTx(priceDataArray: Array<{
|
67
|
+
price: number;
|
68
|
+
timestamp: number;
|
69
|
+
}>): Promise<ethers.ContractTransaction>;
|
70
|
+
/**
|
71
|
+
* Builds a raw transaction to batch emit price updated events
|
72
|
+
*
|
73
|
+
* @param priceDataArray - Array of price data objects with price and timestamp as bigint
|
74
|
+
* @returns Populated transaction
|
75
|
+
*/
|
76
|
+
buildBatchEmitPriceUpdatedTxRaw(priceDataArray: Array<{
|
77
|
+
price: bigint;
|
78
|
+
timestamp: bigint;
|
79
|
+
}>): Promise<ethers.ContractTransaction>;
|
51
80
|
buildClaimERC20Tx(token: string, amount: number): Promise<ethers.ContractTransaction>;
|
52
81
|
buildCreatePositionTxRaw(amount: bigint, recipient: string): Promise<ethers.ContractTransaction>;
|
53
82
|
buildReducePositionTxRaw(tokenId: bigint, amount: bigint): Promise<ethers.ContractTransaction>;
|
package/dist/TradingVault.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TradingVaultSDK=void 0;const e=require("ethers"),r=t(require("./abis/TradingVault.json")),a=t(require("./contracts.json")),n=require("./utils");exports.TradingVaultSDK=class{constructor(t,o){this.name="TradingVault",this._currency=null,this._rewardToken=null,this._currencyDecimals=null,this._rewardTokenDecimals=null,this.priceDecimals=6,this.isBootstrapped=!1,this.configs=[],this.BASE_WEIGHT=1e4,this.BASE_PRICE=100,this.formatEventArgs=t=>{const e=this._currencyDecimals,r=this._rewardTokenDecimals,{eventName:a,args:n}=t;switch(a){case"PositionCreated":return{...t,args:{...n,user:n.user.toLowerCase(),amount:Number(n.amount)/Math.pow(10,e),entryPrice:Number(n.entryPrice)/Math.pow(10,this.priceDecimals),tokenId:Number(n.tokenId),openedAt:Number(n.openedAt)}};case"PositionReduced":return{...t,args:{...n,user:n.user.toLowerCase(),reducedAmount:Number(n.reducedAmount)/Math.pow(10,e),remainingAmount:Number(n.remainingAmount)/Math.pow(10,e),totalReward:Number(n.totalReward)/Math.pow(10,r),userReward:Number(n.userReward)/Math.pow(10,r),treasuryReward:Number(n.treasuryReward)/Math.pow(10,r),rewardedAmount:Number(n.rewardedAmount)/Math.pow(10,r),weight:Number(n.weight),tokenId:Number(n.tokenId),lossAmount:Number(n.lossAmount)/Math.pow(10,e),price:Number(n.price)/Math.pow(10,this.priceDecimals),loss:Number(n.loss)/Math.pow(10,e)}};case"CurrencyBorrowed":case"CurrencyRepaid":return{...t,args:{...n,amount:Number(n.amount)/Math.pow(10,e),borrower:n.borrower.toLowerCase()}};case"PriceUpdated":return{...t,args:{...n,oldPrice:Number(n.oldPrice)/Math.pow(10,this.priceDecimals),newPrice:Number(n.newPrice)/Math.pow(10,this.priceDecimals),requiredReward:Number(n.requiredReward)/Math.pow(10,r)}};case"TotalAmountUpdated":return{...t,args:{...n,newTotalAmount:Number(n.newTotalAmount)/Math.pow(10,e)}};case"CurrencyUpdated":return{...t,args:{...n,oldCurrency:n.oldCurrency.toLowerCase(),newCurrency:n.newCurrency.toLowerCase()}};case"RewardTokenUpdated":return{...t,args:{...n,oldRewardToken:n.oldRewardToken.toLowerCase(),newRewardToken:n.newRewardToken.toLowerCase()}};case"ReduceEnabledUpdated":return{...t,args:{...n,enabled:n.enabled}};case"TreasuryUpdated":return{...t,args:{...n,oldTreasury:n.oldTreasury.toLowerCase(),newTreasury:n.newTreasury.toLowerCase()}};case"RewardConfigsUpdated":return{...t,args:{...n}};case"TotalRewardsUpdated":case"TotalRewardsHarvestedUpdated":return{...t,args:{...n,oldAmount:Number(n.oldAmount)/Math.pow(10,r),newAmount:Number(n.newAmount)/Math.pow(10,r)}};default:return t}};const i=Array.isArray(t)?t:[t];this.providers=i.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(i[0],this.name,a.default,o),this.contract=new e.ethers.Contract(this.contractAddress,r.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,r)=>t[r])),0===this.providers.length)throw new Error("No active RPC providers available");await Promise.all([this.getCurrencyDecimals(),this.getRewardTokenDecimals(),(async()=>{const t=await this.getRewardConfigsLength(),e=[];for(let r=0;r<t;r++)e.push(this.getRewardConfig(r));const r=await Promise.all(e);this.configs=r.map((t=>({weight:Number(t.weight)/this.BASE_WEIGHT,duration:Number(t.duration)})))})()]),this.isBootstrapped=!0}async signAndSendTransaction(t,e,r={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),r)}async buildCreatePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(t*Math.pow(10,r)));return this.buildCreatePositionTxRaw(a,e)}async buildReducePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(e*Math.pow(10,r)));return this.buildReducePositionTxRaw(t,a)}async buildReducePositionsTx(t,e){const r=await this.getCurrencyDecimals(),a=e.map((t=>BigInt(Math.floor(t*Math.pow(10,r)))));return this.buildReducePositionsTxRaw(t,a)}async buildBorrowCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildBorrowCurrencyTxRaw(r)}async buildRepayCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildRepayCurrencyTxRaw(r)}async buildSetPriceTx(t){const e=this.priceDecimals,r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildSetPriceTxRaw(r)}async buildClaimERC20Tx(t,r){const a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await a.decimals(),o=BigInt(Math.floor(r*Math.pow(10,n)));return this.buildClaimERC20TxRaw(t,o)}async buildCreatePositionTxRaw(t,e){return await this.contract.createPosition.populateTransaction(t,e)}async buildReducePositionTxRaw(t,e){return await this.contract.reducePosition.populateTransaction(t,e)}async buildReducePositionsTxRaw(t,e){return await this.contract.reducePositions.populateTransaction(t,e)}async buildBorrowCurrencyTxRaw(t){return await this.contract.borrowCurrency.populateTransaction(t)}async buildRepayCurrencyTxRaw(t){return await this.contract.repayCurrency.populateTransaction(t)}async buildSetPriceTxRaw(t){return await this.contract.setPrice.populateTransaction(t)}async buildSetCurrencyTxRaw(t){this._currency=null;return await this.contract.setCurrency.populateTransaction(t)}async buildSetRewardTokenTxRaw(t){this._rewardToken=null;return await this.contract.setRewardToken.populateTransaction(t)}async buildSetTreasuryTxRaw(t){return await this.contract.setTreasury.populateTransaction(t)}async buildUpdateRewardConfigsTxRaw(t){return await this.contract.updateRewardConfigs.populateTransaction(t)}async buildSetReduceEnabledTxRaw(t){return await this.contract.setReduceEnabled.populateTransaction(t)}async buildClaimERC20TxRaw(t,e){return await this.contract.claimERC20.populateTransaction(t,e)}async buildApproveERC20Tx(t,r,a){const n=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),o=await n.decimals(),i=BigInt(Math.floor(a*Math.pow(10,Number(o))));return this.buildApproveERC20TxRaw(t,r,i)}async buildApproveERC20TxRaw(t,e,r){return await(0,n.buildApproveERC20Tx)(t,e,r,this.getRandomProvider())}async getAllowanceRaw(t,e,r){return await(0,n.getTokenAllowance)(t,e,r,this.getRandomProvider())}async getAllowance(t,e,r){const[a,o]=await Promise.all([this.getAllowanceRaw(t,e,r),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(a)/Math.pow(10,o)}async buildGrantOperatorRoleTxRaw(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getPriceSetterRoleHash(){return await this.contract.PRICE_SETTER_ROLE()}async hasPriceSetterRole(t){const e=await this.contract.PRICE_SETTER_ROLE();return await this.contract.hasRole(e,t)}async buildGrantPriceSetterRoleTx(t){return await this.contract.grantPriceSetterRole.populateTransaction(t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getPrice(){const t=await this.getPriceRaw(),e=this.priceDecimals;return Number(t)/Math.pow(10,e)}async getPriceRaw(){return await this.contract.price()}async getCurrency(){return this._currency||(this._currency=await this.contract.currency()),this._currency}async getRewardToken(){return this._rewardToken||(this._rewardToken=await this.contract.rewardToken()),this._rewardToken}async getTreasury(){return await this.contract.treasury()}async getTotalAmount(){const t=await this.getTotalAmountRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalAmountRaw(){return await this.contract.totalAmount()}async getTotalBorrowed(){const t=await this.getTotalBorrowedRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalBorrowedRaw(){return await this.contract.totalBorrowed()}async isReduceEnabled(){return await this.contract.isReduceEnabled()}async getPosition(t){const e=await this.getPositionRaw(t),r=await this.getCurrencyDecimals(),a=await this.getRewardTokenDecimals(),n=this.priceDecimals;return{remainingAmount:Number(e.remainingAmount)/Math.pow(10,r),entryPrice:Number(e.entryPrice)/Math.pow(10,n),outPrice:Number(e.outPrice)/Math.pow(10,n),openedAt:Number(e.openedAt),closedAt:Number(e.closedAt),rewardedAmount:Number(e.rewardedAmount)/Math.pow(10,a),lossAmount:Number(e.lossAmount)/Math.pow(10,r),initAmount:Number(e.initAmount)/Math.pow(10,r)}}async getPositionRaw(t){return await this.contract.positions(t)}async getRewardConfig(t){return await this.contract.rewardConfigs(t)}async getRewardConfigsLength(){return await this.contract.getRewardConfigsLength()}async getCurrencyDecimals(){if(null===this._currencyDecimals){const t=await this.getCurrency(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._currencyDecimals=Number(await r.decimals())}return this._currencyDecimals}async getRewardTokenDecimals(){if(null===this._rewardTokenDecimals){const t=await this.getRewardToken(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._rewardTokenDecimals=Number(await r.decimals())}return this._rewardTokenDecimals}getContractAddress(){return this.contractAddress}getConfigs(){return[...this.configs]}async getAllEvents(t,e,r){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,r)}async streamEvents(t,e,r,a=1e3,o=5e3){const i=["CurrencyBorrowed","CurrencyRepaid","CurrencyUpdated","PositionCreated","PositionReduced","PriceUpdated","ReduceEnabledUpdated","RewardConfigsUpdated","RewardTokenUpdated","TotalAmountUpdated","TotalRewardsHarvestedUpdated","TotalRewardsUpdated","Transfer","TreasuryUpdated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,i),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:r,fromBlock:t,batchSize:a,sleepTime:o})}estimateUnrealizedPnl({price:t,entryPrice:e,initAmount:r,remainingAmount:a}){const n=a*(t-e)/this.BASE_PRICE;return{pnl:n,pnlPercentage:n/r*100}}estReducePosition({amount:t,price:e,entryPrice:r,openedAt:a,configs:n=[]}){const o=this.BASE_PRICE;this.BASE_WEIGHT;let i=t,s=0,c=0,u=0,d=0;if(e<r){return i=t-t*(r-e)/100,{amount:i,totalReward:0,userReward:0,treasuryReward:0,weight:0}}if(e>=r){s=t*(e-r)/o;const i=Math.floor(Date.now()/1e3)-a;d=this.getRewardWeight(i,n),c=s*d,u=s-c}return{amount:i,totalReward:s,userReward:c,treasuryReward:u,weight:d}}estReducePositions({positions:t,price:e,configs:r=[]}){return t.map((t=>this.estReducePosition({amount:t.amount,price:e,entryPrice:t.entryPrice,openedAt:t.openedAt,configs:r}))).reduce(((t,e)=>({amount:t.amount+e.amount,totalReward:t.totalReward+e.totalReward,userReward:t.userReward+e.userReward,treasuryReward:t.treasuryReward+e.treasuryReward})),{amount:0,totalReward:0,userReward:0,treasuryReward:0})}getRewardWeight(t,e){return(0,n.getRewardWeight)(t,e)}estimateUnrealizedPnls({price:t,positions:e}){return e.reduce(((e,r)=>{const{pnl:a}=this.estimateUnrealizedPnl({price:t,...r});return{totalInitAmount:e.totalInitAmount+r.initAmount,totalRemainingAmount:e.totalRemainingAmount+r.remainingAmount,totalRewardedAmount:e.totalRewardedAmount+r.rewardedAmount,totalLossAmount:e.totalLossAmount+r.lossAmount,totalPnl:e.totalPnl+a}}),{totalInitAmount:0,totalRemainingAmount:0,totalRewardedAmount:0,totalLossAmount:0,totalPnl:0})}async buildAddReward(t){const e=await this.getRewardTokenDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildAddRewardTxRaw(r)}async buildAddRewardTxRaw(t){return await this.contract.addReward.populateTransaction(t)}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.TradingVaultSDK=void 0;const e=require("ethers"),r=t(require("./abis/TradingVault.json")),a=t(require("./contracts.json")),n=require("./utils");exports.TradingVaultSDK=class{constructor(t,i){this.name="TradingVault",this._currency=null,this._rewardToken=null,this._currencyDecimals=null,this._rewardTokenDecimals=null,this.priceDecimals=6,this.isBootstrapped=!1,this.configs=[],this.BASE_WEIGHT=1e4,this.BASE_PRICE=100,this.formatEventArgs=t=>{const e=this._currencyDecimals,r=this._rewardTokenDecimals,{eventName:a,args:n}=t;switch(a){case"PositionCreated":return{...t,args:{...n,user:n.user.toLowerCase(),amount:Number(n.amount)/Math.pow(10,e),entryPrice:Number(n.entryPrice)/Math.pow(10,this.priceDecimals),tokenId:Number(n.tokenId),openedAt:Number(n.openedAt)}};case"PositionReduced":return{...t,args:{...n,user:n.user.toLowerCase(),reducedAmount:Number(n.reducedAmount)/Math.pow(10,e),remainingAmount:Number(n.remainingAmount)/Math.pow(10,e),totalReward:Number(n.totalReward)/Math.pow(10,r),userReward:Number(n.userReward)/Math.pow(10,r),treasuryReward:Number(n.treasuryReward)/Math.pow(10,r),rewardedAmount:Number(n.rewardedAmount)/Math.pow(10,r),weight:Number(n.weight),tokenId:Number(n.tokenId),lossAmount:Number(n.lossAmount)/Math.pow(10,e),price:Number(n.price)/Math.pow(10,this.priceDecimals),loss:Number(n.loss)/Math.pow(10,e)}};case"CurrencyBorrowed":case"CurrencyRepaid":return{...t,args:{...n,amount:Number(n.amount)/Math.pow(10,e),borrower:n.borrower.toLowerCase()}};case"PriceUpdated":return{...t,args:{...n,oldPrice:Number(n.oldPrice)/Math.pow(10,this.priceDecimals),newPrice:Number(n.newPrice)/Math.pow(10,this.priceDecimals),requiredReward:Number(n.requiredReward)/Math.pow(10,r),timestamp:Number(n.timestamp)}};case"TotalAmountUpdated":return{...t,args:{...n,newTotalAmount:Number(n.newTotalAmount)/Math.pow(10,e)}};case"CurrencyUpdated":return{...t,args:{...n,oldCurrency:n.oldCurrency.toLowerCase(),newCurrency:n.newCurrency.toLowerCase()}};case"RewardTokenUpdated":return{...t,args:{...n,oldRewardToken:n.oldRewardToken.toLowerCase(),newRewardToken:n.newRewardToken.toLowerCase()}};case"ReduceEnabledUpdated":return{...t,args:{...n,enabled:n.enabled}};case"TreasuryUpdated":return{...t,args:{...n,oldTreasury:n.oldTreasury.toLowerCase(),newTreasury:n.newTreasury.toLowerCase()}};case"RewardConfigsUpdated":return{...t,args:{...n}};case"TotalRewardsUpdated":case"TotalRewardsHarvestedUpdated":return{...t,args:{...n,oldAmount:Number(n.oldAmount)/Math.pow(10,r),newAmount:Number(n.newAmount)/Math.pow(10,r)}};default:return t}};const o=Array.isArray(t)?t:[t];this.providers=o.map((t=>new e.ethers.JsonRpcProvider(t)));const s=(0,n.getRandomProvider)(this.providers);this.contractAddress=(0,n.resolveContractAddress)(o[0],this.name,a.default,i),this.contract=new e.ethers.Contract(this.contractAddress,r.default.abi,s)}getRandomProvider(){return(0,n.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,r.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,n.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,r)=>t[r])),0===this.providers.length)throw new Error("No active RPC providers available");await Promise.all([this.getCurrencyDecimals(),this.getRewardTokenDecimals(),(async()=>{const t=await this.getRewardConfigsLength(),e=[];for(let r=0;r<t;r++)e.push(this.getRewardConfig(r));const r=await Promise.all(e);this.configs=r.map((t=>({weight:Number(t.weight)/this.BASE_WEIGHT,duration:Number(t.duration)})))})()]),this.isBootstrapped=!0}async signAndSendTransaction(t,e,r={}){return(0,n.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),r,this.contract)}async buildCreatePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(t*Math.pow(10,r)));return this.buildCreatePositionTxRaw(a,e)}async buildReducePositionTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(e*Math.pow(10,r)));return this.buildReducePositionTxRaw(t,a)}async buildReducePositionsTx(t,e){const r=await this.getCurrencyDecimals(),a=e.map((t=>BigInt(Math.floor(t*Math.pow(10,r)))));return this.buildReducePositionsTxRaw(t,a)}async buildBorrowCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildBorrowCurrencyTxRaw(r)}async buildRepayCurrencyTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildRepayCurrencyTxRaw(r)}async buildSetPriceTx(t){const e=BigInt(Math.round(t*Math.pow(10,this.priceDecimals)));return await this.buildSetPriceTxRaw(e)}async buildBatchEmitPriceUpdatedTx(t){const e=t.map((t=>({price:BigInt(Math.round(t.price*Math.pow(10,this.priceDecimals))),timestamp:BigInt(t.timestamp)})));return await this.buildBatchEmitPriceUpdatedTxRaw(e)}async buildBatchEmitPriceUpdatedTxRaw(t){return await this.contract.batchEmitPriceUpdated.populateTransaction(t)}async buildClaimERC20Tx(t,r){const a=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),n=await a.decimals(),i=BigInt(Math.floor(r*Math.pow(10,n)));return this.buildClaimERC20TxRaw(t,i)}async buildCreatePositionTxRaw(t,e){return await this.contract.createPosition.populateTransaction(t,e)}async buildReducePositionTxRaw(t,e){return await this.contract.reducePosition.populateTransaction(t,e)}async buildReducePositionsTxRaw(t,e){return await this.contract.reducePositions.populateTransaction(t,e)}async buildBorrowCurrencyTxRaw(t){return await this.contract.borrowCurrency.populateTransaction(t)}async buildRepayCurrencyTxRaw(t){return await this.contract.repayCurrency.populateTransaction(t)}async buildSetPriceTxRaw(t){return await this.contract.setPrice.populateTransaction(t)}async buildSetCurrencyTxRaw(t){this._currency=null;return await this.contract.setCurrency.populateTransaction(t)}async buildSetRewardTokenTxRaw(t){this._rewardToken=null;return await this.contract.setRewardToken.populateTransaction(t)}async buildSetTreasuryTxRaw(t){return await this.contract.setTreasury.populateTransaction(t)}async buildUpdateRewardConfigsTxRaw(t){return await this.contract.updateRewardConfigs.populateTransaction(t)}async buildSetReduceEnabledTxRaw(t){return await this.contract.setReduceEnabled.populateTransaction(t)}async buildClaimERC20TxRaw(t,e){return await this.contract.claimERC20.populateTransaction(t,e)}async buildApproveERC20Tx(t,r,a){const n=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider()),i=await n.decimals(),o=BigInt(Math.floor(a*Math.pow(10,Number(i))));return this.buildApproveERC20TxRaw(t,r,o)}async buildApproveERC20TxRaw(t,e,r){return await(0,n.buildApproveERC20Tx)(t,e,r,this.getRandomProvider())}async getAllowanceRaw(t,e,r){return await(0,n.getTokenAllowance)(t,e,r,this.getRandomProvider())}async getAllowance(t,e,r){const[a,i]=await Promise.all([this.getAllowanceRaw(t,e,r),(0,n.getTokenDecimals)(t,this.getRandomProvider())]);return Number(a)/Math.pow(10,i)}async buildGrantOperatorRoleTxRaw(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getOperatorRoleHash(){return await this.contract.OPERATOR_ROLE()}async hasOperatorRole(t){const e=await this.contract.OPERATOR_ROLE();return await this.contract.hasRole(e,t)}async buildGrantOperatorRoleTx(t){return await this.contract.grantOperatorRole.populateTransaction(t)}async getPriceSetterRoleHash(){return await this.contract.PRICE_SETTER_ROLE()}async hasPriceSetterRole(t){const e=await this.contract.PRICE_SETTER_ROLE();return await this.contract.hasRole(e,t)}async buildGrantPriceSetterRoleTx(t){return await this.contract.grantPriceSetterRole.populateTransaction(t)}async getAdminRoleHash(){return await this.contract.DEFAULT_ADMIN_ROLE()}async hasAdminRole(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.hasRole(e,t)}async buildGrantAdminRoleTx(t){const e=await this.contract.DEFAULT_ADMIN_ROLE();return await this.contract.grantRole.populateTransaction(e,t)}async getPrice(){const t=await this.getPriceRaw(),e=this.priceDecimals;return Number(t)/Math.pow(10,e)}async getPriceRaw(){return await this.contract.price()}async getCurrency(){return this._currency||(this._currency=await this.contract.currency()),this._currency}async getRewardToken(){return this._rewardToken||(this._rewardToken=await this.contract.rewardToken()),this._rewardToken}async getTreasury(){return await this.contract.treasury()}async getTotalAmount(){const t=await this.getTotalAmountRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalAmountRaw(){return await this.contract.totalAmount()}async getTotalBorrowed(){const t=await this.getTotalBorrowedRaw(),e=await this.getCurrencyDecimals();return Number(t)/Math.pow(10,e)}async getTotalBorrowedRaw(){return await this.contract.totalBorrowed()}async isReduceEnabled(){return await this.contract.isReduceEnabled()}async getPosition(t){const e=await this.getPositionRaw(t),r=await this.getCurrencyDecimals(),a=await this.getRewardTokenDecimals(),n=this.priceDecimals;return{remainingAmount:Number(e.remainingAmount)/Math.pow(10,r),entryPrice:Number(e.entryPrice)/Math.pow(10,n),outPrice:Number(e.outPrice)/Math.pow(10,n),openedAt:Number(e.openedAt),closedAt:Number(e.closedAt),rewardedAmount:Number(e.rewardedAmount)/Math.pow(10,a),lossAmount:Number(e.lossAmount)/Math.pow(10,r),initAmount:Number(e.initAmount)/Math.pow(10,r)}}async getPositionRaw(t){return await this.contract.positions(t)}async getRewardConfig(t){return await this.contract.rewardConfigs(t)}async getRewardConfigsLength(){return await this.contract.getRewardConfigsLength()}async getCurrencyDecimals(){if(null===this._currencyDecimals){const t=await this.getCurrency(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._currencyDecimals=Number(await r.decimals())}return this._currencyDecimals}async getRewardTokenDecimals(){if(null===this._rewardTokenDecimals){const t=await this.getRewardToken(),r=new e.ethers.Contract(t,["function decimals() view returns (uint8)"],this.getRandomProvider());this._rewardTokenDecimals=Number(await r.decimals())}return this._rewardTokenDecimals}getContractAddress(){return this.contractAddress}getConfigs(){return[...this.configs]}async getAllEvents(t,e,r){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e,r)}async streamEvents(t,e,r,a=1e3,i=5e3){const o=["CurrencyBorrowed","CurrencyRepaid","CurrencyUpdated","PositionCreated","PositionReduced","PriceUpdated","ReduceEnabledUpdated","RewardConfigsUpdated","RewardTokenUpdated","TotalAmountUpdated","TotalRewardsHarvestedUpdated","TotalRewardsUpdated","Transfer","TreasuryUpdated"];return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e,o),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:r,fromBlock:t,batchSize:a,sleepTime:i})}estimateUnrealizedPnl({price:t,entryPrice:e,initAmount:r,remainingAmount:a}){const n=a*(t-e)/this.BASE_PRICE;return{pnl:n,pnlPercentage:n/r*100}}estReducePosition({amount:t,price:e,entryPrice:r,openedAt:a,configs:n=[]}){const i=this.BASE_PRICE;this.BASE_WEIGHT;let o=t,s=0,c=0,u=0,d=0;if(e<r){return o=t-t*(r-e)/100,{amount:o,totalReward:0,userReward:0,treasuryReward:0,weight:0}}if(e>=r){s=t*(e-r)/i;const o=Math.floor(Date.now()/1e3)-a;d=this.getRewardWeight(o,n),c=s*d,u=s-c}return{amount:o,totalReward:s,userReward:c,treasuryReward:u,weight:d}}estReducePositions({positions:t,price:e,configs:r=[]}){return t.map((t=>this.estReducePosition({amount:t.amount,price:e,entryPrice:t.entryPrice,openedAt:t.openedAt,configs:r}))).reduce(((t,e)=>({amount:t.amount+e.amount,totalReward:t.totalReward+e.totalReward,userReward:t.userReward+e.userReward,treasuryReward:t.treasuryReward+e.treasuryReward})),{amount:0,totalReward:0,userReward:0,treasuryReward:0})}getRewardWeight(t,e){return(0,n.getRewardWeight)(t,e)}estimateUnrealizedPnls({price:t,positions:e}){return e.reduce(((e,r)=>{const{pnl:a}=this.estimateUnrealizedPnl({price:t,...r});return{totalInitAmount:e.totalInitAmount+r.initAmount,totalRemainingAmount:e.totalRemainingAmount+r.remainingAmount,totalRewardedAmount:e.totalRewardedAmount+r.rewardedAmount,totalLossAmount:e.totalLossAmount+r.lossAmount,totalPnl:e.totalPnl+a}}),{totalInitAmount:0,totalRemainingAmount:0,totalRewardedAmount:0,totalLossAmount:0,totalPnl:0})}async buildAddReward(t){const e=await this.getRewardTokenDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildAddRewardTxRaw(r)}async buildAddRewardTxRaw(t){return await this.contract.addReward.populateTransaction(t)}};
|
@@ -531,6 +531,12 @@
|
|
531
531
|
"internalType": "uint256",
|
532
532
|
"name": "requiredReward",
|
533
533
|
"type": "uint256"
|
534
|
+
},
|
535
|
+
{
|
536
|
+
"indexed": false,
|
537
|
+
"internalType": "uint256",
|
538
|
+
"name": "timestamp",
|
539
|
+
"type": "uint256"
|
534
540
|
}
|
535
541
|
],
|
536
542
|
"name": "PriceUpdated",
|
@@ -783,6 +789,19 @@
|
|
783
789
|
"stateMutability": "view",
|
784
790
|
"type": "function"
|
785
791
|
},
|
792
|
+
{
|
793
|
+
"inputs": [],
|
794
|
+
"name": "MAX_BATCH_SIZE",
|
795
|
+
"outputs": [
|
796
|
+
{
|
797
|
+
"internalType": "uint256",
|
798
|
+
"name": "",
|
799
|
+
"type": "uint256"
|
800
|
+
}
|
801
|
+
],
|
802
|
+
"stateMutability": "view",
|
803
|
+
"type": "function"
|
804
|
+
},
|
786
805
|
{
|
787
806
|
"inputs": [],
|
788
807
|
"name": "OPERATOR_ROLE",
|
@@ -872,6 +891,31 @@
|
|
872
891
|
"stateMutability": "view",
|
873
892
|
"type": "function"
|
874
893
|
},
|
894
|
+
{
|
895
|
+
"inputs": [
|
896
|
+
{
|
897
|
+
"components": [
|
898
|
+
{
|
899
|
+
"internalType": "uint256",
|
900
|
+
"name": "price",
|
901
|
+
"type": "uint256"
|
902
|
+
},
|
903
|
+
{
|
904
|
+
"internalType": "uint256",
|
905
|
+
"name": "timestamp",
|
906
|
+
"type": "uint256"
|
907
|
+
}
|
908
|
+
],
|
909
|
+
"internalType": "struct TradingVault.PriceData[]",
|
910
|
+
"name": "_priceDataArray",
|
911
|
+
"type": "tuple[]"
|
912
|
+
}
|
913
|
+
],
|
914
|
+
"name": "batchEmitPriceUpdated",
|
915
|
+
"outputs": [],
|
916
|
+
"stateMutability": "nonpayable",
|
917
|
+
"type": "function"
|
918
|
+
},
|
875
919
|
{
|
876
920
|
"inputs": [
|
877
921
|
{
|
@@ -1682,8 +1726,8 @@
|
|
1682
1726
|
"type": "function"
|
1683
1727
|
}
|
1684
1728
|
],
|
1685
|
-
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161351d90816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461218e5750806306fdde03146120df578063081812fc146120b6578063095ea7b314611fbc5780630d8317e114611f9e5780630ead771214611f7b5780631a39d8ef14611f5d57806323b872dd14611f45578063248a9ca314611f1e57806327ac0c5814611ef45780632f2ff15d14611ec25780632f84c39114611e2857806336568abe14611de357806342842e0e14611db95780634c19386c14611d9b578063537b1ec714611ba157806358f6786914611b3d57806361d027b314611b145780636352211e14611ae35780636eac61dd14611ac557806370a0823114611a73578063715018a614611a0957806374de4ec41461194457806375a0b6dd1461189657806387c13943146118755780638aee8127146117db5780638da5cb5b146117a557806391b7f5ed146116db57806391d148541461168557806395d89b411461158857806399fbab88146114fc578063a035b1fe146114df578063a0d8d78c146113ab578063a217fddf1461138f578063a22cb465146112f4578063b35fb5421461120f578063b88d4fde14611182578063c1eb68e414610e6b578063c87b56dd14610e0f578063d547741f14610dd8578063d797fe2214610cd9578063da29b26514610c9a578063e16fd0ec14610c7d578063e5a6b10f14610c54578063e985e9c514610c05578063eae86f0b14610be7578063f00acbaa14610bbe578063f0f4426014610b22578063f2fde38b14610af5578063f36de22514610ad7578063f5b541a614610a9c578063f6a48fac14610a6e578063f7c618c114610a45578063f8c8765e1461044a5763fbc14dda1461027e57600080fd5b34610447576020366003190112610447576004356001600160401b0381116104455736602382011215610445578060040135906001600160401b038211610441576024810190602436918460061b010111610441576102db612954565b603d5483603d55806103b3575b508290815b83831061031c57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061032a848685612886565b35116103a457602061033d848685612886565b013511156103955761037c610353838584612886565b356020610361858786612886565b01356040519161037083612315565b82526020820152612811565b6001602061038b848685612886565b01359201916102ed565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361042d57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061041b57506102e8565b8085600292558560018201550161040e565b634e487b7160e01b84526011600452602484fd5b8280fd5b505b80fd5b503461044757608036600319011261044757610464612256565b61046c61226c565b6044356001600160a01b03811690819003610a4057606435906001600160a01b038216808303610a4057600080516020613488833981519152549360ff8560401c1615946001600160401b03811680159081610a38575b6001149081610a2e575b159081610a25575b50610a165767ffffffffffffffff19811660011760008051602061348883398151915255856109e9575b50604095865161050f8882612346565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061053e8983612346565b6002825261056560f41b6020830152610555613399565b61055d613399565b8051906001600160401b0382116109d55781906105886000805160206133e8833981519152546123b7565b601f8111610953575b50602090601f83116001146108c8578c926108bd575b50508160011b916000199060031b1c1916176000805160206133e8833981519152555b8051906001600160401b0382116108a95781906105f56000805160206134a8833981519152546123b7565b601f811161082e575b50602090601f83116001146107af578b926107a4575b50508160011b916000199060031b1c1916176000805160206134a8833981519152555b61063f613399565b610647613399565b6106508561279b565b610658613399565b6001600160a01b0316908115610795576001600160a01b0316918215610786578315610777571561076857906106c89392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b6003541617600355612b7c565b506106d233612a10565b506106dc33612ad2565b506106fa82516106eb81612315565b60648152846020820152612811565b600160ff19600754161760075561070f575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206134888339815191525416600080516020613488833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610614565b6000805160206134a88339815191528c52818c209250601f1984168c5b81811061081657509084600195949392106107fd575b505050811b016000805160206134a883398151915255610637565b015160001960f88460031b161c191690553880806107e2565b929360206001819287860151815501950193016107cc565b6000805160206134a88339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c8101916020851061089f575b90601f859493920160051c01905b81811061089157506105fe565b8c8155849350600101610884565b9091508190610876565b634e487b7160e01b8a52604160045260248afd5b0151905038806105a7565b6000805160206133e88339815191528d526000805160206134c88339815191529250601f1984168d5b81811061093b5750908460019594939210610922575b505050811b016000805160206133e8833981519152556105ca565b015160001960f88460031b161c19169055388080610907565b929360206001819287860151815501950193016108f1565b9091506000805160206133e88339815191528c52601f830160051c6000805160206134c88339815191520190602084106109bf575b90601f8493920160051c6000805160206134c883398151915201905b8181106109b15750610591565b8d81558493506001016109a4565b6000805160206134c88339815191529150610988565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061348883398151915255386104ff565b63f92ee8a960e01b8852600488fd5b905015386104d5565b303b1591506104cd565b8791506104c3565b600080fd5b50346104475780600319360112610447576002546040516001600160a01b039091168152602090f35b503461044757602036600319011261044757610a98610a8b612256565b610a93612901565b612ad2565b5080f35b503461044757806003193601126104475760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104475780600319360112610447576020603d54604051908152f35b503461044757602036600319011261044757610b1f610b12612256565b610b1a6130a5565b61279b565b80f35b503461044757602036600319011261044757610b3c612256565b610b446130a5565b6001600160a01b0381168015610baf57600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461044757806003193601126104475760206040516000805160206134088339815191528152f35b50346104475780600319360112610447576020600854604051908152f35b503461044757604036600319011261044757610c1f612256565b610c30610c2a61226c565b9161260e565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104475780600319360112610447576001546040516001600160a01b039091168152602090f35b503461044757806003193601126104475760206040516127108152f35b50346104475760203660031901126104475760043590603d54821015610447576040610cc583612382565b506001815491015482519182526020820152f35b5034610447576020366003190112610447576004358015610dc9576006548111610dba576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610daf57610d82575b50610d508160065461278e565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610da39060203d602011610da8575b610d9b8183612346565b8101906125bd565b610d43565b503d610d91565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461044757604036600319011261044757610a98600435610df861226c565b90610e0a610e058261257f565b6129c6565b612cad565b503461044757602036600319011261044757610e2c600435612896565b5080604051610e3c602082612346565b5250610e67604051610e4f602082612346565b60008152604051918291602083526020830190612215565b0390f35b503461044757604036600319011261044757600435610e8861226c565b8115611173576001600160a01b03811661116e5750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af1801561116357611146575b5060045491600019831461042d5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761113257906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020610ff8836005546125b0565b80600555604051908152a16001600160a01b03821691821561111e5761101d846130db565b6001600160a01b038116801515928691869161103d90866110ff576125d5565b805460010190558289526000805160206134688339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a4506110eb57907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61110885613103565b611111866125d5565b80546000190190556125d5565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b61115e9060203d602011610da857610d9b8183612346565b610ee5565b6040513d86823e3d90fd5b610e9f565b631f2a200560e01b8352600483fd5b50346104475760803660031901126104475761119c612256565b6111a461226c565b90606435906001600160401b03821161120b573660238301121561120b57816004013592846111d285612367565b936111e06040519586612346565b85855236602487830101116104455785610b1f96602460209301838801378501015260443591612647565b8380fd5b503461044757604036600319011261044757611229612256565b6024356112346130a5565b6001546001600160a01b039283169216821480156112e0575b6112d15780156111735760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112c65782916112a7575b50156112985780f35b63360e42e160e01b8152600490fd5b6112c0915060203d602011610da857610d9b8183612346565b3861128f565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b0316821461124d565b50346104475760403660031901126104475761130e612256565b60243590811515809203610441576001600160a01b031690811561137b576113353361260e565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b5034610447578060031936011261044757602090604051908152f35b5034610447576020366003190112610447576004356113c86130a5565b8015610dc9576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111635784916114ad575b50821161149e5760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610daf57611481575b5061144f816006546125b0565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114999060203d602011610da857610d9b8183612346565b611442565b631e9acf1760e31b8352600483fd5b90506020813d6020116114d7575b816114c860209383612346565b8101031261120b575138611407565b3d91506114bb565b503461044757806003193601126104475760209054604051908152f35b5034610447576020366003190112610447576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b503461044757806003193601126104475760405190806000805160206134a883398151915254906115b8826123b7565b808552916001811690811561165e57506001146115f4575b610e67846115e081860382612346565b604051918291602083526020830190612215565b6000805160206134a883398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210611644575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161162b565b60ff191660208087019190915292151560051b850190920192506115e091508390506115d0565b50346104475760403660031901126104475760ff60406020926116a661226c565b600435825260008051602061344883398151915285528282206001600160a01b03909116825284522054604051911615158152f35b5034610447576020366003190112610447576000805160206134088339815191528152600080516020613448833981519152602090815260408083203384529091528120546004359060ff16156117805780156117715760607f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc48918354908085556040519182526020820152836040820152a180f35b634dfba02360e01b8252600482fd5b63e2517d3f60e01b825233600452600080516020613408833981519152602452604482fd5b5034610447578060031936011261044757600080516020613428833981519152546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576117f5612256565b6117fd612954565b6001600160a01b038116801561186657600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610ba9565b636a27e5f160e01b8352600483fd5b50346104475780600319360112610447575060206305f5e100604051908152f35b50346104475760403660031901126104475760043560ff6007541615611935578082918252603c6020526118dd60018060a01b036008604085200154169160243590612d4d565b806118e6575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112c65761191d575080f35b610a989060203d602011610da857610d9b8183612346565b6333962fd760e01b8252600482fd5b5034610447576020366003190112610447576004358015610dc9576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610daf577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119ec575b506119da60085491826125b0565b8060085582519182526020820152a180f35b611a049060203d602011610da857610d9b8183612346565b6119cc565b5034610447578060031936011261044757611a226130a5565b60008051602061342883398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461044757602036600319011261044757611a8d612256565b906001600160a01b03821615611ab1576020611aa8836125d5565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104475780600319360112610447576020600954604051908152f35b5034610447576020366003190112610447576020611b02600435612896565b6040516001600160a01b039091168152f35b50346104475780600319360112610447576003546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576004358015158091036104455760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b886130a5565b60ff196007541660ff821617600755604051908152a180f35b5034610447576040366003190112610447576004356001600160401b03811161044557611bd29036906004016122bc565b91906024356001600160401b03811161044157611bf39036906004016122bc565b9060ff6007541615611d8c57818503611d47578415611d135782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c425786808787806118e6575050f35b90919293611c518589856125a0565b358752603c60205260408720600801546001600160a01b0316869003611ca857611c9e600191611c98611c85888c886125a0565b35611c9189878a6125a0565b3590612d4d565b906125b0565b9401929190611c2e565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104475780600319360112610447576020600654604051908152f35b503461044757610b1f611dcb36612282565b9060405192611ddb602085612346565b858452612647565b503461044757604036600319011261044757611dfd61226c565b336001600160a01b03821603611e1957610a9890600435612cad565b63334bd91960e11b8252600482fd5b503461044757602036600319011261044757611e42612256565b611e4a612954565b6001600160a01b0381168015611eb357600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610ba9565b63c2cf440960e01b8352600483fd5b503461044757604036600319011261044757610a98600435611ee261226c565b90611eef610e058261257f565b612c16565b503461044757602036600319011261044757610a98611f11612256565b611f19612901565b612a10565b5034610447576020366003190112610447576020611f3d60043561257f565b604051908152f35b503461044757610b1f611f5736612282565b916123f1565b50346104475780600319360112610447576020600554604051908152f35b5034610447578060031936011261044757602060ff600754166040519015158152f35b50346104475780600319360112610447576020604051620f42408152f35b503461044757604036600319011261044757611fd6612256565b602435611fe281612896565b331515806120a3575b80612085575b6120725781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061208f8161260e565b338552602052604084205460ff1615611ff1565b506001600160a01b038116331415611feb565b5034610447576020366003190112610447576020611b026004356120d981612896565b506128c7565b503461044757806003193601126104475760405190806000805160206133e8833981519152549061210f826123b7565b808552916001811690811561165e575060011461213657610e67846115e081860382612346565b6000805160206133e883398151915281526000805160206134c8833981519152939250905b808210612174575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161215b565b9050346104455760203660031901126104455760043563ffffffff60e01b81168091036104415760209250637965db0b60e01b81149081156121d2575b5015158152f35b6380ac58cd60e01b811491508115612204575b81156121f3575b50386121cb565b6301ffc9a760e01b149050386121ec565b635b5e139f60e01b811491506121e5565b919082519283825260005b848110612241575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612220565b600435906001600160a01b0382168203610a4057565b602435906001600160a01b0382168203610a4057565b6060906003190112610a40576004356001600160a01b0381168103610a4057906024356001600160a01b0381168103610a40579060443590565b9181601f84011215610a40578235916001600160401b038311610a40576020808501948460051b010111610a4057565b818102929181159184041417156122ff57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761233057604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761233057604052565b6001600160401b03811161233057601f01601f191660200190565b603d548110156123a157603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156123e7575b60208310146123d157565b634e487b7160e01b600052602260045260246000fd5b91607f16916123c6565b909291906001600160a01b038416801561256957600094612411846130db565b95331515806124d0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61245c97989460018060a01b038616988993846124be576125d5565b805460010190558481526000805160206134688339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036124a457505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6124c787613103565b611111886125d5565b80612519575b156124e1573861241b565b84906001600160a01b03881661250357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b0387163314801561254c575b806124d65750336001600160a01b03612545876128c7565b16146124d6565b506125568761260e565b338252602052604081205460ff1661252d565b633250574960e11b600052600060045260246000fd5b60005260008051602061344883398151915260205260016040600020015490565b91908110156123a15760051b0190565b919082018092116122ff57565b90816020910312610a4057518015158103610a405790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b92916126548183866123f1565b813b612661575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906126ac906084830190612215565b03816000865af1809160009161274b575b509061271657503d1561270f573d6126d481612367565b906126e26040519283612346565b81523d6000602083013e5b8051908161270a5782633250574960e11b60005260045260246000fd5b602001fd5b60606126ed565b6001600160e01b03191663757a42ff60e11b0161273757503880808061265b565b633250574960e11b60005260045260246000fd5b6020813d602011612786575b8161276460209383612346565b810103126104455751906001600160e01b0319821682036104475750386126bd565b3d9150612757565b919082039182116122ff57565b6001600160a01b031680156127fb5760008051602061342883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d54680100000000000000008110156123305760018101603d556000603d5482101561287257603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b91908110156123a15760061b0190565b61289f816130db565b906001600160a01b038216156128b3575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561293a57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561298d57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206134488339815191526020908152604080832033845290915290205460ff16156129f85750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612acc576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206133c88339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612acc576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff19166001179055339190600080516020613408833981519152906000805160206133c88339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612acc576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206133c88339815191528180a4600190565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff16612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206133c88339815191529080a4600190565b5050600090565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612d5681612896565b6001600160a01b031633141580613080575b61306f5780600052603c60205260056040600020015461305e5780600052603c602052604060002091801561304d5760028301928354821161303c57612dae8284613141565b9692909193859760009485548354808210612ff7575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612df58a60055461278e565b80600555604051908152a1878154808214600014612f5657505060009042600585015581546001850155556000612e2b896130db565b6001600160a01b0381168015928b918415612f37575b8282526000805160206134688339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a450612f2257600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b612f4083613103565b612f49846125d5565b8054600019019055612e41565b90612f6591989692959861278e565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b613010929b509061300a9197939761278e565b886122ec565b6305f5e10091500493613034856007840161302c8282546125b0565b90558861278e565b983880612dc4565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061308a81612896565b50336001600160a01b0361309d836128c7565b161415612d68565b600080516020613428833981519152546001600160a01b031633036130c657565b63118cdaa760e01b6000523360045260246000fd5b600090815260008051602061346883398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613387576131719261316b9161278e565b906122ec565b6305f5e10090049081156133775761318d60048201544261278e565b92603d5460009460005b828110613342575050506127106131ae85856122ec565b049260066131bc858361278e565b93016131c98282546125b0565b9055600954846132dc575b831515806132c8575b613227575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de291613212846009546125b0565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af19081156132bc577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261329d575b509150506131e2565b6132b59060203d602011610da857610d9b8183612346565b5038613294565b6040513d6000823e3d90fd5b506003546001600160a01b031615156131dd565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af180156132bc57613323575b506131d4565b61333b9060203d602011610da857610d9b8183612346565b503861331d565b600161334d82612382565b500154821015613360575b600101613197565b9550600161336d87612382565b5054969050613358565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206134888339815191525460401c16156133b657565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930004824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a26469706673582212206651b62c7104ddc5968b4dd53f603781644a0dfb06fbc362786ca642161fa62b64736f6c634300081c0033",
|
1686
|
-
"deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461218e5750806306fdde03146120df578063081812fc146120b6578063095ea7b314611fbc5780630d8317e114611f9e5780630ead771214611f7b5780631a39d8ef14611f5d57806323b872dd14611f45578063248a9ca314611f1e57806327ac0c5814611ef45780632f2ff15d14611ec25780632f84c39114611e2857806336568abe14611de357806342842e0e14611db95780634c19386c14611d9b578063537b1ec714611ba157806358f6786914611b3d57806361d027b314611b145780636352211e14611ae35780636eac61dd14611ac557806370a0823114611a73578063715018a614611a0957806374de4ec41461194457806375a0b6dd1461189657806387c13943146118755780638aee8127146117db5780638da5cb5b146117a557806391b7f5ed146116db57806391d148541461168557806395d89b411461158857806399fbab88146114fc578063a035b1fe146114df578063a0d8d78c146113ab578063a217fddf1461138f578063a22cb465146112f4578063b35fb5421461120f578063b88d4fde14611182578063c1eb68e414610e6b578063c87b56dd14610e0f578063d547741f14610dd8578063d797fe2214610cd9578063da29b26514610c9a578063e16fd0ec14610c7d578063e5a6b10f14610c54578063e985e9c514610c05578063eae86f0b14610be7578063f00acbaa14610bbe578063f0f4426014610b22578063f2fde38b14610af5578063f36de22514610ad7578063f5b541a614610a9c578063f6a48fac14610a6e578063f7c618c114610a45578063f8c8765e1461044a5763fbc14dda1461027e57600080fd5b34610447576020366003190112610447576004356001600160401b0381116104455736602382011215610445578060040135906001600160401b038211610441576024810190602436918460061b010111610441576102db612954565b603d5483603d55806103b3575b508290815b83831061031c57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061032a848685612886565b35116103a457602061033d848685612886565b013511156103955761037c610353838584612886565b356020610361858786612886565b01356040519161037083612315565b82526020820152612811565b6001602061038b848685612886565b01359201916102ed565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361042d57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061041b57506102e8565b8085600292558560018201550161040e565b634e487b7160e01b84526011600452602484fd5b8280fd5b505b80fd5b503461044757608036600319011261044757610464612256565b61046c61226c565b6044356001600160a01b03811690819003610a4057606435906001600160a01b038216808303610a4057600080516020613488833981519152549360ff8560401c1615946001600160401b03811680159081610a38575b6001149081610a2e575b159081610a25575b50610a165767ffffffffffffffff19811660011760008051602061348883398151915255856109e9575b50604095865161050f8882612346565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061053e8983612346565b6002825261056560f41b6020830152610555613399565b61055d613399565b8051906001600160401b0382116109d55781906105886000805160206133e8833981519152546123b7565b601f8111610953575b50602090601f83116001146108c8578c926108bd575b50508160011b916000199060031b1c1916176000805160206133e8833981519152555b8051906001600160401b0382116108a95781906105f56000805160206134a8833981519152546123b7565b601f811161082e575b50602090601f83116001146107af578b926107a4575b50508160011b916000199060031b1c1916176000805160206134a8833981519152555b61063f613399565b610647613399565b6106508561279b565b610658613399565b6001600160a01b0316908115610795576001600160a01b0316918215610786578315610777571561076857906106c89392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b6003541617600355612b7c565b506106d233612a10565b506106dc33612ad2565b506106fa82516106eb81612315565b60648152846020820152612811565b600160ff19600754161760075561070f575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206134888339815191525416600080516020613488833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610614565b6000805160206134a88339815191528c52818c209250601f1984168c5b81811061081657509084600195949392106107fd575b505050811b016000805160206134a883398151915255610637565b015160001960f88460031b161c191690553880806107e2565b929360206001819287860151815501950193016107cc565b6000805160206134a88339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c8101916020851061089f575b90601f859493920160051c01905b81811061089157506105fe565b8c8155849350600101610884565b9091508190610876565b634e487b7160e01b8a52604160045260248afd5b0151905038806105a7565b6000805160206133e88339815191528d526000805160206134c88339815191529250601f1984168d5b81811061093b5750908460019594939210610922575b505050811b016000805160206133e8833981519152556105ca565b015160001960f88460031b161c19169055388080610907565b929360206001819287860151815501950193016108f1565b9091506000805160206133e88339815191528c52601f830160051c6000805160206134c88339815191520190602084106109bf575b90601f8493920160051c6000805160206134c883398151915201905b8181106109b15750610591565b8d81558493506001016109a4565b6000805160206134c88339815191529150610988565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061348883398151915255386104ff565b63f92ee8a960e01b8852600488fd5b905015386104d5565b303b1591506104cd565b8791506104c3565b600080fd5b50346104475780600319360112610447576002546040516001600160a01b039091168152602090f35b503461044757602036600319011261044757610a98610a8b612256565b610a93612901565b612ad2565b5080f35b503461044757806003193601126104475760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104475780600319360112610447576020603d54604051908152f35b503461044757602036600319011261044757610b1f610b12612256565b610b1a6130a5565b61279b565b80f35b503461044757602036600319011261044757610b3c612256565b610b446130a5565b6001600160a01b0381168015610baf57600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461044757806003193601126104475760206040516000805160206134088339815191528152f35b50346104475780600319360112610447576020600854604051908152f35b503461044757604036600319011261044757610c1f612256565b610c30610c2a61226c565b9161260e565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104475780600319360112610447576001546040516001600160a01b039091168152602090f35b503461044757806003193601126104475760206040516127108152f35b50346104475760203660031901126104475760043590603d54821015610447576040610cc583612382565b506001815491015482519182526020820152f35b5034610447576020366003190112610447576004358015610dc9576006548111610dba576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610daf57610d82575b50610d508160065461278e565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610da39060203d602011610da8575b610d9b8183612346565b8101906125bd565b610d43565b503d610d91565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461044757604036600319011261044757610a98600435610df861226c565b90610e0a610e058261257f565b6129c6565b612cad565b503461044757602036600319011261044757610e2c600435612896565b5080604051610e3c602082612346565b5250610e67604051610e4f602082612346565b60008152604051918291602083526020830190612215565b0390f35b503461044757604036600319011261044757600435610e8861226c565b8115611173576001600160a01b03811661116e5750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af1801561116357611146575b5060045491600019831461042d5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761113257906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020610ff8836005546125b0565b80600555604051908152a16001600160a01b03821691821561111e5761101d846130db565b6001600160a01b038116801515928691869161103d90866110ff576125d5565b805460010190558289526000805160206134688339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a4506110eb57907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61110885613103565b611111866125d5565b80546000190190556125d5565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b61115e9060203d602011610da857610d9b8183612346565b610ee5565b6040513d86823e3d90fd5b610e9f565b631f2a200560e01b8352600483fd5b50346104475760803660031901126104475761119c612256565b6111a461226c565b90606435906001600160401b03821161120b573660238301121561120b57816004013592846111d285612367565b936111e06040519586612346565b85855236602487830101116104455785610b1f96602460209301838801378501015260443591612647565b8380fd5b503461044757604036600319011261044757611229612256565b6024356112346130a5565b6001546001600160a01b039283169216821480156112e0575b6112d15780156111735760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112c65782916112a7575b50156112985780f35b63360e42e160e01b8152600490fd5b6112c0915060203d602011610da857610d9b8183612346565b3861128f565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b0316821461124d565b50346104475760403660031901126104475761130e612256565b60243590811515809203610441576001600160a01b031690811561137b576113353361260e565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b5034610447578060031936011261044757602090604051908152f35b5034610447576020366003190112610447576004356113c86130a5565b8015610dc9576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111635784916114ad575b50821161149e5760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610daf57611481575b5061144f816006546125b0565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114999060203d602011610da857610d9b8183612346565b611442565b631e9acf1760e31b8352600483fd5b90506020813d6020116114d7575b816114c860209383612346565b8101031261120b575138611407565b3d91506114bb565b503461044757806003193601126104475760209054604051908152f35b5034610447576020366003190112610447576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b503461044757806003193601126104475760405190806000805160206134a883398151915254906115b8826123b7565b808552916001811690811561165e57506001146115f4575b610e67846115e081860382612346565b604051918291602083526020830190612215565b6000805160206134a883398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210611644575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161162b565b60ff191660208087019190915292151560051b850190920192506115e091508390506115d0565b50346104475760403660031901126104475760ff60406020926116a661226c565b600435825260008051602061344883398151915285528282206001600160a01b03909116825284522054604051911615158152f35b5034610447576020366003190112610447576000805160206134088339815191528152600080516020613448833981519152602090815260408083203384529091528120546004359060ff16156117805780156117715760607f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc48918354908085556040519182526020820152836040820152a180f35b634dfba02360e01b8252600482fd5b63e2517d3f60e01b825233600452600080516020613408833981519152602452604482fd5b5034610447578060031936011261044757600080516020613428833981519152546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576117f5612256565b6117fd612954565b6001600160a01b038116801561186657600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610ba9565b636a27e5f160e01b8352600483fd5b50346104475780600319360112610447575060206305f5e100604051908152f35b50346104475760403660031901126104475760043560ff6007541615611935578082918252603c6020526118dd60018060a01b036008604085200154169160243590612d4d565b806118e6575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112c65761191d575080f35b610a989060203d602011610da857610d9b8183612346565b6333962fd760e01b8252600482fd5b5034610447576020366003190112610447576004358015610dc9576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610daf577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119ec575b506119da60085491826125b0565b8060085582519182526020820152a180f35b611a049060203d602011610da857610d9b8183612346565b6119cc565b5034610447578060031936011261044757611a226130a5565b60008051602061342883398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461044757602036600319011261044757611a8d612256565b906001600160a01b03821615611ab1576020611aa8836125d5565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104475780600319360112610447576020600954604051908152f35b5034610447576020366003190112610447576020611b02600435612896565b6040516001600160a01b039091168152f35b50346104475780600319360112610447576003546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576004358015158091036104455760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b886130a5565b60ff196007541660ff821617600755604051908152a180f35b5034610447576040366003190112610447576004356001600160401b03811161044557611bd29036906004016122bc565b91906024356001600160401b03811161044157611bf39036906004016122bc565b9060ff6007541615611d8c57818503611d47578415611d135782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c425786808787806118e6575050f35b90919293611c518589856125a0565b358752603c60205260408720600801546001600160a01b0316869003611ca857611c9e600191611c98611c85888c886125a0565b35611c9189878a6125a0565b3590612d4d565b906125b0565b9401929190611c2e565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104475780600319360112610447576020600654604051908152f35b503461044757610b1f611dcb36612282565b9060405192611ddb602085612346565b858452612647565b503461044757604036600319011261044757611dfd61226c565b336001600160a01b03821603611e1957610a9890600435612cad565b63334bd91960e11b8252600482fd5b503461044757602036600319011261044757611e42612256565b611e4a612954565b6001600160a01b0381168015611eb357600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610ba9565b63c2cf440960e01b8352600483fd5b503461044757604036600319011261044757610a98600435611ee261226c565b90611eef610e058261257f565b612c16565b503461044757602036600319011261044757610a98611f11612256565b611f19612901565b612a10565b5034610447576020366003190112610447576020611f3d60043561257f565b604051908152f35b503461044757610b1f611f5736612282565b916123f1565b50346104475780600319360112610447576020600554604051908152f35b5034610447578060031936011261044757602060ff600754166040519015158152f35b50346104475780600319360112610447576020604051620f42408152f35b503461044757604036600319011261044757611fd6612256565b602435611fe281612896565b331515806120a3575b80612085575b6120725781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061208f8161260e565b338552602052604084205460ff1615611ff1565b506001600160a01b038116331415611feb565b5034610447576020366003190112610447576020611b026004356120d981612896565b506128c7565b503461044757806003193601126104475760405190806000805160206133e8833981519152549061210f826123b7565b808552916001811690811561165e575060011461213657610e67846115e081860382612346565b6000805160206133e883398151915281526000805160206134c8833981519152939250905b808210612174575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161215b565b9050346104455760203660031901126104455760043563ffffffff60e01b81168091036104415760209250637965db0b60e01b81149081156121d2575b5015158152f35b6380ac58cd60e01b811491508115612204575b81156121f3575b50386121cb565b6301ffc9a760e01b149050386121ec565b635b5e139f60e01b811491506121e5565b919082519283825260005b848110612241575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612220565b600435906001600160a01b0382168203610a4057565b602435906001600160a01b0382168203610a4057565b6060906003190112610a40576004356001600160a01b0381168103610a4057906024356001600160a01b0381168103610a40579060443590565b9181601f84011215610a40578235916001600160401b038311610a40576020808501948460051b010111610a4057565b818102929181159184041417156122ff57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761233057604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761233057604052565b6001600160401b03811161233057601f01601f191660200190565b603d548110156123a157603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156123e7575b60208310146123d157565b634e487b7160e01b600052602260045260246000fd5b91607f16916123c6565b909291906001600160a01b038416801561256957600094612411846130db565b95331515806124d0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61245c97989460018060a01b038616988993846124be576125d5565b805460010190558481526000805160206134688339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036124a457505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6124c787613103565b611111886125d5565b80612519575b156124e1573861241b565b84906001600160a01b03881661250357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b0387163314801561254c575b806124d65750336001600160a01b03612545876128c7565b16146124d6565b506125568761260e565b338252602052604081205460ff1661252d565b633250574960e11b600052600060045260246000fd5b60005260008051602061344883398151915260205260016040600020015490565b91908110156123a15760051b0190565b919082018092116122ff57565b90816020910312610a4057518015158103610a405790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b92916126548183866123f1565b813b612661575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906126ac906084830190612215565b03816000865af1809160009161274b575b509061271657503d1561270f573d6126d481612367565b906126e26040519283612346565b81523d6000602083013e5b8051908161270a5782633250574960e11b60005260045260246000fd5b602001fd5b60606126ed565b6001600160e01b03191663757a42ff60e11b0161273757503880808061265b565b633250574960e11b60005260045260246000fd5b6020813d602011612786575b8161276460209383612346565b810103126104455751906001600160e01b0319821682036104475750386126bd565b3d9150612757565b919082039182116122ff57565b6001600160a01b031680156127fb5760008051602061342883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d54680100000000000000008110156123305760018101603d556000603d5482101561287257603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b91908110156123a15760061b0190565b61289f816130db565b906001600160a01b038216156128b3575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561293a57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561298d57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206134488339815191526020908152604080832033845290915290205460ff16156129f85750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612acc576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206133c88339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612acc576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff19166001179055339190600080516020613408833981519152906000805160206133c88339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612acc576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206133c88339815191528180a4600190565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff16612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206133c88339815191529080a4600190565b5050600090565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612d5681612896565b6001600160a01b031633141580613080575b61306f5780600052603c60205260056040600020015461305e5780600052603c602052604060002091801561304d5760028301928354821161303c57612dae8284613141565b9692909193859760009485548354808210612ff7575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612df58a60055461278e565b80600555604051908152a1878154808214600014612f5657505060009042600585015581546001850155556000612e2b896130db565b6001600160a01b0381168015928b918415612f37575b8282526000805160206134688339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a450612f2257600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b612f4083613103565b612f49846125d5565b8054600019019055612e41565b90612f6591989692959861278e565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b613010929b509061300a9197939761278e565b886122ec565b6305f5e10091500493613034856007840161302c8282546125b0565b90558861278e565b983880612dc4565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061308a81612896565b50336001600160a01b0361309d836128c7565b161415612d68565b600080516020613428833981519152546001600160a01b031633036130c657565b63118cdaa760e01b6000523360045260246000fd5b600090815260008051602061346883398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613387576131719261316b9161278e565b906122ec565b6305f5e10090049081156133775761318d60048201544261278e565b92603d5460009460005b828110613342575050506127106131ae85856122ec565b049260066131bc858361278e565b93016131c98282546125b0565b9055600954846132dc575b831515806132c8575b613227575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de291613212846009546125b0565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af19081156132bc577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261329d575b509150506131e2565b6132b59060203d602011610da857610d9b8183612346565b5038613294565b6040513d6000823e3d90fd5b506003546001600160a01b031615156131dd565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af180156132bc57613323575b506131d4565b61333b9060203d602011610da857610d9b8183612346565b503861331d565b600161334d82612382565b500154821015613360575b600101613197565b9550600161336d87612382565b5054969050613358565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206134888339815191525460401c16156133b657565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930004824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a26469706673582212206651b62c7104ddc5968b4dd53f603781644a0dfb06fbc362786ca642161fa62b64736f6c634300081c0033",
|
1729
|
+
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b6040516136ae90816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461228b5750806306fdde03146121dc578063081812fc146121b3578063095ea7b3146120b95780630d8317e11461209b5780630ead7712146120785780631a39d8ef1461205a57806323b872dd14612042578063248a9ca31461201b57806327ac0c5814611ff15780632f2ff15d14611fbf5780632f84c39114611f2557806336568abe14611ee057806342842e0e14611eb65780634796ed0414611d8f5780634c19386c14611d71578063537b1ec714611b7757806358f6786914611b1357806361d027b314611aea5780636352211e14611ab95780636eac61dd14611a9b57806370a0823114611a49578063715018a6146119df57806374de4ec41461191a57806375a0b6dd1461186c57806387c139431461184b5780638aee8127146117b15780638da5cb5b1461177b57806391b7f5ed1461170457806391d14854146116ae57806395d89b41146115b157806399fbab8814611525578063a035b1fe14611508578063a0d8d78c146113d4578063a217fddf146113b8578063a22cb46514611319578063b35fb54214611234578063b88d4fde146111a7578063c1eb68e414610e90578063c87b56dd14610e34578063cfdbf25414610e17578063d547741f14610de0578063d797fe2214610ce1578063da29b26514610ca2578063e16fd0ec14610c85578063e5a6b10f14610c5c578063e985e9c514610c0d578063eae86f0b14610bef578063f00acbaa14610bb4578063f0f4426014610b18578063f2fde38b14610aeb578063f36de22514610acd578063f5b541a614610a92578063f6a48fac14610a64578063f7c618c114610a3b578063f8c8765e146104385763fbc14dda1461029457600080fd5b34610435576020366003190112610435576004356001600160401b038111610433576102c49036906004016123b9565b906102cd612a81565b603d5483603d55806103a5575b508290815b83831061030e57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061031c8486856126cd565b351161039657602061032f8486856126cd565b013511156103875761036e6103458385846126cd565b3560206103538587866126cd565b01356040519161036283612442565b8252602082015261294e565b6001602061037d8486856126cd565b01359201916102df565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361041f57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061040d57506102da565b80856002925585600182015501610400565b634e487b7160e01b84526011600452602484fd5b505b80fd5b503461043557608036600319011261043557610452612353565b61045a612369565b6044356001600160a01b03811690819003610a3657606435906001600160a01b038216808303610a3657600080516020613619833981519152549360ff8560401c1615946001600160401b03811680159081610a2e575b6001149081610a24575b159081610a1b575b50610a0c5767ffffffffffffffff19811660011760008051602061361983398151915255856109df575b5060409586516104fd8882612473565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061052c8983612473565b6002825261056560f41b602083015261054361354a565b61054b61354a565b8051906001600160401b0382116109cb578190610576600080516020613599833981519152546124e4565b601f8111610949575b50602090601f83116001146108be578c926108b3575b50508160011b916000199060031b1c191617600080516020613599833981519152555b8051906001600160401b03821161089f5781906105e3600080516020613639833981519152546124e4565b601f8111610824575b50602090601f83116001146107a5578b9261079a575b50508160011b916000199060031b1c191617600080516020613639833981519152555b61062d61354a565b61063561354a565b61063e856128d8565b61064661354a565b6001600160a01b031690811561078b576001600160a01b031691821561077c57831561076d571561075e57906106bd9392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b60035416176003556305f5e1008555612d2d565b506106c733612baf565b506106d133612c71565b506106f082516106e081612442565b612710815284602082015261294e565b600160ff196007541617600755610705575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206136198339815191525416600080516020613619833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610602565b6000805160206136398339815191528c52818c209250601f1984168c5b81811061080c57509084600195949392106107f3575b505050811b0160008051602061363983398151915255610625565b015160001960f88460031b161c191690553880806107d8565b929360206001819287860151815501950193016107c2565b6000805160206136398339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c81019160208510610895575b90601f859493920160051c01905b81811061088757506105ec565b8c815584935060010161087a565b909150819061086c565b634e487b7160e01b8a52604160045260248afd5b015190503880610595565b6000805160206135998339815191528d526000805160206136598339815191529250601f1984168d5b8181106109315750908460019594939210610918575b505050811b01600080516020613599833981519152556105b8565b015160001960f88460031b161c191690553880806108fd565b929360206001819287860151815501950193016108e7565b9091506000805160206135998339815191528c52601f830160051c6000805160206136598339815191520190602084106109b5575b90601f8493920160051c60008051602061365983398151915201905b8181106109a7575061057f565b8d815584935060010161099a565b600080516020613659833981519152915061097e565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061361983398151915255386104ed565b63f92ee8a960e01b8852600488fd5b905015386104c3565b303b1591506104bb565b8791506104b1565b600080fd5b50346104355780600319360112610435576002546040516001600160a01b039091168152602090f35b503461043557602036600319011261043557610a8e610a81612353565b610a89612a2e565b612c71565b5080f35b503461043557806003193601126104355760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104355780600319360112610435576020603d54604051908152f35b503461043557602036600319011261043557610b15610b08612353565b610b10613256565b6128d8565b80f35b503461043557602036600319011261043557610b32612353565b610b3a613256565b6001600160a01b0381168015610ba557600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461043557806003193601126104355760206040517f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a8152f35b50346104355780600319360112610435576020600854604051908152f35b503461043557604036600319011261043557610c27612353565b610c38610c32612369565b9161274b565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104355780600319360112610435576001546040516001600160a01b039091168152602090f35b503461043557806003193601126104355760206040516127108152f35b50346104355760203660031901126104355760043590603d54821015610435576040610ccd836124af565b506001815491015482519182526020820152f35b5034610435576020366003190112610435576004358015610dd1576006548111610dc2576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610db757610d8a575b50610d58816006546128cb565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610dab9060203d602011610db0575b610da38183612473565b8101906126fa565b610d4b565b503d610d99565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461043557604036600319011261043557610a8e600435610e00612369565b90610e12610e0d826126ac565b612b65565b612e5e565b50346104355780600319360112610435576020604051611f408152f35b503461043557602036600319011261043557610e516004356129c3565b5080604051610e61602082612473565b5250610e8c604051610e74602082612473565b60008152604051918291602083526020830190612312565b0390f35b503461043557604036600319011261043557600435610ead612369565b8115611198576001600160a01b0381166111935750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af180156111885761116b575b5060045491600019831461041f5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761115757906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec9375602061101d836005546126ed565b80600555604051908152a16001600160a01b038216918215611143576110428461328c565b6001600160a01b0381168015159286918691611062908661112457612712565b805460010190558289526000805160206135f98339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a45061111057907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61112d856132b4565b61113686612712565b8054600019019055612712565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b6111839060203d602011610db057610da38183612473565b610f0a565b6040513d86823e3d90fd5b610ec4565b631f2a200560e01b8352600483fd5b5034610435576080366003190112610435576111c1612353565b6111c9612369565b90606435906001600160401b038211611230573660238301121561123057816004013592846111f785612494565b936112056040519586612473565b85855236602487830101116104335785610b1596602460209301838801378501015260443591612784565b8380fd5b50346104355760403660031901126104355761124e612353565b602435611259613256565b6001546001600160a01b03928316921682148015611305575b6112f65780156111985760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112eb5782916112cc575b50156112bd5780f35b63360e42e160e01b8152600490fd5b6112e5915060203d602011610db057610da38183612473565b386112b4565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b03168214611272565b503461043557604036600319011261043557611333612353565b602435908115158092036113b4576001600160a01b03169081156113a05761135a3361274b565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b8280fd5b5034610435578060031936011261043557602090604051908152f35b5034610435576020366003190112610435576004356113f1613256565b8015610dd1576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111885784916114d6575b5082116114c75760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610db7576114aa575b50611478816006546126ed565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114c29060203d602011610db057610da38183612473565b61146b565b631e9acf1760e31b8352600483fd5b90506020813d602011611500575b816114f160209383612473565b81010312611230575138611430565b3d91506114e4565b503461043557806003193601126104355760209054604051908152f35b5034610435576020366003190112610435576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b5034610435578060031936011261043557604051908060008051602061363983398151915254906115e1826124e4565b8085529160018116908115611687575060011461161d575b610e8c8461160981860382612473565b604051918291602083526020830190612312565b60008051602061363983398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b80821061166d57509091508101602001611609826115f9565b919260018160209254838588010152019101909291611654565b60ff191660208087019190915292151560051b8501909201925061160991508390506115f9565b50346104355760403660031901126104355760ff60406020926116cf612369565b60043582526000805160206135d983398151915285528282206001600160a01b03909116825284522054604051911615158152f35b503461043557602036600319011261043557600435611721612af3565b801561176c5760807fc6d3da45896ce1bca9d198309a2dbeea3c73a991748f8d88d796ffa06029de93918354908085556040519182526020820152836040820152426060820152a180f35b634dfba02360e01b8252600482fd5b50346104355780600319360112610435576000805160206135b9833981519152546040516001600160a01b039091168152602090f35b5034610435576020366003190112610435576117cb612353565b6117d3612a81565b6001600160a01b038116801561183c57600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610b9f565b636a27e5f160e01b8352600483fd5b50346104355780600319360112610435575060206305f5e100604051908152f35b50346104355760403660031901126104355760043560ff600754161561190b578082918252603c6020526118b360018060a01b036008604085200154169160243590612efe565b806118bc575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112eb576118f3575080f35b610a8e9060203d602011610db057610da38183612473565b6333962fd760e01b8252600482fd5b5034610435576020366003190112610435576004358015610dd1576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610db7577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119c2575b506119b060085491826126ed565b8060085582519182526020820152a180f35b6119da9060203d602011610db057610da38183612473565b6119a2565b50346104355780600319360112610435576119f8613256565b6000805160206135b983398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461043557602036600319011261043557611a63612353565b906001600160a01b03821615611a87576020611a7e83612712565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104355780600319360112610435576020600954604051908152f35b5034610435576020366003190112610435576020611ad86004356129c3565b6040516001600160a01b039091168152f35b50346104355780600319360112610435576003546040516001600160a01b039091168152602090f35b5034610435576020366003190112610435576004358015158091036104335760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b5e613256565b60ff196007541660ff821617600755604051908152a180f35b5034610435576040366003190112610435576004356001600160401b03811161043357611ba89036906004016123e9565b91906024356001600160401b0381116113b457611bc99036906004016123e9565b9060ff6007541615611d6257818503611d1d578415611ce95782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c185786808787806118bc575050f35b90919293611c278589856126dd565b358752603c60205260408720600801546001600160a01b0316869003611c7e57611c74600191611c6e611c5b888c886126dd565b35611c6789878a6126dd565b3590612efe565b906126ed565b9401929190611c04565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104355780600319360112610435576020600654604051908152f35b5034610435576020366003190112610435576004356001600160401b03811161043357611dc09036906004016123b9565b90611dc9612af3565b8115611e8357611f408211611e4757825490835b838110611de8578480f35b807fc6d3da45896ce1bca9d198309a2dbeea3c73a991748f8d88d796ffa06029de936080611e1960019488876126cd565b356020611e27858a896126cd565b01356040519188835260208301528960408301526060820152a101611ddd565b60405162461bcd60e51b815260206004820152601460248201527342617463682073697a6520746f6f206c6172676560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a456d70747920617272617960a81b6044820152606490fd5b503461043557610b15611ec83661237f565b9060405192611ed8602085612473565b858452612784565b503461043557604036600319011261043557611efa612369565b336001600160a01b03821603611f1657610a8e90600435612e5e565b63334bd91960e11b8252600482fd5b503461043557602036600319011261043557611f3f612353565b611f47612a81565b6001600160a01b0381168015611fb057600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610b9f565b63c2cf440960e01b8352600483fd5b503461043557604036600319011261043557610a8e600435611fdf612369565b90611fec610e0d826126ac565b612dc7565b503461043557602036600319011261043557610a8e61200e612353565b612016612a2e565b612baf565b503461043557602036600319011261043557602061203a6004356126ac565b604051908152f35b503461043557610b156120543661237f565b9161251e565b50346104355780600319360112610435576020600554604051908152f35b5034610435578060031936011261043557602060ff600754166040519015158152f35b50346104355780600319360112610435576020604051620f42408152f35b5034610435576040366003190112610435576120d3612353565b6024356120df816129c3565b331515806121a0575b80612182575b61216f5781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061218c8161274b565b338552602052604084205460ff16156120ee565b506001600160a01b0381163314156120e8565b5034610435576020366003190112610435576020611ad86004356121d6816129c3565b506129f4565b50346104355780600319360112610435576040519080600080516020613599833981519152549061220c826124e4565b8085529160018116908115611687575060011461223357610e8c8461160981860382612473565b6000805160206135998339815191528152600080516020613659833981519152939250905b80821061227157509091508101602001611609826115f9565b919260018160209254838588010152019101909291612258565b9050346104335760203660031901126104335760043563ffffffff60e01b81168091036113b45760209250637965db0b60e01b81149081156122cf575b5015158152f35b6380ac58cd60e01b811491508115612301575b81156122f0575b50386122c8565b6301ffc9a760e01b149050386122e9565b635b5e139f60e01b811491506122e2565b919082519283825260005b84811061233e575050826000602080949584010152601f8019910116010190565b8060208092840101518282860101520161231d565b600435906001600160a01b0382168203610a3657565b602435906001600160a01b0382168203610a3657565b6060906003190112610a36576004356001600160a01b0381168103610a3657906024356001600160a01b0381168103610a36579060443590565b9181601f84011215610a36578235916001600160401b038311610a36576020808501948460061b010111610a3657565b9181601f84011215610a36578235916001600160401b038311610a36576020808501948460051b010111610a3657565b8181029291811591840414171561242c57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761245d57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761245d57604052565b6001600160401b03811161245d57601f01601f191660200190565b603d548110156124ce57603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c92168015612514575b60208310146124fe57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f3565b909291906001600160a01b03841680156126965760009461253e8461328c565b95331515806125fd575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258997989460018060a01b038616988993846125eb57612712565b805460010190558481526000805160206135f98339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036125d157505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6125f4876132b4565b61113688612712565b80612646575b1561260e5738612548565b84906001600160a01b03881661263057602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015612679575b806126035750336001600160a01b03612672876129f4565b1614612603565b506126838761274b565b338252602052604081205460ff1661265a565b633250574960e11b600052600060045260246000fd5b6000526000805160206135d983398151915260205260016040600020015490565b91908110156124ce5760061b0190565b91908110156124ce5760051b0190565b9190820180921161242c57565b90816020910312610a3657518015158103610a365790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b929161279181838661251e565b813b61279e575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906127e9906084830190612312565b03816000865af18091600091612888575b509061285357503d1561284c573d61281181612494565b9061281f6040519283612473565b81523d6000602083013e5b805190816128475782633250574960e11b60005260045260246000fd5b602001fd5b606061282a565b6001600160e01b03191663757a42ff60e11b01612874575038808080612798565b633250574960e11b60005260045260246000fd5b6020813d6020116128c3575b816128a160209383612473565b810103126104335751906001600160e01b0319821682036104355750386127fa565b3d9150612894565b9190820391821161242c57565b6001600160a01b03168015612938576000805160206135b983398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d546801000000000000000081101561245d5760018101603d556000603d548210156129af57603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b6129cc8161328c565b906001600160a01b038216156129e0575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615612a6757565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615612aba57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff1615612b2c57565b63e2517d3f60e01b600052336004527f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a60245260446000fd5b60008181526000805160206135d98339815191526020908152604080832033845290915290205460ff1615612b975750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612c6b576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206135798339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612c6b576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff191660011790553391907f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a906000805160206135798339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612c6b576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206135798339815191528180a4600190565b60008181526000805160206135d9833981519152602090815260408083206001600160a01b038616845290915290205460ff16612e575760008181526000805160206135d9833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206135798339815191529080a4600190565b5050600090565b60008181526000805160206135d9833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612e575760008181526000805160206135d9833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612f07816129c3565b6001600160a01b031633141580613231575b6132205780600052603c60205260056040600020015461320f5780600052603c60205260406000209180156131fe576002830192835482116131ed57612f5f82846132f2565b96929091938597600094855483548082106131a8575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612fa68a6005546128cb565b80600555604051908152a187815480821460001461310757505060009042600585015581546001850155556000612fdc8961328c565b6001600160a01b0381168015928b9184156130e8575b8282526000805160206135f98339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4506130d357600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b6130f1836132b4565b6130fa84612712565b8054600019019055612ff2565b906131169198969295986128cb565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b6131c1929b50906131bb919793976128cb565b88612419565b6305f5e100915004936131e585600784016131dd8282546126ed565b9055886128cb565b983880612f75565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061323b816129c3565b50336001600160a01b0361324e836129f4565b161415612f19565b6000805160206135b9833981519152546001600160a01b0316330361327757565b63118cdaa760e01b6000523360045260246000fd5b60009081526000805160206135f983398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613538576133229261331c916128cb565b90612419565b6305f5e10090049081156135285761333e6004820154426128cb565b92603d5460009460005b8281106134f35750505061271061335f8585612419565b0492600661336d85836128cb565b930161337a8282546126ed565b90556009548461348d575b83151580613479575b6133d8575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de2916133c3846009546126ed565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af190811561346d577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261344e575b50915050613393565b6134669060203d602011610db057610da38183612473565b5038613445565b6040513d6000823e3d90fd5b506003546001600160a01b0316151561338e565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af1801561346d576134d4575b50613385565b6134ec9060203d602011610db057610da38183612473565b50386134ce565b60016134fe826124af565b500154821015613511575b600101613348565b9550600161351e876124af565b5054969050613509565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206136198339815191525460401c161561356757565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a264697066735822122044726d9e9ed8dbd912cd9f5e97a87194a08d2bd59705154b02aabe0ae72ef8da64736f6c634300081c0033",
|
1730
|
+
"deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461228b5750806306fdde03146121dc578063081812fc146121b3578063095ea7b3146120b95780630d8317e11461209b5780630ead7712146120785780631a39d8ef1461205a57806323b872dd14612042578063248a9ca31461201b57806327ac0c5814611ff15780632f2ff15d14611fbf5780632f84c39114611f2557806336568abe14611ee057806342842e0e14611eb65780634796ed0414611d8f5780634c19386c14611d71578063537b1ec714611b7757806358f6786914611b1357806361d027b314611aea5780636352211e14611ab95780636eac61dd14611a9b57806370a0823114611a49578063715018a6146119df57806374de4ec41461191a57806375a0b6dd1461186c57806387c139431461184b5780638aee8127146117b15780638da5cb5b1461177b57806391b7f5ed1461170457806391d14854146116ae57806395d89b41146115b157806399fbab8814611525578063a035b1fe14611508578063a0d8d78c146113d4578063a217fddf146113b8578063a22cb46514611319578063b35fb54214611234578063b88d4fde146111a7578063c1eb68e414610e90578063c87b56dd14610e34578063cfdbf25414610e17578063d547741f14610de0578063d797fe2214610ce1578063da29b26514610ca2578063e16fd0ec14610c85578063e5a6b10f14610c5c578063e985e9c514610c0d578063eae86f0b14610bef578063f00acbaa14610bb4578063f0f4426014610b18578063f2fde38b14610aeb578063f36de22514610acd578063f5b541a614610a92578063f6a48fac14610a64578063f7c618c114610a3b578063f8c8765e146104385763fbc14dda1461029457600080fd5b34610435576020366003190112610435576004356001600160401b038111610433576102c49036906004016123b9565b906102cd612a81565b603d5483603d55806103a5575b508290815b83831061030e57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061031c8486856126cd565b351161039657602061032f8486856126cd565b013511156103875761036e6103458385846126cd565b3560206103538587866126cd565b01356040519161036283612442565b8252602082015261294e565b6001602061037d8486856126cd565b01359201916102df565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361041f57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061040d57506102da565b80856002925585600182015501610400565b634e487b7160e01b84526011600452602484fd5b505b80fd5b503461043557608036600319011261043557610452612353565b61045a612369565b6044356001600160a01b03811690819003610a3657606435906001600160a01b038216808303610a3657600080516020613619833981519152549360ff8560401c1615946001600160401b03811680159081610a2e575b6001149081610a24575b159081610a1b575b50610a0c5767ffffffffffffffff19811660011760008051602061361983398151915255856109df575b5060409586516104fd8882612473565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061052c8983612473565b6002825261056560f41b602083015261054361354a565b61054b61354a565b8051906001600160401b0382116109cb578190610576600080516020613599833981519152546124e4565b601f8111610949575b50602090601f83116001146108be578c926108b3575b50508160011b916000199060031b1c191617600080516020613599833981519152555b8051906001600160401b03821161089f5781906105e3600080516020613639833981519152546124e4565b601f8111610824575b50602090601f83116001146107a5578b9261079a575b50508160011b916000199060031b1c191617600080516020613639833981519152555b61062d61354a565b61063561354a565b61063e856128d8565b61064661354a565b6001600160a01b031690811561078b576001600160a01b031691821561077c57831561076d571561075e57906106bd9392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b60035416176003556305f5e1008555612d2d565b506106c733612baf565b506106d133612c71565b506106f082516106e081612442565b612710815284602082015261294e565b600160ff196007541617600755610705575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206136198339815191525416600080516020613619833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610602565b6000805160206136398339815191528c52818c209250601f1984168c5b81811061080c57509084600195949392106107f3575b505050811b0160008051602061363983398151915255610625565b015160001960f88460031b161c191690553880806107d8565b929360206001819287860151815501950193016107c2565b6000805160206136398339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c81019160208510610895575b90601f859493920160051c01905b81811061088757506105ec565b8c815584935060010161087a565b909150819061086c565b634e487b7160e01b8a52604160045260248afd5b015190503880610595565b6000805160206135998339815191528d526000805160206136598339815191529250601f1984168d5b8181106109315750908460019594939210610918575b505050811b01600080516020613599833981519152556105b8565b015160001960f88460031b161c191690553880806108fd565b929360206001819287860151815501950193016108e7565b9091506000805160206135998339815191528c52601f830160051c6000805160206136598339815191520190602084106109b5575b90601f8493920160051c60008051602061365983398151915201905b8181106109a7575061057f565b8d815584935060010161099a565b600080516020613659833981519152915061097e565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061361983398151915255386104ed565b63f92ee8a960e01b8852600488fd5b905015386104c3565b303b1591506104bb565b8791506104b1565b600080fd5b50346104355780600319360112610435576002546040516001600160a01b039091168152602090f35b503461043557602036600319011261043557610a8e610a81612353565b610a89612a2e565b612c71565b5080f35b503461043557806003193601126104355760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104355780600319360112610435576020603d54604051908152f35b503461043557602036600319011261043557610b15610b08612353565b610b10613256565b6128d8565b80f35b503461043557602036600319011261043557610b32612353565b610b3a613256565b6001600160a01b0381168015610ba557600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461043557806003193601126104355760206040517f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a8152f35b50346104355780600319360112610435576020600854604051908152f35b503461043557604036600319011261043557610c27612353565b610c38610c32612369565b9161274b565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104355780600319360112610435576001546040516001600160a01b039091168152602090f35b503461043557806003193601126104355760206040516127108152f35b50346104355760203660031901126104355760043590603d54821015610435576040610ccd836124af565b506001815491015482519182526020820152f35b5034610435576020366003190112610435576004358015610dd1576006548111610dc2576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610db757610d8a575b50610d58816006546128cb565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610dab9060203d602011610db0575b610da38183612473565b8101906126fa565b610d4b565b503d610d99565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461043557604036600319011261043557610a8e600435610e00612369565b90610e12610e0d826126ac565b612b65565b612e5e565b50346104355780600319360112610435576020604051611f408152f35b503461043557602036600319011261043557610e516004356129c3565b5080604051610e61602082612473565b5250610e8c604051610e74602082612473565b60008152604051918291602083526020830190612312565b0390f35b503461043557604036600319011261043557600435610ead612369565b8115611198576001600160a01b0381166111935750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af180156111885761116b575b5060045491600019831461041f5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761115757906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec9375602061101d836005546126ed565b80600555604051908152a16001600160a01b038216918215611143576110428461328c565b6001600160a01b0381168015159286918691611062908661112457612712565b805460010190558289526000805160206135f98339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a45061111057907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61112d856132b4565b61113686612712565b8054600019019055612712565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b6111839060203d602011610db057610da38183612473565b610f0a565b6040513d86823e3d90fd5b610ec4565b631f2a200560e01b8352600483fd5b5034610435576080366003190112610435576111c1612353565b6111c9612369565b90606435906001600160401b038211611230573660238301121561123057816004013592846111f785612494565b936112056040519586612473565b85855236602487830101116104335785610b1596602460209301838801378501015260443591612784565b8380fd5b50346104355760403660031901126104355761124e612353565b602435611259613256565b6001546001600160a01b03928316921682148015611305575b6112f65780156111985760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112eb5782916112cc575b50156112bd5780f35b63360e42e160e01b8152600490fd5b6112e5915060203d602011610db057610da38183612473565b386112b4565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b03168214611272565b503461043557604036600319011261043557611333612353565b602435908115158092036113b4576001600160a01b03169081156113a05761135a3361274b565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b8280fd5b5034610435578060031936011261043557602090604051908152f35b5034610435576020366003190112610435576004356113f1613256565b8015610dd1576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111885784916114d6575b5082116114c75760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610db7576114aa575b50611478816006546126ed565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114c29060203d602011610db057610da38183612473565b61146b565b631e9acf1760e31b8352600483fd5b90506020813d602011611500575b816114f160209383612473565b81010312611230575138611430565b3d91506114e4565b503461043557806003193601126104355760209054604051908152f35b5034610435576020366003190112610435576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b5034610435578060031936011261043557604051908060008051602061363983398151915254906115e1826124e4565b8085529160018116908115611687575060011461161d575b610e8c8461160981860382612473565b604051918291602083526020830190612312565b60008051602061363983398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b80821061166d57509091508101602001611609826115f9565b919260018160209254838588010152019101909291611654565b60ff191660208087019190915292151560051b8501909201925061160991508390506115f9565b50346104355760403660031901126104355760ff60406020926116cf612369565b60043582526000805160206135d983398151915285528282206001600160a01b03909116825284522054604051911615158152f35b503461043557602036600319011261043557600435611721612af3565b801561176c5760807fc6d3da45896ce1bca9d198309a2dbeea3c73a991748f8d88d796ffa06029de93918354908085556040519182526020820152836040820152426060820152a180f35b634dfba02360e01b8252600482fd5b50346104355780600319360112610435576000805160206135b9833981519152546040516001600160a01b039091168152602090f35b5034610435576020366003190112610435576117cb612353565b6117d3612a81565b6001600160a01b038116801561183c57600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610b9f565b636a27e5f160e01b8352600483fd5b50346104355780600319360112610435575060206305f5e100604051908152f35b50346104355760403660031901126104355760043560ff600754161561190b578082918252603c6020526118b360018060a01b036008604085200154169160243590612efe565b806118bc575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112eb576118f3575080f35b610a8e9060203d602011610db057610da38183612473565b6333962fd760e01b8252600482fd5b5034610435576020366003190112610435576004358015610dd1576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610db7577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119c2575b506119b060085491826126ed565b8060085582519182526020820152a180f35b6119da9060203d602011610db057610da38183612473565b6119a2565b50346104355780600319360112610435576119f8613256565b6000805160206135b983398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461043557602036600319011261043557611a63612353565b906001600160a01b03821615611a87576020611a7e83612712565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104355780600319360112610435576020600954604051908152f35b5034610435576020366003190112610435576020611ad86004356129c3565b6040516001600160a01b039091168152f35b50346104355780600319360112610435576003546040516001600160a01b039091168152602090f35b5034610435576020366003190112610435576004358015158091036104335760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b5e613256565b60ff196007541660ff821617600755604051908152a180f35b5034610435576040366003190112610435576004356001600160401b03811161043357611ba89036906004016123e9565b91906024356001600160401b0381116113b457611bc99036906004016123e9565b9060ff6007541615611d6257818503611d1d578415611ce95782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c185786808787806118bc575050f35b90919293611c278589856126dd565b358752603c60205260408720600801546001600160a01b0316869003611c7e57611c74600191611c6e611c5b888c886126dd565b35611c6789878a6126dd565b3590612efe565b906126ed565b9401929190611c04565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104355780600319360112610435576020600654604051908152f35b5034610435576020366003190112610435576004356001600160401b03811161043357611dc09036906004016123b9565b90611dc9612af3565b8115611e8357611f408211611e4757825490835b838110611de8578480f35b807fc6d3da45896ce1bca9d198309a2dbeea3c73a991748f8d88d796ffa06029de936080611e1960019488876126cd565b356020611e27858a896126cd565b01356040519188835260208301528960408301526060820152a101611ddd565b60405162461bcd60e51b815260206004820152601460248201527342617463682073697a6520746f6f206c6172676560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a456d70747920617272617960a81b6044820152606490fd5b503461043557610b15611ec83661237f565b9060405192611ed8602085612473565b858452612784565b503461043557604036600319011261043557611efa612369565b336001600160a01b03821603611f1657610a8e90600435612e5e565b63334bd91960e11b8252600482fd5b503461043557602036600319011261043557611f3f612353565b611f47612a81565b6001600160a01b0381168015611fb057600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610b9f565b63c2cf440960e01b8352600483fd5b503461043557604036600319011261043557610a8e600435611fdf612369565b90611fec610e0d826126ac565b612dc7565b503461043557602036600319011261043557610a8e61200e612353565b612016612a2e565b612baf565b503461043557602036600319011261043557602061203a6004356126ac565b604051908152f35b503461043557610b156120543661237f565b9161251e565b50346104355780600319360112610435576020600554604051908152f35b5034610435578060031936011261043557602060ff600754166040519015158152f35b50346104355780600319360112610435576020604051620f42408152f35b5034610435576040366003190112610435576120d3612353565b6024356120df816129c3565b331515806121a0575b80612182575b61216f5781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061218c8161274b565b338552602052604084205460ff16156120ee565b506001600160a01b0381163314156120e8565b5034610435576020366003190112610435576020611ad86004356121d6816129c3565b506129f4565b50346104355780600319360112610435576040519080600080516020613599833981519152549061220c826124e4565b8085529160018116908115611687575060011461223357610e8c8461160981860382612473565b6000805160206135998339815191528152600080516020613659833981519152939250905b80821061227157509091508101602001611609826115f9565b919260018160209254838588010152019101909291612258565b9050346104335760203660031901126104335760043563ffffffff60e01b81168091036113b45760209250637965db0b60e01b81149081156122cf575b5015158152f35b6380ac58cd60e01b811491508115612301575b81156122f0575b50386122c8565b6301ffc9a760e01b149050386122e9565b635b5e139f60e01b811491506122e2565b919082519283825260005b84811061233e575050826000602080949584010152601f8019910116010190565b8060208092840101518282860101520161231d565b600435906001600160a01b0382168203610a3657565b602435906001600160a01b0382168203610a3657565b6060906003190112610a36576004356001600160a01b0381168103610a3657906024356001600160a01b0381168103610a36579060443590565b9181601f84011215610a36578235916001600160401b038311610a36576020808501948460061b010111610a3657565b9181601f84011215610a36578235916001600160401b038311610a36576020808501948460051b010111610a3657565b8181029291811591840414171561242c57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761245d57604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761245d57604052565b6001600160401b03811161245d57601f01601f191660200190565b603d548110156124ce57603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c92168015612514575b60208310146124fe57565b634e487b7160e01b600052602260045260246000fd5b91607f16916124f3565b909291906001600160a01b03841680156126965760009461253e8461328c565b95331515806125fd575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258997989460018060a01b038616988993846125eb57612712565b805460010190558481526000805160206135f98339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036125d157505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6125f4876132b4565b61113688612712565b80612646575b1561260e5738612548565b84906001600160a01b03881661263057602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b03871633148015612679575b806126035750336001600160a01b03612672876129f4565b1614612603565b506126838761274b565b338252602052604081205460ff1661265a565b633250574960e11b600052600060045260246000fd5b6000526000805160206135d983398151915260205260016040600020015490565b91908110156124ce5760061b0190565b91908110156124ce5760051b0190565b9190820180921161242c57565b90816020910312610a3657518015158103610a365790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b929161279181838661251e565b813b61279e575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906127e9906084830190612312565b03816000865af18091600091612888575b509061285357503d1561284c573d61281181612494565b9061281f6040519283612473565b81523d6000602083013e5b805190816128475782633250574960e11b60005260045260246000fd5b602001fd5b606061282a565b6001600160e01b03191663757a42ff60e11b01612874575038808080612798565b633250574960e11b60005260045260246000fd5b6020813d6020116128c3575b816128a160209383612473565b810103126104335751906001600160e01b0319821682036104355750386127fa565b3d9150612894565b9190820391821161242c57565b6001600160a01b03168015612938576000805160206135b983398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d546801000000000000000081101561245d5760018101603d556000603d548210156129af57603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b6129cc8161328c565b906001600160a01b038216156129e0575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615612a6757565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615612aba57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff1615612b2c57565b63e2517d3f60e01b600052336004527f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a60245260446000fd5b60008181526000805160206135d98339815191526020908152604080832033845290915290205460ff1615612b975750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612c6b576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206135798339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612c6b576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff191660011790553391907f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a906000805160206135798339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612c6b576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206135798339815191528180a4600190565b60008181526000805160206135d9833981519152602090815260408083206001600160a01b038616845290915290205460ff16612e575760008181526000805160206135d9833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206135798339815191529080a4600190565b5050600090565b60008181526000805160206135d9833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612e575760008181526000805160206135d9833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612f07816129c3565b6001600160a01b031633141580613231575b6132205780600052603c60205260056040600020015461320f5780600052603c60205260406000209180156131fe576002830192835482116131ed57612f5f82846132f2565b96929091938597600094855483548082106131a8575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612fa68a6005546128cb565b80600555604051908152a187815480821460001461310757505060009042600585015581546001850155556000612fdc8961328c565b6001600160a01b0381168015928b9184156130e8575b8282526000805160206135f98339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4506130d357600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b6130f1836132b4565b6130fa84612712565b8054600019019055612ff2565b906131169198969295986128cb565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b6131c1929b50906131bb919793976128cb565b88612419565b6305f5e100915004936131e585600784016131dd8282546126ed565b9055886128cb565b983880612f75565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061323b816129c3565b50336001600160a01b0361324e836129f4565b161415612f19565b6000805160206135b9833981519152546001600160a01b0316330361327757565b63118cdaa760e01b6000523360045260246000fd5b60009081526000805160206135f983398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613538576133229261331c916128cb565b90612419565b6305f5e10090049081156135285761333e6004820154426128cb565b92603d5460009460005b8281106134f35750505061271061335f8585612419565b0492600661336d85836128cb565b930161337a8282546126ed565b90556009548461348d575b83151580613479575b6133d8575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de2916133c3846009546126ed565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af190811561346d577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261344e575b50915050613393565b6134669060203d602011610db057610da38183612473565b5038613445565b6040513d6000823e3d90fd5b506003546001600160a01b0316151561338e565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af1801561346d576134d4575b50613385565b6134ec9060203d602011610db057610da38183612473565b50386134ce565b60016134fe826124af565b500154821015613511575b600101613348565b9550600161351e876124af565b5054969050613509565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206136198339815191525460401c161561356757565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a264697066735822122044726d9e9ed8dbd912cd9f5e97a87194a08d2bd59705154b02aabe0ae72ef8da64736f6c634300081c0033",
|
1687
1731
|
"linkReferences": {},
|
1688
1732
|
"deployedLinkReferences": {}
|
1689
1733
|
}
|
@@ -1,6 +1,14 @@
|
|
1
1
|
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
|
2
2
|
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../common";
|
3
3
|
export declare namespace TradingVault {
|
4
|
+
type PriceDataStruct = {
|
5
|
+
price: BigNumberish;
|
6
|
+
timestamp: BigNumberish;
|
7
|
+
};
|
8
|
+
type PriceDataStructOutput = [price: bigint, timestamp: bigint] & {
|
9
|
+
price: bigint;
|
10
|
+
timestamp: bigint;
|
11
|
+
};
|
4
12
|
type RewardConfigStruct = {
|
5
13
|
weight: BigNumberish;
|
6
14
|
duration: BigNumberish;
|
@@ -11,17 +19,19 @@ export declare namespace TradingVault {
|
|
11
19
|
};
|
12
20
|
}
|
13
21
|
export interface TradingVaultInterface extends Interface {
|
14
|
-
getFunction(nameOrSignature: "BASE_WEIGHT" | "DEFAULT_ADMIN_ROLE" | "EXPO" | "OPERATOR_ROLE" | "PERCENTAGE_BASE" | "PRICE_SETTER_ROLE" | "addReward" | "approve" | "balanceOf" | "borrowCurrency" | "claimERC20" | "createPosition" | "currency" | "getApproved" | "getRewardConfigsLength" | "getRoleAdmin" | "grantOperatorRole" | "grantPriceSetterRole" | "grantRole" | "hasRole" | "initialize" | "isApprovedForAll" | "isReduceEnabled" | "name" | "owner" | "ownerOf" | "positions" | "price" | "reducePosition" | "reducePositions" | "renounceOwnership" | "renounceRole" | "repayCurrency" | "revokeRole" | "rewardConfigs" | "rewardToken" | "safeTransferFrom(address,address,uint256)" | "safeTransferFrom(address,address,uint256,bytes)" | "setApprovalForAll" | "setCurrency" | "setPrice" | "setReduceEnabled" | "setRewardToken" | "setTreasury" | "supportsInterface" | "symbol" | "tokenURI" | "totalAmount" | "totalBorrowed" | "totalRewardsAdded" | "totalRewardsHarvested" | "transferFrom" | "transferOwnership" | "treasury" | "updateRewardConfigs"): FunctionFragment;
|
22
|
+
getFunction(nameOrSignature: "BASE_WEIGHT" | "DEFAULT_ADMIN_ROLE" | "EXPO" | "MAX_BATCH_SIZE" | "OPERATOR_ROLE" | "PERCENTAGE_BASE" | "PRICE_SETTER_ROLE" | "addReward" | "approve" | "balanceOf" | "batchEmitPriceUpdated" | "borrowCurrency" | "claimERC20" | "createPosition" | "currency" | "getApproved" | "getRewardConfigsLength" | "getRoleAdmin" | "grantOperatorRole" | "grantPriceSetterRole" | "grantRole" | "hasRole" | "initialize" | "isApprovedForAll" | "isReduceEnabled" | "name" | "owner" | "ownerOf" | "positions" | "price" | "reducePosition" | "reducePositions" | "renounceOwnership" | "renounceRole" | "repayCurrency" | "revokeRole" | "rewardConfigs" | "rewardToken" | "safeTransferFrom(address,address,uint256)" | "safeTransferFrom(address,address,uint256,bytes)" | "setApprovalForAll" | "setCurrency" | "setPrice" | "setReduceEnabled" | "setRewardToken" | "setTreasury" | "supportsInterface" | "symbol" | "tokenURI" | "totalAmount" | "totalBorrowed" | "totalRewardsAdded" | "totalRewardsHarvested" | "transferFrom" | "transferOwnership" | "treasury" | "updateRewardConfigs"): FunctionFragment;
|
15
23
|
getEvent(nameOrSignatureOrTopic: "Approval" | "ApprovalForAll" | "CurrencyBorrowed" | "CurrencyRepaid" | "CurrencyUpdated" | "Initialized" | "OwnershipTransferred" | "PositionCreated" | "PositionReduced" | "PriceUpdated" | "ReduceEnabledUpdated" | "RewardConfigsUpdated" | "RewardTokenUpdated" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "TotalAmountUpdated" | "TotalRewardsHarvestedUpdated" | "TotalRewardsUpdated" | "Transfer" | "TreasuryUpdated"): EventFragment;
|
16
24
|
encodeFunctionData(functionFragment: "BASE_WEIGHT", values?: undefined): string;
|
17
25
|
encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
|
18
26
|
encodeFunctionData(functionFragment: "EXPO", values?: undefined): string;
|
27
|
+
encodeFunctionData(functionFragment: "MAX_BATCH_SIZE", values?: undefined): string;
|
19
28
|
encodeFunctionData(functionFragment: "OPERATOR_ROLE", values?: undefined): string;
|
20
29
|
encodeFunctionData(functionFragment: "PERCENTAGE_BASE", values?: undefined): string;
|
21
30
|
encodeFunctionData(functionFragment: "PRICE_SETTER_ROLE", values?: undefined): string;
|
22
31
|
encodeFunctionData(functionFragment: "addReward", values: [BigNumberish]): string;
|
23
32
|
encodeFunctionData(functionFragment: "approve", values: [AddressLike, BigNumberish]): string;
|
24
33
|
encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string;
|
34
|
+
encodeFunctionData(functionFragment: "batchEmitPriceUpdated", values: [TradingVault.PriceDataStruct[]]): string;
|
25
35
|
encodeFunctionData(functionFragment: "borrowCurrency", values: [BigNumberish]): string;
|
26
36
|
encodeFunctionData(functionFragment: "claimERC20", values: [AddressLike, BigNumberish]): string;
|
27
37
|
encodeFunctionData(functionFragment: "createPosition", values: [BigNumberish, AddressLike]): string;
|
@@ -71,12 +81,14 @@ export interface TradingVaultInterface extends Interface {
|
|
71
81
|
decodeFunctionResult(functionFragment: "BASE_WEIGHT", data: BytesLike): Result;
|
72
82
|
decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
|
73
83
|
decodeFunctionResult(functionFragment: "EXPO", data: BytesLike): Result;
|
84
|
+
decodeFunctionResult(functionFragment: "MAX_BATCH_SIZE", data: BytesLike): Result;
|
74
85
|
decodeFunctionResult(functionFragment: "OPERATOR_ROLE", data: BytesLike): Result;
|
75
86
|
decodeFunctionResult(functionFragment: "PERCENTAGE_BASE", data: BytesLike): Result;
|
76
87
|
decodeFunctionResult(functionFragment: "PRICE_SETTER_ROLE", data: BytesLike): Result;
|
77
88
|
decodeFunctionResult(functionFragment: "addReward", data: BytesLike): Result;
|
78
89
|
decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
|
79
90
|
decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
|
91
|
+
decodeFunctionResult(functionFragment: "batchEmitPriceUpdated", data: BytesLike): Result;
|
80
92
|
decodeFunctionResult(functionFragment: "borrowCurrency", data: BytesLike): Result;
|
81
93
|
decodeFunctionResult(functionFragment: "claimERC20", data: BytesLike): Result;
|
82
94
|
decodeFunctionResult(functionFragment: "createPosition", data: BytesLike): Result;
|
@@ -306,17 +318,20 @@ export declare namespace PriceUpdatedEvent {
|
|
306
318
|
type InputTuple = [
|
307
319
|
oldPrice: BigNumberish,
|
308
320
|
newPrice: BigNumberish,
|
309
|
-
requiredReward: BigNumberish
|
321
|
+
requiredReward: BigNumberish,
|
322
|
+
timestamp: BigNumberish
|
310
323
|
];
|
311
324
|
type OutputTuple = [
|
312
325
|
oldPrice: bigint,
|
313
326
|
newPrice: bigint,
|
314
|
-
requiredReward: bigint
|
327
|
+
requiredReward: bigint,
|
328
|
+
timestamp: bigint
|
315
329
|
];
|
316
330
|
interface OutputObject {
|
317
331
|
oldPrice: bigint;
|
318
332
|
newPrice: bigint;
|
319
333
|
requiredReward: bigint;
|
334
|
+
timestamp: bigint;
|
320
335
|
}
|
321
336
|
type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
|
322
337
|
type Filter = TypedDeferredTopicFilter<Event>;
|
@@ -494,6 +509,7 @@ export interface TradingVault extends BaseContract {
|
|
494
509
|
BASE_WEIGHT: TypedContractMethod<[], [bigint], "view">;
|
495
510
|
DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">;
|
496
511
|
EXPO: TypedContractMethod<[], [bigint], "view">;
|
512
|
+
MAX_BATCH_SIZE: TypedContractMethod<[], [bigint], "view">;
|
497
513
|
OPERATOR_ROLE: TypedContractMethod<[], [string], "view">;
|
498
514
|
PERCENTAGE_BASE: TypedContractMethod<[], [bigint], "view">;
|
499
515
|
PRICE_SETTER_ROLE: TypedContractMethod<[], [string], "view">;
|
@@ -509,6 +525,11 @@ export interface TradingVault extends BaseContract {
|
|
509
525
|
void
|
510
526
|
], "nonpayable">;
|
511
527
|
balanceOf: TypedContractMethod<[owner: AddressLike], [bigint], "view">;
|
528
|
+
batchEmitPriceUpdated: TypedContractMethod<[
|
529
|
+
_priceDataArray: TradingVault.PriceDataStruct[]
|
530
|
+
], [
|
531
|
+
void
|
532
|
+
], "nonpayable">;
|
512
533
|
borrowCurrency: TypedContractMethod<[
|
513
534
|
_amount: BigNumberish
|
514
535
|
], [
|
@@ -714,6 +735,7 @@ export interface TradingVault extends BaseContract {
|
|
714
735
|
getFunction(nameOrSignature: "BASE_WEIGHT"): TypedContractMethod<[], [bigint], "view">;
|
715
736
|
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE"): TypedContractMethod<[], [string], "view">;
|
716
737
|
getFunction(nameOrSignature: "EXPO"): TypedContractMethod<[], [bigint], "view">;
|
738
|
+
getFunction(nameOrSignature: "MAX_BATCH_SIZE"): TypedContractMethod<[], [bigint], "view">;
|
717
739
|
getFunction(nameOrSignature: "OPERATOR_ROLE"): TypedContractMethod<[], [string], "view">;
|
718
740
|
getFunction(nameOrSignature: "PERCENTAGE_BASE"): TypedContractMethod<[], [bigint], "view">;
|
719
741
|
getFunction(nameOrSignature: "PRICE_SETTER_ROLE"): TypedContractMethod<[], [string], "view">;
|
@@ -725,6 +747,11 @@ export interface TradingVault extends BaseContract {
|
|
725
747
|
void
|
726
748
|
], "nonpayable">;
|
727
749
|
getFunction(nameOrSignature: "balanceOf"): TypedContractMethod<[owner: AddressLike], [bigint], "view">;
|
750
|
+
getFunction(nameOrSignature: "batchEmitPriceUpdated"): TypedContractMethod<[
|
751
|
+
_priceDataArray: TradingVault.PriceDataStruct[]
|
752
|
+
], [
|
753
|
+
void
|
754
|
+
], "nonpayable">;
|
728
755
|
getFunction(nameOrSignature: "borrowCurrency"): TypedContractMethod<[_amount: BigNumberish], [void], "nonpayable">;
|
729
756
|
getFunction(nameOrSignature: "claimERC20"): TypedContractMethod<[
|
730
757
|
_token: AddressLike,
|
@@ -922,7 +949,7 @@ export interface TradingVault extends BaseContract {
|
|
922
949
|
PositionCreated: TypedContractEvent<PositionCreatedEvent.InputTuple, PositionCreatedEvent.OutputTuple, PositionCreatedEvent.OutputObject>;
|
923
950
|
"PositionReduced(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address)": TypedContractEvent<PositionReducedEvent.InputTuple, PositionReducedEvent.OutputTuple, PositionReducedEvent.OutputObject>;
|
924
951
|
PositionReduced: TypedContractEvent<PositionReducedEvent.InputTuple, PositionReducedEvent.OutputTuple, PositionReducedEvent.OutputObject>;
|
925
|
-
"PriceUpdated(uint256,uint256,uint256)": TypedContractEvent<PriceUpdatedEvent.InputTuple, PriceUpdatedEvent.OutputTuple, PriceUpdatedEvent.OutputObject>;
|
952
|
+
"PriceUpdated(uint256,uint256,uint256,uint256)": TypedContractEvent<PriceUpdatedEvent.InputTuple, PriceUpdatedEvent.OutputTuple, PriceUpdatedEvent.OutputObject>;
|
926
953
|
PriceUpdated: TypedContractEvent<PriceUpdatedEvent.InputTuple, PriceUpdatedEvent.OutputTuple, PriceUpdatedEvent.OutputObject>;
|
927
954
|
"ReduceEnabledUpdated(bool)": TypedContractEvent<ReduceEnabledUpdatedEvent.InputTuple, ReduceEnabledUpdatedEvent.OutputTuple, ReduceEnabledUpdatedEvent.OutputObject>;
|
928
955
|
ReduceEnabledUpdated: TypedContractEvent<ReduceEnabledUpdatedEvent.InputTuple, ReduceEnabledUpdatedEvent.OutputTuple, ReduceEnabledUpdatedEvent.OutputObject>;
|
package/dist/contracts.json
CHANGED
@@ -28,7 +28,8 @@
|
|
28
28
|
"TradingVault-implemented-deprecated": "0xEe8D777729B5D8239FF18E77B04cf47a73FfE516",
|
29
29
|
"USDC": "0xDd33fEeD5D44D9e89b69C8E9397292E0D6554a66",
|
30
30
|
"TradingVault": "0xDAA0505313b7448374DB560c46584b4c85432e4E",
|
31
|
-
"TradingVault-implemented": "
|
31
|
+
"TradingVault-implemented": "0x1e888AAD1DECC7a6F4d1f6962D63e4A793EF5104",
|
32
|
+
"TradingVault-implemented-old": "0xEe8D777729B5D8239FF18E77B04cf47a73FfE516"
|
32
33
|
},
|
33
34
|
"base": {
|
34
35
|
"SeedRoundFundraiser": "0x3e7b414cAd1011c757dBA1a58212Db561dc9feeB"
|
package/dist/types.d.ts
CHANGED
@@ -36,6 +36,7 @@ export interface RawEventTypes {
|
|
36
36
|
oldPrice: bigint;
|
37
37
|
newPrice: bigint;
|
38
38
|
requiredReward: bigint;
|
39
|
+
timestamp: bigint;
|
39
40
|
};
|
40
41
|
CurrencyUpdated: {
|
41
42
|
oldCurrency: string;
|
@@ -165,6 +166,7 @@ export interface EventTypes {
|
|
165
166
|
oldPrice: number;
|
166
167
|
newPrice: number;
|
167
168
|
requiredReward: number;
|
169
|
+
timestamp: number;
|
168
170
|
};
|
169
171
|
CurrencyUpdated: {
|
170
172
|
oldCurrency: string;
|