aiia-vault-sdk 1.1.7 → 1.1.9
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/SeedRoundFundraiser.d.ts +23 -0
- package/dist/SeedRoundFundraiser.js +1 -1
- package/dist/TradingVault.d.ts +4 -5
- package/dist/TradingVault.js +1 -1
- package/dist/abis/SeedRoundFundraiser.json +2 -2
- package/dist/abis/TradingVault.json +38 -30
- package/dist/contracts/TradingVault.d.ts +36 -30
- package/dist/contracts.json +4 -2
- package/package.json +1 -1
@@ -511,4 +511,27 @@ export declare class SeedRoundFundraiserSDK {
|
|
511
511
|
decimals: number;
|
512
512
|
};
|
513
513
|
}>;
|
514
|
+
/**
|
515
|
+
* Builds a transaction to transfer project tokens to the contract
|
516
|
+
*
|
517
|
+
* @param amount - Amount of project tokens to transfer in human-readable format
|
518
|
+
* @returns Populated transaction for transferring tokens
|
519
|
+
*
|
520
|
+
* @remarks
|
521
|
+
* This method creates a transaction to transfer project tokens to the fundraiser contract.
|
522
|
+
* The contract needs to have these tokens to distribute to participants when they claim.
|
523
|
+
*
|
524
|
+
* @example
|
525
|
+
* ```typescript
|
526
|
+
* // Transfer 100,000 project tokens to the contract
|
527
|
+
* const tx = await sdk.buildTransferProjectTokenToContract(100000);
|
528
|
+
* const result = await sdk.signAndSendTransaction(tx, wallet);
|
529
|
+
* ```
|
530
|
+
*
|
531
|
+
* @notice
|
532
|
+
* - You must have sufficient project tokens in your wallet
|
533
|
+
* - You must have approved the contract to spend your tokens before sending this transaction
|
534
|
+
* - This is typically called by the project owner to fund the contract
|
535
|
+
*/
|
536
|
+
buildTransferProjectTokenToContract(amount: number): Promise<ethers.ContractTransaction>;
|
514
537
|
}
|
@@ -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.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount),fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const s=Array.isArray(t)?t:[t];this.providers=s.map((t=>new e.ethers.JsonRpcProvider(t)));const a=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(s[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,a),this.networkName=this.getNetworkNameFromRpc(s[0]),this.importWhitelistedTokens()}getNetworkNameFromRpc(t){const e=t.toLowerCase();return e.includes("sepolia.base")?"base-sepolia":e.includes("sepolia")?"sepolia":e.includes("mainnet")?"mainnet":e.includes("localhost")||e.includes("127.0.0.1")?"hardhat":"sepolia"}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>t.toLowerCase())),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t){const n=t.toLowerCase();if(!this.whitelistedTokensArray.includes(n))return null;const o=await this.getWhitelistedToken(n);if(!o.isWhitelisted)return null;let i="ETH",s=18;n!==e.ethers.ZeroAddress&&([i,s]=await Promise.all([(0,r.getTokenSymbol)(n,this.getRandomProvider()),(0,r.getTokenDecimals)(n,this.getRandomProvider())]));const a=await this.getLatestRoundId();let d=0;if(a>=0){const t=await this.getRound(a);t.exists&&!t.ended&&(d=t.maxFundPerAccount/o.price)}return{address:n,isWhitelisted:o.isWhitelisted,price:o.price,symbol:i,maxContribution:d,maxContributionRaw:Math.floor(d*Math.pow(10,s)),decimals:s}}async getAllWhitelistedTokensInfo(){const t=[];for(const e of this.whitelistedTokensArray){const n=await this.getWhitelistedTokenInfo(e);n&&t.push(n)}return t}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const s=BigInt(Math.floor(n*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,s,c,a)}async buildUpdateRoundTx(t,e,n,o,r,i){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION));return await this.contract.updateRound.populateTransaction(t,e,n,s,r,a)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const s=e.ethers.parseUnits(o.toString(),i),a=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:s);return n===e.ethers.ZeroAddress&&(a.value=s),a}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,n,o=1e3,i=5e3){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)},a=Math.floor(Date.now()/1e3),d=i.exists&&!i.ended&&a>=Number(i.startTime)&&a<=Number(i.endTime),c={contribution:s,roundInfo:{exists:i.exists,isActive:d,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...c,tokenInfo:{symbol:n,decimals:o}}}return c}};
|
1
|
+
"use strict";var t=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.SeedRoundFundraiserSDK=void 0;const e=require("ethers"),n=t(require("./abis/SeedRoundFundraiser.json")),o=t(require("./contracts.json")),r=require("./utils"),i=t(require("./whitelist-tokens.json"));exports.SeedRoundFundraiserSDK=class{constructor(t,i){this.name="SeedRoundFundraiser",this.isBootstrapped=!1,this.PRICE_PRECISION=1e18,this.whitelistedTokensArray=[],this.projectToken="",this.projectTokenDecimals=0,this.formatEventArgs=t=>{const{eventName:e,args:n}=t;switch(e){case"TokenWhitelisted":return{...t,args:{...n,token:n.token.toLowerCase(),price:Number(n.price)/this.PRICE_PRECISION}};case"TokenPriceUpdated":return{...t,args:{...n,token:n.token.toLowerCase(),oldPrice:Number(n.oldPrice)/this.PRICE_PRECISION,newPrice:Number(n.newPrice)/this.PRICE_PRECISION}};case"TokenRemovedFromWhitelist":return{...t,args:{...n,token:n.token.toLowerCase()}};case"RoundCreated":case"RoundUpdated":return{...t,args:{...n,roundId:Number(n.roundId),startTime:Number(n.startTime),endTime:Number(n.endTime),targetFund:Number(n.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(n.totalAllocation),maxFundPerAccount:Number(n.maxFundPerAccount)/this.PRICE_PRECISION}};case"RoundEnded":return{...t,args:{...n,roundId:Number(n.roundId),raisedFunds:Number(n.raisedFunds)/this.PRICE_PRECISION,participants:Number(n.participants)}};case"Contribution":return{...t,args:{...n,roundId:Number(n.roundId),contributor:n.contributor.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount),fundAmount:Number(n.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(n.tokenAllocation)}};case"TokensClaimed":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),amount:Number(n.amount)}};case"ProjectTokenUpdated":return{...t,args:{...n,oldToken:n.oldToken.toLowerCase(),newToken:n.newToken.toLowerCase()}};case"ClaimingEnabledUpdated":case"RefundEnabledUpdated":return{...t,args:{...n,roundId:Number(n.roundId),enabled:n.enabled}};case"Refunded":return{...t,args:{...n,roundId:Number(n.roundId),user:n.user.toLowerCase(),token:n.token.toLowerCase(),amount:Number(n.amount)}};default:return t}};const s=Array.isArray(t)?t:[t];this.providers=s.map((t=>new e.ethers.JsonRpcProvider(t)));const a=(0,r.getRandomProvider)(this.providers);this.contractAddress=(0,r.resolveContractAddress)(s[0],this.name,o.default,i),this.contract=new e.ethers.Contract(this.contractAddress,n.default.abi,a),this.networkName=this.getNetworkNameFromRpc(s[0]),this.importWhitelistedTokens()}getNetworkNameFromRpc(t){const e=t.toLowerCase();return e.includes("sepolia.base")?"base-sepolia":e.includes("sepolia")?"sepolia":e.includes("mainnet")?"mainnet":e.includes("localhost")||e.includes("127.0.0.1")?"hardhat":"sepolia"}importWhitelistedTokens(){try{i.default[this.networkName]?(this.whitelistedTokensArray=i.default[this.networkName].map((t=>t.toLowerCase())),console.log(`Imported ${this.whitelistedTokensArray.length} whitelisted tokens for ${this.networkName} network`)):console.log(`No whitelisted tokens found for ${this.networkName} network`)}catch(t){console.error("Error importing whitelisted tokens:",t)}}async getWhitelistedTokenInfo(t){const n=t.toLowerCase();if(!this.whitelistedTokensArray.includes(n))return null;const o=await this.getWhitelistedToken(n);if(!o.isWhitelisted)return null;let i="ETH",s=18;n!==e.ethers.ZeroAddress&&([i,s]=await Promise.all([(0,r.getTokenSymbol)(n,this.getRandomProvider()),(0,r.getTokenDecimals)(n,this.getRandomProvider())]));const a=await this.getLatestRoundId();let d=0;if(a>=0){const t=await this.getRound(a);t.exists&&!t.ended&&(d=t.maxFundPerAccount/o.price)}return{address:n,isWhitelisted:o.isWhitelisted,price:o.price,symbol:i,maxContribution:d,maxContributionRaw:Math.floor(d*Math.pow(10,s)),decimals:s}}async getAllWhitelistedTokensInfo(){const t=[];for(const e of this.whitelistedTokensArray){const n=await this.getWhitelistedTokenInfo(e);n&&t.push(n)}return t}getRandomProvider(){return(0,r.getRandomProvider)(this.providers)}getContractWithRandomProvider(){return new e.ethers.Contract(this.contractAddress,n.default.abi,this.getRandomProvider())}async bootstrap(){if(this.isBootstrapped)return;const t=await Promise.all(this.providers.map(((t,e)=>(0,r.checkRpcHealth)(t,e))));if(this.providers=this.providers.filter(((e,n)=>t[n])),0===this.providers.length)throw new Error("No active RPC providers available");this.projectToken=await this.getProjectToken(),this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()),this.isBootstrapped=!0}async signAndSendTransaction(t,e,n={}){return(0,r.signAndSendTransaction)(t,e,(()=>this.getRandomProvider()),n,this.contract)}async buildAddWhitelistedTokenTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.addWhitelistedToken.populateTransaction(t,n)}async buildUpdateTokenPriceTx(t,e){const n=BigInt(Math.floor(e*this.PRICE_PRECISION));return await this.contract.updateTokenPrice.populateTransaction(t,n)}async buildRemoveWhitelistedTokenTx(t){return await this.contract.removeWhitelistedToken.populateTransaction(t)}async buildCreateRoundTx(t,e,n,o,i){const s=BigInt(Math.floor(n*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION)),d=await(0,r.getTokenDecimals)(await this.getProjectToken(),this.getRandomProvider()),c=BigInt(Math.floor(o*Math.pow(10,d)));return await this.contract.createRound.populateTransaction(t,e,s,c,a)}async buildUpdateRoundTx(t,e,n,o,r,i){const s=BigInt(Math.floor(o*this.PRICE_PRECISION)),a=BigInt(Math.floor(i*this.PRICE_PRECISION));return await this.contract.updateRound.populateTransaction(t,e,n,s,r,a)}async buildEndRoundTx(t){return await this.contract.endRound.populateTransaction(t)}async buildSetClaimingEnabledTx(t,e){return await this.contract.setClaimingEnabled.populateTransaction(t,e)}async buildSetRefundEnabledTx(t,e){return await this.contract.setRefundEnabled.populateTransaction(t,e)}async buildContributeTx(t,n,o){let i=18;n!==e.ethers.ZeroAddress&&(i=await(0,r.getTokenDecimals)(n,this.getRandomProvider()));const s=e.ethers.parseUnits(o.toString(),i),a=await this.contract.contribute.populateTransaction(t,n,n===e.ethers.ZeroAddress?0:s);return n===e.ethers.ZeroAddress&&(a.value=s),a}async buildWithdrawFundsTx(t,e){const n=await(0,r.getTokenDecimals)(t,this.getRandomProvider()),o=BigInt(Math.floor(e*Math.pow(10,n)));return await this.contract.withdrawFunds.populateTransaction(t,o)}async buildClaimTokensByRoundIdTx(t){return await this.contract.claimTokensByRoundId.populateTransaction(t)}async getWhitelistedToken(t){const e=await this.contract.whitelistedTokens(t);return{isWhitelisted:e.isWhitelisted,price:Number(e.price)/this.PRICE_PRECISION}}async getRound(t){const e=await this.contract.rounds(t);return this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider())),{startTime:Number(e.startTime),endTime:Number(e.endTime),targetFund:Number(e.targetFund)/this.PRICE_PRECISION,totalAllocation:Number(e.totalAllocation)/10**this.projectTokenDecimals,maxFundPerAccount:Number(e.maxFundPerAccount)/this.PRICE_PRECISION,exists:e.exists,ended:e.ended,claimingEnabled:e.claimingEnabled,refundEnabled:e.refundEnabled}}async getUserContribution(t,n){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const o=await this.contract.userContributions(t,n);let i=18;return o.contributedToken!==e.ethers.ZeroAddress&&"0x0000000000000000000000000000000000000000"!==o.contributedToken&&(i=await(0,r.getTokenDecimals)(o.contributedToken,this.getRandomProvider())),{fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation)/10**this.projectTokenDecimals,claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)/10**i}}async getRoundRaisedFunds(t){const e=await this.contract.roundRaisedFunds(t);return Number(e)/this.PRICE_PRECISION}async getRoundParticipants(t){const e=await this.contract.roundParticipants(t);return Number(e)}async getUserParticipatedRound(t){const e=await this.contract.userParticipatedRound(t);return Number(e)}async getProjectToken(){return await this.contract.projectToken()}async getTotalRounds(){const t=await this.contract.totalRounds();return Number(t)}async getTotalRaisedFunds(){const t=await this.contract.totalRaisedFunds();return Number(t)/this.PRICE_PRECISION}async isRoundActive(t){return await this.contract.isRoundActive(t)}async getLatestRoundId(){const t=await this.getTotalRounds();return 0===t?-1:t-1}async getRoundInfo(t){const e=await this.getTotalRounds();if(t<0||t>=e)throw new Error(`Invalid round ID: ${t}`);return{roundId:t,config:await this.getRound(t),raisedFunds:await this.getRoundRaisedFunds(t),participants:await this.getRoundParticipants(t),isActive:await this.isRoundActive(t)}}async getUserTotalContribution(t){const e=await this.contract.getUserTotalContribution(t);return{totalFundAmount:Number(e.totalFundAmount)/this.PRICE_PRECISION,totalTokenAllocation:Number(e.totalTokenAllocation)}}async getTransactionStatus(t,e=10){return await(0,r.getTransactionStatus)(this.getRandomProvider(),t,e)}getContractAddress(){return this.contractAddress}async getAllEvents(t,e){return await this.bootstrap(),(0,r.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,n,o=1e3,i=5e3){return await this.bootstrap(),(0,r.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),formatEvent:t=>this.formatEventArgs(t),onEvent:e,saveLatestBlock:n,fromBlock:t,batchSize:o,sleepTime:i})}async getUserRoundContribution(t,n){const[o,i]=await Promise.all([this.contract.getUserRoundContribution(t,n),this.contract.rounds(t)]),s={fundAmount:Number(o.fundAmount)/this.PRICE_PRECISION,tokenAllocation:Number(o.tokenAllocation),claimed:o.claimed,refunded:o.refunded,contributedToken:o.contributedToken,contributedAmount:Number(o.contributedAmount)},a=Math.floor(Date.now()/1e3),d=i.exists&&!i.ended&&a>=Number(i.startTime)&&a<=Number(i.endTime),c={contribution:s,roundInfo:{exists:i.exists,isActive:d,claimingEnabled:i.claimingEnabled,refundEnabled:i.refundEnabled}};if(s.fundAmount>0){const t=s.contributedToken;let n="ETH",o=18;return t!==e.ethers.ZeroAddress&&([n,o]=await Promise.all([(0,r.getTokenSymbol)(t,this.getRandomProvider()),(0,r.getTokenDecimals)(t,this.getRandomProvider())])),{...c,tokenInfo:{symbol:n,decimals:o}}}return c}async buildTransferProjectTokenToContract(t){this.projectToken||(this.projectToken=await this.getProjectToken()),this.projectTokenDecimals||(this.projectTokenDecimals=await(0,r.getTokenDecimals)(this.projectToken,this.getRandomProvider()));const n=new e.ethers.Interface(["function transfer(address to, uint256 amount) returns (bool)"]),o=e.ethers.parseUnits(t.toString(),this.projectTokenDecimals);return{to:this.projectToken,data:n.encodeFunctionData("transfer",[this.contractAddress,o])}}};
|
package/dist/TradingVault.d.ts
CHANGED
@@ -42,16 +42,14 @@ export declare class TradingVaultSDK {
|
|
42
42
|
attempts: number;
|
43
43
|
};
|
44
44
|
}>;
|
45
|
-
buildCreatePositionTx(amount: number): Promise<ethers.ContractTransaction>;
|
46
|
-
buildCreatePositionForUserTx(user: string, amount: number): Promise<ethers.ContractTransaction>;
|
45
|
+
buildCreatePositionTx(amount: number, recipient: string): Promise<ethers.ContractTransaction>;
|
47
46
|
buildReducePositionTx(tokenId: bigint, amount: number): Promise<ethers.ContractTransaction>;
|
48
47
|
buildReducePositionsTx(tokenIds: bigint[], amounts: number[]): Promise<ethers.ContractTransaction>;
|
49
48
|
buildBorrowCurrencyTx(amount: number): Promise<ethers.ContractTransaction>;
|
50
49
|
buildRepayCurrencyTx(amount: number): Promise<ethers.ContractTransaction>;
|
51
50
|
buildSetPriceTx(newPrice: number): Promise<ethers.ContractTransaction>;
|
52
51
|
buildClaimERC20Tx(token: string, amount: number): Promise<ethers.ContractTransaction>;
|
53
|
-
buildCreatePositionTxRaw(amount: bigint): Promise<ethers.ContractTransaction>;
|
54
|
-
buildCreatePositionForUserTxRaw(user: string, amount: bigint): Promise<ethers.ContractTransaction>;
|
52
|
+
buildCreatePositionTxRaw(amount: bigint, recipient: string): Promise<ethers.ContractTransaction>;
|
55
53
|
buildReducePositionTxRaw(tokenId: bigint, amount: bigint): Promise<ethers.ContractTransaction>;
|
56
54
|
buildReducePositionsTxRaw(tokenIds: bigint[], amounts: bigint[]): Promise<ethers.ContractTransaction>;
|
57
55
|
buildBorrowCurrencyTxRaw(amount: bigint): Promise<ethers.ContractTransaction>;
|
@@ -88,7 +86,7 @@ export declare class TradingVaultSDK {
|
|
88
86
|
lossAmount: number;
|
89
87
|
initAmount: number;
|
90
88
|
}>;
|
91
|
-
getPositionRaw(tokenId: bigint): Promise<[bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint] & {
|
89
|
+
getPositionRaw(tokenId: bigint): Promise<[bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, string] & {
|
92
90
|
entryPrice: bigint;
|
93
91
|
outPrice: bigint;
|
94
92
|
remainingAmount: bigint;
|
@@ -97,6 +95,7 @@ export declare class TradingVaultSDK {
|
|
97
95
|
closedAt: bigint;
|
98
96
|
rewardedAmount: bigint;
|
99
97
|
lossAmount: bigint;
|
98
|
+
token: string;
|
100
99
|
}>;
|
101
100
|
getRewardConfig(index: number): Promise<[bigint, bigint] & {
|
102
101
|
weight: bigint;
|
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,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)}};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)}async buildCreatePositionTx(t){const e=await this.getCurrencyDecimals(),r=BigInt(Math.floor(t*Math.pow(10,e)));return this.buildCreatePositionTxRaw(r)}async buildCreatePositionForUserTx(t,e){const r=await this.getCurrencyDecimals(),a=BigInt(Math.floor(e*Math.pow(10,r)));return this.buildCreatePositionForUserTxRaw(t,a)}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(),i=BigInt(Math.floor(r*Math.pow(10,n)));return this.buildClaimERC20TxRaw(t,i)}async buildCreatePositionTxRaw(t){return await this.contract.createPosition.populateTransaction(t)}async buildCreatePositionForUserTxRaw(t,e){return await this.contract.createPositionForUser.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 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){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,r,a=1e3,i=5e3){return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),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)}};
|
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)}};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)}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(),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 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){return await this.bootstrap(),(0,n.getAllEvents)(this.contract,(()=>this.getRandomProvider()),(()=>this.getContractWithRandomProvider()),t,e)}async streamEvents(t,e,r,a=1e3,i=5e3){return await this.bootstrap(),(0,n.streamEvents)({getProvider:()=>this.getRandomProvider(),getAllEvents:(t,e)=>this.getAllEvents(t,e),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)}};
|
@@ -1542,8 +1542,8 @@
|
|
1542
1542
|
"type": "receive"
|
1543
1543
|
}
|
1544
1544
|
],
|
1545
|
-
"bytecode": "0x608060405234801561001057600080fd5b5061001f61002460201b60201c565b61018e565b600061003461012860201b60201c565b90508060000160089054906101000a900460ff161561007f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101255767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161011c9190610173565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b61016d81610150565b82525050565b60006020820190506101886000830184610164565b92915050565b614c2c8061019d6000396000f3fe6080604052600436106102765760003560e01c806397ac4a251161014f578063d4bcdfa1116100c1578063ed54890d1161007a578063ed54890d14610995578063efe9c9e2146109d7578063f0a3a97c14610a00578063f0e1bb3e14610a2b578063f2fde38b14610a68578063f5b541a614610a9157610277565b8063d4bcdfa114610861578063d4ee651b1461088a578063d547741f146108b3578063d871b0e3146108dc578063daf9c2101461091a578063eb4c9e9b1461095857610277565b8063a6be83dd11610113578063a6be83dd14610769578063a734f06e14610792578063c1075329146107bd578063c213df78146107e6578063c4428a891461080f578063c4d66de81461083857610277565b806397ac4a25146106705780639bb92c4e146106ad5780639da64ac2146106d6578063a09686c414610713578063a217fddf1461073e57610277565b80636fed6940116101e85780638a568299116101ac5780638a568299146105435780638c65c81f1461056e5780638d52e555146105b45780638da5cb5b146105dd57806391d148541461060857806395082d251461064557610277565b80636fed694014610481578063715018a6146104be5780637ad226dc146104d55780637cf30c60146104fe5780638952ac1e1461052757610277565b80632f2ff15d1161023a5780632f2ff15d1461038757806336568abe146103b057806342683c67146103d95780634b60ce77146104045780635a1e6ca11461042f5780635af6df4c1461045857610277565b806301ffc9a7146102795780631c88705d146102b6578063248a9ca3146102df57806327ac0c581461031c57806328f3e6581461034557610277565b5b005b34801561028557600080fd5b506102a0600480360381019061029b919061421c565b610abc565b6040516102ad9190614264565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906142dd565b610ace565b005b3480156102eb57600080fd5b5061030660048036038101906103019190614340565b610c1e565b604051610313919061437c565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906142dd565b610c4c565b005b34801561035157600080fd5b5061036c600480360381019061036791906143cd565b610c88565b60405161037e9695949392919061442b565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061448c565b610d54565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061448c565b610d76565b005b3480156103e557600080fd5b506103ee610df1565b6040516103fb91906144cc565b60405180910390f35b34801561041057600080fd5b50610419610df7565b60405161042691906144e7565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614502565b610e1d565b005b34801561046457600080fd5b5061047f600480360381019061047a919061452f565b610f8e565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614502565b61128b565b6040516104b591906144cc565b60405180910390f35b3480156104ca57600080fd5b506104d36112a3565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906143cd565b6112b7565b005b34801561050a57600080fd5b50610525600480360381019061052091906145d6565b6118ec565b005b610541600480360381019061053c9190614616565b6119db565b005b34801561054f57600080fd5b50610558612210565b60405161056591906144cc565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614502565b612216565b6040516105ab9a99989796959493929190614669565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d691906145d6565b6122ab565b005b3480156105e957600080fd5b506105f261239a565b6040516105ff91906144e7565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061448c565b6123d2565b60405161063c9190614264565b60405180910390f35b34801561065157600080fd5b5061065a61244b565b60405161066791906144cc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614502565b612457565b6040516106a49190614264565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906145d6565b61254d565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906142dd565b61263c565b60405161070a91906144cc565b60405180910390f35b34801561071f57600080fd5b506107286126a9565b60405161073591906144cc565b60405180910390f35b34801561074a57600080fd5b506107536126b3565b604051610760919061437c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614705565b6126ba565b005b34801561079e57600080fd5b506107a76129e4565b6040516107b491906144e7565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614792565b6129e9565b005b3480156107f257600080fd5b5061080d600480360381019061080891906142dd565b612cdd565b005b34801561081b57600080fd5b5061083660048036038101906108319190614502565b612d19565b005b34801561084457600080fd5b5061085f600480360381019061085a91906142dd565b612d26565b005b34801561086d57600080fd5b5061088860048036038101906108839190614792565b612f9d565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614792565b613177565b005b3480156108bf57600080fd5b506108da60048036038101906108d5919061448c565b613342565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b613364565b6040516109119291906147d2565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c91906142dd565b613400565b60405161094f9291906147fb565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906142dd565b613431565b60405161098c91906144cc565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906143cd565b613449565b6040516109ce9695949392919061442b565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f991906142dd565b6134cc565b005b348015610a0c57600080fd5b50610a15613623565b604051610a22919061437c565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190614502565b613647565b604051610a5f91906144cc565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906142dd565b61365f565b005b348015610a9d57600080fd5b50610aa66136e5565b604051610ab3919061437c565b60405180910390f35b6000610ac782613709565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610af881613783565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b7d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610c29613797565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610c5981613783565b610c837f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836137bf565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d5d82610c1e565b610d6681613783565b610d7083836137bf565b50505050565b610d7e6138c0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dec82826138c8565b505050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610e4781613783565b6001600083815260200190815260200160002060050160009054906101000a900460ff16610ea1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615610efc576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600084815260200190815260200160002060050160016101000a81548160ff021916908315150217905550817fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760036000858152602001908152602001600020546004600086815260200190815260200160002054604051610f829291906147d2565b60405180910390a25050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610fb881613783565b42861015610ff2576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161102b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611065576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361109f576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806110ad57508382115b156110e4576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808881526020018781526020018681526020018581526020018481526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061123d90614853565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133888888888860405161127a95949392919061489b565b60405180910390a250505050505050565b60046020528060005260406000206000915090505481565b6112ab6139ca565b6112b56000613a51565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296112e181613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160009054906101000a900460ff166113a1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160039054906101000a900460ff166113fb576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001540361148d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156114d6576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff161561151f576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c457478111156115bf576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ff91906144e7565b602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190614903565b90508082111561167c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff02191690831515021790555082600001546003600088815260200190815260200160002060008282546116c29190614930565b925050819055508260000154600860008282546116df9190614930565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c35760008573ffffffffffffffffffffffffffffffffffffffff168260405161174090614995565b60006040518083038185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50509050806117bd576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061187e565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b81526004016118009291906149aa565b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906149e8565b90508061187c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3846040516118dc91906144cc565b60405180910390a4505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961191681613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff16611970576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119ce9190614264565b60405180910390a2505050565b6119e483612457565b611a1a576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b165760003403611b0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b54565b60008203611b50576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb55750600185611bb19190614a15565b8114155b15611c15576001600086815260200190815260200160002060050160049054906101000a900460ff16611c14576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c729190614a49565b611c7c9190614aba565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611ce49190614a15565b9050600160008a815260200190815260200160002060040154811115611d36576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d579190614a15565b9050600160008b815260200190815260200160002060020154811115611da9576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e9a5760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1c93929190614aeb565b6020604051808303816000875af1158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906149e8565b905080611e98576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed59190614a49565b611edf9190614aba565b90506000846000015403611fb757600460008c81526020019081526020016000206000815480929190611f1190614853565b919050555060018b611f239190614a15565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550612061565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361202e57878460030160008282546120229190614a15565b92505081905550612060565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120759190614a15565b92505081905550808460010160008282546120909190614a15565b9250508190555084600360008d815260200190815260200160002060008282546120ba9190614a15565b9250508190555084600860008282546120d39190614a15565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121995760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f8152602001908152602001600020546040516121909291906147d2565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121fb93929190614b22565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d581613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161238d9190614264565b60405180910390a2505050565b6000806123a5613b28565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123dd613797565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff1661248a5760009050612548565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124bc5760009050612548565b60016000838152602001908152602001600020600001544210156124e35760009050612548565b600160008381526020019081526020016000206001015442111561250a5760009050612548565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106125435760009050612548565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961257781613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125d1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262f9190614264565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036126935760009150506126a4565b6001816126a09190614930565b9150505b919050565b6000600754905090565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296126e481613783565b6001600088815260200190815260200160002060050160009054906101000a900460ff1661273e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600088815260200190815260200160002060050160019054906101000a900460ff1615612799576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008881526020019081526020016000206000015442106127e8576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42861015612822576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161285b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612895576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083036128cf576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806128dd57508382115b15612914576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600089815260200190815260200160002060000181905550846001600089815260200190815260200160002060010181905550836001600089815260200190815260200160002060020181905550826001600089815260200190815260200160002060030181905550816001600089815260200190815260200160002060040181905550867fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959687878787876040516129d395949392919061489b565b60405180910390a250505050505050565b600081565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07612a1381613783565b60008203612a4d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b645747821115612abb576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1683604051612ae190614995565b60006040518083038185875af1925050503d8060008114612b1e576040519150601f19603f3d011682016040523d82523d6000602084013e612b23565b606091505b5050905080612b5e576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612cd8565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b9f91906144e7565b602060405180830381865afa158015612bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be09190614903565b905080831115612c1c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401612c599291906149aa565b6020604051808303816000875af1158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906149e8565b905080612cd5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b505050565b6000801b612cea81613783565b612d147f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07836137bf565b505050565b612d238133613b50565b50565b6000612d30613fd8565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612d7e5750825b9050600060018367ffffffffffffffff16148015612db3575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612dc1575080155b15612df8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612e485760018560000160086101000a81548160ff0219169083151502179055505b612e5133614000565b612e59614014565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f0d6000801b336137bf565b50612f387f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336137bf565b508315612f955760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f8c9190614bb2565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fc781613783565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130305750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15613067576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130a1576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a88360405161316a91906144cc565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296131a181613783565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613226576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203613260576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516133349291906147d2565b60405180910390a250505050565b61334b82610c1e565b61335481613783565b61335e83836138c8565b50505050565b60008060005b6007548110156133fa5760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133d89190614a15565b93508060010154836133ea9190614a15565b925050808060010191505061336a565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296134f681613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355c576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a3505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b60036020528060005260406000206000915090505481565b6136676139ca565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136d95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136d091906144e7565b60405180910390fd5b6136e281613a51565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061377c575061377b8261401e565b5b9050919050565b6137948161378f6138c0565b614088565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806137ca613797565b90506137d684846123d2565b6138b457600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138506138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506138ba565b60009150505b92915050565b600033905090565b6000806138d3613797565b90506138df84846123d2565b156139be57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061395a6138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506139c4565b60009150505b92915050565b6139d26138c0565b73ffffffffffffffffffffffffffffffffffffffff166139f061239a565b73ffffffffffffffffffffffffffffffffffffffff1614613a4f57613a136138c0565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613a4691906144e7565b60405180910390fd5b565b6000613a5b613b28565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613baa576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613bf1575060016000838152602001908152602001600020600101544211155b15613c28576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613c82576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613d14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613d5d576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613da6576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e0c91906144e7565b602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d9190614903565b905080821115613e89576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613f059291906149aa565b6020604051808303816000875af1158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906149e8565b905080613f81576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613fc891906144cc565b60405180910390a3505050505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6140086140d9565b61401181614119565b50565b61401c6140d9565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61409282826123d2565b6140d55780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016140cc929190614bcd565b60405180910390fd5b5050565b6140e161419f565b614117576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6141216140d9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036141935760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161418a91906144e7565b60405180910390fd5b61419c81613a51565b50565b60006141a9613fd8565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141f9816141c4565b811461420457600080fd5b50565b600081359050614216816141f0565b92915050565b600060208284031215614232576142316141bf565b5b600061424084828501614207565b91505092915050565b60008115159050919050565b61425e81614249565b82525050565b60006020820190506142796000830184614255565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142aa8261427f565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b6000602082840312156142f3576142f26141bf565b5b6000614301848285016142c8565b91505092915050565b6000819050919050565b61431d8161430a565b811461432857600080fd5b50565b60008135905061433a81614314565b92915050565b600060208284031215614356576143556141bf565b5b60006143648482850161432b565b91505092915050565b6143768161430a565b82525050565b6000602082019050614391600083018461436d565b92915050565b6000819050919050565b6143aa81614397565b81146143b557600080fd5b50565b6000813590506143c7816143a1565b92915050565b600080604083850312156143e4576143e36141bf565b5b60006143f2858286016143b8565b9250506020614403858286016142c8565b9150509250929050565b61441681614397565b82525050565b6144258161429f565b82525050565b600060c082019050614440600083018961440d565b61444d602083018861440d565b61445a6040830187614255565b6144676060830186614255565b614474608083018561441c565b61448160a083018461440d565b979650505050505050565b600080604083850312156144a3576144a26141bf565b5b60006144b18582860161432b565b92505060206144c2858286016142c8565b9150509250929050565b60006020820190506144e1600083018461440d565b92915050565b60006020820190506144fc600083018461441c565b92915050565b600060208284031215614518576145176141bf565b5b6000614526848285016143b8565b91505092915050565b600080600080600060a0868803121561454b5761454a6141bf565b5b6000614559888289016143b8565b955050602061456a888289016143b8565b945050604061457b888289016143b8565b935050606061458c888289016143b8565b925050608061459d888289016143b8565b9150509295509295909350565b6145b381614249565b81146145be57600080fd5b50565b6000813590506145d0816145aa565b92915050565b600080604083850312156145ed576145ec6141bf565b5b60006145fb858286016143b8565b925050602061460c858286016145c1565b9150509250929050565b60008060006060848603121561462f5761462e6141bf565b5b600061463d868287016143b8565b935050602061464e868287016142c8565b925050604061465f868287016143b8565b9150509250925092565b60006101408201905061467f600083018d61440d565b61468c602083018c61440d565b614699604083018b61440d565b6146a6606083018a61440d565b6146b3608083018961440d565b6146c060a0830188614255565b6146cd60c0830187614255565b6146da60e0830186614255565b6146e8610100830185614255565b6146f6610120830184614255565b9b9a5050505050505050505050565b60008060008060008060c08789031215614722576147216141bf565b5b600061473089828a016143b8565b965050602061474189828a016143b8565b955050604061475289828a016143b8565b945050606061476389828a016143b8565b935050608061477489828a016143b8565b92505060a061478589828a016143b8565b9150509295509295509295565b600080604083850312156147a9576147a86141bf565b5b60006147b7858286016142c8565b92505060206147c8858286016143b8565b9150509250929050565b60006040820190506147e7600083018561440d565b6147f4602083018461440d565b9392505050565b60006040820190506148106000830185614255565b61481d602083018461440d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061485e82614397565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148905761488f614824565b5b600182019050919050565b600060a0820190506148b0600083018861440d565b6148bd602083018761440d565b6148ca604083018661440d565b6148d7606083018561440d565b6148e4608083018461440d565b9695505050505050565b6000815190506148fd816143a1565b92915050565b600060208284031215614919576149186141bf565b5b6000614927848285016148ee565b91505092915050565b600061493b82614397565b915061494683614397565b925082820390508181111561495e5761495d614824565b5b92915050565b600081905092915050565b50565b600061497f600083614964565b915061498a8261496f565b600082019050919050565b60006149a082614972565b9150819050919050565b60006040820190506149bf600083018561441c565b6149cc602083018461440d565b9392505050565b6000815190506149e2816145aa565b92915050565b6000602082840312156149fe576149fd6141bf565b5b6000614a0c848285016149d3565b91505092915050565b6000614a2082614397565b9150614a2b83614397565b9250828201905080821115614a4357614a42614824565b5b92915050565b6000614a5482614397565b9150614a5f83614397565b9250828202614a6d81614397565b91508282048414831517614a8457614a83614824565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ac582614397565b9150614ad083614397565b925082614ae057614adf614a8b565b5b828204905092915050565b6000606082019050614b00600083018661441c565b614b0d602083018561441c565b614b1a604083018461440d565b949350505050565b6000606082019050614b37600083018661440d565b614b44602083018561440d565b614b51604083018461440d565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614b9c614b97614b9284614b59565b614b77565b614b63565b9050919050565b614bac81614b81565b82525050565b6000602082019050614bc76000830184614ba3565b92915050565b6000604082019050614be2600083018561441c565b614bef602083018461436d565b939250505056fea2646970667358221220b62a2df386c339c73773cfd5bbae2ef8b1fe4e98c7b355111b802fd05e87f97e64736f6c634300081c0033",
|
1546
|
-
"deployedBytecode": "0x6080604052600436106102765760003560e01c806397ac4a251161014f578063d4bcdfa1116100c1578063ed54890d1161007a578063ed54890d14610995578063efe9c9e2146109d7578063f0a3a97c14610a00578063f0e1bb3e14610a2b578063f2fde38b14610a68578063f5b541a614610a9157610277565b8063d4bcdfa114610861578063d4ee651b1461088a578063d547741f146108b3578063d871b0e3146108dc578063daf9c2101461091a578063eb4c9e9b1461095857610277565b8063a6be83dd11610113578063a6be83dd14610769578063a734f06e14610792578063c1075329146107bd578063c213df78146107e6578063c4428a891461080f578063c4d66de81461083857610277565b806397ac4a25146106705780639bb92c4e146106ad5780639da64ac2146106d6578063a09686c414610713578063a217fddf1461073e57610277565b80636fed6940116101e85780638a568299116101ac5780638a568299146105435780638c65c81f1461056e5780638d52e555146105b45780638da5cb5b146105dd57806391d148541461060857806395082d251461064557610277565b80636fed694014610481578063715018a6146104be5780637ad226dc146104d55780637cf30c60146104fe5780638952ac1e1461052757610277565b80632f2ff15d1161023a5780632f2ff15d1461038757806336568abe146103b057806342683c67146103d95780634b60ce77146104045780635a1e6ca11461042f5780635af6df4c1461045857610277565b806301ffc9a7146102795780631c88705d146102b6578063248a9ca3146102df57806327ac0c581461031c57806328f3e6581461034557610277565b5b005b34801561028557600080fd5b506102a0600480360381019061029b919061421c565b610abc565b6040516102ad9190614264565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d891906142dd565b610ace565b005b3480156102eb57600080fd5b5061030660048036038101906103019190614340565b610c1e565b604051610313919061437c565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906142dd565b610c4c565b005b34801561035157600080fd5b5061036c600480360381019061036791906143cd565b610c88565b60405161037e9695949392919061442b565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061448c565b610d54565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061448c565b610d76565b005b3480156103e557600080fd5b506103ee610df1565b6040516103fb91906144cc565b60405180910390f35b34801561041057600080fd5b50610419610df7565b60405161042691906144e7565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190614502565b610e1d565b005b34801561046457600080fd5b5061047f600480360381019061047a919061452f565b610f8e565b005b34801561048d57600080fd5b506104a860048036038101906104a39190614502565b61128b565b6040516104b591906144cc565b60405180910390f35b3480156104ca57600080fd5b506104d36112a3565b005b3480156104e157600080fd5b506104fc60048036038101906104f791906143cd565b6112b7565b005b34801561050a57600080fd5b50610525600480360381019061052091906145d6565b6118ec565b005b610541600480360381019061053c9190614616565b6119db565b005b34801561054f57600080fd5b50610558612210565b60405161056591906144cc565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614502565b612216565b6040516105ab9a99989796959493929190614669565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d691906145d6565b6122ab565b005b3480156105e957600080fd5b506105f261239a565b6040516105ff91906144e7565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061448c565b6123d2565b60405161063c9190614264565b60405180910390f35b34801561065157600080fd5b5061065a61244b565b60405161066791906144cc565b60405180910390f35b34801561067c57600080fd5b5061069760048036038101906106929190614502565b612457565b6040516106a49190614264565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf91906145d6565b61254d565b005b3480156106e257600080fd5b506106fd60048036038101906106f891906142dd565b61263c565b60405161070a91906144cc565b60405180910390f35b34801561071f57600080fd5b506107286126a9565b60405161073591906144cc565b60405180910390f35b34801561074a57600080fd5b506107536126b3565b604051610760919061437c565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190614705565b6126ba565b005b34801561079e57600080fd5b506107a76129e4565b6040516107b491906144e7565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614792565b6129e9565b005b3480156107f257600080fd5b5061080d600480360381019061080891906142dd565b612cdd565b005b34801561081b57600080fd5b5061083660048036038101906108319190614502565b612d19565b005b34801561084457600080fd5b5061085f600480360381019061085a91906142dd565b612d26565b005b34801561086d57600080fd5b5061088860048036038101906108839190614792565b612f9d565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614792565b613177565b005b3480156108bf57600080fd5b506108da60048036038101906108d5919061448c565b613342565b005b3480156108e857600080fd5b5061090360048036038101906108fe91906142dd565b613364565b6040516109119291906147d2565b60405180910390f35b34801561092657600080fd5b50610941600480360381019061093c91906142dd565b613400565b60405161094f9291906147fb565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906142dd565b613431565b60405161098c91906144cc565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906143cd565b613449565b6040516109ce9695949392919061442b565b60405180910390f35b3480156109e357600080fd5b506109fe60048036038101906109f991906142dd565b6134cc565b005b348015610a0c57600080fd5b50610a15613623565b604051610a22919061437c565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190614502565b613647565b604051610a5f91906144cc565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a91906142dd565b61365f565b005b348015610a9d57600080fd5b50610aa66136e5565b604051610ab3919061437c565b60405180910390f35b6000610ac782613709565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610af881613783565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b7d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610c29613797565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610c5981613783565b610c837f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836137bf565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d5d82610c1e565b610d6681613783565b610d7083836137bf565b50505050565b610d7e6138c0565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dec82826138c8565b505050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610e4781613783565b6001600083815260200190815260200160002060050160009054906101000a900460ff16610ea1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff1615610efc576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600084815260200190815260200160002060050160016101000a81548160ff021916908315150217905550817fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760036000858152602001908152602001600020546004600086815260200190815260200160002054604051610f829291906147d2565b60405180910390a25050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610fb881613783565b42861015610ff2576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161102b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611065576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361109f576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806110ad57508382115b156110e4576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808881526020018781526020018681526020018581526020018481526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061123d90614853565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133888888888860405161127a95949392919061489b565b60405180910390a250505050505050565b60046020528060005260406000206000915090505481565b6112ab6139ca565b6112b56000613a51565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296112e181613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160009054906101000a900460ff166113a1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600084815260200190815260200160002060050160039054906101000a900460ff166113fb576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001540361148d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156114d6576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff161561151f576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600301549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115c457478111156115bf576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167e565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ff91906144e7565b602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190614903565b90508082111561167c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60018360020160016101000a81548160ff02191690831515021790555082600001546003600088815260200190815260200160002060008282546116c29190614930565b925050819055508260000154600860008282546116df9190614930565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c35760008573ffffffffffffffffffffffffffffffffffffffff168260405161174090614995565b60006040518083038185875af1925050503d806000811461177d576040519150601f19603f3d011682016040523d82523d6000602084013e611782565b606091505b50509050806117bd576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061187e565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b81526004016118009291906149aa565b6020604051808303816000875af115801561181f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184391906149e8565b90508061187c576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3846040516118dc91906144cc565b60405180910390a4505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961191681613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff16611970576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e911836040516119ce9190614264565b60405180910390a2505050565b6119e483612457565b611a1a576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611a9f576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b165760003403611b0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611b54565b60008203611b50576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611bb55750600185611bb19190614a15565b8114155b15611c15576001600086815260200190815260200160002060050160049054906101000a900460ff16611c14576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611c729190614a49565b611c7c9190614aba565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611ce49190614a15565b9050600160008a815260200190815260200160002060040154811115611d36576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611d579190614a15565b9050600160008b815260200190815260200160002060020154811115611da9576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611e9a5760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611e1c93929190614aeb565b6020604051808303816000875af1158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906149e8565b905080611e98576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611ed59190614a49565b611edf9190614aba565b90506000846000015403611fb757600460008c81526020019081526020016000206000815480929190611f1190614853565b919050555060018b611f239190614a15565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550612061565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361202e57878460030160008282546120229190614a15565b92505081905550612060565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b848460000160008282546120759190614a15565b92505081905550808460010160008282546120909190614a15565b9250508190555084600360008d815260200190815260200160002060008282546120ba9190614a15565b9250508190555084600860008282546120d39190614a15565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106121995760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f8152602001908152602001600020546040516121909291906147d2565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516121fb93929190614b22565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296122d581613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661232f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161238d9190614264565b60405180910390a2505050565b6000806123a5613b28565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806123dd613797565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff1661248a5760009050612548565b6001600083815260200190815260200160002060050160019054906101000a900460ff16156124bc5760009050612548565b60016000838152602001908152602001600020600001544210156124e35760009050612548565b600160008381526020019081526020016000206001015442111561250a5760009050612548565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106125435760009050612548565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961257781613783565b6001600084815260200190815260200160002060050160009054906101000a900460ff166125d1576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a08360405161262f9190614264565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036126935760009150506126a4565b6001816126a09190614930565b9150505b919050565b6000600754905090565b6000801b81565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296126e481613783565b6001600088815260200190815260200160002060050160009054906101000a900460ff1661273e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600088815260200190815260200160002060050160019054906101000a900460ff1615612799576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160008881526020019081526020016000206000015442106127e8576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42861015612822576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85851161285b576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612895576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083036128cf576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214806128dd57508382115b15612914576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600089815260200190815260200160002060000181905550846001600089815260200190815260200160002060010181905550836001600089815260200190815260200160002060020181905550826001600089815260200190815260200160002060030181905550816001600089815260200190815260200160002060040181905550867fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b915959687878787876040516129d395949392919061489b565b60405180910390a250505050505050565b600081565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07612a1381613783565b60008203612a4d576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b645747821115612abb576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1683604051612ae190614995565b60006040518083038185875af1925050503d8060008114612b1e576040519150601f19603f3d011682016040523d82523d6000602084013e612b23565b606091505b5050905080612b5e576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612cd8565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b9f91906144e7565b602060405180830381865afa158015612bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be09190614903565b905080831115612c1c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401612c599291906149aa565b6020604051808303816000875af1158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906149e8565b905080612cd5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b505050565b6000801b612cea81613783565b612d147f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07836137bf565b505050565b612d238133613b50565b50565b6000612d30613fd8565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612d7e5750825b9050600060018367ffffffffffffffff16148015612db3575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612dc1575080155b15612df8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612e485760018560000160086101000a81548160ff0219169083151502179055505b612e5133614000565b612e59614014565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612f0d6000801b336137bf565b50612f387f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336137bf565b508315612f955760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f8c9190614bb2565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fc781613783565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130305750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15613067576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130a1576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a88360405161316a91906144cc565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296131a181613783565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613226576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203613260576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516133349291906147d2565b60405180910390a250505050565b61334b82610c1e565b61335481613783565b61335e83836138c8565b50505050565b60008060005b6007548110156133fa5760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154846133d89190614a15565b93508060010154836133ea9190614a15565b925050808060010191505061336a565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296134f681613783565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355c576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a3505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b60036020528060005260406000206000915090505481565b6136676139ca565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136d95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016136d091906144e7565b60405180910390fd5b6136e281613a51565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061377c575061377b8261401e565b5b9050919050565b6137948161378f6138c0565b614088565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806137ca613797565b90506137d684846123d2565b6138b457600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138506138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506138ba565b60009150505b92915050565b600033905090565b6000806138d3613797565b90506138df84846123d2565b156139be57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061395a6138c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506139c4565b60009150505b92915050565b6139d26138c0565b73ffffffffffffffffffffffffffffffffffffffff166139f061239a565b73ffffffffffffffffffffffffffffffffffffffff1614613a4f57613a136138c0565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613a4691906144e7565b60405180910390fd5b565b6000613a5b613b28565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613baa576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613bf1575060016000838152602001908152602001600020600101544211155b15613c28576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613c82576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613d14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff1615613d5d576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613da6576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816001015490506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613e0c91906144e7565b602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d9190614903565b905080821115613e89576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018360020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86856040518363ffffffff1660e01b8152600401613f059291906149aa565b6020604051808303816000875af1158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906149e8565b905080613f81576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16867f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c85604051613fc891906144cc565b60405180910390a3505050505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6140086140d9565b61401181614119565b50565b61401c6140d9565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61409282826123d2565b6140d55780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016140cc929190614bcd565b60405180910390fd5b5050565b6140e161419f565b614117576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6141216140d9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036141935760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161418a91906144e7565b60405180910390fd5b61419c81613a51565b50565b60006141a9613fd8565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6141f9816141c4565b811461420457600080fd5b50565b600081359050614216816141f0565b92915050565b600060208284031215614232576142316141bf565b5b600061424084828501614207565b91505092915050565b60008115159050919050565b61425e81614249565b82525050565b60006020820190506142796000830184614255565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142aa8261427f565b9050919050565b6142ba8161429f565b81146142c557600080fd5b50565b6000813590506142d7816142b1565b92915050565b6000602082840312156142f3576142f26141bf565b5b6000614301848285016142c8565b91505092915050565b6000819050919050565b61431d8161430a565b811461432857600080fd5b50565b60008135905061433a81614314565b92915050565b600060208284031215614356576143556141bf565b5b60006143648482850161432b565b91505092915050565b6143768161430a565b82525050565b6000602082019050614391600083018461436d565b92915050565b6000819050919050565b6143aa81614397565b81146143b557600080fd5b50565b6000813590506143c7816143a1565b92915050565b600080604083850312156143e4576143e36141bf565b5b60006143f2858286016143b8565b9250506020614403858286016142c8565b9150509250929050565b61441681614397565b82525050565b6144258161429f565b82525050565b600060c082019050614440600083018961440d565b61444d602083018861440d565b61445a6040830187614255565b6144676060830186614255565b614474608083018561441c565b61448160a083018461440d565b979650505050505050565b600080604083850312156144a3576144a26141bf565b5b60006144b18582860161432b565b92505060206144c2858286016142c8565b9150509250929050565b60006020820190506144e1600083018461440d565b92915050565b60006020820190506144fc600083018461441c565b92915050565b600060208284031215614518576145176141bf565b5b6000614526848285016143b8565b91505092915050565b600080600080600060a0868803121561454b5761454a6141bf565b5b6000614559888289016143b8565b955050602061456a888289016143b8565b945050604061457b888289016143b8565b935050606061458c888289016143b8565b925050608061459d888289016143b8565b9150509295509295909350565b6145b381614249565b81146145be57600080fd5b50565b6000813590506145d0816145aa565b92915050565b600080604083850312156145ed576145ec6141bf565b5b60006145fb858286016143b8565b925050602061460c858286016145c1565b9150509250929050565b60008060006060848603121561462f5761462e6141bf565b5b600061463d868287016143b8565b935050602061464e868287016142c8565b925050604061465f868287016143b8565b9150509250925092565b60006101408201905061467f600083018d61440d565b61468c602083018c61440d565b614699604083018b61440d565b6146a6606083018a61440d565b6146b3608083018961440d565b6146c060a0830188614255565b6146cd60c0830187614255565b6146da60e0830186614255565b6146e8610100830185614255565b6146f6610120830184614255565b9b9a5050505050505050505050565b60008060008060008060c08789031215614722576147216141bf565b5b600061473089828a016143b8565b965050602061474189828a016143b8565b955050604061475289828a016143b8565b945050606061476389828a016143b8565b935050608061477489828a016143b8565b92505060a061478589828a016143b8565b9150509295509295509295565b600080604083850312156147a9576147a86141bf565b5b60006147b7858286016142c8565b92505060206147c8858286016143b8565b9150509250929050565b60006040820190506147e7600083018561440d565b6147f4602083018461440d565b9392505050565b60006040820190506148106000830185614255565b61481d602083018461440d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061485e82614397565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148905761488f614824565b5b600182019050919050565b600060a0820190506148b0600083018861440d565b6148bd602083018761440d565b6148ca604083018661440d565b6148d7606083018561440d565b6148e4608083018461440d565b9695505050505050565b6000815190506148fd816143a1565b92915050565b600060208284031215614919576149186141bf565b5b6000614927848285016148ee565b91505092915050565b600061493b82614397565b915061494683614397565b925082820390508181111561495e5761495d614824565b5b92915050565b600081905092915050565b50565b600061497f600083614964565b915061498a8261496f565b600082019050919050565b60006149a082614972565b9150819050919050565b60006040820190506149bf600083018561441c565b6149cc602083018461440d565b9392505050565b6000815190506149e2816145aa565b92915050565b6000602082840312156149fe576149fd6141bf565b5b6000614a0c848285016149d3565b91505092915050565b6000614a2082614397565b9150614a2b83614397565b9250828201905080821115614a4357614a42614824565b5b92915050565b6000614a5482614397565b9150614a5f83614397565b9250828202614a6d81614397565b91508282048414831517614a8457614a83614824565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ac582614397565b9150614ad083614397565b925082614ae057614adf614a8b565b5b828204905092915050565b6000606082019050614b00600083018661441c565b614b0d602083018561441c565b614b1a604083018461440d565b949350505050565b6000606082019050614b37600083018661440d565b614b44602083018561440d565b614b51604083018461440d565b949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b6000614b9c614b97614b9284614b59565b614b77565b614b63565b9050919050565b614bac81614b81565b82525050565b6000602082019050614bc76000830184614ba3565b92915050565b6000604082019050614be2600083018561441c565b614bef602083018461436d565b939250505056fea2646970667358221220b62a2df386c339c73773cfd5bbae2ef8b1fe4e98c7b355111b802fd05e87f97e64736f6c634300081c0033",
|
1545
|
+
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161250990816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611ce5575080631c88705d14611c67578063248a9ca314611c4957806327ac0c5814611c2057806328f3e6581461035e5780632f2ff15d14611bef57806336568abe14611ba957806342683c6714611b8b5780634b60ce7714611b625780635a1e6ca114611aa65780635af6df4c146118cc5780636fed6940146118a0578063715018a6146118365780637ad226dc146115c15780637cf30c601461153e5780638952ac1e1461112e5780638a56829914610e5f5780638c65c81f1461108f5780638d52e5551461100b5780638da5cb5b14610fd557806391d1485414610f7b57806395082d2514610f5857806397ac4a2514610f305780639bb92c4e14610ea85780639da64ac214610e7d578063a09686c414610e5f578063a217fddf14610caa578063a6be83dd14610cc6578063a734f06e14610caa578063c107532914610b12578063c213df7814610ae9578063c4428a8914610861578063c4d66de8146106c9578063d4bcdfa1146105e3578063d4ee651b1461052c578063d547741f146104f6578063d871b0e314610471578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611d38565b61026d6123ef565b611f21565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611d38565b6102fa611f97565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611d4e565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611d38565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611d38565b166000526000602052604080600020600160ff825416910154825191151582526020820152f35b346102445760203660031901126102445761048a611d38565b600754600091829182916001600160a01b03165b8185106104b5576040848482519182526020820152f35b90916104ec600191866000526002602052826104e36040806000206000908882526020522097885490611e3a565b96015490611e3a565b940193919061049e565b346102445760403660031901126102445761000f600435610515611d4e565b9061052761052282611d83565b61205c565b61234f565b3461024457604036600319011261024457610545611d38565b60243590610551611f97565b60018060a01b03169081600052600060205260ff60406000205416156105d25780156105c157600082815260208181526040918290206001018054908490558251908152908101929092527f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c191a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b34610244576040366003190112610244576105fc611d38565b60243590610608611f97565b6001600160a01b0316908115801590816106c1575b5061034d5780156105c15760405190604082019082821067ffffffffffffffff8311176106ab577fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a892602092604052600181526001838201838152866000526000855261069e604060002093511515849060ff801983541691151516179055565b51910155604051908152a2005b634e487b7160e01b600052604160045260246000fd5b90508361061d565b34610244576020366003190112610244576106e2611d38565b6000805160206124b4833981519152549060ff8260401c16159167ffffffffffffffff811680159081610859575b600114908161084f575b159081610846575b506108355767ffffffffffffffff1981166001176000805160206124b48339815191525582610808575b50610755612425565b61075d612425565b61076633611f21565b61076e612425565b6001600160a01b0316801561034d576bffffffffffffffffffffffff60a01b600654161760065561079e3361221e565b506107a8336120a6565b506107af57005b68ff0000000000000000196000805160206124b483398151915254166000805160206124b4833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001176000805160206124b4833981519152558261074c565b63f92ee8a960e01b60005260046000fd5b90501584610722565b303b15915061071a565b849150610710565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c161580610abd575b610aac5780600052600160205260ff60056040600020015460101c1615610a9b5760008181526002602090815260408083203384529091529020805490919015610a8a576002820180549260ff8416610a795760ff8460081c16610a6857600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa908115610a1957600091610a36575b508411610a255760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af1908115610a19576000916109ea575b50156109d9576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b610a0c915060203d602011610a12575b610a048183611da4565b810190611de2565b836109a5565b503d6109fa565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d602011610a60575b81610a5160209383611da4565b8101031261024457518561094e565b3d9150610a44565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156108ae565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610b05611d38565b610b0d612009565b612162565b3461024457604036600319011261024457610b2b611d38565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610c71578115610a8a576001600160a01b031680610bad5750478111610a2557600080808093335af1610b94611dfa565b5015610b9c57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa908115610a1957600091610c3f575b508211610a255760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af1908115610a1957600091610c20575b50156109d957005b610c39915060203d602011610a1257610a048183611da4565b81610c18565b90506020813d602011610c69575b81610c5a60209383611da4565b81010312610244575183610bd8565b3d9150610c4d565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610cf1611f97565b85600052600160205260ff6005604060002001541615610ad85785600052600160205260ff60056040600020015460081c16610e4e57856000526001602052604060002054421015610e3d57428310610e2c5782841115610e1b578115610e0a578415610df95780158015610df0575b610ddf5760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610d61565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610ea0610e9b611d38565b611ef4565b604051908152f35b3461024457610eb636611d64565b610ebe611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610f4e600435611e5a565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610f94611d4e565b60043560005260008051602061249483398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461024457600036600319011261024457600080516020612474833981519152546040516001600160a01b039091168152602090f35b346102445761101936611d64565b611021611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610f25565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611145611d4e565b6044359161115281611e5a565b15610aac5760018060a01b0382169283600052600060205260ff60406000205416156105d257831590811561153257503415610a8a5734925b336000526005602052604060002054801515908161151d575b506114f0575b846000526000602052670de0b6b3a76400006111ce60016040600020015486611e47565b049083600052600260205260408060002060009060018060a01b033316825260205220926111fd838554611e3a565b856000526001602052600460406000200154106114df5784600052600360205261122c83604060002054611e3a565b856000526001602052600260406000200154106114ce571561145f575b83600052600160205261126460036040600020015483611e47565b8460005260016020526002604060002001549081156114495704928054156000146114165784600052600460205260406000206112a18154611dc6565b90556001850191828611611400576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b6112f8838254611e3a565b815501611306838254611e3a565b90558260005260036020526040600020611321828254611e3a565b905561132f81600854611e3a565b6008558260005260036020526040600020548360005260016020526002604060002001541115611392575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a261135a565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b031686036105d25780600360019201611442878254611e3a565b90556112ed565b634e487b7160e01b600052601260045260246000fd5b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af1908115610a19576000916114af575b50611249576312171d8360e31b60005260046000fd5b6114c8915060203d602011610a1257610a048183611da4565b87611499565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166111aa5763413d435b60e11b60005260046000fd5b600185019150818511611400571415866111a4565b8015610a8a579261118b565b346102445761154c36611d64565b611554611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610f25565b34610244576040366003190112610244576004356115dd611d4e565b906115e6611f97565b6001600160a01b0382169081156118255780600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460181c161561181457806000526002602052604080600020600090848252602052208054938415610a8a57600282019081549560ff8716610a795760ff8760081c16610a68576003840154601088901c6001600160a01b031697909488159283156117a257478711610a255786956101006116c7945b61ff0019161790558760005260036020526116bc6040600020918254611dd5565b905554600854611dd5565b6008551561171457600080809381935af16116e0611dfa565b5015610b9c5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af1908115610a1957600091611783575b50156109d95760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161170b565b61179c915060203d602011610a1257610a048183611da4565b85611754565b6040516370a0823160e01b81523060048201526020816024818e5afa908115610a19576000916117e2575b508711610a255786956101006116c79461169b565b90506020813d60201161180c575b816117fd60209383611da4565b8101031261024457518b6117cd565b3d91506117f0565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761184f6123ef565b60008051602061247483398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118f4611f97565b428210610e2c5781831115610e1b578315610e0a578015610df95784158015611a9d575b610ddf57600754946040519161014083019583871067ffffffffffffffff8811176106ab57611a64610dda947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133986040528681526001611a478b611a2c602085018c815260408601888152611a04600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b611a6f600754611dc6565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b50838511611918565b3461024457602036600319011261024457600435611ac2611f97565b80600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c16610e4e57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611bc2611d4e565b336001600160a01b03821603611bde5761000f9060043561234f565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611c0e611d4e565b90611c1b61052282611d83565b6122b8565b346102445760203660031901126102445761000f611c3c611d38565b611c44612009565b6120a6565b34610244576020366003190112610244576020610ea0600435611d83565b3461024457602036600319011261024457611c80611d38565b611c88611f97565b6001600160a01b031660008181526020819052604090205460ff16156105d257806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611d27575b5015158152f35b6301ffc9a760e01b14905083611d20565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b60005260008051602061249483398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff8211176106ab57604052565b60001981146114005760010190565b9190820391821161140057565b90816020910312610244575180151581036102445790565b3d15611e35573d9067ffffffffffffffff82116106ab5760405191611e29601f8201601f191660200184611da4565b82523d6000602084013e565b606090565b9190820180921161140057565b8181029291811591840414171561140057565b80600052600160205260ff6005604060002001541615611eee5780600052600160205260ff60056040600020015460081c16611eee578060005260016020526040600020544210611eee578060005260016020526001604060002001544211611eee578060005260036020526040600020549060005260016020526002604060002001541115611ee957600190565b600090565b50600090565b6001600160a01b03166000908152600560205260409020548015611eee5760001981019081116114005790565b6001600160a01b03168015611f815760008051602061247483398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615611fd057565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561204257565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206124948339815191526020908152604080832033845290915290205460ff161561208e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611eee576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff16611eee576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611eee576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206124548339815191528180a4600190565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff16612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206124548339815191529080a4600190565b5050600090565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b600080516020612474833981519152546001600160a01b0316330361241057565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206124b48339815191525460401c161561244257565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208ca5cb10f57094e2c9800545dd8ef8062a5acffd4f43c90527c1ec5e052d71f864736f6c634300081c0033",
|
1546
|
+
"deployedBytecode": "0x6080806040526004361015610011575b005b60003560e01c90816301ffc9a714611ce5575080631c88705d14611c67578063248a9ca314611c4957806327ac0c5814611c2057806328f3e6581461035e5780632f2ff15d14611bef57806336568abe14611ba957806342683c6714611b8b5780634b60ce7714611b625780635a1e6ca114611aa65780635af6df4c146118cc5780636fed6940146118a0578063715018a6146118365780637ad226dc146115c15780637cf30c601461153e5780638952ac1e1461112e5780638a56829914610e5f5780638c65c81f1461108f5780638d52e5551461100b5780638da5cb5b14610fd557806391d1485414610f7b57806395082d2514610f5857806397ac4a2514610f305780639bb92c4e14610ea85780639da64ac214610e7d578063a09686c414610e5f578063a217fddf14610caa578063a6be83dd14610cc6578063a734f06e14610caa578063c107532914610b12578063c213df7814610ae9578063c4428a8914610861578063c4d66de8146106c9578063d4bcdfa1146105e3578063d4ee651b1461052c578063d547741f146104f6578063d871b0e314610471578063daf9c21014610429578063eb4c9e9b146103ef578063ed54890d1461035e578063efe9c9e2146102d9578063f0a3a97c1461029e578063f0e1bb3e14610272578063f2fde38b146102495763f5b541a61461020957005b346102445760003660031901126102445760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b600080fd5b346102445760203660031901126102445761000f610265611d38565b61026d6123ef565b611f21565b346102445760203660031901126102445760043560005260036020526020604060002054604051908152f35b346102445760003660031901126102445760206040517f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d078152f35b34610244576020366003190112610244576102f2611d38565b6102fa611f97565b6001600160a01b0316801561034d57600680546001600160a01b0319811683179091556001600160a01b03167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa9600080a3005b630f58058360e11b60005260046000fd5b34610244576040366003190112610244576040610379611d4e565b6004356000908152600260208181528483206001600160a01b0394851684528152939091208054600182015492820154600390920154604080519283529582019390935260ff808316151595820195909552600882901c9094161515606085015260101c909116608083015260a082015260c090f35b34610244576020366003190112610244576001600160a01b03610410611d38565b1660005260056020526020604060002054604051908152f35b34610244576020366003190112610244576001600160a01b0361044a611d38565b166000526000602052604080600020600160ff825416910154825191151582526020820152f35b346102445760203660031901126102445761048a611d38565b600754600091829182916001600160a01b03165b8185106104b5576040848482519182526020820152f35b90916104ec600191866000526002602052826104e36040806000206000908882526020522097885490611e3a565b96015490611e3a565b940193919061049e565b346102445760403660031901126102445761000f600435610515611d4e565b9061052761052282611d83565b61205c565b61234f565b3461024457604036600319011261024457610545611d38565b60243590610551611f97565b60018060a01b03169081600052600060205260ff60406000205416156105d25780156105c157600082815260208181526040918290206001018054908490558251908152908101929092527f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c191a2005b637841c2c960e11b60005260046000fd5b6307c241ad60e51b60005260046000fd5b34610244576040366003190112610244576105fc611d38565b60243590610608611f97565b6001600160a01b0316908115801590816106c1575b5061034d5780156105c15760405190604082019082821067ffffffffffffffff8311176106ab577fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a892602092604052600181526001838201838152866000526000855261069e604060002093511515849060ff801983541691151516179055565b51910155604051908152a2005b634e487b7160e01b600052604160045260246000fd5b90508361061d565b34610244576020366003190112610244576106e2611d38565b6000805160206124b4833981519152549060ff8260401c16159167ffffffffffffffff811680159081610859575b600114908161084f575b159081610846575b506108355767ffffffffffffffff1981166001176000805160206124b48339815191525582610808575b50610755612425565b61075d612425565b61076633611f21565b61076e612425565b6001600160a01b0316801561034d576bffffffffffffffffffffffff60a01b600654161760065561079e3361221e565b506107a8336120a6565b506107af57005b68ff0000000000000000196000805160206124b483398151915254166000805160206124b4833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001176000805160206124b4833981519152558261074c565b63f92ee8a960e01b60005260046000fd5b90501584610722565b303b15915061071a565b849150610710565b346102445760203660031901126102445760043580600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c161580610abd575b610aac5780600052600160205260ff60056040600020015460101c1615610a9b5760008181526002602090815260408083203384529091529020805490919015610a8a576002820180549260ff8416610a795760ff8460081c16610a6857600101546006546040516370a0823160e01b815230600482015291949190602090829060249082906001600160a01b03165afa908115610a1957600091610a36575b508411610a255760ff1916600117905560065460405163a9059cbb60e01b8152336004820152602481018490529060209082906001600160a01b0316816000816044810103925af1908115610a19576000916109ea575b50156109d9576040519182527f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c60203393a3005b6312171d8360e31b60005260046000fd5b610a0c915060203d602011610a12575b610a048183611da4565b810190611de2565b836109a5565b503d6109fa565b6040513d6000823e3d90fd5b631e9acf1760e31b60005260046000fd5b90506020813d602011610a60575b81610a5160209383611da4565b8101031261024457518561094e565b3d9150610a44565b63542f378d60e11b60005260046000fd5b630c8d9eab60e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b6371642c7760e11b60005260046000fd5b633df07da560e01b60005260046000fd5b508060005260016020526001604060002001544211156108ae565b63266f368560e01b60005260046000fd5b346102445760203660031901126102445761000f610b05611d38565b610b0d612009565b612162565b3461024457604036600319011261024457610b2b611d38565b3360009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb76020526040902054602435919060ff1615610c71578115610a8a576001600160a01b031680610bad5750478111610a2557600080808093335af1610b94611dfa565b5015610b9c57005b630db2c7f160e31b60005260046000fd5b6040516370a0823160e01b8152306004820152602081602481855afa908115610a1957600091610c3f575b508211610a255760405163a9059cbb60e01b81523360048201526024810192909252602090829060449082906000905af1908115610a1957600091610c20575b50156109d957005b610c39915060203d602011610a1257610a048183611da4565b81610c18565b90506020813d602011610c69575b81610c5a60209383611da4565b81010312610244575183610bd8565b3d9150610c4d565b63e2517d3f60e01b600052336004527f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0760245260446000fd5b3461024457600036600319011261024457602060405160008152f35b346102445760c03660031901126102445760043560843560443560243560643560a435610cf1611f97565b85600052600160205260ff6005604060002001541615610ad85785600052600160205260ff60056040600020015460081c16610e4e57856000526001602052604060002054421015610e3d57428310610e2c5782841115610e1b578115610e0a578415610df95780158015610df0575b610ddf5760008681526001602081815260409283902086815591820187905560028201859055600382018890556004909101839055815194855284019490945292820152606081019290925260808201527fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596908060a081015b0390a2005b6390e3cae960e01b60005260046000fd5b50818111610d61565b6305d7ba1960e11b60005260046000fd5b63e2494de760e01b60005260046000fd5b6338af65f760e01b60005260046000fd5b632ca4094f60e21b60005260046000fd5b634eb5402b60e01b60005260046000fd5b6307af775360e11b60005260046000fd5b34610244576000366003190112610244576020600754604051908152f35b34610244576020366003190112610244576020610ea0610e9b611d38565b611ef4565b604051908152f35b3461024457610eb636611d64565b610ebe611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805462ff0000191683151560101b62ff0000161790557f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0915b6040519015158152a2005b34610244576020366003190112610244576020610f4e600435611e5a565b6040519015158152f35b34610244576000366003190112610244576020604051670de0b6b3a76400008152f35b3461024457604036600319011261024457610f94611d4e565b60043560005260008051602061249483398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461024457600036600319011261024457600080516020612474833981519152546040516001600160a01b039091168152602090f35b346102445761101936611d64565b611021611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805464ff000000001916831515831b64ff00000000161790557f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c91610f25565b34610244576020366003190112610244576004356000526001602052610140604060002060ff815491600181015490600281015460038201549060056004840154930154936040519687526020870152604086015260608501526080840152818116151560a0840152818160081c16151560c0840152818160101c16151560e0840152818160181c16151561010084015260201c161515610120820152f35b606036600319011261024457600435611145611d4e565b6044359161115281611e5a565b15610aac5760018060a01b0382169283600052600060205260ff60406000205416156105d257831590811561153257503415610a8a5734925b336000526005602052604060002054801515908161151d575b506114f0575b846000526000602052670de0b6b3a76400006111ce60016040600020015486611e47565b049083600052600260205260408060002060009060018060a01b033316825260205220926111fd838554611e3a565b856000526001602052600460406000200154106114df5784600052600360205261122c83604060002054611e3a565b856000526001602052600260406000200154106114ce571561145f575b83600052600160205261126460036040600020015483611e47565b8460005260016020526002604060002001549081156114495704928054156000146114165784600052600460205260406000206112a18154611dc6565b90556001850191828611611400576001923360005260056020526040600020556002820190815490620100008560b01b039060101b1690620100008560b01b0319161790558560038201555b6112f8838254611e3a565b815501611306838254611e3a565b90558260005260036020526040600020611321828254611e3a565b905561132f81600854611e3a565b6008558260005260036020526040600020548360005260016020526002604060002001541115611392575b604051938452602084015260408301527fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d260603393a4005b826000526001602052600560406000200161010061ff0019825416179055826000526003602052827fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a261135a565b634e487b7160e01b600052601160045260246000fd5b600281015490915060101c6001600160a01b031686036105d25780600360019201611442878254611e3a565b90556112ed565b634e487b7160e01b600052601260045260246000fd5b6040516323b872dd60e01b81523360048201523060248201526044810186905260208160648160008b5af1908115610a19576000916114af575b50611249576312171d8360e31b60005260046000fd5b6114c8915060203d602011610a1257610a048183611da4565b87611499565b63397bb34360e01b60005260046000fd5b631cd861cd60e01b60005260046000fd5b82600052600160205260ff60056040600020015460201c166111aa5763413d435b60e11b60005260046000fd5b600185019150818511611400571415866111a4565b8015610a8a579261118b565b346102445761154c36611d64565b611554611f97565b81600052600160205260ff6005604060002001541615610ad8576000828152600160209081526040909120600501805463ff000000191683151560181b63ff000000161790557f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e91191610f25565b34610244576040366003190112610244576004356115dd611d4e565b906115e6611f97565b6001600160a01b0382169081156118255780600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460181c161561181457806000526002602052604080600020600090848252602052208054938415610a8a57600282019081549560ff8716610a795760ff8760081c16610a68576003840154601088901c6001600160a01b031697909488159283156117a257478711610a255786956101006116c7945b61ff0019161790558760005260036020526116bc6040600020918254611dd5565b905554600854611dd5565b6008551561171457600080809381935af16116e0611dfa565b5015610b9c5760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a3915b604051908152a4005b60405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101919091526020816044816000895af1908115610a1957600091611783575b50156109d95760207f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a39161170b565b61179c915060203d602011610a1257610a048183611da4565b85611754565b6040516370a0823160e01b81523060048201526020816024818e5afa908115610a19576000916117e2575b508711610a255786956101006116c79461169b565b90506020813d60201161180c575b816117fd60209383611da4565b8101031261024457518b6117cd565b3d91506117f0565b63089c998760e01b60005260046000fd5b630702b3d960e41b60005260046000fd5b346102445760003660031901126102445761184f6123ef565b60008051602061247483398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102445760203660031901126102445760043560005260046020526020604060002054604051908152f35b346102445760a0366003190112610244576084356044356024356004356064356118f4611f97565b428210610e2c5781831115610e1b578315610e0a578015610df95784158015611a9d575b610ddf57600754946040519161014083019583871067ffffffffffffffff8811176106ab57611a64610dda947f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133986040528681526001611a478b611a2c602085018c815260408601888152611a04600560608901988c8a528d6080820190815260a082019a8a8c5260c08301956000875260e08401976000895261010085019a60008c5261012086019d8e5260005260016020526040600020945185555160018501555160028401555160038301555160048201550197511515889060ff801983541691151516179055565b518654915162ffff001990921690151560081b61ff00161790151560101b62ff000016178555565b51835463ff000000191690151560181b63ff00000016178355565b51815464ff00000000191690151560201b64ff0000000016179055565b611a6f600754611dc6565b600755604051958695869192608093969594919660a084019784526020840152604083015260608201520152565b50838511611918565b3461024457602036600319011261024457600435611ac2611f97565b80600052600160205260ff6005604060002001541615610ad85780600052600160205260ff60056040600020015460081c16610e4e57806000526001602052600560406000200161010061ff00198254161790558060005260036020527fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad5760408060002054836000526004602052816000205482519182526020820152a2005b34610244576000366003190112610244576006546040516001600160a01b039091168152602090f35b34610244576000366003190112610244576020600854604051908152f35b3461024457604036600319011261024457611bc2611d4e565b336001600160a01b03821603611bde5761000f9060043561234f565b63334bd91960e11b60005260046000fd5b346102445760403660031901126102445761000f600435611c0e611d4e565b90611c1b61052282611d83565b6122b8565b346102445760203660031901126102445761000f611c3c611d38565b611c44612009565b6120a6565b34610244576020366003190112610244576020610ea0600435611d83565b3461024457602036600319011261024457611c80611d38565b611c88611f97565b6001600160a01b031660008181526020819052604090205460ff16156105d257806000526000602052604060002060ff1981541690557fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d917600080a2005b34610244576020366003190112610244576004359063ffffffff60e01b821680920361024457602091637965db0b60e01b8114908115611d27575b5015158152f35b6301ffc9a760e01b14905083611d20565b600435906001600160a01b038216820361024457565b602435906001600160a01b038216820361024457565b6040906003190112610244576004359060243580151581036102445790565b60005260008051602061249483398151915260205260016040600020015490565b90601f8019910116810190811067ffffffffffffffff8211176106ab57604052565b60001981146114005760010190565b9190820391821161140057565b90816020910312610244575180151581036102445790565b3d15611e35573d9067ffffffffffffffff82116106ab5760405191611e29601f8201601f191660200184611da4565b82523d6000602084013e565b606090565b9190820180921161140057565b8181029291811591840414171561140057565b80600052600160205260ff6005604060002001541615611eee5780600052600160205260ff60056040600020015460081c16611eee578060005260016020526040600020544210611eee578060005260016020526001604060002001544211611eee578060005260036020526040600020549060005260016020526002604060002001541115611ee957600190565b600090565b50600090565b6001600160a01b03166000908152600560205260409020548015611eee5760001981019081116114005790565b6001600160a01b03168015611f815760008051602061247483398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff1615611fd057565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561204257565b63e2517d3f60e01b60005233600452600060245260446000fd5b60008181526000805160206124948339815191526020908152604080832033845290915290205460ff161561208e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16611eee576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb7602052604090205460ff16611eee576001600160a01b031660008181527f1e8c4920ddc559c39a77379e501bd8d5349fc1b24d14b05de3e54d9cec19adb760205260408120805460ff191660011790553391907f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07906000805160206124548339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16611eee576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206124548339815191528180a4600190565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff16612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206124548339815191529080a4600190565b5050600090565b6000818152600080516020612494833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612348576000818152600080516020612494833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b600080516020612474833981519152546001600160a01b0316330361241057565b63118cdaa760e01b6000523360045260246000fd5b60ff6000805160206124b48339815191525460401c161561244257565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212208ca5cb10f57094e2c9800545dd8ef8062a5acffd4f43c90527c1ec5e052d71f864736f6c634300081c0033",
|
1547
1547
|
"linkReferences": {},
|
1548
1548
|
"deployedLinkReferences": {}
|
1549
1549
|
}
|
@@ -415,6 +415,12 @@
|
|
415
415
|
"internalType": "uint256",
|
416
416
|
"name": "openedAt",
|
417
417
|
"type": "uint256"
|
418
|
+
},
|
419
|
+
{
|
420
|
+
"indexed": false,
|
421
|
+
"internalType": "address",
|
422
|
+
"name": "currency",
|
423
|
+
"type": "address"
|
418
424
|
}
|
419
425
|
],
|
420
426
|
"name": "PositionCreated",
|
@@ -494,6 +500,12 @@
|
|
494
500
|
"internalType": "uint256",
|
495
501
|
"name": "loss",
|
496
502
|
"type": "uint256"
|
503
|
+
},
|
504
|
+
{
|
505
|
+
"indexed": false,
|
506
|
+
"internalType": "address",
|
507
|
+
"name": "currency",
|
508
|
+
"type": "address"
|
497
509
|
}
|
498
510
|
],
|
499
511
|
"name": "PositionReduced",
|
@@ -773,12 +785,12 @@
|
|
773
785
|
},
|
774
786
|
{
|
775
787
|
"inputs": [],
|
776
|
-
"name": "
|
788
|
+
"name": "OPERATOR_ROLE",
|
777
789
|
"outputs": [
|
778
790
|
{
|
779
|
-
"internalType": "
|
791
|
+
"internalType": "bytes32",
|
780
792
|
"name": "",
|
781
|
-
"type": "
|
793
|
+
"type": "bytes32"
|
782
794
|
}
|
783
795
|
],
|
784
796
|
"stateMutability": "view",
|
@@ -786,12 +798,12 @@
|
|
786
798
|
},
|
787
799
|
{
|
788
800
|
"inputs": [],
|
789
|
-
"name": "
|
801
|
+
"name": "PERCENTAGE_BASE",
|
790
802
|
"outputs": [
|
791
803
|
{
|
792
|
-
"internalType": "
|
804
|
+
"internalType": "uint256",
|
793
805
|
"name": "",
|
794
|
-
"type": "
|
806
|
+
"type": "uint256"
|
795
807
|
}
|
796
808
|
],
|
797
809
|
"stateMutability": "view",
|
@@ -897,33 +909,14 @@
|
|
897
909
|
"internalType": "uint256",
|
898
910
|
"name": "_amount",
|
899
911
|
"type": "uint256"
|
900
|
-
}
|
901
|
-
],
|
902
|
-
"name": "createPosition",
|
903
|
-
"outputs": [
|
904
|
-
{
|
905
|
-
"internalType": "uint256",
|
906
|
-
"name": "",
|
907
|
-
"type": "uint256"
|
908
|
-
}
|
909
|
-
],
|
910
|
-
"stateMutability": "nonpayable",
|
911
|
-
"type": "function"
|
912
|
-
},
|
913
|
-
{
|
914
|
-
"inputs": [
|
912
|
+
},
|
915
913
|
{
|
916
914
|
"internalType": "address",
|
917
|
-
"name": "
|
915
|
+
"name": "_recipient",
|
918
916
|
"type": "address"
|
919
|
-
},
|
920
|
-
{
|
921
|
-
"internalType": "uint256",
|
922
|
-
"name": "_amount",
|
923
|
-
"type": "uint256"
|
924
917
|
}
|
925
918
|
],
|
926
|
-
"name": "
|
919
|
+
"name": "createPosition",
|
927
920
|
"outputs": [
|
928
921
|
{
|
929
922
|
"internalType": "uint256",
|
@@ -1077,6 +1070,16 @@
|
|
1077
1070
|
"internalType": "address",
|
1078
1071
|
"name": "_rewardToken",
|
1079
1072
|
"type": "address"
|
1073
|
+
},
|
1074
|
+
{
|
1075
|
+
"internalType": "address",
|
1076
|
+
"name": "_treasury",
|
1077
|
+
"type": "address"
|
1078
|
+
},
|
1079
|
+
{
|
1080
|
+
"internalType": "address",
|
1081
|
+
"name": "_owner",
|
1082
|
+
"type": "address"
|
1080
1083
|
}
|
1081
1084
|
],
|
1082
1085
|
"name": "initialize",
|
@@ -1215,6 +1218,11 @@
|
|
1215
1218
|
"internalType": "uint256",
|
1216
1219
|
"name": "lossAmount",
|
1217
1220
|
"type": "uint256"
|
1221
|
+
},
|
1222
|
+
{
|
1223
|
+
"internalType": "address",
|
1224
|
+
"name": "token",
|
1225
|
+
"type": "address"
|
1218
1226
|
}
|
1219
1227
|
],
|
1220
1228
|
"stateMutability": "view",
|
@@ -1674,8 +1682,8 @@
|
|
1674
1682
|
"type": "function"
|
1675
1683
|
}
|
1676
1684
|
],
|
1677
|
-
"bytecode": "0x608060405234801561001057600080fd5b5061001f61002460201b60201c565b61018e565b600061003461012860201b60201c565b90508060000160089054906101000a900460ff161561007f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101255767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161011c9190610173565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b61016d81610150565b82525050565b60006020820190506101886000830184610164565b92915050565b615a9f8061019d6000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80638da5cb5b116101d3578063d797fe2211610104578063f0f44260116100a2578063f5b541a61161007c578063f5b541a614610a35578063f6a48fac14610a53578063f7c618c114610a6f578063fbc14dda14610a8d57610378565b8063f0f44260146109df578063f2fde38b146109fb578063f36de22514610a1757610378565b8063e5a6b10f116100de578063e5a6b10f14610955578063e985e9c514610973578063eae86f0b146109a3578063f00acbaa146109c157610378565b8063d797fe22146108ea578063da29b26514610906578063e16fd0ec1461093757610378565b8063a217fddf11610171578063b35fb5421161014b578063b35fb54214610866578063b88d4fde14610882578063c87b56dd1461089e578063d547741f146108ce57610378565b8063a217fddf146107fc578063a22cb4651461081a578063af12100a1461083657610378565b806395d89b41116101ad57806395d89b411461076d57806399fbab881461078b578063a035b1fe146107c2578063a0d8d78c146107e057610378565b80638da5cb5b1461070357806391b7f5ed1461072157806391d148541461073d57610378565b806342842e0e116102ad5780636eac61dd1161024b57806374de4ec41161022557806374de4ec41461067f57806375a0b6dd1461069b57806383730cc3146106b75780638aee8127146106e757610378565b80636eac61dd1461062757806370a0823114610645578063715018a61461067557610378565b8063537b1ec711610287578063537b1ec7146105a157806358f67869146105bd57806361d027b3146105d95780636352211e146105f757610378565b806342842e0e1461054b578063485cc955146105675780634c19386c1461058357610378565b80631a39d8ef1161031a57806327ac0c58116102f457806327ac0c58146104db5780632f2ff15d146104f75780632f84c3911461051357806336568abe1461052f57610378565b80631a39d8ef1461047157806323b872dd1461048f578063248a9ca3146104ab57610378565b8063095ea7b311610356578063095ea7b3146103fb5780630d31a72f146104175780630d8317e1146104355780630ead77121461045357610378565b806301ffc9a71461037d57806306fdde03146103ad578063081812fc146103cb575b600080fd5b610397600480360381019061039291906147f1565b610aa9565b6040516103a49190614839565b60405180910390f35b6103b5610abb565b6040516103c291906148e4565b60405180910390f35b6103e560048036038101906103e0919061493c565b610b5c565b6040516103f291906149aa565b60405180910390f35b610415600480360381019061041091906149f1565b610b78565b005b61041f610b8e565b60405161042c9190614a40565b60405180910390f35b61043d610ba1565b60405161044a9190614a40565b60405180910390f35b61045b610ba8565b6040516104689190614839565b60405180910390f35b610479610bbb565b6040516104869190614a40565b60405180910390f35b6104a960048036038101906104a49190614a5b565b610bc1565b005b6104c560048036038101906104c09190614ae4565b610cc3565b6040516104d29190614b20565b60405180910390f35b6104f560048036038101906104f09190614b3b565b610cf1565b005b610511600480360381019061050c9190614b68565b610d2d565b005b61052d60048036038101906105289190614b3b565b610d4f565b005b61054960048036038101906105449190614b68565b610e62565b005b61056560048036038101906105609190614a5b565b610edd565b005b610581600480360381019061057c9190614ba8565b610efd565b005b61058b611262565b6040516105989190614a40565b60405180910390f35b6105bb60048036038101906105b69190614c4d565b611268565b005b6105d760048036038101906105d29190614cfa565b611458565b005b6105e16114b4565b6040516105ee91906149aa565b60405180910390f35b610611600480360381019061060c919061493c565b6114da565b60405161061e91906149aa565b60405180910390f35b61062f6114ec565b60405161063c9190614a40565b60405180910390f35b61065f600480360381019061065a9190614b3b565b6114f2565b60405161066c9190614a40565b60405180910390f35b61067d6115bb565b005b6106996004803603810190610694919061493c565b6115cf565b005b6106b560048036038101906106b09190614d27565b61170b565b005b6106d160048036038101906106cc919061493c565b61180f565b6040516106de9190614a40565b60405180910390f35b61070160048036038101906106fc9190614b3b565b6118fe565b005b61070b611a11565b60405161071891906149aa565b60405180910390f35b61073b6004803603810190610736919061493c565b611a49565b005b61075760048036038101906107529190614b68565b611afb565b6040516107649190614839565b60405180910390f35b610775611b74565b60405161078291906148e4565b60405180910390f35b6107a560048036038101906107a0919061493c565b611c15565b6040516107b9989796959493929190614d67565b60405180910390f35b6107ca611c5d565b6040516107d79190614a40565b60405180910390f35b6107fa60048036038101906107f5919061493c565b611c63565b005b610804611e8b565b6040516108119190614b20565b60405180910390f35b610834600480360381019061082f9190614de5565b611e92565b005b610850600480360381019061084b91906149f1565b611ea8565b60405161085d9190614a40565b60405180910390f35b610880600480360381019061087b91906149f1565b61202a565b005b61089c60048036038101906108979190614f55565b61220a565b005b6108b860048036038101906108b3919061493c565b61222f565b6040516108c591906148e4565b60405180910390f35b6108e860048036038101906108e39190614b68565b612298565b005b61090460048036038101906108ff919061493c565b6122ba565b005b610920600480360381019061091b919061493c565b61243d565b60405161092e929190614fd8565b60405180910390f35b61093f612471565b60405161094c9190614a40565b60405180910390f35b61095d612477565b60405161096a91906149aa565b60405180910390f35b61098d60048036038101906109889190614ba8565b61249d565b60405161099a9190614839565b60405180910390f35b6109ab61253f565b6040516109b89190614a40565b60405180910390f35b6109c9612545565b6040516109d69190614b20565b60405180910390f35b6109f960048036038101906109f49190614b3b565b612569565b005b610a156004803603810190610a109190614b3b565b61267c565b005b610a1f612702565b604051610a2c9190614a40565b60405180910390f35b610a3d61270f565b604051610a4a9190614b20565b60405180910390f35b610a6d6004803603810190610a689190614b3b565b612733565b005b610a7761276f565b604051610a8491906149aa565b60405180910390f35b610aa76004803603810190610aa29190615057565b612795565b005b6000610ab482612959565b9050919050565b60606000610ac76129d3565b9050806000018054610ad8906150d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b04906150d3565b8015610b515780601f10610b2657610100808354040283529160200191610b51565b820191906000526020600020905b815481529060010190602001808311610b3457829003601f168201915b505050505091505090565b6000610b67826129fb565b50610b7182612a83565b9050919050565b610b8a8282610b85612ace565b612ad6565b5050565b620f42406064610b9e9190615133565b81565b620f424081565b600760009054906101000a900460ff1681565b60055481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c335760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610c2a91906149aa565b60405180910390fd5b6000610c478383610c42612ace565b612ae8565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cbd578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610cb493929190615175565b60405180910390fd5b50505050565b600080610cce612d15565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610cfe81612d3d565b610d287f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983612d51565b505050565b610d3682610cc3565b610d3f81612d3d565b610d498383612d51565b50505050565b610d57612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dbd576040517fc2cf440900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d8183604051610e569291906151ac565b60405180910390a15050565b610e6a612ace565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ed88282612ed9565b505050565b610ef88383836040518060200160405280600081525061220a565b505050565b6000610f07612fdb565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610f555750825b9050600060018367ffffffffffffffff16148015610f8a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610f98575080155b15610fcf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561101f5760018560000160086101000a81548160ff0219169083151502179055505b6110936040518060400160405280601581526020017f54726164696e675661756c7420506f736974696f6e00000000000000000000008152506040518060400160405280600281526020017f5650000000000000000000000000000000000000000000000000000000000000815250613003565b61109c33613019565b6110a461302d565b86600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111336000801b33612d51565b5061115e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92933612d51565b506111897f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a33612d51565b50600860405180604001604052806064815260200160008152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600760006101000a81548160ff02191690831515021790555083156112595760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611250919061522e565b60405180910390a15b50505050505050565b60065481565b600760009054906101000a900460ff166112ae576040517f33962fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90615295565b60405180910390fd5b6000848490500361133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390615301565b60405180910390fd5b600080600090505b858590508110156113a55761138b86868381811061136557611364615321565b5b9050602002013585858481811061137f5761137e615321565b5b90506020020135613037565b826113969190615350565b91508080600101915050611344565b50600081111561145157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161140c929190615384565b6020604051808303816000875af115801561142b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144f91906153c2565b505b5050505050565b611460612e52565b80600760006101000a81548160ff0219169083151502179055507f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa35816040516114a99190614839565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e5826129fb565b9050919050565b603d5481565b6000806114fd6129d3565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115715760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161156891906149aa565b60405180910390fd5b8060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b6115c3612e52565b6115cd600061324e565b565b60008103611609576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611668939291906153ef565b6020604051808303816000875af1158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906153c2565b506000603c54905081603c60008282546116c59190615350565b925050819055507fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa81603c546040516116ff929190614fd8565b60405180910390a15050565b600760009054906101000a900460ff16611751576040517f33962fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061175d8383613037565b9050600081111561180a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117c5929190615384565b6020604051808303816000875af11580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180891906153c2565b505b505050565b600080820361184a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016118a9939291906153ef565b6020604051808303816000875af11580156118c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ec91906153c2565b506118f73383613325565b9050919050565b611906612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361196c576040517f6a27e5f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea88183604051611a059291906151ac565b60405180910390a15050565b600080611a1c6134a2565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a611a7381612d3d565b60008203611aad576040517f4dfba02300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080549050826000819055507f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc4881846000604051611aee93929190615461565b60405180910390a1505050565b600080611b06612d15565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b60606000611b806129d3565b9050806001018054611b91906150d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd906150d3565b8015611c0a5780601f10611bdf57610100808354040283529160200191611c0a565b820191906000526020600020905b815481529060010190602001808311611bed57829003601f168201915b505050505091505090565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b60005481565b611c6b612e52565b60008103611ca5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d0291906149aa565b602060405180830381865afa158015611d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4391906154ad565b905080821115611d7f576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611ddc929190615384565b6020604051808303816000875af1158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f91906153c2565b508160066000828254611e329190615350565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0683604051611e7f9190614a40565b60405180910390a25050565b6000801b81565b611ea4611e9d612ace565b83836134ca565b5050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611ed481612d3d565b60008303611f0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611fd3939291906153ef565b6020604051808303816000875af1158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201691906153c2565b506120218484613325565b91505092915050565b612032612e52565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806120db5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612112576040517fe3542bf700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000810361214c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401612189929190615384565b6020604051808303816000875af11580156121a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cc91906153c2565b905080612205576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b612215848484610bc1565b612229612220612ace565b85858585613648565b50505050565b606061223a826129fb565b5060006122456137f9565b905060008151116122655760405180602001604052806000815250612290565b8061226f84613810565b604051602001612280929190615516565b6040516020818303038152906040525b915050919050565b6122a182610cc3565b6122aa81612d3d565b6122b48383612ed9565b50505050565b600081036122f4576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654811115612330576040517fe480bdff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161238f939291906153ef565b6020604051808303816000875af11580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906153c2565b5080600660008282546123e5919061553a565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db72253826040516124329190614a40565b60405180910390a250565b6008818154811061244d57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b61271081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806124a86129d3565b90508060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b603c5481565b7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a81565b612571612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125d7576040517fcfe2ea6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a81836040516126709291906151ac565b60405180910390a15050565b612684612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126f65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016126ed91906149aa565b60405180910390fd5b6126ff8161324e565b50565b6000600880549050905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6000801b61274081612d3d565b61276a7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a83612d51565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61279d612e52565b600860006127ab919061473a565b60008083839050905060005b81811015612926576127108585838181106127d5576127d4615321565b5b905060400201600001351115612817576040517f6093dc5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8285858381811061282b5761282a615321565b5b905060400201602001351161286c576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008604051806040016040528087878581811061288c5761288b615321565b5b9050604002016000013581526020018787858181106128ae576128ad615321565b5b9050604002016020013581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084848281811061290d5761290c615321565b5b90506040020160200135925080806001019150506127b7565b507fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b660405160405180910390a150505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129cc57506129cb826138de565b5b9050919050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b600080612a07836139c0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a7a57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a719190614a40565b60405180910390fd5b80915050919050565b600080612a8e6129d3565b905080600401600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600033905090565b612ae38383836001613a0b565b505050565b600080612af36129d3565b90506000612b00856139c0565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612b4257612b41818587613bdf565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612bd557612b84600086600080613a0b565b60018260030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c5a5760018260030160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8582600201600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b612d4e81612d49612ace565b613ca3565b50565b600080612d5c612d15565b9050612d688484611afb565b612e4657600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612de2612ace565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050612e4c565b60009150505b92915050565b612e5a612ace565b73ffffffffffffffffffffffffffffffffffffffff16612e78611a11565b73ffffffffffffffffffffffffffffffffffffffff1614612ed757612e9b612ace565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612ece91906149aa565b60405180910390fd5b565b600080612ee4612d15565b9050612ef08484611afb565b15612fcf57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f6b612ace565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050612fd5565b60009150505b92915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61300b613cf4565b6130158282613d34565b5050565b613021613cf4565b61302a81613d71565b50565b613035613cf4565b565b600061304283613df7565b600060096000858152602001908152602001600020905060008303613093576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600201548311156130d1576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000806130e18888613ef9565b93509350935093508695506000856000015460005410156131645760008054876000015461310f919061553a565b9050620f424060646131219190615133565b818a61312d9190615133565b613137919061559d565b91508187600701600082825461314d9190615350565b925050819055508189613160919061553a565b9750505b8760056000828254613176919061553a565b925050819055507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756005546040516131ae9190614a40565b60405180910390a185600201548803613208574286600501819055506000548660010181905550600086600201819055506131e88961422a565b61320389896000888888888d600701548e600601548a6142b0565b613242565b8786600201600082825461321c919061553a565b9250508190555061324189898860020154888888888d600701548e600601548a6142b0565b5b50505050505092915050565b60006132586134a2565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000806004600081548092919061333b906155ce565b9190505590506040518061010001604052806000548152602001600081526020018481526020018481526020014281526020016000815260200160008152602001600081525060096000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015590505082600560008282546133f99190615350565b925050819055507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756005546040516134319190614a40565b60405180910390a1613443848261431f565b808473ffffffffffffffffffffffffffffffffffffffff167f037a51f308bffa1811b7db6ec701b1d1ba493e6fa3cb1fcec4167f3ea1183db3600054864260405161349093929190615616565b60405180910390a38091505092915050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60006134d46129d3565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361354757826040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161353e91906149aa565b60405180910390fd5b818160050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318460405161363a9190614839565b60405180910390a350505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156137f2578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016136a794939291906156a2565b6020604051808303816000875af19250505080156136e357506040513d601f19601f820116820180604052508101906136e09190615703565b60015b613767573d8060008114613713576040519150601f19603f3d011682016040523d82523d6000602084013e613718565b606091505b50600081510361375f57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161375691906149aa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146137f057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016137e791906149aa565b60405180910390fd5b505b5050505050565b606060405180602001604052806000815250905090565b60606000600161381f84614418565b01905060008167ffffffffffffffff81111561383e5761383d614e2a565b5b6040519080825280601f01601f1916602001820160405280156138705781602001600182028036833780820191505090505b509050600082602001820190505b6001156138d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816138c7576138c661556e565b5b0494506000850361387e575b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806139a957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806139b957506139b88261456b565b5b9050919050565b6000806139cb6129d3565b905080600201600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000613a156129d3565b90508180613a505750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613b84576000613a60856129fb565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613acb57508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613ade5750613adc818561249d565b155b15613b2057836040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401613b1791906149aa565b60405180910390fd5b8215613b8257848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8481600401600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b613bea8383836145d5565b613c9e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c5f57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613c569190614a40565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613c95929190615384565b60405180910390fd5b505050565b613cad8282611afb565b613cf05780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613ce7929190615730565b60405180910390fd5b5050565b613cfc614696565b613d32576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613d3c613cf4565b6000613d466129d3565b905082816000019081613d5991906158fb565b5081816001019081613d6b91906158fb565b50505050565b613d79613cf4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613deb5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401613de291906149aa565b60405180910390fd5b613df48161324e565b50565b3373ffffffffffffffffffffffffffffffffffffffff16613e17826114da565b73ffffffffffffffffffffffffffffffffffffffff1614158015613e6f57503373ffffffffffffffffffffffffffffffffffffffff16613e5682610b5c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613ea6576040517fdb1453ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600960008381526020019081526020016000206005015414613ef6576040517f219ce9a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000806000806000600960008881526020019081526020016000209050806000015460005411613f3757600080600080945094509450945050614221565b620f42406064613f479190615133565b8160000154600054613f59919061553a565b87613f649190615133565b613f6e919061559d565b945060008503613f8c57600080600080945094509450945050614221565b6000816004015442613f9e919061553a565b9050613fa9816146b6565b94506127108587613fba9190615133565b613fc4919061559d565b93508386613fd2919061553a565b925085826006016000828254613fe89190615350565b925050819055506000603d54905060008511156140a157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b815260040161405c929190615384565b6020604051808303816000875af115801561407b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409f91906153c2565b505b6000841180156141005750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156141c957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401614184929190615384565b6020604051808303816000875af11580156141a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c791906153c2565b505b86603d60008282546141db9190615350565b925050819055507f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de281603d54604051614215929190614fd8565b60405180910390a15050505b92959194509250565b60006142396000836000612ae8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036142ac57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016142a39190614a40565b60405180910390fd5b5050565b893373ffffffffffffffffffffffffffffffffffffffff167faa3706ba65b858840e81b6b246cd2a9ba56be027e5930bd1393225ebd650837d8b8b8b8b8b8b8b6000548c8c60405161430b9a999897969594939291906159cd565b60405180910390a350505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036143915760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161438891906149aa565b60405180910390fd5b600061439f83836000612ae8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146144135760006040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161440a91906149aa565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310614476577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161446c5761446b61556e565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106144b3576d04ee2d6d415b85acef810000000083816144a9576144a861556e565b5b0492506020810190505b662386f26fc1000083106144e257662386f26fc1000083816144d8576144d761556e565b5b0492506010810190505b6305f5e100831061450b576305f5e10083816145015761450061556e565b5b0492506008810190505b61271083106145305761271083816145265761452561556e565b5b0492506004810190505b6064831061455357606483816145495761454861556e565b5b0492506002810190505b600a8310614562576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561468d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061464e575061464d848461249d565b5b8061468c57508273ffffffffffffffffffffffffffffffffffffffff1661467483612a83565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60006146a0612fdb565b60000160089054906101000a900460ff16905090565b60008060088054905090506000805b8281101561472f57600881815481106146e1576146e0615321565b5b9060005260206000209060020201600101548510614722576008818154811061470d5761470c615321565b5b90600052602060002090600202016000015491505b80806001019150506146c5565b508092505050919050565b508054600082556002029060005260206000209081019061475b919061475e565b50565b5b808211156147815760008082016000905560018201600090555060020161475f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6147ce81614799565b81146147d957600080fd5b50565b6000813590506147eb816147c5565b92915050565b6000602082840312156148075761480661478f565b5b6000614815848285016147dc565b91505092915050565b60008115159050919050565b6148338161481e565b82525050565b600060208201905061484e600083018461482a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561488e578082015181840152602081019050614873565b60008484015250505050565b6000601f19601f8301169050919050565b60006148b682614854565b6148c0818561485f565b93506148d0818560208601614870565b6148d98161489a565b840191505092915050565b600060208201905081810360008301526148fe81846148ab565b905092915050565b6000819050919050565b61491981614906565b811461492457600080fd5b50565b60008135905061493681614910565b92915050565b6000602082840312156149525761495161478f565b5b600061496084828501614927565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061499482614969565b9050919050565b6149a481614989565b82525050565b60006020820190506149bf600083018461499b565b92915050565b6149ce81614989565b81146149d957600080fd5b50565b6000813590506149eb816149c5565b92915050565b60008060408385031215614a0857614a0761478f565b5b6000614a16858286016149dc565b9250506020614a2785828601614927565b9150509250929050565b614a3a81614906565b82525050565b6000602082019050614a556000830184614a31565b92915050565b600080600060608486031215614a7457614a7361478f565b5b6000614a82868287016149dc565b9350506020614a93868287016149dc565b9250506040614aa486828701614927565b9150509250925092565b6000819050919050565b614ac181614aae565b8114614acc57600080fd5b50565b600081359050614ade81614ab8565b92915050565b600060208284031215614afa57614af961478f565b5b6000614b0884828501614acf565b91505092915050565b614b1a81614aae565b82525050565b6000602082019050614b356000830184614b11565b92915050565b600060208284031215614b5157614b5061478f565b5b6000614b5f848285016149dc565b91505092915050565b60008060408385031215614b7f57614b7e61478f565b5b6000614b8d85828601614acf565b9250506020614b9e858286016149dc565b9150509250929050565b60008060408385031215614bbf57614bbe61478f565b5b6000614bcd858286016149dc565b9250506020614bde858286016149dc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c0d57614c0c614be8565b5b8235905067ffffffffffffffff811115614c2a57614c29614bed565b5b602083019150836020820283011115614c4657614c45614bf2565b5b9250929050565b60008060008060408587031215614c6757614c6661478f565b5b600085013567ffffffffffffffff811115614c8557614c84614794565b5b614c9187828801614bf7565b9450945050602085013567ffffffffffffffff811115614cb457614cb3614794565b5b614cc087828801614bf7565b925092505092959194509250565b614cd78161481e565b8114614ce257600080fd5b50565b600081359050614cf481614cce565b92915050565b600060208284031215614d1057614d0f61478f565b5b6000614d1e84828501614ce5565b91505092915050565b60008060408385031215614d3e57614d3d61478f565b5b6000614d4c85828601614927565b9250506020614d5d85828601614927565b9150509250929050565b600061010082019050614d7d600083018b614a31565b614d8a602083018a614a31565b614d976040830189614a31565b614da46060830188614a31565b614db16080830187614a31565b614dbe60a0830186614a31565b614dcb60c0830185614a31565b614dd860e0830184614a31565b9998505050505050505050565b60008060408385031215614dfc57614dfb61478f565b5b6000614e0a858286016149dc565b9250506020614e1b85828601614ce5565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614e628261489a565b810181811067ffffffffffffffff82111715614e8157614e80614e2a565b5b80604052505050565b6000614e94614785565b9050614ea08282614e59565b919050565b600067ffffffffffffffff821115614ec057614ebf614e2a565b5b614ec98261489a565b9050602081019050919050565b82818337600083830152505050565b6000614ef8614ef384614ea5565b614e8a565b905082815260208101848484011115614f1457614f13614e25565b5b614f1f848285614ed6565b509392505050565b600082601f830112614f3c57614f3b614be8565b5b8135614f4c848260208601614ee5565b91505092915050565b60008060008060808587031215614f6f57614f6e61478f565b5b6000614f7d878288016149dc565b9450506020614f8e878288016149dc565b9350506040614f9f87828801614927565b925050606085013567ffffffffffffffff811115614fc057614fbf614794565b5b614fcc87828801614f27565b91505092959194509250565b6000604082019050614fed6000830185614a31565b614ffa6020830184614a31565b9392505050565b60008083601f84011261501757615016614be8565b5b8235905067ffffffffffffffff81111561503457615033614bed565b5b6020830191508360408202830111156150505761504f614bf2565b5b9250929050565b6000806020838503121561506e5761506d61478f565b5b600083013567ffffffffffffffff81111561508c5761508b614794565b5b61509885828601615001565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806150eb57607f821691505b6020821081036150fe576150fd6150a4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061513e82614906565b915061514983614906565b925082820261515781614906565b9150828204841483151761516e5761516d615104565b5b5092915050565b600060608201905061518a600083018661499b565b6151976020830185614a31565b6151a4604083018461499b565b949350505050565b60006040820190506151c1600083018561499b565b6151ce602083018461499b565b9392505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b600061521861521361520e846151d5565b6151f3565b6151df565b9050919050565b615228816151fd565b82525050565b6000602082019050615243600083018461521f565b92915050565b7f4172726179206c656e67746873206d757374206d617463680000000000000000600082015250565b600061527f60188361485f565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b7f456d707479206172726179730000000000000000000000000000000000000000600082015250565b60006152eb600c8361485f565b91506152f6826152b5565b602082019050919050565b6000602082019050818103600083015261531a816152de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061535b82614906565b915061536683614906565b925082820190508082111561537e5761537d615104565b5b92915050565b6000604082019050615399600083018561499b565b6153a66020830184614a31565b9392505050565b6000815190506153bc81614cce565b92915050565b6000602082840312156153d8576153d761478f565b5b60006153e6848285016153ad565b91505092915050565b6000606082019050615404600083018661499b565b615411602083018561499b565b61541e6040830184614a31565b949350505050565b6000819050919050565b600061544b61544661544184615426565b6151f3565b614906565b9050919050565b61545b81615430565b82525050565b60006060820190506154766000830186614a31565b6154836020830185614a31565b6154906040830184615452565b949350505050565b6000815190506154a781614910565b92915050565b6000602082840312156154c3576154c261478f565b5b60006154d184828501615498565b91505092915050565b600081905092915050565b60006154f082614854565b6154fa81856154da565b935061550a818560208601614870565b80840191505092915050565b600061552282856154e5565b915061552e82846154e5565b91508190509392505050565b600061554582614906565b915061555083614906565b925082820390508181111561556857615567615104565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006155a882614906565b91506155b383614906565b9250826155c3576155c261556e565b5b828204905092915050565b60006155d982614906565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361560b5761560a615104565b5b600182019050919050565b600060608201905061562b6000830186614a31565b6156386020830185614a31565b6156456040830184614a31565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006156748261564d565b61567e8185615658565b935061568e818560208601614870565b6156978161489a565b840191505092915050565b60006080820190506156b7600083018761499b565b6156c4602083018661499b565b6156d16040830185614a31565b81810360608301526156e38184615669565b905095945050505050565b6000815190506156fd816147c5565b92915050565b6000602082840312156157195761571861478f565b5b6000615727848285016156ee565b91505092915050565b6000604082019050615745600083018561499b565b6157526020830184614b11565b9392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026157bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261577e565b6157c5868361577e565b95508019841693508086168417925050509392505050565b60006157f86157f36157ee84614906565b6151f3565b614906565b9050919050565b6000819050919050565b615812836157dd565b61582661581e826157ff565b84845461578b565b825550505050565b600090565b61583b61582e565b615846818484615809565b505050565b5b8181101561586a5761585f600082615833565b60018101905061584c565b5050565b601f8211156158af5761588081615759565b6158898461576e565b81016020851015615898578190505b6158ac6158a48561576e565b83018261584b565b50505b505050565b600082821c905092915050565b60006158d2600019846008026158b4565b1980831691505092915050565b60006158eb83836158c1565b9150826002028217905092915050565b61590482614854565b67ffffffffffffffff81111561591d5761591c614e2a565b5b61592782546150d3565b61593282828561586e565b600060209050601f8311600181146159655760008415615953578287015190505b61595d85826158df565b8655506159c5565b601f19841661597386615759565b60005b8281101561599b57848901518255600182019150602085019450602081019050615976565b868310156159b857848901516159b4601f8916826158c1565b8355505b6001600288020188555050505b505050505050565b6000610140820190506159e3600083018d614a31565b6159f0602083018c614a31565b6159fd604083018b614a31565b615a0a606083018a614a31565b615a176080830189614a31565b615a2460a0830188614a31565b615a3160c0830187614a31565b615a3e60e0830186614a31565b615a4c610100830185614a31565b615a5a610120830184614a31565b9b9a505050505050505050505056fea2646970667358221220690270047f583c0e1a8ed3650463acfebb5336d692be9afa55b9166245148d2064736f6c634300081c0033",
|
1678
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103785760003560e01c80638da5cb5b116101d3578063d797fe2211610104578063f0f44260116100a2578063f5b541a61161007c578063f5b541a614610a35578063f6a48fac14610a53578063f7c618c114610a6f578063fbc14dda14610a8d57610378565b8063f0f44260146109df578063f2fde38b146109fb578063f36de22514610a1757610378565b8063e5a6b10f116100de578063e5a6b10f14610955578063e985e9c514610973578063eae86f0b146109a3578063f00acbaa146109c157610378565b8063d797fe22146108ea578063da29b26514610906578063e16fd0ec1461093757610378565b8063a217fddf11610171578063b35fb5421161014b578063b35fb54214610866578063b88d4fde14610882578063c87b56dd1461089e578063d547741f146108ce57610378565b8063a217fddf146107fc578063a22cb4651461081a578063af12100a1461083657610378565b806395d89b41116101ad57806395d89b411461076d57806399fbab881461078b578063a035b1fe146107c2578063a0d8d78c146107e057610378565b80638da5cb5b1461070357806391b7f5ed1461072157806391d148541461073d57610378565b806342842e0e116102ad5780636eac61dd1161024b57806374de4ec41161022557806374de4ec41461067f57806375a0b6dd1461069b57806383730cc3146106b75780638aee8127146106e757610378565b80636eac61dd1461062757806370a0823114610645578063715018a61461067557610378565b8063537b1ec711610287578063537b1ec7146105a157806358f67869146105bd57806361d027b3146105d95780636352211e146105f757610378565b806342842e0e1461054b578063485cc955146105675780634c19386c1461058357610378565b80631a39d8ef1161031a57806327ac0c58116102f457806327ac0c58146104db5780632f2ff15d146104f75780632f84c3911461051357806336568abe1461052f57610378565b80631a39d8ef1461047157806323b872dd1461048f578063248a9ca3146104ab57610378565b8063095ea7b311610356578063095ea7b3146103fb5780630d31a72f146104175780630d8317e1146104355780630ead77121461045357610378565b806301ffc9a71461037d57806306fdde03146103ad578063081812fc146103cb575b600080fd5b610397600480360381019061039291906147f1565b610aa9565b6040516103a49190614839565b60405180910390f35b6103b5610abb565b6040516103c291906148e4565b60405180910390f35b6103e560048036038101906103e0919061493c565b610b5c565b6040516103f291906149aa565b60405180910390f35b610415600480360381019061041091906149f1565b610b78565b005b61041f610b8e565b60405161042c9190614a40565b60405180910390f35b61043d610ba1565b60405161044a9190614a40565b60405180910390f35b61045b610ba8565b6040516104689190614839565b60405180910390f35b610479610bbb565b6040516104869190614a40565b60405180910390f35b6104a960048036038101906104a49190614a5b565b610bc1565b005b6104c560048036038101906104c09190614ae4565b610cc3565b6040516104d29190614b20565b60405180910390f35b6104f560048036038101906104f09190614b3b565b610cf1565b005b610511600480360381019061050c9190614b68565b610d2d565b005b61052d60048036038101906105289190614b3b565b610d4f565b005b61054960048036038101906105449190614b68565b610e62565b005b61056560048036038101906105609190614a5b565b610edd565b005b610581600480360381019061057c9190614ba8565b610efd565b005b61058b611262565b6040516105989190614a40565b60405180910390f35b6105bb60048036038101906105b69190614c4d565b611268565b005b6105d760048036038101906105d29190614cfa565b611458565b005b6105e16114b4565b6040516105ee91906149aa565b60405180910390f35b610611600480360381019061060c919061493c565b6114da565b60405161061e91906149aa565b60405180910390f35b61062f6114ec565b60405161063c9190614a40565b60405180910390f35b61065f600480360381019061065a9190614b3b565b6114f2565b60405161066c9190614a40565b60405180910390f35b61067d6115bb565b005b6106996004803603810190610694919061493c565b6115cf565b005b6106b560048036038101906106b09190614d27565b61170b565b005b6106d160048036038101906106cc919061493c565b61180f565b6040516106de9190614a40565b60405180910390f35b61070160048036038101906106fc9190614b3b565b6118fe565b005b61070b611a11565b60405161071891906149aa565b60405180910390f35b61073b6004803603810190610736919061493c565b611a49565b005b61075760048036038101906107529190614b68565b611afb565b6040516107649190614839565b60405180910390f35b610775611b74565b60405161078291906148e4565b60405180910390f35b6107a560048036038101906107a0919061493c565b611c15565b6040516107b9989796959493929190614d67565b60405180910390f35b6107ca611c5d565b6040516107d79190614a40565b60405180910390f35b6107fa60048036038101906107f5919061493c565b611c63565b005b610804611e8b565b6040516108119190614b20565b60405180910390f35b610834600480360381019061082f9190614de5565b611e92565b005b610850600480360381019061084b91906149f1565b611ea8565b60405161085d9190614a40565b60405180910390f35b610880600480360381019061087b91906149f1565b61202a565b005b61089c60048036038101906108979190614f55565b61220a565b005b6108b860048036038101906108b3919061493c565b61222f565b6040516108c591906148e4565b60405180910390f35b6108e860048036038101906108e39190614b68565b612298565b005b61090460048036038101906108ff919061493c565b6122ba565b005b610920600480360381019061091b919061493c565b61243d565b60405161092e929190614fd8565b60405180910390f35b61093f612471565b60405161094c9190614a40565b60405180910390f35b61095d612477565b60405161096a91906149aa565b60405180910390f35b61098d60048036038101906109889190614ba8565b61249d565b60405161099a9190614839565b60405180910390f35b6109ab61253f565b6040516109b89190614a40565b60405180910390f35b6109c9612545565b6040516109d69190614b20565b60405180910390f35b6109f960048036038101906109f49190614b3b565b612569565b005b610a156004803603810190610a109190614b3b565b61267c565b005b610a1f612702565b604051610a2c9190614a40565b60405180910390f35b610a3d61270f565b604051610a4a9190614b20565b60405180910390f35b610a6d6004803603810190610a689190614b3b565b612733565b005b610a7761276f565b604051610a8491906149aa565b60405180910390f35b610aa76004803603810190610aa29190615057565b612795565b005b6000610ab482612959565b9050919050565b60606000610ac76129d3565b9050806000018054610ad8906150d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b04906150d3565b8015610b515780601f10610b2657610100808354040283529160200191610b51565b820191906000526020600020905b815481529060010190602001808311610b3457829003601f168201915b505050505091505090565b6000610b67826129fb565b50610b7182612a83565b9050919050565b610b8a8282610b85612ace565b612ad6565b5050565b620f42406064610b9e9190615133565b81565b620f424081565b600760009054906101000a900460ff1681565b60055481565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c335760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610c2a91906149aa565b60405180910390fd5b6000610c478383610c42612ace565b612ae8565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cbd578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610cb493929190615175565b60405180910390fd5b50505050565b600080610cce612d15565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610cfe81612d3d565b610d287f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983612d51565b505050565b610d3682610cc3565b610d3f81612d3d565b610d498383612d51565b50505050565b610d57612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dbd576040517fc2cf440900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d8183604051610e569291906151ac565b60405180910390a15050565b610e6a612ace565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ed88282612ed9565b505050565b610ef88383836040518060200160405280600081525061220a565b505050565b6000610f07612fdb565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610f555750825b9050600060018367ffffffffffffffff16148015610f8a575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610f98575080155b15610fcf576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561101f5760018560000160086101000a81548160ff0219169083151502179055505b6110936040518060400160405280601581526020017f54726164696e675661756c7420506f736974696f6e00000000000000000000008152506040518060400160405280600281526020017f5650000000000000000000000000000000000000000000000000000000000000815250613003565b61109c33613019565b6110a461302d565b86600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111336000801b33612d51565b5061115e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92933612d51565b506111897f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a33612d51565b50600860405180604001604052806064815260200160008152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600760006101000a81548160ff02191690831515021790555083156112595760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051611250919061522e565b60405180910390a15b50505050505050565b60065481565b600760009054906101000a900460ff166112ae576040517f33962fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90615295565b60405180910390fd5b6000848490500361133c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133390615301565b60405180910390fd5b600080600090505b858590508110156113a55761138b86868381811061136557611364615321565b5b9050602002013585858481811061137f5761137e615321565b5b90506020020135613037565b826113969190615350565b91508080600101915050611344565b50600081111561145157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161140c929190615384565b6020604051808303816000875af115801561142b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144f91906153c2565b505b5050505050565b611460612e52565b80600760006101000a81548160ff0219169083151502179055507f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa35816040516114a99190614839565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e5826129fb565b9050919050565b603d5481565b6000806114fd6129d3565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115715760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161156891906149aa565b60405180910390fd5b8060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b6115c3612e52565b6115cd600061324e565b565b60008103611609576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611668939291906153ef565b6020604051808303816000875af1158015611687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ab91906153c2565b506000603c54905081603c60008282546116c59190615350565b925050819055507fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa81603c546040516116ff929190614fd8565b60405180910390a15050565b600760009054906101000a900460ff16611751576040517f33962fd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061175d8383613037565b9050600081111561180a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117c5929190615384565b6020604051808303816000875af11580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180891906153c2565b505b505050565b600080820361184a576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016118a9939291906153ef565b6020604051808303816000875af11580156118c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ec91906153c2565b506118f73383613325565b9050919050565b611906612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361196c576040517f6a27e5f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea88183604051611a059291906151ac565b60405180910390a15050565b600080611a1c6134a2565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a611a7381612d3d565b60008203611aad576040517f4dfba02300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080549050826000819055507f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc4881846000604051611aee93929190615461565b60405180910390a1505050565b600080611b06612d15565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b60606000611b806129d3565b9050806001018054611b91906150d3565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbd906150d3565b8015611c0a5780601f10611bdf57610100808354040283529160200191611c0a565b820191906000526020600020905b815481529060010190602001808311611bed57829003601f168201915b505050505091505090565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b60005481565b611c6b612e52565b60008103611ca5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d0291906149aa565b602060405180830381865afa158015611d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4391906154ad565b905080821115611d7f576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611ddc929190615384565b6020604051808303816000875af1158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f91906153c2565b508160066000828254611e329190615350565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0683604051611e7f9190614a40565b60405180910390a25050565b6000801b81565b611ea4611e9d612ace565b83836134ca565b5050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929611ed481612d3d565b60008303611f0e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f74576040517f702b3d9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401611fd3939291906153ef565b6020604051808303816000875af1158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201691906153c2565b506120218484613325565b91505092915050565b612032612e52565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806120db5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15612112576040517fe3542bf700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000810361214c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401612189929190615384565b6020604051808303816000875af11580156121a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cc91906153c2565b905080612205576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b612215848484610bc1565b612229612220612ace565b85858585613648565b50505050565b606061223a826129fb565b5060006122456137f9565b905060008151116122655760405180602001604052806000815250612290565b8061226f84613810565b604051602001612280929190615516565b6040516020818303038152906040525b915050919050565b6122a182610cc3565b6122aa81612d3d565b6122b48383612ed9565b50505050565b600081036122f4576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654811115612330576040517fe480bdff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161238f939291906153ef565b6020604051808303816000875af11580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d291906153c2565b5080600660008282546123e5919061553a565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db72253826040516124329190614a40565b60405180910390a250565b6008818154811061244d57600080fd5b90600052602060002090600202016000915090508060000154908060010154905082565b61271081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806124a86129d3565b90508060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b603c5481565b7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a81565b612571612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125d7576040517fcfe2ea6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a81836040516126709291906151ac565b60405180910390a15050565b612684612e52565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126f65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016126ed91906149aa565b60405180910390fd5b6126ff8161324e565b50565b6000600880549050905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b6000801b61274081612d3d565b61276a7f04824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a83612d51565b505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61279d612e52565b600860006127ab919061473a565b60008083839050905060005b81811015612926576127108585838181106127d5576127d4615321565b5b905060400201600001351115612817576040517f6093dc5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8285858381811061282b5761282a615321565b5b905060400201602001351161286c576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008604051806040016040528087878581811061288c5761288b615321565b5b9050604002016000013581526020018787858181106128ae576128ad615321565b5b9050604002016020013581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010155505084848281811061290d5761290c615321565b5b90506040020160200135925080806001019150506127b7565b507fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b660405160405180910390a150505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806129cc57506129cb826138de565b5b9050919050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b600080612a07836139c0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a7a57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a719190614a40565b60405180910390fd5b80915050919050565b600080612a8e6129d3565b905080600401600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600033905090565b612ae38383836001613a0b565b505050565b600080612af36129d3565b90506000612b00856139c0565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612b4257612b41818587613bdf565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612bd557612b84600086600080613a0b565b60018260030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612c5a5760018260030160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8582600201600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b612d4e81612d49612ace565b613ca3565b50565b600080612d5c612d15565b9050612d688484611afb565b612e4657600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612de2612ace565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050612e4c565b60009150505b92915050565b612e5a612ace565b73ffffffffffffffffffffffffffffffffffffffff16612e78611a11565b73ffffffffffffffffffffffffffffffffffffffff1614612ed757612e9b612ace565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612ece91906149aa565b60405180910390fd5b565b600080612ee4612d15565b9050612ef08484611afb565b15612fcf57600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f6b612ace565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050612fd5565b60009150505b92915050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61300b613cf4565b6130158282613d34565b5050565b613021613cf4565b61302a81613d71565b50565b613035613cf4565b565b600061304283613df7565b600060096000858152602001908152602001600020905060008303613093576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600201548311156130d1576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000806130e18888613ef9565b93509350935093508695506000856000015460005410156131645760008054876000015461310f919061553a565b9050620f424060646131219190615133565b818a61312d9190615133565b613137919061559d565b91508187600701600082825461314d9190615350565b925050819055508189613160919061553a565b9750505b8760056000828254613176919061553a565b925050819055507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756005546040516131ae9190614a40565b60405180910390a185600201548803613208574286600501819055506000548660010181905550600086600201819055506131e88961422a565b61320389896000888888888d600701548e600601548a6142b0565b613242565b8786600201600082825461321c919061553a565b9250508190555061324189898860020154888888888d600701548e600601548a6142b0565b5b50505050505092915050565b60006132586134a2565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000806004600081548092919061333b906155ce565b9190505590506040518061010001604052806000548152602001600081526020018481526020018481526020014281526020016000815260200160008152602001600081525060096000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015590505082600560008282546133f99190615350565b925050819055507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756005546040516134319190614a40565b60405180910390a1613443848261431f565b808473ffffffffffffffffffffffffffffffffffffffff167f037a51f308bffa1811b7db6ec701b1d1ba493e6fa3cb1fcec4167f3ea1183db3600054864260405161349093929190615616565b60405180910390a38091505092915050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60006134d46129d3565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361354757826040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161353e91906149aa565b60405180910390fd5b818160050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318460405161363a9190614839565b60405180910390a350505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156137f2578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016136a794939291906156a2565b6020604051808303816000875af19250505080156136e357506040513d601f19601f820116820180604052508101906136e09190615703565b60015b613767573d8060008114613713576040519150601f19603f3d011682016040523d82523d6000602084013e613718565b606091505b50600081510361375f57836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161375691906149aa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146137f057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016137e791906149aa565b60405180910390fd5b505b5050505050565b606060405180602001604052806000815250905090565b60606000600161381f84614418565b01905060008167ffffffffffffffff81111561383e5761383d614e2a565b5b6040519080825280601f01601f1916602001820160405280156138705781602001600182028036833780820191505090505b509050600082602001820190505b6001156138d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816138c7576138c661556e565b5b0494506000850361387e575b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806139a957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806139b957506139b88261456b565b5b9050919050565b6000806139cb6129d3565b905080600201600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000613a156129d3565b90508180613a505750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613b84576000613a60856129fb565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613acb57508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613ade5750613adc818561249d565b155b15613b2057836040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401613b1791906149aa565b60405180910390fd5b8215613b8257848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8481600401600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b613bea8383836145d5565b613c9e57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c5f57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613c569190614a40565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613c95929190615384565b60405180910390fd5b505050565b613cad8282611afb565b613cf05780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613ce7929190615730565b60405180910390fd5b5050565b613cfc614696565b613d32576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613d3c613cf4565b6000613d466129d3565b905082816000019081613d5991906158fb565b5081816001019081613d6b91906158fb565b50505050565b613d79613cf4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613deb5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401613de291906149aa565b60405180910390fd5b613df48161324e565b50565b3373ffffffffffffffffffffffffffffffffffffffff16613e17826114da565b73ffffffffffffffffffffffffffffffffffffffff1614158015613e6f57503373ffffffffffffffffffffffffffffffffffffffff16613e5682610b5c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613ea6576040517fdb1453ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600960008381526020019081526020016000206005015414613ef6576040517f219ce9a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000806000806000600960008881526020019081526020016000209050806000015460005411613f3757600080600080945094509450945050614221565b620f42406064613f479190615133565b8160000154600054613f59919061553a565b87613f649190615133565b613f6e919061559d565b945060008503613f8c57600080600080945094509450945050614221565b6000816004015442613f9e919061553a565b9050613fa9816146b6565b94506127108587613fba9190615133565b613fc4919061559d565b93508386613fd2919061553a565b925085826006016000828254613fe89190615350565b925050819055506000603d54905060008511156140a157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b815260040161405c929190615384565b6020604051808303816000875af115801561407b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409f91906153c2565b505b6000841180156141005750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b156141c957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401614184929190615384565b6020604051808303816000875af11580156141a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c791906153c2565b505b86603d60008282546141db9190615350565b925050819055507f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de281603d54604051614215929190614fd8565b60405180910390a15050505b92959194509250565b60006142396000836000612ae8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036142ac57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016142a39190614a40565b60405180910390fd5b5050565b893373ffffffffffffffffffffffffffffffffffffffff167faa3706ba65b858840e81b6b246cd2a9ba56be027e5930bd1393225ebd650837d8b8b8b8b8b8b8b6000548c8c60405161430b9a999897969594939291906159cd565b60405180910390a350505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036143915760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161438891906149aa565b60405180910390fd5b600061439f83836000612ae8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146144135760006040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161440a91906149aa565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310614476577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161446c5761446b61556e565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106144b3576d04ee2d6d415b85acef810000000083816144a9576144a861556e565b5b0492506020810190505b662386f26fc1000083106144e257662386f26fc1000083816144d8576144d761556e565b5b0492506010810190505b6305f5e100831061450b576305f5e10083816145015761450061556e565b5b0492506008810190505b61271083106145305761271083816145265761452561556e565b5b0492506004810190505b6064831061455357606483816145495761454861556e565b5b0492506002810190505b600a8310614562576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561468d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061464e575061464d848461249d565b5b8061468c57508273ffffffffffffffffffffffffffffffffffffffff1661467483612a83565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60006146a0612fdb565b60000160089054906101000a900460ff16905090565b60008060088054905090506000805b8281101561472f57600881815481106146e1576146e0615321565b5b9060005260206000209060020201600101548510614722576008818154811061470d5761470c615321565b5b90600052602060002090600202016000015491505b80806001019150506146c5565b508092505050919050565b508054600082556002029060005260206000209081019061475b919061475e565b50565b5b808211156147815760008082016000905560018201600090555060020161475f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6147ce81614799565b81146147d957600080fd5b50565b6000813590506147eb816147c5565b92915050565b6000602082840312156148075761480661478f565b5b6000614815848285016147dc565b91505092915050565b60008115159050919050565b6148338161481e565b82525050565b600060208201905061484e600083018461482a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561488e578082015181840152602081019050614873565b60008484015250505050565b6000601f19601f8301169050919050565b60006148b682614854565b6148c0818561485f565b93506148d0818560208601614870565b6148d98161489a565b840191505092915050565b600060208201905081810360008301526148fe81846148ab565b905092915050565b6000819050919050565b61491981614906565b811461492457600080fd5b50565b60008135905061493681614910565b92915050565b6000602082840312156149525761495161478f565b5b600061496084828501614927565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061499482614969565b9050919050565b6149a481614989565b82525050565b60006020820190506149bf600083018461499b565b92915050565b6149ce81614989565b81146149d957600080fd5b50565b6000813590506149eb816149c5565b92915050565b60008060408385031215614a0857614a0761478f565b5b6000614a16858286016149dc565b9250506020614a2785828601614927565b9150509250929050565b614a3a81614906565b82525050565b6000602082019050614a556000830184614a31565b92915050565b600080600060608486031215614a7457614a7361478f565b5b6000614a82868287016149dc565b9350506020614a93868287016149dc565b9250506040614aa486828701614927565b9150509250925092565b6000819050919050565b614ac181614aae565b8114614acc57600080fd5b50565b600081359050614ade81614ab8565b92915050565b600060208284031215614afa57614af961478f565b5b6000614b0884828501614acf565b91505092915050565b614b1a81614aae565b82525050565b6000602082019050614b356000830184614b11565b92915050565b600060208284031215614b5157614b5061478f565b5b6000614b5f848285016149dc565b91505092915050565b60008060408385031215614b7f57614b7e61478f565b5b6000614b8d85828601614acf565b9250506020614b9e858286016149dc565b9150509250929050565b60008060408385031215614bbf57614bbe61478f565b5b6000614bcd858286016149dc565b9250506020614bde858286016149dc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c0d57614c0c614be8565b5b8235905067ffffffffffffffff811115614c2a57614c29614bed565b5b602083019150836020820283011115614c4657614c45614bf2565b5b9250929050565b60008060008060408587031215614c6757614c6661478f565b5b600085013567ffffffffffffffff811115614c8557614c84614794565b5b614c9187828801614bf7565b9450945050602085013567ffffffffffffffff811115614cb457614cb3614794565b5b614cc087828801614bf7565b925092505092959194509250565b614cd78161481e565b8114614ce257600080fd5b50565b600081359050614cf481614cce565b92915050565b600060208284031215614d1057614d0f61478f565b5b6000614d1e84828501614ce5565b91505092915050565b60008060408385031215614d3e57614d3d61478f565b5b6000614d4c85828601614927565b9250506020614d5d85828601614927565b9150509250929050565b600061010082019050614d7d600083018b614a31565b614d8a602083018a614a31565b614d976040830189614a31565b614da46060830188614a31565b614db16080830187614a31565b614dbe60a0830186614a31565b614dcb60c0830185614a31565b614dd860e0830184614a31565b9998505050505050505050565b60008060408385031215614dfc57614dfb61478f565b5b6000614e0a858286016149dc565b9250506020614e1b85828601614ce5565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614e628261489a565b810181811067ffffffffffffffff82111715614e8157614e80614e2a565b5b80604052505050565b6000614e94614785565b9050614ea08282614e59565b919050565b600067ffffffffffffffff821115614ec057614ebf614e2a565b5b614ec98261489a565b9050602081019050919050565b82818337600083830152505050565b6000614ef8614ef384614ea5565b614e8a565b905082815260208101848484011115614f1457614f13614e25565b5b614f1f848285614ed6565b509392505050565b600082601f830112614f3c57614f3b614be8565b5b8135614f4c848260208601614ee5565b91505092915050565b60008060008060808587031215614f6f57614f6e61478f565b5b6000614f7d878288016149dc565b9450506020614f8e878288016149dc565b9350506040614f9f87828801614927565b925050606085013567ffffffffffffffff811115614fc057614fbf614794565b5b614fcc87828801614f27565b91505092959194509250565b6000604082019050614fed6000830185614a31565b614ffa6020830184614a31565b9392505050565b60008083601f84011261501757615016614be8565b5b8235905067ffffffffffffffff81111561503457615033614bed565b5b6020830191508360408202830111156150505761504f614bf2565b5b9250929050565b6000806020838503121561506e5761506d61478f565b5b600083013567ffffffffffffffff81111561508c5761508b614794565b5b61509885828601615001565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806150eb57607f821691505b6020821081036150fe576150fd6150a4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061513e82614906565b915061514983614906565b925082820261515781614906565b9150828204841483151761516e5761516d615104565b5b5092915050565b600060608201905061518a600083018661499b565b6151976020830185614a31565b6151a4604083018461499b565b949350505050565b60006040820190506151c1600083018561499b565b6151ce602083018461499b565b9392505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b600061521861521361520e846151d5565b6151f3565b6151df565b9050919050565b615228816151fd565b82525050565b6000602082019050615243600083018461521f565b92915050565b7f4172726179206c656e67746873206d757374206d617463680000000000000000600082015250565b600061527f60188361485f565b915061528a82615249565b602082019050919050565b600060208201905081810360008301526152ae81615272565b9050919050565b7f456d707479206172726179730000000000000000000000000000000000000000600082015250565b60006152eb600c8361485f565b91506152f6826152b5565b602082019050919050565b6000602082019050818103600083015261531a816152de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061535b82614906565b915061536683614906565b925082820190508082111561537e5761537d615104565b5b92915050565b6000604082019050615399600083018561499b565b6153a66020830184614a31565b9392505050565b6000815190506153bc81614cce565b92915050565b6000602082840312156153d8576153d761478f565b5b60006153e6848285016153ad565b91505092915050565b6000606082019050615404600083018661499b565b615411602083018561499b565b61541e6040830184614a31565b949350505050565b6000819050919050565b600061544b61544661544184615426565b6151f3565b614906565b9050919050565b61545b81615430565b82525050565b60006060820190506154766000830186614a31565b6154836020830185614a31565b6154906040830184615452565b949350505050565b6000815190506154a781614910565b92915050565b6000602082840312156154c3576154c261478f565b5b60006154d184828501615498565b91505092915050565b600081905092915050565b60006154f082614854565b6154fa81856154da565b935061550a818560208601614870565b80840191505092915050565b600061552282856154e5565b915061552e82846154e5565b91508190509392505050565b600061554582614906565b915061555083614906565b925082820390508181111561556857615567615104565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006155a882614906565b91506155b383614906565b9250826155c3576155c261556e565b5b828204905092915050565b60006155d982614906565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361560b5761560a615104565b5b600182019050919050565b600060608201905061562b6000830186614a31565b6156386020830185614a31565b6156456040830184614a31565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006156748261564d565b61567e8185615658565b935061568e818560208601614870565b6156978161489a565b840191505092915050565b60006080820190506156b7600083018761499b565b6156c4602083018661499b565b6156d16040830185614a31565b81810360608301526156e38184615669565b905095945050505050565b6000815190506156fd816147c5565b92915050565b6000602082840312156157195761571861478f565b5b6000615727848285016156ee565b91505092915050565b6000604082019050615745600083018561499b565b6157526020830184614b11565b9392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026157bb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261577e565b6157c5868361577e565b95508019841693508086168417925050509392505050565b60006157f86157f36157ee84614906565b6151f3565b614906565b9050919050565b6000819050919050565b615812836157dd565b61582661581e826157ff565b84845461578b565b825550505050565b600090565b61583b61582e565b615846818484615809565b505050565b5b8181101561586a5761585f600082615833565b60018101905061584c565b5050565b601f8211156158af5761588081615759565b6158898461576e565b81016020851015615898578190505b6158ac6158a48561576e565b83018261584b565b50505b505050565b600082821c905092915050565b60006158d2600019846008026158b4565b1980831691505092915050565b60006158eb83836158c1565b9150826002028217905092915050565b61590482614854565b67ffffffffffffffff81111561591d5761591c614e2a565b5b61592782546150d3565b61593282828561586e565b600060209050601f8311600181146159655760008415615953578287015190505b61595d85826158df565b8655506159c5565b601f19841661597386615759565b60005b8281101561599b57848901518255600182019150602085019450602081019050615976565b868310156159b857848901516159b4601f8916826158c1565b8355505b6001600288020188555050505b505050505050565b6000610140820190506159e3600083018d614a31565b6159f0602083018c614a31565b6159fd604083018b614a31565b615a0a606083018a614a31565b615a176080830189614a31565b615a2460a0830188614a31565b615a3160c0830187614a31565b615a3e60e0830186614a31565b615a4c610100830185614a31565b615a5a610120830184614a31565b9b9a505050505050505050505056fea2646970667358221220690270047f583c0e1a8ed3650463acfebb5336d692be9afa55b9166245148d2064736f6c634300081c0033",
|
1685
|
+
"bytecode": "0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161351d90816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461218e5750806306fdde03146120df578063081812fc146120b6578063095ea7b314611fbc5780630d8317e114611f9e5780630ead771214611f7b5780631a39d8ef14611f5d57806323b872dd14611f45578063248a9ca314611f1e57806327ac0c5814611ef45780632f2ff15d14611ec25780632f84c39114611e2857806336568abe14611de357806342842e0e14611db95780634c19386c14611d9b578063537b1ec714611ba157806358f6786914611b3d57806361d027b314611b145780636352211e14611ae35780636eac61dd14611ac557806370a0823114611a73578063715018a614611a0957806374de4ec41461194457806375a0b6dd1461189657806387c13943146118755780638aee8127146117db5780638da5cb5b146117a557806391b7f5ed146116db57806391d148541461168557806395d89b411461158857806399fbab88146114fc578063a035b1fe146114df578063a0d8d78c146113ab578063a217fddf1461138f578063a22cb465146112f4578063b35fb5421461120f578063b88d4fde14611182578063c1eb68e414610e6b578063c87b56dd14610e0f578063d547741f14610dd8578063d797fe2214610cd9578063da29b26514610c9a578063e16fd0ec14610c7d578063e5a6b10f14610c54578063e985e9c514610c05578063eae86f0b14610be7578063f00acbaa14610bbe578063f0f4426014610b22578063f2fde38b14610af5578063f36de22514610ad7578063f5b541a614610a9c578063f6a48fac14610a6e578063f7c618c114610a45578063f8c8765e1461044a5763fbc14dda1461027e57600080fd5b34610447576020366003190112610447576004356001600160401b0381116104455736602382011215610445578060040135906001600160401b038211610441576024810190602436918460061b010111610441576102db612954565b603d5483603d55806103b3575b508290815b83831061031c57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061032a848685612886565b35116103a457602061033d848685612886565b013511156103955761037c610353838584612886565b356020610361858786612886565b01356040519161037083612315565b82526020820152612811565b6001602061038b848685612886565b01359201916102ed565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361042d57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061041b57506102e8565b8085600292558560018201550161040e565b634e487b7160e01b84526011600452602484fd5b8280fd5b505b80fd5b503461044757608036600319011261044757610464612256565b61046c61226c565b6044356001600160a01b03811690819003610a4057606435906001600160a01b038216808303610a4057600080516020613488833981519152549360ff8560401c1615946001600160401b03811680159081610a38575b6001149081610a2e575b159081610a25575b50610a165767ffffffffffffffff19811660011760008051602061348883398151915255856109e9575b50604095865161050f8882612346565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061053e8983612346565b6002825261056560f41b6020830152610555613399565b61055d613399565b8051906001600160401b0382116109d55781906105886000805160206133e8833981519152546123b7565b601f8111610953575b50602090601f83116001146108c8578c926108bd575b50508160011b916000199060031b1c1916176000805160206133e8833981519152555b8051906001600160401b0382116108a95781906105f56000805160206134a8833981519152546123b7565b601f811161082e575b50602090601f83116001146107af578b926107a4575b50508160011b916000199060031b1c1916176000805160206134a8833981519152555b61063f613399565b610647613399565b6106508561279b565b610658613399565b6001600160a01b0316908115610795576001600160a01b0316918215610786578315610777571561076857906106c89392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b6003541617600355612b7c565b506106d233612a10565b506106dc33612ad2565b506106fa82516106eb81612315565b60648152846020820152612811565b600160ff19600754161760075561070f575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206134888339815191525416600080516020613488833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610614565b6000805160206134a88339815191528c52818c209250601f1984168c5b81811061081657509084600195949392106107fd575b505050811b016000805160206134a883398151915255610637565b015160001960f88460031b161c191690553880806107e2565b929360206001819287860151815501950193016107cc565b6000805160206134a88339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c8101916020851061089f575b90601f859493920160051c01905b81811061089157506105fe565b8c8155849350600101610884565b9091508190610876565b634e487b7160e01b8a52604160045260248afd5b0151905038806105a7565b6000805160206133e88339815191528d526000805160206134c88339815191529250601f1984168d5b81811061093b5750908460019594939210610922575b505050811b016000805160206133e8833981519152556105ca565b015160001960f88460031b161c19169055388080610907565b929360206001819287860151815501950193016108f1565b9091506000805160206133e88339815191528c52601f830160051c6000805160206134c88339815191520190602084106109bf575b90601f8493920160051c6000805160206134c883398151915201905b8181106109b15750610591565b8d81558493506001016109a4565b6000805160206134c88339815191529150610988565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061348883398151915255386104ff565b63f92ee8a960e01b8852600488fd5b905015386104d5565b303b1591506104cd565b8791506104c3565b600080fd5b50346104475780600319360112610447576002546040516001600160a01b039091168152602090f35b503461044757602036600319011261044757610a98610a8b612256565b610a93612901565b612ad2565b5080f35b503461044757806003193601126104475760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104475780600319360112610447576020603d54604051908152f35b503461044757602036600319011261044757610b1f610b12612256565b610b1a6130a5565b61279b565b80f35b503461044757602036600319011261044757610b3c612256565b610b446130a5565b6001600160a01b0381168015610baf57600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461044757806003193601126104475760206040516000805160206134088339815191528152f35b50346104475780600319360112610447576020600854604051908152f35b503461044757604036600319011261044757610c1f612256565b610c30610c2a61226c565b9161260e565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104475780600319360112610447576001546040516001600160a01b039091168152602090f35b503461044757806003193601126104475760206040516127108152f35b50346104475760203660031901126104475760043590603d54821015610447576040610cc583612382565b506001815491015482519182526020820152f35b5034610447576020366003190112610447576004358015610dc9576006548111610dba576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610daf57610d82575b50610d508160065461278e565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610da39060203d602011610da8575b610d9b8183612346565b8101906125bd565b610d43565b503d610d91565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461044757604036600319011261044757610a98600435610df861226c565b90610e0a610e058261257f565b6129c6565b612cad565b503461044757602036600319011261044757610e2c600435612896565b5080604051610e3c602082612346565b5250610e67604051610e4f602082612346565b60008152604051918291602083526020830190612215565b0390f35b503461044757604036600319011261044757600435610e8861226c565b8115611173576001600160a01b03811661116e5750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af1801561116357611146575b5060045491600019831461042d5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761113257906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020610ff8836005546125b0565b80600555604051908152a16001600160a01b03821691821561111e5761101d846130db565b6001600160a01b038116801515928691869161103d90866110ff576125d5565b805460010190558289526000805160206134688339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a4506110eb57907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61110885613103565b611111866125d5565b80546000190190556125d5565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b61115e9060203d602011610da857610d9b8183612346565b610ee5565b6040513d86823e3d90fd5b610e9f565b631f2a200560e01b8352600483fd5b50346104475760803660031901126104475761119c612256565b6111a461226c565b90606435906001600160401b03821161120b573660238301121561120b57816004013592846111d285612367565b936111e06040519586612346565b85855236602487830101116104455785610b1f96602460209301838801378501015260443591612647565b8380fd5b503461044757604036600319011261044757611229612256565b6024356112346130a5565b6001546001600160a01b039283169216821480156112e0575b6112d15780156111735760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112c65782916112a7575b50156112985780f35b63360e42e160e01b8152600490fd5b6112c0915060203d602011610da857610d9b8183612346565b3861128f565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b0316821461124d565b50346104475760403660031901126104475761130e612256565b60243590811515809203610441576001600160a01b031690811561137b576113353361260e565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b5034610447578060031936011261044757602090604051908152f35b5034610447576020366003190112610447576004356113c86130a5565b8015610dc9576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111635784916114ad575b50821161149e5760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610daf57611481575b5061144f816006546125b0565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114999060203d602011610da857610d9b8183612346565b611442565b631e9acf1760e31b8352600483fd5b90506020813d6020116114d7575b816114c860209383612346565b8101031261120b575138611407565b3d91506114bb565b503461044757806003193601126104475760209054604051908152f35b5034610447576020366003190112610447576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b503461044757806003193601126104475760405190806000805160206134a883398151915254906115b8826123b7565b808552916001811690811561165e57506001146115f4575b610e67846115e081860382612346565b604051918291602083526020830190612215565b6000805160206134a883398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210611644575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161162b565b60ff191660208087019190915292151560051b850190920192506115e091508390506115d0565b50346104475760403660031901126104475760ff60406020926116a661226c565b600435825260008051602061344883398151915285528282206001600160a01b03909116825284522054604051911615158152f35b5034610447576020366003190112610447576000805160206134088339815191528152600080516020613448833981519152602090815260408083203384529091528120546004359060ff16156117805780156117715760607f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc48918354908085556040519182526020820152836040820152a180f35b634dfba02360e01b8252600482fd5b63e2517d3f60e01b825233600452600080516020613408833981519152602452604482fd5b5034610447578060031936011261044757600080516020613428833981519152546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576117f5612256565b6117fd612954565b6001600160a01b038116801561186657600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610ba9565b636a27e5f160e01b8352600483fd5b50346104475780600319360112610447575060206305f5e100604051908152f35b50346104475760403660031901126104475760043560ff6007541615611935578082918252603c6020526118dd60018060a01b036008604085200154169160243590612d4d565b806118e6575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112c65761191d575080f35b610a989060203d602011610da857610d9b8183612346565b6333962fd760e01b8252600482fd5b5034610447576020366003190112610447576004358015610dc9576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610daf577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119ec575b506119da60085491826125b0565b8060085582519182526020820152a180f35b611a049060203d602011610da857610d9b8183612346565b6119cc565b5034610447578060031936011261044757611a226130a5565b60008051602061342883398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461044757602036600319011261044757611a8d612256565b906001600160a01b03821615611ab1576020611aa8836125d5565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104475780600319360112610447576020600954604051908152f35b5034610447576020366003190112610447576020611b02600435612896565b6040516001600160a01b039091168152f35b50346104475780600319360112610447576003546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576004358015158091036104455760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b886130a5565b60ff196007541660ff821617600755604051908152a180f35b5034610447576040366003190112610447576004356001600160401b03811161044557611bd29036906004016122bc565b91906024356001600160401b03811161044157611bf39036906004016122bc565b9060ff6007541615611d8c57818503611d47578415611d135782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c425786808787806118e6575050f35b90919293611c518589856125a0565b358752603c60205260408720600801546001600160a01b0316869003611ca857611c9e600191611c98611c85888c886125a0565b35611c9189878a6125a0565b3590612d4d565b906125b0565b9401929190611c2e565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104475780600319360112610447576020600654604051908152f35b503461044757610b1f611dcb36612282565b9060405192611ddb602085612346565b858452612647565b503461044757604036600319011261044757611dfd61226c565b336001600160a01b03821603611e1957610a9890600435612cad565b63334bd91960e11b8252600482fd5b503461044757602036600319011261044757611e42612256565b611e4a612954565b6001600160a01b0381168015611eb357600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610ba9565b63c2cf440960e01b8352600483fd5b503461044757604036600319011261044757610a98600435611ee261226c565b90611eef610e058261257f565b612c16565b503461044757602036600319011261044757610a98611f11612256565b611f19612901565b612a10565b5034610447576020366003190112610447576020611f3d60043561257f565b604051908152f35b503461044757610b1f611f5736612282565b916123f1565b50346104475780600319360112610447576020600554604051908152f35b5034610447578060031936011261044757602060ff600754166040519015158152f35b50346104475780600319360112610447576020604051620f42408152f35b503461044757604036600319011261044757611fd6612256565b602435611fe281612896565b331515806120a3575b80612085575b6120725781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061208f8161260e565b338552602052604084205460ff1615611ff1565b506001600160a01b038116331415611feb565b5034610447576020366003190112610447576020611b026004356120d981612896565b506128c7565b503461044757806003193601126104475760405190806000805160206133e8833981519152549061210f826123b7565b808552916001811690811561165e575060011461213657610e67846115e081860382612346565b6000805160206133e883398151915281526000805160206134c8833981519152939250905b808210612174575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161215b565b9050346104455760203660031901126104455760043563ffffffff60e01b81168091036104415760209250637965db0b60e01b81149081156121d2575b5015158152f35b6380ac58cd60e01b811491508115612204575b81156121f3575b50386121cb565b6301ffc9a760e01b149050386121ec565b635b5e139f60e01b811491506121e5565b919082519283825260005b848110612241575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612220565b600435906001600160a01b0382168203610a4057565b602435906001600160a01b0382168203610a4057565b6060906003190112610a40576004356001600160a01b0381168103610a4057906024356001600160a01b0381168103610a40579060443590565b9181601f84011215610a40578235916001600160401b038311610a40576020808501948460051b010111610a4057565b818102929181159184041417156122ff57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761233057604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761233057604052565b6001600160401b03811161233057601f01601f191660200190565b603d548110156123a157603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156123e7575b60208310146123d157565b634e487b7160e01b600052602260045260246000fd5b91607f16916123c6565b909291906001600160a01b038416801561256957600094612411846130db565b95331515806124d0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61245c97989460018060a01b038616988993846124be576125d5565b805460010190558481526000805160206134688339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036124a457505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6124c787613103565b611111886125d5565b80612519575b156124e1573861241b565b84906001600160a01b03881661250357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b0387163314801561254c575b806124d65750336001600160a01b03612545876128c7565b16146124d6565b506125568761260e565b338252602052604081205460ff1661252d565b633250574960e11b600052600060045260246000fd5b60005260008051602061344883398151915260205260016040600020015490565b91908110156123a15760051b0190565b919082018092116122ff57565b90816020910312610a4057518015158103610a405790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b92916126548183866123f1565b813b612661575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906126ac906084830190612215565b03816000865af1809160009161274b575b509061271657503d1561270f573d6126d481612367565b906126e26040519283612346565b81523d6000602083013e5b8051908161270a5782633250574960e11b60005260045260246000fd5b602001fd5b60606126ed565b6001600160e01b03191663757a42ff60e11b0161273757503880808061265b565b633250574960e11b60005260045260246000fd5b6020813d602011612786575b8161276460209383612346565b810103126104455751906001600160e01b0319821682036104475750386126bd565b3d9150612757565b919082039182116122ff57565b6001600160a01b031680156127fb5760008051602061342883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d54680100000000000000008110156123305760018101603d556000603d5482101561287257603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b91908110156123a15760061b0190565b61289f816130db565b906001600160a01b038216156128b3575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561293a57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561298d57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206134488339815191526020908152604080832033845290915290205460ff16156129f85750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612acc576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206133c88339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612acc576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff19166001179055339190600080516020613408833981519152906000805160206133c88339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612acc576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206133c88339815191528180a4600190565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff16612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206133c88339815191529080a4600190565b5050600090565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612d5681612896565b6001600160a01b031633141580613080575b61306f5780600052603c60205260056040600020015461305e5780600052603c602052604060002091801561304d5760028301928354821161303c57612dae8284613141565b9692909193859760009485548354808210612ff7575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612df58a60055461278e565b80600555604051908152a1878154808214600014612f5657505060009042600585015581546001850155556000612e2b896130db565b6001600160a01b0381168015928b918415612f37575b8282526000805160206134688339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a450612f2257600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b612f4083613103565b612f49846125d5565b8054600019019055612e41565b90612f6591989692959861278e565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b613010929b509061300a9197939761278e565b886122ec565b6305f5e10091500493613034856007840161302c8282546125b0565b90558861278e565b983880612dc4565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061308a81612896565b50336001600160a01b0361309d836128c7565b161415612d68565b600080516020613428833981519152546001600160a01b031633036130c657565b63118cdaa760e01b6000523360045260246000fd5b600090815260008051602061346883398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613387576131719261316b9161278e565b906122ec565b6305f5e10090049081156133775761318d60048201544261278e565b92603d5460009460005b828110613342575050506127106131ae85856122ec565b049260066131bc858361278e565b93016131c98282546125b0565b9055600954846132dc575b831515806132c8575b613227575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de291613212846009546125b0565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af19081156132bc577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261329d575b509150506131e2565b6132b59060203d602011610da857610d9b8183612346565b5038613294565b6040513d6000823e3d90fd5b506003546001600160a01b031615156131dd565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af180156132bc57613323575b506131d4565b61333b9060203d602011610da857610d9b8183612346565b503861331d565b600161334d82612382565b500154821015613360575b600101613197565b9550600161336d87612382565b5054969050613358565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206134888339815191525460401c16156133b657565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930004824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a26469706673582212206651b62c7104ddc5968b4dd53f603781644a0dfb06fbc362786ca642161fa62b64736f6c634300081c0033",
|
1686
|
+
"deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461218e5750806306fdde03146120df578063081812fc146120b6578063095ea7b314611fbc5780630d8317e114611f9e5780630ead771214611f7b5780631a39d8ef14611f5d57806323b872dd14611f45578063248a9ca314611f1e57806327ac0c5814611ef45780632f2ff15d14611ec25780632f84c39114611e2857806336568abe14611de357806342842e0e14611db95780634c19386c14611d9b578063537b1ec714611ba157806358f6786914611b3d57806361d027b314611b145780636352211e14611ae35780636eac61dd14611ac557806370a0823114611a73578063715018a614611a0957806374de4ec41461194457806375a0b6dd1461189657806387c13943146118755780638aee8127146117db5780638da5cb5b146117a557806391b7f5ed146116db57806391d148541461168557806395d89b411461158857806399fbab88146114fc578063a035b1fe146114df578063a0d8d78c146113ab578063a217fddf1461138f578063a22cb465146112f4578063b35fb5421461120f578063b88d4fde14611182578063c1eb68e414610e6b578063c87b56dd14610e0f578063d547741f14610dd8578063d797fe2214610cd9578063da29b26514610c9a578063e16fd0ec14610c7d578063e5a6b10f14610c54578063e985e9c514610c05578063eae86f0b14610be7578063f00acbaa14610bbe578063f0f4426014610b22578063f2fde38b14610af5578063f36de22514610ad7578063f5b541a614610a9c578063f6a48fac14610a6e578063f7c618c114610a45578063f8c8765e1461044a5763fbc14dda1461027e57600080fd5b34610447576020366003190112610447576004356001600160401b0381116104455736602382011215610445578060040135906001600160401b038211610441576024810190602436918460061b010111610441576102db612954565b603d5483603d55806103b3575b508290815b83831061031c57847fdb840036dd546f2fc2b3a5a3807bc68f2b180b4a08b42c51429def8f7be480b68180a180f35b61271061032a848685612886565b35116103a457602061033d848685612886565b013511156103955761037c610353838584612886565b356020610361858786612886565b01356040519161037083612315565b82526020820152612811565b6001602061038b848685612886565b01359201916102ed565b637616640160e01b8452600484fd5b636093dc5160e01b8552600485fd5b6001600160ff1b038116810361042d57603d845260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc3017fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc35b81811061041b57506102e8565b8085600292558560018201550161040e565b634e487b7160e01b84526011600452602484fd5b8280fd5b505b80fd5b503461044757608036600319011261044757610464612256565b61046c61226c565b6044356001600160a01b03811690819003610a4057606435906001600160a01b038216808303610a4057600080516020613488833981519152549360ff8560401c1615946001600160401b03811680159081610a38575b6001149081610a2e575b159081610a25575b50610a165767ffffffffffffffff19811660011760008051602061348883398151915255856109e9575b50604095865161050f8882612346565b60158152742a3930b234b733ab30bab63a102837b9b4ba34b7b760591b602082015287519061053e8983612346565b6002825261056560f41b6020830152610555613399565b61055d613399565b8051906001600160401b0382116109d55781906105886000805160206133e8833981519152546123b7565b601f8111610953575b50602090601f83116001146108c8578c926108bd575b50508160011b916000199060031b1c1916176000805160206133e8833981519152555b8051906001600160401b0382116108a95781906105f56000805160206134a8833981519152546123b7565b601f811161082e575b50602090601f83116001146107af578b926107a4575b50508160011b916000199060031b1c1916176000805160206134a8833981519152555b61063f613399565b610647613399565b6106508561279b565b610658613399565b6001600160a01b0316908115610795576001600160a01b0316918215610786578315610777571561076857906106c89392916001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b6003541617600355612b7c565b506106d233612a10565b506106dc33612ad2565b506106fa82516106eb81612315565b60648152846020820152612811565b600160ff19600754161760075561070f575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000196000805160206134888339815191525416600080516020613488833981519152555160018152a180f35b630702b3d960e41b8752600487fd5b63cfe2ea6360e01b8852600488fd5b636a27e5f160e01b8852600488fd5b63c2cf440960e01b8852600488fd5b015190503880610614565b6000805160206134a88339815191528c52818c209250601f1984168c5b81811061081657509084600195949392106107fd575b505050811b016000805160206134a883398151915255610637565b015160001960f88460031b161c191690553880806107e2565b929360206001819287860151815501950193016107cc565b6000805160206134a88339815191528c529091507ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e601f840160051c8101916020851061089f575b90601f859493920160051c01905b81811061089157506105fe565b8c8155849350600101610884565b9091508190610876565b634e487b7160e01b8a52604160045260248afd5b0151905038806105a7565b6000805160206133e88339815191528d526000805160206134c88339815191529250601f1984168d5b81811061093b5750908460019594939210610922575b505050811b016000805160206133e8833981519152556105ca565b015160001960f88460031b161c19169055388080610907565b929360206001819287860151815501950193016108f1565b9091506000805160206133e88339815191528c52601f830160051c6000805160206134c88339815191520190602084106109bf575b90601f8493920160051c6000805160206134c883398151915201905b8181106109b15750610591565b8d81558493506001016109a4565b6000805160206134c88339815191529150610988565b634e487b7160e01b8b52604160045260248bfd5b68ffffffffffffffffff1916680100000000000000011760008051602061348883398151915255386104ff565b63f92ee8a960e01b8852600488fd5b905015386104d5565b303b1591506104cd565b8791506104c3565b600080fd5b50346104475780600319360112610447576002546040516001600160a01b039091168152602090f35b503461044757602036600319011261044757610a98610a8b612256565b610a93612901565b612ad2565b5080f35b503461044757806003193601126104475760206040517f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298152f35b50346104475780600319360112610447576020603d54604051908152f35b503461044757602036600319011261044757610b1f610b12612256565b610b1a6130a5565b61279b565b80f35b503461044757602036600319011261044757610b3c612256565b610b446130a5565b6001600160a01b0381168015610baf57600380546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a91819081015b0390a180f35b63cfe2ea6360e01b8352600483fd5b503461044757806003193601126104475760206040516000805160206134088339815191528152f35b50346104475780600319360112610447576020600854604051908152f35b503461044757604036600319011261044757610c1f612256565b610c30610c2a61226c565b9161260e565b9060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346104475780600319360112610447576001546040516001600160a01b039091168152602090f35b503461044757806003193601126104475760206040516127108152f35b50346104475760203660031901126104475760043590603d54821015610447576040610cc583612382565b506001815491015482519182526020820152f35b5034610447576020366003190112610447576004358015610dc9576006548111610dba576001546040516323b872dd60e01b815233600482015230602482015260448101839052906020908290606490829087906001600160a01b03165af18015610daf57610d82575b50610d508160065461278e565b6006556040519081527f1ddc8f26f8c3c076f9978db18d22e7b427b1a630289eda0ff2e784501db7225360203392a280f35b610da39060203d602011610da8575b610d9b8183612346565b8101906125bd565b610d43565b503d610d91565b6040513d85823e3d90fd5b63e480bdff60e01b8252600482fd5b631f2a200560e01b8252600482fd5b503461044757604036600319011261044757610a98600435610df861226c565b90610e0a610e058261257f565b6129c6565b612cad565b503461044757602036600319011261044757610e2c600435612896565b5080604051610e3c602082612346565b5250610e67604051610e4f602082612346565b60008152604051918291602083526020830190612215565b0390f35b503461044757604036600319011261044757600435610e8861226c565b8115611173576001600160a01b03811661116e5750335b6001546040516323b872dd60e01b815233600482015230602482015260448101849052906020908290606490829088906001600160a01b03165af1801561116357611146575b5060045491600019831461042d5760018301600455835460018060a01b03600154166040519161012083018381106001600160401b0382111761113257906008929160405283528587602085018181526040860187815260608701888152608088019142835260a0890193858552604060c08b019680885260e08c0198818a526101008d019a8b528152603c6020522099518a555160018a015551600289015551600388015551600487015551600586015551600685015551600784015560018060a01b0390511691019060018060a01b03166001600160601b0360a01b8254161790557f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020610ff8836005546125b0565b80600555604051908152a16001600160a01b03821691821561111e5761101d846130db565b6001600160a01b038116801515928691869161103d90866110ff576125d5565b805460010190558289526000805160206134688339815191526020526040892080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8980a4506110eb57907fda9e76063c829bf741f9a699f66dfa2fba907e8e1954f07c8478a0841e56a9ce60808493602096549060018060a01b036001541690604051928352888301524260408301526060820152a3604051908152f35b6339e3563760e11b84526004849052602484fd5b61110885613103565b611111866125d5565b80546000190190556125d5565b633250574960e11b85526004859052602485fd5b634e487b7160e01b88526041600452602488fd5b61115e9060203d602011610da857610d9b8183612346565b610ee5565b6040513d86823e3d90fd5b610e9f565b631f2a200560e01b8352600483fd5b50346104475760803660031901126104475761119c612256565b6111a461226c565b90606435906001600160401b03821161120b573660238301121561120b57816004013592846111d285612367565b936111e06040519586612346565b85855236602487830101116104455785610b1f96602460209301838801378501015260443591612647565b8380fd5b503461044757604036600319011261044757611229612256565b6024356112346130a5565b6001546001600160a01b039283169216821480156112e0575b6112d15780156111735760405163a9059cbb60e01b81523360048201526024810191909152906020908290604490829086905af19081156112c65782916112a7575b50156112985780f35b63360e42e160e01b8152600490fd5b6112c0915060203d602011610da857610d9b8183612346565b3861128f565b6040513d84823e3d90fd5b63e3542bf760e01b8352600483fd5b506002546001600160a01b0316821461124d565b50346104475760403660031901126104475761130e612256565b60243590811515809203610441576001600160a01b031690811561137b576113353361260e565b8284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b630b61174360e31b83526004829052602483fd5b5034610447578060031936011261044757602090604051908152f35b5034610447576020366003190112610447576004356113c86130a5565b8015610dc9576001546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa9081156111635784916114ad575b50821161149e5760405163a9059cbb60e01b815233600482015260248101839052906020908290604490829087905af18015610daf57611481575b5061144f816006546125b0565b6006556040519081527f2c2d88bb2c04a245a8df31f649252cce1de7bf7ac17d3555f3b7530f968f8d0660203392a280f35b6114999060203d602011610da857610d9b8183612346565b611442565b631e9acf1760e31b8352600483fd5b90506020813d6020116114d7575b816114c860209383612346565b8101031261120b575138611407565b3d91506114bb565b503461044757806003193601126104475760209054604051908152f35b5034610447576020366003190112610447576040610120916004358152603c60205220805490600181015490600281015460038201546004830154600584015491600685015493600786015495600860018060a01b039101541696604051988952602089015260408801526060870152608086015260a085015260c084015260e0830152610100820152f35b503461044757806003193601126104475760405190806000805160206134a883398151915254906115b8826123b7565b808552916001811690811561165e57506001146115f4575b610e67846115e081860382612346565b604051918291602083526020830190612215565b6000805160206134a883398151915281527ff4bad0a69248f59680a4f2b3000328cec71a413447c96781cfe5996daa8c456e939250905b808210611644575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161162b565b60ff191660208087019190915292151560051b850190920192506115e091508390506115d0565b50346104475760403660031901126104475760ff60406020926116a661226c565b600435825260008051602061344883398151915285528282206001600160a01b03909116825284522054604051911615158152f35b5034610447576020366003190112610447576000805160206134088339815191528152600080516020613448833981519152602090815260408083203384529091528120546004359060ff16156117805780156117715760607f15819dd2fd9f6418b142e798d08a18d0bf06ea368f4480b7b0d3f75bd966bc48918354908085556040519182526020820152836040820152a180f35b634dfba02360e01b8252600482fd5b63e2517d3f60e01b825233600452600080516020613408833981519152602452604482fd5b5034610447578060031936011261044757600080516020613428833981519152546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576117f5612256565b6117fd612954565b6001600160a01b038116801561186657600280546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527f906ff2422a6ffa134f2d7ccaffd446bc0c583a5cb6615749b4b2836942a5fea89181908101610ba9565b636a27e5f160e01b8352600483fd5b50346104475780600319360112610447575060206305f5e100604051908152f35b50346104475760403660031901126104475760043560ff6007541615611935578082918252603c6020526118dd60018060a01b036008604085200154169160243590612d4d565b806118e6575050f35b60405163a9059cbb60e01b815233600482015260248101919091529160209183916044918391905af180156112c65761191d575080f35b610a989060203d602011610da857610d9b8183612346565b6333962fd760e01b8252600482fd5b5034610447576020366003190112610447576004358015610dc9576002546040516323b872dd60e01b81523360048201523060248201526044810183905291906020908390606490829087906001600160a01b03165af1908115610daf577fc04c302bacaef8c9bec8841c7f0dffba5a121e12e14b6a52f9fc9940ecf0d7aa926040926119ec575b506119da60085491826125b0565b8060085582519182526020820152a180f35b611a049060203d602011610da857610d9b8183612346565b6119cc565b5034610447578060031936011261044757611a226130a5565b60008051602061342883398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461044757602036600319011261044757611a8d612256565b906001600160a01b03821615611ab1576020611aa8836125d5565b54604051908152f35b6322718ad960e21b81526004819052602490fd5b50346104475780600319360112610447576020600954604051908152f35b5034610447576020366003190112610447576020611b02600435612896565b6040516001600160a01b039091168152f35b50346104475780600319360112610447576003546040516001600160a01b039091168152602090f35b5034610447576020366003190112610447576004358015158091036104455760207f29ba88224264632c83574215c72146e3239d91512d22b3b47194eb28bc26aa3591611b886130a5565b60ff196007541660ff821617600755604051908152a180f35b5034610447576040366003190112610447576004356001600160401b03811161044557611bd29036906004016122bc565b91906024356001600160401b03811161044157611bf39036906004016122bc565b9060ff6007541615611d8c57818503611d47578415611d135782358452603c60205260408420600801546001600160a01b0316928492839291905b878410611c425786808787806118e6575050f35b90919293611c518589856125a0565b358752603c60205260408720600801546001600160a01b0316869003611ca857611c9e600191611c98611c85888c886125a0565b35611c9189878a6125a0565b3590612d4d565b906125b0565b9401929190611c2e565b60405162461bcd60e51b815260206004820152603a60248201527f416c6c20706f736974696f6e73206d75737420757365207468652073616d652060448201527f746f6b656e20666f722062617463682070726f63657373696e670000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4172726179206c656e67746873206d757374206d6174636800000000000000006044820152606490fd5b6333962fd760e01b8452600484fd5b50346104475780600319360112610447576020600654604051908152f35b503461044757610b1f611dcb36612282565b9060405192611ddb602085612346565b858452612647565b503461044757604036600319011261044757611dfd61226c565b336001600160a01b03821603611e1957610a9890600435612cad565b63334bd91960e11b8252600482fd5b503461044757602036600319011261044757611e42612256565b611e4a612954565b6001600160a01b0381168015611eb357600180546001600160a01b031981169092179055604080516001600160a01b0392831681529190921660208201527fce76357c57fa1f65ea8fb41c18f6a9bac76156984fee9e0f25a24b66977bb59d9181908101610ba9565b63c2cf440960e01b8352600483fd5b503461044757604036600319011261044757610a98600435611ee261226c565b90611eef610e058261257f565b612c16565b503461044757602036600319011261044757610a98611f11612256565b611f19612901565b612a10565b5034610447576020366003190112610447576020611f3d60043561257f565b604051908152f35b503461044757610b1f611f5736612282565b916123f1565b50346104475780600319360112610447576020600554604051908152f35b5034610447578060031936011261044757602060ff600754166040519015158152f35b50346104475780600319360112610447576020604051620f42408152f35b503461044757604036600319011261044757611fd6612256565b602435611fe281612896565b331515806120a3575b80612085575b6120725781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258680a482527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793046020526040822080546001600160a01b0319166001600160a01b0390921691909117905580f35b63a9fbf51f60e01b845233600452602484fd5b5061208f8161260e565b338552602052604084205460ff1615611ff1565b506001600160a01b038116331415611feb565b5034610447576020366003190112610447576020611b026004356120d981612896565b506128c7565b503461044757806003193601126104475760405190806000805160206133e8833981519152549061210f826123b7565b808552916001811690811561165e575060011461213657610e67846115e081860382612346565b6000805160206133e883398151915281526000805160206134c8833981519152939250905b808210612174575090915081016020016115e0826115d0565b91926001816020925483858801015201910190929161215b565b9050346104455760203660031901126104455760043563ffffffff60e01b81168091036104415760209250637965db0b60e01b81149081156121d2575b5015158152f35b6380ac58cd60e01b811491508115612204575b81156121f3575b50386121cb565b6301ffc9a760e01b149050386121ec565b635b5e139f60e01b811491506121e5565b919082519283825260005b848110612241575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201612220565b600435906001600160a01b0382168203610a4057565b602435906001600160a01b0382168203610a4057565b6060906003190112610a40576004356001600160a01b0381168103610a4057906024356001600160a01b0381168103610a40579060443590565b9181601f84011215610a40578235916001600160401b038311610a40576020808501948460051b010111610a4057565b818102929181159184041417156122ff57565b634e487b7160e01b600052601160045260246000fd5b604081019081106001600160401b0382111761233057604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761233057604052565b6001600160401b03811161233057601f01601f191660200190565b603d548110156123a157603d60005260206000209060011b0190600090565b634e487b7160e01b600052603260045260246000fd5b90600182811c921680156123e7575b60208310146123d157565b634e487b7160e01b600052602260045260246000fd5b91607f16916123c6565b909291906001600160a01b038416801561256957600094612411846130db565b95331515806124d0575b509184917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61245c97989460018060a01b038616988993846124be576125d5565b805460010190558481526000805160206134688339815191526020526040812080546001600160a01b0319168517905580a4506001600160a01b03168083036124a457505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6124c787613103565b611111886125d5565b80612519575b156124e1573861241b565b84906001600160a01b03881661250357602491637e27328960e01b8252600452fd5b60449163177e802f60e01b825233600452602452fd5b506001600160a01b0387163314801561254c575b806124d65750336001600160a01b03612545876128c7565b16146124d6565b506125568761260e565b338252602052604081205460ff1661252d565b633250574960e11b600052600060045260246000fd5b60005260008051602061344883398151915260205260016040600020015490565b91908110156123a15760051b0190565b919082018092116122ff57565b90816020910312610a4057518015158103610a405790565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793036020526040902090565b6001600160a01b031660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020526040902090565b92916126548183866123f1565b813b612661575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906126ac906084830190612215565b03816000865af1809160009161274b575b509061271657503d1561270f573d6126d481612367565b906126e26040519283612346565b81523d6000602083013e5b8051908161270a5782633250574960e11b60005260045260246000fd5b602001fd5b60606126ed565b6001600160e01b03191663757a42ff60e11b0161273757503880808061265b565b633250574960e11b60005260045260246000fd5b6020813d602011612786575b8161276460209383612346565b810103126104455751906001600160e01b0319821682036104475750386126bd565b3d9150612757565b919082039182116122ff57565b6001600160a01b031680156127fb5760008051602061342883398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b631e4fbdf760e01b600052600060045260246000fd5b603d54680100000000000000008110156123305760018101603d556000603d5482101561287257603d905260011b7fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc301906020816001925184550151910155565b634e487b7160e01b81526032600452602490fd5b91908110156123a15760061b0190565b61289f816130db565b906001600160a01b038216156128b3575090565b637e27328960e01b60005260045260246000fd5b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff161561293a57565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff161561298d57565b63e2517d3f60e01b600052336004527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960245260446000fd5b60008181526000805160206134488339815191526020908152604080832033845290915290205460ff16156129f85750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16612acc576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391907f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929906000805160206133c88339815191529080a4600190565b50600090565b6001600160a01b03811660009081527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab602052604090205460ff16612acc576001600160a01b031660008181527f9cfad5238ce3e0b54cbca0820bf2b02d66d496527d1fa42cb60bdcdd96bd88ab60205260408120805460ff19166001179055339190600080516020613408833981519152906000805160206133c88339815191529080a4600190565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16612acc576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206133c88339815191528180a4600190565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff16612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206133c88339815191529080a4600190565b5050600090565b6000818152600080516020613448833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612ca6576000818152600080516020613448833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612d5681612896565b6001600160a01b031633141580613080575b61306f5780600052603c60205260056040600020015461305e5780600052603c602052604060002091801561304d5760028301928354821161303c57612dae8284613141565b9692909193859760009485548354808210612ff7575b50507f2f61af559bf23be05bd7bb2fe5574529caa9a0176cc730cc3dc0d1bd40ec93756020612df58a60055461278e565b80600555604051908152a1878154808214600014612f5657505060009042600585015581546001850155556000612e2b896130db565b6001600160a01b0381168015928b918415612f37575b8282526000805160206134688339815191526020526040822080546001600160a01b03191690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a450612f2257600660078301549201549388600052603c60205260018060a01b03600860406000200154169660005494604051998a52600060208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b87637e27328960e01b60005260045260246000fd5b612f4083613103565b612f49846125d5565b8054600019019055612e41565b90612f6591989692959861278e565b809455600660078401549301549489600052603c60205260018060a01b036008604060002001541697600054956040519a8b5260208b015260408a01526060890152608088015260a087015260c086015260e08501526101008401526101208301526101408201527f1291b17e4c611ac722f03763ded81e523d2aa81f5ca80b235aba2fcbe7a0d3176101603392a390565b613010929b509061300a9197939761278e565b886122ec565b6305f5e10091500493613034856007840161302c8282546125b0565b90558861278e565b983880612dc4565b631e9acf1760e31b60005260046000fd5b631f2a200560e01b60005260046000fd5b63219ce9a360e01b60005260046000fd5b636d8a29e760e11b60005260046000fd5b5061308a81612896565b50336001600160a01b0361309d836128c7565b161415612d68565b600080516020613428833981519152546001600160a01b031633036130c657565b63118cdaa760e01b6000523360045260246000fd5b600090815260008051602061346883398151915260205260409020546001600160a01b031690565b6000527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260406000206001600160601b0360a01b8154169055565b600052603c6020526040600020906000549082549182811115613387576131719261316b9161278e565b906122ec565b6305f5e10090049081156133775761318d60048201544261278e565b92603d5460009460005b828110613342575050506127106131ae85856122ec565b049260066131bc858361278e565b93016131c98282546125b0565b9055600954846132dc575b831515806132c8575b613227575b60407f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de291613212846009546125b0565b8060095582519182526020820152a193929190565b60025460035460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101879052929160209184916044918391600091165af19081156132bc577f903baec967bd87828705b3a5cfaffa06bd05cf4d6b29bbc0c10318dfa1918de29260409261329d575b509150506131e2565b6132b59060203d602011610da857610d9b8183612346565b5038613294565b6040513d6000823e3d90fd5b506003546001600160a01b031615156131dd565b60025460405163a9059cbb60e01b81523360048201526024810187905290602090829060449082906000906001600160a01b03165af180156132bc57613323575b506131d4565b61333b9060203d602011610da857610d9b8183612346565b503861331d565b600161334d82612382565b500154821015613360575b600101613197565b9550600161336d87612382565b5054969050613358565b5050600090600090600090600090565b50505050600090600090600090600090565b60ff6000805160206134888339815191525460401c16156133b657565b631afcd79f60e31b60005260046000fdfe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930004824fcb60e7cc526d70b264caa65b62ed44d9c8e5d230e8ff6b0c7373843b8a9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930137c58c799b6609234b945e882912ee9ad34948a1dfaa20a97485e1a7752bbf81a26469706673582212206651b62c7104ddc5968b4dd53f603781644a0dfb06fbc362786ca642161fa62b64736f6c634300081c0033",
|
1679
1687
|
"linkReferences": {},
|
1680
1688
|
"deployedLinkReferences": {}
|
1681
1689
|
}
|
@@ -11,21 +11,20 @@ export declare namespace TradingVault {
|
|
11
11
|
};
|
12
12
|
}
|
13
13
|
export interface TradingVaultInterface extends Interface {
|
14
|
-
getFunction(nameOrSignature: "BASE_WEIGHT" | "DEFAULT_ADMIN_ROLE" | "EXPO" | "
|
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;
|
15
15
|
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
16
|
encodeFunctionData(functionFragment: "BASE_WEIGHT", values?: undefined): string;
|
17
17
|
encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string;
|
18
18
|
encodeFunctionData(functionFragment: "EXPO", values?: undefined): string;
|
19
|
-
encodeFunctionData(functionFragment: "EXPO_100", values?: undefined): string;
|
20
19
|
encodeFunctionData(functionFragment: "OPERATOR_ROLE", values?: undefined): string;
|
20
|
+
encodeFunctionData(functionFragment: "PERCENTAGE_BASE", values?: undefined): string;
|
21
21
|
encodeFunctionData(functionFragment: "PRICE_SETTER_ROLE", values?: undefined): string;
|
22
22
|
encodeFunctionData(functionFragment: "addReward", values: [BigNumberish]): string;
|
23
23
|
encodeFunctionData(functionFragment: "approve", values: [AddressLike, BigNumberish]): string;
|
24
24
|
encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string;
|
25
25
|
encodeFunctionData(functionFragment: "borrowCurrency", values: [BigNumberish]): string;
|
26
26
|
encodeFunctionData(functionFragment: "claimERC20", values: [AddressLike, BigNumberish]): string;
|
27
|
-
encodeFunctionData(functionFragment: "createPosition", values: [BigNumberish]): string;
|
28
|
-
encodeFunctionData(functionFragment: "createPositionForUser", values: [AddressLike, BigNumberish]): string;
|
27
|
+
encodeFunctionData(functionFragment: "createPosition", values: [BigNumberish, AddressLike]): string;
|
29
28
|
encodeFunctionData(functionFragment: "currency", values?: undefined): string;
|
30
29
|
encodeFunctionData(functionFragment: "getApproved", values: [BigNumberish]): string;
|
31
30
|
encodeFunctionData(functionFragment: "getRewardConfigsLength", values?: undefined): string;
|
@@ -34,7 +33,7 @@ export interface TradingVaultInterface extends Interface {
|
|
34
33
|
encodeFunctionData(functionFragment: "grantPriceSetterRole", values: [AddressLike]): string;
|
35
34
|
encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string;
|
36
35
|
encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string;
|
37
|
-
encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike]): string;
|
36
|
+
encodeFunctionData(functionFragment: "initialize", values: [AddressLike, AddressLike, AddressLike, AddressLike]): string;
|
38
37
|
encodeFunctionData(functionFragment: "isApprovedForAll", values: [AddressLike, AddressLike]): string;
|
39
38
|
encodeFunctionData(functionFragment: "isReduceEnabled", values?: undefined): string;
|
40
39
|
encodeFunctionData(functionFragment: "name", values?: undefined): string;
|
@@ -72,8 +71,8 @@ export interface TradingVaultInterface extends Interface {
|
|
72
71
|
decodeFunctionResult(functionFragment: "BASE_WEIGHT", data: BytesLike): Result;
|
73
72
|
decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result;
|
74
73
|
decodeFunctionResult(functionFragment: "EXPO", data: BytesLike): Result;
|
75
|
-
decodeFunctionResult(functionFragment: "EXPO_100", data: BytesLike): Result;
|
76
74
|
decodeFunctionResult(functionFragment: "OPERATOR_ROLE", data: BytesLike): Result;
|
75
|
+
decodeFunctionResult(functionFragment: "PERCENTAGE_BASE", data: BytesLike): Result;
|
77
76
|
decodeFunctionResult(functionFragment: "PRICE_SETTER_ROLE", data: BytesLike): Result;
|
78
77
|
decodeFunctionResult(functionFragment: "addReward", data: BytesLike): Result;
|
79
78
|
decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
|
@@ -81,7 +80,6 @@ export interface TradingVaultInterface extends Interface {
|
|
81
80
|
decodeFunctionResult(functionFragment: "borrowCurrency", data: BytesLike): Result;
|
82
81
|
decodeFunctionResult(functionFragment: "claimERC20", data: BytesLike): Result;
|
83
82
|
decodeFunctionResult(functionFragment: "createPosition", data: BytesLike): Result;
|
84
|
-
decodeFunctionResult(functionFragment: "createPositionForUser", data: BytesLike): Result;
|
85
83
|
decodeFunctionResult(functionFragment: "currency", data: BytesLike): Result;
|
86
84
|
decodeFunctionResult(functionFragment: "getApproved", data: BytesLike): Result;
|
87
85
|
decodeFunctionResult(functionFragment: "getRewardConfigsLength", data: BytesLike): Result;
|
@@ -229,14 +227,16 @@ export declare namespace PositionCreatedEvent {
|
|
229
227
|
tokenId: BigNumberish,
|
230
228
|
entryPrice: BigNumberish,
|
231
229
|
amount: BigNumberish,
|
232
|
-
openedAt: BigNumberish
|
230
|
+
openedAt: BigNumberish,
|
231
|
+
currency: AddressLike
|
233
232
|
];
|
234
233
|
type OutputTuple = [
|
235
234
|
user: string,
|
236
235
|
tokenId: bigint,
|
237
236
|
entryPrice: bigint,
|
238
237
|
amount: bigint,
|
239
|
-
openedAt: bigint
|
238
|
+
openedAt: bigint,
|
239
|
+
currency: string
|
240
240
|
];
|
241
241
|
interface OutputObject {
|
242
242
|
user: string;
|
@@ -244,6 +244,7 @@ export declare namespace PositionCreatedEvent {
|
|
244
244
|
entryPrice: bigint;
|
245
245
|
amount: bigint;
|
246
246
|
openedAt: bigint;
|
247
|
+
currency: string;
|
247
248
|
}
|
248
249
|
type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
|
249
250
|
type Filter = TypedDeferredTopicFilter<Event>;
|
@@ -263,7 +264,8 @@ export declare namespace PositionReducedEvent {
|
|
263
264
|
lossAmount: BigNumberish,
|
264
265
|
price: BigNumberish,
|
265
266
|
rewardedAmount: BigNumberish,
|
266
|
-
loss: BigNumberish
|
267
|
+
loss: BigNumberish,
|
268
|
+
currency: AddressLike
|
267
269
|
];
|
268
270
|
type OutputTuple = [
|
269
271
|
user: string,
|
@@ -277,7 +279,8 @@ export declare namespace PositionReducedEvent {
|
|
277
279
|
lossAmount: bigint,
|
278
280
|
price: bigint,
|
279
281
|
rewardedAmount: bigint,
|
280
|
-
loss: bigint
|
282
|
+
loss: bigint,
|
283
|
+
currency: string
|
281
284
|
];
|
282
285
|
interface OutputObject {
|
283
286
|
user: string;
|
@@ -292,6 +295,7 @@ export declare namespace PositionReducedEvent {
|
|
292
295
|
price: bigint;
|
293
296
|
rewardedAmount: bigint;
|
294
297
|
loss: bigint;
|
298
|
+
currency: string;
|
295
299
|
}
|
296
300
|
type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
|
297
301
|
type Filter = TypedDeferredTopicFilter<Event>;
|
@@ -490,8 +494,8 @@ export interface TradingVault extends BaseContract {
|
|
490
494
|
BASE_WEIGHT: TypedContractMethod<[], [bigint], "view">;
|
491
495
|
DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">;
|
492
496
|
EXPO: TypedContractMethod<[], [bigint], "view">;
|
493
|
-
EXPO_100: TypedContractMethod<[], [bigint], "view">;
|
494
497
|
OPERATOR_ROLE: TypedContractMethod<[], [string], "view">;
|
498
|
+
PERCENTAGE_BASE: TypedContractMethod<[], [bigint], "view">;
|
495
499
|
PRICE_SETTER_ROLE: TypedContractMethod<[], [string], "view">;
|
496
500
|
addReward: TypedContractMethod<[
|
497
501
|
_rewardAmount: BigNumberish
|
@@ -517,13 +521,8 @@ export interface TradingVault extends BaseContract {
|
|
517
521
|
void
|
518
522
|
], "nonpayable">;
|
519
523
|
createPosition: TypedContractMethod<[
|
520
|
-
_amount: BigNumberish
|
521
|
-
|
522
|
-
bigint
|
523
|
-
], "nonpayable">;
|
524
|
-
createPositionForUser: TypedContractMethod<[
|
525
|
-
_user: AddressLike,
|
526
|
-
_amount: BigNumberish
|
524
|
+
_amount: BigNumberish,
|
525
|
+
_recipient: AddressLike
|
527
526
|
], [
|
528
527
|
bigint
|
529
528
|
], "nonpayable">;
|
@@ -555,7 +554,9 @@ export interface TradingVault extends BaseContract {
|
|
555
554
|
], "view">;
|
556
555
|
initialize: TypedContractMethod<[
|
557
556
|
_currency: AddressLike,
|
558
|
-
_rewardToken: AddressLike
|
557
|
+
_rewardToken: AddressLike,
|
558
|
+
_treasury: AddressLike,
|
559
|
+
_owner: AddressLike
|
559
560
|
], [
|
560
561
|
void
|
561
562
|
], "nonpayable">;
|
@@ -580,7 +581,8 @@ export interface TradingVault extends BaseContract {
|
|
580
581
|
bigint,
|
581
582
|
bigint,
|
582
583
|
bigint,
|
583
|
-
bigint
|
584
|
+
bigint,
|
585
|
+
string
|
584
586
|
] & {
|
585
587
|
entryPrice: bigint;
|
586
588
|
outPrice: bigint;
|
@@ -590,6 +592,7 @@ export interface TradingVault extends BaseContract {
|
|
590
592
|
closedAt: bigint;
|
591
593
|
rewardedAmount: bigint;
|
592
594
|
lossAmount: bigint;
|
595
|
+
token: string;
|
593
596
|
}
|
594
597
|
], "view">;
|
595
598
|
price: TypedContractMethod<[], [bigint], "view">;
|
@@ -711,8 +714,8 @@ export interface TradingVault extends BaseContract {
|
|
711
714
|
getFunction(nameOrSignature: "BASE_WEIGHT"): TypedContractMethod<[], [bigint], "view">;
|
712
715
|
getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE"): TypedContractMethod<[], [string], "view">;
|
713
716
|
getFunction(nameOrSignature: "EXPO"): TypedContractMethod<[], [bigint], "view">;
|
714
|
-
getFunction(nameOrSignature: "EXPO_100"): TypedContractMethod<[], [bigint], "view">;
|
715
717
|
getFunction(nameOrSignature: "OPERATOR_ROLE"): TypedContractMethod<[], [string], "view">;
|
718
|
+
getFunction(nameOrSignature: "PERCENTAGE_BASE"): TypedContractMethod<[], [bigint], "view">;
|
716
719
|
getFunction(nameOrSignature: "PRICE_SETTER_ROLE"): TypedContractMethod<[], [string], "view">;
|
717
720
|
getFunction(nameOrSignature: "addReward"): TypedContractMethod<[_rewardAmount: BigNumberish], [void], "nonpayable">;
|
718
721
|
getFunction(nameOrSignature: "approve"): TypedContractMethod<[
|
@@ -729,10 +732,9 @@ export interface TradingVault extends BaseContract {
|
|
729
732
|
], [
|
730
733
|
void
|
731
734
|
], "nonpayable">;
|
732
|
-
getFunction(nameOrSignature: "createPosition"): TypedContractMethod<[
|
733
|
-
|
734
|
-
|
735
|
-
_amount: BigNumberish
|
735
|
+
getFunction(nameOrSignature: "createPosition"): TypedContractMethod<[
|
736
|
+
_amount: BigNumberish,
|
737
|
+
_recipient: AddressLike
|
736
738
|
], [
|
737
739
|
bigint
|
738
740
|
], "nonpayable">;
|
@@ -756,7 +758,9 @@ export interface TradingVault extends BaseContract {
|
|
756
758
|
], "view">;
|
757
759
|
getFunction(nameOrSignature: "initialize"): TypedContractMethod<[
|
758
760
|
_currency: AddressLike,
|
759
|
-
_rewardToken: AddressLike
|
761
|
+
_rewardToken: AddressLike,
|
762
|
+
_treasury: AddressLike,
|
763
|
+
_owner: AddressLike
|
760
764
|
], [
|
761
765
|
void
|
762
766
|
], "nonpayable">;
|
@@ -781,7 +785,8 @@ export interface TradingVault extends BaseContract {
|
|
781
785
|
bigint,
|
782
786
|
bigint,
|
783
787
|
bigint,
|
784
|
-
bigint
|
788
|
+
bigint,
|
789
|
+
string
|
785
790
|
] & {
|
786
791
|
entryPrice: bigint;
|
787
792
|
outPrice: bigint;
|
@@ -791,6 +796,7 @@ export interface TradingVault extends BaseContract {
|
|
791
796
|
closedAt: bigint;
|
792
797
|
rewardedAmount: bigint;
|
793
798
|
lossAmount: bigint;
|
799
|
+
token: string;
|
794
800
|
}
|
795
801
|
], "view">;
|
796
802
|
getFunction(nameOrSignature: "price"): TypedContractMethod<[], [bigint], "view">;
|
@@ -912,9 +918,9 @@ export interface TradingVault extends BaseContract {
|
|
912
918
|
Initialized: TypedContractEvent<InitializedEvent.InputTuple, InitializedEvent.OutputTuple, InitializedEvent.OutputObject>;
|
913
919
|
"OwnershipTransferred(address,address)": TypedContractEvent<OwnershipTransferredEvent.InputTuple, OwnershipTransferredEvent.OutputTuple, OwnershipTransferredEvent.OutputObject>;
|
914
920
|
OwnershipTransferred: TypedContractEvent<OwnershipTransferredEvent.InputTuple, OwnershipTransferredEvent.OutputTuple, OwnershipTransferredEvent.OutputObject>;
|
915
|
-
"PositionCreated(address,uint256,uint256,uint256,uint256)": TypedContractEvent<PositionCreatedEvent.InputTuple, PositionCreatedEvent.OutputTuple, PositionCreatedEvent.OutputObject>;
|
921
|
+
"PositionCreated(address,uint256,uint256,uint256,uint256,address)": TypedContractEvent<PositionCreatedEvent.InputTuple, PositionCreatedEvent.OutputTuple, PositionCreatedEvent.OutputObject>;
|
916
922
|
PositionCreated: TypedContractEvent<PositionCreatedEvent.InputTuple, PositionCreatedEvent.OutputTuple, PositionCreatedEvent.OutputObject>;
|
917
|
-
"PositionReduced(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": TypedContractEvent<PositionReducedEvent.InputTuple, PositionReducedEvent.OutputTuple, PositionReducedEvent.OutputObject>;
|
923
|
+
"PositionReduced(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,address)": TypedContractEvent<PositionReducedEvent.InputTuple, PositionReducedEvent.OutputTuple, PositionReducedEvent.OutputObject>;
|
918
924
|
PositionReduced: TypedContractEvent<PositionReducedEvent.InputTuple, PositionReducedEvent.OutputTuple, PositionReducedEvent.OutputObject>;
|
919
925
|
"PriceUpdated(uint256,uint256,uint256)": TypedContractEvent<PriceUpdatedEvent.InputTuple, PriceUpdatedEvent.OutputTuple, PriceUpdatedEvent.OutputObject>;
|
920
926
|
PriceUpdated: TypedContractEvent<PriceUpdatedEvent.InputTuple, PriceUpdatedEvent.OutputTuple, PriceUpdatedEvent.OutputObject>;
|
package/dist/contracts.json
CHANGED
@@ -21,8 +21,10 @@
|
|
21
21
|
"Currency": "0xDB2e50234a3BE8aA4200C96712F190cf712cd8ec",
|
22
22
|
"Reward": "0xa5Ef2328aa2F6F231D15cdcF48503974D0938eD4",
|
23
23
|
"SeedRoundFundraiser": "0xbd520dbcb8e0b062D10d7879D27C20d214a262F6",
|
24
|
-
"SeedRoundFundraiser-implemented": "
|
24
|
+
"SeedRoundFundraiser-implemented": "0x06324cBa213fEaed28Dd3A0d7B32f17885f839D2",
|
25
25
|
"WETH": "0x08a2d38807B1D345b6c1642f8030a29DC2Cc7223",
|
26
|
-
"SeedRoundFundraiser-implemented-old": "
|
26
|
+
"SeedRoundFundraiser-implemented-old": "0x40f56F138439fD5bB10741f5527A9DA05461636E",
|
27
|
+
"TradingVault": "0xeCB23467123c1CA6F9D97Ae5B2faCF9eCb1F6464",
|
28
|
+
"TradingVault-implemented": "0xEe8D777729B5D8239FF18E77B04cf47a73FfE516"
|
27
29
|
}
|
28
30
|
}
|